- 博客(76)
- 收藏
- 关注
原创 ConcurrentHashMap源码解析
本文深度剖析了ConcurrentHashMap的核心源码,重点分析了其成员变量和关键方法。与HashMap相比,ConcurrentHashMap具有更复杂的并发控制机制,包括sizeCtl、transferIndex等并发控制变量,以及分段计数数组counterCells。文章详细解读了扰动函数spread()的实现原理,解释了其通过高位掩码HASH_BITS保证哈希值为正数的作用。在get()方法分析中,展示了其线程安全的查找逻辑,包括处理普通节点、转发节点和树节点的不同情况。通过源码对比,突出了Co
          2025-08-19 16:17:34
           774
774
        
原创 万字解析HashMap核心方法!
本文详细解析了HashMap的核心实现机制,主要包括以下内容: 核心成员变量分析: table数组:存储键值对的哈希桶结构,首次使用时延迟初始化 关键参数:size(键值对数)、modCount(结构修改计数器)、threshold(扩容阈值)、loadFactor(加载因子) 哈希算法: 扰动函数(hash())通过高16位异或低16位降低哈希冲突 详细解析了hashCode()与扰动函数的配合机制 关键操作实现: get()方法通过哈希定位、链表/树遍历查找元素 put()方法包含哈希计算、冲突处理、树
          2025-07-09 12:03:10
           1002
1002
           1
1
        
原创 为什么不推荐使用Executors创建线程池?
对这种创建方式,其默认的线程数量大小便是Integer.MAX_VALUE,并且核心线程初始是为0的,空闲线程只能存在60S。所有通过Exectors创建的线程池,都是没有指定对应的拒绝策略的,也就是说,在创建ThreadPoolExecutor的时候,另一方面,经过Executors创建的线程池中的线程,其内部的线程名称都已经固定,类似于。这种线程本身是一种链表结构的阻塞队列,大小无线,在高并发的情况下,如果出现。要知道线程的创建与销毁都是特别消耗CPU资源的,如果。丢弃队列中最旧的任务,然后重试提交。
          2025-04-25 11:53:41
           1121
1121
        
原创 CAS(Compare And Swap)
2.1 简要概念CAS(Compare And Swap)是一种硬件级别的原子操作,通过比较当前值(Var)跟旧值也可以叫做预期值(Expect)是否相等,如果相等,那么就将当前值修改为新值(New);反之则代表对应的资源被其他线程修改过,则放弃此次修改。但是这里的“放弃”并不是直接挂起,而是允许其再次进行尝试,尝试的过程依旧会占用CPU资源,自然,尝试也有一定的次数限制。这其实就是自旋是一种线程在竞争共享资源时不立即阻塞,而是通过循环(忙等待)反复尝试获取锁或执行操作 的机制。
          2025-04-24 22:18:20
           913
913
        
原创 JAVA - OJ沙箱(JAVA默认模板沙箱,JAVA操作dokcer沙箱)
一种安全机制,用于隔离运行环境,限制程序或代码的权限,防止其对系统或其他程序造成损害。沙箱通常用于运行不受信任的代码(如用户提交的代码、第三方插件等),以确保系统的安全性和稳定性。
          2025-03-22 18:02:40
           755
755
        
原创 回溯---相关习题,经验总结
在本部分,我将最近所学有关深度优先搜索的有关习题进行了总结,分享给大家,希望能对各位有所帮助,共勉,一起进步^_^🤝。
          2025-02-08 15:45:38
           1103
1103
        
原创 同步阻塞-同步非阻塞-多路复用-异步阻塞(?)-异步非阻塞
我们将其按照类型进行区分,其实可以分为这几类同步与异步多路复用阻塞与非阻塞可以看到,这些概念单独拿出来,我们可以比较熟练的说出其功能作用,但是连在一起反而不太能反应过来接下来我们利用网络编程中的IO模型来了解这几个模型到底是什么。
          2024-12-08 10:22:15
           935
935
        
原创 NIO - selector简单介绍
selector作为NIO当中三大组件之一,是处理NIO非阻塞模式下的核心组件,它允许一个单个线程管理多个通道。
          2024-12-07 15:05:45
           1177
1177
        
原创 MYSQL - 索引详解
实际上在上一篇介绍MYSQL的体系结构当中我们稍微提及了一点,在引擎层,我们提到不同的引擎对应的索引的实现方式,选择是不一样的。简单理解,索引(index)其实就是一种帮助MYSQL高效的获取数据的说到数据结构就会想到B树,红黑树,hash表等......那么作为一种数据结构,就需要进行维护,保存。例如对u有MyISAM引擎来说,其索引相关的信息都会保存在 xxx.MYI当中进行保存与维护。而在InnoDB存储引擎当中,对应的表结构,数据以及索引都存储在了xxx.ibd当中。
          2024-12-06 17:08:19
           735
735
           1
1
        
原创 Mysql - 存储引擎
MYSQL的体系结构可以分为四个层级,从上往下依次为: 1. 连接层: 最上层为客户端以及一些连接服务,包含连接操作,例如JAVA想要与MYSQL建立连接就需要用到JDBC,PHP语言与Python也可以连接到MYSQL,建立连接。连接层主要用于完成一些连接处理,例如用户校验,账号密码是否正确,以及对应的授权认证,对于用户的权限管理。服务器也会为安全接入的每一个客户端验证其所具有的操作权限。 2. 服务层: 第二层架构服
          2024-12-06 14:46:47
           665
665
        
原创 Netty - NIO基础学习
IO三大模型之一,BIO,AIO,还有我们的主角NIO(non-blocking-io),也就是同步非阻塞式IO。这三种模型到底是干什么的?其实这三种模型都是对于JAVA的一种I/O框架,用来进行输入,输出操作。另一方面,以上三种模型提供的是统一的API操作,可以理解为JAVA针对于各种操作系统的IO模型进行的封装,从而具有一定的跨平台性等。作为开发者,我们不需要再了解有关操作系统层面的知识,直接使用这三种框架封装的API进行使用即可!
          2024-12-06 13:39:04
           1358
1358
        
原创 Flowable工作流 - 基础知识(后续继续更新)
流程设计器能够帮助开发者梳理项目整体流程,理清思路,加开开发的速度和效率。流程设计器有很多种,exlipise提供有相关插件,一些比较旧的IDEA也有对应的提供,这里我们选择GITHUB官方开源的Flowable-UI,简介好用。
          2024-11-19 11:54:29
           1266
1266
        
原创 JVM - JAVA内存模型
一个方法所需要输入的参数越多, 其中所设置的局部变量越多, 那么局部变量表所占用的内存就会越大, 从而导致对应的栈帧越来越大, 对应的嵌套调用次数就会减少。另一方面, 被局部变量表直接或者间接引用的数据引用的对象都不会被GC回收机制回收线程: 局部变量表是建立再线程的栈上的, 是。
          2024-10-24 20:44:50
           628
628
           2
2
        
原创 JVM - JAVA内存模型
一个方法所需要输入的参数越多, 其中所设置的局部变量越多, 那么局部变量表所占用的内存就会越大, 从而导致对应的栈帧越来越大, 对应的嵌套调用次数就会减少。另一方面, 被局部变量表直接或者间接引用的数据引用的对象都不会被GC回收机制回收线程: 局部变量表是建立再线程的栈上的, 是。
          2024-10-24 20:41:04
           1213
1213
        
原创 SpringBoot内置数据源
在我们之前学习在配置文件当中配置对应的数据源的时候, 我们设置的数据源其实都是Druid的数据源, 并且其配置有两种方式, 当然这两种方式都需要我们导入对应的有关 德鲁伊 的依赖才行代码如上, 我们已经将对应的数据库的信息都设置完成了, 但是并没有使用哪两种方式, 来设置其数据源具体是什么。
          2024-06-11 17:41:16
           650
650
        
原创 NOSQL -- ES
ES的全称(Elasticsearch)ES是一个分布式全文搜索的引擎也就是我们平常在购物, 搜索东西的时候常用的, 就是一个ES的类型, 分布式全文搜索引擎。
          2024-06-11 17:33:55
           780
780
        
原创 NOSQL -- MOGODB
是一个开源的, 高性能, 无模式的文档型数据库. NoSql数据库产品当中的一种, 也是最像关系型数据库的非关系型数据库。
          2024-06-11 17:28:21
           1148
1148
        
原创 Redis
之前我们学习得都是SQL类型的, 从这里开始我们开始设置对应的NoSQL类型的国内的一些企业, 并不是都是仅仅只使用关系型数据库, 也就是SQL就可以进行相关操作的, 还需要其他的类型, 也就是NoSQL类型的数据库。
          2024-06-11 17:25:38
           1539
1539
        
原创 修改缓存供应商--EhCache
除了我们默认的缓存形式simlpe之外, 我们其实还有许多其他种类的缓存供应Eacache就是其中的一种形式。
          2024-05-30 17:32:12
           701
701
           2
2
        
原创 Spring--两大核心之一--IOC
很明显, 第一种方式有一个致命的缺点, 那就是, 如果我们更换使用装置, 电脑之后, 无法保证另外一个电脑上, 对应的磁盘也有相应的XML类型的配置文件, 所以我们一般都是用第二种方式, 从而避免在不同的设备上对应路径当中没有配置文件。于service进行实现的, 但在DI当中, 我们会用组件预先设定好的一些方法, 比如(getter and setter) 接受来自于容器的注入, 也就是contraller注入到service当中, 我们也就不需要自己手动输入了,
          2024-04-18 11:00:29
           1065
1065
           1
1
        
原创 MYBATIS缓存
MYBATIS的第一缓存是SQLSession 并且这种缓存是即使在仅仅只有一个框架的情况下都是存在的, 因为第一缓存是默认开启的(default), 因为第一缓存级别使用的是SqlSession, 所以在调用同一个SqlSession, 并且在这同一个SqlSession当中多次查询同一个数据, 那么仅仅只会执行一次相应的SQL语句, 之后会直接从SQL缓存当中进行获取以我的测试类为例@Test结果如图所示, 跟我们预想的一样, 在第一级别的缓存下, 仅仅调用了一次相应的查询语句。
          2024-04-16 17:19:19
           1049
1049
        
原创 MYBATIS获取参数值
MYBATIS最核心的莫过于动态的获取各种的参数值, 为了将来更好的使用MYBATIS进行开发, 我们必须先打好 "获取参数值" 这一基础。
          2024-04-13 09:53:08
           1086
1086
        
原创 动态规划(背包问题)
动态规划实际上是一种将原本的 '大' 方面的问题转化为许许多多的 '小方面' 的一种应用, 在一定程度上避免数据的重复, 并且能够将数据以自己希望的方式进行存储, 用来解决多阶段的数学问题, 从而提高算法的效率在算法当中, 动态规划主要包括有:递推, 线性DP 记忆化搜索 背包问题 属性DP 区间DP 数位DP 状压DP 几种算法。
          2024-04-12 22:04:33
           2026
2026
        
原创 会话跟踪技术(Session 以及Cookie)
会话指的是用户打开浏览器, 访问某些web服务器资源的时候, 会话就会进行建立, 直到有一方断开, 那么会话才会结束, 需要注意的一点是, 一次的会话可以有多次的请求以及响应。
          2024-03-30 19:52:30
           1027
1027
        
原创 Request请求参数----中文乱码问题
在处理为什么会出现中文乱码的情况之前, 首先我们要直到GET 以及 POST两种获取请求参数的不同。
          2024-03-24 10:38:31
           1186
1186
        
原创 Tomcat项目创建 以及 在IDEA当中集成Tomcat
TOMCAT项目的创建有两种方式, 第一种是利用骨架进行创建, 第二种是利用填补进行相应的创建, 不适用骨架进行创建 ,在这里主要聊第二种 (使用IDEA版本为2023)
          2024-03-23 14:29:47
           667
667
        
原创 JavaWeb -- HTTP -- WEB服务器TOMCAT
不难发现,HTTP的请求以及响应的响应格式有许多,为了方便对于这些HTTP协议的操作,我们可以使用WEB服务器对其进行封装,使得程序员不必直接对HTTP协议进行操作,从而让WEB的开发更加的便捷。
          2024-03-22 19:43:27
           2250
2250
        
原创 JavaWeb Mapper代理开发
在这里需要注意的一点,如果想要将配置文件跟接口放在一个文件夹当中,最好时不要采用将两个放在一个包下,最好是将配置文件跟其单独分开,切记不要像下面这样为了实现目的,其实我们仅仅只需要创建一个跟MAPPER接口相同的包名称即可,如图TIPS!在更改完包之后,我们的BrandMapper因为路径被修改了,所以我们需要在配置文件当中重新对其映射文件进行一个修改右键,复制其路径,之后再在相应的配置文件当中进行修改即可如果表不在当前的数据库当中,记得也要修改相应的数据库名称,都在mybatis的配置文件当中。
          2024-03-16 11:17:47
           679
679
        
原创 *Javaweb -- MyBatis*
1.MyBatis是一个优秀的 ①'持久层' ②'框架',用于简化JDBC的开发!①:JAVAEE有三层的结构:表现层, 业务层, 持久层. 表现层代表的是页面的展示,业务层则指的是对于相关逻辑的处理, 而持久层, 指的则是对于数据进行持久化,保存在数据库当中. 持久层具体的来说就是负责将已经编写过的数据保存到数据库当中的一层代码。
          2024-03-12 20:54:01
           762
762
        
原创 *JAVAWEB--maven*
比方说平时我们编写JAVA项目的时候,如果想把原本在eclipse当中编写的项目导入到IDEA当中进行使用,就会导致报错,因为这两个的项目结构并不一样,强行导入就会导致错误产生。但如果使用MAVEN创建一个项目,会让在任何的IDE上创建MAVEN项目的项目结构都是一样的,也就是不会进行报错,可以直接进行使用. 非常好用b( ̄▽ ̄)d。在之前的介绍当中我们已经理解到了,关于MAVEN可以进行全自动的编译,测试,以及打包等等......其实这些都是通过这些插件进行相应的执行的。超级~好用b( ̄▽ ̄)d。
          2024-03-03 11:10:39
           719
719
        
原创 JAVA *数据库连接池 * 接JDBC
数据库连接池实际上就是一个 " 容器 "当有多个拥护需要访问数据库的时候, 一个用户会打开一个数据库连接, 但是!当用户离开的时候,就会断开数据库连接,那么数据库连接就作废了,之后如果还有用户需要进行访问,需要再建立一个数据库连接......循环往复, 那么数据库的执行效率就会十分的慢....以此作为前提的情况下,我们就可以使用连接池!也就是一个连接池当中有多个的数据库连接, 当用户使用完了之后数据库连接并没有被清楚,而是又回到了连接池当中,以便下一个用户再使用数据库连接!
          2024-03-02 21:20:20
           869
869
        
原创 MYSQL--JDBC*
1.JDBC是一种用于执行SQL于语句的'JAVA API',JDBC是一种使用JAVA访问数据库的执行规范标准,能够为不同的数据库提供统一的访问!由一组使用JAVA语言编写的接口以及类组成的2.JDBC核心的类以及相关的接口主要有:DriverManager 注册驱动Connection 使用与跟数据库之间的连接Statement /prepareStatement(预处理) 操作数据库的相关SQL语句对象ResultSet 生成相应的结果集合。
          2024-02-29 12:59:17
           845
845
        
原创 MYSQL--(1.存储引擎 *2.事务*)
1>先简单介绍存储引擎最常用的: MYLSAM InnoDB Memory事务是通过存储引擎实现的,而且目前来看,对于MYSQL仅仅只有InnoDBc才能够支持事务的使用当多个事务对一个表进行操作的时候,为了避免几个事务同时对于表进行修改从而产生错误.使得最后的结果没有达到预期.因此就需要使用事务隔离 I。
          2024-02-25 23:15:26
           1104
1104
        
原创 *MYSQL--索引*
添加方式一:直接在创建表的时候添加索引id int,添加方式二:创建表之后进行直接添加添加方式三:通过修改表结构进行添加索引 -- 推荐删除索引操作:一:drop index 索引名 on 表名二:alter table 表明 drop index 索引名唯一索引跟普通索引相似,仅仅只有在本索引列上,数值必须是不同的,也可以有空值,但是如果是组合索引,列值的组合必须是唯一的。
          2024-02-23 17:49:30
           1018
1018
        
         
      
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
 RSS订阅
RSS订阅