- 博客(165)
- 收藏
- 关注
原创 HashMap关于容量的计算
在创建HashMap的时候可以通过构造函数指定初始容量,但实际在开辟空间时有时并不会按指定的容量大小去创建,而是按大于指定容量的2的次幂的最小值去创建对应源码如下:指定初始容量大小的构造方法会调初始容量大小、负载因子的构造方法,通过tableSizeFor(initialCapacity)方法调整大小 public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0)
2022-04-01 19:33:45
1344
1
原创 1176 - Key ‘id‘ doesn‘t exist in table
id是主键,强制使用主键索引时语法应该是 FORCE INDEX(PRIMARY),而不是FORCE INDEX(索引名)
2022-03-25 13:56:22
1577
1
原创 jacob下载地址
最近项目要用的jacob,需要dll文件,查了好多博客都是收费下载的,下面是git的下载链接Releases · freemansoft/jacob-project · GitHubhttps://github.com/freemansoft/jacob-project/releases
2022-01-26 11:03:00
2140
4
原创 org.springframework.web.HttpRequestMethodNotSupportedException: Request method ‘GET‘ not supported
用postman测试接口时报了如图问题,无论是换成其他的请求方式还是把接口的注解改成@RequestMapping都会报类似的问题,排除接口本身的问题后重新编译打包了一下代码,再测试时测通了。报着刨根问底的态度,把代码里url地址、方法名稍微改了一下,再次重启项目,postman用改后的url还是报同样的错误,改回改代码之前的url测试时测通了。再次重新编译打包,在postman里尝试改前、改后的url,这次改后的url能测通。结论:可能是项目里配的maven打包方式的问题,项目重启不会重新编译
2021-11-18 11:50:05
769
原创 vue+element-ui,表格列动态生成
在用 el-table组件的时候遇到了一个小问题:项目中很多地方都会用到表格,业务不同时列不同,每次引入组件后都要重新设置表头,很麻烦,如果表格的列能动态生成就省事多了核心代码:<!-- 表格 --><el-table :data="rowData" ref="table" size="small" style="width: 100%" row-key="id" :row-style="{ height: '45px' }"> ...
2021-11-02 18:30:40
4396
3
原创 快速排序算法
计第一个元素为基准值,大于该值的放左边,小于该值的放右边,每趟都将基准值和小于基准值的元素的最后一个元素交互位置并以第一个元素为新基准值,交互位置后数组分为小于最初基准值部分和大于基准值部分,分别对两部分元素进行之前的操作public class QuickSort { public static int[] quickSort(int[] array, int low, int high) { int pivot, p_pos, i, temp; //低位在前
2021-08-06 11:35:56
153
3
原创 选择排序算法
每次找到一个最小值并依次从第一个位置开始放public class SelectSort { public static int[] selectSort(int[] array) { for (int i = 0, len = array.length; i < len - 1; i++) { //暂存遍历范围内最小值用,从第一个元素开始 int index = i; for (int j = i
2021-08-05 20:21:52
127
3
原创 插入排序算法
public class InsertionSort { public static int[] insertionSort(int[] array) { for (int i = 1; i < array.length; i++) { //索引j元素和之前的所有元素比较,小值在前 //每趟排序能通过排除非最大值法确定一个最大值,类似于冒泡排序 for (int j = i; j > 0; j--).
2021-08-04 21:18:39
135
3
原创 堆排序算法
倒序:从root结点左、右分支中找到最小的值,其中的小值即为整个排序对象中的最小元素,将该元素放在堆尾并固定位置,再次调整堆,每次调整都会产生一个当前调整范围的最小元素并固定,依次类推,最终调整结果就是一个大顶堆;正序反之:/** * @Description: 堆排序 * 大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2] * 小顶堆:arr[i] <= arr[2i+1] && arr[i] <
2021-08-04 20:50:03
112
1
原创 归并排序算法
跟着注释不迷路:public class MergeSort { public static int[] sort(int[] array, int low, int high) { //将数组分为两半 int mid = (low + high) / 2; if (low < high) { //递归将左部分分半直到每半最多有一个 sort(array, low, mid);
2021-07-26 15:36:46
147
3
原创 冒泡排序算法
每次从数组中取出一个最大的元素,最大元素是通过排除法排除非最大元素得到的public class BubbleSort { public static int[] bubbleSort(int[] array) { //临时变量 int temp; //数组长度 int len=array.length; //每次循环都在遍历的数组范围中确定一个最大的值,遍历范围递减 for (int i = 0;
2021-07-26 11:47:40
184
2
原创 基数排序算法
跟着注释不迷路:public class BaseSort { public static int[] basicSort(int[] array) { //1、取出最大元素max int max = 0; for (int k : array) { if (k > max) { max = k; } } //2、(max为in
2021-07-26 11:43:46
141
2
原创 希尔排序算法
关于希尔排序的介绍、复杂度等这里就不介绍了,直接看该算法的思路,每步都干什么写在了注释里,可以打开代码中注释掉的打印部分代码来查看具体的排序过程排序方法:public class HillSort { public static int[] shellSort(int[] array) { // //打印说明 // System.out.println("数组元素[索引];halfLen为间隔;i、j为数组索引"); //数组长度
2021-07-26 11:39:38
117
原创 Arrays的Comparator:策略
根据传入的排序算法决定排序方式:排序接口:用匿名内部类、实现类、Lambda方式实现接口,传入sort方法
2021-07-19 08:31:13
201
2
原创 FileVisitor、BeanDefinitionVisitor:访问者
该方法可以很容易的对目录下的所有文件进行遍历Path 是要遍历文件的路径,FileVisitor 可看成一个文件访问器遍历过程中的关键过程:允许在文件被访问、目录将被访问、目录已被访问、发生错误等过程中进行控制(这个接口在文件被访问前、访问中和访问后,以及产生错误的时候都有相应的钩子程序进行处理)FileVisitResult是一个枚举类,代表返回之后的一些后续操作通过访问者去遍历文件树:查找文件夹内符合某个条件的文件或者某一天内所创建的文件,这个类中都提供了相对应的方法.
2021-07-19 08:30:23
380
原创 java.util.Timer的schedule(...):中介者
所有schedule()方法都指向sched():所有任务task都放到任务队列queue中,同事间通信通过Timer来协调完成内部类管理同事类:
2021-07-19 08:29:17
181
原创 SpelExpressionParser:解释器
测试入口:public static void main(String[] args) { SpelExpressionParser parser = new SpelExpressionParser(); Expression expression = parser.parseExpression("10*5+8*(19+2)/6"); Integer value = (Integer) expression.getValue(); System.out.printl
2021-07-19 08:28:30
3662
原创 DispatcherServlet的doDispatch()-处理请求:职责链
类间关系:依赖HandlerExecutionChain类获取处理请求的controller:传入请求,去职责链的第一个环节:后边的职责链环节:
2021-07-19 08:27:48
138
原创 JDBCTemplate:命令
类间关系:命令接口:执行query(...)方法里有个内部类,是命令接口的子类,具体命令直接实现接口的功能,并没有依赖具体的命令执行者去实现功能,所以这个内部类既是命令实现类又是命令接收者execute(命令接口实现类)方法:JDBCTemplate通过该方法下达并执行命令,参数为命令的实现类,此时命令实现类就成了命令执行者...
2021-07-19 08:26:38
188
原创 AOP:代理
类间关系:创建代理类的接口:根据配置创建代理对象:---jdk代理---jdk代理生成代理对象,该类实现了InvocationHandler接口:被代理对象是通过配置或注解的到的,而不是直接聚合到该类:被代理对象实现了接口:---Cglib代理---同样构造函数传AdvisedSupport类,图略:可传ClassLoader获取一个SmartClassLoader:---ObjenesisCglib,代理工厂创建的代理类---可.
2021-07-19 08:24:17
96
原创 mybatis的Configuration:外观
类间关系:Configuration组合功能类:隔了一层,通过MetaObject组织功能类方法:方法实现:
2021-07-18 21:40:28
122
原创 FilterInputStream:装饰者
DataInputStream dis= new DataInputStream(new FileInputStream("路径"));InputStream继承结构:
2021-07-18 21:37:34
202
原创 HashMap:组合
demo中非叶子节点通过Component提供的方法管理子节点、叶子节点ComponentImpl也是通过Component提供的方法管理leaf
2021-07-18 21:36:25
108
原创 DispatcherServlet的doDispatch()-获取controller:适配器
适配器相关类图:根据HttpServletRequest request获取对应的控制器(Controller),获取处理该Controller的适配器,通过适配器调用该Controller方法,返回ModelAndView根据request遍历controller,获取和url匹配的controller:不同的适配器调不同controller的方法:通过参数强转调用具体controller的方法,返回ModelAndView...
2021-07-18 21:35:05
364
原创 ApplicationContext的getBean():原型、单例
看了上篇封装方法,大家多少也会点儿了吧,下面该说UI常用的封装了,也就是带参数的封装。封装,可以是一个过程的封装(void),也可以是对一个结果的封装:int,string等,需要return一个结果,这个方法就代表封装处理后的最终结果(想想三层里DAL层的封装),封装是为了使代码更灵活,怎么做?参数。没错,就是把一个方法里死的值写活,在调用这个方法时再给它赋值,这样一个方法就可以解决很多类似的问题了。看下面例子...
2021-07-18 21:33:44
1806
1
原创 StringBuilder:建造者
工厂:关注点在产品,对产品没有约束可通过工厂封装对象的初始属性建造者:关注点在产品属性,构造属性的过程复杂但又相似,不同的构造方式得到表现不同的产品指挥者封装了构造属性、创建对象的流程总结:对象多样化,可顺带为属性赋初值用工厂;属性赋值复杂用建造者...
2021-07-18 21:30:54
119
原创 Calendar.getInstance():简单工厂
public static Calendar getInstance(){ return createCalendar(TimeZone.getDefault(), Locale.getDefault(Locale.Category.FORMAT));}private static Calendar createCalendar(TimeZone zone, Locale aLocale) { .
2021-07-18 21:29:53
321
原创 图解UML类间关系、七大设计原则
UML类间关系、七大软件设计原则非常重要但又容易混淆,鉴于文字描述略有晦涩,整理了一份解释UML中类间关系、七大设计原则的图别问为什么要把类间关系,设计原则
2021-05-31 21:24:57
431
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人