自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

逸枚俗人的博客

不要盲目相信这篇博客中的内容

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

原创 从 Servlet 到 DispatcherServlet(SpringMvc 容器的创建)

SpringMvc 是一个具有 Spring 容器(ApplicationContext)的 Servlet。其中,HttpServlet 属于 JDK 的内容,从 HttpServletBean 开始,便属于 Spring 体系中的内容。

2024-05-03 01:52:04 511 3

原创 从 Servlet 到 SpringMvc

下图为 SpringMvc 的 DispatcherServlet 到 Servlet 的继承体系结构,从 HttpServletBean 开始的子类,便属于 Spring 的体系结构,Spring 框架中类似这种以 XXXBean 结尾是用于和其它框架进行整合的 JavaBean 对象,类似还有和 MyBatis 框架进行整合的 SqlSessionFactoryBean。这里只需要关注 HttpServlet 到 Servlet 的这一部分。方法描述init()容器启动时,被容

2024-05-03 01:49:35 559

原创 BeanFactory 源码浅析

BeanFactory 是核心容器,负责管理 Bean 对象。

2024-05-03 01:35:31 807

原创 JDK8 日期时间 API 的简单使用

Date 类中的所有方法从 JDK1.1 开始便被弃用。

2024-05-03 00:26:09 421

原创 跳表(Java 实现)

【代码】跳表(Java 实现)

2024-05-01 17:25:59 13

原创 MySQL多版本并发控制(待完善)

事务A中读取到事务B中未提交的数据。具体来说,在t1时刻,事务A中读取到事务B中未提交的数据,并将该数据用于计算得到一个结果值;而在t2时刻,事务B执行回滚,那么事务A中得到的结果值就没有任何意义,这种现象就称为脏读。

2024-04-30 18:29:58 855 1

原创 MySQL基础学习(待整理)

二进制日志文件log-bin(主从复制)错误日志log-error默认是关闭, 记录严重的警告和错误信息, 每次启动和关闭的详细信息查询日志log默认关闭, 记录查询的sql语句,如果开启会降低mysql的整体性能,数据文件myi文件(存放表索引)myd文件(存放表数据)myfrm(存放表结构)配置文件路径(linux下是在/etc/my.cnf, 而windows下是my.ini)增(创建数据库)

2024-04-30 18:24:20 1887 1

原创 类加载子系统之类的生命周期(待完善)

文中大量图片来源于。

2024-04-30 18:00:48 350

原创 类加载子系统之类加载器(待整理)

调用 findLoadedClass 方法,判断这个类是否已经被加载过。若没有被加载,才进行后续处理在没有被加载的情况下,优先委托给父加载器,让父加载器进行加载上面都没有找到的情况下,调用 findClass 方法(默认抛出异常,自定义类加载器需要重载该方法)查找该类,然后调用 resolveClass 方法进行解析。总结:loadClass 方法总得来说分两步,(1)找到字节码的位置,(2)解析// 1. 检查类是否已加载Class<?try {

2024-04-29 10:30:51 866 1

原创 Java对象在堆和栈上的存储以及Java方法调用的原理

下面分别是 -5 和 5 的补码表示复习点:给定一个负数,写出其补码。

2024-04-29 02:16:13 1071

原创 处理 CentOS7 下 WiFi 不可用的问题

在物理机中安装 CentOS 7、Ubuntu、Kali Linux 均发现 WiFi 不可用,具体现象为 WiFi 的设置选项卡中没有任何条目,或者 No Wireless Adapter 之类的提示。后面简单了解,似乎是联想笔记本的无线网卡和Linux5.0版本之前的内核不兼容(未验证其说法可靠性,仅供参考)

2024-04-28 13:16:32 610 1

原创 Linux 常用命令分类

进入目录进入目录压缩或解压缩查找指定用户的进程字段名含义解释top命令选项含义以批量模式运行, 但不能接受命令行输入显示命令行, 而不仅仅是命令名显示两次刷新时间的间隔,单位是秒s禁止显示空闲进程或僵尸进程显示更新次数,然后退出。比如 , 表示top更新5次数据就退出只监视指定PID的进程不经过任何延时就

2024-04-27 19:56:20 616

原创 Linux 下一些简单配置和软件安装

以VAR开头的表示用户可配置的变量以CONST开头的表示涉及到的系统常量,例如某个特定文件的地址路径。一般不可变,但是不排除因版本不同需要进行修改。出现PATH表示这是一个路径信息。

2024-04-27 19:43:42 192 2

原创 Docker 简单使用及安装常用软件

默认情况下使用bridge网络,但该网络的问题是不能将容器名解析为 IP 地址,例如不可以通过ping 的方式来进行容器间的通信。而用户定义的网络则解决了这个问题。docker network create 创建容器时连接到指定网络docker run --name --network 运行中容器连接到指定网络docker network connect docker network disconnect

2024-04-27 19:33:46 1165

原创 数据链路层(计算机网络)

一台主机一般有以太网卡(有线网卡,Ethernet)和无线网卡(WLAN,Wireless LAN),在 Windows 系统上可以通过进行查看路由器的每一个接口可以认为是一张网卡(暂时这么认为),下图是通过 Packet Tracer 查看 Router1941 的配置项。

2024-04-25 00:21:41 995 1

原创 理解字符串常量池(JVM)

使用 jclasslib 插件打开字节码,选择,左侧过滤后的内容即为字符串常量池方法区是逻辑概念,永久代和元空间是方法区的实现。int、doubleIntegerString1"abcd"中的 s 是常量,但中的 s 并不是常量,同样中的 num 也不是常量。

2024-04-20 01:02:35 1161

原创 从局部变量表和操作数栈的角度来看 i *= ++i

如果我是编译器的设计者,对于这个字符串的解析,至少存在着以下两种可能性:而无论是对于 还是对于 ,还是可以存在着两种可能性(假设 的初值 10):下面通过 jclasslib 来查看栈帧的局部变量表以及字节码指令来验证上面两个结论局部变量表和操作数栈解释:Java 源代码和字节码的对应关系:

2024-04-18 21:13:26 340

原创 在 Centos 7 上编译 OpenJDK 23 及错误处理

希望在 JDK 源码中添加自己的中文注释,方便对学习过程进行记录。其中遇到的错误主要有和,没有去调查哪些版本是兼容的,本文主要处理字符编码问题。

2024-03-05 16:04:29 951

原创 Shell 脚本基础

定义一个变量username, 注意不能有多余的空格 username = ROOT# bash中变量默认类型都是字符串x=1+1echo $x# 将变量提升为全局变量, 使得其他的shell程序可以使用export <变量名>函数不可以写形参, 只能通过$1$2这种形式来获取传入函数的值/bin/bash# 注意: 函数不能写形参列表, 因此()内部必须是空, 甚至也可以不写()function <函数名>()# 函数主体, 可以有返回值案例应用:计算两个输入值的和。

2023-12-26 00:31:42 1073

原创 图解AnnotationConfigApplicationContext容器的创建流程(源码)

对 Spring 经典容器(AnnotationConfigApplicationContext)的创建流程进行图解梳理

2023-12-26 00:12:06 485

原创 数值分析(只为应付考试)

研一时为应付高等工程数学考试整理的有关数值分析部分的内容,目的是为了应付考试。

2023-12-21 21:34:50 1045

原创 CAS为什么还存在线程安全问题(从所谓的ABA问题再学CAS)

compareAndSet 是 compre(比较)和 set(赋值)是原子性操作,但实际涉及到。

2023-12-20 23:03:41 993

原创 基于Spring的枚举类+策略模式设计(以实现多种第三方支付功能为例)

最近阅读《贯彻设计模式》这本书,里面使用一个更真实的项目来介绍设计模式的使用,相较于其它那些只会以披萨、厨师为例的设计模式书籍是有些进步。但这书有时候为了使用设计模式而强行朝着对应的 UML 图来设计类结构,并且对设计理念缺少讲解,所以也不能说有多优秀,79分的水平。书中就这部分内容设计,提到使用了:策略模式、门面模式、策略工厂模式、享元模式。但可能真正称得上是设计的内容就两个部分,策略模式和策略工厂模式。但是就书中所写的策略工厂,个人认为有些啰嗦,并且指定全类名,通过反射来获取对象,这种实现不够优雅。

2023-12-20 00:51:01 1435

原创 JavaWeb项目中已经导入依赖却报错依赖不存在

在使用 Maven + Servlet + Tomcat 来搭建 JavaWeb 项目时,在 pom.xml 中正确引入了依赖,编码过程中也能够正常使用。但是在启动 Tomcat 之后(启动时或启动后),却报错显示该依赖不存在。

2023-12-15 02:03:24 623

原创 Cglib动态代理从入门到掌握

本文的写作目的是为了探究 Spring 框架中在使用@Transactional标注的方法中使用 this 进行自调用时事务失效的原因,各种视频教程中只是简单指出 this 指向的不是代理类对象,而是目标类对象,但是并没有解释为什么 this 不是代理类对象?在学习完 JDK 动态代理之后,我认为是动态代理的原因。虽然之后 Cglib Proxy 和 JDK Proxy 的实现原理不同,,而传递给 invoke 方法的对象就是目标类对象,因此 this 指向的就是传递过来的目标类对象。

2023-12-10 16:09:28 970

原创 JDK 动态代理从入门到掌握

JDK 动态代理的核心是对代理类的增强方法和目标类的原始方法对象的进行动态绑定(这部分是 JDK 源码做的事情);而作为 JDK Proxy 的使用者,我们使用动态代理的核心就是正确地设计自定义的 InvocationHandler 类,也就是传入目标类对象从调用过程中来看,JDK 完成前半部分的绑定工作,使用者完成后半部分 Target 对象的注入和方法调用工作。拦截接口数组中的所有方法,创建代理类。

2023-11-30 21:01:03 961

原创 简单模拟 Spring 创建的动态代理类(解释一种@Transactional事务失效的场景)

本文主要目的是从父类和子类继承的角度去分析为什么在 @Service 标注的业务类中使用 this 调用方法会造成事务失效。解释在这种情况下 this 为什么是原始类对象而不是代理类对象。

2023-11-20 18:53:24 274

原创 人和计算机用都高效且简洁的LU分解

人和计算机用都高效简洁且易于理解的LU分解

2022-11-24 22:34:19 145

原创 从配置文件到配置类的一种实现方式

从配置文件到配置类的一种实现方式

2022-11-04 21:57:36 179

原创 IDAE中文乱码的问题处理及分析

问题描述IDEA中出现中文乱码原因分析windows 10中文系统的字符编码集默认为gbk错误处理修改windows 10系统的控制台的字符编码集区域与语言设置–>管理语言设置–>更改系统区域设置–>勾选utf-8缺点: 仅仅修改上面的配置后, tomcat在控制台输出中文还是乱码在tomcat服务器的配置选项, 即Edit Configurations中的VM options设置-Dfile.encoding=UTF-8缺点: 控制台中文输出乱码的问...

2022-05-10 13:09:04 580

原创 第四章: 多表的合并(merge, append的使用)

第四章: 多表的合并(merge, append的使用)Python数据处理入门第四章: 多表的合并(merge, append的使用)字段方向上的拓展(更多列) --- merge元组方向的拓展(更多行) --- append字段方向上的拓展(更多列) — mergeimport pandas as pdfilepath_01 = r"file01.xlsx"filepath_02 = r"file02.xlsx"df_table_01 = pd.read_excel(filepath_01)

2022-05-03 16:44:26 1137

原创 第六章 数据库完整性和触发器

数据库完整性数据库完整性概述数据完整性是DBMS应保证的DB的一种特性在任何情况下的正确性, 有效性和一致性广义完整性语义完整性狭义完整性并发控制安全控制DB故障恢复狭义完整性实体完整性主键不能取NULL参照完整性外键只能取NULL或对应表的主键中的值用户自定义完整性为什么会引发数据库完整性的问题不正当的数据库操作, 如:输入错误操作失误程序处理失误数据库完整性管理的作用防止和避免数据库中不合理数据的出现DBMS应尽可能自动防止DB中语义不合理现象

2022-05-03 16:06:51 1096

原创 第五章 SQL实现关系代数运算

SQL实现关系代数运算并-交-差的处理不带ALL表示去重, 而带有ALL表示保留冗余运算SQL语法并运算UNION [ALL]交运算INTERSECT [ALL] (mysql中未实现)差运算EXCEPT [ALL] (mysql中未实现)#学过002号课程的同学 或 学过003号课程的同学select Snofrom sct.scwhere Cno = '002'unionselect Snofrom sct.scwhere Cno = '0

2022-05-03 16:03:11 1120

原创 第四章 SQL子查询

文章目录子查询子查询概述子查询功能子查询分类编写子查询的技巧单行子查询和多行子查询单行子查询多行子查询不相关子查询和相关子查询不相关子查询相关子查询EXISTS和NOT EXISTSIN子查询some/all子查询(NOT) EXISTS子查询重点理解: NOT EXISTS全称命题与存在命题的转化分组计算和聚集计算子查询子查询概述出现在某一子句中的select语句称为子查询子查询功能判断某一元素是否是某一个集合的成员判断某一个集合是否包含另一个集合测试集合是否存在重复元素, 集合是否为空等

2022-05-03 15:58:04 590

原创 第三章 SQL增删改

文章目录SQL增删改插入单个元组插入批量元组插入更新SQL增删改插入单个元组插入语法: insert into <表名>[(列名 [, 列名] ...)] values (值 [,值] ...)#插入student表数据insert into studentvalues ('98030101', '张三', '男', 20, '03', '980301');insert into studentvalues ('98030102', '张四', '女', 20, '03', '

2022-05-03 15:50:14 215

原创 第二章 SQL简单查询

文章目录SQL简单查询基础查询去重模糊查询多表联合查询SQL简单查询基础查询#查询student表中的所有学生信息select *from student;#查询student表中所有学生的姓名以及年龄select Sname, Sagefrom student;#查询学生表中所有年龄大于等于19岁的学生年龄和姓名select Sage,Snamefrom studentwhere Sage >= 19;#查询教师表中所有工资少于1500元或者工资大于2000元, 并且

2022-05-03 15:47:37 156

原创 第一章 创建数据库和表

冲突可串行化判别算法数据库是共享资源, 多个事务对共享资源的并发访问可能会造成数据不一致问题, 因此需要并发控制。并发控制的目的是解决数据不一致问题, 即得到一个正确的调度序列,而封锁则是产生正确调度序列的方法. 封锁是指一个事务在对某个数据库对象操作之前先向系统发出请求,对其加锁. 根据锁的类型, 在事务释放该对象的锁之前, 其它事务不能更新或读取该对象.封锁是产生正确调度序列的方法, 而可串行化则是判断一个给定的调度序列是否正确. 由于没有高效判别一个序列是否可串行化的算法, 通过附加一些额外条件

2022-05-03 15:29:06 579

原创 第三章: 批量处理多张sheet表的excel文件

第三章: 批量处理多张sheet表的excel文件Python数据处理入门第三章: 批量处理多张sheet表的excel文件良好习惯(十分重要)代码处理良好习惯(十分重要)在正式处理数据之前, 请保证你数据和文件名的规范性, 否则报错是你活该, 至少满足以下要求:不要在原始的数据文件中添加你的处理结果保留原始数据文件作为副本, 你的处理结果大多数情况下只会给专业的人添加麻烦不要使用合并单元格你做的是数据处理工作, 不是数据展示工作, 此外合并单元格也并没有让表格显得高级

2022-04-20 15:40:48 662

原创 第二章: PyCharm相关配置(可跳过)

第二章: PyCharm相关配置Python数据处理入门第二章: PyCharm相关配置配置忽略大小写无限试用配置忽略大小写依次选择File-->Settings进入如下界面, 搜索框中输入case无限试用依次选择File-->Settings-->Plugins进入到插件页面选择中间的小齿轮⚙, 选择Manage Plugin Repositories, 再选择+, 添加如下地址后点击OK在插件商店Marketplace中下载如下插件, 点击Apply和

2022-04-20 14:56:38 771

原创 第一章: 从零开始搭建Anaconda + PyCharm环境

第一章: 从零开始搭建Anaconda + PyCharm环境Python数据处理入门第一章: 从零开始搭建Anaconda + PyCharm环境前言一、Anaconda下载和配置下载Anaconda安装Anaconda二、PyCharm下载和配置下载PyCharm安装PyCharm配置PyCharm(重点)三、配置阿里源镜像前言首先简单类比下Anaconda和PyCharm的作用如果将写代码的过程比作用画笔绘制画作, 则Anaconda相当于颜料盒, 里面存放着各种库, 这些库的作用就相当于颜

2022-04-20 14:26:56 806

空空如也

空空如也

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

TA关注的人

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