自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

翻身咸鱼的博客

知行合一

  • 博客(167)
  • 收藏
  • 关注

原创 构建docker私有仓库

有了docker hub和阿里或者网易的镜像仓库等之后,为什么还有自己构建仓库呢?一是为了安全,二是为了内网访问,本文我们就介绍如何构建自己的docker仓库。环境准备环境:两个装有Docker 17.09.0-ce 的centos7虚拟机虚拟机一:192.168.0.175 用户开发机虚拟机二:192.168.0.174 用作私有仓库搭建私有仓库在174机器上面docker pul...

2018-11-19 16:19:08 308

原创 jvm字节码解析i++和++

i++和++i是编码中比较常用的代码,并且也是初学者容易混淆的。我们知道i++是先赋值再+自己,而++i是先+自己再赋值。为什么是这样呢?他们之间效率对比又是怎么样呢?本文我们从字节码层面来分析。前面的文章介绍过了jvm字节码的基本知识还有如何分析字节码,我们现在还是写个小demopublic class TestSelfAdd { public static void f1() {...

2018-11-19 10:27:39 308

原创 jvm字节码浅析

本文通过一个简单的例子,分析jvm字节码的一些基本的概念。例子:public static void main(String args) { int a=2; int b=3; int c = a + b; System.out.println(c); }将它编译为class文件,通过javap查看字节码并输出到Test.txt里面:javap -verbose Test...

2018-11-18 21:39:20 272

转载 Elasticsearch技术shard&replica机制

shard&replica机制1.index包含多个shard2.每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力3.增减节点时,shard会自动在nodes中负载均衡4.primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,...

2018-11-16 10:48:06 451

原创 jvm层gc调优

jvm的内存结构运行时数据区运行时数据区有:方法区、虚拟机栈、本地方法栈、堆、程序计数器计数器pc register垃圾回收算法垃圾收集器可视化gc日志分析工具Tomcat的gc调优实战...

2018-11-07 15:20:52 1364

原创 mysql笔记

mysql的varcharmysql的varchar是指一个字符,中英文都一样

2018-10-30 11:25:26 148

原创 在mysql 中查询时间最大的一条记录

首先如下这样写是错的:SELECT name,MAX(last_updated) FROM digital_asset GROUP BY name;这样子查到的数据last_updated确实是最大的,但是和name没有关系;用这个方法可以实现:SELECT A.* FROM digital_asset A,(SELECT name, max(last_updated) max_day...

2018-10-27 13:50:02 27887 8

转载 大日志分割的几种方法

对于大日志分割的几种方法当日志容量上G的时候,用vi查看具体内容效率就会变得特别低,这个时候就需要将大日志进行分割。 为了比较各种分割方法的效果,我选取的测试日志基本信息如下:# ls -lrth test.log-rw-r--r-- 1 root root 645M 5月 30 20:42 test.log# wc...

2018-10-24 17:57:00 3307

原创 nginx使用笔记

nginx使用笔记nginx好用的指令监控nginxngx_http_stub_status监控连接信息安装配置使用ngxtop监控请求信息nginx rrd监控合理的创建标题,有助于目录的生成如何改变文本的样式nginx好用的指令查看nginx各种信息 nginx -v,能看到配置文件的位置和使用到的模块,例如:监控nginxngx_http_stub_status监控连接信息...

2018-10-22 23:18:01 278

转载 Intellij IDEA基于Springboot的远程调试

简介本篇博客介绍一下在Intellij IDEA下对Springboot类型的项目的远程调试功能。所谓的远程调试就是服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须和远程服务器运行的代码一致)中设置断点,每当有请求到远程服务器时时能够在本地知道远程服务端的此时的内部状态。方法首先,打开Edit configur...

2018-10-16 17:46:36 588

转载 如何快速转发csdn博客?

来源:http://blog.csdn.net/bolu1234/article/details/51867099 前言  对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面,当然有人会说我们可以收藏...

2018-10-16 17:43:28 157

原创 netty源码阅读之性能优化工具类之Recycle异线程获取对象

在这篇《netty源码阅读之性能优化工具类之Recycler获取对象》文章里面,我们还有一个scavenge()方法没有解析,也就是在别的线程里面回收对象。下面我们开始介绍,从这个方法开始进入: boolean scavenge() { // continue an existing scavenge, if any if (s...

2018-10-08 19:20:53 337 1

原创 netty源码阅读之性能优化工具类之Recycle异线程回收对象

异线程回收对象分为以下几点分析:1、获取WeakOrderQueue2、如果WeakOrderQueue获取不到,说明是第一,那就创建WeakOrderQueue3、获取到或者创建完WeakOrderQueue之后,将对象追加到WeakOrderQueue里面我们从这个push开始看代码: void push(DefaultHandle<?> it...

2018-10-08 17:38:19 459

原创 netty源码阅读之性能优化工具类之Recycle同线程回收对象

我们从handle的recycle方法开始: @Override public void recycle(Object object) { if (object != value) { throw new IllegalArgumentException("object does not belong to...

2018-10-08 12:10:43 365

原创 netty源码阅读之性能优化工具类之Recycler获取对象

 Recycler获取对象主要分为以下几部分:1、获取当前线程的Stack2、从Stack里面弹出对象3、如果弹出对象为空,那就创建对象并且绑定到Stack里面我们从Recycler的get方法进入,就是这个源码: @SuppressWarnings("unchecked") public final T get() { if (maxCapac...

2018-10-08 11:09:59 306 1

原创 netty源码阅读之性能优化工具类之Recycler的创建

我们进入到Recycler的构造函数: protected Recycler() { this(DEFAULT_MAX_CAPACITY_PER_THREAD); }然后在这个类里面,有一个threadLocal,里面放了一个stack: private final FastThreadLocal<Stack<T>> th...

2018-10-08 10:23:08 461

原创 netty源码阅读之性能优化工具类之Recycler的使用

先看我们一个用户端的代码:public class RecycleTest { private static final Recycler<User> RECYCLER = new Recycler<User>() { @Override protected User newObject(Handle<User> h...

2018-10-07 18:02:13 466

原创 netty源码阅读之性能优化工具类之轻量级对象池Recycler

netty里面这个Recycler经常出现,例如在ByteBuf里面,由于我们经常创建很ByteBuf,所以回收利用ByteBuf很有必要。接下去我们就分析下这个Recycler的,主要分以下几部分分析:1、Recycler的使用2、Recycler的创建3、从Recycler里面获取对象4、在同一个线程里面回收对象5、在不同的线程里面回收对象6、在不同的线程里面获取对象...

2018-10-07 17:36:29 304

原创 netty源码阅读之性能优化工具类之FastThreadLocal的set方法实现

FastThreadLocal的set方法实现我们从以下三点分析:1、获取ThreadLocalMap2、直接通过索引set对象3、如果需要remove对象,那就remove我们还是从set方法源码开始: /** * Set the value for the current thread. */ public final void set(...

2018-10-07 14:55:20 327

原创 netty源码阅读之性能优化工具类之FastThreadLocal的get方法实现

FastThreadLocal的get方法实现我们通过以下三部分分析:1、获取ThreadLocalMap2、直接通过索引找到对象3、如果对象为空,那就初始化对象 我们从FastThreadLocal的get方法进入: /** * Returns the current value for the current thread */ pu...

2018-10-07 11:40:32 392

原创 netty源码阅读之性能优化工具类之FastThreadLocal的创建

创建的话我们直接从FastThreadLocal的构造方法进入: public FastThreadLocal() { index = InternalThreadLocalMap.nextVariableIndex(); }可见他是现在这里创建了index,这个index就是每个线程里面FastThreadLocal唯一的标识。看这个nextVari...

2018-10-07 10:47:59 372

原创 netty源码阅读之性能优化工具类之FastThreadLocal的使用

先说明FastThreadLocal使用的效果。1、比jdk原生的ThreadLocal的快2、不同线程之间能保证线程安全这是我们的用户代码:public class FastThreadLocalTest { private static FastThreadLocal<Object> threadLocal = new FastThreadLocal&lt...

2018-10-07 10:38:35 800

原创 netty源码阅读之性能优化工具类之FastThreadLocal

jdk的threadLocal我们之前分析过了,那么这个ThreadLocal凭什么说是“fast”呢,接下去我们会分析。分析FastThreadLocal我们又分了一下几部分:1、FastThreadLocal的使用2、FastThreadLocal的创建3、FastThreadLocal的get实现4、FastThreadLocal的set实现 ...

2018-10-06 21:24:44 362

原创 netty源码阅读之性能优化工具类

netty为了优化性能可谓是费尽心思了,所以我们必须学习学习,接下去就分析两个性能优化的工具类吧。1、fastThreadLocal2、Recycler

2018-10-06 21:19:04 695

原创 netty源码阅读之编码之flush刷新buffer队列

flush也是从headContext的unsafe的flush开始的: @Override public void flush(ChannelHandlerContext ctx) throws Exception { unsafe.flush(); }然后看unsafe的flush: @Ove...

2018-10-06 21:15:38 763

原创 netty源码阅读之编码之write写buffer队列

不管我们之前处理没处理我们的对象,也就是说不管我们有没有使用编码器,wriiteAndFlush之后,最终都会调用到headcontext的write和flush方法。我们把这个headcontext的方法分为以下几个步骤:1、direct化ByteBuf2、插入写队列3、设置写状态这是我们headContext的write方法: @Override ...

2018-10-06 20:31:02 1982

原创 netty源码阅读之编码之MessageToByteEncoder

MessageToByteEncoder的write过程,我们分析以下几步:1、匹配对象2、分配内存3、编码实现4、释放对象5、传播数据6、释放内存源码在这里: @Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) thro...

2018-10-02 18:36:00 1120

原创 netty源码阅读之编码之writeAndFlush抽象步骤

我们首先把对象变成字节流,最终写到socket底层的流程 在pipeline中,从tail节点开始传播,业务流程biz这个hander处理完之后,调用writeAndFlush把对象user传递过去;然后有个encode编码器把user编码成bytebuf;最后在head里面把bytebuf变成二进制调用jdk底层的写方法写到网络里面去。我们写了一个用户代码,启动客户端:pu...

2018-10-02 11:53:04 1269

原创 netty源码阅读之编码

编码的文章主要有以下几篇:1、writeAndFlush抽象步骤2、抽象编码器MessageToByteEncoder3、写buffer队列4、刷新buffer队列

2018-10-02 11:02:09 286

原创 netty源码阅读之解码之基于长度域解码器分析

基于长度域解码器LengthFieldBasedFrameDecoder我们主要分析以下三点:1、计算需要抽取的数据包的长度2、跳过字节逻辑处理3、丢弃模式下的处理首先源码还是LengthFieldBasedFrameDecoder的decode方法: /** * Create a frame out of the {@link ByteBuf} and re...

2018-10-01 12:00:52 1196

原创 netty源码阅读之解码之基于长度域解码器参数分析

这篇文章我们放松一点,只分析基于长度域解码器的几个参数,lengthFieldOffset :长度域的偏移量,也就是长度域要从什么地方开始lengthFieldLength:长度域的长度,也就是长度域占多少个字节lengthAdjustment:长度域的值的调整,也就是我们去到长度域里面的值,然后还要做多少调整才是符合要求的,这个值可以是正值,可以是负值,正值表示还要加多少,负值表示还...

2018-09-30 18:33:19 978

原创 netty源码阅读之解码之基于分隔符解码器分析

基于分隔符解码器DelimiterBasedFrameDecoder也算是比较简单的,和基于行解码器差不多一样分析既可,首先我们看一个构造函数: public DelimiterBasedFrameDecoder(int maxFrameLength, ByteBuf... delimiters) { this(maxFrameLength, true, delimit...

2018-09-30 17:27:05 494

原创 netty源码阅读之解码之行解码器分析

行解码器LineBasedFrameDecoder,我们首先看这个类的一些成员变量:/** * A decoder that splits the received {@link ByteBuf}s on line endings. * <p> * Both {@code "\n"} and {@code "\r\n"} are handled. * For a more...

2018-09-29 21:53:23 739

原创 storm提交任务成功却没有执行任务

最近storm的任务需要修改,我提交上strom集群去了,提示我提交成功了,但是任务没有执行,num worker和task等都为0。首先我再提交之前的任务,也出现这个问题,那么说明问题出现在集群上面。我看了一下ui那里的supervisor summary的slots有4个,used slots也是4个,这个slot就是worker,worker都占满了,当然任务没办法执行。再看下s...

2018-09-27 09:56:03 1324

原创 netty源码阅读之解码之基于固定长度解码器分析

固定长度解码器FixedLengthFrameDecoder比较简单,我们看下它类的注释:/** * A decoder that splits the received {@link ByteBuf}s by the fixed number * of bytes. For example, if you received the following four fragmented p...

2018-09-25 16:48:26 522

原创 netty源码阅读之解码之抽象解码器ByteMessageDecoder

ByteMessageDecoder是所有解码器的基类,它主要通过以下步骤进行解码:1、累加字节流2、调用子类的decode方法进行解析3、将解析到的ByteBuf向下传播我们看ByteMessageDecoder的channelRead方法,这个方法就是解码的开始: @Override public void channelRead(ChannelHandle...

2018-09-25 16:26:09 512

原创 netty源码阅读之解码

netty编码我们分以下几点分析:1、抽象解码器ByteToMessageDecoder2、基于固定长度解码器分析3、行解码器分析4、基于分隔符解码器分析5、基于长度域解码器参数分析6、基于长度域解码器分析...

2018-09-13 11:08:32 380

原创 canal数据同步搭建及踩坑记录

最近开始做canal数据同步方案。canl的原理就是伪装成mysql的slave,然后悄悄地“偷数据”,复制数据吧。至于canal的搭建,自行查看官网mysql添加上配置并且赋上权限之后,最后canal的配置,一般只需要修改conf/example/instance.properties的这四个地方: canal.instance.mysql.slaveId = 1234 ca...

2018-09-12 11:55:32 35832

原创 netty源码阅读之ByteBuf之ButeBuf内存的释放

我们这一篇文章要使用的用户代码如下: public static void main(String[] args) { PooledByteBufAllocator allocator = PooledByteBufAllocator.DEFAULT; ByteBuf byteBuf = allocator.directBuffer(16); ...

2018-09-09 23:25:58 3658

原创 netty源码阅读之ByteBuf之内存subpage级别内存的分配

subpage级别的内存分配的主要方法为:allocateTiny()。主要分为以下三个步骤:1、定位一个subpage对象2、初始化subpage3、初始化pooledByteBuf这一次,我们的用户代码是分配16B的内存public class Test { public static void main(String[] args) { Po...

2018-09-09 17:44:22 639

空空如也

空空如也

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

TA关注的人

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