最近在封装shiro+jwt+redis 的自动配置,使用了 @RestControllerAdvice 来返回登录时会出现的 AuthenticationException 异常,响应状态 code 为 401 但是当把这个依赖包导入项目之后,发现 响应状态code 不是 401 ,而是 500. 断点这里,发现并没有走这里的流程。 后来想起另一个依赖包 中也存在 一个 全局异常处理,并且 有一个 Exception 的 异常处理: 断点了一下这里,发现确实是进入了这里的流程。 ...... Read More →
最近由于一个项目需要和单片机通信,和硬件工程师沟通好之后,大致确定协议为 : 消息头部 + 消息长度 + 设备号 + 命令 + data + crc16 由于netty自带的decoder有些不满足这个格式,所以自定义了一个decoder。 代码如下 /** * 消息格式为 消息头部(1字节) + 消息长度(2字节) + 设备号(12字节) + 命令(2字节) + data(n字节) + crc16(2字节) * * @author watermelon * @time 2020/5/21 */ public c...... Read More →
BIO: blocking I/O 。 BIO就是传统I/O,其相关的类和接口在 java.io 包下BIO 是 同步阻塞 IO ,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器) BIO问题: 每个请求都需要创建独立的线程,与对应的客户端进行数据 Read,业务处理,数据 Write 。当并发数较大时,需...... Read More →
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。 下载: curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 常用命令: docker-compose config 检查docker-compose.yml配置是否正确,正确则显示配置 docker-compose build 构建(重新构建)项目中的服务容...... Read More →
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 docker安装: curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh --mirror AzureChinaCloud 修改镜像源: 在/etc/docker/daemon.json 文件中新增一下内容, 如果...... Read More →
首先找到要显示的或者不想显示的分类id, 进入控制台,文章 => 分类目录,然后将鼠标停放在对应的分类名上边,左下方就会显示对应的链接,这个tag_ID就是对应的分类id 然后进入 外观 => 主题编辑器, 找到 index.php,增加以下内容 <?php if (!in_category(‘9’) && is_home() ) continue; ?> 不过以上方法,是在获取数据之后过滤的,所以如果第一页没有这个分类下的文章,整个页面就会是...... Read More →
最近看了设计模式和锁的一些知识,就想着自己写点什么巩固一下知识。 然后就随便写了一个类似(也许不像)连接池的这么一个demo。 定义一个连接类 Connection,用户查询操作,里边有 这样几个方法,刚开始在池中是直接用isFree()判断状态,然后在用setState()方法改变状态的,发现这样不好保证原子操作,所以增加了checkAndSetStates()方法。 定义函数式接口 Content(用于接收连接后的具体查询操作): ...... Read More →
起初是为了能在netty的处理中能直接注入对象,所以需要将 Channel 交由spring管理。所以有了以下注解: @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component @Scope public @interface NettyComponent { @AliasFor( annotation = Component.class ) String value() default ""; @AliasFor( value = "scopeName", annotation = S...... Read More →
最开始的想法是安装两个nginx,指向不同的端口,后来失败了; 之后想在一个nginx中建两个html文件夹,然后再conf中的server中root指向这两个不同的html文件夹,可是可以,但是静态文件访问不了。 后来想到了用重定向的方式来,两个不同的server的root都指同一个html文件夹,在html文件夹下增加index.php和index_wp.php文件,用于重定向到对应的wordpress项目中 index.php: /** * Front to the WordPress ...... Read More →
由于在项目中controller层频繁用到log打印入参和回参以及入参的DTO校验,存在很多的重复操作。最近了解到了aop相关的知识,决定写一个切面来替代这些重复操作。因为我这里是spring boot 项目,所以加入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 创建自定义注解@BeanValidated: /** * BeanVa...... Read More →