自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

allen的博客

It's never too old to learn

  • 博客(202)
  • 资源 (8)
  • 收藏
  • 关注

原创 使用websocket遇到的一个小问题 The remote endpoint was in state [TEXT_PARTIAL_WRITING] which is an invalid stat

当使用websocket,向前端实时推送消息的时候,遇到如下异常:2018-06-29 13:42:55 ERROR 988 --- [container-699] org.springframework.data.redis.listener.adapter.MessageListenerAdapter : [TxId : , SpanId : ] Listener execution...

2018-06-29 15:23:14 29989 4

原创 平衡二叉树之AVL树的旋转

平衡二叉树是基于二叉排序树(或者也叫二叉搜索树)实现的一种自平衡的二叉树,实现方法有比如:AVL树、红黑树等等二叉搜索树定义(维基百科):二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tree),是指一棵空树或者具有下列性质的二叉树:1.若任意节点的左子

2018-02-06 16:47:06 1749

原创 TCP的三次握手和四次挥手

TCP协议是一种面向连接的高可靠性协议,建立连接的时候会有三次握手、断开连接的时候需要四次挥手。UDP协议是一种无连接协议,不管接收方是否收到数据,只管数据发送就行,典型就是实时战斗的游戏,绝大部分的这类型的游戏都是用的UDP协议,因为如果使用TCP协议,当网络不好很多发送失败的数据然后会重发,这样的话就会造成游戏的高延迟。而使用UDP协议只管发送不管是否发送成功,如果网络不好发送失败也不会

2018-02-01 23:01:46 785

原创 volatile关键字和synchronize关键字

在java多线程中估计会经常见到volatile和synchronize这两个关键字,今天做个笔记记录下两个关键字的区别:synchronize:synchronize关键字我们遇到的概率很大(虽然现在基本上都用重用锁ReentrantLock),它可以去修饰方法或者代码块,可以用一个对象去做锁或者用类class做锁,也就是对象锁和类锁,最好不要使用常量做锁的关键字例如字符串,这样很可能会

2018-02-01 18:52:46 1421

转载 spring事务传播属性和隔离级别

转载自:https://www.cnblogs.com/jimmy-muyuan/p/5722708.html1 事务的传播属性(Propagation)1) REQUIRED ,这个是默认的属性 Support a current transaction, create a new one if none exists. 如果存在一个事务,则支持当前事务。如果没有事务则开启一

2018-01-31 17:16:13 1291

原创 canal读取mysql的binlog实时同步数据到kudu的数据异构方案

现在准备做mysql实时同步数据到kudu,为以后的实时即席查询分析做数据支撑,kudu+impala速度还是挺快的。因为实时性要求比较高,而且需要同步的时候对mysql的压力不能太大,不然会影响业务系统的稳定性。介于上面的一些要求,我们选择采用阿里的canal读取mysql的binlog,对binlog解析后对kudu进行操作。因为canal只是模拟mysql的slave,通过主从复制的

2018-01-29 13:38:47 7214 2

原创 jenkins插件Git Parameter Plug-In分支构建项目

jenkins 插件 Git Parameter Plug-In参数构建,可以在构建的时候选择git的某一个分支来构建服务,其中jenkins的老版本中用的Dynamic Choice Parameter这个插件,但是新版本这个插件已经被Git Parameter Plug-In它代替了。首先需要安装Git Parameter Plug-In这个插件,然后构建一个job,并且在参数化构建选

2018-01-22 19:45:09 8806

原创 Apache kudu 的DML、DQL以及DDL java api示例

马上过年了,抢了两天的火车票都没抢到。果断叫黄牛了,希望明天能帮我抢到….apache的kudu是Cloudera开源的存储引擎,可以结合impala做实时的一些查询,小米那边就用了kudu。具体的一些东西,自己去google或者baidu吧。由于这边后面会用到kudu的一些东西,就看了下它的文档。在网上kudu java api这一部分貌似没看到别人给demo,只有官方的github上

2018-01-12 22:12:18 7961 7

原创 kafka消费能力较弱抛异常:org.apache.kafka.clients.consumer.internals.AbstractCoordinator

今天遇到一个问题,就是kafka生产端生产的数据很快,消费的时候也很快,但是处理业务的时候比较慢,导致了程序抛异常:org.apache.kafka.clients.consumer.internals.AbstractCoordinator这个是因为,kafka消费端 poll数据的时候一次poll数据太多,在做逻辑处理的时候在很长时间都没有处理完成,导致下一次poll的时间太长,超

2018-01-05 23:43:26 10282

原创 canal的使用记录(binlog文件名字有乱码导致主备切换报错)

canal的安装在canal的github wiki上面很详细具体参见: canal的canal github wiki虽然wiki上面建议使用1.0.22版本,一看那个版本感觉太老了,还是用了最新的1.0.25 Release版本,其中1.0.22版本的binlog的日志名字和他的position等的元数据会存储为一个meta.dat文件放在你conf的instance目录下,比如官方的examp

2018-01-03 00:22:16 5688 3

原创 mysql换成mariaDB(为测试的一致性)

因为公司需要做mysql的实时同步,通过读取binlog的方式,线上的数据库用的mariaDB 10.2.x版本,虽然mariaDB是mysql的一个分支使用起来都一样,但是为了测试的完整性还是将一台测试机器安装了mariaDB。安装之前需要先卸载之前的myslq首先停止mysql:service mysqld stop查看mysql的安装包:rpm -qa|grep -i mysql然后卸载上面的

2017-12-27 15:57:14 2561

原创 jenkins发布tgz包到远程服务器执行

以前使用jenkins都是测试弄得,只不过之前自己来玩了下,里面的配置其实应该是只将需要的jar包上传或者覆盖掉远程服务器上面然后再restart程序(http://blog.csdn.net/qq_20641565/article/details/79132797),而非上传整个tar包到远程再解压。但是下面的内容我也不想修改了,将就看看吧。jenkins是一个很好用的自动化构建工具用于开发

2017-12-25 20:45:40 1953

原创 concurrent包下的CyclicBarrier和CountDownLatch以及Semaphore

CyclicBarrier:它可以让多个线程中执行得快的线程在某一个时间点阻塞,然后等待最后一个线程执行到该点的时候,同时往下执行。示例代码:public class CyclicBarrierDemo { static class Runner implements Runnable { private CyclicBarrier barrier; priv

2017-12-23 20:13:15 274

转载 JDK7与JDK8中HashMap的实现

转载自: Hosee 的博客 - JDK7与JDK8中HashMap的实现JDK7中的HashMapHashMap底层维护一个数组,数组中的每一项都是一个Entrytransient Entry<K,V>[] table;我们向 HashMap 中所放置的对象实际上是存储在该数组当中; 而Map中的key,value则以Entry的形式存放在数组中sta...

2017-12-22 23:37:35 323

转载 setting.xml配置文件详解

转载自:Maven之(六)setting.xml配置文件详解maven整体详解<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

2017-12-19 18:57:29 778

原创 逆波兰表达式

之前风控变量的计算引擎用的国内一个开源的IKExpression(为了让变量的计算可配置化),IKExpression的架构如下:其中表达式编译和执行模块就是利用的逆波兰表达式计算,逆波兰表达式是在大学的编译原理中学习的。举个例子:如果计算机计算如下表达式:1+(2*3-4)/2如果不按照逆波兰式,计算机可以先对上面表达式进行解析生成一个符号树:如果对这个求值的话就需要从叶子节点往根节点递归求值,

2017-12-15 17:15:12 1680

原创 InheritableThreadLocal和ThreadLocal

之前在Dubbo分布式日志中,当在子线程中使用ThreadContext或者MDC时候发现根本取不到值,是因为这两个都是ThreadLocal变量。其中ThreadLocal类有个子类InheritableThreadLocal它对ThreadLocal进了增强,当主线程变量用InheritableThreadLocal去包裹,后面子线程再通过get()方法获取主线程之前set的值发现能获取到,因为

2017-12-14 14:53:49 565

原创 java反射之包装类和基础数据类型的坑(分享个反射工具方法)

在java项目中我们会经常用它的反射机制做一些工具类或者代码层面的架构比如:一些路由的场景,需要根据一个反射的工具类(参数需要反射的对象,调用的方法名,以及参数),取出路由的消息并且根据消息带的方法名字和一些参数来调用对应的业务处理的方法。这个工具类大体如下:public static <T> T methodInvoker(Object target, String methodName, Obj

2017-12-13 23:16:25 6818 2

原创 spring+springmvc+mybatis+shiro+ehcache集成demo

实际使用shiro的时候大部分都是和spring等框架结合使用,主要就是配置web.xml将shiro的filter和spring容器bean的filter关联起来,生命周期由servlet容器来控制,然后配置shiro的spring的xml文件,其中主要配置shiro过滤器securityManager、认证成功失败的跳转页面、过滤链、凭证匹配器(hash 还是 sha1等)、自定义的realm、

2017-12-12 14:19:33 3415

原创 shiro权限框架简单入门demo

shiro和spring security都是开源的权限框架,shiro相对于spring security来说更简单学习成本更低,并且提供的API也明了,下面是shiro官方的一个图:其中把上面的东西抽象出来主要分为几个块(网上找的文档抠出来的):1.SubjectSubject即主体,外部应用与subject进行交互,subject记录了当前操作用户,将用户的概念理解为当前操作的主体,可能是

2017-12-11 15:42:38 6229

原创 java自定义ClassLoader加载指定的class文件

继承ClassLoader并且重写findClass方法就可以自定义一个类加载器,具体什么是类加载器以及类加载器的加载过程与顺序下次再说,下面给出一个小demo首先定义一个类,比如MyTest,并且将其编译成class文件,然后放到一个指定的文件夹下面,其中文件夹的最后几层就是它的包名,这里我将这个编译好的类放到 : /Users/allen/Desktop/cn/lijie/MyTest.cla

2017-12-07 18:56:17 23220 2

原创 dom4j对多个xml进行合并

当我们开发一些程序的时候,可能会自定义xml来对程序进行配置,但是只使用单个xml来配置可能会遇到一个问题,到后期有可能xml配置文件越来越大越来越长,比较难以维护,那就可以将单个xml文件按照情况进行拆分,启动的时候再将其合并。比如,有个配置的xml:<?xml version="1.0" encoding="UTF-8"?><tube-router> <other>xxx</other

2017-12-06 19:34:04 3816

原创 java处理线程阻塞的小技巧

在java中我们使用多线程去处理一些业务,如果业务比较复杂且当并发量有挺大的时候,很有可能出现线程阻塞的问题。案例: 有一个触发接口,根据触发的信息内部开启多个线程去执行业务,每个线程都会去执行两种业务:私有业务(比如调用不同的接口)、公共业务(比如执行存储、mq发送等等),当私有业务处理时间很快而公共业务处理时间比较长,这样的情景下就可以把私有业务和公共业务分到不同线程执行。例如: 当触发了

2017-11-29 14:27:04 16272

原创 ThreadLocal简单测试

ThreadLocal包装变量可以让每个执行的线程都拥有一份独立的引用,其中ThreadLocal使用键值对方式进行记录,key就是对象的名字。详细介绍可以看:http://blog.csdn.net/lufeng20/article/details/24314381下面写个小案例:创建一个测试类,注入spring容器:@Componentpublic class Work implements

2017-11-28 19:48:20 818 1

原创 java多线程中的CompletionService

在java编程的时候,可能我们会经常遇到多线程的处理问题有些时候只需要创建子线程让其执行一些逻辑,但是不需要返回数据,那就可以用Thread或者Runnable来实现就行而有些时候需要创建多个子线程去执行逻辑,并且执行完成后需要拿到返回数据,就可以使用Callable当我们使用线程池去提交Callable线程任务就可以拿到线程执行的应用Future对象,如果不使用CompletionService

2017-11-28 00:49:03 529

原创 Aspectj的使用demo

aop编程就是使用了动态代理,但是spring的aop来做面向切面编程会比较麻烦,Aspectj这个包也提供了类似于spring的aop编程,通过注解来配置以及表达式的配置实现并且可以动态给对象添加方法(但是要做类型转换),用起来十分方便介绍下下面5个注解:1.@Before 前置通知,在方法执行前调用2.@AfterReturning 返回通知,在方法返回结果之后调用3.@AfterThr

2017-11-25 22:34:21 1432

原创 spring的自定义属性编辑器CustomEditorConfigurer

可能很多人跟我遇到同样一个问题,在老版本的spring下用CustomEditorConfigurer自定义编辑器的时候没问题,当升级spring版本之后,就会报错,错误:Failed to convert property value of type 'java.util.LinkedHashMap' to required type 'java.util.Map' for property 'c

2017-11-25 17:32:00 1609 1

原创 Dubbo分布式日志追踪,多线程不能获取窜ID和IP问题

接着上一篇日志,当用MDC或者ThreadContext来put或者get数据的时候,不同线程是获取不到的,他们都是ThreadLocal维护,所以线程独立。如果需要子线程获取则将参数传入,在Thread的run方法执行的时候将传入的ID和IP都put到MDC或者ThreadContext中。这里使用ThreadContext:<context:component-scan base-packa

2017-11-24 20:39:38 3857

原创 Dubbo分布式日志追踪

很多互联网公司都用的dubbo分布式框架进行微服务的开发,一个大系统往往会被拆分成很多不同的子系统,并且子系统还会部署多台机器,当其中一个系统出问题了,查看日志十分麻烦所以我们需要一个固定的流程ID和机器ip地址等来把所有的日志穿起来,当然可以通过调用其他接口时参数进行传递,但是这样子对代码的耦合性太强,对代码有侵入性。我们可以通过dubbo的filter 结合slf4j的MDC或者log4j2的

2017-11-24 18:22:50 8465 2

原创 java注解结合aspectj AOP进行日志打印

在很多系统开发中,我们希望在指定的方法调用之前或者之后能打印出该方法的调用时间以及方法的出参和入参,就可以使用spring的AOP,还可以结合自定义的注解进行进行一些指定参数的打印例如:一个分层的架构系统,每层都有自己的指定系统名字,并且每个方法都有自己指定的作用(通过注解指定,在切面的时候取出该参数),而且可以根据注解的指定日志类型(在注解中指定,在切面的时候取出参数进行判断,然后打印相对应的日志

2017-11-24 17:40:18 2739 1

原创 java虚拟机钩子关闭函数addShutdownHook

当jvm虚拟机被关闭的时候,可能我们需要做一些处理,比如对连接的关闭,或者对一些必要信息的存储等等操作,这里就可以借助于虚拟机提供的钩子函数,当jvm虚拟机关闭之前会去调用addShutdownHook注册的线程钩子。这里做一个小实验,项目结构如下:1.自定义的ApplicationContext的上下文package cn.lijie;public class ApplicationConte

2017-11-24 14:49:49 3583

原创 口水话spring bean注入的执行过程

首先说下这几个接口:1.BeanNameAware bean实现这个接口可以获取该bean的id2.BeanFactoryAware bean实现这个接口可以获得bean工厂3.InitializingBean (耦合性高)(注解 @PostConstruct) 类似于init-method 但是在init-method之前执行4.DisposableBean (耦合性高)(注解

2017-11-24 13:01:58 3936

原创 python之KNN算法的简单实现

KNN算法又称k近邻分类(k-nearest neighbor classification)算法。它是一种有监督学习,它是根据不同特征值之间的距离来进行分类的一种简单的机器学习方法。算法介绍网上很多,我也是参考网上的描述,下面有一个python实现的简单knn算法大体描述: 事先有样本数据,每个数据都有标签,然后拿一个未知样本,让程序判断它属于什么标签类别。 基本思想就是: 根据未知样本的分布

2017-11-16 12:38:49 710

原创 python之numpy对矩阵的操作

python的numpy包有很多对矩阵的操作,下面是一些事例:#!/usr/bin/python# -*- coding: UTF-8 -*-# @Time : 17/11/15 下午9:27# @Author : lijie# @File : mytest06.pyimport numpya1=numpy.array([1,2,3,4])a2=numpy.array((1,

2017-11-15 23:35:23 16326

原创 python面向对象入门之getter和setter和私有变量

在python中没有像java那种get set方法,如果我们想让别人使用某个属性的时候添加一些额外的东西,或者强制指定指定该参数的类型,可以用如下的注解 @property 和@xx.setter,其中xx表示该变量的名字,@property修饰的方法类似于java中的get方法,@xx.setter 修饰的方法类似于java中的set方法,可以在这两个方法中添加一些其他逻辑,如下(注意必须要继承

2017-11-15 15:43:35 6151

原创 python面向对象入门之奇怪的静态变量

python也是一门面向对象的语言,下面是一个简单的python类demo:#!/usr/bin/python# -*- coding: UTF-8 -*-# @Time : 17/11/15 下午2:23# @Author : lijie# @File : mytest03.py##面向对象class People: "人类模板" desc="描述"

2017-11-15 15:19:17 1885 1

原创 python的函数以及多线程

1.支持lambda表达式,很类似于scala#!/usr/bin/python# -*- coding: UTF-8 -*-# @Time : 17/11/15 上午11:16# @Author : lijie# @File : mytest02.py##函数def func01(): print "hello world"def func02(str):

2017-11-15 14:22:23 714

原创 python2.6升级python2.7

1.获取python2.7wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz2.解压tar -xzvf Python-2.7.3.tgz3.创建python2.7文件夹并且安装python2.7./configure --prefix=/usr/local/python27make && make install4.备

2017-10-25 14:23:08 324

原创 elk插件x-pack安装以及破解

1.下载对应版本的x-pack:[root@lijie elk]# wget 'https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.5.1.zip'2.安装x-path./elasticsearch-5.5.1/bin/elasticsearch-plugin install file:///usr/java/elk/xpa

2017-10-19 16:57:43 8577

原创 Kibana5.5.1安装

安装 Kibana先去官网下载对应版本的Kibana,或者直接wget(版本根据自己需求修改):[root@lijie elk]# wget https://artifacts.elastic.co/downloads/kibana/kibana-5.5.1-linux-x86_64.tar.gz解压:[root@lijie elk]# tar -xzvf kibana-5.5.1-linux

2017-10-19 11:49:26 2184

Spring Boot 搭建以及集成 StringRedisTemplate

Spring Boot 搭建以及集成 StringRedisTemplate

2017-08-16

IP城市对应表

IP城市对应表 IP 部分内容如下 1,3708713472.00,3708715007.00,"河南省","信阳市","联通","221.14.122.0","221.14.127.255" 2,3708649472.00,3708813311.00,"河南省",,"联通","221.13.128.0","221.15.255.255" 3,3720390656.00,3720391679.00,"河北省","邢台市","联通","221.192.168.0","221.192.171.255"

2017-07-26

教室借用软件 VB

教室借用软件 VB

2016-10-15

hadoop面试葵花宝典

hadoop面试葵花宝典

2016-10-15

腾讯课堂主页 静态html模拟

腾讯课堂的主页页面模仿。

2016-10-15

java 局域网聊天工具

以前的毕业设计。 群聊,文件传输,震动,后台控制,聊天记录导出,好友上线提示,监控等待功能。 最好使用myEclipse8.5.0 因为开始是用这个做的,把项目import到其他IDE下,登陆后不能显示好友列表。 myEclipse8.5.0运行完美。

2016-10-15

springMVC+spring+mybatis整合 大家共同进步

springMVC+spring+mybatis整合 大家共同进步 现在积分比较少所以 搞个1积分,希望大家能理解

2015-07-21

空空如也

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

TA关注的人

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