Netty 心跳检测
1. 前言本节,我们主要讲解心跳机制 heartbeat,Netty 给我们提供了三个 Handler,分别是 IdleStateHandler、ReadTimeoutHandler、WriteTimeoutHandler,主要目的是检查对方是否有效,也就是说对方是否还在线。2. 为什么需要心跳机制了解 TCP: TCP 协议适用于客户端数量相对比较少,并且通信频繁的业务场景;Http 协议则适用于客户端数量比较大的业务场景。因为 Http 是短连接,请求完成即会释放连接资源,不再占用服务器资源,但是,TCP 则不会,连接成功,则可以多次请求,不会释放,除非特殊原因导致连接断开。面临问题: 既...
idea可以打包但无法运行debug,提示找不到符号
今天使用IDEA时遇到一个非常奇怪的问题,install和package时都正常,就是无法run或debug。弄了很久,都没有解决。直到找到这个方法,就记录下来: 1、在Idea Terminal 中 输入命令 mvn idea:idea 2、回到IDEA菜单栏,File -> Invadiate Cache/Restart ,清除缓存,重启 然后再debug试一下,竟然没问题了!
SpringSecurity代码实现JWT接口权限授予与校验
SpringSecurity代码实现JWT接口权限授予与校验通过笔者前两篇文章的说明,相信大家已经知道JWT是什么,怎么用,该如何结合Spring Security使用。那么本节就用代码来具体的实现一下JWT登录认证及鉴权的流程。为了大部分的移动端用户观看,本文所有代码均用图片的形式发布,图片点击可放大。有需要源码的朋友可以call我。一、环境准备工作建立Spring Boot项目并集成了Spring Security,项目可以正常启动通过controller写一个HTTP的GET方法服务接口,比如:“/hello”实现最基本的动态数据验证及权限分配,即实现UserDetailsService...
一键更新并部署JAR服务
#!/bin/sh cd /data/package/fbs/fbs-hub echo '当前目录:'`pwd` echo '=========================================' echo '开始更新代码...' echo '=========================================' git pull echo '=========================================' echo "完成代码更新" echo '=========================================' s...
超详细的jenkins持续集成工作原理、功能、部署方式等介绍
概述今天简单整理了一下jenkins的一些概念性内容,归纳如下:1、概念jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。Jenkins可以构建一个自动化的持续集成环境可以使用它来“自动化”编译、打包、分发部署应用,它兼容ant、maven、gradle等多种第三方构建工具,同时与svn、git能无缝集成,也支持直接与知名源代码托管网站,如github、bitbucket直接集成。2、Je...
Spring @Autowired注解提示警告
Field injection is not recommended 警告的主要原因是:使用变量的依赖注入不被推荐。 @Autowired private REListingRepository reListingRepository; 可能很多人都会使用上面代码来进行依赖注入,因为上面的代码最简单,也是可以用的,但有时候你会遇到 IJ 的提示。原因和处理这个代码与 Spring 的 Autowired 3 种类注入依赖有关。变量注入上面的写法就是变量注入,这是我们遇到警告提示的地方。Set 方法注入为了避免上面的警告,我们可以使用 Set 方法来进行注入。使用 Set 方法的代...
Spring—AOP原理
概述Aspect Oriented Programming,面向切面编程,通过定义相关的切面,我们可以在程序的纵向执行过程中对方法进行拦截,织入我们自定义的逻辑,极大的解耦了我们的业务代码和功能代码在SpringAOP中,在执行目标方法之前,先将满足拦截要求的所有的增强器(内含对应的通知)获取到,然后生成一个拦截器链(会对不同类型的增强器进行排序),再通过这个拦截器链执行相关的逻辑,拦截器链的执行顺序如下图(图中包含了五种类型的通知Around、Before、After、AfterReturning、AfterThrowing,排序正是按这个顺序排序的):切面中的增强器(通知)执行顺序准备条件...
Spring Boot API 的urlencoded提交
在使用 Sprint Boot 提交 x-www-form-urlencoded 的时候,我们首先需要知道 x-www-form-urlencoded 这个是什么东西。application/x-www-form-urlencoded这应该是最常见的 POST 提交数据的方式了。浏览器的原生 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。就是浏览器将会将表单中的内容转换为 URL 的方式提交到后台进行处理。转换的方式其实就是使用 K=V 对的方式。不同的 K=V 之间是用 & 进行分隔。例如下面...
秒杀mybatis的sqltoy-orm-4.17.15发版
开源地址:github: https://github.com/sagframe/sagacity-sqltoygitee: https://gitee.com/sagacity/sagacity-sqltoyidea 插件(可直接在idea中检索安装): https://github.com/threefish/sqltoy-idea-plugins更新内容:1、在原有快速分页、分页优化的基础上进一步支持并行查询,大幅提升性能2、缓存在默认ehcache的基础上增加caffeine的支持为什么说sqltoy可以秒杀mybatis?在其它一切对等的前提下,sql的写法决定了mybatis就是玷...
Xpath定位方法
相对路径定位(F12直接用工具copy xpath)//*[@id="datagrid-row-r1-2-0"]/td[1]/div/input根据文本信息定位全部文本信息匹配如上HTML 标签为a文本信息未"更新"//a[text()="更新"]部分文本信息包含匹配如上HTML文本信息//a[contains(text(),"更")] 或者 //a[contains(text(),"新")]元素属性定位根据单个属性定位如上HTML的tag是input 我们可以用这个元素的name或者id或者其他特有的属性来定位//input[@name="wd"]根据元素的多个属性定位如上HTML元素的属性...