java
文章平均质量分 60
分享java开发的相关学习笔记
·yying·
知行合一
展开
-
java异常处理
当 try 语句和 finally 语句中都有 return 语句时,try 语句块中的 return 语句会被忽略。这是因为 try 语句中的 return 返回值会先被暂存在一个本地变量中,当执行到 finally 语句中的 return 之后,这个本地变量的值就变为了 finally 语句中的 return 返回值。,Java 代码在编译过程中 ,我们即使不处理不受检查异常也可以正常通过编译。即 受检查异常 ,Java 代码在编译过程中,如果受检查异常没有被。常见的受检查异常有:IO 相关的异常、原创 2023-09-14 22:11:28 · 106 阅读 · 0 评论 -
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 · 101 阅读 · 0 评论 -
java面向对象基础知识
使用已存在的类的定义作为基础建立新的类,即子类继承父类的特征和行为,子类的定义可以增加新的属性或方法,也可以用父类的属性和方法,但不能选择性地继承父类。因为一个类在没有显式声明构造方法时,会有默认的不带参数的构造方法。:封装是指把一个对象的状态信息(也就是类的属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象的内部对象是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。原创 2023-09-14 22:09:41 · 103 阅读 · 1 评论 -
JVM——GC死亡对象判断方法
相互引用着对方之外,这两个对象之间再无任何引用。但是他们因为互相引用对方,导致它们的引用计数器都不为 0,于是引用计数算法无法通知 GC 回收器回收他们。堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断哪些对象已经死亡(即不能再被任何途径使用的对象)。,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的,需要被回收。的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为。所谓对象之间的相互引用问题,如下面代码所示:除了对象。基本思想:通过一系列的称为。原创 2023-09-14 22:08:23 · 74 阅读 · 0 评论 -
JVM-GC垃圾收集算法
当这一块的内存使用完后,就将还存活的对象复制到另一块去,然后再把使用的空间一次清理掉。标记-整理算法是根据老年代的特点提出的,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象回收,而是让所有存活的对象向一端移动,然后直接清理掉端边界以外的内存。当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。它是最基础的收集算法,后续的算法都是对其不足进行改进得到。,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。”算法进行垃圾收集。原创 2023-09-14 22:07:36 · 33 阅读 · 0 评论 -
Hystrix笔记总结
如图 1 所示,在所有服务都处于可用状态时,请求 1 需要调用 A、D、E、F 四个服务才能完成,请求 2 需要调用 B、E、D 三个服务才能完成,请求 3 需要调用服务 C、F、E、D 四个服务才能完成。从以上过程可以看出,当微服务系统的一个服务出现故障时,故障会沿着服务的调用链路在系统中疯狂蔓延,最终导致整个微服务系统的瘫痪,这就是“雪崩效应”。通常情况下,我们都会在客户端进行服务降级,当客户端调用的服务端的服务不可用时,客户端直接进行服务降级处理,避免其线程被长时间、不必要地占用。原创 2023-09-05 17:00:16 · 40 阅读 · 0 评论 -
SpringBoot整合OpenFeign和Hystrix
Hystrix类:重写方法用于当接口访问异常时,即调用的接口抛出异常时调用对应的重写方法,一般用于容错返回和输出异常。方式二:用Factory,可以获取异常信息和异常号。方式一:简单,但无法获取异常信息和状态号。MessageFeignFactory类。修改@FeignClient 注解。可以看到抛出的异常有状态号信息等。开启hystrix 熔断器。FeignClient类。原创 2023-09-05 16:58:17 · 83 阅读 · 0 评论 -
初识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 · 24 阅读 · 0 评论 -
微服务理论基础
所谓“服务”,其实指的是项目中的功能模块,它可以帮助用户解决某一个或一组问题,在开发过程中表现为 IDE(集成开发环境,例如 Eclipse 或 IntelliJ IDEA)中的一个工程或 Moudle。微服务体积小,复杂度低:一个微服务通常只提供单个业务功能的服务,即一个微服务只专注于做好一件事,因此微服务通常代码较少,体积较小,复杂度也较低。微服务团队所需成员少:一般情况下,一个微服务团队只需要 8 到 10 名人员(开发人员 2 到 5 名)即可完成从设计、开发、测试到运维的全部工作。原创 2023-09-05 16:56:00 · 43 阅读 · 0 评论 -
SpringBoot文件上传下载模板
【代码】SpringBoot文件上传下载模板。原创 2023-09-05 16:53:55 · 72 阅读 · 0 评论 -
SpringBoot定时器
定时器,用于定期执行任务(每隔一段时间执行一次语句)在启动类上添加注解 @EnableScheduling(用于开启定时任务)创建Jobs类,作为Bean组件@ Scheduled 中的cron表达式格式如下") cron表达式详解_原创 2023-09-05 16:53:13 · 108 阅读 · 0 评论 -
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 · 41 阅读 · 0 评论 -
MySQL范式介绍
若在一张表中,在属性(或属性组)X 的值确定的情况下,必定能确定属性 Y 的值,那么就可以说 Y 函数依赖于 X,写作 X → Y。:如果 X→Y,并且存在 X 的一个真子集 X0,使得 X0→Y,则称 Y 对 X 部分函数依赖。比如学生基本信息表 R 中(学号,身份证号,姓名)当然学号属性取值是唯一的,在 R 关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号);原创 2023-09-05 16:48:10 · 27 阅读 · 0 评论 -
SpringBoot整合kafka
【代码】SpringBoot整合kafka。原创 2023-09-05 16:47:02 · 22 阅读 · 0 评论 -
Reidsson分布式锁代码实现
Redis分布式锁原理:https://blog.csdn.net/asd051377305/article/details/108384490。Redission 分布式锁代码实现。原创 2023-09-05 16:42:55 · 43 阅读 · 0 评论 -
ZAB协议和Paxos算法
在 ZooKeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性,基于该协议,ZooKeeper 实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。当选举产生了新的 Leader 服务器,同时集群中已经有过半的机器与该 Leader 服务器完成了状态同步之后,ZAB 协议就会退出恢复模式。某提案后,会将该提案编号 N 记录在本地,这样每个表决者中保存的已经被 accept 的提案中会存在一个。,即在整个集群中是唯一的编号 N,然后将该编号赋予其要提出的提案,在。发送提案的提交请求。原创 2023-09-05 16:40:13 · 92 阅读 · 0 评论 -
2PC到3PC提交协议
请求,参与者收到之后如果能处理那么它将会进行事务的处理但并不提交,这个时候会一直占用着资源不释放,如果此时协调者挂了,那么这些资源都不会再释放了,这会极大影响性能。阶段,当一个参与者收到了请求之后其他参与者和协调者挂了或者出现了网络分区,这个时候收到消息的参与者都会进行事务提交,这就会出现数据不一致性问题。请求就挂了,那么也就意味着,收到消息的参与者会进行事务的提交,而后面没收到的则不会进行事务提交,那么这时候就会产生数据不一致性问题。并没有收到全部的参与者的响应,那么就会中断事务,它会向所有参与者发送。原创 2023-09-04 16:53:50 · 28 阅读 · 0 评论 -
分布式事务与本地事务的比较
比如:用户信息和订单信息分别在两个MySQL实例存储,用户管理系统删除用户信息,需要分别删除用户信息及用户的订单信息,由于数据分布在不同的数据实例,需要通过不同的数据库链接去操作数据,此时产生分布式事务。在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所以基于关系型数据库的事务又被称为本地事务。:持久性,事务完成之后,该事务对数据的更改会持久到数据库,且不会被回滚。原创 2023-09-04 16:53:05 · 40 阅读 · 0 评论 -
zookeeper集群存储结构相关知识
正常情况下只有 1 个 leader,但是当两个机房中间网络断开的时候,每个机房的 3 台服务器都会认为另一个机房的 3 台服务器下线,而选出自己的 leader 并对外提供服务。Session 可以看作是 ZooKeeper 服务器与客户端的之间的一个 TCP 长连接,通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向 ZooKeeper 服务器发送请求并接受响应,同时还能够通过该连接接收来自服务器的 Watcher 事件通知。同时如果有新的节点加入,还需要对新节点进行同步。原创 2023-09-04 16:52:23 · 166 阅读 · 0 评论 -
数据一致性模型
数据复制导致了一致性的问题,为了保持副本的一致性可能会严重地影响性能,唯一的解决办法就是放松一致性的要求。通过一致性模型我们可以理解和推理在分布式系统中数据复制需要考虑的问题和基本假设,便于结合具体的业务场景做权衡。每种模型都有效地限制了对一个数据项执行度操作应返回的值。通常来说限制越少的模型越容易应用,但一致性的保证就越弱。原创 2023-09-04 16:51:40 · 40 阅读 · 0 评论 -
CAP和BASE理论
BASE 理论是对 CAP 中一致性 C 和可用性 A 权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于 CAP 定理逐步演化而来的,它大大降低了我们对系统的要求。**最终一致性:**最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。另外,需要补充说明的一点是:**如果网络分区正常的话(系统在绝大部分时候所处的状态),也就说不需要保证 P 的时候,C 和 A 能够同时保证。: 非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应)。原创 2023-09-04 16:51:04 · 44 阅读 · 0 评论 -
初识分布式id
为了保证号段服务的高可用,我们同样需要建立一个集群,在请求方从号段服务获取ID时,就会随机的选取一个节点来获取,而这种并发场景下我们同样需要考虑到并发安全的问题,因此我们上面的表中也提供了一个版本号的字段version,我们可以使用乐观锁来进行并发的控制。前面两种方法的局限性在于其每次获取ID时都需要直接访问数据库,效率较低,如果能够一次获取大量的ID,并将其缓存在本地,那样就可以大大的提升ID获取的效率,这也是号段模式的核心思想。如果在修改步长的时候出现了重复的ID,此时就还需要进行停机修改。原创 2023-09-04 16:50:26 · 29 阅读 · 0 评论 -
基于java的回文串算法
【代码】基于java的回文串算法。原创 2023-09-04 16:47:59 · 58 阅读 · 0 评论 -
基于java的全排列算法
【代码】基于java的全排列算法。原创 2023-09-04 16:47:09 · 20 阅读 · 0 评论 -
基于java的二分查找算法模板
【代码】基于java的二分查找算法模板。原创 2023-09-04 16:46:28 · 62 阅读 · 0 评论 -
基于java实现二叉树的添加/删除/查找操作
二叉树的添加/删除/查找。原创 2023-09-04 16:45:41 · 111 阅读 · 0 评论 -
java最短路径与最小生成树模板
【代码】java最短路径与最小生成树模板。原创 2023-09-04 16:44:36 · 42 阅读 · 0 评论 -
数据结构算法中常见的简单数学方法
一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。原创 2023-09-04 16:43:41 · 40 阅读 · 0 评论 -
SpringMVC常用注解
RequestParam(XXX) 写在变量前面,表示将前端post的json对象匹配对象中的XXX属性,赋值给注解后面的形参(参考极简实例中的登录界面(1)post方法控制器类被注释的代码)@ModelAttribute(“XXX”):应用在有返回值的方法上,相当于将该方法的返回值添加到model的"XXX"属性上。@ PathVariable 获取url中的{XXX}中的值,()中value为对应匹配的XXX,若都为空则按顺序匹配。@Slf4j : 注解在类上;@log4j : 注解在类上;原创 2023-09-04 16:42:15 · 20 阅读 · 0 评论 -
java反射机制相关代码
【代码】java反射机制相关代码。原创 2023-09-04 16:41:26 · 18 阅读 · 0 评论 -
Feign组件的fallback操作
Hystrix类:重写方法用于当接口访问异常时,即调用的接口抛出异常时调用对应的重写方法,一般用于容错返回和输出异常。方式二:用Factory,可以获取异常信息和异常号。方式一:简单,但无法获取异常信息和异常号。MessageFeignFactory类。修改@FeignClient 注解。可以看到抛出的异常有状态号信息等。开启hystrix 熔断器。FeignClient类。原创 2023-09-04 16:40:48 · 879 阅读 · 0 评论 -
Springboot常用注解
在springMVC中,控制器负责处理由DispatcherServlet接收并分发过来的请求,他把用户要请求的数据封装成一个model,然后把该model返回给对应的view进行展示。原创 2023-09-03 20:55:51 · 19 阅读 · 0 评论 -
VMware创建三台Ubuntu虚拟机搭建zookeeper完全分布式环境
我也是小白,还在努力前行中。----->打开文件后,输入 i 进行编辑,在最上面写入类似于下面三行,按【esc】键退出编辑模式,按【:】键,输入【wq】再按【回车键】即可退出vim。简洁快速地用VMware创建三台虚拟机master,slave1,slave2,配置java环境,搭建zookeeper完全分布式集群。依次连接完三台虚拟机之后,点击【工具】->【发送键输入到】->【所有会话】,同步操作三台虚拟机。打开XShell,点击新建会话,输入名称,主机ip地址,用户和密码,依次连接三台服务器。原创 2023-09-03 20:54:14 · 673 阅读 · 1 评论 -
SpringBoot整合redis缓存
java用xpath需要导入JsoupXpath-0.3.2.jar架包。@ : 指定属性(一般写于[]中或直接写在/后面表示将属性输出)text(): 当前控件下的文本。原创 2023-09-03 20:49:32 · 19 阅读 · 0 评论 -
基于java实现XPath解析html和xml
java用xpath需要导入JsoupXpath-0.3.2.jar架包。@ : 指定属性(一般写于[]中或直接写在/后面表示将属性输出)text(): 当前控件下的文本。原创 2023-09-03 20:48:45 · 570 阅读 · 0 评论 -
初始JVM
JVM即Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机。JVM用于识别class文件,我们都知道Java的代码需要经过编译器,生成.class文件后,JVM才能识别并运行它,,这就是Java能一次编译,到处运行的原因。当前市面上使用范围最广的,是Sun/OracleJDK或者OpenJDK中默认的虚拟机,这个一款由官方开发和主推的虚拟机,我们在网络上,或者购买的书籍中讲解应该都是这个虚拟机。原创 2023-09-03 20:47:36 · 17 阅读 · 0 评论 -
面向对象三大特征
让某个类型的对象获得另一个类型的对象的属性的方法。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。:隐藏部分对象的属性和实现细节,对数据的访问只能通过外公开的接口。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。多态存在的3个条件:(1)继承;(3)父类引用指向子类对象。:对于同一个行为,不同的子类对象具有不同的表现形式。原创 2023-09-03 20:39:51 · 42 阅读 · 0 评论 -
快速上手android 线性布局和相对布局
线性布局的优点在于快速对齐子控件和调整各个子控件在对齐方向上的比例,常作为子布局以实现整体布局的局部对齐,也是常用布局中唯一能控制子控件比例的布局。优势:整体性比较强,能够最大程度地兼容不同尺寸,且布局方式与web的盒子模型以及javaswing的borderLayout有较多的相识之处。缺点:整体性较差,只能控制一个维度上的控件布局。劣势:无法比例调整控件大小。原创 2023-09-01 17:49:47 · 65 阅读 · 0 评论 -
Hadoop集群
Hadoop框架中最核心的设计是为海量数据提供存储的HDFS和对数据进行计算的MapReduceHadoop集群的整体性能取决于CPU、内存、网络以及存储之间的性能平衡。原创 2023-09-01 17:43:58 · 68 阅读 · 1 评论 -
初始MapReduce
它的划分方法完全由用户自己决定。TaskTracker 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而调度器会在资源出现空闲时,选择合适的任务去使用这些资源。Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动。原创 2023-09-01 17:38:08 · 24 阅读 · 1 评论