java基础
文章平均质量分 70
壹佰大多
坚持不懈,保持每天学习,顺境不狂傲,逆境不妥协
展开
-
【BindingResult注解参数校验总结】
BindingResult 是 Spring 框架中用于处理表单验证结果的一个接口,常用于在处理表单提交时捕获和处理验证错误。当你在 Spring MVC 控制器方法中使用 @Valid 注解对表单对象进行验证时,可以通过 BindingResult 接收验证结果并处理错误。原创 2024-05-29 21:22:33 · 334 阅读 · 0 评论 -
java设计模式三
第一步: 将我们写好的自定义IOC容器项目,安装到maven仓库中,使其他项目可以引入其依赖//依赖信息 < dependencies > < dependency > < groupId > com.mashibing < artifactId > user_defined_springioc < version > 1.0-SNAPSHOT原创 2022-12-26 17:37:05 · 686 阅读 · 0 评论 -
Spring动态代理
其实在使用动态代理的时候最最核心的就是Proxy.newProxyInstance(loader, interfaces, h);废话不多说,直接干源码。动态代理的样例代码:Calculator.javaMyCalculator.javaCalculatorProxy.javaTest.java动态代理的源码:Proxy.java的newProxyInstance方法:getProxyClass0(ClassLoader loader,Class… interfaces)get()方...原创 2022-07-11 17:23:08 · 193 阅读 · 0 评论 -
遇到线上情况如何定位分析(按下列步骤进行排查,保证有效)
一般是运维团队首先受到报警信息(CPU Memory)top命令观察到问题:内存不断增长 CPU占用率居高不下top -Hp 观察进程中的线程,哪个线程CPU和内存占比高jps定位具体java进程jstack 定位线程状况,重点关注:WAITING BLOCKEDeg.waiting on (a java.lang.Object)假如有一个进程中100个线程,很多线程都在waiting on ,一定要找到是哪个线程持有这把锁怎么找?搜索jstack du...原创 2022-06-24 09:36:18 · 268 阅读 · 0 评论 -
JVM常用的一些参数
jvm调优常用的一些参数原创 2022-06-24 09:24:57 · 73 阅读 · 0 评论 -
常用的垃圾回收器
1、常见的垃圾回收器介绍:如果说收集算法是内存回收的⽅法论,那么垃圾收集器就是内存回收的具体实现。现在为⽌还没有最好的垃圾收集器出现,更加没有万能的垃圾收集器,我们能做的就是根据具体应⽤场景选择适合⾃⼰的垃圾收集器。(1)serial 收集器(串行)单线程收集器,"单线程"的意义不仅仅意味着使用一条垃圾收集线程去完成垃圾收集工作,更重要的是在进行垃圾收集工作的时候必须要停掉其它的工作线程(stop the world)直到它收集结束。(新生代采用 复制算法,老年代采用 标记-整理算法 )优点:简单原创 2022-06-21 16:17:40 · 641 阅读 · 0 评论 -
JUC总结
DelayQueue是无界队列延迟的操作,可以向延迟队列中追加任务,这个任务需要指定延迟时间。只有延迟时间到了,才可以将任务从队列中获取出来。任务可以指定延迟时间,所以需要任务满足一定的需求发现DelayQueue中的任务需要实现Delayed接口,重写getDelay和compareTo方法getDelay:任务什么时候可以出队列compareTo:存放任务到队列时,放在二叉堆的哪个位置1.1 分析源码首先,想掌握延迟队列的源码信息,你需要先掌握优先级队列。PriorityQueue,这个优先级队列是原创 2022-06-17 17:06:32 · 83 阅读 · 0 评论 -
CMS总结
CMSCMS的两种模式与一种特殊策略:Backgroud CMS :实际上我们的并发标记还能被整理成两个流程(1)初始标记(2)并发标记(3)并发预处理(4)可中止的预处理(5)重新标记(6)并发清除为什么我们的并发标记细化之后还会额外有两个流程出现呢?讨论这个...原创 2022-06-14 16:10:26 · 1115 阅读 · 0 评论 -
JVM总结
JVM源码原创 2022-06-06 20:04:10 · 72 阅读 · 0 评论 -
多线程并发总结
文章目录一、Synchronized一、原子性、有序性、一致性二、synchronized使用三、synchronized锁升级一、Synchronized一、原子性、有序性、一致性原子性:二、synchronized使用synchronized 方法synchronized 代码块类锁 基于当前类加锁对象锁 基于this加锁三、synchronized锁升级synchronized不存在从重量级锁降到偏向或者轻量synchronized 在偏向锁升级到轻量级锁时,会涉及到偏向原创 2022-05-10 22:32:31 · 273 阅读 · 0 评论 -
手写堆代码
package com.study.code_1;import java.util.ArrayList;import java.util.Comparator;import java.util.HashMap;import java.util.List;//T一定要是非基础类型public class heightenHeap<T> { private ArrayList<T> heap; private HashMap<T,Integer>原创 2022-04-22 17:34:11 · 261 阅读 · 0 评论 -
Spring源码解析
spring简介:Spring:Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小原创 2022-03-13 18:24:32 · 5494 阅读 · 0 评论 -
Map集合总结
map1、HashMap特点:无序、唯一、效率高,线程不安全,key可以存入null是按照key进行总结的,因为底层key遵照哈希表的结构(数组+链表)哈希表原理:比如放入这个集合的数据对应的那个类:必须重写hashCode方法和equal()方法2、Hashtable特点:效率低,线程安全、key不可以存入null3、LinkedHashMap:底层:哈希表+链表特点:唯一,有序4、TreeMap:唯一、有序、底层原理:二叉树,key遵照二叉树的特点放入集合的key数据对应的类型内部一定原创 2022-03-07 17:18:08 · 776 阅读 · 0 评论 -
ConcurrentHashMap源码剖析
一、ConcurrentHashMap的存储结构(常识性讲解)ConcurrentHashMap是一个安全的HashMap,在JDK1.8中ConcurrentHashMap和HashMap的存储结构一样,key-value,存储结构,数组➕链表➕红黑树JDK1.8会引入红黑树的原因:当链表的长度过长,则会严重影响HashMap的性能,红黑树搜索时间复杂度是O(logn),而链表则是O(n),因此Jdk1.8对数据结构做了进一步的优化,引入了红黑树,链表转换成红黑树的条件:当链表>8 &am原创 2022-03-04 11:29:59 · 523 阅读 · 0 评论 -
Collection接口下的集合
【1】:数组、集合都是对多个数据进行存储操作的,简称为容器,PS:这里的存储指的是内存层面的存储,而不是持久化存储数组:特点数组一旦确定了长度,那么长度就确定了,不可以更改。数组一旦声明了类型以后,数组中只能存放这个类型的数据,数组中只能存放同一种类型的数据。缺点:数组长度一旦指定,那么长度就被确定了,不可以更改。删除、增加元素,效率低数组中实际元素的数量是没有办法获取的,没有提供对应的方法或者属性来取。数组存储:有序,可重复,对于无序的,不可重复的数组不能满足要求数据结构图 Jdk原创 2022-03-02 16:44:07 · 277 阅读 · 0 评论