自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HNSW算法

向量数据库

2025-03-10 14:05:06 389

原创 mybatis是如何解析mapper的xml文件的

启动时会进行sessionFactory的构建, 开始解析所有mybatis的xml文件解析xml文件, 提前所有的sql对文件中的所有xml的node进行解析解析后分位两类sqlSource, 分别是DynamicSqlSource (判断sql中存在xml的node节点),如果是text节点,则解析为rawSqlSource, rawSqlSource包含staticSqlSource;以下就是静态sql,对于占位符最终后将 #{id, jdbcType=BIGINT} 解析为?

2025-03-04 19:13:14 758

原创 flink代码执行流程

我们知道flink的环境信息是在flink代码提交时创建的, 当flink反射到我们的main方法执行时, 我们自己的业务逻辑是如何执行的呢?如何和flink框架进行交互的?我们知道我们的业务逻辑主要用到的环境方法有两个另外一个就是excute。

2025-02-18 10:40:24 146

原创 lamda表达式是什么

当代码执行到lamda, lamda就会被new, lamda是引其所在的类为外部类, 自己为内部类,创建的对象, 持有外部类的对象 作为自身的参数 arg$1, 以及其他在调用时传入自己参数arg$2, arg$3 等等,

2025-02-14 16:32:41 188

原创 springBoot之环境变量

springboot 在new SpringBootApplication()时, 会扫描所有的spring.factory;它会给每个接口当做group,所有实现类为List当做value,形成map;

2025-02-14 00:54:54 126

原创 深入理解动态代理

对于代码的增强逻辑我们是清楚具体实现的,一种方式是增强逻辑作为委托类,被其他业务类调用,这样会有很多重复代码,而且,当需要根据动态参数来决定增强逻辑时,重复代码会更多,逻辑会更不清晰二,也是动态代理产生的原始需求,解决类爆照问题, 所以jvm自动加载动态生成的class字节码,形成动态代理对象三 动态代理核心要解决就去取增强其他业务代码, 业务代码是泛化的,不确定的,

2025-02-10 19:20:33 504

原创 flink是如何发现我们自己jar的main方法开始执行的

在执行时, 会把全局配置,放入factory的lamda对象, lamda对象就是new和类定义是一起产生的(孪生的,这是lamda的最大特点) ,然后把对象设置进StreamContextEveiroment。后面用户自定义程序时,才能重StreamContextEnviroment中读取全局的flink配置信息, 调用fatory对象的createxxx方法,实现环境变量的构建,给用户的自定义程序使用。因为main方法是static,所以 反射的obj对象是null,调起用户的程序。

2025-02-08 19:19:29 225

原创 flink的streamGraph逻辑图优化为jobGraph

的上限由节点的并行度是否一致, 及下游算子节点只有一个上游等, 把每个节点的上下游节点是否可合并放入两个集合中,然后再递归遍历两个集合中的节点。streamGraph到jobGraph主要作用是优化某些节点的合并,避免任务网络开销, 将多个节点合并在一个slot内执行。然后把可chain的节点放入 以起始节点为key, value是list的map中,把他们可chain一起的算子保存在一起。如果判断下游节点是可chain的, 则不可chain得递归会被忽略,如下代码。从起点开始遍历递归, 判断。

2025-02-07 19:15:36 292

原创 flink如何形成业务代码一致的逻辑图

在构建图时,会转化每个transfer, 从最后的算子节点开始, 但是转化当前算子时, 会优先转化他的前置节点, 即从后向前遍历算子,这样实现了优先实现了第一个算子的转化;这样从后向前的订阅连,其实是通过递归的方式,算完第一个然后挨个往下遍历 和责任链很相似, 处理自己时,先往上处理自己的上游节点,然后栈在一层层退,处理到自己, 然后给边的两头绑两个顶点vetecix;把边给节点,把节点给边,形成相互绑定关系,形成图。

2025-02-07 17:52:39 165

原创 全面理解https

2024-12-18 09:19:57 113

原创 jvm工具

GCEasy,访问地址:https://gceasy.io/,是一款在线的 GC 日志分析工具,支持各种版本的 GC 日志格式。FastThread,官网地址:https://fastthread.io/,线程分析工具,后面我们专门有一节课程会进行介绍。HeapHero,官网地址:https://heaphero.io/,顾名思义,这是一款 Heap Dump 分析工具。

2024-12-06 16:32:18 236

原创 G1、cms 垃圾回收

G1 的remeberSet 增加可达性的中间统计,避免从gc root开始扫描造成全量扫描及耗时较长,实现部分区域回收, 达到回收时间短的目的。CMS 脏卡最终标记处理,处理老年代。

2024-12-06 11:19:56 149

原创 MAT内存分析

2024-12-06 11:15:58 113

原创 分布式锁比较

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

2022-04-07 14:29:21 180

原创 mybatis一级缓存失效

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

2022-04-06 15:12:40 298

原创 G1和CMS

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

2021-05-08 18:18:42 205

原创 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 168

原创 分布式事务

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

2021-05-07 18:31:40 113

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

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

2021-05-06 17:36:27 384

原创 限流

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

2021-05-06 17:00:46 285

原创 网路结构

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

2021-05-06 00:21:53 116

原创 jdk动态代理

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

2021-02-22 22:40:44 116

原创 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 484

原创 责任链模式filter

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

2020-12-08 23:40:25 173

原创 连接风暴

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

2020-12-08 23:02:50 364

原创 限流

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

2020-10-28 17:01:49 107

原创 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 116

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

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

2020-10-15 21:47:45 185

原创 springboot原理知识清单

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

2020-10-11 22:56:08 329

原创 stack分析工具

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

2020-09-30 10:57:05 422

原创 如何拒绝需求

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

2020-09-27 09:39:04 1077

原创 sentinel的原理

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

2020-09-11 23:24:09 521

原创 修改线程核心数

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

2020-08-21 22:47:01 455

原创 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 309

原创 解决gitingnore不生效的问题

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

2020-06-08 20:55:45 614

原创 mockito

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

2020-05-07 19:29:13 129

原创 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 154

原创 回退代码

https://blog.youkuaiyun.com/gomeplus/article/details/78241070

2020-04-28 15:10:19 255

原创 表查询执行顺序

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

2020-04-28 10:33:58 262

原创 Test如何写单测用例

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

2020-04-26 21:08:33 1282

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关注的人

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