- 博客(32)
- 收藏
- 关注
转载 数据库切片大对决:ShardingSphere与Mycat技术解析
在数据库的舞台上,有两位颇受欢迎的明星,它们分别是ShardingSphere和Mycat。这两位巨星在数据库切片的世界里大放异彩,好像是一场引人入胜的数据库技术盛宴。在这场Sharding大战中,我们将揭开它们的神秘面纱,看看它们是如何在分布式世界中舞动的。ShardingSphere 是一款由 Apache 软件基金会孵化的分布式数据库中间件,旨在提供数据分片、分库分表、分布式事务等功能。
2024-03-13 11:32:27
189
原创 CPU飙高排查方案
注意:上述的线程id是一个十进制,我们需要把这个线程id转换为16进制才行,因为通常在日志中展示的都是16进制的线程id名称。2.通过top命令查看后,可以查看是哪一个进程占用cpu较高,上图所示的进程为:30978。5.可以根据线程 id 找到有问题的线程,进一步定位到问题代码的源码行号。4.通过上图分析,在进程30978中的线程30979占用cpu较高。1.使用top命令查看占用cpu的情况。3.查看当前线程中的进程信息。tid 进程中的线程id。在linux中执行命令。
2024-03-07 15:47:39
694
1
转载 垃圾收集器浅析
使用G1收集器时,Java堆的内存布局与就与其他收集器有很大差别,它将整个Java堆划分为多个大小相等的独立区域(Region),虽然还保留有新生代和老年代的概念,但新生代和老年代不再是物理隔离的了,它们都是一部分Region(不需要连续)的集合。ParallelScavenge收集器是一个新生代收集器,它也是使用复制算法的收集器,又是并行的多线程收集器,看上去和ParNew一样,但是ParallelScanvenge更关注系统的。......
2024-03-06 15:12:44
49
原创 日期添加到指定位置的 PDF 文件中
使用 PDFBox 库将日期添加到指定位置的 PDF 文件中。上述代码加载了 PDF 文件,获取了第一页,并创建了一个。方法设置日期的位置为指定的坐标 (x, y),使用。方法将日期添加到 PDF 文件中,最后使用。替换为你希望的日期位置的 x 和 y 坐标。,用于将日期添加到 PDF 文件中。方法开始添加文本,使用。
2023-12-11 10:16:19
205
原创 java.io.IOException: Broken pipe 管道关闭
在做两个微服务互相调用的项目的时候遇到java.io.IOException: Broken pipe的错误如下图。1.将中间表切换成其没有大字段的表,然后异步将数据存入到主表中。2.修改配置文件增加数据库连接池的数量。
2023-12-11 09:36:28
563
原创 Oracle:ORA-01795: maximum number of expressions in a list is 1000
【代码】Oracle:ORA-01795: maximum number of expressions in a list is 1000。
2023-09-20 16:52:25
223
原创 JavaScript中的 == 和 === 的区别
因此,如果您需要比较两个值的类型和值是否完全相同,请使用`===`运算符。但是,建议在可能的情况下始终使用`===`运算符,因为它可以避免由于类型转换而导致的意外行为。`==`运算符会在比较之前进行类型转换,以确保两个值的类型相同。例如,如果比较一个字符串和一个数字,`==`运算符会将字符串转换为数字,然后再进行比较。`===`运算符不会进行类型转换,它只会比较两个值的类型和值是否相同。在JavaScript中,`==`和`===`都是用于比较两个值的运算符,但它们的行为略有不同。
2023-09-14 16:30:43
109
原创 JVM-03
Stop-The-World 简称 STW该回收的对象没有被回收不该回收的对象被回收了在STW状态下,所有的线程都是停止运行的 - >垃圾回收线程除外当STW发生时,出了GC所需要的线程,其他的线程都将停止工作,中断了的线程知道GC线程结束才会继续任务STW是不可避免的,垃圾回收算法的执行一定会出现STW,而我们最好的解决办法就是减少停顿的时间GC各种算法的优化重点就是为了减少STW,这也是JVM调优的重点。当我们进行young gc时,我们的。
2023-09-03 23:17:49
62
原创 JVM-02
1.强引用JVM内存管理器从根引用集合(Root Set)出发遍寻堆中所有到达对象的路径。当到达某对象的任意路径都不含有引用对象时,对这个对象的引用就被称为强引用2.软引用软引用是用来描述一些还有用但是非必须的对象。对于软引用关联的对象,在系统将于发生内存溢出异常之前,将会把这些对象列进回收范围中进行二次回收。(当你去处理占用内存较大的对象 并且生命周期比较长的,不是频繁使用的)问题:软引用可能会降低应用的运行效率与性能。
2023-09-03 21:23:19
64
原创 并发编程-集合
TreeNode中不但包含了红黑树的parent,left,right,red之外,还有维护的prev,以及继承自父类的next。而且在ConcurrentHashMap的有参构造中,虽然可以穿度一个负载因子的参数,但是无法修改他,在有参构造的逻辑里,仅仅是拿着传入的loadFactor计算初始数组的长度。在协助扩容前,有几个判断,主要是判断扩容是否结束,以及协助扩容的线程是否已经达到最大值的这两个判断,这两个判断没有将扩容标识戳做左移操作,就直接与sizeCtl做判断了,这种判断是没有任何意义的。
2023-09-03 18:02:25
91
原创 并发编程-锁
先说清楚和JUC的关系以及说和JUC下其他类的关系,然后说内部的核心结构。你可以往你会的地方拐。AQS本质就是JUC包下的一个抽象类,JUC包下的一些并发工具,并发集合,线程池,锁都是基于AQS作为基础类去实现的。AQS里面有一个核心属性和两个核心的结构:volatile修饰的,并且基于CAS修改的state属性。由Node组成的一个双向链表,或者说叫同步队列。由Node组成的一个单向链表,这个是用于实现类似synchronized的wait和notify的结构。
2023-08-30 14:18:34
114
1
原创 并发编程-基础
线程池可以指定好工作线程的个数,别超过限制,超过了,甩你拒绝策略。实现Callable,需要FutureTask做封装,在启动线程时,依然是执行的FutureTask实现Runnable时重写的run方法,在run方法内部,执行的Callable的call方法。1、使用Executors自带的方式构建(不推荐),线程池参数很多,这种自带的,只提供了修改部分参数的功能,无法完整的掌握线程池的细节。因为线程池不区分核心和非核心,里面只判断个数,如果有一个工作线程凉了,那还是3个工作线程,满足参数的哟求。
2023-08-29 22:04:20
65
1
原创 04-redis
其实我们面试被问到这样的源码问题,大家肯定不会对各种数据类型有这么高的熟悉度(通过源码去掌握),我给大家的建议是记住以下的几点即可(达到面试的要求):1、除了String,其他的数据类型都有2种及以上的实现。2、双向链表不用多说,就是方便两头遍历。哈希表也不用多说,也就是类似于HashMap(数组+链表)。3、压缩列表实际上类似于一个数组,压缩列表在表头有三个字段 zlbytes、zltail 和 zllen,分别表示列表长度、列表尾的偏移量和列表中的 entry 个数。
2023-08-29 16:18:28
141
1
原创 03-redis
Redlock 只有建立在「时钟正确」的前提下,才能正常工作,如果你可以保证这个前提,那么可以拿来使用。但是时钟偏移在现实中是存在的:第一,从硬件角度来说,时钟发生偏移是时有发生,无法避免。例如,CPU 温度、机器负载、芯片材料都是有可能导致时钟发生偏移的。第二,人为错误也是很难完全避免的。所以,Redlock尽量不用它,而且它的性能不如单机版 Redis,部署成本也高,优先考虑使用主从+ 哨兵的模式 实现分布式锁(只会有很小的记录发生主从切换时的锁丢失问题)。
2023-08-28 21:50:46
87
1
原创 02-redis
出于性能和并发的要求我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问数据库。MySQL执行SQL的并发一般是1500QPS左右,而使用高效的缓存的话,Redis可以达到10W+的QPS。
2023-08-27 12:54:24
82
1
原创 01-Spring
refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext 容器,容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法,我们把它们称为 refresh 的 12 个步骤:onRefresh。
2023-08-26 11:55:58
60
原创 01-JVM
有的文章提到【Finalizer 线程会和我们的主线程进行竞争,不过由于它的优先级较低,获取到的CPU时间较少,因此它永远也赶不上主线程的步伐】这个显然是错误的,FinalizerThread 的优先级较普通线程更高,原因应该是 finalize 串行执行慢等原因综合导致。假设你自己的类加载器不用双亲委派,那么你的类加载器加载假冒的 java.lang.System 时,它需要先加载父类 java.lang.Object,而你没有用委派,找不到 java.lang.Object 所以加载会失败。
2023-08-26 11:38:57
49
原创 02-并发篇
掌握 Java 线程六种状态掌握 Java 线程状态转换能理解五种状态与六种状态两种说法的区别分别是新建当一个线程对象被创建,但还未调用 start 方法时处于状态此时未与操作系统底层线程关联可运行调用了 start 方法,就会由进入此时与底层线程关联,由操作系统调度执行终结线程内代码已经执行完毕,由进入此时会取消与底层线程关联阻塞当获取锁失败后,由进入 Monitor 的阻塞队列,此时不占用 cpu 时间当持锁线程释放锁时,会按照一定规则唤醒阻塞队列中的线程,唤醒后的线程进入。
2023-08-26 11:04:16
49
原创 04-java基础
hash 表的查找,更新的时间复杂度是 $O(1)$,而红黑树的查找,更新的时间复杂度是 $O(log_2n )$,TreeNode 占用空间也比普通 Node 的大,如非必要,尽量还是使用链表。S_{(n-1)}∗31^0$有一个有序表为 1,5,8,11,19,22,31,35,40,45,48,49,50 当二分查找值为 48 的结点时,查找成功需要比较的次数。使用二分法在序列 1,4,6,7,15,33,39,50,64,78,75,81,89,96 中查找元素 81 时,需要经过( )次比较。
2023-08-26 11:01:16
48
原创 飞滴出行网约车2022版
视频地址:马士兵教育官网 - IT职业领路人项目地址:online-taxi-2022-public: 飞滴出行网约车2022版
2023-08-26 10:35:52
340
1
原创 Java项目实战微服务项目《黑马头条》
视频地址:【黑马程序员Java项目实战微服务项目《黑马头条》开发全套视频教程,基于SpringBoot+SpringCloud+Nacos等企业级微服务架构项目解决方案】 https://www.bilibili.com/video/BV1Qs4y1v7x4/?
2023-08-26 10:26:35
214
原创 01-redis
1、哨兵模式的架构:2、什么是哨兵模式:在主从模式下(主从模式就是把上图的所有哨兵去掉),master节点负责写请求,然后异步同步给slave节点,从节点负责处理读请求。如果master宕机了,需要手动将从节点晋升为主节点,并且还要切换客户端的连接数据源。这就无法达到高可用,而通过哨兵模式就可以解决这一问题。哨兵模式是Redis的高可用方式,哨兵节点是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。
2023-08-26 10:13:57
70
原创 03-Java基础
为了更好地促进互联网的研究和发展,国际标准化组织ISO在1985 年指定了网络互联模型。OSI 参考模型(Open System Interconnect ReferenceModel),具有 7 层结构应用层:各种应用程序协议,比如HTTP、HTTPS、FTP、SOCKS安全套接字协议、DNS域名系统、GDP网关发现协议等等。表示层:加密解密、转换翻译、压缩解压缩,比如LPP轻量级表示协议。会话层。
2023-08-26 10:02:32
48
原创 02-Java基础
Java线程是Java程序中的执行单元。一个Java程序可以同时运行多个线程,每个线程可以独立执行不同的任务。线程的执行是并发的,即多个线程可以同时执行。
2023-08-26 10:00:17
45
原创 01-Java基础
基本类型大小(字节)默认值封装类byte1(byte)0Byteshort2(short)0Shortint40Integerlong80lLongfloat40.0fFloatdouble80.0dDoublebooleanfalseBooleanchar2Characterboolean: int 4个字节需要注意:int是基本数据类型,Integer是int的封装类,是引用类型。
2023-08-26 09:58:06
48
原创 01-并发编程
单例模式中的懒汉机制中,就存在一个这样的问题。懒汉为了保证线程安全,一般会采用DCL的方式。但是单单用DCL,依然会有几率出现问题。线程可能会拿到初始化一半的对象去操作,极有可能出现NullPointException。(初始化对象三部,开辟空间,初始化内部属性,指针指向引用)在Java编译.java为.class时,会基于JIT做优化,将指令的顺序做调整,从而提升执行效率。在CPU层面,也会对一些执行进行重新排序,从而提升执行效率。这种指令的调整,在一些特殊的操作上,会导致出现问题。
2023-04-05 13:06:35
163
1
原创 InnoDB引擎底层解析
InnoDB的内存结构和磁盘存储结构图总结如下其中的Insert/ChangeBuffer主要是用于对二级索引的写入优化,Undo空间则是undo日志一般放在系统表空间,但是通过参数配置后,也可以用独立表空间存放,所以用虚线表示。httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。...
2022-07-27 23:46:22
298
Java面试题合集最新版2024.zip
2024-03-12
JDK(Java Development Kit)是Java开发工具包,提供了Java开发所需的工具和库
2024-03-11
系统架构师案例分析知识点整理
2024-03-11
1.软件设计师教程(第5版)
2024-03-11
飞书开发工具包(SDK)飞书jar包
2024-03-11
初级,中级,高级的程序员java简历
2024-03-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人