西瓜の

-人类是因为记录才进入文明-

2020/06/3
21:09
technology

netty自定义解码器 decoder

最近由于一个项目需要和单片机通信,和硬件工程师沟通好之后,大致确定协议为 : 消息头部 + 消息长度 + 设备号 + 命令 + data + crc16 由于netty自带的decoder有些不满足这个格式,所以自定义了一个decoder。 代码如下 /** * 消息格式为 消息头部(1字节) + 消息长度(2字节) + 设备号(12字节) + 命令(2字节) + data(n字节) + crc16(2字节) * * @author watermelon * @time 2020/5/21 */ public c...... Read More →

2020/05/12
20:03
technology

java BIO和NIO

BIO: blocking I/O 。 BIO就是传统I/O,其相关的类和接口在 java.io 包下BIO 是 同步阻塞 IO ,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器) BIO问题: 每个请求都需要创建独立的线程,与对应的客户端进行数据 Read,业务处理,数据 Write 。当并发数较大时,需...... Read More →

2020/04/28
23:32
technology

docker-compose

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 →

2020/04/26
23:41
technology

docker

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 →

2020/04/22
21:34
technology

WordPress首页 设置 只显示某些分类文章 或 不显示某些分类的文章

首先找到要显示的或者不想显示的分类id, 进入控制台,文章 => 分类目录,然后将鼠标停放在对应的分类名上边,左下方就会显示对应的链接,这个tag_ID就是对应的分类id 然后进入 外观 => 主题编辑器, 找到 index.php,增加以下内容 <?php if (!in_category(‘9’) && is_home() ) continue; ?> 不过以上方法,是在获取数据之后过滤的,所以如果第一页没有这个分类下的文章,整个页面就会是...... Read More →

2020/04/20
21:38
technology

模板方法模式+多例模式

最近看了设计模式和锁的一些知识,就想着自己写点什么巩固一下知识。 然后就随便写了一个类似(也许不像)连接池的这么一个demo。 定义一个连接类 Connection,用户查询操作,里边有 这样几个方法,刚开始在池中是直接用isFree()判断状态,然后在用setState()方法改变状态的,发现这样不好保证原子操作,所以增加了checkAndSetStates()方法。 定义函数式接口 Content(用于接收连接后的具体查询操作): ...... Read More →

2020/04/13
22:00
technology

@AliasFor使用注意

起初是为了能在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 →

2019/06/28
21:50
technology

linux下使用多个wordpress(指向不同域名)

最开始的想法是安装两个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 →

2019/06/15
20:51
technology

spring boot使用aop进行入参回参打印和bean参数校验

由于在项目中controller层频繁用到log打印入参和回参以及入参的DTO校验,存在很多的重复操作。最近了解到了aop相关的知识,决定写一个切面来替代这些重复操作。因为我这里是spring boot 项目,所以加入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 创建自定义注解@BeanValidated: /** * BeanVa...... Read More →

2019/05/17
21:27
technology

linux 固定ip(linux使用静态ip)

先使用 ifconfig 命令查看当前的子网掩码(如果没有ifconfig命令可以yum -y install net-tools下载) 以及 cat /etc/resolv.conf 查看dns,nameserver后边的就是dns 进入此文件夹 cd /etc/sysconfig/network-scripts/ 然后编辑ifcfg-开头的文件,例: vim ifcfg-ens01 将BOOTPROTO 改为static ,然后加上5行: IPADDR :IP地址NETMASK:子网掩码(对应刚才查出来的...... Read More →