自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TheAnnoyingDog的博客

菜鸡的奋斗史

  • 博客(106)
  • 收藏
  • 关注

原创 ThreadLocal 详解

总结了ThreadLocal的底层实现原理,分析了内存泄漏的相关问题,以及ThreadLocal的最佳实践。

2022-11-06 12:10:58 505 1

原创 ConcurrentHashMap源码分析合集

ConcurrentHashMap源码分析文章汇总。

2022-10-27 19:10:27 276

原创 ConcurrentHashMap_get与remove方法源码分析

在ConcurrentHashMap的get方法中也没有任何加锁逻辑。与普通的Map一样,通过key查找元素。方法中调用了FWD和TreeBin中的。

2022-10-27 18:26:03 1393

原创 ConcurrentHashMap_transfer方法源码分析

ConcurrentHashMap中十分重要的方法transfer方法的源码分析,是ConcurrentHashMap扩容操作的实现。

2022-10-26 21:12:41 834

原创 ConcurrentHashMap_put方法源码分析

put()put()putVal()putVal():spread()写时操作:整个写数据的流程是一个无条件自旋过程(死循环)。addCount()

2022-10-25 14:24:23 580

原创 ConcurrentHashMap静态公共方法分析

分析ConcurrentHashMap中一些重要的公共方法,以便理解后面的源码。

2022-10-23 19:41:34 439

原创 ConcurrentHashMap内部结构分析(属性,内部类,构造器)

ConcurrentHashMap在使用时与HashMap效果一样,但ConcurrentHashMap时线程安全且高效的HashMap。在原来HashMap的设计上融入了并发编程的思想,在保证线程安全的同时又能保证高效的操作。为什么要使用ConcurrentHashMap呢?(1)HashMap线程不安全在多线程环境下,使用 HashMap 进行 put 操作会引起死循环,导致 CPU 利用率接近 100%,所以在并发情况下不能使用 HashMap。

2022-10-23 10:06:51 458

原创 LongAdder(高性能原子累加器)源码分析

LongAdder的核心思想就是通过空间换时间,将热点value分散成一个Cell数组来承接并发的CAS,从而提升性能。但是AtomicLong可以彻底被取代了吗?虽然看上去LongAdder性能远超了AtomicLong,但是也要分场景使用,如果是并发不太高的系统,使用AtomicLong可能会更好一些,而且内存需求也会小一些。同时,sum()

2022-10-20 18:07:34 455

原创 LinkedHashMap源码分析

分析了LinkedHashMap的源码,总结了LinkedHashMap中三个后置处理方法的实现,以及扩展了LRU缓存相关知识。

2022-10-12 08:46:38 359

原创 Java并发编程的前置知识

总结了在学习java并发编程前需要具备的一些知识。

2022-10-02 21:16:00 625

原创 二分查找总结

总结二分学习边界问题,以及模板的使用。

2022-08-11 19:03:44 267

原创 LeetCode 二叉树的遍历

二叉树遍历用递归时间很简单,只需要调整递归调用方法的顺序即可。而迭代的方式需要一个栈的结构来辅助完成,需要注意的是入栈和出栈的时机,同时需要记住每经过一个节点,就要将其入栈。...

2022-08-03 18:25:17 216

原创 Redis 详解

Redis的使用详解,包含了Redis的基本数据类型,Redis6新增的数据类型,主从复制,哨兵模式,集群,以及Redis的持久化、三大缓存问题、分布式锁。

2022-07-23 14:43:42 482 1

原创 Redis 持久化操作 (RDB, AOF)

介绍了Redis的两种持久化策略:RDB与AOF,以及两个策略的区别和优缺点。

2022-07-22 10:00:48 307

原创 Redis事务与锁机制

Redis的事务,以及相关问题总结。

2022-07-21 18:42:48 170

原创 Jedis操作Redis

Jedis封装了许多API可以用来对Redis进行操作,接下来是操作演示。如果Redis安装在云服务器中,注意配置服务器的防护墙安全组。操作Redis的相关的命令在Jedis中都有与其对应的方法。1、输入手机号,点击发送后随机生成6位数字码,2分钟有效。2、输入验证码,点击验证,返回成功或失败。3、每个手机号每天只能输入3次。...

2022-07-21 13:22:20 284

原创 Redis 配置文件

Redis配置文件解析。

2022-07-21 09:23:24 193

原创 Redis中的数据类型

总结了Redis五大常用数据类型以及Redis6新增的三总数据类型以及它们的使用和数据结构。

2022-07-21 09:09:24 238

原创 SpringBoot 数据访问

SpringBoot对于数据访问层使用的总结,连接MySQL数据库,整合MyBatis,MyBatisPlus,Redis。

2022-07-19 15:48:38 431

原创 SpringBoot 异常处理机制

SpringBoot异常处理机制的使用总结。

2022-07-19 15:46:06 2241

原创 SpringBoot Web开发

SpringBoot 对于Web开发的学习总结。

2022-07-19 15:43:14 130

原创 SpringBoot (底层注解分析、依赖管理、自动配置原理)

记录了微服务以及SpringBoot的基本概念,以及SpringBoot底层注解分析、依赖管理、自动配置原理。

2022-07-19 15:35:28 195

原创 IDEA设置MyBatis核心配置文件的模板

在设置中找到File and Code Templates,点击 ” + “:将模板粘贴后点解Apply。之后在新建的文件提示中就可以看到mybatis-config.xml了:

2022-06-24 16:46:07 201

原创 IDEA设置mapper映射文件的模板

在设置中找到File and Code Templates,点击 ” + “:将模板粘贴后点解Apply。之后在新建的文件提示中就可以看到mybatis-mapper.xml了:

2022-06-24 16:45:22 460

原创 MyBatis配置使用详解

详细介绍了MyBatis的使用步骤,以及配置说明,包括了逆向工程,分页插件等内容。

2022-06-24 16:41:37 316

原创 Spring文章汇总

Spring文章汇总。

2022-06-23 19:08:40 139

原创 【计算机网络】应用层

应用层位于传输层的上层,也就是最顶层。应用协议应当定义:**DHCP(Dynamic Host Configuration Protocol)**也就是动态主机配置协议,提供了一种机制,称为即插即用连网。连接到互联网的计算机需要配置的项目包括:用了DHCP协议就可以省去人工配置,一切机器都可以自动配置,也不会出现ip地址冲突的麻烦。**域名系统DNS(Domain Name System)**是互联网使用的命名系统,用来吧人们使用的机器名字转换为IP地址。**文件传送协议FTP(File Transfer

2022-06-17 16:53:53 407 1

原创 【计算机网络】传输层

流量控制是基于滑动窗口的。举例:例题:到这里时我开始意识到TCP协议实在是太伟大了。。。TCP为保证网络的传输质量做了很多的考虑,光是阅读笔记可能无法一下子理解:可以回看5.4~5.5节的内容。大体上有四个拥塞控制算法:这几种算法一起使用的,并且要知道拥塞窗口的概念,它是一个可以变换大小的滑动窗口。**慢开始:**到达门限值(阈值),转为使用拥塞避免算法。拥塞避免:慢开始到达门限值,拥塞窗口就不是慢开始时的指数增长了,而是线性慢慢增长,出现丢失分组现象,就可能出现了拥塞现象,就将拥塞窗口调整为1,门限值调为

2022-06-17 16:42:56 261

原创 【计算机网络】网络层

网络层中重要的内容:注意:网络分成A类地址的主机数目最多,其次是B类,然后是C类。补充:实际应用上需要进行网络划分,也就是划分子网。借助子网掩码来区分不同的子网。习题:需要重点掌握黄色区域的内容:习题:根据实际需求,根据不同网络需要的主机个数给各个子网划分网络。有两种规划方式:习题:**注意分配原则:**每个子块的起点位置不能随意选取,只能选取块大小的整数倍的地址作为起点,建议先给大的子块分配。因特网采用的路由选择协议的主要特点:例题:OSPF协议也是内部网关协议。前两个协议都是内部路由协议,而BGP是将不

2022-06-16 21:08:03 545

原创 【计算机网络】数据链路层

数据链路层位于物理层的上层,网络层的下层,属于计算机网络的底层。在这一层主要探求的问题是在同一个局域网中,分组怎么从一台主机转发到另一台主机,但是不经过路由器转发。注意:不是所有数据链路层都会加入帧头和帧尾,其他协议定界的方式可能不一样。字节填充:开始字符SOH,结束字符EOT。数据中如果出现与开始字符和结束字符相同的内容,就在其前面插入ESC转义字符。零比特填充:每5个1插入一个0,接收方遇到每五个就要去掉一个0。奇偶校验不好用,一般不使用,了解即可。考试出题,需要掌握。例题:差错检测总结:数据链路层也可

2022-06-15 17:47:19 137

原创 【计算机网络】物理层

简单来讲物理层就是用来解决如何传输比特0和比特1的问题。物理层协议的任务:相关物理层传输媒体了解即可。先了解码元是什么:简单来说码元就是构成信号的一组波形。我的理解:传输过程中信号会有变化,最大并且正确传输的bit量就是信道的极限容量。...

2022-06-14 16:14:23 106

原创 【计算机网络】概述

定义未明确统一。常见的计算机网络性能指标有一下八个:注意区分数据量单位和数据率单位 。吞吐量表示在单位时间内通过某个网络的实际数据量。RTT(Round-Trip Time),数据送出去接到回复的时间。主要有3个:OSI的体系结构,TCP/IP的体系结构,教学常用的体系结构。计算机网络复杂,存在很多问题,不能一下解决所有问题,所以分层来解决,每一层解决一些问题,完成一些功能。实际通信是应用进程间的通信,显示浏览器向服务器发送请求,服务器给浏览器响应。最原始的数据会在每一层封装成响应报文,也就是逐层封装,到大

2022-06-14 14:21:57 123

原创 Spring基于注解编程详解

注解编程简单来讲指的是在类或方法上加上特定的注解,完成指定功能的开发。为什么要使用注解进行编程?注解有什么作用?替换XML文件配置形式,简化配置替换接口,实现调用双方的契约性Spring注解开发中的一个问题:Spring基于注解进行开发之后会不会导致耦合呢?答:在Spring框架应用注解时,如果对注解的内容不满意,可以通过配置文件进行覆盖。搭建开发环境:2.1 对象创建相关注解@Component作用:相当于在配置文件中使用bean标签创建对象注意: 创建出来的bean的id属性使用@Compone

2022-06-14 09:15:41 232

原创 Spring多配置文件使用

注意:虽然提供了多个配置文件,但是后续应用的过程中,还要进行整合 。非web环境Web环境2. 使用import标签定义一个主配置文件,在主配置文件中进行配置。

2022-06-14 09:15:29 646

原创 Spring中的事务属性(Transaction Attribute)

事务属性:描述事务特征的一些列值。为注解中的属性赋值,如:3. 事务属性详解3.1 隔离属性(ISOLATION)隔离属性的概念概念:隔离属性描述了事务解决并发问题的特征。事务并发时产生的问题脏读不可重复读幻读总结数据库对于隔离属性的支持默认隔离属性查看数据库默认隔离属性MySQLOracle隔离属性在实战中的建议3.2 传播属性(PROPAGATION)概念传播属性的值及其用法默认的传播属性推荐传播属性的

2022-06-14 09:15:15 592

原创 Spring的事务处理

事务是保证业务操作完整性的一种数据库机制。事务的四大特性:结论:控制事务的底层 都是Connection对象完成的。Spring采用AOP开发的方式来实现事务控制。所以需要以下几个基本步骤:3.2 编码UserServiceImpl: 标记注解在Spring配置文件中添加信息3.3 细节分析实际增添额外功能也就是事务功能的是,所以要使用事务就需要在Spring配置文件中对其进行配置。实现事务实际上就是动态代理,所以可以切换动态代理的实现方式(JDK或者CGlib)......

2022-06-14 09:15:04 78

原创 Spring整合MyBatis

3. 配置Spring配置文件4. 整合MyBatis的细节问题: Spring与Mybatis整合后,为什么DAO不提交事务,但是数据能够插入数据库中?

2022-06-14 09:14:41 81

原创 AOP开发中的一个坑:使用AOP添加的额外方法在业务方法间调用中没有执行

在同一个业务类中,业务方法间进行调用,如方法a调用了方法b,两个方法都增加了额外功能,但是最后在实际调用过程中只有a方法的额外功能实现了,b没有实现。2. 解决方案实现ApplicationContextAware接口重写方法,将ApplicationContext作为成员变量在方法中进行赋值,在调用中使用ApplicationContext对象获取代理对象执行方法。**注意:**不要在方法中创建ApplicationContext对象,因为这个对象代表了Spring工厂,占用资源多,一个程序中应该只存

2022-06-14 09:14:23 199

原创 基于AsceptJ注解的AOP编程

上面这几步是面向AOP编程的大致步骤,而基于注解的AOP编程会简化AOP开发的过程。基于注解的AOP开发步骤:代码:配置文件:2. 切入点的复用如果有多个方法需要额外功能,就需要写多注解,但是execution表达式函数内的表达式会出现冗余的现象,所以引入切入点复用技术。使用方式:在切面类中定义⼀个方法上面标记注解通过这种方式,定义切入点表达式,后续更加有利于切入点复用。代码:3. 切换动态代理的创建方式AOP底层是动态代理,动态代理的实现方式有两种,JDK动态代理和CGlib动态代理。通过更改配

2022-06-14 09:14:07 217

原创 Spring AOP(面向切面编程)

AOP(Aspect Oriented Programing) 翻译过来就是面向切面编程。可以先来了解一下面向xx编程都是什么意思:那么AOP (Aspect Oriented Programing) 面向切面编程 = Spring动态代理开发以切⾯为基本单位的程序开发,通过切面间的彼此协同,相互调用,完成程序的构建。切面 = 切入点 + 额外功能AOP的本质就是Spring得动态代理开发,通过代理类为原始类增加额外功能。好处:利于原始类的维护切入点是组成切面的单位,简单来讲,切入点就是我们要去对其进

2022-06-14 09:13:43 126

空空如也

空空如也

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

TA关注的人

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