自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态规划(一)

动态规划(一)动态规划(英语:Dynamic programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表.

2021-08-31 10:09:46 192 2

原创 设计模式之策略模式

策略模式什么是策略模式, 简单的说: 一个问题有不同的解法;而作为client用怎么样的方式去选择的问题。定义问题的各种算法,把每一个算法封装起来, 并且使它们可相互转换。下面看个列子:坐火车、坐高铁、坐飞机总之,最终的目的地都是一样的。也就是选择不同的方式产生的结果都是一样的。来我们念念八股文: 这个策略模式所需要的角色:1、环境类(Context):用来操作策略的上下文环境,也就是我们游客。2、抽象策略类(Strategy):策略的抽象,出行方式的抽象3、具体策略类(Concret.

2021-08-26 11:11:13 139 2

原创 设计模式之装饰者模式

装饰者模式至于什么是设计模式, 这里就不多作介绍了。 都是前人留下的代码组装思想、精髓, 当然你可以进行思维拓展, 将其运行到实际项目架构中。说明:个人突发灵感,随心所欲! 想写什么就写什么, 没有固定套路。好了, 我们说说装饰者吧!客套话(书上有):在面向对象编程中,态地往一个类中添加新的行为的设计模式。就功能而言,装饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。意图:动态地给一个对象添加一些额外的职责和增加功能。主要解决:一般的,我们为了扩展一个类经常使用继承.

2021-08-11 10:24:15 143 7

原创 工作中关于kafka的一个奇葩问题

关于kafka的一个奇葩问题

2021-08-07 00:26:39 843 5

原创 前缀树(prefix tree trie)

前缀树老规矩,先来几个概念1)单个字符串中,字符从前到后的加到一棵多叉树上2)字符放在路上,节点上有专属的数据项(常见的是pass和end值)3)所有样本都这样添加,如果没有路就新建,如有路就复用4)沿途节点的pass值增加1,每个字符串结束时来到的节点end值增加1可以完成前缀相关的查询show code, create itpublic class TrieTree { public static class Node1 { public int pass; public.

2021-07-27 11:30:58 249 3

原创 手写堆(一)

堆结构(一)堆结构总结:1)堆结构就是用数组实现的完全二叉树结构2)完全二叉树中如果每棵子树的最大值都在顶部就是大根堆3)完全二叉树中如果每棵子树的最小值都在顶部就是小根堆4)堆结构的heapInsert与heapify操作5)堆结构的增大和减少6)优先级队列结构,就是堆结构show codepublic static class MaxHeap { private int[] heap; private final int limit; private int.

2021-07-27 11:14:33 160 2

原创 springboot的自动配置原理(一)

spring的自动配置原理springboot配置文件的装配过程1、springboot在启动的时候会加载主配置类,开启了@EnableAutoConfiguration。2、@EnableAutoConfiguration的作用:利用AutoConfigurationImportSelector给容器导入一些组件。查看selectImports方法的内容,返回一个AutoConfigurationEntryAutoConfigurationEntry autoConfigurationEn

2021-07-21 15:30:26 132 2

原创 springboot运行原理

springboot运行原理1、启动器<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>​ springboot-boot-starter:就是springboot的场景启动器。springboot将所有的功能场景都抽取出来,

2021-07-21 15:27:30 283 2

原创 谈谈JMM内存可见性

问题引出附上代码public class Test01 { private boolean flag = false; public void refresh() { flag = true; } public void load() { while (!flag) { } System.out.println("out"); } public static void main(S.

2021-07-19 17:03:48 180 8

原创 排序算法之归并排序

归并排序过程分析主要理解递归的过程, 分–> 合我们可以理解一下使用递归进行排序:让我喝口酒show code:由最大值的问题引出: public static int getMax(int[] arr) { return process(arr, 0, arr.length - 1); } // arr[L..R]范围上求最大值 L ... R N public static int process(int[] arr, int L, int R) { i.

2021-07-19 11:36:13 66 1

原创 排序算法之插入排序

插入排序实现过程分析大家可以想一想打牌时摸牌、 排列手中牌的感觉, 对, 就是这样!想让arr[0~0]上有序,这个范围只有一个数,当然是有序的。想让arr[0~1]上有序,所以从arr[1]开始往前看,如果arr[1]<arr[0],就交换。否则什么也不做。…想让arr[0~i]上有序,所以从arr[i]开始往前看,arr[i]这个数不停向左移动,一直移动到左边的数字不再比自己大,停止移动。最后一步,想让arr[0~N-1]上有序, arr[N-1]这个数不停向左移动,一直移动.

2021-07-19 10:59:29 69 1

原创 排序算法之冒泡排序

冒泡排序实现过程分析:过程:在arr[0~N-1]范围上:arr[0]和arr[1],谁大谁来到1位置;arr[1]和arr[2],谁大谁来到2位置…arr[N-2]和arr[N-1],谁大谁来到N-1位置在arr[0~N-2]范围上,重复上面的过程,但最后一步是arr[N-3]和arr[N-2],谁大谁来到N-2位置在arr[0~N-3]范围上,重复上面的过程,但最后一步是arr[N-4]和arr[N-3],谁大谁来到N-3位置…最后在arr[0~1]范围上,重复上面的过程,但最后.

2021-07-19 10:47:07 89 2

原创 排序算法之选择排序

选择排序过程分析:arr[0~N-1]范围上,找到最小值所在的位置,然后把最小值交换到0位置。arr[1~N-1]范围上,找到最小值所在的位置,然后把最小值交换到1位置。arr[2~N-1]范围上,找到最小值所在的位置,然后把最小值交换到2位置。…arr[N-1~N-1]范围上,找到最小值位置,然后把最小值交换到N-1位置。估算:很明显,如果arr长度为N,每一步常数操作的数量,如等差数列一般所以,总的常数操作数量 = a*(N^2) + b*N + c (a、b、c都是常数)所以选.

2021-07-19 10:04:09 89 2

空空如也

空空如也

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

TA关注的人

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