- 博客(25)
- 收藏
- 关注
原创 ThreadLocal原理简单版
首先,简单的讲解一下。1、每个线程里面有一个ThreadLocalMap,他存的键就是一个ThreadLocal对象,值是用户设置进去的。2、ThreadLocal每次get、set都会拿出当前线程的ThreadLocalMap对象。3、但是ThreadLocalMap又是ThreadLocal里面的一个内部类。 所以,我再补充一下第二点,ThreadLocal每次get,都是...
2018-07-31 12:24:36 591
原创 netty设计模式-观察者模式
这个模式可以说在java的源码里面应用很广泛了,各种addListener,future这些,最终都是观察者模式的体现。1、观察者和被观察者2、观察者订阅消息,被观察者发布消息3、订阅则能收到,取消订阅收不到首先我们看看观察者模式的一个生活中的例子。 /** * 被观察者 */ public interface Observerable {...
2018-07-26 22:30:47 2137
转载 mybatis报Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: java
mybatis 3.3.0中对于时间参数进行比较时的一个bug. 如果拿传入的时间类型参数与空字符串‘‘进行对比判断则会引发异常. 所以在上面的代码中去该该判断, 只保留非空判断就正常了<if test="createTime != null and createTime !=‘‘ " > date(create_time) = date(#{createTime,jdbc...
2018-07-26 15:23:30 5602
原创 Kafka error deserializing key/value for partition
Kafka error deserializing key/value for partition写了一个kafka测试的demo出现了如下错误:这是我kafka的配置: 这是我接收的配置:之前我用别的topic测试了没有问题,换了一个topic出现这个问题,问题的原因在于这个topic序列化的参数改变了,IntegerDeserializer的长度不是4,所以...
2018-07-25 14:59:33 8076
原创 netty设计模式-装饰器模式
装饰器模式被大量地使用在各种框架的源码里面,真正学会了对看源码和设计软件受益匪浅。1、装饰者和被装饰者继承同一个接口2、装饰者给被装饰者动态修改行为 首先我们一生活中的例子来看一看装饰器模式:/** * @see io.netty.buffer.WrappedByteBuf; * @see io.netty.buffer.UnreleasableByteBuf * @s...
2018-07-22 18:00:04 1558
原创 netty设计模式-策略模式
策略模式的特点大致如下:1、封装一系列可替换的算法家族2、支持动态选择某一个策略 常见的策略模式实现方式/** * @see DefaultEventExecutorChooserFactory#newChooser(EventExecutor[]) */public class Strategy { private Cache cacheMemory = ne...
2018-07-22 17:58:29 1809
原创 netty设计模式-单例模式
单例模式是最常见的设计模式:1、忽略反射的影响,全局只有一个实例2、有可能会出现延迟创建实例对象,要使用的时候才创建3、这种设计模式能够避免线程安全问题 最常见的单例模式实现方法:懒汉模式(单例对象 volatile + 双重检测机制 -> 禁止指令重排)public class SingletonExample5 { // 私有构造函数 priv...
2018-07-22 17:53:10 2570 3
原创 netty的设计模式
如果要阅读源码,首先就要学会基本的设计模式。设计模式是前人总结出来的软件设计方法,有利于使代码更加简洁优雅。了解了netty的设计模式,再去看源码,会有一种焕然大悟的感觉。一、单例模式单例模式是最常见的设计模式:1、忽略反射的影响,全局只有一个实例2、有可能会出现延迟创建实例对象,要使用的时候才创建3、这种设计模式能够避免线程安全问题netty单例模式分析详情二、策...
2018-07-22 15:58:32 4657 1
原创 netty基本组件
今天起,我开始写netty的博客,首先从基本组件开始:一、NioEventLoop相当于线程,可以处理连接请求和逻辑处理二、Channel接收数据的管道,相当于socket三、ByteBuf数据传输的基本单元四、ChannelHandler处理业务逻辑的单元五、ChannelPipeline处理请求的管道多个ChannelHandler可以组成一个Cha...
2018-07-21 19:15:21 925
原创 mongodb慢查询
最近mysql同步到mongodb很慢,开始排查问题。首先想到的是mongodb的问题,那么就要找出它的慢查询日志,证明是mongodb的问题一、用那个绿色的工具,robomongo打开,对着某个需要的数据库打开shell(右键open shell),(一定要这样,否者会查到或者设置到别的数据库,导致一直没看到数据)二、mongodb有profiling三个级别:0:关闭,...
2018-07-18 12:01:21 2594
原创 redis java 客户端服务器最佳实践
本文带大家入门市场上最佳的redis实践方案,redisson+codis。一、为什么要使用redisson这里介绍的是redis客户端方面的。对于java客户端,现在市面上有jedis,jedis是redis官方推荐的,支持redisCluster、shardJedis、redis sentienl等多种功能。功能比较齐全。虽然都支持,但是redisCluster、redis sentienl都...
2018-07-14 17:09:32 4127 1
原创 mybatis时间格式出现.0
使用mybatis的时候,总是会遇到后面多一个.0的情况,这种情况使用mysql的时间格式化函数就可以了,例子:DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') createTime %M 月名字(January……December) %W 星期名字(Sunday……Saturday) %D 有英语前缀的月份的日期(1st, 2nd, ...
2018-07-11 14:49:04 8905 3
原创 Jenkins sudo:抱歉,您必须拥有一个终端来执行 sudo
jenkins用户启动脚本的时候,如果不是root,sudo执行命令的时候需要输入密码,但是没有终端输入sudo,所以会报一下错误:抱歉,您必须拥有一个终端来执行 sudo可能是因为sudo没办法输入密码,实际上并不是(实际上是因为,sudo需要终端来执行,正如字面上所说的)那么第一个思路就是免密使用sudo了,假设我使用jenkins的账户是xdq,那么我用root账户 修改/etc...
2018-07-10 13:09:53 3760 2
原创 redis主从复制原理和介绍
一、单机的问题:1、机器故障:导致redis不可用2、容量瓶颈:容量不能水平扩展3、OPS瓶颈:一台机器的网络带宽总是有限的,如果能够分配到多台机器,可以有效解决QPS问题二、主从复制的作用1、数据副本:多一份数据副本,保证redis高可用2、扩展性能:如容量、QPS等三、主从复制特点1、一个master可以有多个slave2、一个slave只能有一个master3、数据流向是单向的,master...
2018-07-08 15:40:20 9344
原创 kafka应用之路
1、在技术选型上,为什么要使用kafka,不使用rocketmq?kafka是分布式日志存储系统2、介绍kafka3、kafka安装4、kafka使用(kafka的实践)
2018-07-06 20:56:13 1522
原创 idea快捷键
1、try catch快捷键选中块---->ctrl+alt+t2、全局查找快捷键一般是ctrl+shift+f如果这个快捷键被使用了,那就在edit-->find-->find in path3、alt+数字,按一按有惊喜:alt+1,alt+2,alt+4,alt+5,alt+6,alt+74、另外一种查找ctrl+shift+a5、查找最...
2018-07-06 20:53:07 1083
原创 ADSL实现爬虫代理更新
众所周知,做爬虫的时候,需要不停地切换ip。有以下几种方案: 1、网上爬免费的ip,这个方法行不通,因为这些ip很多有期限,几分钟就没有了,而且大部分不可用。2、买一些第三方代理,例如阿布云。但是阿布云很多人用多了,ip也逐渐被污染,例如我们爬工商总局的数据,就很多ip不能用了。3、买adsl代理服务器。某宝买。什么是adsl服务器?通俗的来说,就是每次拨号,都会重新分配一个i...
2018-07-06 20:32:24 2391
原创 max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
elasticsearch把network.host:0.0.0.0加上之后启动会报这个错max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]意思是elasticsearch用户拥有的客串建文件描述的权限太低,知道需要65536个解决:切换到root用户下面,vi...
2018-07-06 10:35:09 3812
原创 elasticsearch-head 无法连接elasticsearch的原因和解决
首先确定的是,elasticsearch-head启动无误,elasticsearch启动无误。点击连接elasticsearch出现这个问题:提示未连接作为一个web开发,通常会查看请求是否出错,关键是请求没有出错,就是没有返回值:然后再浏览器打开,有返回结果: 留意了一下请求,居然是options请求:在postman里面用options请求果然...
2018-07-06 09:56:34 52944 16
原创 elasticsearch which: no java in (/sbin:/bin:/usr/sbin:/usr/bin) Could not find any executable java
which: no java in (/sbin:/bin:/usr/sbin:/usr/bin)Could not find any executable java binary. Please install java in your PATH or set JAVA_HOMEelasticsearch 必须要要用非root用户启动,所以新建了一个elasticsearch用户才能启动,(默认...
2018-07-05 16:11:37 9589 3
转载 mysql性能优化,索引原理
数据库永远是应用最关键的一环,同时越到高并发阶段,数据库往往成为瓶颈,如果数据库表和索引不在一开始就进行良好的设计,则后期数据库横向扩展,分库分表都会遇到困难。对于互联网公司来讲,一般都会使用Mysql数据库。一、数据库的总体架构我们首先来看Mysql数据的总体架构如下:这是一张非常经典的Mysql的系统架构图,通过这个图可以看出Mysql各个部分的功能。当客户端连接数据库的时候,首先面对的是连接...
2018-07-04 12:20:00 617
原创 configure: error: you must configure in a separate build directory
安装glibc的时候,出现了这个问题。这是一个奇葩问题,暂时不知道为什么。解决办法:退出到上层目录:可以了
2018-07-02 09:42:42 15697
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人