发布于 2018-05-21   244人围观   0条评论
# 在6月30号之前读完《从Psaoxs到Zookeeper》这本书 ## 为了什么 为了自己变得更优秀,能够在能在区块链领域获得自己的一席之地,在分布式设计中能够有更深刻的认识 ## 目标是 在6月30号之前读完《从Psaoxs到Zookeeper》这本书,也就是40天的时间,每天至少完成一个小节的有效阅读 ## 怎么做 1. 每天坚持九点钟之前结束工作 2. 每天在十点钟之前把洗漱完成
查看更多
发布于 2018-03-16   259人围观   0条评论
> Redis中有指定多个key批量删除的命令,却没有指定模糊key批量删除命令 批量删除多个key ``` del key1 key2 ``` 通过通配符"*"模糊匹配删除的lua脚本命令 ``` # 模糊删除 eval "local keys = redis.call('keys', ARGV[1]) for i=1,#keys,5000 do redis.call('del', unp
查看更多
发布于 2017-12-12   137人围观   0条评论
最近看开开源框架的源码,发现涉及到网络传输的基本都是居于NIO实现的,尽管之前也或多或少接触过一点NIO的知识,毕竟还是在工作中使用接触的比较少,总觉得不够深入,特此写一遍博客来梳理下,自己对NIO的认识。 # 同步,异步,阻塞,非阻塞 ## 同步 与 异步 同步与异步关注的是消息通讯机制,所谓同步就是主动发出调用,在结果返回之前改调用不会结束,换句话说就是程序主动待定调用结果的返回。 而异
查看更多
发布于 2017-12-11   85人围观   0条评论
任何学习都要有目标有规划,这是整个Java知识体系大纲,根据自己的知识体系认知画出来的,有很多还没有细化,也还有很多没有涉猎,比如大数据,列出这些好让自己学的有目标一些吧,也算是一个总结。 在线预览地址:[http://naotu.baidu.com/file/a94181bfafe64d39874b524ce8df18c1?token=a8efb35e029a526f](http://nao
查看更多
发布于 2017-12-06   362人围观   0条评论
这是我年初在公司内部技术分享讲Disruptor的PPT,整理下放到博客里面。 # 什么是Disruptor Disruptor 是一个用于在线程间通信的高效低延时的消息组件,它像个增强的队列,能够在无锁的情况下实现异步并发操作,它是纯内存组件。 它的特点如下: - 高性能、无锁,实现每秒千万级别的异步业务处理能力 - 它除了能实现队列基本功能,还能实现顺序消费,或者复杂的并行和依赖结合的
查看更多
发布于 2017-12-06   314人围观   0条评论
# 最近学习NIO文件读写的时候,就生成了一个疑问,程序怎么知道文件使用了什么编码,因为底层程序看到的都是二进制的字节码如: ``` 中文 | utf-8二进制编码 人 | 11100100 10111010 10111010 ``` 程序怎么知道通过这是一个通过3个字节编码的`人`字呢,于是查询了相关资料: 要解释这个问题,我们先来了解下ASCII码、GB2312、GBK、Unico
查看更多
发布于 2017-12-06   88人围观   0条评论
# HTTP HTTP全称叫超文本传输协议(HyperText Transfer Protocol),是用于WWW(万网)服务器与浏览器客户端的一种通讯协议 ## TCP/IP 关于计算机通讯,需要了解的一些背景知识,TCP/IP. 我们经常说TCP/IP,为什么要一起说,因为这两者有着密切的关系,其实它包含两个协议: - TCP: TCP 负责将数据包在数据传送之前将它们分割为 IP 包,然
查看更多
发布于 2017-12-06   268人围观   0条评论
自从接触java以来,一直就有学习java虚拟机的内存模型,但是从来都没有深入系统的了解,对内存模型的认识还比较模糊,今天恰巧有看到相关的文章,觉得还是需要整理一下 己的认知才能有所收获。 # JVM内存结构 Java内存模型是指Java虚拟机的内存模型,我们来看下Java内存模型的图片: ![](https://leanote.com/api/file/getImage?fileId=59d
查看更多
发布于 2017-12-06   78人围观   0条评论
# 什么是类的加载 类加载是指将源代码编译后的.class加载到内存中初始化待程序使用的过程,类加载过程会做两件事,一是将类的描述信息加载至方法区,二是在堆内存区生产java.lang.Class对象的实例
查看更多
发布于 2017-12-06   255人围观   0条评论
#什么是GC Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对JVM(Java Virtual Machine)中的内存进行标记,并
查看更多
发布于 2017-12-06   484人围观   0条评论
# JVM内存参数调优 ## 为什么要GC调优?   或者说的更确切一些,对于基于Java的服务,是否有必要优化GC?应该说,对于所有的基于Java的服务,并不总是需要进行GC优化,但当你的系统时常报了内存溢出或者java程序运行缓慢时,优先排查是否是程序导致的内存泄漏,再看你是否需要JVM参数调优。   想一下进行GC优化的最根本原因,垃圾收集器清除在Java程序中创建的对象,GC执行的次数
查看更多
发布于 2017-12-06   41人围观   0条评论
运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使用会有所限制,另一方面喜欢装X的我们,总喜欢在出现问题的时候在终端输入一些命令来解决。所有的工具几乎都是依赖于jdk的接口和底层的这些命令,研究这些
查看更多
发布于 2017-12-06   226人围观   0条评论
最近一个测试环境的api-gateway一直报请求超时,并且未发现报错异常信息,于是开始排查是否是JVM参数不对导致用户线程挂起。 排查过程如下: 1. 查看目标机器的进程pid ``` [baibei@CBEC-UAT-1 uat]$ jps -l 27723 com.baibei.apigateway.Application ``` 2. 查看jvm内存使用情况 ``` [baibei@C
查看更多
发布于 2017-12-06   141人围观   0条评论
volatile这个关键字我们在实际开发过程中,或多或少都使用过,但是对于其背后的实现原理机制还是不够清晰,接下来满满梳理一番。 ## 我们来看一段代码 ``` i = i + 1; ``` 一个简单的对i变量的递增操作,在单线程执行的情况下,没有什么问题,但是在多线程情况下,结果就会有问题了。原因是因为计算机的内存模型为每个线程分配了CPU高速缓存,来加快CPU的处理速度。 假如现i的初始
查看更多
发布于 2017-12-06   158人围观   0条评论
java反编译命令 ``` javap -c -verbose xxx.class ```
查看更多
发布于 2017-11-16   526人围观   0条评论
#Spring Cloud Stream Spring 已经对JMS中间件做了很多封装,比如Spring对ampq队列协议的封装`spring-rabbit.jar``,以及企业集成的实现`Spring Integration`(解决服务间的异步通讯交互问题),而Spring Cloud Stream是对针对消息中间件的进一步封装,Stream已经支持Kafka/Rabbit MQ/Redis/
查看更多
发布于 2017-11-06   229人围观   0条评论
# 什么是Spring Cloud 看完《微服务设计》后,算是补上了自己在服务化这块的理论知识,在业界,一般有两种微服务的实践方法:基于dubbo的微服务架构、基于Spring Cloud的微服务架构。从概念上来讲,Dubbo和Spring Cloud并不能放在一起对比,因为Dubbo仅仅是一个RPC框架,实现Java程序的远程调用,实施服务化的中间件则需要自己开发;而Spring Cloud则
查看更多
发布于 2017-07-11   209人围观   0条评论
**最近项目中mysql 由于表中时间字段中不小心使用了ON UPDATE CURRENT_TIMESTAMP,导致表中的任何一个字段更新,时间字段都会更这个时间** ![](https://leanote.com/api/file/getImage?fileId=59649b6dab6441206700189c) 使用以下语句更新掉就解决了,在此记一笔 ``` ALTER TABLE `t_t
查看更多
发布于 2017-07-04   923人围观   0条评论
#1. tail & head ``` #查询最后100行日志 tail -n 100 info.log 查询从100行之后的所有日志 tail -n +100 info.log 查询日志文件中的头10行日志; head -n 10 info.log 查询日志文件除了最后10行的其他所有日志; head -n -10 info.log ``` #2. 场景一:查找关键字附近的日志 ##1 .获取关键字的行号 ``` #-n 显示行号 cat -n test.log |grep "关键字" ``` ![](https://leanote.com/api/file/get
查看更多
发布于 2017-06-13   1474人围观   0条评论
## 项目中遇到一个问题,就是由于我们数据库表ID使用分布式唯一算法生成的Long类型,所以有很长(19位数字),导致转成json传至前端js使用时报错,因为js的数字类型最大只能表示15个数字长度,见[Js 的number对象说明](http://www.w3school.com.cn/js/js_obj_number.asp) ## 解决方案:使用Spring自定义的Json序列化,将过长
查看更多