自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java并发编程

这里使用hash,用线程id作为hash的key,value为持有锁的次数;对应的unLock时,会对value进行-1操作,以此来实现可重入锁;锁的续期,通过守护线程定时的延迟锁的过期时间,避免应用处理还未完成,锁就已经超时释放的场景;不需要严格一致性的数据: 对于某些数据,可以接受一定程度的重试和更新失败,乐观锁的开销和复杂度较低。锁是并发编程中的一个重要概念,用于控制对共享资源的访问,以避免数据不一致和竞争条件;适用场景有限: 在写多读少的场景下,冲突概率高,重试次数多,反而降低性能。

2024-07-23 14:32:07 513

原创 jvm垃圾回收器

分为From区和To区, 标记From中所有活动对象移动到To区,下一次再反过来,每移动一次对象的计数+1;达到指定计数后,该对象晋升到老年代;与CMS类似,分三个阶段进行标记: 初始标记、并发标记和重新标记;是一种自动管理内存的机制,主要功能是自动回收程序运行过程中不再使用的内存,以防止内存泄漏并提高内存使用率;在标记-清除的基础上,增加一个整理阶段,将活动对象移动到内存的一端,释放出连续的空闲内存区域。识别所有GC Roots可达对象,标记后清除所有未标记,此时清除后会存在空间碎片。

2024-07-22 15:13:09 294

原创 事务隔离和传播

原子性: 一个事务内操作,要么全部执行,要么全部不执行一致性确保事务将数据库从一个一致的状态转变为另一个一致的状态。在事务执行期间,数据库的完整性约束得到满足,数据的合法性得到保持。隔离性每个事务都被隔离开,相互之间不受影响持久性: 事务提交后,数据将被持久化其中一致性包含原子性:一致性是一个更高层次的概念,它不仅要求事务操作的全部完成或全部回滚(即原子性),还要求事务前后数据库状态的一致性。换句话说,原子性是实现一致性的一部分,但一致性还包括约束的检查和维护。

2024-07-19 17:03:25 444

原创 延迟队列实现

延迟队列一般用来做超时处理,比如订单超时后的处理;

2024-05-15 16:17:51 250

原创 线程池优雅关闭

如果没有额外引用jar包,spring项目中使用线程池一般有两种方法;

2024-05-14 16:07:36 234

原创 java队列

java队列父类都是Queue,和list对比主要有以下几个特点。

2024-04-23 16:44:31 215

原创 redis持久化

AOF因为会记录所有写操作, 对同一key多次操作场景会存在多条记录,aof重写就是为了优化这部分数据的(min-size太小的话,频繁重写也是很影响性能)具体可以看redis.conf 这里appendsync配置的是缓冲区数据写入磁盘的策略,分别是 每次写/每秒/等待系统自动写入。

2024-04-17 10:43:44 292

原创 ThreadPoolExecutor源码解析

这里同个wc>corePoolSize及 workQuery.take() 回收非核心线程的工作者;从任务队列中获取队列超时终止该循环。processWorkerExit 为线程结束时调用 主要工作是移除worker (这里如果线程池处于暂停状态 会进行中断)大致逻辑为:task为空时,从任务队列中取任务进行处理(这里会判断线程池状态 如果是暂停 则尝试进行中断)beforeExecute 和 afterExecute 默认无实现 有需要可以重写。问题: 没找到线程池的状态是在哪里维护的。

2024-04-03 15:07:51 685 1

转载 jstat命令详解

作用jstat的主要作用就是对Java应用程序的资源和性能进行实时监控的命令行工具,主要包括GC情况和Heap Size资源使用情况。jstat命令格式jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]参数解释:option 常见的都是使用-gcutil查看gc情况,其他可选项见下图。 vmid : VM的进程号,即当前运行的java进程号。 in

2024-04-03 09:26:03 43

原创 swagger

swagger.yml API: swagger:版本 eg:"2.0" info:对这个项目的说明 description:"说明" version: title: contact: name: email: url: host:ip或域名 eg:"127.0.0.1:8080" 用来拼接请求 basePath:用于拼...

2019-05-15 17:47:28 122

原创 hibernate延迟加载的使用和部分源码解析

前段时间使用了hibernate的级联映射和延迟加载,发现,当要将使用了延迟加载的model转为json对象时总是会报错,网上查了些资料大多数都是说因为之前的session已经被关闭,这时要使用这个属性,需要使用这个session去查询数据库所以会报错,大致分为两种解决办法:1、json转换的时候,过滤掉延迟加载的属性;2:、使用openSessionInViewFilter,延长session对

2017-08-23 23:20:11 616

原创 oracle函数及自定义type

最近第一使用到oracle的函数返回结果集,记下大致的使用:因为在函数中无法使用表类型,所有首先,要创建一个自定义的类型,类似java的beancreate or replace type bbs_type as object(BBS_ID               number(11),                       SECTION_ID       

2017-08-08 00:34:55 2235

原创 hibernate 级联映射

这几天因为自己搭的数据库结构用到很多外键约束,想到之前用mybatis的时候,可以用关联映射直接通过外键获取对象,就取百度查了下,发现hibernate也是有级联映射的,相对于mybatis,个人感觉hibernate的级联映射更加健全,但使用起来问题也比较多,要配置的东西也比较多;可以分为,双向映射和单向映射,双向映射暂时没有用到,有时间再看下怎么使用,单向映射比较简单,分为一对多、多对

2017-08-07 23:54:50 213

原创 分享一份自己写的关于ssh框架自动生成Bean的源代码和思路

一开始是想mybatis有自动生成bean的工具,但hibernate却没有或者是我没接触到,就想利用反射机制实现由表到实体类自动生成的工具类,但其实这个方式行不通,java的反射机制虽然强大,但也没办法无中生有。于是在网上搜了下,发现已经有前辈写过这类工具类,使用的是io流,直接创建.java文件 具体的代码如下希望不足之处可以得到大家的提点首先是处理字符串的工具类:import jav...

2017-07-27 21:36:08 297

空空如也

空空如也

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

TA关注的人

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