自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于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 5328 3

原创 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 262

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

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

2019-03-06 19:54:19 3221 3

原创 001字符串BM匹配算法

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

2018-12-14 15:13:45 351

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

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

2018-09-21 21:28:56 1578

原创 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 187

原创 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 156

原创 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 118

原创 001 下一篇--星辰大海

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

2018-09-20 13:33:47 194

原创 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 4242

原创 002 动态代理模式

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

2018-09-18 15:50:55 87

原创 001 静态代理模式

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

2018-09-18 15:43:05 88

原创 003 ReentrantLock之公平锁、非公平锁

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

2018-09-11 20:41:36 167

原创 008 rabbitmq延迟队列实现

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

2018-09-11 16:08:03 1227

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

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

2018-09-11 14:58:45 321

原创 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 1105

原创 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 2655

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

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

2018-09-10 20:26:59 112

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

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

2018-09-10 20:21:07 1678

原创 005 topic交换器

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

2018-09-10 20:08:53 134

原创 004 fanout交换器

前言:fanout交换器,忽略路由键的作用,消息将会投递到绑定该fanout交换器的所有队列上;1、定义队列、交换器,并进行绑定;2、定义生产者;3、定义两个消费者;4、测试;5、结果;结论:消息被投递到了绑定uploadFanoutExchange交换器的队列上6、demo地址https://github.com/haishui211/ra...

2018-09-10 19:52:35 172

原创 003 direct交换器

前言:direct交换器,路由键充当队列名,消息投递到默认的direct交换器,然后再到对应的队列;1、定义队列; 2、定义生产者; 3、定义消费者; 4、测试; 5、结果:结论:消息正常投递,并被消费者消费了。 6、demon地址;https://github.com/haishui211/rabbitmqRep.git...

2018-09-10 19:47:30 175

原创 002 sping-boot与rabbitmq简单集成

0、在pom.xml中引入amqp; 1、application.properties2、注册队列,以让amqp监听;3、定义生产者; 4、定义消费者;

2018-09-10 19:43:05 99

转载 001 rabbitmq安装

1、安装依赖yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget2、安装erlangwget http://www.erlang.org/download/otp_src_18.3.tar.gz //下载erlang包tar -xzvf otp_src_18.3.tar.gz ...

2018-09-10 19:38:01 89

原创 001 Java线程死锁模拟

1、线程A获得lock1锁,睡一下,然后期望获得lock2锁;static class A extends Thread{ @Override public void run() { //先获取lock1锁 synchronized(lock1){ //睡一下 try { Thread.sleep(100); } catch (...

2018-09-10 19:14:39 101

原创 20170912jenkins构建前执行远程shell脚本

jenkins已安装ssh插件为前提1、在系统管理,系统配置中,新建ssh site;2、在构建工程中配置ssh site以及执行的脚本;3、遇到的问题;1)root不开放远程连接,死活都不给,解决的办法使用kduser进行连接;2)kduser用户没办法直接执行tomcat-amp,因为tomcat-am

2017-09-12 21:19:19 13433

原创 Activemq的简单使用

目标:在spring集成环境中,使用activemq服务,mq服务要求是集群的。单个mq服务的宕机,不能影响生产者推送消息到队列,也不能影响消费者从队列中消费消息。方案:采用activemq官网提供的master/slave的模式该官网地址:http://activemq.apache.org/masterslave.html官网提供了三种实现方案,时间紧、任务重,选最简单的方

2017-02-19 17:02:52 380

原创 maven简单入门使用

一、maven的安装使用Maven的下载地址:http://maven.apache.org/将下载的maven解压,在机器已安装jdk的前提下,配置环境变量:M2_HOME,值为maven的安装路径(D:\Program Files(x86)\apache-maven-3.0-alpha-7),将M2_HOME添加到path(%M2_HOME%\bin;)中,即可使用maven。

2015-10-15 10:37:35 414

原创 JavaMail简单客户端邮件发送

使用qq邮箱服务器,实现简单邮件发送功能。一、设置qq邮箱账号该账号作为邮件的发送账号。设置操作:进入到QQ邮箱,设置--账号,找到POP3/SMTP服务进行开启。二、下载javamail.jar下载地址:http://www.oracle.com/technetwork/java/javamail/index.html三、编写代码String host = "smtp

2015-09-30 17:11:24 793

原创 搭建eclipse的javaWeb开发环境

采用tomcat作为服务器,假定jdk已安装。一、     下载eclipse-javaee;地址:http://www.eclipse.org/downloads/http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsrjdk已经安装,直接解压缩就可以用了。打开界面如下

2015-09-05 21:18:39 455

原创 将ueditor上传的视频转换为flowplayer播放,并隐藏其播放地址

1、在页面引用flowplayer-min.js;2、将ueditor上传的video标签内容转换成div标签内容,替换后的内容形式如下:3、用jquery遍历class为video-js的div,注册flowplayer播放元素;/*遍历*/var video_index = 1;      $(".video-js").each(function()

2015-08-31 18:16:23 2668 1

原创 .net配置authentication实现全局验证

公司有个.net语言开发的系统,没天理的竟然没有做全局验证,导致公司通讯录的组织架构暴露在外面。没办法,n年前的前辈们留下的坑,只好踩上了。部门专家级高手提出方案:给系统增加单点登录逻辑,让每一个请求都到登录逻辑验证。具体的做法是:1、用户登录时,记录他的登录状态;2、其它的请求,若用户已登录,则顺利请求;若未登录,则请求失败。代码有两部分。1、在web.config配置文

2015-08-05 22:12:12 959

张龙JAVA圣思园笔记

圣思园张龙老师课堂笔记,覆盖了JAVA-SE基础,包括IO、线程、序列化、集合、JVM讲解。

2018-09-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除