- 博客(75)
- 收藏
- 关注
原创 Keil 5.0安装教程+附下载地址
Keil MDK 是 Arm 旗下专为 Cortex-M 微控制器设计的嵌入式开发工具,集成 µVision IDE、编译器与调试器,支持裸机及 RTOS 开发。凭借广泛的 MCU 兼容性与 CMSIS-Packs 扩展能力,适用于教学与工业级项目。提供社区版(免费)、基础版与专业版,其中专业版含 TÜV SÜD 认证功能安全组件,满足汽车、医疗等高可靠性需求。下载 | 安装教程
2026-10-30 18:00:39
108
原创 Reality Capture安装教程+附下载链接
RealityCapture 是一款专业的三维建模软件,由 Epic Games 旗下团队开发。简单来说,它可以把现实中的物体、建筑或场景,通过拍照的方式还原成真实的3D模型。使用时,只需要围绕目标从不同角度拍摄多张照片,再导入软件,系统就能自动识别照片中的特征,计算物体的形状、大小和表面纹理,最终生成高精度三维模型。它最大的优势是建模速度快、还原精度高、自动化程度高,可以减少人工建模的工作量。
2026-10-08 17:24:04
40
原创 Mysql8.0安装教程,附下载链接【通俗易懂】
本文提供了MySQL 8.0.41的详细安装教程,包含百度网盘下载资源(提取码:hrcc)。教程分为四个主要步骤:1)解压安装包并运行安装程序;2)选择自定义安装类型和组件;3)配置安装路径和数据库密码(建议使用强密码);4)设置环境变量并完成安装验证。教程配有图文指引,包括Windows系统的环境变量配置方法,最后通过命令行验证安装是否成功。安装完成后即可使用MySQL命令行工具进行数据库操作。
2026-08-02 20:03:32
189
原创 免费PDF神器:合并转图一键搞定
这是一款完全免费、无广告、无次数限制的轻量 PDF 工具,专门解决你日常处理 PDF 时最头疼的几个问题,不用装臃肿的软件、不用到处找破解版,打开就能用!
2026-03-27 23:35:08
77
转载 SolidWorks2025 安装教程+附下载链接
简单说,SOLIDWORKS 2025 就是目前工业圈最火、最好上手的 3D 机械设计软件,由法国达索系统出品,在机械、模具、电子、汽车、医疗这些行业里基本是 “人手一套” 的标配,新手容易入门、老工程师用着高效,2025 版更是把 AI、云端协作和性能拉满,用起来比旧版爽太多。
2026-03-27 23:13:01
7543
2
原创 Windows 系统搭建 OpenClaw 完整教程+附视频教程+pdf详细文档
摘要:本教程详细讲解在Windows系统搭建OpenClaw(beta版)的完整流程,包含命令行操作、报错解决方案及注意事项。需提前安装NVM(推荐Node v22.22.1)和Python 3.1.1+。提供PDF文档和视频教程下载链接(百度网盘),方便新手逐步操作。教程强调实操细节,避免单纯命令堆砌,确保顺利部署。
2026-03-23 09:58:10
312
原创 容器技术:Docker搭建(通俗易懂)
Docker默认下载镜像是在其官网地址下载的,由于是外网会比较慢,所以建议配置阿里云镜像加速,来提升下载的速度。Docker有点类型我们的Git,里面的star跟GitHub上的项目star差不多,一般我们选择star最多的。如果你使用的是阿里云或者腾讯云这些云服务,测试没有显示Tomcat错误提示页面的话,一般是安全组没将端口放开。这里由于我拉取了两个版本的Tomcat,所以能看到一个是最新版本的,一个是9.0版本的。(2)、选择对应的操作系统版本,然后安装文档命令,挨个执行;(1)、查看当前镜像情况。
2023-08-02 10:09:57
1703
原创 数据结构:Mysql索引原理(通俗易懂)
在工作中如果经常写业务代码,说白了就是CURD,比如做一个查询功能,我们会将前端参数传递到后端后拼接SQL查询数据,那为了提高用户体验,查询速度肯定是越快越好,这就要求我们能够对SQL调优,让查询速度更快。
2023-06-29 22:02:55
1273
原创 JVM原理:JVM垃圾回收算法(通俗易懂)
为什么程序跑久了有时会变卡,用户线程在跑时会将new出来的对象放到虚拟机堆中,当堆满了之后会发生垃圾回收,而垃圾回收过程中会STW,也就是停止用户线程运行,这种在程序层面看来就是没反应,所以如果出现这种问题,我们就要想办法让STW的时间尽量的变短;
2023-06-11 16:29:43
1219
原创 JVM原理:JVM运行时内存模型(通俗易懂)
做了几年开发,平时除了写代码造BUG和修复BUG之外,偶尔也会遇到反馈说程序较慢问题,要对程序性能排查与优化就得更深入学习,学习JVM可以帮助我们加深对JAVA的理解,让我们具备一定的性能排查与调优的能力,无非就是让程序别太卡或者别挂了,那挂了目前我遇到的主要是内存泄漏后导致OOM,或者内存分配不当,当机器内存不足时出发了Linux的保护机制,自动kill调占用内存最高的程序;所以我们要了解平时创建的对象、变量是如何存储的,这些知识点可以帮我们更好解决问题。
2023-06-10 18:15:10
3401
20
原创 Springboot源码:自动装配流程解析
使用Spring开发时,由于项目中某些类需要提前注入到IOC容器中时,我们可以利用Springboot的自动装配,遵守其约定,将自动装配类配置到META-INF/目录下的spring.factories文件中,并指定key为org.springframework.boot.autoconfigure.EnableAutoConfiguration。这样Springboot就可以将该类注入到IOC容器中。
2023-05-14 14:08:19
581
原创 基于常用设计模式的业务框架
做开发也有好几年时间了,最近总结和梳理自己在工作中遇到的一些问题,工作中最容易写出BUG的需求就是改造需求了。一个成熟的业务系统是需要经过无数次迭代而成的,也意味着经过很多开发人员之手,最后到你这里,大部分时间都是在梳理代码,理解别人的用意。有的业务功能里面一堆IF嵌套嵌套,耦合度太过,理解起来比较费劲,也容易改出BUG。
2023-05-13 20:42:41
784
1
原创 多线程与高并发学习:ThreadLocal源码详解
保险出单场景中,业务员出单时后台需要根据业务员所在机构来决定业务流转,审计字段记录出单员信息等,这些在后端处理中需要多次用到,每笔订单都是独立对应一个业务线程,可以使用ThreadLocal将业务员代码存储到线程中,方便后续取值。
2023-03-26 19:23:18
688
原创 工作中策略模式用法及其使用场景?
笔者是金融行业,负责出单系统开发,出单按渠道来源划分有很多种方式,业务员页面直接录单的提交审核后会提交到审核员核保,对于一些特定渠道出单的,会直接自动审核。所以这边可能会有很多种场景,针对不同的渠道来源标识需要不同的逻辑进行处理。一般在代码中会根据If else 写很多的判断,考虑到开闭原则,拓展性等问题,这里使用了策略设计模式来处理。
2023-03-07 23:45:00
538
原创 工作中模板方法模式用法及其使用场景
最近有个周边系统对接我们系统进行投保的需求,周边系统会将客户填写好的投保单资料推送到我们系统,我们出完单后将单号返回给他们。此次对接的保险险种有多个,每个数据都有需要特殊处理的地方,但是他们的流程是一样的,投保单校验、入库、提交审核、自动审核等,最大的区别在于不同的险类他们的风险信息不一样,所以需要我们特殊处理。
2023-03-06 23:45:00
640
原创 工作中简单工厂模式用法及其使用场景?
大家买过保险应该知道保单,刚开始投保的时候业务员会录入标的保险期限等保险资料,录完之后会交由上级审核,审核通过后才会正式生效;当保单数据需要调整时,需要进行批改,修改完资料后提交上级机构审核,审核完成后才会生成批单。除了这两个还有暂保单、预约单等;那审核通过后,针对不同类型的单子需要不同的业务处理逻辑,所以有了PProcessor投保类型的后置处理器、EProcessor批改类型的后置处理器、TProcessor暂保类型的后置处理器。他们的处理流程相识,根据模板规范,所以都继承处理器类Processor对其
2023-03-05 23:45:00
622
原创 工作中责任链模式用法及其使用场景?
笔者是金融保险行业,有这么一种场景,业务员录完单后提交核保,这时候系统会对保单数据进行校验,如不允许手续费超限校验,客户真实性校验、费率限额校验等等,当校验一多时,维护起来特别麻烦,代码耦合度太高。
2023-03-01 23:45:00
1722
原创 工作中单例模式用法及其使用场景?
最近工作中有这么一个需求,我们系统出单后,需要同步数据到合作方,合作方对数据接收并解析反馈结果文件给我们,根据结果文件状态判断合作方系统是否解析成功,对于失败的单子,需要邮件通知相关负责人。所以这里我们需要用到邮件发送工具,在使用时如果每次都new 邮件工具那么就比较耗费堆内存空间,所以这里我们使用单例模式,在整个系统运行使用过程中,只需要new 一次即可。
2023-02-28 23:45:00
1493
原创 Java集合学习:ArrayList源码详解
根据源码我们可以看到ArrayList在取数据非常简单,直接根据下标即可获取值,但是在删除数据、添加数据时,如果下标位于头尾之间,则需要移动部分数据位置,这在插入时导致效率没有LinkedList高;所以我们在使用集合时,需要根据业务场景考虑,来选择最佳集合容器。
2023-02-27 23:45:00
1007
原创 Java集合学习:LinkedList源码详解
链表不需要指定容量,只要内存够大,就可以一直存储下去。链表存储时,分配完内存空间后,只需要将引用进行关联就可以,比起ArrayList可能会造成空间移动,效率高得多。但是在存储时,我们看到它是采用遍历的方式,进行下标查询,随便使用了二分进行切割,但在数据量大的情况下自旋时间长,对CPU的消耗比较大。
2023-02-26 23:45:00
542
原创 AQS学习:ReentrantLock源码解析
ReentrantLock是可重入的互斥锁,虽然具有与synchronized相同功能,但是会比synchronized更加灵活(具有更多的方法)。ReentrantLock底层基于AbstractQueuedSynchronized。有两种锁方式公平锁和非公平锁,公平锁指线程锁定后会进入队列进行排队等待至获得锁的使用权;而非公平锁指线程锁定后会尝试获取锁,如果获取失败则进入等待队列进行排队。下面画了流程图,帮助大家更好的理解。
2023-02-22 12:36:42
702
原创 Spring源码学习:@Autowire和@Resource原理解析
最近在刷到很多文章讲解Spring IOC依赖注入时@Autowire和@Resource注解的区别,不同的文章总结出来的点有异同,所以还是看源码自己总结一下其两者的区别,及其用法。
2023-02-16 21:59:08
1520
原创 Spring AOP源码:拦截器责任链处理过程
AOP动态代理过程使用责任链设计模式,将符合条件的MethodInterceptor实现类进行层层调用,但是不一定MethodInterceptor集合中的所有都会被调用,如果某个MethodInterceptor执行过程中,没有调用其下层拦截器,直接返回了,则后面的拦截器不会进行调用。
2023-01-30 19:54:53
964
原创 Spring源码学习:三级缓存的必要性
工作中可能会碰到循坏依赖问题,所以了解其Spring设计原理,对于解决问题更加高效。在之前的文章中讲解了Spring的代码过程。这篇文章讲解Spring中三级缓存的必要性。
2023-01-20 11:26:17
3473
3
原创 HashMap源码学习:JDK1.8版本源码解析
上篇文章讲解了JDK1.8中HashMap红黑树的原理,以及节点插入、节点移除、红黑树平衡等代码流程,本篇文章对HashMap源码重点进行讲解。
2023-01-19 11:38:06
2244
原创 Spring AOP源码:代理的创建过程
当切面类指定了proxy-target-class="true"属性时,代表要使用Cglib(proxyTargetClass属性会为true),此时有机会是Cglib代理。条件1不满足时,看被代理类是否有preserverTargetClass属性,且值为true时,会将proxyTargetClass属性设置为true,此时有机会是Cglib代理。optimize为true时,此时有机会是Cglib代理。
2023-01-16 00:15:00
1005
原创 HashMap源码学习:红黑树原理详解
为了保持红黑树的特性,在插入或者删除时,可能破坏其平衡结构,所以通过变色、左旋、右旋等方式来保持红黑树的平衡。
2023-01-15 11:21:09
2301
原创 Spring AOP源码:配置文件解析过程
本篇文章主要讲解AOP配置中的几个通知类的解析过程,为后续对目标类进行代理做准备;在前面的Spring IOC篇我们讲解了自定义配置的解析,AOP配置的解析过程也是其自定义注解的过程
2022-12-27 21:22:42
1135
5
原创 Spring AOP:基本概述
AOP可以对业务逻辑的各个部分进行隔离,从而是的业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
2022-12-27 17:07:00
469
原创 动态代理:Cglib原理讲解
Cglib动态代理不需要被代理类实现接口,根据原理我们知道生成的代理类是继承了被代理类,而且其方法调用方法是使用FastClass,这与JDK动态代理的反射有比较大的区别。JDK代理使用的是反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。CGLIB代理使用字节码处理框架ASM,对代理对象类的class文件加载进来,通过修改字节码生成子类。JDK创建代理对象效率较高,执行效率较低;CGLIB创建代理对象效率较低,执行效率高。
2022-12-11 21:11:41
1408
原创 动态代理:JDK动态代理源码学习
动态代理在开发可能使用的频率不是特别高,但在一些框架里面总能看到它的身影,例如Spring AOP就是使用JDK动态代理和CGLIB动态代理两种方法,本篇文章讲解JDK动态代理原理,看它是如何对类进行增强的。代理就是由直接调用转为间接调用,比如我们调用出单服务A,我需要在每次调用A时都记录日志,我们可以创建一个新的类及其方法B,在B中调用A,并且插入日志,这样由原先的调用A变成B,我们可以在B做一些增强操作如日志等。B就是代理类,而A就是原生类(被代理类)。
2022-12-09 23:55:25
1271
原创 Spring IoC源码:finishRefresh 完成刷新详解
Spring IOC中refresh()所有方法都讲解完了,这里面的内容非车多,花了不少时间在看,但是感觉还是比较粗糙,文章中有很多点理解得不是很到位,如果大家有更好的见解,欢迎指点评论。学习IOC过程是非常枯燥的,但是耐心去看真的能发现这个框架设计真的很厉害,拓展性做得很好,有很多地方值得我们在工作中进行参考开发。后续会发布Spring 系列的其它文章,如AOP,只有不断的学习,才能加深对Spring框架的理解。
2022-12-05 22:01:27
1894
21
原创 Spring IoC源码:createBean(下)
上篇文章讲解了实例化后,初始化属性注入过程中属性值的解析过程及其注入过程,本篇继续讲解doCreateBean流程中属性注入后的其它流程,即对bean实例进行初始化。
2022-12-05 20:59:25
812
原创 Spring IoC源码:createBean(中)
上篇文章讲解了Bean的实例化过程,包含构造器的选择、参数的创建等,本篇继续创建createBean的剩余流程,包括Bean实例化后的初始化属性注入工作,以及BeanPostProcessor的执行过程。
2022-12-03 22:31:59
561
原创 Spring IoC源码:getBean 详解
先从缓存中获取实例对象,如果有实例则进行工厂对象解析流程,判断beanName是否带&符号,决定是返回工厂对象本身还是返回真正的实例,如果是返回真正的实例,则调用工厂对象的getObject返回,如果返回值为null,并且在isSingletonCurrentlyInCreation中存在,代表是一个正在创建的bean,不完整的工厂对象,则抛出异常。
2022-11-24 23:13:45
1379
2
原创 Spring IOC源码:finishBeanFactoryInitialization详解
本篇文章讲解了bean创建前的准备工作,及其FactoryBean的概念,并且讲解了三级缓存的作用。一级缓存 singletonObjects:存放完整的Bean对象二级缓存 earlySingletonObjects:存放半成品Bean对象三级缓存singletonFactories:存放封装后的ObjectFactory,通过getObject返回实例对象,该对象可能是代理后的对象也可能是普通对象。
2022-11-23 22:33:39
567
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅