java相关
文章平均质量分 80
dustinqi
蜘蛛可怕却有用,猫虽可爱但废物
展开
-
关于java并发你需要了解的基础
java多线程入门干货!持续更新...性能问题上下文频繁切换:切换时需要记住当前线程运行到哪,要保存当前线程所有变量活跃性问题饥饿:优先级低的线程永远抢不到资源死锁:A等B,B等A活锁:A让B,B让A线程安全加锁解决: 进程内的用JVM内部的锁,跨JVM的用分布式锁。难点在于如何判断是否存在线程安全问题。...............原创 2022-10-11 16:56:31 · 529 阅读 · 0 评论 -
ReenTrantLock简介和源码导读
ReenTrantLock简介和源码导读,入门干货,初学者耐心读一读必有收获原创 2022-10-11 16:54:34 · 502 阅读 · 0 评论 -
war包部署记录(centOS7+tomcat7)
Java应用的自动集成和部署,现在有很多成熟的框架了。人工部署的方式非常原始和低效,但是极端情况下无法避免。这里简单记录一次人工部署的过程。java的安装&环境配置确认是否已有java环境:java -version搜索可用的java安装包:yum search java-1.7搜出来很多:直接用yum安装devel版本:yum install java-1.7.0-openjdk-devel.x86_64装完后可以确认下版本:yum安装java的默认路径:/usr/lib/原创 2021-11-03 15:47:07 · 674 阅读 · 0 评论 -
JAVA线程池学习小结和源码初探
目录1、创建一个线程池的基本方法1.1、参数解释1.2、方法说明2、几种常见线程池总结2.1、CachedThreadPool2.1.1、参数2.1.2、特点2.2、FixedThreadPool2.2.1、参数2.2.2、特点2.3、SingleThreadExecutor2.3.1、参数2.3.2、特点1、创建一个线程池的基本方法public ThreadPoolExecutor(int corePoolSize, int maximumP原创 2021-08-02 14:19:35 · 97 阅读 · 0 评论 -
JVM类加载机制
引导类加载器:加载JVM运行所需的,位于JRE的lib目录下的核心类库,比如rt.jar(jdk内置方法)、charsets.jar(字符集)扩展类加载器:加载JVM运行所需的,位于JRE的lib目录下的ext扩展目录中的jar应用程序类加载器:加载ClassPath路径下的类包(一般就是我们自己写的java类)自定义加载器:加载用户自定义路径下的类包...原创 2021-07-29 11:17:26 · 63 阅读 · 0 评论 -
java刷题之常见数据结构算法整理(updating...)
理解常见数据结构算法链表1.理解链表反转的过程链表1.理解链表反转的过程public ListNode reverse(ListNode listNode){ // pre可以理解成一个新链表 ListNode pre = null; // 整个反转的过程可以理解为:将原链表cur拆开,组成新链表pre ListNode cur = listNode; // 新链表cur拆完,反转后的链表pre也就生成了原创 2021-03-22 09:50:53 · 108 阅读 · 0 评论 -
mybatis源码初探(二) 整合spring详细原理+源码
文章导航一、mybatis和spring的整合二、mybatis二级缓存1. 二级缓存简介&简单使用2.二级缓存配置和原理一、mybatis和spring的整合首先回顾一下mybatis的启动过程(详情可以参考上一篇文章):String resource = "resources/mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 读取配置文件获取sqlSessio原创 2021-01-19 22:21:23 · 154 阅读 · 0 评论 -
mybatis源码编译的一些坑
讲道理,如果mybatis和mybatis-parent的版本号一致的话,大概率是不会遇到坑的。但是不排除某些人的自残倾向,非要用不同版本的mybatis和mybatis-parent,这样的话可能会遇到以下这些坑:“cannot resolve plugins xxx”的问题:导致这个问题的原因是没有指定插件的版本号,在pom文件中为相应插件指定version即可,例如:或者干脆注释掉:“Cannot resolve plugin org.apache.maven.plugins:mav原创 2020-12-28 17:01:36 · 819 阅读 · 3 评论 -
mybatis源码初探(一) 源码编译&db配置加载和sql执行过程
jdbc -> dbUtils -> myBatis代码示例mybatis三大核心流程初始化阶段。代理阶段。回想一下mybatis使用,在进行CRUD的时候,为什么可以直接使用Mapper接口,而不需要实现类?答案就是jdk的动态代理:我们将Mapper接口传给jdk的动态代理,然后动态代理会返回一个实例。...原创 2020-12-22 14:55:07 · 342 阅读 · 0 评论 -
java算法题刷题常用工具(updating...)
java算法题刷题常用工具ComparatorPriorityQueueComparatorPriorityQueue原创 2020-11-11 14:20:41 · 1559 阅读 · 2 评论 -
直接上手:Java多线程入门的第一篇笔记
小白很着急,多线程的原理可以以后慢慢探索,但是工作要先完成,希望这篇文章有所帮助。原创 2020-09-05 01:15:25 · 201 阅读 · 0 评论 -
redis中set()方法参数
* EX seconds − 设置指定的到期时间(以秒为单位)。* PX milliseconds - 设置指定的到期时间(以毫秒为单位)。* NX - 仅在键不存在时设置键。* XX - 只有在键已存在时才设置。举例:SET mykey "1" EX 60 NX或RedisHandle.getInstance().set(mykey, "1", "NX", "EX", 60);使用举例:for(IptTrafficRecord itr : itrList){ if(Redi原创 2020-05-12 14:01:33 · 5415 阅读 · 0 评论 -
利用redis实现时间锁
在定时任务中添加时间锁,可以防止集群中不同机器重复执行此定时任务:@Scheduled(cron = "*/5 * * * * ? ")void missedCallsPush() {/*** 时间锁*/if(!getLock(IM_TIME_LOCK, false)){ return;}时间锁代码实现:/*** lock* @param key key* @return boolean true分钟维度/false 秒钟维度*/private boolean getL原创 2020-05-12 13:56:50 · 714 阅读 · 0 评论