自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux下用du命令查看文件以及文件夹大小

du的用法du命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:du-shdu常用的选项:  -h:以人类可读的方式显示  -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小  -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小  -c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和  --appa...

2020-04-09 22:04:59 591

转载 布隆过滤器

本文是站在小白的角度去讨论布隆过滤器,如果你是科班出身,或者比较聪明,又或者真正想完全搞懂布隆过滤器的可以移步。不知道从什么时候开始,本来默默无闻的布隆过滤器一下子名声大燥,仿佛身在互联网,做着开发的,无人不知,无人不晓,哪怕对技术不是很关心的小伙伴也听过它的名号。我也花了不少时间去研究布隆过滤器,看了不少博客,无奈不是科班出身,又没有那么聪明的头脑,又比较懒...经过“放弃,拿起,放弃,拿起...

2019-09-27 16:10:02 309

转载 es 在数据量很大的情况下(数十亿级别)如何提高查询效率

面试题es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?面试官心理分析这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下5~10s,坑爹了。第一次搜索的时候,是5~10s,后面反而就快了,可能就几百毫秒。你就很懵,每个用户第一次访...

2019-09-24 22:04:54 1037

原创 使用linux系统别名配置git别名

编辑环境变量配置文件vim ~/.bash_profile添加如下配置:alias gco="git checkout"alias gbr="git branch"alias gpl="git pull"alias gps="git push"alias gad="git add"alias gcm="git commit -m"alias gst="git statu...

2019-09-23 21:10:32 392

原创 git 配置完SSH 以后,push 或者pull 的时候每次都提示Enter passphrase for key '/Users/m/.ssh/id_rsa':

ssh-add -k ~/.ssh/id_rsa然后输入密码即可

2019-09-23 16:54:43 1144

原创 git本地分支跟踪远程分支命令

git branch --set-upstream-to origin/远程分支名

2019-09-23 14:18:29 892

原创 Mysql联合唯一索引存在空值时唯一约束失效

问题:当Mysql中建立的联合索引, 只要索引中的某一列的值为空时(NULL),即便其他的字段完全相同,也不会引起唯一索引冲突。原因:Mysql官方文档中有这样的解释A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if y...

2019-09-17 11:35:18 12395 2

转载 Java高性能集合类 ConcurrentLinkedHashMap 可以实现LRU缓存策略

ConcurrentLinkedHashMap是java.util.LinkedHashMap的一个高性能实现。主要用于软件缓存。ConcurrentLinkedHashMap 是google团队提供的一个容器。它有什么用呢?其实它本身是对ConcurrentHashMap的封装,可以用来实现一个基于LRU策略的缓存。详细介绍可以参见 http://code.google.com/p/co...

2019-09-05 18:10:57 1000

转载 Mac 查看端口占用情况及杀死进程

突然碰到服务起不来的情况,想查看一下端口占用情况,发现竟然忘了命令。就怕长时间不用,不用,就会忘啊。查看端口占用情况命令sudo lsof -i :9000冒号后面就是你需要查看的端口号。如上图。有一个表头名为PID的一列,这一列就表示占用当前端口的进程。杀掉占用当前端口号的进程sudo kill -9 716-9后面加一个空格,然后加上占用端口的进程PID,就...

2019-06-24 21:23:22 725

原创 中文转unicode编码英文不转

/* * 中文转unicode编码英文不转 */public static String encode(String str) { char[] chars = str.toCharArray(); StringBuilder unicodeStr = new StringBuilder(""); for (int i = 0; i < chars.lengt...

2019-05-10 15:14:45 1790

原创 java代码获取文件MD5值

方式一,使用java原生代码实现 public static String getJdkFileMD5(String path) { try { BigInteger bi = null; byte[] buffer = new byte[1024 * 4]; int len = 0; ...

2019-05-06 16:28:13 1255

转载 Mac安装卸载homebrew详细教程

安装命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"卸载命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ma...

2019-04-10 14:20:16 2223 1

转载 跳表(SkipList)及ConcurrentSkipListMap源码解析

二分查找和AVL树查找二分查找要求元素可以随机访问,所以决定了需要把元素存储在连续内存。这样查找确实很快,但是插入和删除元素的时候,为了保证元素的有序性,就需要大量的移动元素了。如果需要的是一个能够进行二分查找,又能快速添加和删除元素的数据结构,首先就是二叉查找树,二叉查找树在最坏情况下可能变成一个链表。于是,就出现了平衡二叉树,根据平衡算法的不同有AVL树,B-Tree,B+Tree,...

2019-03-26 10:17:55 1179

转载 Redis 的操作为什么是的原子性的详解

原子性原子性是数据库的事务中的特性。在数据库事务的情景下,原子性指的是:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。Redis操作原子性的原因Redis的操作之所以是原子性的,是因为Redis是单线程的。由于对操作系统相关的知识不是很...

2019-03-13 10:26:24 1236

转载 redis的三种集群方式

redis有三种集群方式:主从复制,哨兵模式和集群。1.主从复制主从复制原理:从服务器连接主服务器,发送SYNC命令; 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令; 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照...

2019-03-12 17:44:02 906

原创 使用反射实现BeanUtil工具类

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.lang.reflect.Field;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util....

2019-03-12 17:37:31 503

原创 awk命令统计pv和uv

查看ip.txt文件中的内容[root@hadoop4 test]# cat ip.txt www.baidu.com 192.168.2.1www.taobao.com 192.168.2.2www.sina.com 192.168.2.3www.taobao.com 192.168.2.1www.taobao.com 192.168.2.3www.baidu.com 192....

2019-03-12 16:45:01 1167

转载 MySQL主从复制作用和原理

一、什么是主从复制?主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。二、主从复制的作用(好处,或者说为什么要做主从)重点!1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率...

2019-03-12 14:37:33 727

转载 关于多字段的联合索引在查询单个字段时是否可以用到索引

1、联合索引是由多个字段组成的索引。2、查询时使用联合索引的一个字段,如果这个字段在联合索引中所有字段的第一个,那就会用到索引,否则就无法使用到索引。3、联合索引IDX(字段A,字段B,字段C,字段D),当仅使用字段A查询时,索引IDX就会使用到;如果仅使用字段B或字段C或字段D查询,则索引IDX都不会用到。这个规则在oracle和mysql数据库中均成立。如果你经常要用到多个...

2019-03-12 11:38:08 6484 1

转载 Java中的hashCode方法

哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:publicnativeinthashCode();根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。  为何Object类需要这样一个方法?它有什么作用呢?今天我们就来具体探讨一下h...

2019-03-12 11:15:55 148

转载 Java 浅拷贝和深拷贝的理解和实现方式

Java中的对象拷贝(Object Copy)指的是将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去。举例说明:比如,对象A和对象B都属于类S,具有属性a和b。那么对对象A进行拷贝操作赋值给对象B就是:B.a=A.a; B.b=A.b;在程序中拷贝对象是很常见的,主要是为了在新的上下文环境中复用现有对象的部分或全部 数据。Java中的对象拷贝主要分为:浅拷贝(Shal...

2019-03-12 10:36:32 376

转载 hash code、equals和“==”三者的关系

两个对象值相同(x.equals(y) == true),则一定有相同的hash code;这是java语言的定义:因为:Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,...

2019-03-07 18:36:27 158

原创 线程池 ThreadPoolExecutor解析

ThreadPoolExecutor中的几个比较重要的成员变量:private final BlockingQueue&lt;Runnable&gt; workQueue; //任务缓存队列,用来保存等待中的任务,等待worker线程空闲时执行任务private final ReentrantLock mainLock = new ReentrantLock(); //更新 poolSiz...

2019-03-07 18:12:09 124

原创 线程池ThreadPoolExecutor分析: 线程池是什么时候创建线程的,队列中的任务是什么时候取出来的?

带着几个问题进入源码分析:1. 线程池是什么时候创建线程的?2. 任务runnable task是先放到core到maxThread之间的线程,还是先放到队列?3. 队列中的任务是什么时候取出来的?4. 什么时候会触发reject策略?5. core到maxThread之间的线程什么时候会die?6. task抛出异常,线程池中这个work thread还能运行其他任务吗?...

2019-03-07 15:25:47 3719

转载 java常用阻塞队列

BlockingQueue获取元素的时候等待队列里有元素,否则阻塞保存元素的时候等待队列里有空间,否则阻塞用来简化生产者消费者在多线程环境下的开发ArrayBlockingQueueFIFO、数组实现有界阻塞队列,一旦指定了队列的长度,则队列的大小不能被改变在生产者消费者例子中,如果生产者生产实体放入队列超过了队列的长度,则在offer(或者put,add)的时候会被阻塞...

2019-03-07 15:09:00 527

转载 如何选择分布式事务形态(TCC,SAGA,2PC,补偿,基于消息最终一致性等等)

各种形态的分布式事务分布式事务有多种主流形态,包括:基于消息实现的分布式事务 基于补偿实现的分布式事务(gts/fescar自动补偿的形式) 基于TCC实现的分布式事务 基于SAGA实现的分布式事务 基于2PC实现的分布式事务之所以有这么多形态,是因为任何事情都没有银弹,只有最合适当前场景的解决方案。这些形态的原理已经在很多文章中进行了剖析,用“分布式事务”关键字就能搜到对应...

2019-03-05 18:28:08 295

转载 RocketMQ支持事务消息机制

事务消费我们经常支付宝转账余额宝,这是日常生活的一件普通小事,但是我们思考支付宝扣除转账的钱之后,如果系统挂掉怎么办,这时余额宝账户并没有增加相应的金额,数据就会出现不一致状况了。上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证?!在搜索广告系统中,当用户点击某广告后,除了在点击事件表中增...

2019-03-05 17:57:31 337

转载 分布式事务之TCC事务

TCC 事务介绍在08年的软件开发2.0技术大会上,支付宝程立在PPT大规模SOA系统中的分布事务处理,提出TCC概念。 在网络上搜索分布式事务相关的博客,基本都会提及这个PPT,目前很多分布式事务开源项目也都是基于TCC的思想实现。TCC 将事务提交分为 Try - Confirm - Cancel 3个操作。Try:预留业务资源/数据效验 Confirm:确认执行业务操作 Ca...

2019-03-05 17:55:08 307

转载 分布式 CAP理论、BASE理论

问题的提出在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景。1、火车站售票假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车 票,然后拿着车票去检票口,再坐上火车,开始一段美好的旅行----一切似乎都是那么和谐。想象一下,如果他选择的目的地是杭州,而某一趟开往杭州的火车 只剩下最后一张车票,可能在同一时刻,不同售票窗口的另...

2019-03-05 15:34:46 255

原创 Java单例模式双重检查锁定为什么使用volatile关键字

双重检查锁定代码如下:public class Singleton{ // 静态属性,volatile保证可见性和禁止指令重排序 private volatile static Singleton instance = null; // 私有化构造器 private Singleton(){} public static Sing...

2019-03-05 11:08:50 863

转载 什么是restful

REST(英文:Representational State Transfer,简称REST)表征性状态转移REST风格的接口,就是用URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。在设计web接口的时候,REST主要是用于定义接口名,接口名一般是用名次写,不用动词,那怎么表达“获取”或者“删除”或者“更新”这样的操作呢——用请求类型来区分。比如,...

2019-03-05 09:15:04 117

转载 java多线程-ThreadPoolExecutor的拒绝策略RejectedExecutionHandler

在分析ThreadPoolExecutor的构造参数时,有一个RejectedExecutionHandler参数。RejectedExecutionHandler是一个接口:public interface RejectedExecutionHandler { void rejectedExecution(Runnable r, ThreadPoolExecutor execu...

2019-03-04 15:02:53 364

转载 ThreadPoolExecutor线程池submit() 和 excute()区别

在研究ThreadPoolExecutor线程池的时候,发现可以有两种启动线程的方法:submit(Runnable runnable),excute(Runnable runnable)先说个结论吧:submit()方法,可以提供Future &lt; T &gt; 类型的返回值。excute()方法,无返回值。首先,我们看一下ThreadPoolExecutor的类图:...

2019-03-04 14:39:42 1261

转载 java中的线程池有哪些,分别有什么作用

1.进程-线程的简单介绍进程什么是进程呢?进程是计算机中的程序关于某数据集合的一次运行活动,是系统进行资源分配的调度的基本单位,是操作系统结构的基础。简单来讲:进程是指运行中的应用程序,进程是一个实体,每一个进程都有它自己的地址空间。例如我们点击了QQ,就启动了一个进程,操作系统就会为这个进程分配独立的地址空间,当我们又点击浏览器,这样又启动了一个进程,操作系统将为新的进程分配新的独立的...

2019-03-04 14:31:44 338

转载 java多线程死锁死锁案例

/** * 两个线程先分别持有两把锁,然后再去请求对方的锁,导致死锁 */public class DeadLock extends Thread { private static Object obj1 = new Object(); private static Object obj2 = new Object(); public static void m...

2019-03-04 14:27:08 218 1

转载 图解Tomcat类加载机制(阿里面试题)

图解Tomcat类加载机制(阿里面试题)Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双亲委托。对于JVM来说:因此,按照这个过程可以想到,如果同样在CLASSPATH指定的目录中和自己工作目录中...

2019-03-04 14:01:26 402

转载 java 内存溢出 栈溢出的原因

内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,造成的内存溢出。如果出现这种现象可行代码排查:一)是否应用中的类中和引用变量过多使用了Static修饰 如public staitc Student s;在类中的属性中使用 static修饰的最好只用基本类型或字符串。如public static int i = 0; //public static String str;二)...

2019-03-04 13:53:06 3932

转载 详解Spring 中如何控制2个bean中的初始化顺序

开发过程中有这样一个场景,2个 bean 初始化逻辑中有依赖关系,需要控制二者的初始化顺序。实现方式可以有多种,本文结合目前对 Spring 的理解,尝试列出几种思路。场景假设A,B两个 bean 都需要在初始化的时候从本地磁盘读取文件,其中B加载的文件,依赖A中加载的全局配置文件中配置的路径,所以需要A先于B初始化,此外A中的配置改变后也需要触发B的重新加载逻辑,所以A,B需要注入彼此。...

2019-03-01 11:29:40 2258

转载 为什么CMS两次标记时要 stop the world(阿里面试)

1、CMS及其执行过程?CMS,全称Concurrent Mark and Sweep,用于对年老代进行回收,目标是尽量减少应用的暂停时间,减少full gc发生的机率,利用和应用程序线程并发的垃圾回收线程来标记清除年老代。CMS并非没有暂停,而是用两次短暂停来替代串行标记整理算法的长暂停。内外的设置正常收集周期是这样的:1)CMS-initi...

2019-03-01 11:13:30 2033

转载 Alibaba Java 诊断工具 Arthas 使用

安装curl -L https://alibaba.github.io/arthas/install.sh | sh启动安装目录下 ./as.sh 启动, 然后按照列出的进程列表,输入序号选择要诊断的应用常用命令官网(https://alibaba.github.io/arthas/commands.html)上有所有命令的文档,这里只写几个比较常用并且文档说明不够详细的。...

2019-02-27 17:10:59 571

空空如也

空空如也

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

TA关注的人

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