自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u012734441的专栏

研究几天leveldb玩下

  • 博客(117)
  • 资源 (15)
  • 收藏
  • 关注

原创 LockSupport使用及源码详解

LockSupport使用及源码详解在讲了一批并发工具后,突然想起LockSupport类了,这个工具类我也很少用,所以这次写了个小demo后,决定也写一篇文章记录一下,以下就是记录过程。LockSupport用法在网上随便找了个演示demo,如下:public class LockSupportDemo { public static void main(String[] a...

2019-11-27 08:28:58 443 1

原创 CyclicBarrier源码分析

CyclicBarrier源码分析上一篇讲到了使用CountDownLatch来阻塞主线程继续执行,然后想到了CyclicBarrier,CyclicBarrier则与CountDownLatch相反,CyclicBarrier一般是用来阻塞子线程执行,在这想到CyclicBarrier虽然用的比较多,但是对其工作机制,源码并不是太熟悉,因此此处写一篇CyclicBarrier的源码分析记录一下...

2019-11-25 08:53:28 193

原创 CountDownLatch源码分析

CountDownLatch源码分析上一节讲到CopyOnWriteArrayList,其中用到了CountDownLatch,于是想这节就直接讲讲CountDownLatch的原理吧,顺便说下CountDownLatch的简单用法。CountDownLatch用法想来想去还是把上一个demo贴过来吧,如下:CopyOnWriteArrayList<Integer> list...

2019-10-28 08:34:19 218

原创 CopyOnWriteArrayList源码详解

CopyOnWriteArrayList源码详解最近在一个代码优化中使用到CopyOnWriteArrayList,想起这个java容器知道使用特性是读写分离,在每次写入时都复制一个新的list进行操作,但是没有具体的看过其源码细节,于是写一篇文章来记载下。demo演示首先写一个简单的程序演示一下,如下:CopyOnWriteArrayList<Integer> list =...

2019-10-24 07:20:08 215

原创 ThreadLocal详解(二)

ThreadLocal详解(二)上一篇文章讲了ThreadLocal的get、set、resize等方法的源码,但是对于一些单独的方法例如cleanSomeSlots、expungeStaleEntry并没有讲述,这一节就是要讲述这些源码,在讲之前首先提几个ThreadLocal的注意事项,一般来说就是ThreadLocal如果在使用不当的情况下会出现内存泄漏的问题,其原因就在于如果在线程清除时...

2019-10-22 07:30:39 197

原创 ThreadLocal详解

ThreadLocal详解ThreadLocal平常用的还是挺多的,但是对于内部实现一直没有仔细了解过,这几天在写一个工程的时候,用到了ThreadLocal保存上下文,突然想到了ThreadLocal一些实现细节上的问题,看了下,同时以此记录一下,原本想到直接就写ThreadLocal,但是看了ThreadLocal源码发现有很多地方需要单独说下,比如ThreadLocal的寻址方式,Thr...

2019-10-17 07:50:13 128

原创 Hash寻址详解

Hash寻址详解最近在使用ThreadLocal保存上下文信息,原本准备写ThreadLocal原理以及源码详解,然后在偶尔中看到关于ThreadLocal中的hash寻址方式,与HashMap中寻址方式不同,于是决定先写一篇讲述Hash寻址方式的文章,再回头讲述ThreadLocal源码。Hash还是得从Hash的定义开始说起,hash的基本思想就是从一条记录中取出一条一个字段称之为ke...

2019-09-16 08:12:00 1918

原创 MyBatis源码分析之Script用法详解

MyBatis源码分析之在上一篇文章中讲到MyBatis的#{paras}和${paras}用法,在里面提到在解析sql组装成SqlSource对象时,会判断当前sql是否是动态类型,然后里面有一个对sql中是否含有**1. 与之前相同,讲到这里还是先讲一下@ResultMap(&amp;quot;BaseResultMap&amp;quot;)@Select(&amp;quot;&amp;amp;lt;script&amp;amp;gt;&amp;quo

2019-01-22 08:14:49 10535

原创 MyBatis源码分析之防SQL注入

MyBatis源码分析之防SQL注入这一节来讲下MyBatis的防SQL注入,SQL注入大多数也会比较清楚,就是SQL参数对应的字段值时插入混合SQL,如 ** username = or 1= 1** 这种,如果有更恶劣的,带上drop database 这种都是有可能的,所以一般SQL都会进行一定防注入处理,MyBatis其实用法大都清楚,就是**#{paras}和${paras}**两种用...

2019-01-18 08:21:46 988 2

原创 Deque用法及原理讲解

Deque用法及原理讲解最近想着对现有知识点进行一个总结,决定从集合开始,想想便从Deque开始吧,Deque用的比较少,但是还是一个功能十分强大的队列,这种双向队列即可以支持先进后出,也能支持先进先出的格式,相当于同时实现了Stack和Vector,今天就来讲一讲Deque用法以及底层源码。1. Deque用法先写一个简单的demo,这个demo也是以前查Deque时看别人写的,然后对...

2019-01-14 08:17:35 5216 1

原创 MyBatis源码分析之@SelectProvider注解使用详解

MyBatis源码分析之@SelectProvider注解使用详解之前讲了MyBatis的配置、plugin、Select查询,还有@MapKey注解的使用与原理,还有返回@ResultMap等等,我原想直接从MyBatis的缓存开始说起,但是想想还是得说一下MyBatis中的@selectProvider,这个注解我也是在用了好久的MyBatis才用到,功能就是用来单独写一个class类与方法...

2019-01-11 08:31:57 10811

原创 MyBatis源码分析之@ResultMap注解详解

MyBatis源码分析之@ResultMap注解详解在前一篇文章讲**@MapKey注解时,我原想将@ResultMap注解也一起拿出来说一下,但是发现@ResultMap解析加载源码非常多,想想就不在一篇文章中讲了,分开单独来说,这一篇就来彻底探索一下@ResultMap**注解。1. 加载过程说到解析Mapper方法上的注解**@ResultMap**,这个就要回到解析configur...

2019-01-10 08:19:22 10383 1

原创 MyBatis中@MapKey使用详解

MyBatis中@MapKey使用详解我们在上一篇文章中讲到在Select返回类型中是返回Map时,是对方法中是否存在注解@MapKey,这个注解我也是第一次看到,当时我也以为是纯粹的返回单个数据对象的Map类型,但是发现还是有些不同的,这个可以用来返回多条记录,具体用法与分析如下。@MapKey用法我查了一下MapKey的用法,这里加上MapKey注解后,还有指定一个字段作为返回Map中...

2019-01-08 08:18:23 52790 15

原创 Mybatis源码分析之Select返回数据分析

Mybatis源码分析之Select返回数据分析在之前的一篇文章中分析了@Select注解的使用方法,在查询方法中我们知可以返回Map类型,也可以返回指针,或者是list集合,或是单条记录,今天就对这几种返回做一个源码分析。Select查询在这里就不需要再写一个demo演示了,用法无非这么多,直接看查询的源码吧。首先在看对应select的查询源码时先看下MyBatis是怎么定义metho...

2019-01-07 08:06:48 1342 1

原创 MyBatis plugin的使用与源码解析

MyBatis plugin的使用与源码解析这一节来讲下Mybatis中的plugin的使用,plugin作为对执行期间对Executor、StatementHandler的一种增强等等,我见过用的最多的应该就是Mybatis的分页插件PageHelper,PageHelper因为简单易用被广泛用于各种大小工程中,虽说PageHelper使用起来确实挺舒服,但是在遇到一些查询性能上的问题时,Pa...

2019-01-05 08:59:55 633

原创 MyBatis注解@Select、@Update分析

MyBatis注解@Select、@Update分析前面几篇文章分别分析了Mybatis中的Configuration的配置信息,MyBatis中的Mapper调用等等,在分析配置信息时只是讲了如何解析xml中的sql查询,但是并没有讲怎么解析Mapper中注解对应的SQL,就是如下:@ResultMap("BaseResultMap")@Select("select id, usernam...

2019-01-04 09:47:00 4086

原创 Mybatis之Mapper调用源码分析

Mybatis之Mapper调用源码分析这一篇是承接前面两篇的,分别为:Mybatis源码解析之配置加载(一), Mybatis源码解析之配置加载(二),前面两篇讲了在Mybatis启动时如何加载配置,这一节就讲在运行时,如何通过session获取Mapper代理类,从而实现对数据库的查询操作。程序首先展示下之前写的程序,main程序在第一篇中有展示,这里就不再完全的贴出来了,获取sess...

2019-01-03 08:08:56 435

原创 # Mybatis源码解析之配置加载(二)

Mybatis源码解析之配置加载(二)这一篇是承接上一篇文章Mybatis源码解析之配置加载(一),上一篇原本是想把整个配置加载都分析完全,然后发现内容还是比较多,所以决定分成两篇来说好了,现在就开始剩下的配置分析。配置加载继续回到parseConfiguration方法中,**parseConfiguration()**方法如下:private void parseConfigurat...

2019-01-02 08:13:53 334 1

原创 Mybatis源码解析之配置加载(一)

Mybatis源码解析之配置加载(一)用了好几年的mybatis了,但是很少来钻研mybatis原理所在,最近抽出空来,就把这一整套源码都研究了下,然后发现就是这些东西,mybatis没啥难度,于是决定把研究的这一整套写一个mybatis系列,记录一下,在这些完了以后,顺便写一个小的mybatis框架。1. demo演示还是从用法开始吧,就不开始就从源码说了,mybatis的conf配置文...

2019-01-01 11:27:08 1555 2

原创 Leveldb数据Compaction源码分析(1)

Leveldb数据Compaction源码分析(1)这一节来讲Leveldb的数据压缩过程,上一节讲了Leveldb的数据寻找过程,文章地址为:但是最后在讲Leveldb中的Leveln的层级寻找时,我想应该是有没有看懂的,直接二分法找到sstable,然后加载缓存就能找到文件,看源码或许有些疑惑,但是这个是和Leveldb的数据压缩过程是有关的,这节就来讲Leveldb的数据压缩过程。...

2018-07-31 10:06:52 706 2

原创 Leveldb读取数据源码分析

Leveldb读取数据源码分析上一篇文章讲了Snapshot源码,在这一篇文章中原本是要讲version、versionSet这些,但是想想还是从Leveldb的读取和存储开始讲起,Leveldb的存储比较简单,主要麻烦的还是读取这一块,需要判断从memTable、memTable、level0、level层级中分开寻找,如果从上一级中找到了数据,那么下一级就不再继续寻找了,因此寻找要麻烦许多...

2018-07-30 07:53:43 890

原创 level Snapshot源码分析

​​# level Snapshot源码分析上一篇文章中讲了WriteBatch,这一篇文章中开始讲快照Snapshot,Snapshot在文章中 leveldb中WriteBatch、Snapshot使用中讲过使用方法,这里面就不再继续讲用法了,这一节结合着之前写的Demo来讲源码。Snapshot源码之前写的demo为:private final File data...

2018-07-25 07:29:49 354

原创 levelDB WriteBatch源码解析

levelDB WriteBatch源码解析上一篇文章中讲了leveldb中WriteBatch、Snapshot使用,但是leveldb毕竟只是一个基础的存储引擎,没有太多的特性或者api使用可以讲,因此便直接从源码上开始,我这就从WriteBatch开始吧。有一些遗漏的以后补充进来,以后再慢慢进行整理。WriteBatch源码我们先看下WriteBatch,Writebat...

2018-07-23 08:04:20 576

原创 leveldb中WriteBatch、Snapshot使用

leveldb中WriteBatch、Snapshot使用上一节中仅仅做了一个leveldb的介绍,以及简单的put、get、del的使用,没有对leveldb的一些深入的特性进行讲解,算得上只是一个入门罢了,知道什么是leveldb,而作为一个基础的存储引擎,本身没有太多的特性其实也是正常的,如果想要在生产环境使用一个类似的存储,其实还是更推荐使用mapdb,有着相当丰富的特性供以使用,我有...

2018-04-08 07:56:28 2535 2

原创 leveldb入门

leveldb入门leveldb简介以前在大学的时候偶尔了解过leveldb,当时只是知道leveldb是一个存取性能极强的存储引擎,非常适合于顺序存储,当时时间不多,有很多其他的需要去学习,另外也没没有用到,因此一直没有了解过,最近有一些功夫突然再次看到了leveldb,想接触一下,然后发现这个是C++编写的,原生不支持java,但是有一个开发者照着C++的源码编写了一个java版,...

2018-04-03 08:02:10 2694

原创 双重大数组循环优化

双重大数组循环优化一、前言这几天发现服务在凌晨时容易报警,持续半个小时才正常,第二天分析日志和检查代码发现,有一个过滤黑白名单的操作,其中黑名单的数据有39万,白名单数据30万,然后处理的数据也有80万左右,在业务逻辑中黑白名单本身有一个过滤逻辑,数据对黑白名单有一个过滤逻辑,此处总共耗时在30分钟左右,在耗时将近40分钟后,下一轮低频任务才开启,所以cat不断报警,此处开启下一轮时间...

2018-03-04 19:19:19 2700 2

原创 netty编解码之jboss marshalling

netty编解码之jboss marshallingjboss marshalling是jboss内部的一个序列化框架,速度也十分快,这里netty也提供了支持,使用十分方便,不需要像protobuf一样编写proto文件,只需要提供两个编解码器即可,以下就是jboss marshalling使用的开始。源码程序model类model类和之前编写java序列化的时候没有区别,这里便不再多说,仅仅贴出

2017-12-11 08:10:28 3353 2

原创 netty编解码之使用protobuf

netty编解码之使用protobufprotobuf这个序列化框架在我们公司使用了,我负责的模块中使用protobuf生成了一些model,然后使用了protostuff对缓存在redis中的数据进行序列化和反序列化,速度非常快,解决了一些当时的序列化和反序列化太慢的问题,这节来讲下netty中使用protobuf进行序列化的用法。这里可以下载protobuf工具然后使用命令根据proto生成ja

2017-12-07 08:03:48 1819 3

原创 netty编解码之java原生序列化

netty序列化之java原生序列化前几天有空看了下netty使用java原生序列化、以及使用protobuf、jboss marshalling进行编解码,各种技术之间差异挺大,使用的方法各自不同,性能上原生的性能优势确实不大,但是另外两种确实很有优势,觉得有点意思,于是准备写一篇文章记载一下,但是一篇文章篇幅太长,因此拆成了三篇文章分别来讲。java序列化代码这个简单的程序就是server和cl

2017-12-06 07:46:06 927

原创 netty中epoll server和nio server的使用

netty中epoll server和nio server的使用这几天有空研究了下netty中的EpollEventLoopGroup和NioEventLoopGroup的用法,在编码上没有显著的不同,对应的epoll,有一套的api供于使用,但是因为只能在linux机上使用,因此又借助了docker运行linux容器来运行相应程序,这节就来具体的讲述下。nio server编写了一个简单的Hell

2017-11-15 08:03:36 11870 3

原创 JDK 动态代理运行原理

JDK 动态代理运行原理 程序演示 源码讲解 总结 这几天有空研究了下JDk的动态代理,JDK的动态代理类都在java.lang.reflect包下,写了一些小程序来演示了相关类的使用,同时做了一些与CGLIb的对比,以后有空再讲述下lombok中相关注解的使用。1. 程序演示接口:HelloWorld:public interface HelloWorld { voi

2017-11-09 07:58:01 741

原创 spring boot jar的启动原理分析

spring boot jar的启动原理分析 1、前言 2、分模块后的结构 3、MANIFEST.MF文件 4、运行 5、main程序的启动流程 6、总结 1.前言近来有空对公司的open api平台进行了些优化,然后在打出jar包的时候,突然想到以前都是对spring boot使用很熟练,但是从来都不知道spring boot打出的jar的启动原理,然后这回将j

2017-10-24 08:02:15 6523 1

原创 Spring cloud 中@EnableEurekaClient源码分析

Spring cloud 中@EnableEurekaClient源码分析上一篇文章中讲述了@EnableEurekaClient和@EnableDiscoveryClient区别,原想可能底层会有较多不同,但是查看源码的时候发现@EnableEurekaClient本身就是用@EnableDiscoveryClient来实现的,因此没有多大的研究价值,但是如果继续讲@EnableEurekaCli

2017-10-23 08:26:46 8938 5

原创 spring cloud服务发现注解之@EnableDiscoveryClient与@EnableEurekaClient

spring cloud服务发现注解之@EnableDiscoveryClient与@EnableEurekaClient在之前的一篇文章Spring Cloud feign使用中在使用服务发现的时候提到了两种注解,一种为@EnableDiscoveryClient,一种为@EnableEurekaClient,用法上基本一致,今天就来讲下两者,下文是从stackoverflow上面找到的对这两者的

2017-10-17 08:04:54 75384 9

原创 spring cloud 与 docker-compose构建微服务

spring cloud 与 docker-compose构建微服务 前言 目录结构 配置文件的修改 Dockerfile文件 bash脚本 docker-compose.yml文件 编译与运行 综上 1. 前言上一篇文章中讲了服务注册中心eureka-server、服务消费者service-a、服务提供者service-b,service-a和servi

2017-09-04 08:27:54 10516 5

原创 Spring Cloud feign使用

Spring Cloud feign使用 前言 环境准备 应用模块 应用程序 应用启动 feign特性 综上 1. 前言我们在前一篇文章中讲了一些我使用过的一些http的框架 服务间通信之Http框架,其实最终还是准备讲述spring cloud fegin,使用spring cloud fegin完成更为优雅的http的调用方式,以及在服务之间的调用与远程

2017-08-29 08:01:46 6634

原创 服务间通信之Http框架

服务间通信之Http框架 1.服务间通讯调用 2.jersey代理连接池 3.综上 1.服务间通信调用首先不提在微服务中,就是在我们使用spring cloud技术栈构建我们的服务中,如果我们需要调用其他的服务或者第三方的服务,一般的通信方式无非是http通信、rpc通信、异步消息通信等等,当然大多数服务一般都是以http接口的形式提供出来,那么可以用来调用该服务的方法可谓是

2017-08-03 07:59:46 4613 2

原创 netty之SimpleChannelInboundHandler

netty之SimpleChannelInboundHandler在最开始学些netty的时候,写的服务端demo的handler,继承的都是ChannelInboundHandlerAdapter,客户端继承的是SimpleChannelInboundHandler,当然最开始学的时候都是在不断的写demo,并不清楚为何两边继承的类还不一样,还想过服务端handler也继承SimpleChanne

2017-07-25 07:24:21 5350 3

原创 netty入门及介绍

netty入门及介绍 1、前言 2、服务端程序 3、客户端程序 4.部分netty知识详解 5、总结 1.前言前段时间研究了一段时间的rpc框架,dubbo、zero ice等等都熟悉了一下,然后发现许多rpc框架底层都是采用netty进行通信,由此对netty有了一些兴趣,然后花了三个多月的时间学习了一下netty,一些博文专栏中的文章、官网的例子,都去写了一遍,不

2017-07-06 17:20:28 902

原创 flask使用Blueprint进行多模块应用的编写

flask使用Blueprint进行多模块应用的编写 1、blueprint 2、分模块后的结构 3、业务模块 4、运行 5、总结 1、blueprint在使用flask进行一个项目编写的时候,可能会有许多个模块,如一个普通的互联网sass云办公应用,会有用户管理、部门管理、账号管理等模块,如果把所有的这些模块都放在一个views.py文件之中,那么最后views.p

2017-03-28 08:42:59 15531 1

epoll server

java netty epoll server演示,使用Dockerfile文件来模拟linux环境

2017-11-15

Python项目开发实战(第2版)完整高清版 带书签 .pdf

本书网罗Python项目开发中的流程,让你的编程事半功倍。是日本极客和书虫们的智慧结晶和经验总结,让你既会写代码也能做好项目!

2017-05-10

垃圾回收的算法与实现

垃圾回收的算法与实现---文字版.pdf

2017-03-28

Java多线程编程核心技术_完整版

Java多线程编程核心技术_完整版 PDF电子书下载 带书签目录,非常清晰~!

2017-02-27

apache karaf cookbook

少数的几本讲karaf的书籍

2016-06-28

tomcat-7.0

apache-tomcat-7.0.57-windows-x64.zip压缩包

2015-01-25

servlet-API文档

对java中的servlet中的api有着很详细的描述,对开发有着极大的帮助。

2015-01-25

iphone高级编程

iPhone高级编程-使用MonoTouch和.NET/C#.pdf

2014-08-24

JAVA.Spring.MVC书籍

英文原版java.Spring.MVC书籍,对英语能力有一定要求,但一定是一本好书

2014-08-23

C#写的http服务器

很不错的一个http服务器,用winform编写,可监控网页开启后中间http协议,tcp协议的之间数据传输。

2014-08-19

jqueryAPI函数chm文档

对jquery中api函数的描述,十分详细,是开发者所必备的chm文档

2014-08-08

传智播客.net就业班种子

传智播客.net就业班资源,齐全,容易学习,值得下载与学习

2014-02-21

传智播客java就业班资源

java就业班精品资源,传智播客内部教程,值得学习与收藏

2014-02-21

做音乐播放器的图片资源

在做一款音乐播放器时,引用的各种图片,比较美观,有一定实用性。

2013-12-27

c#精彩实例教程

C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,这是c#的一些资源,主要关于winform

2013-11-05

空空如也

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

TA关注的人

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