- 博客(160)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
原创 Spring之从简单的测试代码入手,对属性配置文件的读取与@Value属性值的注入的源码解析
本篇文章,考虑到主要介绍Spring对属性配置文件的加载与占位符的解析流程,所以用例代码舍弃了XML的配置方式以及其它无关代码配置,改为仅流程所需的关键类来达到最小debug走读源码,同时也让读者能感受到属性配置文件和@Value的解析所需要的必要类和流程。首先介绍了PropertySourcesPlaceholderConfigurer的加载与准备工作,然后介绍了AutowiredAnnotationBeanPostProcessor在Bean属性装配过程中对@Value的解析流程,达到了闭环讲解。
2022-05-22 21:46:54 780
原创 Spring之Bean后处理器——InstantiationAwareBeanPostProcessor的使用与源码解析
文章目录InstantiationAwareBeanPostProcessor介绍InstantiationAwareBeanPostProcessor执行流程InstantiationAwareBeanPostProcessor使用BookPenBookProxyInstantiationAwareBeanPostProcessormain全量代码执行结果源码解析`org.springframework.beans.factory.support.AbstractAutowireCapableBeanFa
2022-05-06 10:40:10 1569
原创 Spring之Bean后处理器——BeanPostProcessor的使用与源码解析
BeanPostProcessor介绍BeanPostProcessor使用源码解析BeanPostProcessor介绍BeanPostProcessor使用源码解析
2022-05-05 17:09:55 2496
原创 Spring之FactoryBean的使用与源码解析
文章目录FactoryBean介绍FactoryBean的使用使用示例配置运行结果获取FactoryBean自身工厂对象FactoryBean与BeanFactory的区别源码分析FactoryBean的缓存区执行流程源码解析FactoryBean的初始化过程获取FactoryBean实际生产对象过程总结FactoryBean介绍FactoryBean是Spring提供的一个可以由用户自定义的Bean实例工厂接口,FactoryBean的对象本身由Spring容器管理,但FactoryBean仅作为对象
2022-05-03 23:18:32 1134
原创 Python实现类似expect脚本的远程交互式编程实现自动化需求
需求说明通过python代码来实现类似expect shell的交互式能力,这样在python代码中能结合业务逻辑组装代码,具有比expect更强大的自动化处理能力。如果能通过该交互能力,结合SFTP来实现文件相关的操作,那就更加的强大了。该篇文章代码为交互式命令封装实现。实现依赖依赖paramiko库,所以需要执行pip install paramiko来安装。代码封装实现import timeimport paramikofrom paramiko import SSHClient
2020-11-24 20:40:39 1504
原创 shell实现config配置文件合并变更配置项
为什么采用增量配置conf文件?增量变更配置的几种类型新增[section]修改配置项删除配置项新增配置项混合变更配置shell实现config配置文件的增量变更。通常在项目中会使用config文件作为项目的配置文件,config文件一般由[section]和name=value组成。当然分隔符=或者:是可以根据自己来定的。文件的格式通常如下:[DEFAULT]service_phone=18888888888# 资源路径resource_dir=/xxx/xxx/xxx/#
2020-06-15 16:52:46 3950
原创 Python3通过chmod修改目录或文件权限
linux中,文件的权限分为"所有者、组、其他用户"三个角色,每个角色由3个bit位表示它的权限,3bit从左到右分别为读写执行三个权限,3bit的值范围为0~7。所以如果直接在linux执行chmod 777 xxx.sh代表,将xxx.sh文件赋予所有者、组、其他用户这三个角色对xxx.sh文件的读写执行权限。os的chmodpython的os模块负责操作系统层面的操作。
2020-06-07 12:53:16 16341
原创 排序算法-堆排序(Heap Sort)
堆排序法介绍堆排序是对简单选择排序法的改进算法,堆排序结合完全二叉树的性质,将序列和完全二叉树结合,每次比较都记录了比较结果,始终维护了每轮比较的最大值或者最小值。上面两个完全二叉树分别是大顶堆和小顶堆,我们发现大顶堆的每个父结点都比子结点要大,而小顶堆的父结点比每个子结点都要小。对于堆的定义是:完全二叉树的每个结点的值都要大于或等于其左右子结点的值,称为大顶堆;完全二叉树的每个结点的值都...
2020-01-31 00:07:49 1529 1
原创 排序算法-希尔排序(Shell Sort)
文章目录希尔排序法介绍希尔排序法算法时间复杂度其他排序法的比较希尔排序法介绍希尔排序法(Shell Sort)是D.L.Shell于1959年提出的一种排序算法,在这之前的排序算法如冒泡排序、简单选择排序、直接插入排序等算法的的时间复杂度都为O(n2)O(n^{2})O(n2),而希尔排序突破了这一时间复杂度。【原理】直接插入排序算法比冒泡排序和简单选择排序性能都要高,尤其在序列基本有序并...
2020-01-29 13:04:48 2125 1
原创 排序算法-直接插入排序
直接插入排序法的思路是:将一个关键字插入到一个已经排好序的有序列表中,得到一个新的有序列表。时间复杂度从最好情况来看,如{1,2,3,4,5,6}这样已经排好的序列,比较次数为n-1次,由于已经排好序了,所以不需要移动,时间复杂度为O(n)O(n)。从最坏情况来看,如{6,5,4,3,2,1}这样的逆序序列....
2020-01-12 17:16:00 2587 1
原创 排序算法-简单选择排序
简单选择排序法就是通过n-i次关键字比较,找到最小的关键字下标,最后在替换n-i下标和最小下标的值。简单排序的思想和冒泡排序的思想的区别是冒泡排序是相邻关键字两两比较,如果小,则直接替换,可能在一轮循环会进行多次值交换。而简单选择排序法是一轮循环找到最小关键字下标,最后进行最多一次替换。简单选择排序算法...
2020-01-09 23:17:03 3308 1
原创 排序算法-冒泡排序
假定需要对序列{9,3,8,5,2,7,4,1,6}做排序,最先想到的就是冒泡排序法,因为最简单。下面的排序算法使用Java来写。最简单的冒泡排序最简单的思路就是每一个关键字都和后面的关键字进行比较,如果大则交换,这样第一个位置的关键字在一次循环后一定变为最小值。代码如下: public static void main...
2020-01-09 01:47:07 1565 1
原创 二叉查找树
文章目录二叉查找树(二叉搜索树、二叉排序树)构造二叉查找树二叉查找树查找结点二叉查找树插入结点二叉查找树删除结点删除叶子结点删除只有左子树的结点删除只有右子树的结点删除同时有左右子树结点删除结点代码实现完整代码二叉查找树(二叉搜索树、二叉排序树)对于有序线性表出来说,查找效率非常高,但是对于插入、删除操作,需要对数据进行移动,所以效率就不怎么高了。那么对于这种问题,我们就可以利用二叉查找树来解...
2019-11-03 01:09:53 1165 1
原创 哈夫曼树(最优二叉树)
文章目录前言哈夫曼树(最优二叉树)定义与原理树的路径长度带权路径长度构造哈夫曼树哈夫曼树生成代码前言二叉树是树结构中的一种特殊形式,适用于折半查找、真假、对错等具有两种情况的事物进行建模。比如需要对学生考试得分评不及格、及格、中等、良好、优秀这几个模糊分数的评级,我们可以很快用如下的代码实现:if score < 60: print("不及格")elif score <...
2019-10-28 00:00:16 7716 1
原创 二叉树遍历算法
前言二叉树的遍历是指从根节点触发,按照某种次序依次访问二叉树中所有的节点。由于不同于线性结构,二叉树达到一个节点需要选择两个子节点的先后顺序,所有遍历方式有很多。二叉树遍历方法二叉树遍历方式有很多,所以如下介绍的遍历方式,我们约定从左往右进行遍历。我们需要遍历的树结构如下:下面的遍历算法用Python实现,不会Python的同学不用担心,因为算法逻辑很简单。先看下我们的节点对象的定...
2019-10-27 02:16:33 2601 1
原创 Gradle通过io.spring.dependency-management插件实现类Maven的依赖管理方式
Spring开发了一个类似Maven的依赖关系管理功能的Gradle插件(插件GitHub)。引入插件plugins { id "io.spring.dependency-management" version "1.0.8.RELEASE"}依赖管理配置你有两个选项来配置依赖项管理:使用插件的DSL来直接配置依赖项导入一个或者多个已经存在的Maven bom文件依赖项的...
2019-09-10 23:23:45 33084 1
原创 python3实现类似expect shell的交互式与SFTP的脚本
前面写过一篇关于python实现类似expect shell的交互式能力的文章,现在补全一下加上sftp的能力脚本。例子在代码中__example()方法。依赖paramiko库,所以需要执行pip install paramiko来安装。import osimport queueimport reimport threadingimport timeimport tracebackimport statimport datetimeimport paramikofrom para
2023-11-23 20:51:57 288
原创 在idea编辑窗内不想移动到文件上方就想看到类定义或者方法信息怎么办?(idea快速查看当前光标位置的类信息)
有一种方式,可以让你在不移动滚动条和光标的情况下,就可以快速看到方法定义和类定义。如果是低版本,可能直接显示类定义,不会显示方法定义。
2022-11-15 14:55:31 735
原创 IDEA的Database连接oceanbase
这里配置可以参考官网:https://www.oceanbase.com/docs/community-observer-cn-10000000000900909。切换到"Data Sources",然后点击左上角的加号,选中刚刚添加配置好的驱动,我这里名字叫"Oceanbase Driver"是前面配置驱动定义好的。,最上面的Name自己随意,最后点击Apply按钮。配置好之后,可以点击测试链接,看下是否能成功。添加Oceanbase的驱动jar,然后选择。下载oceanbase的jdbc驱动,
2022-11-13 14:14:23 5440 2
原创 SpringBoot之集成Druid数据库连接池
文章目录SpringBoot之集成Druid导入依赖配置Druid测试最后SpringBoot之集成Druid导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency> <gr
2022-05-18 10:35:34 864
原创 SpringBoot之集成Servlet、Filter、Listener
文章目录SpringBoot之集成Servlet、Filter、ListenerServlet方式一:@WebServlet方式二: ServletRegistrationBeanFilter方式一:@WebFilter方式二:FilterRegistrationBeanListener方式一:@WebListener方式二:ServletListenerRegistrationBeanSpringBoot之集成Servlet、Filter、ListenerServlet方式一:@WebServlet
2022-05-17 20:50:22 512
原创 SpringMVC之HttpRequestHandler的使用与源码解析
文章目录介绍与Controller接口的区别使用方式一:极简的请求处理代码源码解析方式二:推荐方式代码源码解析介绍Spring提供的HttpRequestHandler接口用于用于处理HTTP接口,该接口与HttpServlet等价,其只有一个没有返回值的handleRequest(HttpServletRequest request, HttpServletResponse response)方法;可以通过与org.springframework.web.context.support.HttpRe
2022-05-15 00:37:25 2869 2
原创 Spring之PropertyEditorRegistrySupport的讲解与使用
PropertyEditorRegistrySupport类实现了PropertyEditorRegistry接口。其维护的是一系列java.beans包下的PropertyEditor;提供对默认属性编辑器和自定义属性编辑器的管理;该类主要作为BeanWrapperImpl基类。BeanWrapperImpl继承了PropertyEditorRegistrySupport类,所以是有必要弄明白PropertyEditorRegistrySupport是怎么玩的。
2022-05-13 20:32:54 688
原创 SpringMVC(HttpServlet)解决中文乱码问题
中文请求乱码原因:对于POST请求,Tomcat默认使用ISO-8859-1进行数据流解析,但如果请求体使用的UTF-8进行的编码,编码与解码的字符集不一致导致中文出现乱码。对于GET请求在URL中携带的参数,Tomcat从8的版本开始默认使用的UTF-8进行的解析,所以无中文乱码问题。如果tomcat是8下的版本,则使用的ISO-8859-1编码,所以会出现乱码问题。中文响应乱码原因:服务器端一般使用UTF-8来进行编码,当没有明确告诉浏览器响应的内容编码时,浏览器使用的默认编码可能与响应编码不一
2022-04-24 01:12:47 733
原创 Tomcat设置欢迎页
Tomcat中,当创建一个web项目,并且在没有配置欢迎页的情况下,默认会是用根目录中的index.html、index.htm、index.jsp页面作为欢迎页,即访问web的根url,会自动响应返回这些欢迎页。Tomcat的全局默认欢迎页配置在tomcat/conf/web.xml中:如果想要项目自定义欢迎页,则可在项目的webapp/WEB-INF/web.xml文件中加入:<welcome-file-list> <welcome-file>index.html
2022-04-13 16:16:55 3110
原创 IDEA 隐藏.idea文件夹 隐藏.iml文件
idea创建项目后默认会创建.idea文件夹与.iml文件:隐藏方式:进入idea设置->Editor->File Types->Ignored Files and Folders点击+,添加".idea"与"*.iml",最后点击OK,即可隐藏。其它想隐藏的文件或文件夹也采用相同方式即可。不同版本的idea设置大同小异...
2022-04-13 16:02:12 9395 7
原创 Java中的String比较与内存分析
文章目录问题1问题2问题3问题4问题1问: 如下代码,一共创建了几个对象,其比较结果是?String str1 = "ab";String str2 = "a"+"b";System.out.println(str1==str2);答: 1个对象;结果为true。分析:该段代码被编译成class文件后,反编译之后如下:String str1 = "ab";String str2 = "ab";System.out.println(str1 == str2);"ab"字面量被放入到
2022-04-07 19:01:08 1080
原创 JAVA 权限修饰符
文章目录privatedefaultprotectedpublic同一个类同一个包子类所有类private*default**protected***public****privateprivate修饰的属性、方法,只能在当前类中访问,在其他类中无法访问;一般将类中的属性修饰为private,通过提供的getter/setter方法来暴露对该类内部属性的访问,使其符合开闭原则。defaultjava中,如果属性没有指定
2022-04-06 10:17:47 695
原创 linux 查看海康相机信息
udevadm monitor 监听usb插拔事件cat /sys/class/pci_bus/0000:00/device/0000:00:14.0/usb2/2-1/product 查看usb信息cat /sys/class/pci_bus/0000:00/device/0000:00:14.0/usb2/2-1/serial 查看相机序列号
2021-08-03 21:06:19 897
原创 Unix C语言 POSIX 互斥锁 线程同步
文章目录模拟并发冲突出现该问题的原因POSIX的互斥锁由于线程的并发性,导致多个线程同时对同一个全局变量进行操作时,会出现数据不一致的情况。所以需要在线程中对全局变量的操作上互斥锁,来确保该操作同一时刻只能被一个线程进行,从而确保了数据安全。模拟并发冲突先不着急看互斥锁,先看下互斥锁可以解决什么问题。下面的代码有个int型的num全局变量,开启多个线程同时对该num进行+1的动作,每个线程+1执行1000000次,所有线程执行完毕后,num的值应该等于线程数*1000000。但由于并发执行,结果是
2021-04-05 09:40:16 299 1
原创 Unix C语言POSIX的线程创建、获取线程ID、汇合线程、分离线程、终止线程、线程的比较
文章目录创建线程创建线程函数概述创建线程代码示例获取线程ID获取线程id函数概述获取线程id代码示例汇合线程汇合线程函数概述汇合线程代码示例分离线程第一种方式:后标记分离线程代码示例:第二种方式:创建即分离线程代码示例终止线程代码示例创建线程POSIX标准线程接口需要引入<pthread.h>头文件。创建线程函数概述int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine
2021-04-04 11:54:30 885
原创 java 文件锁 文件序列化 多进程并发处理 工具类
该类提供文件并发操作的控制,适用于多进程并发时通过文件锁来同步操作。提供:对文件上锁并支持传入一个consumer进行操作,在文件上锁期间,执行传入的consumer,执行完毕后,自动关闭文件锁。支持传入一个锁竞争失败后,执行失败回调处理。对象序列化,并支持多进程并发控制序列化到文件操作。package com.baiyang.walnut.utils;import javax.validation.constraints.NotBlank;import javax.validation
2021-03-17 21:33:17 447 2
springloaded-1.2.4.RELEASE.jar
2016-02-18
maven3.0.3
2015-07-19
myeclipse2014的SVN插件site-1.8.7.rar
2015-05-31
jd-gui.exe 一个好用的java反编译程序
2015-04-23
FreeMarker_Manual_zh_CN.pdf一个很好用的pdf手册
2015-04-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人