自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(248)
  • 资源 (2)
  • 收藏
  • 关注

转载 String的intern()方法

String中的intern方法一.intern方法的用途关于字符串String中的intern方法,是当常量池中不存在"abc"这个字符串的引用,将这个对象的引用加入常量池,返回这个对象的引用,当常量池中存在"abc"这个字符串的引用,返回这个对象的引用。java中获取String常量池中常量有两种方法:一个是通过双引号定义字符串例如:String S = “1”;一个是String的in...

2020-04-08 19:20:28 161

转载 GC类型

GC类型

2020-04-08 18:16:49 1092

转载 ArrayList、LinkedList、CopyOnWriteArrayList的区别联系

CopyOnWriteArrayList的实现原理内部数据会被copy读写分离可能的数据延迟CopyOnWriteArrayList用了一个有意思的技术实现了线程安全(不需要synchronization)。内部数据会被copy当调用这个类的任何有关修改的操作的时候(比如add,remove),CopyOnWriteArrayList里面整个的内容都会被重新copy一份。读写分离...

2020-04-03 19:58:08 614

转载 接口限流、服务降级、熔断

为什么需要限流与用户打交道的服务比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮用户增长过快(这是好事)因为某个热点事件(微博热搜)竞争对象爬虫恶意的刷单这些情况都是无法预知的,不知道什么时候会有10倍甚至20倍的流量进来,如果遇到此类情况,扩容是根本来不及的,弹性扩容也是来不及的;对内的RPC服务一个服务A的接口可能被BCDE多个服务进行调用,在B服务...

2020-04-02 21:13:44 5008

转载 分布式session如何实现

大约有如下几种方法:粘性sessionsession复制session共享机制session持久化到数据库1.粘性session原理:粘性Session是指将用户锁定到某一个服务器上。比如上面说的例子,用户第一次请求时,负载均衡器将用户的请求转发到了A服务器上,如果负载均衡器设置了粘性Session的话,那么用户以后的每次请求都会转发到A服务器上,相当于把用户和A服务器粘到了一块...

2020-04-02 20:46:03 145

转载 TCP报头组成以及IP报头组成

一次网络请求的全过程

2020-03-28 09:22:37 3055

转载 Lock原理

Lock原理

2020-03-25 08:54:53 333

转载 面向对象的设计原则(SOLID)

设计模式的Solid原则有:Single Responsibility Principle:单一职责原则Open Closed Principle:开闭原则Liskov Substitution Principle:里氏替换原则Interface Segregation Principle:接口隔离原则Dependence Inversion Principle:依赖倒置原则除此之...

2020-03-24 11:03:37 197

转载 CPU100%、死锁、内存溢出的排查

CPU到了100%的排查方式top

2020-03-17 09:00:46 521

转载 Appllo原理

Applo原理

2020-03-15 11:30:32 472

转载 kafka详解

kafka

2020-03-14 21:44:46 125

转载 Netty的原理

Netty的原理

2020-03-13 17:59:27 205

转载 Nginx负载均衡原理

负载均衡

2020-03-13 16:27:32 5894

转载 负载均衡及其常见实现方式

Nginx

2020-03-12 21:26:11 1391

转载 RPC框架——Dubbo

什么是RPCRPC 的全称是 Remote Procedure Call 是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即无论是调用本地接口/服务的还是远程的接口/服务,本质上编写的调用代码基本相同。比如两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在一个内存...

2020-03-09 22:56:24 231

转载 Zookeeper使用及原理

Zookeeper使用Zookeeper原理

2020-03-09 19:36:33 199

转载 微服务集群框架

微服务集群框架整个微服务集群框架是怎么构成的:注册中心、服务发现、负载均衡API 网关RPC框架消息队列全方位的监控统一配置中心统一日志中心熔断,限流,降级缓存这些框架下管理的是各种服务器:web项目服务器异步job任务服务器数据库 服务器缓存服务器如下图所示:转自:https://blog.csdn.net/wangjianan7357/article...

2020-03-09 10:39:49 291

转载 MySQL为什么选择B+树作为索引结构?

MySQL为什么选择B+树作为索引结构?转自:http://www.gxlcms.com/mysql-366759.html1、平衡二叉树(AVL):旋转耗时缺点:由于旋转的耗时,AVL树在删除数据时效率很低AVL树是严格的平衡二叉树,所有节点的左右子树高度差不能超过1;AVL树查找、插入和删除在平均和最坏情况下都是O(lgn)。AVL实现平衡的关键在于旋转操作:插入和删除可能破坏二叉树...

2020-03-05 12:13:00 195

转载 Redis集群(主从、哨兵、分片)

Redis集群当满足需求时,我们可以只在一台服务器上部署Redis数据库,其他的服务器通过IP、端口等访问这台服务器即可。但是当一台服务器难以满足时,我们就需要在多台机器上部署一个Redis集群,来满足需求。Redis集群中主要有如下几种核心功能:主从复制哨兵模式分片分区主从复制需求为了避免单点故障,可选的做法是将数据库复制多个副本以部署在不同的服务器上,这样即使有一台服务器...

2020-03-05 11:06:36 1667

转载 Redis并发问题及分布式锁

Redis并发问题既然Redis是单线程,那么它为什么会有并发的问题。理论上来说,Redis是按顺序执行修改操作,不会有多个线程同时修改的情况。但假如有这种场景下:有一个字符串,key 为 a,value 为 1 。两个客户端同时对 a 进行加 1 。他们同时获取到 a 的值为 1 ,同时向Redis发出请求,将 a 值改为 2 。这样并发问题就产生了。Redis本身是按顺序执行的,它...

2020-03-05 10:30:07 392

转载 微服务

微服务微服务是是一种架构风格,它提倡将单一应用程序划分一组小的服务。比如将整个商城分为:订单系统、商品系统、活动系统三个子服务,也就是三个微服务。REST接口REST是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源,网络上一切皆资源。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对...

2020-03-04 21:41:59 123

转载 Redis详细介绍

目录Redis是什么Redis数据类型Redis是单线程为何还那么快Redis 单线程如何处理并发连接Redis的持久化RDB(默认)AOFRDB+AOF混合模式选择哪种模式Redis的发布订阅Redis的事物Redis集群主从复制哨兵模式分片分区Redis分布式锁为什么Redis是单线程,却还需要锁。Redis是什么redis是nosql(也是个巨大的map) 单线程,但是可处理1秒10w的...

2020-03-04 21:16:23 174

转载 红黑树结构及算法实现

红黑树结构红黑数(Red-black tree)是一种自动平衡的二叉查找树,如下图:红黑数首先需要满足的条件是一棵二叉查找树,在此基础上增加其自己的规则。二叉查找树的规则若任意节点的左子树不为空,则左子树上所有节点的值均小于它的根节点的值若任意节点的右子树不为空,则右子树上所有节点的值均大于它的根节点的值任意节点的左、右子树也分别为二叉查找树没有键值相等的节点红黑树的规则...

2020-03-03 18:44:29 346

转载 SpringBoot核心原理

SpringBoot核心原理转自:https://www.jianshu.com/p/f6ec46bd34a2SpringBoot的主要特点它是一个服务于spring框架的框架,能够简化配置文件,快速构建web应用,内置tomcat,无需打包部署,直接运行。特点:简化配置文件内置tomcatSpringBoot的核心机制自动配置,可以实现简单配置,甚至是零配置起步依赖,通过...

2020-03-03 11:36:05 124

原创 多线程实例

场景如下有多个品牌,每个品牌下有多个商品,现在要过滤掉其中没有商品的品牌。除了没有商品的可能,还有用户被屏蔽的可能,因此还有一道过滤逻辑。比如康师傅品牌下有康师傅红茶、康师傅方便面等等,盼盼品牌下啥也没有,就要把盼盼过滤掉,康师傅留下。过滤的线程如下//得到品牌下商品的个数class CountGoods implements Callable<Integer>{ ...

2020-03-02 12:37:18 78

原创 AOP

AOP简介AOP也就是面向切面,意思是做出一些通用的功能,如打印日志等,应用于所有需要的地方。传统的面向对象,在每个对象里进行打印日志,重复且无意义。AOP实现的思路,拦截住一些需要使用打印日志功能的方法,使用动态代理,对原本的方法加入了打印日志的操作。AOP具体使用方法先定义一个切点,也就是需要拦截的地方。围绕着切点,进行日志打印,共有五种执行日志打印的时机:before(前置通知...

2020-03-01 13:43:38 133

原创 动态代理的简单示例

场景场景是你想向女神告白,但不会告白的技巧。现在一共有三种可行方案:你自己告白找代理替你告白(简单代理)你自己学习告白技巧,升级自己(动态代理)0.告白的接口//告白的接口interface Love{ void doLove();}1.你自己告白你自己告白,只会一句“我爱你”,简单直接会失败//这是原本的告白,太简单会失败class DoLove impl...

2020-03-01 10:47:45 94

原创 Java的重载

重载为什么要有重载的出现呢?其中一个原因是,对于类的构造器来说,所有的构造器名称都是一样,但是需要有不同的功能,因此重载必不可少。重载看起来很简单,但在java中也有几个需要注意的地方。区别重载方法对于两个同名的方法,java如何进行区分呢?很简单,Java根据不同的参数列表区分不同的同名方法,因此,每个同名方法的参数列表必然是独一无二的。甚至是不同的参数顺序,也足以区分两个方法。...

2020-02-28 08:16:10 162

转载 TCP详解(三次握手四次挥手、滑动窗口)

https://blog.csdn.net/qq_38950316/article/details/81087809

2020-02-25 19:40:44 214

原创 synchronized的使用方法(锁对象和类、锁静态方法、静态域)

synchronized的使用方法1.普通同步方法public synchronized void method1(){ …… };锁的是当前实例对象2. 同步方法块synchronized (this) { …… };锁是括号里面的对象,this就是当前对象了3.静态同步方法public static synchronized void method1(){ …… };锁...

2020-02-24 12:06:04 987

转载 类加载、初始化的过程(包括static成员对象)

类加载、初始化的过程因为之前对类加载这块不感兴趣,感觉实际应用中又用不到……但工作后发现并非如此,因此学习总结一下——类加载和初始化的过程让人很绕,有些搞不明白。首先要明白,类的加载和初始化是两个过程。(菜鸡如我一直都很糊涂)。1、类加载、初始化的时机时机就是第一次使用类时,一般包括两种情况:首次创建A对象时首次A的静态成员(如 i )首次被访问时下面列出四种可能的情况:pub...

2020-02-04 12:22:49 1635 1

原创 Callable实现阻塞的几种方法(Callable的阻塞机制示例)

Callable是可以有返回结果的,但是我们必须要等到所有的Callable执行完成,即我们需要阻塞住主线程。但Callable是如果实现阻塞的呢?下面几个例子说明阻塞的方法,一共四种方式执行Callable线程列表使用线程池的submit方法但不调用get方法(不可行)线程池依次submit线程并依次调用get方法(不可行)线程池submit十个线程,并将返回的future加入一个列表...

2020-01-30 17:13:39 2271 5

原创 为啥AtomicInteger底层用的volatile,但是可以进行++的操作呢

为啥AtomicInteger底层用的volatile,但是可以进行++的操作呢?众所周知,用volatile时,对volatile的操作最好不要涉及到volatile自身。但AtomicInteger它有一个方法incrementAndGet,它却可以对自己进行++。可以看到,它调用了unsafe的getAndAddInt,这个相当于乐观锁,比较内存中的内容是否一样,如果一样就改掉,这是...

2020-01-30 17:01:13 618

转载 Redis常见问题(缓存穿透、热key)

啥是Redis的缓存穿透呢?缓存穿透,就是如果从数据库中查出的是null,存入Redis的就也是null,然后如果有人不停的查,就相当于是不停的查数据库,(因为是null,所以跳过了或者是透过了Redis),请求的多了可能就把数据库弄崩了。解决的办法,就是在查询数据库后,判断一下,如果为null,赋值空集合。(空集合不是null)List<Coupon> list = null;...

2019-12-15 21:43:17 268

转载 抽象类和接口

抽象类和接口有啥区别和共同的呢?这是初学时经常会遇到的一个问题https://baijiahao.baidu.com/s?id=1620965468190584914&wfr=spider&for=pchttps://blog.csdn.net/SnailMann/article/details/80231593区别:抽象类:抽象类使用abstract修饰;只能被继...

2019-11-16 23:32:36 72

转载 synchronized的原理

Synchronized的底层原理,及简介https://www.cnblogs.com/mingyao123/p/7424911.html再一个补充:http://developer.51cto.com/art/201905/596986.htmlsynchronized的三种使用方法1.普通同步方法public synchronized void method1(){ …… };...

2019-10-27 15:40:28 100

转载 BIO(同步阻塞)、NIO(同步非阻塞)、AIO(异步非阻塞)、字节流字符流的区别

看到一个讲的很详细的BIO、NIOhttps://blog.csdn.net/u010310183/article/details/81700405BIO和NIO是两种不同的网络通信模型,现如今NIO已经大量应用在Jetty、ZooKeeper、Netty等开源框架中。“术语”:“read”是将内核的数据读到socket中,然后发给客户端;准备数据是指数据被 “select” 到内核中。...

2019-08-07 16:53:55 406

转载 内存溢出

转自:http://outofmemory.cn/c/java-outOfMemoryErrorhttps://blog.csdn.net/jianghuchuanke/article/details/79970749内存溢出OOM指的是OutOfMemoryException,在java项目中极为常见,中文翻译过来是内存溢出。与之相关的是内存泄漏内存泄露 memory leak,是指...

2019-06-13 21:26:04 127

转载 事务隔离

转自:https://www.cnblogs.com/fjdingsd/p/5273008.html四大特性本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity)  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样...

2019-06-13 21:12:58 109

转载 指令重排序(happens-before + As-If-Serial原则)

转自:https://segmentfault.com/a/1190000011458941https://blog.csdn.net/qq_19642249/article/details/81002210Java多线程可见性在现代操作系统上编写并发程序时,除了要注意线程安全性(多个线程互斥访问临界资源)以外,还要注意多线程对共享变量的可见性,而后者往往容易被人忽略。可见性是指当一个线...

2019-06-11 07:21:59 295

rainbow.txt

彩虹屁文本11000条

2021-01-30

index.html

程序员小白编写用于哄女票、给女票惊喜的静态HTML页

2021-01-24

空空如也

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

TA关注的人

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