自定义博客皮肤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 148 2

原创 设计模式之策略模式

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

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

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

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

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

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

关于kafka的一个奇葩问题

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

原创 前缀树(prefix tree trie)

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

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

原创 手写堆(一)

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

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

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

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

2021-07-21 15:30:26 105 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 236 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 144 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 45 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 48 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 64 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 62 2

空空如也

空空如也

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

TA关注的人

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