- 博客(171)
- 资源 (16)
- 收藏
- 关注
原创 高效数据拷贝之zero copy
问题背景许多Web程序需要实现从磁盘读取大量数据然后写入到网络socket中传输的功能。这类数据操作看起来不怎么消耗CPU,但是这个过程存在缺陷:操作系统内核(kernel)从磁盘中读出数据,然后将数据从内核区推到用户区,交给用户的应用系统。之后,用户的应用系统会将收到的数据再返回给内核区socket缓存区。实际上,用户应用程序只想去将数据从磁盘读出来然后交给网络socket处理。每一...
2019-02-23 11:06:12 2940 1
原创 OpenJDK源码分析之DirectMemory大小(二)
OpenJDK源码包结构介绍上文我们从JDK里面的java代码实现跟踪到了Runtime.getRuntime().maxMemory();这个Native方法,那么要理解这个方法如何实现,就需要下载OpenJDK的源码进行学习了。下面我们先介绍一下OpenJDK源码包的结构,避免我们在代码追踪时迷路:OpenJDK —— corba:不流行的多语言、分布式通讯接口 —— hotspo...
2019-01-24 11:16:21 596 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 1050 3
原创 kafka重复消费问题
问题描述: 在消费者处理数据慢的时候(消费能力低),消费者会重复消费某个局部数据。在消费能力不变的情况下,陷入死循环。只有在消费能力增强后,才会跳出这个重复消费的死循环。原理解析:上图就是完整的kafka消费的过程,在consumer里面配置了一个超时时间。如果步骤2处理消息超时,那么consumer进行第3步会失败。这时候再次进入步骤1拉取重复的数据,如此往复。验...
2018-11-28 12:53:06 4967 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 308 1
原创 谈贵人
人生就一段旅程,你不知道明天你将在哪里,谁会与你同行。一路前行,或一路顺风,或风里雨里,勇敢的你仍在前进中成长。现实的生活中的不顺一直鞭笞着你勇往直前,遇到坎坷,总会有某个人或物质或精神上帮我们走出逆境,奔向远方。 当别人羡慕你背后的光环时,他们不知道其实那只是别人的光辉照耀着你。因为那些人的帮助,你走出阴暗,跟着那些人追逐太阳。从此你心中便有一颗成为太阳的心,向着那条阳光大道勇
2017-11-14 21:35:45 623 8
原创 innodb_locks_unsafe_for_binlog参数解析
在数据库全表扫描的过程中,不论myql隔离级别是read committed还是repeatable read,mysql底层是不会释放锁的。
2017-08-28 21:56:06 4200 12
原创 对Dubbo的一些理解
因为前几年的公司业务比较小,基本上不涉及分布式框架。随着业务的扩展,系统规模越来越大,垂直拆分系统结构势在必行。在前期的技术选型后,我们决定使用dubbo来实现分布式系统调用。下面我个人谈谈对dubbo的理解。 dubbo集成了spring,所以在使用上特别类似于spring的使用风格。可以说只要熟练使用了spring,那么dubbo上手是非常快的。如何来看待dubbo的设计理念呢?我是结合
2017-08-20 22:06:31 2790 12
原创 通用资源分配算法
现实生活中很多情景下都存在资源紧缺的情况,比如XXX大学今年就招生N个学生,那该如何入分配这几个名额呢?鉴于这种情景在现实生活中太多,而且很多情况下合理分配这些资源需要投入大量人力物力去分析和研究。我思考这个问题,提出如下一些观点。 资源分配的本质:资源的有限性。 资源分配的目标:整体价值最大(多维度的目标和)。 资源分配的过程:多次决定的积累。 资源分配的手段:每次决定都趋利避害
2017-08-13 19:21:35 11343 10
原创 session是什么时候创建的?
一直以来javaweb伴随着web工程师,可是太多人忙于框架之上的CRUD,底层的一些基本原理忽略了。现在让我从session开始慢慢捡起来javaweb的基本原理吧。 先介绍一下测试环境: 其中servlet和jsp都是默认内容。 测试1:分别请求servlet和jsp,通过浏览器查看是否生成session。 测试结果:请求servlet没有产生session,请
2017-08-07 19:02:31 18395 15
原创 浅尝分布式事务
理论学习: DTP:DTP全称是Distributed Transaction Process,即分布式事务模型。主要涉及了三个对象: AP(Application Program):应用程序 TM(Transaction Manager):事务管理器。负责协调和管理事务 RM(Resource Manager):资源管理器。可以理
2017-08-06 10:36:26 611 7
原创 从单例模式的Double-Check看指令重排
晚上同学问了我一个问题,单例模式的Double-Check机制在多线程模式是否会出现问题。这个问题我当时有些琢磨不透,晚上翻阅书籍记录一下这个问题的收获。 public class Singleton { public static Singleton instance; private Singleton(){}; public static Singleton getInst
2017-07-31 20:20:33 3105 12
原创 爬去网络数据的一般思路
前段时间一直在做网络爬虫,我也总结了一些心得分享一下。在做网络爬虫的过程中,我更加深入体会了html,EL表达式等javaweb技术的本质原理,对提高我的编程水平的提升有了非常大的帮助。后期在爬虫优化中采用并行策略,提高系统效率。
2017-07-31 18:03:16 862 12
原创 fork/join模式中fork和invokeAll的区别
有一类问题,他们的本质上是将一个问题划分成多个子问题,然后再逐个的去解决子问题。在很多情况下,他们这些子问题是互不相干的。也就是说,我们针对他们每个执行的子问题,可以让他们采用独立的线程来运行。这样的话我们可以充分的发挥现在并行处理器的优势。 在fork/join模式中,我们在子任务中常常使用fork方法来让子任务采取异步方法执行,但是这不是高效的实现方法,尤其是对于forkjoinP
2017-07-31 17:58:50 8561 12
原创 HashMap的数据结构分析
jdk提供的HashMap作为一个性能很不错的集合类,其内部结构是如何的呢?以上的解决方案的思想是集合数组和链表各自的优点结合成为一种数据结构,当发生hash冲突后,从图中可以看出hashmap采用了拉链结构解决。对于每一个数组元素组成的链表结构称为桶,在获取hashmap元素数量时,以为遍历桶比较浪费时间,所以这点需要在开发过程中注意。再了解一下hashcode和equals
2017-07-30 23:08:42 736 19
原创 centos虚拟机拷贝导致网卡冲突
前段时间,我在公司电脑上安装了虚拟机,安装了一个centos的操作系统。批量复制了多个,本来想要搭建一个zk集群,却跟windows主机网络联不通。经过我一番解决,记录一下问题的解决方法。 1.产生问题的原因 由于虚拟机分配给操作系统的虚拟网卡MAC地址是不一样的。第一个系统的网卡MAC地址记录在了/etc/udev/rules.d/70-persistent-net.rule
2017-07-28 15:27:23 927 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 5434 22
原创 hadoop入门之wordcount学习
一天下班,看到一个公开课,一不下心就看到了半夜,讲的Hadoop特别生动易懂。后来我又找了一些资料学习了一下,先记录一下,更加深入的东西仍需投入时间学习和理解。 假设输入为两个文件 第一步:input InputFormat类将输入文件划分成多个splits,同时将这些splits转化为的形式,如下,可以发现,当使用默认的TextInputFormat进行处理的
2017-07-28 13:49:33 496 19
原创 CyclicBarrier学习
多了解Concurrent包里面的类对提高并发开发很有帮助。下面就一个实例学习一下CycleBarrier的使用方法: CyclicBarrier有两个构造函数: CyclicBarrier(int parties); int类型的参数表示有几个线程来参与这个屏障拦截; CyclicBarrier(int parties,Runnable barrierActio
2017-07-28 13:16:10 519 16
原创 像写诗一样写代码
每个人都有儿时纯真的梦想,不过随着时间的消磨和个人对社会的认识改变,很多人遗忘了年少轻狂的豪言壮语。我在北京工作了半年多了,通过对我自己内心变化的洞察和周围同事生活的观察。我感觉步入社会后,想要保持学生时代无拘无束的生活已经很难了,而在物欲面前,慢慢地我变得很短见。现在想想,每个月写写博客其实挺好的,所谓三省吾身。我在每次写博客的过程中,很多时候陷入深深思考,也在不经意间悟出了很多道理。今天讨
2017-03-31 22:31:59 3172 12
原创 面向对象的程序设计
几乎每个计算机从业人员早在大学就学习了面向对象程序设计语言,然而面向对象真的不是那么容易设计的。很多时候设计的过程考验了一个开发者的经验和智慧。
2017-03-01 00:38:41 580 14
原创 java高并发经验总结
前不久,我学习了一下java高并发场景的处理,在这里总结一下:场景主要包括两个方面:一个是减库存,一个是记录订单。简单分析一下业务:每个客户端下单,服务器在数据库上面都相应的执行两个操作,第一步把库存表某条库存信息update更新一下,同时在订单表中insert添加一个记录某某客户预定了某某商品的信息。这里有个事务和行级锁的问题。update更新操作是需要行锁的,也就是说update操作必须是
2017-03-01 00:25:16 7448 15
原创 为什么写了好几年代码没什么长进
我作为一个小程序员,写了4年多代码,每年写代码都是一个感觉。虽然也经常拜读先贤的经典著作,然而并没有起到什么实际的作用。我个人觉得写代码长进最大的两个阶段:第一次是在北京中关村工作,跟同事一起完成一个任务,同事经常对我的代码进行重构,我也经常在一边学习观看。后来这段经历给我的印象非常深刻,从此我对如何写好代码有了新的认识。第二次我觉得就是最近在这家公司,我因为在这家公司非常闲,所以有很多时间看一些
2017-03-01 00:00:15 1839 17
原创 js闭包
之前一直不了解什么是js中的闭包,现在趁着有时间多积累一下基础知识。我对闭包的理解就类似与java中私有变量的概念,而闭包就类似于getter和setter方法。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。闭包可以用在许多地方。它的最大用处有两个,一
2017-01-31 21:01:43 193 17
原创 arrayList hashset的比较及hashcode分析
这段时间学习了一些java基础的知识,其中一些是我之前不知道的,记录下来希望自己好好体会。集合按照引用的对象将其放进去的,按照顺序将其放进去,指的是位置的顺序。 ArrayList好理解,下面就重点谈谈对hashset的理解。但是hashset不是,先判断是不是 有这个对象,如果存在,那么就不放了。先看一个例子:这种情况下输出一下集合中元素个数是2。那么如果
2017-01-31 20:06:58 771 16
原创 16年总结
2016年总的生活节奏就是激流勇进。春天在中关村度过,虽然技术和能力的提高不是很大,但是第一次体验了工作的情况,接触到了不同的社会人群,这是我生活经验的第一次积累。夏天在提高班不断积累java 能力,学习了很多java知识。同时我也在英语上寻找了自己能坚持下来的学习材料。冬天的时候来到了北京开始了北漂生活,刚开始就要准备考研,对我来说这是非常特殊一次经历。总是16年是成长非常快的一年,一年的成长都
2017-01-31 10:05:37 562 25
原创 从游戏中学习和体会用户心理
现在过年在家无聊了,免不了打打游戏。今天突然想看看那些制作游戏的人是如何引诱人们喜欢上打游戏的感觉的。所以在网上看了看一些对游戏设计的评价和看法。我也学习和借鉴一下,以后如果开发一个教育类的软件如何就像打游戏一样让人们对教育上瘾,在学习中体会到成就感。1. 推搡效应。推搡效应 (Pushing effect) ,是指把商品放在目标买主够得着的地方。原本商场企图通过将领带货架放在人们
2017-01-29 20:48:33 1398 14
原创 编程的道与术
什么是道? 道这个词起源于「老子」, “道生一, 一生二, 二生三”,道是本源。宇宙中的一切都遵循于「道」,此为大道。而人类对世界的理性理解,也可称为「道」。比如某人在某个领域钻研的久了,人们常常会说此人掌握了门道。因为他可以掌握那个领域的变化,可以预测走向,因为他深知那个领域的“道”。什么是术? 术是能力,是知识、方法、策略和经验的集合; 术也是可解决
2016-12-31 22:23:52 1184 21
原创 教学相长
先来看看教学相长的定义:教和学两方面互相影响和促进,都得到提高。教学是教与学的交往互动,师生双方相互交流、相互沟通、相互启发、相互补充,在这个过程中教师与学生彼此间进行情感交流,从而达到共识、共享、共进,实现教学相长与共同发展。现在我在公司看到很多同事不愿意带实习生,感觉他们好拖累自己感觉。我当时觉得自己正是在教学相长的背景下成长的,而且米老师也总是教育我们对自己在教育徒弟的过程中自己也能提高
2016-12-31 21:13:06 1027 20
原创 学习英语要善于持久战
从现在到毕业时间不多了,我对英语的更是充满了期望。以前总觉得自己不喜欢学习学习英语,现在才觉得当初的想法好天真和幼稚。学习英语重要的不是周围人看你如何如何, 这与你无关,我个人感觉重要的是自己有一颗不抛弃不放弃的心。 刚开始提高班有一些学习计划,我总是抱着:集体让我学什么我就学什么,反正我知道短时间内,我自己是不会太大提高的。这样,我一直在做,但没有很大积极性。大概两年学习英语之后,很多事情
2016-12-31 20:27:47 670 18
IrisSkin4.dll
2015-10-04
Aspose.Words13.2.0.0
2015-09-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人