自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 不推荐使用redis分布式锁

目前比较主流的分布式锁有两种选择:一种是使用redis集群做分布式锁,另外一种是使用zookeeper,这两种分布式锁有着各自的特点,但是在技术选型上,我还是推荐使用zookeeper来做分布式锁,至于为什么不推荐redis集群来做分布式锁,我会在下面阐述。预备知识CAP理论Consistency 一致性一致性指“all nodes see the same data at...

2018-08-25 17:22:55 5686 3

原创 zookeeper中watch事件

zookeeper中watch监听事件如图主要是KeeperState.SyncConnected 中几种事件类型:EventType.NodeCreated : 节点创建事件类型EventType.NodeDeleted : 节点被删除EventType.NodeDataChanged : 节点被修改EventType.None : 客户端与服务器成功建立会话EventTy...

2018-08-01 22:15:06 13305

原创 fork和vfork

fork函数fork函数为了创建新的子进程,fork函数被执行一次,但是返回值有两个,一个在父进程中返回,一个在子进程中返回,返回值在子进程中是0, 在父进程中是创建的子进程的PID, 在父进程中返回子进程的PID的原因是, 一个父进程可以有多个子进程, 然而没有方法通过其他方式获取子进程的PID, 为了对子进程有控制权, 所以在父进程中返回子进程的PID, fork出来的子进程会拷贝父进程的...

2018-07-07 23:05:29 1100 2

原创 redis 持久化

redis 持久化Redis 提供了多种不同级别的持久化方式:RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 A...

2018-07-05 19:34:15 252

原创 Unix中file descriptor

最近一直在考研复习中,很久都没有写博客了,虽然考研复习也很紧张,但是每天9点回宿舍还是去看一点书的,最近就在看APUE(Unix高级环境编程)。今天主要写一写Unix中的文件描述符,在Unix file IO中我们对文件读写等一系列操作,都是通过文件描述符来进行的,文件描述符通常是一个非负数int型,简称fd,不同于Unix标准IO库函数,Unix标准IO库函数是通过File Stream来操...

2018-06-10 21:44:49 727

原创 spring上下文和springMVC上下文的关系

在tomcat部署一个用SSM搭起来的项目,一般会有两个上下文容器,分别是spring和SpringMVC的容器,在spring中一个容器是可以有父容器的,那么spring的容器和SpringMVC的容器关系是怎么样的。 先看tomcat中的web.xml配置文件spring的上下文:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="htt

2017-12-05 14:02:04 8334 3

原创 es 聚集整理

最近学习es聚集,聚集的类型和内容有点多,所以做一下整理目录:度量聚集统计数据(stats)高级统计(extended stats)近似统计(percentitles、percentile_ranks、cardinality)多桶型聚集词条聚集(terms)范围聚集(rank)直方图聚集(histogram)嵌套聚集(nested)地理距离聚集(geo distan...

2018-12-22 17:38:49 893

原创 记录一次elasticsearch debug过程

这两天一直捣鼓es,homebrew安装在mac上然后看文档熟悉相关概念,然后照着官方demo写下es第一行代码,然而第一行代码就卡壳了。问题在mac上配置好es,并启动,curl了一下完全ojbk,然后想通过Java api方式来连接es master节点来做一些基础不能再基础的CRUD,照着官方demo手打(Control C,Control V)了一遍,0 error 0 warning...

2018-12-06 15:51:12 1630

转载 IO模型

转载自:http://zhuanlan.51cto.com/art/201701/528404.htm IO模型用一幅图表示所支持的I/O模型纵向维度是“阻塞(Blocking)”、“非阻塞(Non-blocking)”;横向维度是“同步”、“异步”。总结起来是四种模型同步阻塞、同步非阻塞;异步阻塞、异步非阻塞。《Unix网络编程》中划分出了“第五种”模型——“...

2018-09-17 14:31:02 321

转载 CAP理论

2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。无论你是一个系统架构师,还是一个普通开发,当你开发或者设计一个分布式系统的时候,...

2018-09-17 14:30:01 1417

原创 Mac下redis启动连接命令

Mac 下redis启动命令 redis-server Mac 下redis连接 redis-cli

2018-08-12 14:31:32 4536

转载 一致性HASH算法

转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179&nbsp; &nbsp; 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正...

2018-08-08 14:09:40 276

原创 最长公共子串

最长公共子串可以使用字符串后缀法,后缀数组是一种数据结构,对一个字符串生成相应的后缀数组后,然后再排序,排完序依次检测相邻的两个字符串的开头公共部分。 这样的时间复杂度为:生成后缀数组 O(N),排序 O(NlogN*N) 最后面的 N 是因为字符串比较也是 O(N) 依次检测相邻的两个字符串 O(N * N),总的时间复杂度是 O(N^2*logN),优于第一种方法的 O(N^3)。java...

2018-08-06 22:37:49 293

原创 快速排序

最近在看排序算法,对快速排序在复习一下,快速排序的平均复杂度为O(N*logN),最坏复杂度为O(N*logN),java代码如下:public class QuickSort { public static void quickSort(int[] a, int l, int r) { if (l &amp;lt; r) { int i = l,...

2018-08-06 16:25:34 197

转载 apache kafka系列之在zookeeper中存储结构

转载自:http://blog.csdn.net/lizhitao/article/details/23744675 1.topic注册信息/brokers/topics/[topic] :存储某个topic的partitions所有分配信息Schema:...

2018-07-30 23:00:46 212

原创 记录一下搭建zookeeper伪集群遇到的坑

最近边实习边学习zookeeper,正在看杭电学长的《从paxos到zookeeper》这本书,准备搭个伪集群来试试,先下载zookeeper,然后按照教程配置好三份zoo.cfg文件,然后执行启动脚本第一个坑:启动不了第一个坑是console上已经显示了,但是查看状态时显示可能没有启动zookeeper,那第一反应就是查看日志,本来以为日志会在zoo.cfg文件中配置的log目录下的...

2018-07-28 14:58:27 2272

转载 缓存穿透 缓存雪崩 缓存击穿

转载自 https://blog.csdn.net/fei33423/article/details/79027790一.缓存穿透:&nbsp; &nbsp; &nbsp;缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。&nbsp; &nbsp; &nbsp;解决办法:...

2018-07-27 15:57:58 189

转载 zookeeper 伪集群搭建

转载自 https://blog.csdn.net/jeffleo/article/details/75735136 第一步:把zookeeper的安装包上传到服务器&nbsp;第二步:解压缩&nbsp;第三步:在/usr/local/目录下创建一个solrcloud目录。把...

2018-07-25 22:04:58 188

原创 springMVC 中的HandlerAdapter和HandlerMapping

springMVC在初始化自己的上下文之后就会进行initStrategies方法进行初始化组件HttpServletBean是实现了获取web.xml中的配置元素的值;FrameworkServlet实现了SpringMVC上下文并根据不同的DispatcherServlet放在以servlet-name为key值severtContext中;DispatcherServlet主要实现了初始...

2018-07-23 21:47:32 1148

转载 进程通信

转载自https://blog.csdn.net/gatieme/article/details/50908749 进程间通信概述进程通信的目的数据传输 一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间共享数据 多个进程想要操作共享数据,一个进程对共享数据通知...

2018-07-23 12:54:01 218

原创 JDK 动态代理

JDK 接口的动态代理最近在看动态代理,有JDK和CGLIB,其中JDK动态代理只能代理接口,CGLIB既能代理接口也能代理类,在网上看了很多的JDK 的动态代理,发现先要定义一个接口,然后再去实现这个接口,当时就对这个产生疑惑,既然已经实现接口了,那么实现的接口直接写代理逻辑不就行了,干嘛还要使用JDK 的动态代理,这不是为了代理而代理嘛,后来去了公司实习,公司使用的热天retrofit...

2018-07-19 10:24:14 185

转载 解决springMVC乱码

SpringMVC的@ResponseBody返回中文乱码的原因是SpringMVC默认处理的字符集是ISO-8859-1,在Spring的org.springframework.http.converter.StringHttpMessageConverter类中可以看到如下代...

2018-07-15 10:44:43 380

原创 java反射调用方法

java反射调用方法先上代码import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class Test { public Test(String a) { } public Test() { } publ...

2018-07-12 15:49:05 531

转载 retrofit使用

前言在Andrroid开发中,网络请求十分常用而在Android网络请求库中,Retrofit是当下最热的一个网络请求库今天,我将献上一份非常详细Retrofit v2.0的使用教程,希望你们会喜欢。 如果对Retrofit v2.0的源码感兴趣,可看文章:Androi...

2018-07-12 10:01:39 291

转载 ThreadPoolExecutor源码分析

原 Java 线程池 ThreadPoolExecutor 源码分析 2016年02月18日 18:51:33 阅读数:58...

2018-06-29 18:40:54 348

原创 MySQL 索引自己的理解

索引索引是存储引擎用于快速查找记录的一种数据结构,常见索引偶B-Tree索引,Hash索引,空间数据索引(R-Tree),全文索引。B-TreeB-Tree索引是MySQL和其他数据库最常见的索引数据结构,由于B-Tree这种数据结构的特性,可以保持数据有序,是一种平衡树,在数据库索引层面应用广泛,B-Tree能够加快访问数据的速度,因为存储引擎不再需要全表扫描来获取需要的数据,取...

2018-04-10 16:30:04 226

转载 TCP连接

TCP 的整个交流过程可以总结为:先建立连接,然后传输数据,最后释放链接。 +三次握手,建立连接TCP 连接建立要解决的首要问题就是:要使每一方能够确知对方的存在。 +三次握手就像,在一个黑暗的森林,你知道前方十点钟方向好像有人。你喊了一句:Hello?I’am JerryC,Who are you?对面回了一句:Hi! I’am David, and nice t...

2018-03-30 18:51:18 612

转载 jstack用法

本文继续介绍Java自带的性能监测工具,本文使用jstack&nbsp;(Java Stack Trace)工具来玩~ 使用jstack命令工具可以得到线程堆栈信息,根据这些线程堆栈信息,我们可以去检查Java程序出现的问题,如检测死锁,并输出死锁的信息...

2018-03-24 14:03:13 16774 1

转载 MySQL四种事务隔离级别

MySQL 四种事务隔离级的说明 很早之前写的文章,重新回顾和学习下,也可以看这篇文章说明。按照SQL:1992 事务隔离级别,InnoDB默认是可重复读的(REPEATABLE READ)。MySQL/InnoDB 提供SQL标准所描述的所有四个事务隔离级别。你可以在命令行...

2018-03-22 22:03:59 216

原创 java类加载器

java类加载器的种类java默认的类加载器有三种分别是:启动类加载器,扩展类加载器,应用程序加载器。启动类加载器:启动类加载器主要加载的是JVM自身需要的类,这个类加载使用C++语言实现的,是虚拟机自身的一部分,它负责将 &lt;JAVA_HOME&gt;/lib路径下的核心类库或-Xbootclasspath参数指定的路径下的jar包加载到内存中,注意必由于虚拟机是按照文件名识别加载...

2018-03-19 22:56:21 208

转载 tomcat配置文件server.xml详解

前言Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛。server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中元...

2018-03-18 20:28:55 257

转载 Linux安装python3.6

Linux安装python3.6 Linux下安装Python3.6和第三方库 如果本机安装了python2,尽量不要管他,使用python3运行...

2018-03-05 20:47:28 217

转载 mac shell 需要多次执行source .bash_profile

Mac自带的终端太单调,了色大师推荐zsh,安装后,界面很炫,而且还有多种主题,如果使用Git的话,会显示当前分支。 整好之后发现配置的环境变量(adb)不起作用了,执行source .bash_profile后,adb可以用了,但是终端全部关闭后,再输入adb,就不起作用了。。。。。...

2018-03-01 16:43:05 1371

转载 浅谈Java的Fork/Join并发框架

浅谈Java的Fork/Join并发框架小开7 个月前摘要: 粗略记录对Fork/Join的理解以及基本用法。 前几天有写到整合并发结果的文章,于是联想到了Fork/Join。因为在我看来整合并发结果其实就是Fork/Join中的Join步骤。所以今天我就把自己对Fork/Join一些浅显的理解记录下来。1. Fork/Join是什么 Oracle的官方给出的定义是:Fork/Join框架是一...

2018-03-01 14:13:06 362

转载 unix ipc socket file

一、 概述UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。UNIX Domain Socket有SOCK_DGRAM或SOCK_STREAM两种工作模式,类似于UD...

2018-02-27 15:26:03 287

转载 机器学习复习

七月的博客还有很多数据结构基础知识,很多面试题,写的非常好,其七月在线app很多课程也很不错。这只是部分题,后面还有题目。见http://mp.weixin.qq.com/s/C99b32MyrnEVggRAECetUA本文原文链接:http://m.blog.csdn.net/v_JULY_v/article/details...

2018-02-21 20:41:10 31698

转载 读写锁

转载自 http://ifeve.com/read-write-locks/相比Java中的锁(Locks in Java)里Lock实现,读写锁更复杂一些。假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能在同时读取共享资源。但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资

2018-01-19 14:56:34 245

原创 CopyOnWrite

什么是CopyOnWrite容器Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和Co

2018-01-18 18:06:08 391

原创 BlockQueue

用法Queue也就是队列,只能有两种基本的操作,在头部取走一个元素和在尾部增加一个元素,所以是一种FIFO结构(先进先出),不同于栈,栈是一种后进先出的数据结构。阻塞Queue常用的方法:add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常remove 移除并返回队列头部的元素 如

2018-01-15 14:51:30 1066

原创 CountDownLatch闭锁

用法CountDownLatch是一种灵活的闭锁实现,它可以使一个活多个线程等待一组事件发生。闭锁状态包括一个计数器,该计数器被初始化一个正数,表示需要等待的时间数量。countDown方法递减计数器,表示有一个事件已经发生了,而await方法等待计数器达到0,这表示所有需要等待的时间都已经发生。如果计数器的值非零,那么await会一直阻塞知道计数器为零,或者等待中的线程中断,或者等待超时。

2018-01-14 14:16:08 329

空空如也

空空如也

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

TA关注的人

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