7 211haishui

尚未进行身份认证

朝着15k的目标前进,,,

等级
TA的排名 15w+

基于netty-socket.io给指定客户端发送消息

前言:1、使用netty-socketio搭建socketIo服务;2、client连接socketIo服务时,保存下该client对象;3、使用TestController,向指定client推送消息;一、netty-socket.io版本;<dependency> <groupId>com.corundumstudio.so...

2019-06-20 16:09:15

002 位图数据结构

前言:位图主要是用1位,来代表某个值存在与否。本文使用Java语言实现简单的位图操作,使用char数组来存储位。在Java语言中,一个char占两个字节,16位。1、构造一个位图对象;public BitMap(int bitSize) { this.bitSize = bitSize; this.chars = new char[bitSize/16 + 1];}2、占位操作...

2019-03-19 22:53:32

006 基于zset结构的延迟队列实现

前言:zset是带排序的set集合,其中score属性是zset的排序字段;本文将延迟的时间+系统当前时间,作为元素的score属性的值,在while循环中,每次取zset集合中排在最前面的一个元素,通过判断该元素的score值是否大于或等于当前系统时间,来判定队列中该元素是否已达到延迟的时间。详述见如下:1、添加对象至延迟队列;/** * 将延迟对象推送至队列中 * @pa...

2019-03-06 19:54:19

001字符串BM匹配算法

前言:1、BM匹配算法适用于,在一个字符串originStr中,搜索targetStr是否存在于originStr中。其中,bm无特殊含义,在话术上,称originStr为主串,targetStr为模式串;2、在主串中寻找模式串,最简单的方法莫过于暴力搜索。即拿模式串的每一位与主串相比,如果模式串的每一位都在主串中匹配上,则认为找到了。否则,模式串向后滑动一位,紧接着如上操作。直到找到,或...

2018-12-14 15:13:45

004 利用Callable的返回阻塞来等待一组线程的执行完毕

1、场景阐述;在某些情况下,需要获得一组线程的结果,给调用端。例如在Controller的某个请求方法中,执行了n个线程,需要将这n个线程的结果都响应给请求。2、方案设计;利用Callable的返回阻塞,来等待这n个线程的执行完毕,然后将这n个线程的结果响应回去;其执行时间,基本上取决于最耗时的那个线程。3、具体代码;public class ReturnSameTime {...

2018-09-21 21:28:56

003 eclipse中使用git引入btms项目

前言:btms项目放置在远程仓库 http://39.108.171.43:82/bt/bt.git 1、克隆远程bt.git仓库; 2、填入bt.git仓库信息;3、选择master枝干;4、选择bt.git本地存放目录;5、成功后如下图: 6、把btms导入到eclipse;右键btms--Import Projects,结果如图:...

2018-09-20 15:17:26

002 eclipse用git提交项目

前言:项目提交至远程仓库bt.git。需先创建bt.git仓库.1、右键项目--team--share project--Git2、指定本地存放仓库;点击finish,目录如下:  3、commit整个项目右键--team--commit,再把需要提交的文件添加index。最后如下图: 4、提交至远程的bt.git仓库;这里用的账号是bt。...

2018-09-20 15:13:24

001 gitlab安装

1、安装python依赖yum install policycoreutils-python -y2、下载rpm包wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm3、安装rpm -ivh gitlab-ce-10.0.0-ce.0.el...

2018-09-20 15:08:30

001 下一篇--星辰大海

  最近开始写一本小说,标准的系统流,整体设计是以Java技术栈为主线,每点亮一门技术,如算法大师级,就可以获得系统给的一些超现实的能力。  比如瞬移、隐身、很能打、唱歌比杰伦还厉害、钢琴谈的比郎郎还好、15分钟帅的比胡歌还好看,诸如此类等等。  基本套路是,点亮技能树,获得超现实能力,利用超现实能力维护世界和平拯救全人类,如此往复循环。  整个体系的建设,对爽点的延续,可以说是有了很...

2018-09-20 13:33:47

005 spring-data-redis的序列化反序列化

前言:1、基于spring-boot工程实验,使用spring-data-redis进行说明;2、spring-data-redis提供了redisTemplate、stringRedisTemplate对redis进行操纵;3、spring-data-redis提供的redisSerializer如下图:4、stringRedisTemplate默认使用StringRedis...

2018-09-18 16:45:08

002 动态代理模式

概念:即在客户端真正使用时,根据被代理对象,动态生成出代理对象,来控制对被代理角色的访问。demo的目的:1)根据被代理对象,来动态创建代理对象;2)实现PreInvocationHandler,使得被代理对象的方法执行前,都先执行PreInvocationHandler的前置逻辑;详述:1、客户端测试代码;1)根据realSubject对象,创建了一个realSubjec...

2018-09-18 15:50:55

001 静态代理模式

1、概念;代理模式:为其他对象提供一种代理,以控制对该对象的访问;使用代理模式创建代表对象,让代表对象控制某对象的访问,被代理的对象可以是远程对象、创建开销大的对象、需要安全控制的对象; 2、类图;3、使用场景;1)代理远程对象,使得调用远程对象,就好像调用本地对象一样;2)代理开销大的对象,使得开销大的对象在使用时才创建;3)需要安全控制的对象,使用代理对象隔...

2018-09-18 15:43:05

003 ReentrantLock之公平锁、非公平锁

概念:如果一个锁是公平的,那么锁的获取顺序,就应该符合请求的绝对时间顺序。即是说等待锁的队列中,排在队列最前面的那个线程将最先获得锁。如果一个锁是非公平的,那么则不要求锁的获取顺序一定严格遵循请求时间的顺序。一、非公平锁实验设计;1、充塞20个线程获取非公平锁;2、在线程中打印当前线程名称和等待锁的线程列表;3、待20个线程执行完毕,观察当前线程名称与等待锁的线程列表顺序是否一致;...

2018-09-11 20:41:36

008 rabbitmq延迟队列实现

前言:通过设置队列的过期时间和死信交换器来实现。当队列内的消息达到设置的时间,将由死信交换器通过死信路由,发送到死信交换器绑定的队列上进行消费。使用场景举例:买家下订单之后,在未规定时间内进行支付,需要释放订单资源。可在下单时,推送到orderTtl订单ttl队列,当达到规定时间后,消息由orderTtl转移到orderDelay订单延迟队列,交由orderDelay订单延迟队列的消费者进行未...

2018-09-11 16:08:03

002 两个线程以指定步长交替打印数字与字母

题目:线程A负责打印数字,线程B负责打印字母,以指定步长n,每打印n个数字,则紧跟着打印一个字母。若字母已打印完,则紧接着仅打印数字即可,反之亦然。例如数字打印1~52,字母打印A-Z,则预期输出应为如下:12A34B56C…4950Y5152Z分析:本质上是利用线程的通信,来控制线程之间的交替执行。          1、即A每打印n次,就通知B打印一次;          2、...

2018-09-11 14:58:45

003 jenkins中maven项目采用publish over ssh部署至远程tomcat容器

前言:1、项目为标准maven项目,框架为spring boot,构建后打包成war;2、项目使用gitlab进行源码管理;3、项目构建采用Maven Integration plugin插件;4、项目构建后,war包采用Publish over SSH插件,scp构建产物至远程tomcat容器;5、使用到了jdk1.8、maven工具;构建时使用maven下载jar包;编译时使用...

2018-09-11 09:40:18

002 jenkins中maven项目采用deploy container部署至远程tomcat容器

前言:1、项目为标准maven项目,框架为spring boot,构建后打包成war;2、项目使用gitlab进行源码管理;3、项目构建采用Maven Integration plugin插件;4、项目构建后,war包采用Deploy to container Plugin插件,部署至远程tomcat容器;5、使用到了jdk1.8、maven工具; 操作过程如下:1、创...

2018-09-11 09:31:43

007 消费者可靠接收消息实现

前言:1)队列需是持久化队列;2)acknowledge设置为手动确认模式,即manual;3)消费者接收到消息后,手动给当前信道channel反馈接收情况; 1、acknowledge设置为手动确认模式; 2、定义队列; 3、定义生产者; 4、定义消费者;5、测试结果;1)若返回true,消息正常从队列删除掉;2)若返回...

2018-09-10 20:26:59

006 rabbitmq生产者消息可靠投递实现

一、前言:1)生产者的消息,往mq服务器投递时,因网络中断、抖动等原因导致投递失败;2)本文采取实现ConfirmCallback接口,对消息投递进行确认;a、若返回true,则认为消息已成功投递;b、若返回false,则认为消息投递失败,需要重新投递;3)ConfirmCallback接口在消息不能到达exchange时进行回调;4)模拟消息投递失败的方案:在消息投递时,...

2018-09-10 20:21:07

005 topic交换器

前言:topic交换器,消息可根据路由键,投递到匹配的队列上,包括完全匹配及模糊匹配;1、定义队列、交换器,并进行绑定;1)名称;2)队列;3)交换器;4)绑定; 2、定义生产者;其余log生产者类似:3、定义消费者;其余log消费者类似: 4、测试;给error、warn、debug、info投递消息;5...

2018-09-10 20:08:53

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。