自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

转载 数据库切片大对决:ShardingSphere与Mycat技术解析

在数据库的舞台上,有两位颇受欢迎的明星,它们分别是ShardingSphere和Mycat。这两位巨星在数据库切片的世界里大放异彩,好像是一场引人入胜的数据库技术盛宴。在这场Sharding大战中,我们将揭开它们的神秘面纱,看看它们是如何在分布式世界中舞动的。ShardingSphere 是一款由 Apache 软件基金会孵化的分布式数据库中间件,旨在提供数据分片、分库分表、分布式事务等功能。

2024-03-13 11:32:27 20

原创 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 533 1

原创 docker命令大全

【代码】docker命令大全。

2024-03-06 16:18:20 304

原创 linux命令大全

【代码】linux命令大全。

2024-03-06 16:12:15 546

原创 git命令大全

【代码】git命令大全。

2024-03-06 16:00:28 330

转载 垃圾收集器浅析

使用G1收集器时,Java堆的内存布局与就与其他收集器有很大差别,它将整个Java堆划分为多个大小相等的独立区域(Region),虽然还保留有新生代和老年代的概念,但新生代和老年代不再是物理隔离的了,它们都是一部分Region(不需要连续)的集合。ParallelScavenge收集器是一个新生代收集器,它也是使用复制算法的收集器,又是并行的多线程收集器,看上去和ParNew一样,但是ParallelScanvenge更关注系统的。......

2024-03-06 15:12:44 13

原创 idea通过通过jar包引入到项目中

https://mvnrepository.com/

2024-02-28 12:02:08 327

原创 pdf根据文字定位添加日期

【代码】pdf根据文字定位添加日期。

2024-02-28 11:51:13 438

原创 日期添加到指定位置的 PDF 文件中

使用 PDFBox 库将日期添加到指定位置的 PDF 文件中。上述代码加载了 PDF 文件,获取了第一页,并创建了一个。方法设置日期的位置为指定的坐标 (x, y),使用。方法将日期添加到 PDF 文件中,最后使用。替换为你希望的日期位置的 x 和 y 坐标。,用于将日期添加到 PDF 文件中。方法开始添加文本,使用。

2023-12-11 10:16:19 57

原创 java.io.IOException: Broken pipe 管道关闭

在做两个微服务互相调用的项目的时候遇到java.io.IOException: Broken pipe的错误如下图。1.将中间表切换成其没有大字段的表,然后异步将数据存入到主表中。2.修改配置文件增加数据库连接池的数量。

2023-12-11 09:36:28 269

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

原创 JavaScript中的 == 和 === 的区别

因此,如果您需要比较两个值的类型和值是否完全相同,请使用`===`运算符。但是,建议在可能的情况下始终使用`===`运算符,因为它可以避免由于类型转换而导致的意外行为。`==`运算符会在比较之前进行类型转换,以确保两个值的类型相同。例如,如果比较一个字符串和一个数字,`==`运算符会将字符串转换为数字,然后再进行比较。`===`运算符不会进行类型转换,它只会比较两个值的类型和值是否相同。在JavaScript中,`==`和`===`都是用于比较两个值的运算符,但它们的行为略有不同。

2023-09-14 16:30:43 71

原创 JVM-03

Stop-The-World 简称 STW该回收的对象没有被回收不该回收的对象被回收了在STW状态下,所有的线程都是停止运行的 - >垃圾回收线程除外当STW发生时,出了GC所需要的线程,其他的线程都将停止工作,中断了的线程知道GC线程结束才会继续任务STW是不可避免的,垃圾回收算法的执行一定会出现STW,而我们最好的解决办法就是减少停顿的时间GC各种算法的优化重点就是为了减少STW,这也是JVM调优的重点。当我们进行young gc时,我们的。

2023-09-03 23:17:49 37

原创 JVM-02

1.强引用JVM内存管理器从根引用集合(Root Set)出发遍寻堆中所有到达对象的路径。当到达某对象的任意路径都不含有引用对象时,对这个对象的引用就被称为强引用2.软引用软引用是用来描述一些还有用但是非必须的对象。对于软引用关联的对象,在系统将于发生内存溢出异常之前,将会把这些对象列进回收范围中进行二次回收。(当你去处理占用内存较大的对象 并且生命周期比较长的,不是频繁使用的)问题:软引用可能会降低应用的运行效率与性能。

2023-09-03 21:23:19 23

原创 并发编程-集合

TreeNode中不但包含了红黑树的parent,left,right,red之外,还有维护的prev,以及继承自父类的next。而且在ConcurrentHashMap的有参构造中,虽然可以穿度一个负载因子的参数,但是无法修改他,在有参构造的逻辑里,仅仅是拿着传入的loadFactor计算初始数组的长度。在协助扩容前,有几个判断,主要是判断扩容是否结束,以及协助扩容的线程是否已经达到最大值的这两个判断,这两个判断没有将扩容标识戳做左移操作,就直接与sizeCtl做判断了,这种判断是没有任何意义的。

2023-09-03 18:02:25 38

原创 并发编程-锁

先说清楚和JUC的关系以及说和JUC下其他类的关系,然后说内部的核心结构。你可以往你会的地方拐。AQS本质就是JUC包下的一个抽象类,JUC包下的一些并发工具,并发集合,线程池,锁都是基于AQS作为基础类去实现的。AQS里面有一个核心属性和两个核心的结构:volatile修饰的,并且基于CAS修改的state属性。由Node组成的一个双向链表,或者说叫同步队列。由Node组成的一个单向链表,这个是用于实现类似synchronized的wait和notify的结构。

2023-08-30 14:18:34 31 1

原创 并发编程-基础

线程池可以指定好工作线程的个数,别超过限制,超过了,甩你拒绝策略。实现Callable,需要FutureTask做封装,在启动线程时,依然是执行的FutureTask实现Runnable时重写的run方法,在run方法内部,执行的Callable的call方法。1、使用Executors自带的方式构建(不推荐),线程池参数很多,这种自带的,只提供了修改部分参数的功能,无法完整的掌握线程池的细节。因为线程池不区分核心和非核心,里面只判断个数,如果有一个工作线程凉了,那还是3个工作线程,满足参数的哟求。

2023-08-29 22:04:20 32 1

原创 ​​04-redis

其实我们面试被问到这样的源码问题,大家肯定不会对各种数据类型有这么高的熟悉度(通过源码去掌握),我给大家的建议是记住以下的几点即可(达到面试的要求):1、除了String,其他的数据类型都有2种及以上的实现。2、双向链表不用多说,就是方便两头遍历。哈希表也不用多说,也就是类似于HashMap(数组+链表)。3、压缩列表实际上类似于一个数组,压缩列表在表头有三个字段 zlbytes、zltail 和 zllen,分别表示列表长度、列表尾的偏移量和列表中的 entry 个数。

2023-08-29 16:18:28 35 1

原创 03-redis

Redlock 只有建立在「时钟正确」的前提下,才能正常工作,如果你可以保证这个前提,那么可以拿来使用。但是时钟偏移在现实中是存在的:第一,从硬件角度来说,时钟发生偏移是时有发生,无法避免。例如,CPU 温度、机器负载、芯片材料都是有可能导致时钟发生偏移的。第二,人为错误也是很难完全避免的。所以,Redlock尽量不用它,而且它的性能不如单机版 Redis,部署成本也高,优先考虑使用主从+ 哨兵的模式 实现分布式锁(只会有很小的记录发生主从切换时的锁丢失问题)。

2023-08-28 21:50:46 38 1

原创 02-redis

出于性能和并发的要求我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问数据库。MySQL执行SQL的并发一般是1500QPS左右,而使用高效的缓存的话,Redis可以达到10W+的QPS。

2023-08-27 12:54:24 35 1

原创 01-Spring

refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext 容器,容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法,我们把它们称为 refresh 的 12 个步骤:onRefresh。

2023-08-26 11:55:58 26

原创 01-JVM

有的文章提到【Finalizer 线程会和我们的主线程进行竞争,不过由于它的优先级较低,获取到的CPU时间较少,因此它永远也赶不上主线程的步伐】这个显然是错误的,FinalizerThread 的优先级较普通线程更高,原因应该是 finalize 串行执行慢等原因综合导致。假设你自己的类加载器不用双亲委派,那么你的类加载器加载假冒的 java.lang.System 时,它需要先加载父类 java.lang.Object,而你没有用委派,找不到 java.lang.Object 所以加载会失败。

2023-08-26 11:38:57 21

原创 02-并发篇

掌握 Java 线程六种状态掌握 Java 线程状态转换能理解五种状态与六种状态两种说法的区别分别是新建当一个线程对象被创建,但还未调用 start 方法时处于状态此时未与操作系统底层线程关联可运行调用了 start 方法,就会由进入此时与底层线程关联,由操作系统调度执行终结线程内代码已经执行完毕,由进入此时会取消与底层线程关联阻塞当获取锁失败后,由进入 Monitor 的阻塞队列,此时不占用 cpu 时间当持锁线程释放锁时,会按照一定规则唤醒阻塞队列中的线程,唤醒后的线程进入。

2023-08-26 11:04:16 23

原创 04-java基础

hash 表的查找,更新的时间复杂度是 $O(1)$,而红黑树的查找,更新的时间复杂度是 $O(log_2⁡n )$,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 30

原创 飞滴出行网约车2022版

视频地址:马士兵教育官网 - IT职业领路人项目地址:online-taxi-2022-public: 飞滴出行网约车2022版

2023-08-26 10:35:52 164

原创 Java项目实战微服务项目《黑马头条》

视频地址:【黑马程序员Java项目实战微服务项目《黑马头条》开发全套视频教程,基于SpringBoot+SpringCloud+Nacos等企业级微服务架构项目解决方案】 https://www.bilibili.com/video/BV1Qs4y1v7x4/?

2023-08-26 10:26:35 112

原创 01-redis

1、哨兵模式的架构:2、什么是哨兵模式:在主从模式下(主从模式就是把上图的所有哨兵去掉),master节点负责写请求,然后异步同步给slave节点,从节点负责处理读请求。如果master宕机了,需要手动将从节点晋升为主节点,并且还要切换客户端的连接数据源。这就无法达到高可用,而通过哨兵模式就可以解决这一问题。哨兵模式是Redis的高可用方式,哨兵节点是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。

2023-08-26 10:13:57 33

原创 03-Java基础

为了更好地促进互联网的研究和发展,国际标准化组织ISO在1985 年指定了网络互联模型。OSI 参考模型(Open System Interconnect ReferenceModel),具有 7 层结构应用层:各种应用程序协议,比如HTTP、HTTPS、FTP、SOCKS安全套接字协议、DNS域名系统、GDP网关发现协议等等。表示层:加密解密、转换翻译、压缩解压缩,比如LPP轻量级表示协议。会话层。

2023-08-26 10:02:32 24

原创 02-Java基础

Java线程是Java程序中的执行单元。一个Java程序可以同时运行多个线程,每个线程可以独立执行不同的任务。线程的执行是并发的,即多个线程可以同时执行。

2023-08-26 10:00:17 17

原创 01-Java基础

基本类型大小(字节)默认值封装类byte1(byte)0Byteshort2(short)0Shortint40Integerlong80lLongfloat40.0fFloatdouble80.0dDoublebooleanfalseBooleanchar2Characterboolean: int 4个字节需要注意:int是基本数据类型,Integer是int的封装类,是引用类型。

2023-08-26 09:58:06 18

原创 01-并发编程

单例模式中的懒汉机制中,就存在一个这样的问题。懒汉为了保证线程安全,一般会采用DCL的方式。但是单单用DCL,依然会有几率出现问题。线程可能会拿到初始化一半的对象去操作,极有可能出现NullPointException。(初始化对象三部,开辟空间,初始化内部属性,指针指向引用)在Java编译.java为.class时,会基于JIT做优化,将指令的顺序做调整,从而提升执行效率。在CPU层面,也会对一些执行进行重新排序,从而提升执行效率。这种指令的调整,在一些特殊的操作上,会导致出现问题。

2023-04-05 13:06:35 117 1

原创 InnoDB引擎底层解析

InnoDB的内存结构和磁盘存储结构图总结如下其中的Insert/ChangeBuffer主要是用于对二级索引的写入优化,Undo空间则是undo日志一般放在系统表空间,但是通过参数配置后,也可以用独立表空间存放,所以用虚线表示。httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。...

2022-07-27 23:46:22 217

Java面试题合集最新版2024.zip

Java面试通常涵盖多个方面,包括Java基础知识、编程技能、问题解决能力,以及对Java生态系统和相关技术的理解。以下是一些建议的Java面试准备要点和资源描述: 一、Java基础知识 数据类型、变量与运算符:理解Java中的基本数据类型、变量声明与初始化,以及常用的运算符和表达式。 控制流语句:熟悉if-else、switch、for、while等控制流语句的用法。 面向对象编程:深入理解Java中的类、对象、继承、封装和多态等概念。 异常处理:了解try-catch-finally块的使用,以及自定义异常的处理。 二、Java进阶知识 集合框架:熟悉Java集合框架中的List、Set、Map等接口及其实现类,如ArrayList、HashSet、HashMap等。 泛型:理解泛型的概念及其在Java中的应用,如泛型类和泛型方法。 并发编程:了解Java中的线程、同步、锁等机制,以及Java并发包中的工具类。 JVM与性能调优:对Java虚拟机(JVM)有一定了解,包括内存管理、垃圾回收等方面,并知道如何进行基本的性能调优。

2024-03-12

JDK(Java Development Kit)是Java开发工具包,提供了Java开发所需的工具和库

JDK(Java Development Kit)是Java开发工具包,提供了Java开发所需的工具和库。下面是JDK的主要资源描述: 编译器:JDK包含了Java编译器(javac),可以将Java源代码编译成字节码文件(.class文件)。 JVM(Java虚拟机):JDK包含了Java虚拟机,可以在不同平台上运行Java程序,实现了Java的“一次编写,到处运行”的特性。 标准类库:JDK提供了丰富的标准类库,包括Java SE库(标准版)、Java EE库(企业版)和Java ME库(移动版),以支持各种应用程序的开发。 调试工具:JDK提供了调试工具,如Java调试器(jdb)、Java监视器工具(jconsole)等,帮助开发人员调试和分析Java程序。 性能工具:JDK包含了性能监控工具,如Java VisualVM、Java Mission Control等,用于监控和优化Java应用程序的性能。 文档和示例:JDK附带了Java API文档和示例代码,帮助开发人员了解Java类库的使用和功能。 JavaFX:从JDK 8开始,JavaFX已经成为JDK的

2024-03-11

系统架构师案例分析知识点整理

系统架构设计原则: SOLID原则:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则 设计模式:常见设计模式如工厂模式、观察者模式、策略模式等 领域驱动设计(DDD):领域模型、限界上下文、聚合根等概念 微服务架构:服务拆分、服务通信、服务治理等关键概念 事件驱动架构:事件发布订阅模式、事件驱动微服务等 系统性能优化: 负载均衡:负载均衡算法、服务发现与注册 缓存策略:缓存类型选择、缓存一致性、缓存更新策略 数据库优化:索引优化、查询优化、分库分表 高可用性设计:故障转移、容灾备份、自动恢复机制 异步处理:消息队列、异步任务处理、事件驱动架构 安全性设计: 数据加密:数据传输加密、数据存储加密 访问控制:身份认证、权限管理 防火墙配置:网络安全、DDoS防护 安全认证与授权:OAuth、JWT等认证授权机制 漏洞扫描与修复:安全漏洞扫描工具、漏洞修复策略 系统集成与部署: CI/CD流水线:持续集成、持续交付 Docker容器化:容器部署、容器编排 自动化测试:单元测试、集成测试、端到端测试 部署策略:蓝绿部署、滚动部署

2024-03-11

1.软件设计师教程(第5版)

对于《软件设计师教程(第5版)》这本书的资源描述,你可以包括以下内容: 书籍名称:《软件设计师教程(第5版)》 作者:作者姓名或团队名称 出版日期:书籍的出版日期或版本信息 内容概述:简要介绍书籍的内容和主题,包括涵盖的知识领域和重点内容 章节结构:列出书籍各章节的标题和内容概要,以便读者了解书籍的组织结构 特色功能:描述书籍中特色功能或特殊设计,如案例研究、实例分析等 适用对象:说明该书籍适合的读者群体,如软件设计师、软件工程师、计算机科学学生等 学习收获:总结读者通过学习该书籍可以获得的知识和技能,以及对职业发展的帮助 推荐理由:提供你为什么推荐这本书以及你个人的阅读体会和收获

2024-03-11

飞书开发工具包(SDK)飞书jar包

对于飞书(Feishu)的jar包资源描述可能包括以下内容: 飞书开发工具包(SDK):包含与飞书API进行交互所需的Java类库和工具。 飞书消息推送jar包:用于实现消息推送功能,包括文本消息、图片消息、文件消息等。 飞书身份认证jar包:用于实现用户身份认证功能,包括登录验证、权限管理等。 飞书会议管理jar包:用于实现会议管理功能,包括创建会议、邀请参与者、管理会议等。 飞书日程管理jar包:用于实现日程管理功能,包括创建日程、提醒设置、日程分享等。 飞书组织架构jar包:用于实现组织架构管理功能,包括部门管理、成员管理、角色管理等。 飞书文件管理jar包:用于实现文件管理功能,包括上传文件、下载文件、文件分享等。 飞书审批管理jar包:用于实现审批流程管理功能,包括发起审批、审批处理、审批记录查询等。

2024-03-11

初级,中级,高级的程序员java简历

初级程序员Java简历资源描述: 熟悉Java编程语言,具备基本的面向对象编程能力 熟悉基本的数据结构和算法,能够解决简单的编程问题 了解常用的Java开发工具和框架,如Eclipse、Spring等 具有良好的团队合作和沟通能力 中级程序员Java简历资源描述: 在Java开发领域有一定的工作经验,能够独立完成项目开发和维护 熟练掌握Java EE开发技术,包括Servlet、JSP、JDBC等 熟悉常用的数据库操作和SQL语言,如MySQL、Oracle等 具备较强的问题解决能力和代码调试能力 有良好的编程规范和代码质量意识 高级程序员Java简历资源描述: 在Java领域有丰富的工作经验,能够设计和架构复杂的系统 精通Java EE开发技术和框架,如Spring、Hibernate等 深入了解分布式系统设计和微服务架构,有相关项目经验 具备优秀的性能调优和系统优化能力 在团队中具有领导力和指导能力,能够带领团队完成项目开发

2024-03-11

空空如也

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

TA关注的人

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