自定义博客皮肤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)
  • 收藏
  • 关注

转载 kafka消息分发策略分析

当我们使用kafka向指定Topic发送消息时,如果该Topic具有多个partition,无论消费者有多少,最终都会保证一个partition内的消息只会被一个Consumer group中的一个Consumer消费,也就是说同一Consumer group中的多个Consumer自动会起到负载均衡的效果。1、消息构造下面我们就针对调用kafka API发送消息到Topic时p...

2019-09-06 12:25:00 494

转载 kafka分布式集群搭建

一、版本CentOS 7.5zookeeper-3.4.12kafka _2.12-1.1.0二、zookeeper安装1、下载解压zookeeper压缩包tar -zvxf zookeeper-3.4.12.tar.gz2、创建数据与日志文件夹mkdir /usr/local/zookeeper-3.4.12/datamkdir ...

2019-08-24 16:50:00 233

转载 《Scalable IO in Java》译文

《Scalable IO in Java》 是java.util.concurrent包的作者,大师Doug Lea关于分析与构建可伸缩的高性能IO服务的一篇经典文章,在文章中Doug Lea通过各个角度,循序渐进的梳理了服务开发中的相关问题,以及在解决问题的过程中服务模型的演变与进化,文章中基于Reactor反应器模式的几种服务模型架构,也被Netty、Mina等大多数高性能IO服务框...

2019-07-28 15:11:00 398

转载 Java多线程同步工具类之Semaphore

Semaphore信号量通常做为控制线程并发个数的工具来使用,它可以用来限制同时并发访问资源的线程个数。一、Semaphore使用下面我们通过一个简单的例子来看下Semaphore的具体使用,我们同时执行10个计数线程,并定义一个Semaphore变量用来控制并发值,同一时间只允许两个线程并发执行; public static void main(String[] ...

2019-07-06 18:06:00 145

转载 Java多线程同步工具类之CyclicBarrier

一、CyclicBarrier使用CyclicBarrier从字面上可以直接理解为线程运行的屏障,它可以让一组线程执行到一个共同的屏障点时被阻塞,直到最后一个线程执行到指定位置,你设置的执行线程就会触发运行;同时CyclicBarrier相比与CountDownLatch,它是可以被重置的;下面我们通过一个简单例子看下CyclicBarrier的使用;实例化一个CyclicBar...

2019-06-30 18:27:00 143

转载 Java多线程同步工具类之CountDownLatch

在过去我们实现多线程同步的代码中,往往使用join()、wait()、notiyAll()等线程间通信的方式,随着JUC包的不断的完善,java为我们提供了丰富同步工具类,官方也鼓励我们使用工具类来实现多线程的同步,今天我们就对其中CountDownLatch类的使用与底层实现进行分析与总结。一、CountDownLatch使用CountDownLatch其实可以看做一个计数器,...

2019-06-28 20:56:00 122

转载 Netty源码分析之NioEventLoop(三)—NioEventLoop的执行

前面两篇文章Netty源码分析之NioEventLoop(一)—NioEventLoop的创建与Netty源码分析之NioEventLoop(二)—NioEventLoop的启动中我们对NioEventLoop的创建与启动做了具体的分析,本篇文章中我们会对NioEventLoop的具体执行内容进行分析;从之前的代码中我们可以知道NioEventLoop的执行都是在run()方法的fo...

2019-06-11 22:04:00 188

转载 Java线程池ThreadPoolExecutor类源码分析

前面我们在java线程池ThreadPoolExecutor类使用详解中对ThreadPoolExector线程池类的使用进行了详细阐述,这篇文章我们对其具体的源码进行一下分析和总结;首先我们看下ThreadPoolExecutor用来表示线程池状态的核心变量//用来标记线程池状态(高3位),线程个数(低29位)//默认是RUNNING状态,线程个数为0priva...

2019-05-29 21:34:00 152

转载 SpringBoot常用注解总结

在SpringBoot框架中,注解做为一种隐式配置,极大的简化了之前xml文件的配置方式。SpringBoot中包含许多种类的注解,这里对在SpingBoot项目中经常使用到的一些注解的进行大致的归纳总结;一、启动相关1、@SpringBootApplication在SpirngBoot启动类里面,都加入了此启动注解,此注解是个组合注解,包括了@SpringBootConfi...

2019-05-16 18:52:00 100

转载 Netty源码分析之NioEventLoop(二)—NioEventLoop的启动

上篇文章中我们对Netty中NioEventLoop创建流程与源码进行了跟踪分析。本篇文章中我们接着分析NioEventLoop的启动流程;Netty中会在服务端启动和新连接接入时通过chooser选择器,分别为NioServerSocketChannel与NioSocketChannel选择绑定一个NioEventLoop,接下来我们就分别从这两个方面梳理NioEventLoop的...

2019-03-23 15:13:00 171

转载 Netty源码分析之NioEventLoop(一)—NioEventLoop的创建

一、NioEventLoop的概述NioEventLoop做为Netty线程模型的核心部分,从本质上讲是一个事件循环执行器,每个NioEventLoop都会绑定一个对应的线程通过一个for(;;)循环来处理与Channel 相关的 IO 操作, 包括 调用 select 等待就绪的 IO 事件、读写数据与数据的处理等;其次作为任务队列, 执行 taskQueue 中的任务, 例如e...

2019-03-10 22:44:00 177

转载 ArrayBlcokingQueue,LinkedBlockingQueue与Disruptor三种队列对比与分析

一、基本介绍ArrayBlcokingQueue,LinkedBlockingQueue是jdk中内置的阻塞队列,网上对它们的分析已经很多,主要有以下几点:1、底层实现机制不同,ArrayBlcokingQueue是基于数组的,LinkedBlockingQueue是基于链表的;2、初始化方式不同,ArrayBlcokingQueue是有界的,初始化时必须指定队列的大小;Li...

2019-02-03 19:00:00 652

转载 关于高并发下kafka producer send异步发送耗时问题的分析

最近开发网关服务的过程当中,需要用到kafka转发消息与保存日志,在进行压测的过程中由于是多线程并发操作kafka producer 进行异步send,发现send耗时有时会达到几十毫秒的阻塞,很大程度上上影响了并发的性能,而在后续的测试中发现单线程发送反而比多线程发送效率高出几倍。所以就对kafka API send 的源码进行了一下跟踪和分析,在此总结记录一下。首先看spring...

2019-01-20 00:16:00 2724

转载 从多线程的三个特性理解多线程开发

工作中许多地方需要涉及到多线程的设计与开发,java多线程开发当中我们为了线程安全所做的任何操作其实都是围绕多线程的三个特性:原子性、可见性、有序性展开的。针对这三个特性的资料网上已经很多了,在这里我希望在站在便于理解的角度,用相对直观的方式阐述这三大特性,以及为什么要实现和满足三大特性。一、原子性原子性是指一个操作或者一系列操作要么全部执行并且执行的过程不会被任何...

2018-11-29 18:35:00 134

转载 netty源码分析之服务端启动

ServerBootstrap与Bootstrap分别是netty中服务端与客户端的引导类,主要负责服务端与客户端初始化、配置及启动引导等工作,接下来我们就通过netty源码中的示例对ServerBootstrap与Bootstrap的源码进行一个简单的分析。首先我们知道这两个类都继承自AbstractBootstrap类接下来我们就通过netty源码中ServerB...

2018-11-03 17:47:00 176

转载 java中Future与FutureTask使用与分析

Future与FutureTask都是用于获取线程执行的返回结果。下面我们就对两者之间的关系与使用进行一个大致的介绍与分析一、Future与FutureTask介绍:Future位于java.util.concurrent包下,它是一个接口public interface Future<V> { boolean cancel(boolean mayI...

2018-10-14 17:28:00 160

转载 sofa-rpc 服务端源码流程走读

sofa-rpc是阿里开源的一款高性能的rpc框架,这篇文章主要是对sofa-rpc provider启动服务流程的一个代码走读,下面是我简单绘制的一个基本的关系流程图下面我们根据sofa-rpc代码,对流程进行一个跟踪与走读。我们以BoltServer的为例 public static void main(String[] args) { App...

2018-10-10 10:00:00 296

转载 java线程池ThreadPoolExecutor类使用详解

在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了资源的开销。而线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式,这一方面是由于jdk中Executor框架虽然提供了如newFixedThrea...

2018-10-04 21:05:00 1367

转载 netty搭建Tcp服务器实践

在netty基本组件介绍中,我们大致了解了netty的一些基本组件,今天我们来搭建一个基于netty的Tcp服务端程序,通过代码来了解和熟悉这些组件的功能和使用方法。首先我们自己创建一个Server类,命名为TCPServer第一步初始化ServerBootstrap,ServerBootstrap是netty中的一个服务器引导类,对ServerBootstrap的实例化就是创建...

2018-10-01 17:38:00 184

转载 java集合之HashMap源码解析

Map是java中的一种数据结构,围绕着Map接口,有一系列的实现类如Hashtable、HashMap、LinkedHashMap和TreeMap。而其中HashMap和Hashtable我们平常使用的最多。HashMap与Hashtable表面上看没有太大区别,但在一些使用细节和内部实现上有诸多微小的差异:1、首先Hashtable的大部分方法做了同步,而HashMap没有,...

2018-10-01 12:50:00 158

转载 springboot下多线程开发注意事项

基于springboot的多线程程序开发过程中,由于本身也需要注入spring容器进行管理,才能发挥springboot的优势。所以这篇文字主要用来记录开发中两者结合时需要注意的一些事项。第一步我们把线程类的实例注入sping容器进行管理@Configuration@SpringBootApplication@Import({ThreadConfig.class})...

2018-09-23 17:50:00 168

转载 java集合之List源码解析

List是java重要的数据结构之一,我们经常接触到的有ArrayList、Vector和LinkedList三种,他们都继承来自java.util.Collection接口,类图如下接下来,我们对比下这三种List的实现和不同:一、基本实现1、ArrayList和Vector使用了数组实现,可以认为它们封装了对内部数组的操作;它们两个底层的实现基本可以认为是一致的...

2018-09-22 19:03:00 172

转载 netty基本组件介绍

Netty做为一款用于搭建高性能网络应用程序的高级框架,由以下几个主要构件组成:一、ChannelChannel 是java NIO的一个基本构造,可以把channel看作是传入或者传出的数据载体,可以被打开或者关闭,连接或者断开连接。简单来说其实就是我们平常网络编程中经常使用的socket套接字对象。二、EventLoopEventLoop定义了Netty的核心对...

2018-09-22 10:22:00 89

转载 C#中结构体定义并转换字节数组

最近的项目在做socket通信报文解析的时候,用到了结构体与字节数组的转换;由于客户端采用C++开发,服务端采用C#开发,所以双方必须保证各自定义结构体成员类型和长度一致才能保证报文解析的正确性,这一点非常重要。 首先是结构体定义,一些基本的数据类型,C#与C++都是可以匹配的: [StructLayoutAttribute(LayoutKin...

2017-11-11 12:42:00 404

转载 tesseract-ocr字库训练图文讲解

第一步合成图片集你需要把使用jTessBoxEditor工具把你的训练素材及多张图片合并成一张tif格式的图片集第二步 生成box文件运行tesseract命令,tesseract mjorcen.normal.exp0.tif mjorcen.normal.exp0 batch.nochop makebox,生成box文件 ,第三步用...

2017-09-21 15:29:00 538

转载 js基于谷歌地图API绘制可编辑圆形与多边形

之前的工作中需要在谷歌地图上绘制可编辑多边形区域,所以基于谷歌地图API封装了个html页面,通过调用js绘制多边形并返回各点的经纬度坐标;当然首先你要保证你的电脑可以打开谷歌地图。。。新建一个html页面<!DOCTYPE html><html><head> <title>googel Map</tit...

2017-08-25 16:40:00 637

转载 在前端页面对easyui中的datagrid与jqgrid加载后的数据进行操作

因为项目的需求,需要在grid中加载数据后再在前端页面执行操作,所以在easyui中的grid与jqgrid都进行了测试和操作;eayui中grid数据的操作: 1 //构造集合对象 2 var list = []; 3 var rows = $("#grid").datagrid("getRow...

2016-12-20 09:38:00 390

转载 (转)C#中各种集合类比较

数组(Array)的不足(即:集合与数组的区别)1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的。2.数组要声明元素的类型,集合类的元素类型却是object。3.数组可读可写不能声明只读数组。集合类可以提供Rea...

2016-04-18 10:36:00 290

转载 (转)长连接为何要发送心跳包

最近面试的时候,被闻到关于Android IM 的问题,因为之前做过一个类似于微信的聊天软件,当时面试官问我,为啥后台需要发送心跳包,我说发送心跳包的作用是维持长链接,然后面试官问我,为啥长连接要发送心跳包的时候,我愣住了, 我也不知道为啥长链接需要发送心跳包 回来之后我查询资料后发现,Android的推送在后台维持的服务都会发送心跳包来维持长连接,当一台智能手机连上...

2016-04-14 11:24:00 248

转载 实现mysql在windows server 2008下自动备份

环境:MySQL 安装位置:D:\MySQL论坛数据库名称为:Db_Test数据库备份目的地:D:\db_bak\1、首先新建一个bat文件rem *******************************Code Start*****************************@echo offset "Ymd=%date:~,4%%date:~5,2%%dat...

2015-11-26 16:02:00 172

转载 android中跨线程向控件传值的问题

activity.oncreate(bundle savedinstancestate)中创建一个handler类的实例, 在这个handler实例的handlemessage回调函数中调用更新界面显示的函数。例如:Handler errHandler = null; public void onCreate(Bundle savedInstanceState) { ...

2015-08-25 18:00:00 257

转载 PBOC圈存时用到3DES加密解密以及MAC计算方法

最近在做PBOC圈存时用到了3DES的加密解密以及MAC计算问题,在网上了解一些知识,复制了一些demo学习,我这里没有深入研究,只是把我用到的和了解的做个总结,便于以后使用和学习。3DES分双倍长和三倍长,我使用到的是双倍长,加密模式为ECB,代码如下public static class EncryptUtils { //构造一个对称算法...

2015-08-13 10:41:00 509

空空如也

空空如也

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

TA关注的人

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