自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

2019-04-28 00:58:29 800 0

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

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

2018-10-29 12:09:20 277 0

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

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

2018-04-02 17:43:49 2712 0

转载 java agent基础原理

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

2018-04-02 13:28:20 972 0

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

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

2018-04-02 11:44:26 793 0

转载 Java实现流控-Semaphore

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

2018-03-28 15:20:17 648 0

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

缓存穿透: 通常缓存都是根据key去查找value,如果缓存中不存在,则去DB中查找,如果查找到了则将此key->value写入缓存。但是,对于某些一直不存在的数据,每次都无法在缓存中查找到,所以每次都要去DB中查找,DB中也找不到所以没法写入缓存,如此往复,便失去了缓存的意义。解决方法:对...

2018-03-28 12:14:51 1273 0

转载 happens-before俗解

一直对happens-before和指令重排序存在误解甚至是不解,直到看到这篇文章。学习Java并发,到后面总会接触到happens-before偏序关系。初接触玩意儿简直就是不知所云,下面是经过一段时间折腾后个人对此的一点浅薄理解,希望对初接触的人有帮助。如有不正确之处,欢迎指正。synchro...

2018-03-27 20:47:32 199 0

转载 Linux 的硬链接与软链接

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

2018-03-19 16:35:27 326 0

转载 大话keepalive

大话keepalive我们说到keepalive的时候,需要先明确一点,这个keepalive说的是tcp的还是http的。tcp的keepalive是侧重在保持客户端和服务端的连接,一方会不定期发送心跳包给另一方,当一方端掉的时候,没有断掉的定时发送几次心跳包,如果间隔发送几次,对方都返回的是R...

2018-03-08 14:28:59 197 0

转载 mapreduce入门

一、mapreduce入门  1、什么是mapreduce     首先让我们来重温一下 hadoop 的四大组件:HDFS:分布式存储系统MapReduce:分布式计算系统YARN: hadoop 的资源调度系统Common: 以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等Ma...

2017-12-14 20:15:10 1138 0

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

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

2017-12-14 16:35:22 37860 0

原创 Docker和虚拟机的区别

这是docker官网的图,可以看到虚拟化技术通过Hypervisor(虚拟机管理系统)为每个app启动一个Guest OS(客户机操作系统),也就是为每个app启动一个虚拟机。比较直观地说,vm通过Hypervisor对硬件资源进行虚拟化,而docker直接使用硬件资源,利用率上来看docker明...

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

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

$# :传给脚本的参数个数; $0 :脚本名称; $n :n为数字,代表传给脚本的第n个参数; $@ :参数列表; $* :也是显示参数列表,与上一条命令不同的是,当在双引号里面时,”$*”表示一个参数,即”a b c”,而”$@”表示三个参数,即”a” “b” “c”; $$ :执行当前脚本的...

2017-11-29 14:11:17 6735 0

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

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

2017-10-10 19:44:01 4000 0

转载 二进制乘除法的实现

转自:http://www.cnblogs.com/zuoxiaolong/p/computer10.html引言   运算一直是程序运行当中一个重要的环节,而在二进制的运算过程当中,加法运算又是重中之重,它基本上奠定了二进制运算的基础。因为无论是减法还是乘法,都可以由加法运算来替代,唯有除法不能...

2017-09-25 11:49:20 25065 0

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

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

2017-09-25 11:05:56 9052 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 1144 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 whi...

2017-09-20 22:27:20 1059 0

原创 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 telepho...

2017-09-19 11:48:55 985 0

原创 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...

2017-09-18 19:55:31 1037 0

原创 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...

2017-09-13 20:27:20 1440 0

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

转自:http://blog.csdn.net/fan2012huan/article/details/51007517上两篇篇博文讨论了java的重载(overload)与重写(override)、静态分派与动态分派,这篇博文讨论下动态分派的实现方法,即多态override的实现原理。 java...

2017-09-11 20:21:02 737 0

转载 JVM方法调用的那些事

转自:http://www.jianshu.com/p/56a7c4b26b14前言Java具备三种特性:封装、继承、多态。Java文件在编译过程中不会进行传统编译的连接步骤,方法调用的目标方法以符号引用的方式存储在Class文件中,这种多态特性给Java带来了更灵活的扩展能力,但也使得方法调用变...

2017-09-11 18:08:37 282 0

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

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

2017-09-08 16:34:34 578 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 endp...

2017-09-08 10:27:25 1174 0

原创 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"...

2017-09-05 19:40:54 743 0

原创 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 &quo...

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

转载 Java中的阻塞队列

1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。...

2017-09-01 19:48:42 285 0

转载 Lambda表达式简介

原文链接: Start Using Java Lambda Expressions 下载示例程序 Examples.zip 。 原文日期: 2014年4月16日 翻译日期: 2014年4月27日 翻译人员: 铁锚 简介 (译者注:虽然看着很先进,其实Lambda表达式的本质...

2017-08-31 17:54:08 320 0

原创 Elasticsearch初体验

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

2017-08-30 16:21:26 347 0

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

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

2017-08-07 19:15:36 6250 3

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

本文涉及的javac编译器来自openjdk. javac的目录地址为:解压目录/langtools/src/share/classes/com/sun/tools/javac/ javac编译器将Java编译成为一个有效的字节码文件会经历4个步骤: 词法解析:将Java关键字排...

2017-08-07 14:53:27 1322 0

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

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

2017-08-06 22:24:59 14474 3

原创 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 conta...

2017-07-13 00:30:16 517 0

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

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

2017-05-26 17:35:01 584 0

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

GIT reset命令,似乎让人很迷惑,以至于误解,误用。但是事实上不应该如此难以理解,只要你理解到这个命令究竟在干什么。 首先我们来看几个术语 HEAD 这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交 Index index也被称为staging ar...

2017-05-10 10:17:52 1074 0

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

自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解。这篇文章中,我将向大家讲述到底什么是注解,为什么要引入注解,注解是如何工作的,如何编写自定义的注解(通过例子),什么情况下可...

2017-05-04 17:18:13 462 0

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

数字签名是什么? 1. 鲍勃(服务器)有两把钥匙,一把是公钥,另一把是私钥。 2. 鲍勃把公钥送给他的朋友们----帕蒂(客户端1)、道格(客户端2)、苏珊(客户端3)----每人一把。 3. 苏珊(客户端3)给鲍勃(服务器)写信,写完后...

2017-04-26 23:32:35 12443 5

转载 HTTP 协议漫谈

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

2017-04-19 09:44:34 602 0

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