自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不忘初心

用文字整理生命!

  • 博客(171)
  • 资源 (16)
  • 收藏
  • 关注

原创 高效数据拷贝之zero copy

问题背景许多Web程序需要实现从磁盘读取大量数据然后写入到网络socket中传输的功能。这类数据操作看起来不怎么消耗CPU,但是这个过程存在缺陷:操作系统内核(kernel)从磁盘中读出数据,然后将数据从内核区推到用户区,交给用户的应用系统。之后,用户的应用系统会将收到的数据再返回给内核区socket缓存区。实际上,用户应用程序只想去将数据从磁盘读出来然后交给网络socket处理。每一...

2019-02-23 11:06:12 2876 1

原创 OpenJDK源码分析之DirectMemory大小(二)

OpenJDK源码包结构介绍上文我们从JDK里面的java代码实现跟踪到了Runtime.getRuntime().maxMemory();这个Native方法,那么要理解这个方法如何实现,就需要下载OpenJDK的源码进行学习了。下面我们先介绍一下OpenJDK源码包的结构,避免我们在代码追踪时迷路:OpenJDK —— corba:不流行的多语言、分布式通讯接口 —— hotspo...

2019-01-24 11:16:21 536 1

原创 OpenJDK源码分析之DirectMemory大小(一)

发现问题在使用javaNIO时,会使用到buffer。那么JDK里面如何分配堆外内存到大小呢?下面根据一系列猜想,整理了一个求证的过程: import java.nio.ByteBuffer;import java.util.concurrent.TimeUnit;import sun.misc.VM;import sun.nio.ch.DirectBuffer;public ...

2019-01-23 22:31:18 951 3

原创 kafka重复消费问题

问题描述:       在消费者处理数据慢的时候(消费能力低),消费者会重复消费某个局部数据。在消费能力不变的情况下,陷入死循环。只有在消费能力增强后,才会跳出这个重复消费的死循环。原理解析:上图就是完整的kafka消费的过程,在consumer里面配置了一个超时时间。如果步骤2处理消息超时,那么consumer进行第3步会失败。这时候再次进入步骤1拉取重复的数据,如此往复。验...

2018-11-28 12:53:06 4886 5

原创 谁是众数

今天的算法题目是:Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority e...

2018-11-19 00:00:50 268 1

原创 谈贵人

人生就一段旅程,你不知道明天你将在哪里,谁会与你同行。一路前行,或一路顺风,或风里雨里,勇敢的你仍在前进中成长。现实的生活中的不顺一直鞭笞着你勇往直前,遇到坎坷,总会有某个人或物质或精神上帮我们走出逆境,奔向远方。        当别人羡慕你背后的光环时,他们不知道其实那只是别人的光辉照耀着你。因为那些人的帮助,你走出阴暗,跟着那些人追逐太阳。从此你心中便有一颗成为太阳的心,向着那条阳光大道勇

2017-11-14 21:35:45 548 8

原创 innodb_locks_unsafe_for_binlog参数解析

在数据库全表扫描的过程中,不论myql隔离级别是read committed还是repeatable read,mysql底层是不会释放锁的。

2017-08-28 21:56:06 4119 12

原创 对Dubbo的一些理解

因为前几年的公司业务比较小,基本上不涉及分布式框架。随着业务的扩展,系统规模越来越大,垂直拆分系统结构势在必行。在前期的技术选型后,我们决定使用dubbo来实现分布式系统调用。下面我个人谈谈对dubbo的理解。  dubbo集成了spring,所以在使用上特别类似于spring的使用风格。可以说只要熟练使用了spring,那么dubbo上手是非常快的。如何来看待dubbo的设计理念呢?我是结合

2017-08-20 22:06:31 2750 12

原创 通用资源分配算法

现实生活中很多情景下都存在资源紧缺的情况,比如XXX大学今年就招生N个学生,那该如何入分配这几个名额呢?鉴于这种情景在现实生活中太多,而且很多情况下合理分配这些资源需要投入大量人力物力去分析和研究。我思考这个问题,提出如下一些观点。 资源分配的本质:资源的有限性。 资源分配的目标:整体价值最大(多维度的目标和)。 资源分配的过程:多次决定的积累。 资源分配的手段:每次决定都趋利避害

2017-08-13 19:21:35 11165 10

原创 session是什么时候创建的?

一直以来javaweb伴随着web工程师,可是太多人忙于框架之上的CRUD,底层的一些基本原理忽略了。现在让我从session开始慢慢捡起来javaweb的基本原理吧。   先介绍一下测试环境:   其中servlet和jsp都是默认内容。  测试1:分别请求servlet和jsp,通过浏览器查看是否生成session。  测试结果:请求servlet没有产生session,请

2017-08-07 19:02:31 18311 15

原创 浅尝分布式事务

理论学习:  DTP:DTP全称是Distributed Transaction Process,即分布式事务模型。主要涉及了三个对象:             AP(Application Program):应用程序      TM(Transaction Manager):事务管理器。负责协调和管理事务      RM(Resource Manager):资源管理器。可以理

2017-08-06 10:36:26 531 7

原创 从单例模式的Double-Check看指令重排

晚上同学问了我一个问题,单例模式的Double-Check机制在多线程模式是否会出现问题。这个问题我当时有些琢磨不透,晚上翻阅书籍记录一下这个问题的收获。 public class Singleton { public static Singleton instance; private Singleton(){}; public static Singleton getInst

2017-07-31 20:20:33 3047 12

原创 爬去网络数据的一般思路

前段时间一直在做网络爬虫,我也总结了一些心得分享一下。在做网络爬虫的过程中,我更加深入体会了html,EL表达式等javaweb技术的本质原理,对提高我的编程水平的提升有了非常大的帮助。后期在爬虫优化中采用并行策略,提高系统效率。

2017-07-31 18:03:16 826 12

原创 fork/join模式中fork和invokeAll的区别

有一类问题,他们的本质上是将一个问题划分成多个子问题,然后再逐个的去解决子问题。在很多情况下,他们这些子问题是互不相干的。也就是说,我们针对他们每个执行的子问题,可以让他们采用独立的线程来运行。这样的话我们可以充分的发挥现在并行处理器的优势。     在fork/join模式中,我们在子任务中常常使用fork方法来让子任务采取异步方法执行,但是这不是高效的实现方法,尤其是对于forkjoinP

2017-07-31 17:58:50 8453 12

原创 HashMap的数据结构分析

jdk提供的HashMap作为一个性能很不错的集合类,其内部结构是如何的呢?以上的解决方案的思想是集合数组和链表各自的优点结合成为一种数据结构,当发生hash冲突后,从图中可以看出hashmap采用了拉链结构解决。对于每一个数组元素组成的链表结构称为桶,在获取hashmap元素数量时,以为遍历桶比较浪费时间,所以这点需要在开发过程中注意。再了解一下hashcode和equals

2017-07-30 23:08:42 698 19

原创 centos虚拟机拷贝导致网卡冲突

前段时间,我在公司电脑上安装了虚拟机,安装了一个centos的操作系统。批量复制了多个,本来想要搭建一个zk集群,却跟windows主机网络联不通。经过我一番解决,记录一下问题的解决方法。   1.产生问题的原因   由于虚拟机分配给操作系统的虚拟网卡MAC地址是不一样的。第一个系统的网卡MAC地址记录在了/etc/udev/rules.d/70-persistent-net.rule

2017-07-28 15:27:23 855 18

原创 Maven实现直接部署Web项目到Tomcat

前几天看学习资料,讲解了一下maven直接部署项目到Tomcat上。记录于此方便下次使用:  第一步:设置tomcat权限  Tomcat7的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加用户。 rolename="manager"/> username="tomcat" password="123456" roles="manage

2017-07-28 15:20:58 5378 22

原创 hadoop入门之wordcount学习

一天下班,看到一个公开课,一不下心就看到了半夜,讲的Hadoop特别生动易懂。后来我又找了一些资料学习了一下,先记录一下,更加深入的东西仍需投入时间学习和理解。   假设输入为两个文件     第一步:input   InputFormat类将输入文件划分成多个splits,同时将这些splits转化为的形式,如下,可以发现,当使用默认的TextInputFormat进行处理的

2017-07-28 13:49:33 456 19

原创 CyclicBarrier学习

多了解Concurrent包里面的类对提高并发开发很有帮助。下面就一个实例学习一下CycleBarrier的使用方法:  CyclicBarrier有两个构造函数:    CyclicBarrier(int parties); int类型的参数表示有几个线程来参与这个屏障拦截;    CyclicBarrier(int parties,Runnable barrierActio

2017-07-28 13:16:10 467 16

原创 try-catch使用思考

谈谈我对try-catch的理解。

2017-05-31 23:52:47 449 11

原创 quartz插件化

quartz的插件化,便于开发人员快速开发。

2017-05-31 23:50:50 905 10

原创 读《大话数据结构》有感

一本书带给我的不仅仅是知识,更是思考。

2017-05-31 23:45:46 1980 11

原创 匹配算法的局部最优解

对现实生活中问题的思考总结,体会算法之美。

2017-05-31 22:52:13 4228 12

原创 jcseg分词自动识别填充数据属性

jcesg的简单使用

2017-03-31 22:49:43 783 5

原创 Properties文件解析的坑

记录最近遇到的jdk解析properties的坑

2017-03-31 22:48:56 1603 6

原创 系统并行化设计的一次思考

编程重要的不在写而在于思考。

2017-03-31 22:39:38 741 13

原创 像写诗一样写代码

每个人都有儿时纯真的梦想,不过随着时间的消磨和个人对社会的认识改变,很多人遗忘了年少轻狂的豪言壮语。我在北京工作了半年多了,通过对我自己内心变化的洞察和周围同事生活的观察。我感觉步入社会后,想要保持学生时代无拘无束的生活已经很难了,而在物欲面前,慢慢地我变得很短见。现在想想,每个月写写博客其实挺好的,所谓三省吾身。我在每次写博客的过程中,很多时候陷入深深思考,也在不经意间悟出了很多道理。今天讨

2017-03-31 22:31:59 3114 12

原创 如何看待技术学习

技术学习是一个不断领悟的过程。

2017-03-05 23:36:11 778 14

原创 面向对象的程序设计

几乎每个计算机从业人员早在大学就学习了面向对象程序设计语言,然而面向对象真的不是那么容易设计的。很多时候设计的过程考验了一个开发者的经验和智慧。

2017-03-01 00:38:41 551 14

原创 如何设计高效索引

索引对数据查询起到了非常重要的作用,设计一个高效的索引对程序的运行速度起到了非常重要的作用。

2017-03-01 00:34:51 1414 14

原创 java高并发经验总结

前不久,我学习了一下java高并发场景的处理,在这里总结一下:场景主要包括两个方面:一个是减库存,一个是记录订单。简单分析一下业务:每个客户端下单,服务器在数据库上面都相应的执行两个操作,第一步把库存表某条库存信息update更新一下,同时在订单表中insert添加一个记录某某客户预定了某某商品的信息。这里有个事务和行级锁的问题。update更新操作是需要行锁的,也就是说update操作必须是

2017-03-01 00:25:16 7396 15

原创 为什么写了好几年代码没什么长进

我作为一个小程序员,写了4年多代码,每年写代码都是一个感觉。虽然也经常拜读先贤的经典著作,然而并没有起到什么实际的作用。我个人觉得写代码长进最大的两个阶段:第一次是在北京中关村工作,跟同事一起完成一个任务,同事经常对我的代码进行重构,我也经常在一边学习观看。后来这段经历给我的印象非常深刻,从此我对如何写好代码有了新的认识。第二次我觉得就是最近在这家公司,我因为在这家公司非常闲,所以有很多时间看一些

2017-03-01 00:00:15 1777 17

原创 js闭包

之前一直不了解什么是js中的闭包,现在趁着有时间多积累一下基础知识。我对闭包的理解就类似与java中私有变量的概念,而闭包就类似于getter和setter方法。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。闭包可以用在许多地方。它的最大用处有两个,一

2017-01-31 21:01:43 142 17

原创 arrayList hashset的比较及hashcode分析

这段时间学习了一些java基础的知识,其中一些是我之前不知道的,记录下来希望自己好好体会。集合按照引用的对象将其放进去的,按照顺序将其放进去,指的是位置的顺序。 ArrayList好理解,下面就重点谈谈对hashset的理解。但是hashset不是,先判断是不是 有这个对象,如果存在,那么就不放了。先看一个例子:这种情况下输出一下集合中元素个数是2。那么如果

2017-01-31 20:06:58 722 16

原创 16年总结

2016年总的生活节奏就是激流勇进。春天在中关村度过,虽然技术和能力的提高不是很大,但是第一次体验了工作的情况,接触到了不同的社会人群,这是我生活经验的第一次积累。夏天在提高班不断积累java 能力,学习了很多java知识。同时我也在英语上寻找了自己能坚持下来的学习材料。冬天的时候来到了北京开始了北漂生活,刚开始就要准备考研,对我来说这是非常特殊一次经历。总是16年是成长非常快的一年,一年的成长都

2017-01-31 10:05:37 532 25

原创 从游戏中学习和体会用户心理

现在过年在家无聊了,免不了打打游戏。今天突然想看看那些制作游戏的人是如何引诱人们喜欢上打游戏的感觉的。所以在网上看了看一些对游戏设计的评价和看法。我也学习和借鉴一下,以后如果开发一个教育类的软件如何就像打游戏一样让人们对教育上瘾,在学习中体会到成就感。1. 推搡效应。推搡效应 (Pushing effect) ,是指把商品放在目标买主够得着的地方。原本商场企图通过将领带货架放在人们

2017-01-29 20:48:33 1343 14

原创 MongoDB

MongDB非常适合做海量存储

2017-01-08 21:32:33 592 11

原创 编程的道与术

什么是道?        道这个词起源于「老子」, “道生一, 一生二, 二生三”,道是本源。宇宙中的一切都遵循于「道」,此为大道。而人类对世界的理性理解,也可称为「道」。比如某人在某个领域钻研的久了,人们常常会说此人掌握了门道。因为他可以掌握那个领域的变化,可以预测走向,因为他深知那个领域的“道”。什么是术?        术是能力,是知识、方法、策略和经验的集合; 术也是可解决

2016-12-31 22:23:52 1097 21

原创 教学相长

先来看看教学相长的定义:教和学两方面互相影响和促进,都得到提高。教学是教与学的交往互动,师生双方相互交流、相互沟通、相互启发、相互补充,在这个过程中教师与学生彼此间进行情感交流,从而达到共识、共享、共进,实现教学相长与共同发展。现在我在公司看到很多同事不愿意带实习生,感觉他们好拖累自己感觉。我当时觉得自己正是在教学相长的背景下成长的,而且米老师也总是教育我们对自己在教育徒弟的过程中自己也能提高

2016-12-31 21:13:06 899 20

原创 学习英语要善于持久战

从现在到毕业时间不多了,我对英语的更是充满了期望。以前总觉得自己不喜欢学习学习英语,现在才觉得当初的想法好天真和幼稚。学习英语重要的不是周围人看你如何如何, 这与你无关,我个人感觉重要的是自己有一颗不抛弃不放弃的心。  刚开始提高班有一些学习计划,我总是抱着:集体让我学什么我就学什么,反正我知道短时间内,我自己是不会太大提高的。这样,我一直在做,但没有很大积极性。大概两年学习英语之后,很多事情

2016-12-31 20:27:47 630 18

atomikostest

一个atomikos小例子

2017-08-06

C#OperateWord

实现对Office的编程

2016-04-19

Log4Net-1.2.15

Log4Net-1.2.15

2016-04-17

Log4NetDemo

Log4NetDemo

2016-04-17

TransactionScopeDemo

TransactionScopeDemo

2016-04-17

二叉树操作类

封装了数操作的数据结构和算法,其中包括插入\查找\先序遍历\后续遍历等操作.

2015-11-15

HTML字幕滚动效果

使用HTML可以实现字幕滚动效果,代码特别简单但是为我们的系统增添了不少色彩。

2015-11-01

应用组合模式解决树状图Demo

用组合模式解决树状结构很不错,其中的核心思想就是递归调用同一个方法。

2015-10-14

组合模式Demo

组合模式Demo,组合模式使用与无差别对待层次关系的结构。

2015-10-13

不同浏览器之间路径问题Demo

这个实例列举了几个不同路径标识文件的方式,在不同的浏览器中运行会有不同的效果。

2015-10-08

2014年自考数据结构导论10月、4月数据结构导论

2014年自考数据结构导论10月、4月数据结构导论

2015-10-06

CSS动画之圆形滑动

该实例实现了一个css特效,从这个Demo中学到了很多css的知识。

2015-10-05

IrisSkin4.dll

IrisSkin 是为Microsoft Visual Studio dotNET开发的最易用的界面增强dotNET(WinForm)组件包。它能完全自动的为您的应用程序添加支持换肤功能,甚至不需要更改您的设计好的Form以及添加一行代码!您也不再需要花费很多时间来使得自己的应用程序更漂亮。 IrisSkin提供一个强大的组件SkinEngine组件来帮助您完成这一切所有的工作。您需要做的,只是将一个SkinEngine组件拖放到您设计的主Form上,并且设置一些属性,然后所有的Form以及对话框,都会自动的在运行时支持换肤功能。您也可以轻易的让应用程序回复到原始Windows风格。

2015-10-04

web布局设计demo

web布局设计对网站有着极其重要的作用,该资源包中包含了丰富的demo。

2015-09-22

Video视频播放器开发

Video.js是一款不错的JavaScript开源产品,主要用于视频播放器的开发和应用。

2015-09-19

Aspose.Words13.2.0.0

实现信函打印的一个Office组件,开发中经常会用到。详细的使用说明,请关注我的博客http://blog.csdn.net/cxl0921

2015-09-04

空空如也

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

TA关注的人

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