- 博客(244)
- 资源 (17)
- 收藏
- 关注
转载 深入理解wait/notify/notifyAll的作用
notify: 唤醒在监视器对象上等待的单个线程,此时调用该方法的代码继续执行。notifyAll: 唤醒在监视器对象上等待的所有线程,此时调用该方法的代码继续执行。第一、为什么会有wait/notify/notifyAll这几个方法?(1) wait/notify/notifyAll是为了避免轮询(尝试执行)带来的性能损失,这句话是什么意思?看下面的讲解:为了说清道理,我们用“图书馆借书...
2018-09-12 10:26:13
2416
3
转载 分布式理论(3):Paxos Made Simple
作者:LESLIE LAMPORT 2001 译者:phylips@bmy 2011-4-30出处:http://duanple.blog.163.com/blog/static/709717672011440267333/ [序:在PODC2001会议上,我总是听到人们在抱怨paxos算法是那么的难以理解。人们总是被那些古希腊的名称弄得晕头转向,而使得他们觉得论文难以理解,实际上算法...
2018-08-22 17:25:54
427
转载 How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs
作者:Leslie Lamport 1979原文:make-multiprocessor-computer-correctly-executes-multiprocess-programs译者:phylips@bmy 2018-03-24译文:http://duanple.blog.163.com/blog/static/70971767201822515346732/ 高...
2018-08-21 17:11:03
638
转载 线性一致性理论
Jepsen(项目主页)是开源的分布式测试框架,基于Clojure语言,支持各种错误注入。目前广泛应用在各种分布式系统的测试中,尤其是一致性协议实现的测试中。Jepsen测试中支持验证系统的线性一致性,关于线性一致性,中文的介绍非常少,目前网上能搜到的大概只有tidb(一个创业公司PingCAP研发的分布式数据库)的一篇Linearizability 一致性验证。要理解理论,最好的方法还是直接...
2018-08-21 17:01:25
3265
2
转载 分布式事务之两阶段提交
作者:Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman. 1987原文:Concurrency Control and Recovery in Database Systems译者:phylips@bmy 2013-02-14译文:http://duanple.blog.163.com/blog/static/70971767...
2018-08-21 10:11:29
590
原创 mysql查询死锁的方法
SELECT * FROM test.user;use test;SET SQL_SAFE_UPDATES=0;SET AUTOCOMMIT=0;update user set desc2 = ( case when age = 6 and name='a' then 'haeeohaoh' when age = 564 and name='r' then 'eekeyi...
2018-08-10 15:37:51
339
转载 一次Mysql死锁排查过程的全纪录
前言之前接触到的数据库死锁,都是批量更新时加锁顺序不一致而导致的死锁,但是上周却遇到了一个很难理解的死锁。借着这个机会又重新学习了一下mysql的死锁知识以及常见的死锁场景。在多方调研以及和同事们的讨论下终于发现了这个死锁问题的成因,收获颇多。虽然是后端程序员,我们不需要像DBA一样深入地去分析与锁相关的源码,但是如果我们能够掌握基本的死锁排查方法,对我们的日常开发还是大有裨益的。PS:本...
2018-08-09 18:42:50
220
转载 高性能队列——Disruptor
转载地址:https://tech.meituan.com/disruptor.html背景Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Martin...
2018-08-08 11:43:08
311
转载 如何快速实现高并发短文检索
转载地址:https://mp.weixin.qq.com/s/uCx0VUKzvagPVTpjy7Co1w一、需求缘起某并发量很大,数据量适中的业务线需要实现一个“标题检索”的功能:(1)并发量较大,每秒20w次(2)数据量适中,大概200w数据(3)是否需要分词:是(4)数据是否实时更新:否 二、常见潜在解决方案及优劣(1)数据库搜索法具体方法:将标题数...
2018-07-18 16:03:30
265
原创 红黑树
/** From CLR 新增一个节点之后需要修正树的结构*/ private void fixAfterInsertion(Entry<K,V> x) { x.color = RED;//默认置成红色,这样做为了把问题简单化,可以考虑尽量少的情况 while (x != null && x != root &...
2018-07-18 09:57:25
197
转载 AOP的实现机制
原文地址:http://www.iteye.com/topic/11166961 AOP各种的实现 AOP就是面向切面编程,我们可以从几个层面来实现AOP。 在编译器修改源代码,在运行期字节码加载前修改字节码或字节码加载后动态创建代理类的字节码,以下是各种实现机制的比较。 类别 机制 原理 ...
2018-07-17 08:48:18
398
原创 一致性hash算法
package arithmetic;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.SortedMap;import java.util.TreeMap;/** * 一致性hash算法 * 类名称: ConsistentHash * 类描述: ...
2018-07-10 10:51:19
203
原创 分布式系统的Raft算法
文章地址:https://www.jdon.com/artichect/raft.html演示地址:http://thesecretlivesofdata.com/raft/
2018-07-03 15:31:09
293
原创 jdk8 hashcode 扰动函数
static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }
2018-07-03 10:10:16
1129
转载 字符串匹配算法之:有限状态自动机
阅读博客的朋友可以参看视频: 如何进入google,算法面试技能全面提升指南什么叫有限状态自动机先看一个图: 上面这个图描述的就叫一个有限状态自动机,图中两个圆圈,也叫节点,用于表示状态,从图中可以看成,它有两个状态,分别叫0和1. 从每个节点出发,都会有若干条边,当处于某个状态时,如果输入的字符跟该节点出发的某条边的内容一样,那么就会引起状态的转换。例如,如果当前状态处于0,输入是字符a,那么状...
2018-06-28 10:23:25
1432
原创 lucene 分配数组大小 (newSize + 1) & 0x7ffffffe
public static int oversize(int minTargetSize, int bytesPerElement) { if (minTargetSize < 0) { // catch usage that accidentally overflows int throw new IllegalArgumentException("inval...
2018-06-28 10:17:51
373
原创 netty源码之 DefaultEventExecutorChooserFactory 之2的整数次幂设计
package io.netty.util.concurrent;import io.netty.util.internal.UnstableApi;import java.util.concurrent.atomic.AtomicInteger;/** * Default implementation which uses simple round-robin to choose next {@...
2018-06-01 09:37:30
489
原创 使用Maven构建多模块项目
第一步:创建spring-code-test,用来给各个子模块继承。mvn archetype:generate -DgroupId=me.gacl -DartifactId=spring-code-test -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false注:maven3.0.5以上版本舍弃了crea...
2018-05-06 11:33:16
232
转载 理解分布式id生成算法SnowFlake
分布式id生成算法的有很多种,Twitter的SnowFlake就是其中经典的一种。概述SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图:1位,不用。二进制中最高位为1的都是负数,但是我们生成的id一般都使用整数,所以这个最高位固定是041位,用来记录时间戳(毫秒)。41位可以表示241−1个数字,如果只用来表示正整数(计算机中...
2018-05-03 10:33:50
475
转载 如何通俗易懂地解释卷积?
作者:鱼腻链接:https://www.zhihu.com/question/22298352/answer/91131073来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。关于卷积的一个血腥的讲解比如说你的老板命令你干活,你却到楼下打台球去了,后来被老板发现,他非常气愤,扇了你一巴掌(注意,这就是输入信号,脉冲),于是你的脸上会渐渐地(贱贱地)鼓起来一个包,你的脸就...
2018-04-26 16:44:31
215
转载 sku组合查询算法探索
在前端领域,很少会遇到算法问题,这不能说不是一种遗憾。不过,随着前端处理的任务越来越复杂和重要,偶尔,也能遇到一些算法上的问题。本文,所要讨论的,就是这样一样问题。什么是SKU问题来自垂直导购线周会的一次讨论,sku组合查询,这个题目比较俗,是我自己取得。首先,看下什么是sku,来自维基百科的解释:最小存货单位(Stock Keeping Unit)在连锁零售门店中有时称单品为一个SKU,定义为保...
2018-04-16 09:05:40
2477
转载 谈谈HTML5本地存储——WebStorage
浏览器本地存储概述 简介 cookie cookie是指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。webStorage webStorage是HTML5中本地存储的解决方案之一,包括sessionStorag和localStorage,两者差别就差在生命周期的不同而已。三者对比 类型 生命周期 存储大小 与服务器通信 作用域 Cookie 一...
2018-04-16 08:42:28
348
转载 jQuery除指定区域外点击任何地方隐藏DIV功能
$('body').click(function(e) { var target = $(e.target); // 如果#overlay或者#btn下面还有子元素,可使用 // !target.is('#btn *') && !target.is('#overlay *') if(!target.is('#btn') && !target.is('#ove...
2018-04-16 08:41:07
3351
原创 第11课:彻底解析wordcount运行原理
本期内容:1. 从数据流动视角解密WordCount,即用Spark作单词计数统计,数据到底是怎么流动的。2. 从RDD依赖关系的视角解密WordCount。Spark中的一切操作皆RDD,后面的RDD对前面的RDD有依赖关系。3. DAG与Lineage的思考。依赖关系会形成DAG。1. 从数据流动视角解密WordCount(1)在IntelliJ IDEA中编写下面代码:package com...
2018-03-04 10:49:09
505
原创 怎样理解spark中的partition和block的关系
一、hdfs中的block是分布式存储的最小单元,类似于盛放文件的盒子,一个文件可能要占多个盒子,但一个盒子里的内容只可能来自同一份文件。假设block设置为128M,你的文件是250M,那么这份文件占3个block(128+128+2)。这样的设计虽然会有一部分磁盘空间的浪费,但是整齐的block大小,便于快速找到、读取对应的内容。(p.s. 考虑到hdfs冗余设计,默认三份拷贝,实际上3*3=...
2018-03-04 09:42:57
1046
转载 2017 最新java面试题(技术面试)
1、servlet执行流程客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器解析url并根据web.xml找到相对应的servlet,并将request、response对象传递给找到的servlet,servlet根据request就可以知道是谁发出的请求,请求信息及其他信息,当servlet处理完业务逻辑后会将信息放入到response并响应到客户端。2、s...
2018-03-02 11:44:17
345
转载 Java常量池(静态常量池与运行时常量池)
1、什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。 1)所谓静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。 ...
2018-03-02 11:12:50
31340
22
转载 点餐系统——数据库设计
一、 数据库设计1.用户表 字段字段类型字段描述备注U_IDInt 主键、自增U_LoginIDVarchar(20)(登陆账号)电话号码U_Ni
2017-12-08 14:04:28
23063
转载 ySQL性能优化的21个最佳实践和mysql使用索引
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过 多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。
2017-12-05 16:19:29
594
转载 java之yield(),sleep(),wait()区别详解
1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行
2017-12-01 16:20:11
166
原创 JVM 指令中单词的缩写
bipush : byte immediate pushsipush : short immediate pushldc : load constant
2017-11-30 14:03:22
648
转载 KMP,深入讲解next数组的求解
前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k;但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导论,32章 字符串匹配虽然讲到了对前后缀计算的正确性,但是大量的推理证明不大好理解,没有与程序结合起来讲。今天我在这里讲一讲我的一些理解,希望大家多多指教,如果有不清楚的或错误的请给我留言。
2017-11-19 10:55:35
314
转载 Java内部类详解
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正。 请尊重作
2017-11-17 18:08:43
190
转载 有向图的拓扑排序算法JAVA实现
一,问题描述给定一个有向图G=(V,E),将之进行拓扑排序,如果图有环,则提示异常。要想实现图的算法,如拓扑排序、最短路径……并运行看输出结果,首先就得构造一个图。由于构造图的方式有很多种,这里假设图的数据存储在一个文件中,每一行包含如下的信息:LinkID,SourceID,DestinationID,Cost其中,LinkID为该有向边的索引,SourceID为该有向边的起
2017-11-17 09:47:42
1282
转载 数据结构--图 的JAVA实现(下)
在上一篇文章中记录了如何实现图的邻接表。本文借助上一篇文章实现的邻接表来表示一个有向无环图。1,概述图的实现与邻接表的实现最大的不同就是,图的实现需要定义一个数据结构来存储所有的顶点以及能够对图进行什么操作,而邻接表的实现重点关注的图中顶点的实现,即怎么定义JAVA类来表示顶点,以及能够对顶点进行什么操作。为了存储图中所有的顶点,定义了一个Map,实际实现为LinkedHashMap>
2017-11-16 17:17:32
239
转载 数据结构--图 的JAVA实现(上)
1,摘要:本系列文章主要学习如何使用JAVA语言以邻接表的方式实现了数据结构---图(Graph),这是第一篇文章,学习如何用JAVA来表示图的顶点。从数据的表示方法来说,有二种表示图的方式:一种是邻接矩阵,其实是一个二维数组;一种是邻接表,其实是一个顶点表,每个顶点又拥有一个边列表。下图是图的邻接表表示。从图中可以看出,图的实现需要能够表示顶点表,能够表示边表。邻接表指是的哪部分呢?
2017-11-16 15:23:15
511
转载 图的存储结构-十字链表和邻接多重表
1、十字链表对于有向图来说,邻接表是有缺陷的。关心了出度问题,想了解入度就必须要遍历整个图才能知道。反之,逆邻接表解决了入度却不了解出度的情况。有没有可能把邻接表和逆邻接表结合起来呢?答案是肯定的,就是把它们整合在一起。这种存储有向图的方法是:十字链表(Orthogonal List).我们重新定义顶点表结点结构为:datafirstinfirstout
2017-11-16 14:12:51
638
转载 Java之深入JVM(3) - 由一个栈溢出的问题看Java类和对象的初始化
今天,在一个群里面有网友问到这样一个问题,以下代码被调用运行时为何会造成栈溢出(StackOverflowError)的错误:public class Constructor { Constructor c = new Constructor(); public static void main(String[] args) { Constructor tes
2017-11-15 16:28:48
200
转载 Java之深入JVM(1) - 由i++ 和 ++i的执行速度所想到的
i++++i i-=-1i+=1 以上的四句代码,问那句的执行速度更快?对于C/C++程序员来说,可能首先想到的就是i++和++i要比其他两者要快一些,但是在Java中是不是这样的呢?我们可以对他进行一些分析,首先当然想到的是对这些语句利用Java的System.currentTimeMillis()计算单个语句运行很多次(如10亿次)后
2017-11-15 16:05:51
499
spring .jar
2013-02-24
aliedit.exe
2013-02-24
commons-logging.jar
2013-02-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人