自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 20221227日记

日记

2022-12-27 23:04:07 205 1

原创 Spring响应请求执行解析流程(DispatcherServlet原理解析)

博客背景此前本人在2020年的时候初识spring 至今,之前是看过别人总结的spring执行流程,工作一年之后突然又想起来这个事情,想进行一次深入源码的解析这个过程,来提升自己的专业能力,看源码的过程非常枯燥代码会比较多,不过看的过程让人心旷神怡,接下来让我们一起打开spring源码黑盒Spring 执行流程图具体文字解析:(上述两张图片来自b站狂神说java大佬)源码解析看完上面大佬整理的流程我们对spring的执行有了一个清晰的认识,但印象始终不深刻,我们现在根据流程图的序号一个一个在

2022-05-03 22:55:47 1427

原创 职业规划底层逻辑

树根篇:树成长和人成长如出一辙,想成为大树几个因素,树根一定是关键,人也一样底蕴不行,成不了事。很多时候我们看一棵树只能看到树干有多茂盛,确忽略了地下树根日复一日,年复一年的付出,有时候我们看人也是这样。树干篇:想成大树,百年大树,都有一颗主干树,由一颗强有力的主干,衍生出无数子树干,这样的结构只能经历大风,大而不倒的关键,做人也是这样盲目从众看似学富五车,是一个假复合型人才,但是没有一个主干,经历不住大风很,很脆弱。土壤篇:没有一个好的土壤好的生活环境,代表没有合适养分,树根无法有好的成长前提,没有稳

2022-05-02 23:16:45 315

原创 Java内存模型

Java内存模型概念图线程共享区1.方法区方法区也是线程共享区用于储存虚拟机加载的类信息(类的版本、字段、方法、接口),常量,静态变量,即时编译后的代码等数据方法区逻辑上属于堆的一部分,但是与堆进行了区分,通常又叫非堆HotSpot虚拟机使用永久代来实现方法区,使得HotSpot虚拟机的垃圾收集器可以像管理内存一样管理这部分内存,能省去专门为方法区专门为方法区编写内存管理代码工作,所有开发者喜欢将方法区称为永久代本质两者并不等价对于其虚拟机来说不存在永久代的概念方法区可以选择不实现垃圾收集,一

2022-04-22 14:59:25 11899

原创 ArrayList动态扩容

ArrayListJDK1.7源码内容public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private static final long serialVersionUID = 8683452581122892189L; /** * Defau

2022-04-22 14:32:55 560

原创 HashMapPut流程原理

Put方法public V put(K key, V value) { return putVal(hash(key), key, value, false, true);}进入putVal方法final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i;

2022-04-22 14:25:42 120

原创 迭代器执行流程原理分析

迭代器迭代器(iterator)有时又称光标(cursor)是程序设计的软件设计模式,可在容器对象(container,例如链表或数组)上遍访的接口,设计人员无需关心容器对象的内存分配的实现细节。各种语言实现迭代器的方式皆不尽同,有些面向对象语言像Java,C#,Ruby,Python,Delphi都已将迭代器的特性内置语言当中,完美的跟语言集成,我们称之隐式迭代器(implicit iterator),但像是C++语言本身就没有迭代器的特色,但STL仍利用模板实现了功能强大的迭代器。STL容器的数据的

2022-04-22 11:24:10 496

原创 AuthenticationManager 认证原理分析 (Spring Security)

这里写目录标题说明概述代码执行流程认证函数执行流程图总结说明AuthenticationManager 是 Spring Security提供的一套认证服务类运行流程图:概述上述是AuthenticationManager 认证流程的类流程,现在咱们逐个分析这些类1.SysLoginController:登录控制器2.SysLoginService 登录业务类3. WebSecurityConfigurerAdapter:网络安全配置器适配器 AuthenticationMa

2021-12-24 23:02:49 1977 1

原创 Web系统验证码功能实现

概述:验证码这个功能点,不论是桌面扩展性程序和WEB网站都有这个功能,今天我们依靠若依这个项目的成品代码分析验证码的功能点逻辑分析:1.验证码中有6个元素第一个数字**(随机)** 第二个运算符**(随机)** 第三数字**(随机)**第四个等于号(固定值) 第五个问号(固定值) 第六个计算结果**(随机)**。2.解决问题,验证码随机!!!提高系统安全性,而不是固定的图片库一开始想法是存很多张图片每个图片都有一个结果。代码实现(来自若依框架):package com.ruoyi.web.co

2021-12-20 21:57:27 1015

原创 PageHelper分页原理(源码)

PageHelper分页原理PageHelper是我们经常使用的一个分页插件,之前咱们一直处于使用阶段的,今天咱们去探究一下其中的原理。前端 主要是实现分页功能,sql语句实现分页查询知识,就不在赘述了。LIMIT i,a; i:是指查询的索引值(默认是0) a:是指查询的数量值 SELECT id FROM '表' WHERE '条件' LIMIT (i-1)*a,a; 首先咱们使用PageHelper分页首先要在查询数据库数据方法前先调用PageHelper.startPage方法。

2021-10-23 18:17:26 2256

原创 赫夫曼树(最优二叉树 )

数学概念:WPL 最短的树,WPL带权路径长度等于所有的节点的值*权值的合,特点:每一个对应数据节点,的路径都不同,都是叶子节点权:某个节点被赋予的值路径:根节点到对应节点的长度创建赫夫曼树的步骤:代码实现:package huffmantree;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class CreatehHuffMantTree { pub

2021-10-13 15:07:53 152

原创 简单查找算法

查找算法1.线性查找2.二分查找(递归,非递归)3.插值查找算法(插值查找公式)4.斐波那契查找(黄金分割)1.线性查找原生概念:和一条直线一样的查找算法数学概念:查找次数和时间复杂度成一次发的线性查找算法,就是一对一一个一个找(和普通人的逻辑思维是一样的)2.二分查找(递归,非递归)原生概念:将数据分为两段,进行查找,可以节省大部分时间数学概念:二分查找的关键是基准的选择,不断的二分直到找到对应数据或者是没有找到数据,一般的简单的二分法(数字查找),选择的基准是中间,通过与基准的比较大小来选择

2021-10-13 15:03:01 208

原创 排序算法(总结)

排序算法1.冒泡排序2.选择排序3.插入排序(增量为1的且向左移动的希尔排序)4.希尔排序(分组的插入排序,优化的插入排序)5.快速排序6.归并排序7.基数排序(用空间换时间)8.堆排序1.冒泡排序原生概念:像碳酸饮料中的二氧化碳气泡一个一个像上冒泡数学概念:两个相邻的数据进行比较,最终实现降序和升序的数据比较的次数是最多是 数据量-1冒泡排序的优化:当数据已经排序完成(数据不再移动),直接结束排序编程特点:for循环嵌套时间复杂度是:n^22.选择排序原生概念:直接选择出指定数据进行排

2021-10-13 14:58:20 86

原创 GitHub搜索技巧

qt in:name:表示在项目名称中搜索 qt 关键字qt in:readme:表示在项目readme中搜索 qt 关键字qt in:description:表示在 项目描述中搜索 qt 关键字qt in:USERNAME:表示在USERNAME中搜索 qt 关键字qt in:ORGNAME:表示在组织或机构名中搜索 qt 关键字...

2021-10-13 14:43:18 95

原创 数据库表设计(三大范式)

数据库介绍数据库分的关键字字段、属性、列、元组、记录、表、主键、外键、联合主键数据据三范式第一范式(1nf)满足条件1.原子性:即数据库表里的字段都是不可分割的,数据库表最好也是整体原子性的,一个表 管理一个表的数据案例第二范式(2nf)满足条件:1.满足第一范式2.表中有主键3.其他非主属性必须完全依赖主键(不能依赖主键一部分,这是针对联合主键说的)案例第三范式满足条件1.满足第一范式2.满足第二范式3.表中的非主键字段要完全直接依赖主键,不能是传递依赖案例.

2021-10-13 14:38:40 896 1

原创 Spring事务注解源码分析

目 录序言1.Spring事务注解应用场景2.@EnableTransactionManagement开启事务功能解析3.TransactionManagementConfigurationSelector.class解析3.AutoProxyRegistrar.class分析4.ProxyTransactionManagementConfiguration.class分析5.总结序言本文主要介绍,spring框架开启事务来操作业务源码是怎么实现的Spring事务的功能和AOP功能的原理非常像,因为

2021-10-11 16:30:32 317

原创 SpingBean生命周期

序言本文主要介绍,bean在IOC容器中的生命周期Bean的生命周期的流程bean的生命周期主要分为三个周期,创建->(后置处理器初始化)初始化(后置处理器销毁)->销毁的过程流程构造(对象创建)1.创建单实例:在容器启动的时候创建对象多实例:在每次获取的时候创建对象postProcessBeforeInitIalization:初始化之前工作(后置处理器)2. 初始化postProcessAfterInitIalization:在初始化之后工作(后置处理器)3.销

2021-09-28 15:24:55 119 1

原创 SpringAOP原理解析(源码级)

在一个摸鱼的上午,感谢摸鱼。决心写一篇全解析SpringAOP源码级的解析,首先咱们应该知道springAOP只是spring框架中的一个小部分小组件,至于IOC bean注入的什么,网上有很多就不赘述了,这里力求看了这篇文章的读者看完之后都能有所收获。首先,咱们使用AOP功能的时候,总是先要开启AOP功能,这里我使用的是注解开启AOP@EnableAspectJAutoProxy在对应的配置类中加上这个注解就代表使用AOP功能,也要加上响应的AOP功能的依赖包这里就不细讲了。这里我们先使用搭建一个

2021-09-27 11:34:24 372 1

原创 @Transactional注解 和Spring AOP(CGLIB)

引言:最近看源码时遇到一个问题苦恼很久,就是业务方法没有加@Transactiona注解 aop之类的已动态代理为原理的技术,但是对应的接口方法还是进入了CGLIB动态代理,找了半天发现原因。正文:在一个service接口实现类中有一个业务方法添加了@Transactional注解的话,使用它的类在spring的环境下直接@Autowired自动装配注入时 ,类在初始化构造时会直接动态代理整个类1.在调用有@Transactional注解的方法是会进入cglibAOP中的拦截器调用动态代理的方法2

2021-09-08 15:47:26 1084

原创 SpringIOC注入bean方法(总和)

@SpringBootApplication放置在Springboot启动类上,表明该类是开启Springboot容器的入口,它是一个复合注解。里面包含了包扫描,自动注入,配置注入的功能@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan( excl

2021-09-08 15:29:46 183

原创 C++项目调试动态库

C++项目调试动态库1.添加现有DLL动态库项目2.添加好对应的2.1.头文件路径2.2.lib路径2.3.对应lib3.改变动态库工作目录为调试程序的工作目录和调试环境对应的exe程序4.指定调试环境对应的exe程序...

2021-09-01 22:37:42 534

原创 C++附加到进程调试

C++附加到进程调试保持EXE动态库一致,附加到进程,动态库中打断点,调试选项中选择附加到进程选项就可以调试动态库

2021-09-01 22:34:47 1104

原创 C++制作和调用动态库

C++制作和调用动态库创建DLL1.创建对应的DLL头文件//防止库被重复调用#ifndef DLL_DEFINE_H//第一次引入头文件 创建默认宏#define DLL_DEFINE_H//宏判断#ifdef DLL_EXPORTS//导出#define DLLAPI _declspec(dllexport)#else//导入#define DLLAPI _declspec(dllimport)#endif#include "iostream"using nam

2021-09-01 22:31:40 785

原创 zeromq安装使用教程(最详细)

zermq基本概念zeromq用很多中编译使用的方法。直接使用vs编译(不建议使用,长时间未维护很多报错)vcpkg(包管理器下载) cmake(推荐)zeromq的适配好像和win10出现了问题,不知道是我系统的原因还是,折腾了几天之后还是在虚拟机上的win7系统下编译使用成功下面总结一下安装的流程,安装之前我们要知道zeromq我们安装只是最底层的原生库Libzmq,zeromq 接口类型其中在原生库Libzmq中衍生了很多中语言的高层次封装接口,读者根据需对应求选取使用名称 接口类型 ur

2021-05-18 11:20:07 5914 8

原创 QT截图控件(最简化)

截图控件需求功能实现分析功能流程(文字)属性参数截图区域 左上角 右下角鼠标开始的位置 结束的位置记录屏幕的大小 (高度,宽度)选择的状态 移动区域 选择区域 设置 width height业务理解(核心):利用鼠标事件(鼠标点击(设置Start位置),鼠标移动(设置End位置(达到鼠标移动截图区域同不移动的动画)),鼠标释放(修改Scrren状态(移动和选择)和光标切换))方法计算出当前截图的 开始位置和结束位置 左上角 和右下角的 数据 ,利用showEvent和paintEv

2021-04-22 16:30:14 428

原创 计算机网络原理图

如有错误,评论提出

2020-12-24 15:14:12 279 1

原创 23种设计模式(合集)

23种设计模式创建型模式单例模式概念:只能创建一个对象(内存意义上),特点就是构造器私有化饿汉式单例概念:直接创建固定的一个对象 ,会浪费空间package Single;//单例模式饿汉式public class Single_Designpatterns { //单例模式 构造器私有化 private Single_Designpatterns(){ } //直接栈内创建静态变量 public static Single_Design

2020-12-22 16:24:48 977 1

原创 ssm整合执行流程(图解)

博主是用的最简单得的一个ssm图书馆系统整合理解思想原理还有里面的流程图是转载的狂神说java(B站)ssm框架简单解析springmvc 负责整个项目思想得架构spring dao(操作数据库) 和service(业务逻辑)mybatis (和spring-dao一起操作数据库)项目整合文件结构mvc执行原理执行原理文字解析1.结合操作,解析执行原理(登录操作)view页面2.前端利用一个from表单提交 username password数据3.触发

2020-05-14 19:27:24 6976 2

原创 记录自学编程的博客 -2019年

记录自己自学java的道路欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面...

2019-09-24 10:44:54 792 1

空空如也

空空如也

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

TA关注的人

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