自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(568)
  • 收藏
  • 关注

转载 java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具...

2019-09-19 21:12:00 304

转载 Linux kill、kill-15、kill-9区别

进程状态转换图kill和kill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象。执行kill(不加 -* 默认kill -15)命令,系统会发送一个SIGTERM信号给对应的程序。当程序接收到该signal信号后,将会发生以下事情:程序立刻停止当程序释放相应资源后再停止程序可能仍然继续...

2019-09-18 16:42:00 399

转载 Spring不能直接@autowired注入Static变量

一、业务场景spring框架应用中有些静态方法需要依赖被容器管理的类,就像这样:@Componentpublic class Test { @Autowired private static UserService userService; public static void test() { us...

2019-09-18 14:26:00 360

转载 load average 定义(网易面试)

1. load average 定义linux系统中的Load对当前CPU工作量的度量。简单的说是进程队列的长度。Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 Load 。通过系统命令"w"查看当前load average情况上边0.31,0.30,0.31表示第一位0.31:表示最近1分钟平均负载第二位0.30:表示最近5...

2019-09-16 08:53:00 155

转载 HashMap多线程并发问题分析-正常和异常的rehash1(阿里)

多线程put后可能导致get死循环从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Hang在了HashMap.get()这个方法上了,重启程序后问题消失。但是过段时间又会来。而且,这个问...

2019-09-11 09:21:00 586

转载 新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析(阿里)

想了解AIO,BIO NIO Reactor 请参考:IO复用,AIO,BIO,NIO,同步,异步,阻塞和非阻塞 区别(百度)1、引言Netty是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文基于Netty 4.1展开介绍相关理论模型,使用场景,基本组件、整体架构,知其然且知其所以然,希望给大家在实际开发实践...

2019-09-07 21:25:00 1192

转载 WebSocket专题(阿里)

我们的项目中使用了websocket 用java-websocket 开源项目做的,阿里的人问我用啥实现的websocket一时没有答上来回来做了总结:1、前言最近有同学问我有没有做过在线咨询功能。同时,公司也刚好让我接手一个 IM 项目。所以今天抽时间记录一下最近学习的内容。本文主要剖析了 WebSocket 的原理,以及附上一个完整的聊天室实战 Demo (包含...

2019-09-07 20:41:00 179

转载 docker swarm和compose 的使用(阿里)

基本的docker使用参考:Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点)昨天去阿里面试 问我如果给你5台服务器 如何部署docker,我说一个个拷贝,面试官听了脸都绿了,说有没有听说过用swarm和compose 部署docker集群,我说没用过,后来回来一看自己的项目,我晕,每天用的yaml文件 就是 compose。赶紧做一下总结...

2019-09-07 17:03:00 444

转载 kafka如何实现高并发存储-如何找到一条需要消费的数据(阿里)

阿里太注重原理了:阿里问kafka如何实现高并发存储-如何找到一条需要消费的数据这是答案:在partition中如何通过offset查找message例如读取offset=368776的message,需要通过下面2个步骤查找。第一步查找segment file上述图2为例,其中00000000000000000000.index表示最开始的文件,起始偏移量(offs...

2019-09-07 15:58:00 297

转载 服务器负载过高问题分析-不是cpu高负载也不是IO负载如何处理(阿里 几乎是必考题)...

问题现象:1,top命令查询服务器负载达到2.0-5之间,tomcat的cpu使用率达到104%这里有个问题,很多人会问 load average代表什么,参考:load average 定义(网易面试)linux系统中的Load对当前CPU工作量的度量。简单的说是进程队列的长度。Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均...

2019-09-06 17:07:00 198

转载 聊聊Mysql索引和redis跳表 ---redis的跳表原理 时间复杂度O(logn)(阿里)

还有个姊妹篇:介绍mysql的B+索引原理 参考:一步步分析为什么B+树适合作为索引的结构 以及索引原理 (阿里面试)敲黑板:每级遍历 3 个结点即可,而跳表的高度为 h ,所以每次查找一个结点时,需要遍历的结点数为3*跳表高度,所以忽略低阶项和系数后的时间复杂度就是 ○(㏒n),空间复杂度是O(n)数据结构实现原理key查询方式查找效率存储大小插入、删除效率...

2019-09-06 15:57:00 713

转载 各种排序算法的时间复杂度和空间复杂度(阿里)

二分查找法的时间复杂度:O(logn) redis,kafka,B+树的底层都采用了二分查找法参考:二分查找法redis的索引底层的 跳表原理 实现聊聊Mysql索引和redis跳表 ---redis的跳表原理 时间复杂度O(logn)(阿里)参考:二分查找法kafka如何实现高并发存储-如何找到一条需要消费的数据(阿里)参考:二分查找法:一步步分析...

2019-09-06 09:12:00 222

转载 HashMap默认加载因子为什么选择0.75?(阿里)

Hashtable 初始容量是11 ,扩容 方式为2N+1;HashMap 初始容量是16,扩容方式为2N;  阿里的人突然问我为啥扩容因子是0.75,回来总结了一下; 提高空间利用率和 减少查询成本的折中,主要是泊松分布,0.75的话碰撞最小,HashMap有两个参数影响其性能:初始容量和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子是哈希表在...

2019-09-06 08:58:00 2361

转载 深入分析Synchronized原理(阿里面试题)

还有一篇 讲解lock的实现原理,参考:解决多线程安全问题-无非两个方法synchronized和lock 具体原理以及如何 获取锁AQS算法 (百度-美团)还有一篇写的不错:深入理解synchronized底层原理,一篇文章就够了!另一篇少的:synchronize原理记得开始学习Java的时候,一遇到多线程情况就使用synchronized,相对于当时的我们来说synch...

2019-09-06 08:29:00 380

转载 ObjectMapper使用

在项目中使用到了ObjectMapper,故研究了一下。现将自己的几个测试用例和大家分享一下~首先在pom.xml文件中,加入依赖:    <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId&g...

2019-09-04 14:53:00 65

转载 新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析

1、引言Netty是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文基于Netty 4.1展开介绍相关理论模型,使用场景,基本组件、整体架构,知其然且知其所以然,希望给大家在实际开发实践、学习开源项目方面提供参考。本文作者的另两篇《高性能网络编程(五):一文读懂高性能网络编程中的I/O模型》、《高性能网络...

2019-09-04 09:23:00 90

转载 高并发架构系列:Redis并发竞争key的解决方案详解

需求由来1.Redis高并发的问题Redis缓存的高性能有目共睹,应用的场景也是非常广泛,但是在高并发的场景下,也会出现问题:缓存击穿、缓存雪崩、缓存和数据一致性,以及今天要谈到的缓存并发竞争。这里的并发指的是多个redis的client同时set key引起的并发问题。2.出现并发设置Key的原因Redis是一种单线程机制的nosql数据库,基于key-value,...

2019-09-04 08:45:00 77

转载 CAP原则 (阿里)

CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Parti...

2019-09-03 19:44:00 170

转载 分布式系统一致性问题解决实战(阿里) 异步解耦+消息队列可作为分布式系统满足最终一致性的优秀方案...

结论:对于单机单库系统,数据一致性可通过关系型数据库的事务来满足,而且ACID特性中的C是指强一致性,各数据库本身都支持,而且很成熟。分布式系统则需要以BASE理论作为指导,即以基本可用性和最终一致性作为目标。远程RPC调用是一致性问题主要原因,异步解耦+消息队列可作为分布式系统满足最终一致性的优秀方案。一、背景及问题描述业务背景:商户提交表...

2019-09-03 19:41:00 125

转载 高并发&高可用系统的常见应对策略 秒杀等-(阿里)

对于一个需要处理高并发的系统而言,可以从多个层面去解决这个问题。1、数据库系统:数据库系统可以采取集群策略以保证某台数据库服务器的宕机不会影响整个系统,并且通过负载均衡策略来降低每一台数据库服务器的压力(当然用一台服务器应付一般而言没啥问题,找一台当备机放着应付宕机就行,如果一台应付不了,那么再加一台,但是备机还是要的,至少一台),另外采取读/写分离的方法降低数据库负载,再加上...

2019-09-03 09:22:00 1233

转载 Redis的内存回收策略和内存上限(阿里)

还有一篇文章 讲解guava如何删除过期数据的,参考:GuavaCache简介(一)是轻量级的框架 少量数据,并且 过期时间相同 可以用 GuavaCache内存上限Redis可以通过 maxmemory 参数来限制最大可用内存,主要为了避免Redis内存超过操作系统内存,从而导致服务器响应变慢甚至死机的情况。maxmemory 参数限制的是Redis的对象内存大小,也就是 us...

2019-09-03 08:51:00 82

转载 如何保证MQ的顺序性?比如Kafka

三、如何保证消息的顺序性1. rabbitmq拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点;或者就一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底层不同的worker来处理2. kafka写入一个partition中的数据一定是有序的,生产者在写的时候 ,可以指定一个k...

2019-09-03 08:44:00 556

转载 spring的controller默认是单例还是多例

先看看spring的bean作用域有几种,分别有啥不同。spring bean作用域有以下5个:singleton:单例模式,当spring创建applicationContext容器的时候,spring会欲初始化所有的该作用域实例,加上lazy-init就可以避免预处理;prototype:原型模式,每次通过getBean获取该bean就会新产生一个实例,创建后spring...

2019-09-03 08:14:00 96

转载 HashMap线程不安全的体现

1、多线程put操作后,get操作导致死循环。2、多线程put非NULL元素后,get操作得到NULL值。3、多线程put操作,导致元素丢失。参考:多线程下HashMap的死循环问题比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。在单...

2019-09-03 07:49:00 117

转载 什么是CPU密集型、IO密集型?

CPU密集型(CPU-bound)CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。在多重程序系统中,大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound。例如...

2019-09-01 08:32:00 524

转载 Mysql中联合索引的最左匹配原则(百度)

创建联合索引时列的选择原则经常用的列优先(最左匹配原则)离散度高的列优先(离散度高原则)宽度小的列优先(最少空间原则)在Mysql建立多列索引(联合索引)有最左前缀的原则,即最左优先。如果我们建立了一个2列的联合索引(col1,col2),实际上已经建立了两个联合索引(col1)、(col1,col2);如果有一个3列索引(col1,col2,col3),实...

2019-08-24 12:05:00 74

转载 linux利用grep查看打印匹配的下几行或前后几行的命令

linux系统中,利用grep打印匹配的上下几行打印匹配的行:$grep 'parttern' inputfile //打印匹配行如果在只是想匹配模式的上下几行,grep可以实现。$grep -5 'parttern' inputfile //打印匹配行的前后5行$grep -C 5 'parttern' inputfile //打印匹配行的前后...

2019-08-15 11:16:00 96

转载 手机号码验证的正则表达式

如果你要精确验证手机号码,那个你可以使用第一个正则。这是根据电信,移动,联通目前发行的号码来的。验证比较精确。^1[3|4|5|7|8][0-9]{9}$如果因为现有的号码不能满足市场需求,电信服务商会增大号码范围。所以一般情况下我们只要验证手机号码为11位,且以1开头。^1[0-9]{10}$参考:手机号码验证的正则表达式转载于:htt...

2019-08-14 17:36:00 152

转载 Http、Socket、WebSocket之间联系与区别

WebSocket和Socket区别可以把WebSocket想象成HTTP(应用层),HTTP和Socket什么关系,WebSocket和Socket就是什么关系。HTTP 协议有一个缺陷:通信只能由客户端发起,做不到服务器主动向客户端推送信息。WebSocket 协议它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,...

2019-08-11 14:34:00 121

转载 thrift 是rpc协议

PC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像LPC(本地过程调用). 越底层,代码越复杂、灵活性越高、效率越高;越上层,抽象封装的越好、代码越简单、效率越差。Socket和RPC的区别再次说明了这点。PC(Remote Procedure...

2019-08-10 15:55:00 182

转载 面试小结之Elasticsearch篇

Elasticsearch-基础介绍及索引原理分析最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作,花了些时间学习Elasticsearch的基础理论知识,整理了一下,希望能对Elasticsearch感兴趣/想了解的同学有所帮助。 同时也希望有发现内容不正确或者有疑问的地方,望指明,一起探讨,学习,进步。...

2019-08-08 21:14:00 227

转载 maven 左边空了

看一下maven:解决方法:进入maven的配置,把maven的路径配置一下,就好了;结果:转载于:https://www.cnblogs.com/aspirant/p/11310074.html...

2019-08-06 16:46:00 70

转载 maven 无法引入包 报错 处理方式

<!--orderquery thrift client定义--> <dependency> <groupId>com.sankuai.qcs</groupId> <artifactId>order-client</artifactId>...

2019-08-01 18:07:00 192

转载 上传文件multipart form-data boundary 说明

含义 ENCTYPE="multipart/form-data" 说明:通过 http 协议上传文件 rfc1867协议概述,客户端发送内容构造。概述在最初的 http 协议中,没有上传文件方面的...

2019-07-24 20:01:00 592

转载 vi 调到第一行和最后一行

gg 跳到文件第一行Shift + g 跳到文件最后一行chmod 777 abc.txt转载于:https://www.cnblogs.com/aspirant/p/11225615.html

2019-07-22 14:22:00 79

转载 linux监控平台搭建-磁盘

系统突然有个IO高峰:想知道什么事:disk.io.util/device=vda;disk.io.util:在统计时间内所有处理IO时间,除以总共统计时间。是个百分数,比如56.43,表示56.43%。目前我的公司就是监控这个指标报警,之后去排查问题磁盘:随着大数据快速发展、人工智能、自动化、云平台。数据量指数的增长。磁盘的使用量也在增长。目前的机器基本上采用SS...

2019-07-22 11:46:00 280

转载 Guava Cache 参数配置说明

系统中用到了了Guava Cache: private DriverInfoServiceImpl(DriverClientProxy driverClientProxy) { this.driverClientProxy = driverClientProxy; this.driverCacheLoader = new DriverCache...

2019-07-15 14:47:00 492

转载 GuavaCache简介(一)是轻量级的框架 少量数据,并且 过期时间相同 可以用 GuavaCache...

还有一篇文章是讲解redis 如何删除过期数据的,参考:Redis的内存回收策略和内存上限(阿里)总结请一定要记住GuavaCache的实现代码中没有启动任何线程!!Cache中的所有维护操作,包括清除缓存、写入缓存等,都是通过调用线程来操作的。这在需要低延迟服务场景中使用时尤其需要关注,可能会在某个调用的响应时间突然变大。GuavaCache毕竟是一款面向本地缓存的,轻量级的Cac...

2019-07-11 21:18:00 715

转载 如何将 普通代码变成 java lamband表达式

public static void main(String[] args) { Map<String, String> map = new HashMap<>(); List<NameValuePair> nameValuePairList = new ArrayList<>(); ...

2019-07-11 16:52:00 127

转载 socket http tcp ip 区别联系

功能是实现继承复用。刚才做了一个简要的概述,里面有一些常用的概念,这里做个简短的概念普及介绍:(1),TCP/IP------TPC/IP协议是传输层协议,主要解决数据如何在网络中传输。(2),Socket------socket则是对TCP/IP协议的封装和应用(程序层面)。(3),Http------HTTP是应用层协议,主要解决如何包装数据。(4),网络七层模型------物理层、...

2019-07-11 15:10:00 72

空空如也

空空如也

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

TA关注的人

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