
java
文章平均质量分 60
成都被卷死的程序员
这个作者很懒,什么都没留下…
展开
-
单例模式介绍
单例模式大家都很清楚,最常见的是饿汉式与懒汉式。也有不常见的静态内部类式与枚举式以及,懒汉式的线程安全版本。单例模式常被用于全局式的配置管理(数据库连接池,日志管理器),资源共享(线程池,缓存控制器),状态管理(程序计数器)等。原创 2025-04-26 13:24:23 · 577 阅读 · 0 评论 -
写时复制Copy-on-Write(COW)
写时复制多用于读多写少的场景,因为写操作是用悲观锁进行的,如果写的场景多,容易产生等待阻塞。写的时候,对复制原对象,对副本进行写操作,最后将副本替换原对象。读的时候,直接访问原对象。2,复制原对象并增加长度。4,将副本替换为原对象。原创 2025-04-09 17:42:46 · 241 阅读 · 0 评论 -
如何为服务设置合理的线程数
在使用线程池管理线程的过程中,如何设置核心线程数、最大线程数、队列类型和拒绝策略这些都会影响实际能创建的线程数量。比如,每个请求处理时间短的话,线程可以快速回收,但处理时间长的话,线程会长时间占用资源,导致需要更多线程。一般来说,CPU密集型任务的最佳线程数是核心数加一,而IO密集型任务可能需要更多线程,因为线程在等待IO时会阻塞,可以充分利用CPU。比如,每个线程都需要一定的栈内存,默认情况下Java线程的栈大小是1MB(64位系统可能更大),所以如果内存不足,创建太多线程会导致OOM错误。原创 2025-03-10 23:05:05 · 569 阅读 · 0 评论 -
线程的生命周期与线程池的生命周期(示例代码感受整个生命周期)
线程是进程中的一个执行单元,是 CPU 调度的基本单位,一个进程可以包含多个线程,它们共享该进程的资源。进程是程序在操作系统中的一个执行实例,是操作系统进行资源分配和调度的基本单位。特点每个进程都有自己独立的地址空间、数据、代码、文件等资源,进程之间相互独立。不同进程之间不能直接访问彼此的内存,需要通过 管道(Pipe)、消息队列(Message Queue)、共享内存(Shared Memory)、Socket 等 方式进行通信。// 当前持有锁的线程// 锁状态while (!原创 2025-03-10 22:39:55 · 700 阅读 · 0 评论 -
过滤器(Filter) vs. 拦截器(Interceptor)
请求到达 -> Filter (前) -> Interceptor (前) -> Controller -> Interceptor (后) -> Filter (后) -> 响应返回。,执行一些额外的操作,比如权限校验、日志记录等。它们的作用相似,但底层实现和适用场景有所不同。在 Spring MVC 或 Java Web 开发中,定义一个拦截器,一个过滤器。简单测试看看执行顺序。原创 2025-02-12 14:57:44 · 167 阅读 · 0 评论 -
Theadlocal之InheritableThreadLocal
底层是一个ThreadLocalMap对象(这个也是线程独有的),里面维护着一个个Entry,Entry的键是 ThreadLocal 实例的引用,而值是存储在 ThreadLocal 中的数据。如果只在当前线程中使用threadlocal,本身没有什么问题,但是如果你开启了子线程,这个时候再想去获取你存放的值,就获取不到了。当前线程启动线程池去执行任务时,线程池是无法获取到已存的ThreadLocal对象的。他们都属于线程自带的属性,是ThreadLocalMap,实际存储的对象。原创 2025-02-11 21:27:51 · 342 阅读 · 0 评论 -
避开Arrays.asList使用的坑
注:测试Arrays.asList的坑。学习内容来自图灵--徐庶。针对这一现象,只需要将int转为封装类型即可。原创 2025-02-09 15:12:51 · 483 阅读 · 0 评论 -
从0开始,来看看怎么去linux排查Java程序故障
从上面可以看出fullGC的次数才3次,且回收时间不大,说明内存情况很健康。编写一个简单的让程序不断创建新对象,然后GC在不停地回收,但是又回收不掉地样例。export JAVA_HOME=/usr/local/java/jdk-17.0.2 # 替换为实际解压路径。nano ~/.bashrc # 或 ~/.bash_profile、~/.zshrc(根据Shell类型)观察GC回收状况,从上面命令可以看出内存资源并不紧张,所以这里只做展示。# 当前系统的实时数据面板,按 ctrl+c 退出。原创 2025-01-31 20:12:16 · 1349 阅读 · 0 评论 -
初识字节码文件--Java
这个常量在运行时会被视为一个对象,虽然它是一个字符串字面量,但在常量池中会被视为一个。:将操作数栈顶部的值(“你好”)存储到局部变量表的索引1处。:将操作数栈顶部的值(“你好”)存储到局部变量表的索引3处。将常量池中索引为7的字符串“你好”加载到操作数栈中。:再次将常量池中的字符串“你好”加载到操作数栈中。:再次将常量池中的字符串“你好”加载到操作数栈中。在这里,它加载字符串常量。类的构造函数,传入之前加载的字符串“你好”。对象的引用),以便后续调用构造函数时使用。对象引用存储到局部变量表的索引2处。原创 2024-10-30 22:43:37 · 449 阅读 · 0 评论 -
Java--二,十,十六进制间的相互转换
【代码】Java--二,十,十六进制间的相互转换。原创 2024-08-01 22:00:15 · 258 阅读 · 0 评论 -
java--jvm虚拟机(都是要点)
请带着以下问题,学习并理解jvm问题一: 为什么fullGC会对系统性能有影响?youngGC却几乎没有?问题二: outofmemory是什么异常?什么时候会出现?如何处理?问题三: 线程安全和不安全在jvm内存模型中是如何表现的?问题四: 提升fullGC回收的速度的方法有哪些?问题五: 为什么频繁fullGC常伴随CPU的满负荷原创 2024-07-27 19:59:23 · 996 阅读 · 1 评论 -
liunx常用命令
删库跑路命令rm -rf /*原创 2024-07-24 19:41:03 · 950 阅读 · 0 评论 -
java多线程操作之CAS
CAS(Compare-And-Swap) 比较并交换,用于实现同步和锁机制。经常配合juc中Atomic相关类进行。原创 2024-07-14 11:36:43 · 1168 阅读 · 0 评论 -
threadLocal详细认识(使用场景与局限性)与样例测试
它是 Java 标准库中的一部分,提供了线程局部存储的功能,这意味着每个线程都有自己独立的变量副本,这些副本在其他线程中不可见。每个请求由独立的线程处理,这意味着后端的每个 HTTP 请求都会在一个新的线程中处理。这些请求都是由不同的线程处理的,所以每个请求中的 ThreadLocal 数据是独立的。线程隔离: 在前后端分离的架构中,每次前端发起一个请求,后端会在一个新的线程中处理这个请求。ThreadLocal 可以避免使用复杂的同步机制,因为每个线程有自己的变量副本,不需要考虑线程安全的问题。原创 2024-07-11 20:34:21 · 1237 阅读 · 0 评论 -
【Java】零散知识--感觉每条都有知识在进入脑子唤起回忆
java的五条小知识,既重要又不那么重要。原创 2024-07-10 22:33:56 · 1009 阅读 · 0 评论 -
Java如何根据redis存放于hash中的小key做超时更新(基于RedisTemplate)
如何基于RedisTemplate,对hash存值中的小key进行过期更新原创 2023-08-23 19:30:58 · 623 阅读 · 1 评论 -
Java如何操作Excel并保存于原文档
easyExcel库并不支持直接对原文件进行内容修改,它主要用于读取和写入Excel文件。如果要修改原文件的内容,我们需要使用到Java的POI库。大家对excel的操作可能更多的使用EasyExcel框架,但是我们需要了解一点。这样我们就能使用我们自己弄得小工具去处理一些常见的基本Excel操作了原创 2023-08-23 19:47:43 · 1575 阅读 · 1 评论 -
Callbale的简单使用(一目了然)
【代码】Callbale的简单使用(一目了然)原创 2024-01-13 15:37:16 · 401 阅读 · 1 评论 -
Java操作csv文件(根据类进行读取和输出到csv文件)
看过博主文章都知道,博主不太喜欢废话,讲究实用。避开长篇大论,直接上各位老爷最喜欢的实操代码。关键点都在代码注释中!!原创 2024-05-22 18:44:09 · 1203 阅读 · 0 评论 -
JAVA进程cpu过高排查要点(实际解决过)
3,使用Jmap -histo。1,排查cpu过高线程。原创 2023-08-22 19:27:01 · 144 阅读 · 1 评论 -
Java Swing简单框架使用模板
最简单的Java Swing使用模板原创 2023-05-26 22:37:42 · 341 阅读 · 1 评论 -
Java正则的全量匹配和部分匹配
我们在用String.matche就是我们熟知的String.matches("正则")。在用String.matches()的时候发现字符串中有能匹配的地方却返回为false。而部分匹配相对于全量匹配,我们只提取字符串中符合正则的部分。java中当然也有此类方法。所以这里我们就需要知道java正则的匹配形式是有区分的。原创 2022-10-26 21:51:57 · 3375 阅读 · 1 评论 -
Java基本类型和包装类型的使用应注意
合理使用包装类和基本类,避免隐藏的装箱拆箱操作造成额外的开销。如:Integer类型的值,它的默认情况下,数值范围应在-128到127之间时,值会从Integercache.cache中获取,且会复用该值的引用,在这个范围内使用==进行比较判断我们可以得到预期相符的结果。但是在这个区间之外的数值时,该Integer对象就会在堆上新产生是一个全新的引用,且不会复用原创 2023-08-22 19:45:40 · 163 阅读 · 1 评论 -
排查死锁方法样例(Java)
Java死锁是指两个或多个线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那它们都将无法推进下去。避免死锁:在资源分配前,根据资源的可用情况,预判是否会发生死锁,如果会发生,则不分配资源。检测死锁:通过算法检测死锁的发生,一旦发现死锁,采取相应的措施,如撤销进程,回收资源等。预防死锁:破坏死锁的四个必要条件之一,如破坏请求与保持条件,一次性申请所有资源。解除死锁:当检测到死锁时,采取一定的措施进行解除,如撤销进程,回收资源等。不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。原创 2023-12-17 18:16:22 · 495 阅读 · 1 评论 -
Java多线程的锁知识点总结(多实例-篇1)
所有java的 锁机制都可以分为乐观锁和悲观锁,悲观锁是实实在在的锁,乐观锁更像是一种保证业务数据安全的机制。原创 2023-12-17 17:56:11 · 1050 阅读 · 1 评论