- 博客(118)
- 收藏
- 关注
原创 ZooKeeper
ZooKeeper is a high-performance coordination service for distributed applications. It exposes common services - such as naming, configuration management, synchronization, and grou...
2018-07-14 22:27:00
183
原创 AQS
paper传送门/*** Provides a framework for implementing blocking locks and related* synchronizers (semaphores, events, etc) that rely on* first-in-first-out (FIFO) wait queues. ...
2018-07-14 21:33:00
217
原创 java同步基石AQS
UNSAFE -> CompareAndSet(CAS) -> AbstractQueuedSynchronizer(AQS) /** * Provides a framework for implementing blocking locks and related * synchronizers (semaphores, events, etc) that rely on
2017-07-25 16:23:21
332
转载 动态规划
作者:王勐链接:https://www.zhihu.com/question/23995189/answer/35429905来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。动态规划的本质不在于是递推或是递归,也不需要纠结是不是内存换时间。理解动态规划并不需要数学公式介入,只是完全解释清楚需要点篇幅…首先需要明白哪些问题不是动态规划可以解决
2017-06-23 17:41:42
430
原创 zookeeper与kafka
zookeeper简介Zookeeper是一种在分布式系统中被广泛用来作为:分布式状态管理、分布式协调管理、分布式配置管理、和分布式锁服务的集群。kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件kafka系统会捕获这些事件,进行新一轮的负载均衡,客户端也会捕获这些事件来进行新一轮的处理。kafka简介生产者生产消息、kafka集群、消费者获取消息这
2017-06-23 14:51:08
485
原创 kafka
zookeeper简介Zookeeper是一种在分布式系统中被广泛用来作为:分布式状态管理、分布式协调管理、分布式配置管理、和分布式锁服务的集群。kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件kafka系统会捕获这些事件,进行新一轮的负载均衡,客户端也会捕获这些事件来进行新一轮的处理。kafka简介生产者生产消息、kafka集群、消...
2017-05-12 11:24:00
147
转载 java多线程
1.volatile:每个线程运行时都有一个线程栈,它保存了线程运行时的变量,当一个线程访问一个对象时,首先通过对象的引用找到其对应在堆内存的变量值,然后把变量的具体值load到该线程的线程栈中,之后线程就和对象在堆内存的变量值没有关系了,而是直接修改副本变量的值,修改完成后某一时刻(线程退出前),自动把线程变量副本的值回写到对象在堆中的变量。来源vol
2017-04-01 10:12:26
265
转载 基于ZooKeeper的分布式锁和队列
在分布式系统中,往往需要一些分布式同步原语来做一些协同工作,上一篇文章介绍了Zookeeper的基本原理,本文介绍下基于Zookeeper的Lock和Queue的实现,主要代码都来自Zookeeper的官方recipe。锁(Lock)完全分布式锁是全局同步的,这意味着在任何时刻没有两个客户端会同时认为它们都拥有相同的锁,使用 Zookeeper 可以实现分布式锁,需要首先定义一个锁
2017-01-12 16:14:37
442
转载 zookeeper和dubbo
zookeeper是dubbo推荐的注册中心。<img src="https://pic4.zhimg.com/65be00a325e45c02b57b1dcff86c35db_b.png" data-rawwidth="500" data-rawheight="288" class="origin_ima
2017-01-12 15:18:01
640
转载 ZooKeeper基本原理
ZooKeeper简介ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 ZooKeeper设计目的1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。2.可靠性:具有简单、健壮、良好的性能,如果
2017-01-12 14:58:57
297
转载 mysql icp(Index Condition Pushdown) using index condition
ICP(index condition pushdown)是mysql利用索引(二级索引)元组和筛字段在索引中的where条件从表中提取数据记录的一种优化操作。ICP的思想是:存储引擎在访问索引的时候检查筛选字段在索引中的where条件(pushed index condition,推送的索引条件),如果索引元组中的数据不满足推送的索引条件,那么就过滤掉该条数据记录。ICP(优化器)尽可能的把
2016-10-16 11:20:24
320
原创 mysql 执行计划的一点疑问
Using where:表示优化器需要通过索引回表查询数据;Using index:表示直接访问索引就足够获取到所需要的数据,不需要通过索引回表;Using index condition:在5.6版本后加入的新特性(Index Condition Pushdown); Using index condition 会先条件过滤索引,过滤完索引后找到所有符合索引条件的数据
2016-10-16 10:58:55
718
转载 mysql索引最左匹配原则的理解
这是你的表结构,有三个字段,分别是id,name,cidCREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `cid` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `name_cid_INX` (`na
2016-10-11 14:33:45
38893
9
原创 java挂起和恢复线程的api为何废弃
Thread 的API中包含两个被淘汰的方法,它们用于临时挂起和重启某个线程,这些方法已经被淘汰,因为它们是不安全的,不稳定的。如果在不合适的时候挂起线程(比如,锁定共享资源时),此时便可能会发生死锁条件——其他线程在等待该线程释放锁,但该线程却被挂起了,便会发生死锁。另外,在长时间计算期间挂起线程也可能导致问题。下面我们给出不用上述两个方法来实现线程挂起和恢复的策略——设置标志位。通过该方法
2016-07-07 22:32:48
432
原创 JAVA
I/O问题是整个人机交互交互的核心问题,是任何编程语言都无法回避的问题,因为I/O是机器获取和交换信息的主要渠道。通常会成为一个性能瓶颈。所以java在I/O上一直在做持续的优化,如从JDK1.4开始引入了NIO,提升了I/O性能。总结下java的I/O操作类如下:基于字节操作的I/O接口:InputStream和OutputStream基于字符操作的I/O接口:Writer和Read
2016-05-20 11:07:45
1445
原创 Tomcat
4.1 Tomcat服务器4.1.1Tomcat结构从图中可以很清楚的发现,Tomcat其实很模块化的。由于Tomcat更新很快,所以这里不深入到源码去研究了。简单的了解下各个组件的作用。1、Server这个Server就代表一个服务器,也就是Servlet容器。2、ServiceService由一个Engine和多个Connector组成,负责处理所有Connect
2016-05-20 11:06:38
373
原创 struts2
Struts2是一个MVC框架,其生命周期为从用户请求到服务器返回相应响应给用户端的过程中,核心原理是基于一系列过滤器。根据这张流程图,可以很清晰的看出struts2的运行方式。首先客户端向Action发送一个请求,通过配置文件将请求分配到对应的ActionProxy进行处理。ActionProxy把request传递给ActionInvocation依次调用action和intercepto
2016-05-20 11:05:56
264
原创 Spring
3.1 Spring3.1.1Ioc容器的实现1、Ioc容器和依赖反转模式控制反转:依赖对象的获得被反转了。有的人称之为依赖注入。我理解的是反转和注入其实是两个过程。许多应用程序是两个或者更多的类通过彼此组合彼此依赖才能实现业务逻辑的,使得每个对象都需要拥有与它所依赖的对象的引用。如果这个对象的引用获取靠自己实现,这将导致所写代码高度耦合而且很难测试。有了Ioc容器后这些依赖关系就可以
2016-05-20 11:05:18
952
1
原创 Web请求过程
2.1 B/S网络架构简述B / S网络结构是基于一个统一的应用层协议HTTP来交换数据,与用长连接交互模型的大部分C / S架构的应用程序不同的是,使用无状态的短连接的通信HTTP协议。典型地,一个请求完成数据交互,然后该通信连接被切断。当一个用户在浏览器里输入一个URL时,首先它会请求DNS把这个域名解析成对应的IP地址,然后根据这个IP地址在互联网上找到对应的服务器,向这个服务器发
2016-05-20 11:04:29
349
转载 java热部署及类加载
简介在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。对于某些大型的应用来说,每次的重启都需 要花费大量的时间成本。虽然 osgi 架构的出现,让模块重启成为可能,但是如果模块之间有调用关系的话,这样的操作依然会让应用出现短暂的功能性休克。本文将探索如何在不破坏
2016-05-01 21:44:12
1201
1
转载 常见服务器架构
作者:牛浩帆链接:http://www.zhihu.com/question/20657269/answer/15763722来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。初级篇:(单机模式)假设配置:(Dual core 2.0GHz,4GB ram,SSD)基础框架:apache(PHP) + Mysql / IIS + MS
2016-04-19 23:25:13
403
原创 java多线程深入理解
首先先看看这个问题,程序和进程有什么区别?我之前的理解是进程就是运行中的程序。但是读了操作系统后发现,其实进程是为了多道程序同时执行而引申出来的。因为操作系统同一时间只能运行一个程序(单cpu) 对于java来说,进程就是一个jvm。而线程就是一个Thread。当然jvm启动时还会启动很多线程,比如最熟悉的垃圾回收线程(应该是守护线程)。没有真正意义上的多线程,正如没有
2016-04-09 21:30:58
335
原创 JSP与Velocity的比较
JSP渲染机制:ServletContext根据path来找到对应的servlet,这个映射在mapper.map方法中完成。通过拓展名".jsp"来找到jspServlet对应的Warpper。接下来调用jspServlet的service方法。JSP在执行渲染时会被编译成一个java类,而这个类实际上也是一个servlet。上面代码中的类是JSP编译成java类的一个例子。
2016-04-06 23:38:32
6392
转载 订单系统水平分库的实践之路以及关键步骤
随着大型互联网应用的发展,海量数据的存储和访问成为系统设计的瓶颈,分布式处理成为不二选择。数据库拆分,特别是水平分库是个高难度的活,涉及一系列技术决策。本人有幸负责1号店订单水平分库的方案设计及实施落地,本人结合项目实践,对水平分库做一个系统地剖析,希望为大家水平分库(包括去IOE)改造提供总体思路,主要内容包括:水平分库说明分库维度-- 根据哪个字段分库
2016-03-27 11:35:34
2839
转载 什么叫MVCC
在并发读写数据库时,读操作可能会不一致的数据(脏读)。为了避免这种情况,需要实现数据库的并发访问控制,最简单的方式就是加锁访问。由于,加锁会将读写操作串行化,所以不会出现不一致的状态。但是,读操作会被写操作阻塞,大幅降低读性能。在java concurrent包中,有copyonwrite系列的类,专门用于优化读远大于写的情况。而其优化的手段就是,在进行写操作时,将数据copy一份,不会影响原有数
2016-03-20 20:47:32
420
原创 和为S的连续正数序列
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述:输出所有和为S的
2016-03-18 23:41:06
189
原创 和为S的两个数字
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述:对应每个测试案例,输出两个数,小的先输出。import java.util.ArrayList;public class Solution { public ArrayList FindNumbersWithS
2016-03-18 23:34:49
336
原创 构建乘积数组
题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。import java.util.ArrayList;public class Solution { public int[] multiply(int[] A
2016-03-18 23:33:12
190
原创 链表中环的入口结点
题目描述一个链表中包含环,请找出该链表的环的入口结点。/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution {
2016-03-18 23:32:02
151
原创 删除链表中重复的结点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5/* public class ListNode { int val; ListNode next = null; ListNode(int val) {
2016-03-18 23:20:08
234
原创 对称的二叉树
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val
2016-03-18 23:15:26
215
原创 二叉树的下一个结点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLin
2016-03-18 23:14:53
217
原创 Spring技术内幕-架构
Spring Ioc:定义了最基本的接口(BeanFactory),以及XmlBeanFactory等一系列的实现。还设计了IOC容器的高级形态ApplicationContext应用上下文供用户使用。Spring AOP:面向切片编程,让用户只关心某一个面去编程,而无需关心其它。归结到底就是一种功能的增强。Spring集成了AspectJ作为AOP的一个特定实现。同时还在JVM动态代
2016-03-18 15:44:55
258
原创 数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。public class Solution { public int InversePairs(int [] array) { if(array == null || array.length == 0 ||
2016-03-17 22:14:09
185
原创 二叉树的深度
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode
2016-03-17 22:13:36
190
原创 平衡二叉树
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。public class Solution { public boolean IsBalanced_Solution(TreeNode root) { if(root==null){ return true; } if(Math.abs(
2016-03-17 22:13:01
170
原创 丑数
题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。public class Solution { public int GetUglyNumber_Solution(int index) { if(index
2016-03-17 22:12:17
196
原创 连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?
2016-03-17 22:10:01
185
原创 数组中出现次数超过一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。public class Solution { public int MoreThanHalfNum_Solution(int [] array) {
2016-03-17 22:09:15
178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人