自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (3)
  • 收藏
  • 关注

原创 【无标题】

前言在某些场景中,多个进程必须以互斥的方式独占共享资源,这时用分布式锁是最直接有效的。随着技术快速发展,数据规模增大,分布式系统越来越普及,一个应用往往会部署在多台机器上(多节点),在有些场景中,为了保证数据不重复,要求在同一时刻,同一任务只在一个节点上运行,即保证某一方法同一时刻只能被一个线程执行。在单机环境中,应用是在同一进程下的,只需要保证单进程多线程环境中的线程安全性,通过 JAVA 提供的 volatile、ReentrantLock、synchronized 以及 concurrent 并发

2022-04-07 14:29:21 134

原创 mybatis一级缓存失效

先整合mybatis和spring因为线程安全,sqlSessionTemplate 是单例的; defaultSqlSession 是线程不安全的;所以每个线程用于一个defaultSqlSession是安全的,及sqlSesstionTemplate拥有多个DefaultSqlSession ; 每个defaultSqlSession执行自己的查询;pom.xml <dependency> <groupId>org.springframewor

2022-04-06 15:12:40 256

原创 G1和CMS

CMS: concurrent Mark Sweep以获取最短回收停顿时间为目标的收集器,基于并发“标记清理”实现有人会好奇为什么标记清理算法会产生内存碎片!但是CMS仍采用这种算法呢?答案是:因为CMS作为第一款实现用户线程和收集线程并发执行的收集器!当时的设计理念是减少停顿时间,最好是能并发执行!但是问题来了,如要用户线程也在执行,那么就不能轻易的改变堆中对象的内存地址!不然会导致用户线程无法定位引用对象,从而无法正常运行!而标记整理算法和复制算法都会移动存活的对象,这就与上面的策略不符!因此CM

2021-05-08 18:18:42 168

原创 Redis集群

Redis集群方案Redis集群方案基于分而治之的思想。Redis中数据都是以Key-Value形式存储的,而不同Key的数据之间是相互独立的。因此可以将Key按照某种规则划分成多个分区,将不同分区的数据存放在不同的节点上。这个方案类似数据结构中哈希表的结构。在Redis集群的实现中,使用哈希算法(公式是CRC16(Key) mod 16383)将Key映射到0~16383范围的整数。这样每个整数对应存储了若干个Key-Value数据,这样一个整数对应的抽象存储称为一个槽(slot)。每个Redis Cl

2021-05-07 18:52:02 126

原创 分布式事务

什么是分布式事务为什么会有分布式事务?分布式理论CAP定理BASE理论分布式事务解决方案两阶段提交(2PC)三阶段提交(3PC)补偿事务(TCC)本地消息表消息事务最大努力通知Sagas 事务模型总结...

2021-05-07 18:31:40 88

原创 七层负载均衡&四层负载均衡

内容安排简介区别Nginx、LVS及HAProxy负载均衡软件的优缺点一、简介** 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;**同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再

2021-05-06 17:36:27 347

原创 限流

限流简介现在说到高可用系统,都会说到高可用的保护手段:缓存、降级和限流,本博文就主要说说限流。限流是流量限速(Rate Limit)的简称,是指只允许指定的事件进入系统,超过的部分将被拒绝服务、排队或等待、降级等处理。对于server服务而言,限流为了保证一部分的请求流量可以得到正常的响应,总好过全部的请求都不能得到响应,甚至导致系统雪崩。限流与熔断经常被人弄混,博主认为它们最大的区别在于限流主要在server实现,而熔断主要在client实现,当然了,一个服务既可以充当server也可以充当client

2021-05-06 17:00:46 235

原创 网路结构

内核和应用程序交互应用程序是建立在linux基础上得,传输层tcp/udp; 端口是由内核分配给应用程序,应用程序通过端口,以来内核网路服务(队列,socket)对外通信;三次握手目的是双方都要给对象进行ack (确认) 才可以保证稳定得通信四次分手分层设计网络抓包 观察单次连接得详细内容tcpdump -nn(数字得形式展示ip) -i eth0 (对应得网卡) port 80 监听对应端口得数据socket的申请和使用业务处理和网络连接事件职责单一观察机器整体连接情况

2021-05-06 00:21:53 83

原创 jdk动态代理

一、什么是代理?二、Java 动态代理类三、JDK的动态代理怎么使用?四、动态代理怎么实现的?五、结论一、什么是代理?代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。代理模式UML图:简单结构示意图:为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护

2021-02-22 22:40:44 85

原创 reactor的执行顺序

import io.reactivex.Observable;import org.junit.Test; /** * @description: 测试onNext、onComplete、doOnNext、doFinally、doAfterTerminate执行顺序 * @author: lizz * @date: 2020/11/17 17:56 */public class ExeOrder { @Test public void orderTester() {

2021-01-07 18:35:16 412

原创 责任链模式filter

连接的责任委托给filterChain, filterChain中维护filter的链;上代码

2020-12-08 23:40:25 151

原创 连接风暴

在机器扛不住的情况下,尽量通过限流处理流量洪峰,通过扩容容易造成下游服务打卦,或者数据库等连接池疯狂新增连接,导致所有应用都无连接可用

2020-12-08 23:02:50 325

原创 限流

优先使用集群限流单机限流的弊端:当服务发布时,单机不可用,导致到达单机的流量不可用,限流的总的qps下跌;

2020-10-28 17:01:49 75

原创 Future整理

本文结构1.Runnable的短板总的来说”三无产品“无入参无返回值;主调线程无法获取子线程的结果无异常2. Callable@FunctionalInterfacepublic interface Callable<V> { V call() throws Exception;}3. Callable与Runnable的对比callable “三有产品”runnable z...

2020-10-18 00:40:08 84

原创 代码扩展性设计---钩子

在编排好业务逻辑中,因为某些部分业务是变动的,但这部分的变动属于主流程,将变动的部分设计成钩子(即方法的入参是一个接口对象),在真实执行时,钩进来变动的代码进行执行;

2020-10-15 21:47:45 144

原创 springboot原理知识清单

一、抛砖引玉:探索Spring IoC容器二、夯实基础:JavaConfig与常见Annotation三、削铁如泥:SpringFactoriesLoader详解四、另一件武器:Spring容器的事件监听机制五、出神入化:揭秘自动配置原理六、启动引导:Spring Boot应用启动的秘密在过去两三年的Spring生态圈,最让人兴奋的莫过于Spring Boot框架。或许从命名上就能看出这个框架的设计初衷:快速的启动Spring应用。因而Spring Boot应用本质上就是一个基于Spring框

2020-10-11 22:56:08 304

原创 stack分析工具

https://fastthread.io/ft-thread-report.jsp?dumpId=1&oTxnId_value=d4990599-c893-4037-b5fb-d6823ec81b0e#exceptionMenu

2020-09-30 10:57:05 368

原创 如何拒绝需求

程序员是个好职业,工资高、又体面,唯一的缺点就是费头发。在日常工作当中,产品经理是跟程序员打交道最多的人,据说产品经理的靠谱程度,跟程序员掉头发的速度成反比,也就是说产品经理越不靠谱,程序员越容易早谢。程序员最头痛的事情,莫过于碰到不靠谱的产品经理,吵又吵不赢他们,动手吧,又不是我们这些受过9年义务教育的人应该干的事。那怎么办呢?为了解决这个难题,老K走访了10多位互联网大厂的骨灰级程序员,他们常年跟产品经理打交道,还能活到现在,必定有过人之处,吃过的盐比我们走过的桥还多。关上灯,他们就是房间里最亮的星

2020-09-27 09:39:04 782

原创 sentinel的原理

LeapArray分析我们知道StatisticSlot是Sentinel的核心插槽之一,用于统计实时的数据,后续大部分限流降级的规则都是基于StatisticSlot统计的数据来进行检查。因此对于它是如何统计的,需要了解下。Sentinel 底层采用高性能的滑动窗口数据结构 LeapArray 来统计实时的秒级指标数据它有4个关键的属性。windowLengthInMs 每个窗口有多少毫秒sampleCount 窗口数量intervalInMs 要统计的间隔时长array 即统计

2020-09-11 23:24:09 448

原创 修改线程核心数

https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html

2020-08-21 22:47:01 396

原创 linux的tr命令

tr 命令的功能tr命名是简化了的sed命令。其主要的功能包括:a. 用一个字符来替换另外一个字符。b. 删除字符串中的指定子串。c. 合并字符串中重复串。常见的命令格式:tr -c -d -s [“string1_to_translate_from”] [“string2_to_translate_to”] < input-file-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。-d 删除字符串1中所有输入字符。-s 删除所有重复出现字符序列,只保留第一..

2020-08-18 23:03:27 267

原创 解决gitingnore不生效的问题

git rm -r --cached .git add .git commit -m ‘update .gitignore’

2020-06-08 20:55:45 565

原创 mockito

@RunWith(MockitoJUnitRunner.class)public class UserServiceImplTest { @InjectMocks UserServiceImpl userService; @Mock UserMapperImpl userMapper; @BeforeMethod public void setUp() { Mockito...

2020-05-07 19:29:13 92

原创 java不在担心空指针

1.String 判空 import org.apache.commons.lang.StringUtils; StringUtils.isNotEmpty2.集合类判空 import org.apache.commons.collections.CollectionUtils; CollectionUtils.isNotEmpty(Lists.newArrayList());3.对象链式取...

2020-05-06 17:03:24 129

原创 回退代码

https://blog.csdn.net/gomeplus/article/details/78241070

2020-04-28 15:10:19 224

原创 表查询执行顺序

SELECT 查询列表 ⑦ FROM 表 1 ①【连接类型】 JOIN 表 2 ② ON 连接条件 ③WHERE 筛选条件 ④GROUP BY 分组列表 ⑤HAVING 分组后的筛选条件 ⑥ORDER BY 排序的字段 ⑧LIMIT 起始的条目索引,条目数; ⑨...

2020-04-28 10:33:58 219

原创 Test如何写单测用例

@SpringBootTestpublic class NgTest extends AbstractTestNGSpringContextTests { @Autowire //递归依赖需要通过mock bean来解决,这样聚焦需要测试的类 我们要测试的bean}@SpringBootApplication(scanBasePackages = //mock的bean的包地址 ...

2020-04-26 21:08:33 845

原创 reactor初始

思维的转变以前写代码的逻辑都是“我要去拿什么数据,拿到数据后我要执行什么样的逻辑”reactor之后,是“事件驱动”。“我要拿什么数据,别人告诉我数据好了,我腾出手在去做这件事”...

2020-04-22 18:16:25 144

原创 如果提高提高代码的健壮性

软件开发中最要不得信任因为信任,所以简单。但是在软件开发中,不要相信你的上游、下游、队友、中间件。在开发过程中,需要时时谨记的是在别人错误的情况下,如何实现软件的自保。自救为开发核心,毕竟干100件正确的事情没人记住,一次错误的事情就可能全功尽弃。而不是实现业务流程!1.提高代码健壮性开关逻辑(救命逻辑) : 对于新增功能,改动功能,使用开关进行逻辑分离参数 尽量用符合条件的判断,而不...

2020-04-02 11:50:11 866

原创 IO发展史、利弊

io 发展史、利弊

2020-03-26 21:00:08 274

原创 markdown编辑技巧

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2020-03-26 20:01:33 119

hibernate的chm

不好找的hibernate参考手册,chm的电子书

2015-04-29

使用的ognl的chm

使用的ognl,正对是struts2 hibernate 等

2015-04-29

hibernate-distribution-3.3.1.GA

开发jpa必用的jar,很好很实用,我就是不知道怎样收取积分,就这样传了,

2014-08-09

空空如也

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

TA关注的人

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