- 博客(81)
- 收藏
- 关注

原创 【总结】MySQL常用函数(聚簇函数、数字函数、转换函数、字符串函数、日期函数、窗口函数)
总结mysql常用的函数,包括聚簇函数,数字函数,转换函数,字符串函数和日期函数,方便查找和复习。
2024-03-25 11:30:41
466

原创 【秒懂】设计模式(零基础小白1小时快速上手)
设计模式的本质是面向对象设计原则的实际运用,是对类的封装、继承和多态性以及类的关联关系和依赖关系的充分理解。设计模式是一套前人代码设计经验的总结,它描述了在软件设计过程中的一些不断重复发生的问题和该问题的解决方案。使用设计模式的目的是提高代码的重用性,可读性,可靠性和可扩展性,使程序呈现高内聚,低耦合的特性。
2024-03-16 18:02:40
2162
5
原创 【秒懂】代理模式
Subject(抽象主题):声明真实主题和代理对象实现的业务方法RealSubject(真实主题):实现了抽象主题中的具体业务,是代理对象所代表的真实对象Proxy(代理角色):引用Implementor对Abstraction进行修正ConcreteImplementor(具体实现化角色):提供了与真实主题相同的方法,其内部含有对真实主题的引用,它可以访问、控制或扩展真实主题的功能。
2024-03-22 13:43:27
452
原创 java异常处理
当 try 语句和 finally 语句中都有 return 语句时,try 语句块中的 return 语句会被忽略。这是因为 try 语句中的 return 返回值会先被暂存在一个本地变量中,当执行到 finally 语句中的 return 之后,这个本地变量的值就变为了 finally 语句中的 return 返回值。,Java 代码在编译过程中 ,我们即使不处理不受检查异常也可以正常通过编译。即 受检查异常 ,Java 代码在编译过程中,如果受检查异常没有被。常见的受检查异常有:IO 相关的异常、
2023-09-14 22:11:28
132
原创 java字符串类底层逻辑和对比
String类中使用final和private关键字修饰数组来保存字符串,并且String类没有对外提供修改这个字符数组的方法,String类被final修饰导致其不能被继承,进而避免了子类破坏String不可变。在java9之前,String用char数组保存字符串,java9之后改用byte数组保存新版的 String 其实支持两个编码方案:Latin-1 和 UTF-16。如果字符串中包含的汉字没有超过 Latin-1 可表示范围内的字符,那就会使用 Latin-1 作为编码方案。
2023-09-14 22:10:42
152
原创 java面向对象基础知识
使用已存在的类的定义作为基础建立新的类,即子类继承父类的特征和行为,子类的定义可以增加新的属性或方法,也可以用父类的属性和方法,但不能选择性地继承父类。因为一个类在没有显式声明构造方法时,会有默认的不带参数的构造方法。:封装是指把一个对象的状态信息(也就是类的属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象的内部对象是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。
2023-09-14 22:09:41
135
1
原创 JVM——GC死亡对象判断方法
相互引用着对方之外,这两个对象之间再无任何引用。但是他们因为互相引用对方,导致它们的引用计数器都不为 0,于是引用计数算法无法通知 GC 回收器回收他们。堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断哪些对象已经死亡(即不能再被任何途径使用的对象)。,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的,需要被回收。的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为。所谓对象之间的相互引用问题,如下面代码所示:除了对象。基本思想:通过一系列的称为。
2023-09-14 22:08:23
111
原创 JVM-GC垃圾收集算法
当这一块的内存使用完后,就将还存活的对象复制到另一块去,然后再把使用的空间一次清理掉。标记-整理算法是根据老年代的特点提出的,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象回收,而是让所有存活的对象向一端移动,然后直接清理掉端边界以外的内存。当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。它是最基础的收集算法,后续的算法都是对其不足进行改进得到。,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。”算法进行垃圾收集。
2023-09-14 22:07:36
68
原创 计算机网络知识点总结
结点 (node):网络中的结点可以是计算机,集线器,交换机或路由器等。链路(link ): 从一个结点到另一个结点的一段物理线路。中间没有任何其他交点。主机(host):连接在因特网上的计算机。:因特网服务提供者(提供商)。(简单图示:PC ➡ISP➡Internet):互联网交换点IXP 的主要作用就是允许两个网络直接相连并交换分组,而不需要再通过第三个网络来转发分组:意思是“请求评议”,包含了关于 Internet 几乎所有的重要的文字资料。
2023-09-12 21:19:06
215
原创 MySQL的事务隔离
使用 Next-Key Lock 进行加锁来保证不出现幻读,Next-Key Lock 是行锁(Record Lock)和间隙锁(Gap Lock)的结合,行锁只能锁住已经存在的行,为了避免插入新行,需要依赖间隙锁。解决幻读的方式有很多,但是它们的核心思想是相同的,即事务在操作某张表数据的时候,不允许别的事务新增或者删除这张表中的数据了。在可重复读的事务级别下,给事务操作的这张表添加 `Next-key Lock(Record Lock+Gap Lock)在可重复读的事务级别下,给事务操作的这张表添加。
2023-09-12 21:18:25
85
原创 java的Object类
所使用的哈希算法也许刚好会让多个对象传回相同的哈希值。若它们的属性相等,则返回 true(即,认为这两个对象相等)。来判断是否真的相同,如果hashcode不同,则直接断定两个对象不相同。比较该类的两个对象时,等价于通过“==”比较这两个对象,使用的默认是。不能用于判断基本数据类型的变量,只能用来判断两个对象是否相等。值来判断对象加入的位置,同时也会与其他已经加入的对象的。方法判断两个对象是相等的,那这两个对象的。方法是被重写过的,比较的是对象的值。哈希碰撞是指的是不同的对象得到相同的。
2023-09-12 21:17:45
62
原创 java基本语法
用BigInteger可以表示超过Long整形的数据,其内部使用int[ ]数组来存储任意大小的整形数据,相对于常规整数类型的运算来说,它可以被类的所有实例对象共享,静态变量只会被分配一次内存,即使创建多个对象,这样可以节省内存。因为计算机存储数据是二进制的,在表示一个数字时,其宽度是有限的,无限循环的小数存储在计算机时。修饰的话(不建议这么使用,应该要使用基本数据类型对应的包装类型),就存放在堆中。会被截断,所以会导致数精度发生损失的情况,导致浮点数没有办法用二进制精确表示。
2023-09-12 21:17:13
44
原创 java面向对象
使用已存在的类的定义作为基础建立新的类,即子类继承父类的特征和行为,子类的定义可以增加新的属性或方法,也可以用父类的属性和方法,但不能选择性地继承父类。因为一个类在没有显式声明构造方法时,会有默认的不带参数的构造方法。:封装是指把一个对象的状态信息(也就是类的属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象的内部对象是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。
2023-09-12 21:16:40
49
原创 java字符串原理
String类中使用final和private关键字修饰数组来保存字符串,并且String类没有对外提供修改这个字符数组的方法,String类被final修饰导致其不能被继承,进而避免了子类破坏String不可变。在java9之前,String用char数组保存字符串,java9之后改用byte数组保存新版的 String 其实支持两个编码方案:Latin-1 和 UTF-16。如果字符串中包含的汉字没有超过 Latin-1 可表示范围内的字符,那就会使用 Latin-1 作为编码方案。
2023-09-12 21:16:29
48
原创 java字符串相关笔记
String类中使用final和private关键字修饰数组来保存字符串,并且String类没有对外提供修改这个字符数组的方法,String类被final修饰导致其不能被继承,进而避免了子类破坏String不可变。在java9之前,String用char数组保存字符串,java9之后改用byte数组保存新版的 String 其实支持两个编码方案:Latin-1 和 UTF-16。如果字符串中包含的汉字没有超过 Latin-1 可表示范围内的字符,那就会使用 Latin-1 作为编码方案。
2023-09-12 21:14:51
40
原创 intellij idea 自带的HttpClient发送请求如何携带文件
filename=“defaultUserImage.png” : name=“file” 固定,filename表示文件名。boundary=BOUNDARY 固定格式。{{D:\defaultUserImage.png}} : 表示文件路径。BOUNDARY :分隔符,每两个之间表示一个文件。
2023-09-05 17:06:50
799
原创 Hystrix笔记总结
如图 1 所示,在所有服务都处于可用状态时,请求 1 需要调用 A、D、E、F 四个服务才能完成,请求 2 需要调用 B、E、D 三个服务才能完成,请求 3 需要调用服务 C、F、E、D 四个服务才能完成。从以上过程可以看出,当微服务系统的一个服务出现故障时,故障会沿着服务的调用链路在系统中疯狂蔓延,最终导致整个微服务系统的瘫痪,这就是“雪崩效应”。通常情况下,我们都会在客户端进行服务降级,当客户端调用的服务端的服务不可用时,客户端直接进行服务降级处理,避免其线程被长时间、不必要地占用。
2023-09-05 17:00:16
94
原创 SpringBoot整合OpenFeign和Hystrix
Hystrix类:重写方法用于当接口访问异常时,即调用的接口抛出异常时调用对应的重写方法,一般用于容错返回和输出异常。方式二:用Factory,可以获取异常信息和异常号。方式一:简单,但无法获取异常信息和状态号。MessageFeignFactory类。修改@FeignClient 注解。可以看到抛出的异常有状态号信息等。开启hystrix 熔断器。FeignClient类。
2023-09-05 16:58:17
152
原创 初识openFeign
Netflix Feign 是 Netflix 公司发布的一种实现负载均衡和服务调用的开源组件。Spring Cloud 将其与 Netflix 中的其他开源服务组件(例如 Eureka、Ribbon 以及 Hystrix 等)一起整合进 Spring Cloud Netflix 模块中,整合后全称为 Spring Cloud Netflix Feign。Feign 对 Ribbon 进行了集成,利用 Ribbon 维护了一份可用服务清单,并通过 Ribbon 实现了客户端的负载均衡。
2023-09-05 16:57:33
55
原创 微服务理论基础
所谓“服务”,其实指的是项目中的功能模块,它可以帮助用户解决某一个或一组问题,在开发过程中表现为 IDE(集成开发环境,例如 Eclipse 或 IntelliJ IDEA)中的一个工程或 Moudle。微服务体积小,复杂度低:一个微服务通常只提供单个业务功能的服务,即一个微服务只专注于做好一件事,因此微服务通常代码较少,体积较小,复杂度也较低。微服务团队所需成员少:一般情况下,一个微服务团队只需要 8 到 10 名人员(开发人员 2 到 5 名)即可完成从设计、开发、测试到运维的全部工作。
2023-09-05 16:56:00
70
原创 SpringBoot定时器
定时器,用于定期执行任务(每隔一段时间执行一次语句)在启动类上添加注解 @EnableScheduling(用于开启定时任务)创建Jobs类,作为Bean组件@ Scheduled 中的cron表达式格式如下") cron表达式详解_
2023-09-05 16:53:13
167
原创 Mongdb安装,Shell命令以及java集成
可以使用com.mongodb.DBCollection类的 insert() 方法来插入一个文档。可以使用com.mongodb.DB类中的createCollection()来创建集合。sudo service mongod start #启动mongo。sudo service mongod stop #关闭mongo。sudo service mongod restart #重启mongo。mongo -version 查看mongo版本。导入依赖或引入jar包。
2023-09-05 16:50:02
76
原创 MySQL范式介绍
若在一张表中,在属性(或属性组)X 的值确定的情况下,必定能确定属性 Y 的值,那么就可以说 Y 函数依赖于 X,写作 X → Y。:如果 X→Y,并且存在 X 的一个真子集 X0,使得 X0→Y,则称 Y 对 X 部分函数依赖。比如学生基本信息表 R 中(学号,身份证号,姓名)当然学号属性取值是唯一的,在 R 关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号);
2023-09-05 16:48:10
51
原创 Reidsson分布式锁代码实现
Redis分布式锁原理:https://blog.youkuaiyun.com/asd051377305/article/details/108384490。Redission 分布式锁代码实现。
2023-09-05 16:42:55
73
原创 ZAB协议和Paxos算法
在 ZooKeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性,基于该协议,ZooKeeper 实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。当选举产生了新的 Leader 服务器,同时集群中已经有过半的机器与该 Leader 服务器完成了状态同步之后,ZAB 协议就会退出恢复模式。某提案后,会将该提案编号 N 记录在本地,这样每个表决者中保存的已经被 accept 的提案中会存在一个。,即在整个集群中是唯一的编号 N,然后将该编号赋予其要提出的提案,在。发送提案的提交请求。
2023-09-05 16:40:13
133
原创 2PC到3PC提交协议
请求,参与者收到之后如果能处理那么它将会进行事务的处理但并不提交,这个时候会一直占用着资源不释放,如果此时协调者挂了,那么这些资源都不会再释放了,这会极大影响性能。阶段,当一个参与者收到了请求之后其他参与者和协调者挂了或者出现了网络分区,这个时候收到消息的参与者都会进行事务提交,这就会出现数据不一致性问题。请求就挂了,那么也就意味着,收到消息的参与者会进行事务的提交,而后面没收到的则不会进行事务提交,那么这时候就会产生数据不一致性问题。并没有收到全部的参与者的响应,那么就会中断事务,它会向所有参与者发送。
2023-09-04 16:53:50
56
原创 分布式事务与本地事务的比较
比如:用户信息和订单信息分别在两个MySQL实例存储,用户管理系统删除用户信息,需要分别删除用户信息及用户的订单信息,由于数据分布在不同的数据实例,需要通过不同的数据库链接去操作数据,此时产生分布式事务。在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务。:持久性,事务完成之后,该事务对数据的更改会持久到数据库,且不会被回滚。
2023-09-04 16:53:05
65
原创 zookeeper集群存储结构相关知识
正常情况下只有 1 个 leader,但是当两个机房中间网络断开的时候,每个机房的 3 台服务器都会认为另一个机房的 3 台服务器下线,而选出自己的 leader 并对外提供服务。Session 可以看作是 ZooKeeper 服务器与客户端的之间的一个 TCP 长连接,通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向 ZooKeeper 服务器发送请求并接受响应,同时还能够通过该连接接收来自服务器的 Watcher 事件通知。同时如果有新的节点加入,还需要对新节点进行同步。
2023-09-04 16:52:23
251
原创 数据一致性模型
数据复制导致了一致性的问题,为了保持副本的一致性可能会严重地影响性能,唯一的解决办法就是放松一致性的要求。通过一致性模型我们可以理解和推理在分布式系统中数据复制需要考虑的问题和基本假设,便于结合具体的业务场景做权衡。每种模型都有效地限制了对一个数据项执行度操作应返回的值。通常来说限制越少的模型越容易应用,但一致性的保证就越弱。
2023-09-04 16:51:40
89
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人