自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

原创 java spi 实现

java spi 实现

2023-10-18 14:59:22 106

原创 java进阶-mac x86环境下 实现java native调用

生成.h头文件将在同目录中生成 com_lzz_nativetest_MyNative.h。

2023-07-26 16:37:01 138

原创 Pemja (Java 执行python教程)

pemja 使用

2022-10-19 17:31:26 897 1

原创 Dubbo源码(3)- 扩展点机制

dubbo扩展点 ExtensionLoaderdubbo扩展点加载流程第一步,创建对应的扩展加载类private static final ProxyFactory PROXY_FACTORY = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();调用getAdaptiveExtension() 进行SPI加载public class ExtensionLoader<T

2022-02-02 20:37:20 268

原创 Dubbo源码(2)- 服务发现流程

服务发现当spring在构建bean时,populateBean对属性填充时,会触发beanPostProcessor流程,然后会进行ReferenceAnnotationBeanPostProcessord的流程,对服务进行发现,注入public class ReferenceAnnotationBeanPostProcessor extends AbstractAnnotationBeanPostProcessor implementsApplicationContextAware, Appli

2022-01-30 23:42:13 581

原创 Dubbo源码(1)-服务注册

dubbo源码学习(1)- 服务注册SimpleApplicationEventMulticasterspring 事件广播器,触发监听器的事件listener.onApplicationEvent(event);DubboBootstrapApplicationListener extends OnceApplicationContextEventListener// 监听器进行启动 dubboBootstrappublic class DubboBootstrapApplication

2022-01-30 22:27:49 1746

原创 springIOC生命周期

2021-12-09 13:37:55 187

原创 spring源码下载以及构建

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

2021-11-09 16:01:17 199

原创 分表分页查询:版本冲突导致分表情况下的分页查询异常问题-Must have sharding column with subquery

版本冲突导致分表情况下的分页查询异常问题前提须知首先明确一点,如果子查询中有分表的查询,同时没有将分表依据的字段作为查询参数,会导致无法进行分表查询处理,即抛出异常mybatisplus 分页查询流程,先查数据总数,再查分页数据问题描述当不传分表字段作为参数查询时,查询报错,报错信息如下Must have sharding column with subquery.意思就是查询参数缺少分表依据的字段。2. 传分表字段查询,可以正常分页查询。3. 但是,对于不传分表字段的情况,

2021-01-21 10:16:56 6240 1

原创 Docker安装YAPI接口管理平台

拉镜像docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi创建挂载目录mkdir -p /data/yapi/mongodata运行专用mongodocker run --restart always -v /data/yapi/mongodata:/data/db -d --name yapimongo mongo运行容器初始化docker run -it --rm --link yapimongo:mongo --entryp

2020-10-26 10:32:10 407 8

原创 设计模式之装饰器模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。说明意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。如何解决:将具体功能职责划分,同时继承装饰者模式。关键代码:1、Component 类充当抽象角色,不应该具体实现。2、修饰类引用和继承 Component 类,具体扩展类重写

2020-09-02 21:12:48 67

原创 springcloud 架构图

2020-09-02 18:17:38 299

原创 03.消息中间件RocketMq之顺序消费

消息中间件RocketMq之顺序消费当前情况说明同一个topic 有4个队列队列先天支持FIFO模型,单一生产和消费者下只要保证使用MessageListenerOrderly监听器即可要求保证有序参与因素FIFO队列内保证有序一个线程发送消息一个消费线程顺序消费表示消息消费的顺序同生产者为每个消息队列发送的顺序一致,所以如果正在处理全局顺序是强制性的场景,需要确保使用的主题只有一个消息队列。并行消费不再保证消息顺序,消费的最大并行数量受每个消费者客户端指定的线

2020-08-28 23:32:53 252

原创 Redis入门之 SortedSet

Redis入门之 SortedSetRedis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。内存存放位置:左小右大有序集合的成员是唯一的,但分数(score)却可以重复。指令序号命令描述1ZADD key score1 member1 [score2 member2]向有序集合添加一个或多个成员,或者更新已存在成员的分数2ZCA

2020-08-28 23:31:08 100

原创 Redis入门之Set

Redis入门之SetRedis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。inter 交集union 并集diff 差集具体指令序号命令描述1SADD key member1 [member2]向集合添加一个或多个成员2SCARD key获取集合的成员数3SDIFF key1 [key2]返回第一个集合

2020-08-28 23:30:15 104

原创 Redis入门之String

Redis入门之String能操作的对象stringintbitmap二进制安全redis 获取的是字节流防止IO读取的时候发送编解码问题,因为redis支持异构系统hbase 也是二进制安全的。因此不同语言使用redis进行通信时,选择相同的编码即可stringn操作setgetappendsetrangegetrangestrlen数值操作// 加1> incr k1 // 减1> decr k1 // 减少指定数值DECRBY ke

2020-08-28 23:29:43 92

原创 Redis入门之List

Redis入门之List可描述栈的形式同向命令 push 、pop可用作栈使用队列,方向队列反向向命令 push 、pop可作为队列使用lindex,lset情况下作为数组使用阻塞操作单播队列,FIFOlpush /RPUSH从头添加 LPUSH key value [value ...] summary: Prepend one or multiple values to a list since: 1.0.0从尾添加RPUSH k

2020-08-28 23:29:01 95

原创 02.消息中间件RocketMq之事务消息

消息中间件RocketMq之事务处理分布式系统中的事务可以使用TCC(Try、Confirm、Cancel)、2pc来解决分布式系统中的消息原子性RocketMQ 4.3+提供分布事务功能,通过 RocketMQ 事务消息能达到分布式事务的最终一致RocketMQ实现方式2PCHalf Message:预处理消息,当broker收到此类消息后,会存储到RMQ_SYS_TRANS_HALF_TOPIC的消息消费队列中检查事务状态:Broker会开启一个定时任务,消费RMQ_SYS

2020-08-24 16:55:12 236

原创 01.消息中间件RocketMq之Api使用

消息中间件RocketMq之Api使用简单使用Producer public static void main(String[] args) throws Exception { DefaultMQProducer producer = new DefaultMQProducer("myProducer01"); // 设置nameserver 地址 producer.setNamesrvAddr("127.0.0.1:9876");

2020-08-24 16:53:34 196

原创 设计模式之责任链模式

责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。介绍意图:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。如何解决:拦截的类都实现统一接

2020-08-22 20:36:37 78

原创 设计模式之策略模式

设计模式之策略模式模式来源如果有一个过程的情况有很多,需要用if-esle语句,这个时候所带来的复杂和难以维护思路实现同一个接口。将这些算法封装成一个一个的类,任意地替换。代码实现例子说明根据条件进行加、减操作定义接口public interface Strategy { public int doOperation(int num1, int num2);}编写策略public class OperationAdd implements Strategy{

2020-08-22 17:43:04 93

原创 设计模式之单例模式

单例模式一个类在内存中只有一个。饿汉式类加载到内存后,就实例化一个单例,JVM保证线程安全简单实用,推荐使用!唯一缺点:不管用到与否,类装载时就完成实例化public class Mgr01 { private static final Mgr01 INSTANCE = new Mgr01(); private Mgr01() {}; public static Mgr01 getInstance() { return INSTANCE;

2020-08-22 17:04:10 79

原创 多线程之Disruptor高性能内存队列

多线程之Disruptor高性能内存队列消息队列容器Disruptor的特点Disruptor是数组实现的无锁,高并发,使用环形Buffer,直接覆盖(不用清除)旧的数据,降低GC频率实现了基于事件的生产者消费者模式(观察者模式)RingBuffer环形队列RingBuffer的序号,指向下一个可用的元素采用数组实现,没有首尾指针对比ConcurrentLinkedQueue,用数组实现的速度更快原素定位假如长度为8,当添加到第12个元素的时候在哪个序号上呢?用12%8决定

2020-08-22 15:22:31 531

原创 高并发多线程之ThreadLocal

ThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应的值。ThreadLocal的源码ThreadLocalMap getMap(Thread t) { return t.threadLocals;}```javapublic void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap

2020-08-17 17:17:23 237

原创 数据结构之HashMap1.8版本源码过程解析

HashMap源码过程解析继承、实现关系相关默认属性默认初始容量:16最大容量:1<<30加载因子:0.75f树化阈值:8树退化阈值:6static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16static final int MAXIMUM_CAPACITY = 1 << 30;static final float DEFAULT_LOAD_FACTOR = 0.75f;stat

2020-08-16 22:13:39 102

原创 MySQL入门之锁机制

mysql的锁机制1. MySQL锁的基本介绍锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。相对其他数据库而言,MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。MyISAM和MEMO

2020-08-14 22:45:15 110

原创 MySQL入门之 执行计划

mysql执行计划explain可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。1、执行计划中包含的信息ColumnMeaningidThe SELECT identifierselect_typeThe SELECT typetable输出行的表partitions匹配的分区type联接类型possible_keys可以选择的索引key实际选择的指数key_len

2020-08-14 21:30:36 96

原创 MySQL入门之索引基础

MySQL入门之索引基础索引数据结构为b+树主键索引:主键索引的叶子节点保存着主键即对应行的全部数据。在InnoDB里,主键索引也被称为聚簇索引(clustered index)。二级索引(非主键索引): 二级索引树中的叶子结点保存着索引值和主键值,当使用二级索引进行查询时,需要进行回表操作。在InnoDB里,非主键索引也被称为二级索引(secondary index)覆盖索引当sql语句的所求查询字段(select列)和查询条件字段(where子句)全都包含在一个索引中(联合索引),

2020-08-14 19:04:01 175

原创 MySQL入门之日志

MySQL入门之日志redo loginnodb存储引擎的日志文件当发生数据修改的时候,innodb引擎会先将记录写到redo log中,并更新内存,此时更新就算是完成了,同时innodb引擎会在合适的时机将记录操作到磁盘中Redolog是固定大小的,是循环写的过程有了redolog之后,innodb就可以保证即使数据库发生异常重启,之前的记录也不会丢失,叫做crash-safeundo logUndo Log是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用U

2020-08-14 19:01:41 77

原创 多线程之JMH测试

介绍JMH 是 Java Microbenchmark Harness 的缩写。中文意思大致是 “JAVA 微基准测试套件”优势可重复性:可进行重复性的测试,这样做有利于比较每次的测试结果,得到性能结果的长期变化趋势,为系统调优和上线前的容量规划做参考。可观测性:通过全方位的监控(包括测试开始到结束,执行机、服务器、数据库),及时了解和分析测试过程发生了什么。可展示性:相关人员可以直观明了的了解测试结果(web界面、仪表盘、折线图树状图等形式)。真实性:测试的结果反映了客户体验

2020-08-12 19:12:49 726

原创 多线程之ForkJoinPool的使用

多线程之ForkJoinPool无返回结果用法任务定义继承RecursiveAction类,实现compute方法任务分片方式// 创建新的任务AddTask subTask1 = new AddTask(start, middle);AddTask subTask2 = new AddTask(middle, end);// 进行执行subTask1.fork();subTask2.fork();RecursiveAction extends ForkJoinTask<V

2020-08-11 23:00:27 319

原创 JVM之G1垃圾回收器

流程1.初始标记STW后,寻找root节点,时间较短GC ROOT =局部变量、静态变量、常量、jni(native方法)的对象2.并发标记不进行STW并发进行标记,同时可能也会出现垃圾3.重新标记进行STW,并发的进行重新标记4.并发清理不进行STW,并发清理垃圾,可能出现浮动垃圾YGC + MixedGc + serialGc标记算法-三色标记黑色:本身和子引用都被扫描灰色:本身被扫描,子引用未扫描白色:未漏标情况:因为是并发标记,存在已经标记为黑色的对象 增加了一

2020-08-09 16:21:13 240 2

原创 高并发多线程之线程

有关概念程序:指令的集合,例如我们写的java代码所构成的一个文件进程:正在执行的一个程序线程:进程中的一个“单一的连续控制流程”,一个进程中至少有一个线程线程的状态新生状态,刚刚创建就绪状态,准备执行,表示start()之后添加到就绪队列,所有线程同>时抢占cpu,notify、notifyAll、yield后都会进入这个状态运行状态死亡状态,正常结束、人为中断、出现异常结束。阻塞状态,执行了sleep或者等待I/O资源,在改状态下,不能进入就绪队列,除非阻塞原因解除,会再

2020-08-03 21:07:47 150

原创 高并发多线程之线程池知识点

常用线程池分类ThreadPoolExecutor例如: newFixedThreadPool、newSingleThreadExecutor、newCachedThreadPool2. ScheduledThreadPoolExecutor可调度线程池例如:newScheduledThreadPool3. ForkJoinPool 分而治线程池例如newWorkStealingPool线程池生命周期Running 能接受提交的任务,并处理阻塞队列中的任务;shutdown 关

2020-08-03 21:06:45 560

原创 数据结构Map之HashMap

HashMapkey无序,唯一value 无序,不唯一线程不安全,效率高允许key或值为null底层transient Node<K,V>[] table;// 数组transient Node<K,V>[] table;// 链表static class Node<K,V> implements Map.Entry<K,V>{ Node(int hash, K key, V value, Node<K,V> nex

2020-08-03 14:47:47 130

原创 数据结构List之ArrayList

ArrayList数组形式,连续空间优点:遍历 访问 效率高缺点:删除 添加效率低,按内容查效率低默认容量DEFAULT_CAPACITY = 10最大容量private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;其中 Integer.MAX_VALUE = 0x7fffffff;添加数据public boolean add(E e) { ensureCapacityInternal(size

2020-08-03 14:42:23 150

原创 数据结构List之LinkedList

LinkedList存储方式 双向链表存储方式优点:插入、删除效率高缺点:遍历、查询较慢结构 transient int size = 0; /** * Pointer to first node. * Invariant: (first == null && last == null) || * (first.prev == null && first.item != null) *

2020-08-03 14:41:15 135

cross-request-3.3.0.zip

yapi 上传文件、测试请求cookie问题

2021-04-08

空空如也

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

TA关注的人

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