自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(288)
  • 资源 (3)
  • 论坛 (3)
  • 问答 (1)
  • 收藏
  • 关注

转载 金融级分布式架构,分布式系统数据层设计模式

2013 年 5 月,支付宝最后一台小型机下线,去 “IOE” 取得里程碑进展。支付宝(以及后来的蚂蚁金服)走的是一条跟传统金融行业不同的分布式架构之路。要基于普通硬件资源实现金融级的性能和可靠性,有不少难题要解决。应用层是无状态的,借助 SOA 架构还可以比较方便地扩展。而数据层就没那么简单了,蚂蚁金服在探索的过程中,积累了一些有用的数据层架构设计经验,还是非常模式化的,可以分享出来供参考。...

2019-04-28 00:58:29 1179

转载 偏向锁,轻量级锁,自旋锁,重量级锁的详细介绍

何为同步?JVM规范规定JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的实现细节不一样。代码块同步是使用monitorenter和monitorexit指令实现,而方法同步是使用另外一种方式实现的,细节在JVM规范里并没有详细说明,但是方法的同步同样可以使用这两个指令来实现。monitorenter指令是在编译后插入到同步代码块的开始位置,而monitorexit是插入到...

2018-10-29 12:09:20 357

转载 虚拟内存,虚拟内存地址,物理内存,物理内存地址

在解释第一个问题之前,先说明一下计算机内存管理的中的四个名词:虚拟内存,虚拟内存地址,物理内存,物理内存地址。先说说为什么会有虚拟内存和物理内存的区别。正在运行的一个进程,他所需的内存是有可能大于内存条容量之和的,比如你的内存条是256M,你的程序却要创建一个2G的数据区,那么不是所有数据都能一起加载到内存(物理内存)中,势必有一部分数据要放到其他介质中(比如硬盘),待进程需要访问那部分数据时,在

2018-04-02 17:43:49 3672

转载 java agent基础原理

本文重点讲述javaagent的具体实现,因为它面向的是我们java程序员,而且agent都是用java编写的,不需要太多的c/c++编程基础,不过这篇文章里也会讲到JVMTIAgent(c实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent。对于javaagent或许大家都听过,甚至使用过,常见的用法大致如下:java -javaagent:myagent.jar=mo

2018-04-02 13:28:20 1281 1

转载 JVMTI开发教程之一个简单的Agent

概述JVM TI是JDK提供的一套用于开发JVM监控, 问题定位与性能调优工具的通用编程接口(API)。通过JVMTI,我们可以开发各式各样的JVMTI Agent。这个Agent的表现形式是一个以c/c++语言编写的动态共享库。JVMTI Agent原理: java启动或运行时,动态加载一个外部基于JVM TI编写的dynamic module到Java进程内,然后触发JVM源生线程Attach...

2018-04-02 11:44:26 937

转载 Java实现流控-Semaphore

网上类似文章很多,不多说,直接上代码:[java] view plain copy/**  * 流控类(Semaphore实现)  *   * @author ln  *  */  public class FlowControl {        /**      * 最大访问量      */      private static final int MAX_ACCESS_COUNT = 2

2018-03-28 15:20:17 741

原创 缓存穿透,缓存失效(缓存雪崩)和缓存并发

缓存穿透: 通常缓存都是根据key去查找value,如果缓存中不存在,则去DB中查找,如果查找到了则将此key->value写入缓存。但是,对于某些一直不存在的数据,每次都无法在缓存中查找到,所以每次都要去DB中查找,DB中也找不到所以没法写入缓存,如此往复,便失去了缓存的意义。解决方法:对到DB中查询为空的情况也进行缓存,但是这个数据的缓存过期时间需要设置得短一点;将所有可能存在的数据根据key

2018-03-28 12:14:51 1539

转载 happens-before俗解

一直对happens-before和指令重排序存在误解甚至是不解,直到看到这篇文章。学习Java并发,到后面总会接触到happens-before偏序关系。初接触玩意儿简直就是不知所云,下面是经过一段时间折腾后个人对此的一点浅薄理解,希望对初接触的人有帮助。如有不正确之处,欢迎指正。synchronized、大部分锁,众所周知的一个功能就是使多个线程互斥/串行的(共享锁允许多个线程同时访问,如读锁

2018-03-27 20:47:32 211

转载 Linux 的硬链接与软链接

Linux 的文件与目录现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。在 UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式。换言之,UNIX 系统中除进程之外的一切皆是文件,而 Linux 保持了这一特性。为了便于文件的管理,L

2018-03-19 16:35:27 352

转载 大话keepalive

大话keepalive我们说到keepalive的时候,需要先明确一点,这个keepalive说的是tcp的还是http的。tcp的keepalive是侧重在保持客户端和服务端的连接,一方会不定期发送心跳包给另一方,当一方端掉的时候,没有断掉的定时发送几次心跳包,如果间隔发送几次,对方都返回的是RST,而不是ACK,那么就释放当前链接。设想一下,如果tcp层没有keepalive的机制,一旦一方断

2018-03-08 14:28:59 222

转载 mapreduce入门

一、mapreduce入门  1、什么是mapreduce     首先让我们来重温一下 hadoop 的四大组件:HDFS:分布式存储系统MapReduce:分布式计算系统YARN: hadoop 的资源调度系统Common: 以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等Mapreduce 是一个分布式运算程序的编程框架,是用户开发“基于 hadoop 的数据分析 应用”的核

2017-12-14 20:15:10 1335

原创 linux下查看某一端口被哪个进程占用

方法1: lsof命令,即ls open fileslsof -i:端口号例如: 方法2: netstat命令netstat -tunpl | grep 端口号例如:

2017-12-14 16:35:22 51863

原创 Docker和虚拟机的区别

这是docker官网的图,可以看到虚拟化技术通过Hypervisor(虚拟机管理系统)为每个app启动一个Guest OS(客户机操作系统),也就是为每个app启动一个虚拟机。比较直观地说,vm通过Hypervisor对硬件资源进行虚拟化,而docker直接使用硬件资源,利用率上来看docker明显更具有优势。  上一组从知乎上看到的图:      可以看到,容器隔离的粒度更加小一点,而且多

2017-12-01 11:51:56 34242 1

原创 Linux下$#,$0,$1,$2,$3,$@,$*,$$,$?代表的含义

$# :传给脚本的参数个数;$0 :脚本名称;$n :n为数字,代表传给脚本的第n个参数;$@ :参数列表;$* :也是显示参数列表,与上一条命令不同的是,当在双引号里面时,”$*”表示一个参数,即”a b c”,而”$@”表示三个参数,即”a” “b” “c”;$$ :执行当前脚本的进程ID;$? :最后一条命令的退出状态,0表示执行成功,非0表示执行失败.示例: 建立一个脚本te

2017-11-29 14:11:17 7965

转载 进程间切换与线程间切换的区别

进程切换分两步1.切换页目录以使用新的地址空间2.切换内核栈和硬件上下文。对于linux来说,线程和进程的最大区别就在于地址空间。对于线程切换,第1步是不需要做的,第2是进程和线程切换都要做的。所以明显是进程切换代价大线程上下文切换和进程上下文切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的

2017-10-10 19:44:01 5207

转载 二进制乘除法的实现

转自:http://www.cnblogs.com/zuoxiaolong/p/computer10.html引言   运算一直是程序运行当中一个重要的环节,而在二进制的运算过程当中,加法运算又是重中之重,它基本上奠定了二进制运算的基础。因为无论是减法还是乘法,都可以由加法运算来替代,唯有除法不能由加法替代。  了解计算机运算的规律,可以有助于我们理解很多程序代码上无法理解的内容。比如上章提到的溢

2017-09-25 11:49:20 30728

原创 Ubuntu异常关机后无法启动图形界面,提示 Welcome to emergency mode...的解决方法

输入密码登录root账户;执行命令 journalctl -xb 查看日志输出,搜索关键字”fsck failed”(输入/,然后输入关键字后回车,通过N/n查看上一个/下一个匹配项),找到错误相关的设备,例如我的是/dev/sda8;执行命令 umount /dev/sda8 (对应自己出错的设备)卸载设备;执行命令 fsck -y /dev/sda8 执行fsck校验并修复文件;执行命令

2017-09-25 11:05:56 10737 2

原创 22. Generate Parentheses(生成括号)

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:[ "((()))", "(()())", "(())()", "()(())", "

2017-09-21 20:39:48 1206 1

原创 18. 4Sum(求数组中和为指定值的4个数)

Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.Note: The solution set m

2017-09-20 22:27:20 1120

原创 17. Letter Combinations of a Phone Number(根据手机按键求字母的组合)

Given a digit string, return all possible letter combinations that the number could represent.A mapping of digit to letters (just like on the telephone buttons) is given below.Input:Digit string "23"

2017-09-19 11:48:55 1018

原创 16. 3Sum Closest(找出和最接近给定值的三个数)

Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly

2017-09-18 19:55:31 1293

原创 15. 3Sum(求数组中和为0的3个数)

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note: The solution set must not contain dupli

2017-09-13 20:27:20 1561

转载 java方法调用之动态调用多态(重写override)的实现原理——方法表

转自:http://blog.csdn.net/fan2012huan/article/details/51007517上两篇篇博文讨论了java的重载(overload)与重写(override)、静态分派与动态分派,这篇博文讨论下动态分派的实现方法,即多态override的实现原理。 java方法调用之重载、重写的调用原理(一) java方法调用之单分派与多分派(二)本文大部分内容来自于IBM

2017-09-11 20:21:02 910

转载 JVM方法调用的那些事

转自:http://www.jianshu.com/p/56a7c4b26b14前言Java具备三种特性:封装、继承、多态。Java文件在编译过程中不会进行传统编译的连接步骤,方法调用的目标方法以符号引用的方式存储在Class文件中,这种多态特性给Java带来了更灵活的扩展能力,但也使得方法调用变得相对复杂,需要在类加载期间,甚至到运行期间才能确定目标方法的直接引用。方法调用所有方法调用的目标方法

2017-09-11 18:08:37 308

转载 泛型的内部原理:类型擦除以及类型擦除带来的问题

一、Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)。Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉。这个过程就称为

2017-09-08 16:34:34 756 1

原创 11. Container With Most Water(求能装最多水的容器)

Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two

2017-09-08 10:27:25 1232

原创 5. Longest Palindromic Substring(求最长回文子字符串)

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example:Input: "babad"Output: "bab"Note: "aba" is also a valid answer.

2017-09-05 19:40:54 781

原创 3. Longest Substring Without Repeating Characters(计算不含重复字符的最长子串的长度)

Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "

2017-09-05 18:02:48 1007 2

转载 Java中的阻塞队列

1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。阻塞队列提供了四种处理方法:方法\处理方...

2017-09-01 19:48:42 298

转载 Lambda表达式简介

原文链接: Start Using Java Lambda Expressions下载示例程序 Examples.zip 。原文日期: 2014年4月16日翻译日期: 2014年4月27日翻译人员: 铁锚简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。

2017-08-31 17:54:08 335

原创 Elasticsearch初体验

Elasticsearch是一个分布式的RESTful风格的搜索和数据分析引擎。个人理解的Elasticsearch和传统的关系型数据库的最大区别在于,它不仅可以结构化搜索,还可以进行全文检索以及对数据进行分析。这篇文章简单地介绍一下如何在linux环境下通过curl命令完成Elasticsearch RESTful API功能。      一个 Elasticsearch 请求和任何 HTTP

2017-08-30 16:21:26 375

原创 Eclipse中Access restriction: The type ‘XXX’ is not API 解决

报此错误只需将jre由jdk路径下的jre改为外部的jre即可,具体做法为:Project -> Properties -> Java Build Path -> Libraries,选中JRE System Library,然后Remove。再点击Add Library -> JRE System Library -> next,选择Alternatie JRE,点击Installe

2017-08-07 19:15:36 8763 4

转载 从Java文件到字节码文件

本文涉及的javac编译器来自openjdk.javac的目录地址为:解压目录/langtools/src/share/classes/com/sun/tools/javac/javac编译器将Java编译成为一个有效的字节码文件会经历4个步骤:词法解析:将Java关键字排序,使得程序能有序运行。语法解析:词法解析后的Token序列整合为一颗抽象的语法树。语义解析:将抽象语

2017-08-07 14:53:27 1568

原创 eclipse找不到tools.jar下的内容的解决方法

今天想在eclipse中通过Ctrl+Shift+T打开JCTree这个类,发现找不到,原来是因为tools.jar这个包都没有打进来。  解决方法是:在Project Explorer中点击右键,然后依次选择Properties -> Java Build Path -> Libraries,选中JRE System Library,然后点击Edit -> Installed JRE

2017-08-06 22:24:59 16501 4

原创 2. Add Two Numbers (两数求和)

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return i

2017-07-13 00:30:16 551

转载 Dapper,大规模分布式系统的跟踪系统

概述当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。Dapper--Google生产环境下的分布式跟踪系统,应运而生。那么我们就来介绍一个

2017-05-26 17:35:01 616

转载 git reset soft,hard,mixed之区别深解

GIT reset命令,似乎让人很迷惑,以至于误解,误用。但是事实上不应该如此难以理解,只要你理解到这个命令究竟在干什么。首先我们来看几个术语HEAD这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交Indexindex也被称为staging area,是指一整套即将被下一个提交的文件集合。他也是将成为HEAD的父亲的那个commitWor

2017-05-10 10:17:52 1177

转载 Java中的注解是如何工作的?

自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解。这篇文章中,我将向大家讲述到底什么是注解,为什么要引入注解,注解是如何工作的,如何编写自定义的注解(通过例子),什么情况下可以使用注解以及最新注解和ADF(应用开发框架)。这会花点儿时间,所以为自己准备一杯咖啡,让我们来进入注

2017-05-04 17:18:13 602

转载 图片理解数字签名和验签过程

数字签名是什么?1.鲍勃(服务器)有两把钥匙,一把是公钥,另一把是私钥。2.鲍勃把公钥送给他的朋友们----帕蒂(客户端1)、道格(客户端2)、苏珊(客户端3)----每人一把。3.苏珊(客户端3)给鲍勃(服务器)写信,写完后用鲍勃的公钥加密,达到保密的效果。4.鲍勃收信后,用私钥解密,看到信件内容。

2017-04-26 23:32:35 13600 6

转载 HTTP 协议漫谈

简介网络上已经有不少介绍HTTP的的好文章。对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲解。HTTP的定义和历史在一个网络中。传输数据需要面临三个问题:1.客户端如何知道所求内容的位置?2.当客户端知道所求内容的位置后,如何获取所求内容?3.所求内容以何种形式组织

2017-04-19 09:44:34 620

Git-2.11.0-64-bit.exe

Git安装程序,2.11.0版本,64位

2017-01-07

mybatis-generator-core-1.3.2.jar 

通过数据表逆向生成po,映射文件和mapper接口

2017-01-05

maven核心程序apache-maven-3.3.9-bin

maven核心程序,版本为3.3.9,可以配合最新版的eclipse4.6.1使用,可以指定通过maven创建的工程的jdk版本为1.8

2017-01-02

Alan_Xiang的留言板

发表于 2020-01-02 最后回复 2020-01-02

为什么Java中子类对象和父类对象的hashcode相同?

发表于 2016-09-19 最后回复 2017-04-16

shiro怎么实现普通用户和管理员的分开验证

发表于 2017-01-30 最后回复 2017-02-01

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

TA关注的人 TA的粉丝

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