自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小小绿豆的专栏

多一点笔记,多一点交流

  • 博客(71)
  • 收藏
  • 关注

原创 设计模式(8、装饰器模式)

装饰器模式: 透明的方式动态扩展对象的功能。

2023-02-10 15:42:56 136

原创 设计模式(7、桥接模式)

抽象子类就可以使用接口的方法了,聚合使用:抽象类对象 = new 抽象子类(接口实现类),组合使用:抽象类对象 = new 抽象子类(),抽象类对象.setter(接口实现类);抽象的子类构造方法super(接口对象),"这里初始化抽象的接口属性,聚合和组合都可以",完成初始化抽象父类,完了之后,具体实现:一个接口定义多个方法,多个接口实现类实现接口的方法,一个抽象类聚合接口,添加方法每个方法都组合方式调用接口方法,我的理解,有点像对象和对象间的N-N关系的中间桥接的作用,容易扩展,不会出现类爆炸。

2023-02-09 16:47:53 130

原创 golang环境搭建

golang下载地址:https://golang.google.cn/centos安装goalng环境# 下载包wget https://studygolang.com/dl/golang/go1.17.linux-amd64.tar.gz# 解压tar -zxf go1.17.linux-amd64.tar.gz -C /usr/lib/golang# 配置vim /etc/profile# 最后添加```#golang configexport GOROOT=/usr/

2021-09-02 15:55:13 197

原创 设计模式(6、适配器模式)

3个角色:源、适配器、目标3种形式: 类适配器-一个源类(1个方法)、一个目标接口(2个方法)、一个适配器(继承源、实现接口); 对象适配器-一个源类(1个方法)、一个目标接口(2个方法)、一个适配器(组合源、实现接口); 接口适配器(缺省适配模式)-一个目标接口(多个方法)、一个抽象类(默认空实现所有接口方法)、用的时候new匿名抽象内部类覆盖单独的方法;例子:springMvc的HandlerAdapter;类适配器UML类图:代码实现:/** *...

2021-06-26 15:01:39 132

原创 设计模式(5、建造者模式)

建造者模式:用于产品和产品建造过程解耦;方式一、4个角色: 1、产品-具体对象 2、抽象建造者-定义建造者公共方法 3、具体建造者-具体的建造实现 一个产品属性、多个建造方法、一个返回产品方法; 产品作为属性,构造方法传进去,多个建造方法修改产品,一个get产品方法返回最终建造成的产品 4、指挥者-调用建造者方法构造具体的产品 一个创建产品对象的方法,传入抽象构造者,构造者调用多个建造方法,最后调用建造者的返回产品方法得到...

2021-06-26 11:24:49 529

原创 设计模式(4、原型模式)

定义:拷贝原型创建新的对象;对象克隆-程序更高的效率和扩展性;对象调用Object的clone方法,必须实现Cloneable接口,默认是浅拷贝;概念:浅拷贝-值类型拷贝和引用拷贝,引用的具体对象不拷贝,Object的clone方法;深拷贝-实现引用对象的拷贝、可以使用1.重写clone方法,引用属性逐个拷贝或 2.对象的序列化和反序列化实现(简单、常用);...

2021-06-21 15:37:41 81

原创 设计模式(3、抽象工厂)

抽象工厂:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。...

2021-06-20 14:50:41 77

原创 设计模式(2、简单工厂 | 工厂方法)

工厂方法: 对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。简单工厂: 工厂类提供静态方法,根据不同参数创建不同的抽象实例对象。

2021-06-20 14:44:50 90

原创 设计模式(1、单例模式)

单例模式的作用1.用于单个实例存储统计数据,2.节省内存;spring中默认的bean作用域就是单例;

2021-06-04 11:38:32 74 1

原创 设计模式(开篇)

很久之前对Java设计模式学了下,但并没有彻底的整理和代码实现,最近业余抽空撸下理论和代码,加强下理解;设计模式的重要性不言而喻,代码的扩展性、复用性、健壮性等等,都需要用到设计模式的思想,也就是说要想写出优雅的代码,要有设计模式的思想。很多框架的实现都基于设计模式思想,学习设计模式对阅读框架源码也很有帮助;先来下设计七原则:单一职责原则。对类来说,即一个类应该只负责一项职责。开闭原则。对扩展开放,对修改关闭。在程序需要进行扩展的时候,不能去修改原有代码,使用接口和抽象类实现一个热插拔的效果。.

2021-06-03 16:24:18 72

原创 算法问题: 为啥idea的全局搜索这么快?idea的冗余代码检测怎么实现的?

idea是程序员常用的开发工具,今早有同事突然问起来,idea能不能搜索windows其他文件内容,因为idea的文本搜索能力确实很强,基本上做到了整个项目里面的文本内容秒级搜索。然后我思考了下这两个问题:1.为啥idea的全局搜索这么快?idea的常用操作:全局搜索 Ctrl + Shift + F,可以对整个项目的任意文本做秒级搜索,定位到关键字所在的文件list、所在文件位置(代码行数);2.idea的冗余代码检测怎么实现的?方法的重用,一直是高质量代码里面的一条标准,如果代码出现大...

2021-06-03 14:18:04 1484 5

原创 git分支管理—常用基本操作

git的分支管理很基础,但是也很常用,最近在研发组内做一期简单分享,这里做个笔记分支合并场景:test分支测试完毕之后,需要合并到master分支做发布;方法1:web管理界面做合并请求,适用于无分支代码无冲突情况;1.发起合并请求2.选择合并分支3.提交合并申请4.审批合并请求方法2:idea操作合并,适用于代码有冲突,需要处理;1.本地切换到master分支2.拉取远程master和test分支代码合并到本地的master分支上,有冲突.

2021-05-21 17:52:51 200

原创 《算法4》加权有向图最短路径算法(Dijkstra算法)

Dijkstra算法原理:s到w顶点,可以通过其他顶点中转到达并缩短距离,就松弛s到w的路径;demo中使用的测试数据,来自《算法4》:《算法4》配图里面的最短路径权重数据有小许误差,可自行手动验证看下:用到的数据结构:邻接边类 DirectedEdge.java/** * 边的对象 * * @author ltx */public class DirectedEdge implements Comparable<DirectedEdge> { p.

2021-04-28 16:10:41 775

原创 《算法4》加权无向图最小生成树算法(Prime算法(延时实现) | Prime算法(即时实现) | Kruskal)

《算法4》最小生成树3种算法原理:Prime算法(延时实现):将mst里面顶点的邻接边集合的最小边加入最小生成树mst,并延迟删除2个顶点都已经标记的边;Prime算法(即时实现):距离最近的顶点加到最小生成树mst里面,并修改距离w顶点到最小生成树mst的的距离;Kruskal:将邻接边集合的最小边加入最小生成树mst,加入的边不形成环(union-find并查集算法检测);各种最小生成树算法的性能特点demo中使用的测试数据,来自《算法4》,配图这里有个小的错误,看的时候注意一下。.

2021-04-27 10:22:10 349

原创 《算法4》union-find并查集算法 (quick-find | quick-union | 加权quick-union | 路径压缩的加权quick-union)

union-find并查集算法,是高效的动态连通算法,在判断无向图中的连通分量效率很高;文章中的算法和图片均来自《算法4》结合之前《无向图-连通分量》算法,暂目前无向图连通分量的2种算法:算法1:通过深度优先遍历算法从未标记的顶点开始遍历,遍历完无向图中的所有顶点,得到连通分量;算法2:使用union-find并查集算法,动态连通算法,得到连通分量;区别:算法1需要初始化逐个遍历整个图,效率低,但可以利用图的数据结构;算法2可以动态得到连通分量,效率高;在只关心连通分量的情况下,un..

2021-04-26 18:23:04 705

原创 《算法4》有向图 (二、有向无环图(DAG) | 拓扑排序 | 强连通分量(Kosaraju))

基于《算法4》的描述,在之前有向图数据结构基础上,实现有向无环图(DAG)、拓扑排序、强连通分量(Kosaraju)算法;一些概念有向无环图(DAG):不含有环的有向图;拓扑排序: 给定一幅有向图,使得有向边均从排在前面的元素指向排在后面的元素; 当且仅当,有向无环图才可以做拓扑排序; 常用于任务调度、课程安排...等解决方案;强连通分量(Kosaraju): 顶点v和顶点w互相可达为连通性; 顶点之间可达的最大子集,就是强连通分量;一、有向无环...

2021-04-23 16:13:40 821

原创 《算法4》无向图、有向图 (一、深度优先 | 广度优先 | 连通分量 | 可达性分析 | 最短路径)

图的结构和算法很常用,基于《算法4》中的描述,总结手撕了一波;包含以下图的基础算法:无向图:深度优先遍历、广度优先遍历、连通分量、最短路径;有向图:深度优先遍历、广度优先遍历、可达性分析、最短路径;一些概念图:顶点和边构成;自环:一条连接一个顶点和其自身的边;平行边:连接同义对顶点的两条边;连通分量(无向图):互相连通的顶点;可达性(有向图):一个顶点可以到达另外一个顶点;最短路径:一个顶点连通(到达)另外一个顶点最少需要走过的顶点集合;二分图:能够将所有节点分为两部分的图..

2021-04-20 21:40:52 1806 1

原创 字典树(Trie)

字典树(Trie)是一种空间换时间的字典搜索算法,很适合做字典类数据的搜索和统计;此demo算法,包含字典树Trie的单词添加、删除、遍历、查找;demo中测试数据:注:此demo测试数据仅限于小写字母表的单词,遂,这段话入字典表前做了大写转换小写;节点类 Node.java/** * @Author: ltx * @Description: */public class Node { //字符值 public char value; //单词..

2021-04-20 21:06:44 204 1

原创 赫夫曼编码—数据压缩算法

赫夫曼编码是一种无前缀的压缩算法,原理是将字符按权重生成赫夫曼树,赫夫曼树特点是WPL最小,字符位于叶子节点,保证权重大(出现次数多)的字符离根节点进,对字符做二进制编码,具体压缩和解压过程:压缩:1.原始字符串-->各个字符出现次数(权重),字符权重List;2.字符权重List-->赫夫曼树;3.赫夫曼树-->赫夫曼编码表;4.赫夫曼编码-->压缩编码;解压:压缩编码-->匹配赫夫曼编码,得到原始数据;核心是利用赫夫曼树的特点:1.WPL值最小;2..

2021-04-20 00:20:37 1092 1

原创 AVL平衡二叉树

AVL平衡二叉树:是一颗二叉排序树,并且左右两个子树的高度差的绝对值不超过1;AVL平衡二叉树可以进行高效的数据查找,最差的情况下查找一个数据时间复杂度为log2n,是二叉树结构里面单点数据查询最快的结构;以下demo在之前章节《BST二叉排序树》的算法基础上实现的;基本的4种需要平衡情况:LL:root.left树高>root.right树高,且root.left.left树高>root.left.right树高,执行root节点的右旋操作;LR:root.left树.

2021-04-14 23:30:14 133

原创 BST二叉排序树

BST二叉排序树:又称二叉查找树,它是一种对排序和查找都很有用的特殊二叉树;满足data.key > lchild.key > data.key,即节点值大于左子树值小于右子树值;BST二叉排序树很多高级数据结构和算法的基础,比如AVL平衡二叉树、Red-Black红黑树...以下demo基本包含了BST二叉排序树的添加、删除、查找、前序遍历(递归和非递归)、中序遍历(递归和非递归)、后续遍历(递归和非递归)方法:demo中用到的测试用例数据节点类 TreeNode.ja..

2021-04-14 11:23:42 419

原创 BinarySearch二分查找—非递归和递归实现

BinarySearch二分查找是一种针对有序数据很高效的查找算法;以下demo基本包含二分查找的非递归和递归实现:二分查找类 BinarySearch.java/** * @Author: ltx * 二分查找算法 */public class BinarySearch { /** * 二分查找-非递归实现 * * @param arr 数组 * @param value 值 * @return 下标 */..

2021-04-14 11:18:01 184

原创 约瑟夫环问题—双指针链表解决、数组取模解决

num个人围成一圈,从start位置开始报数,每报到step的人就出局,直到剩下最后一人双指针链表方式解决JosephLinked.java/** * 节点 */class SignLinkedNode implements Serializable { public Integer value; //下一个节点 public SignLinkedNode next; public SignLinkedNode() { } publ...

2021-04-13 20:54:15 343

原创 手写简易hash结构—数组+链表实现

hash是很多高级数据结构和算法的基础,比如集合的HashMap、HashTable...以下demo实现了一个简易的hash结构:这里链表需要引入单向链表,具体查看另外一篇文章《单向链表》import com.xxx.xxx.SignLinked;import com.xxx.xxx..SignLinkedNode;hash实现:数组+链表 MyHash.java/** * hash结构 */public class MyHash { //链表数组 p..

2021-04-13 18:36:05 129

原创 栈应用—字符串括号匹配问题

利用栈,可以解决一些算法问题,比如括号匹配、逆波兰表达式...以下demo,解决括号匹配问题:BracketStr.java/** * @Author: ltx * @Description: 栈应用-字符串括号匹配问题 */public class BracketStr { private static Boolean isValid(String str) { //拆成char[] char[] chars = str.toCharA..

2021-04-13 18:13:27 137

原创 栈—数组实现、链表实现

栈是很多高级数据结构和算法的基础,比如集合的Stack...以下demo基本包含了栈的基本方法:栈-数组实现 ArrayStack.java/** * @Author: ltx * @Description: 栈-数组实现 */public class ArrayStack { private int[] arr;//数组 private int maxSize;//栈大小 private int size;//栈元素数量 private int i.

2021-04-13 18:08:49 61

原创 队列—普通队列(数组实现)、环形队列(数组实现)、链表实现

队列是很多高级数据结构和算法的基础,比如集合的List、Queue...以下demo基本包含了队列的基本方法:普通队列-数组实现 ArrayQueueCommon.java/** * @Author: ltx * @Description: 普通队列-数组实现 */public class ArrayQueueCommon { private int[] arr; private int maxSize;//队列大小 private int head;//头.

2021-04-13 17:56:45 104

原创 双向链表

双向链表是很多高级数据结构和算法的基础,比如队列、栈、图、哈希...以下demo基本包含了双向链表的增删改查:节点类DoubleLinkedNode.java/** * 双向链表节点 */public class DoubleLinkedNode implements Serializable { //节点值 public Integer value; //前置节点 public DoubleLinkedNode pre; //下一个节点...

2021-04-13 17:28:45 67

原创 单向链表

单向链表是很多高级数据结构和算法的基础,比如队列、栈、图、哈希...以下demo基本包含了单向链表的增删改查:节点类SignLinkedNode.java/** * 单向链表节点 */public class SignLinkedNode implements Serializable { public Integer value; //下一个节点 public SignLinkedNode next; public SignLinkedNode...

2021-04-13 17:24:28 69

原创 稀疏数组

直接上代码/** * @Author: ltx * @Date: 2021/3/29 * @Description: 稀疏数组 */public class SparseArray { /** * 打印二维数组 * * @param arr 二维数组 */ private static void printTwoDimension(int[][] arr) { for (int[] row : arr) {

2021-04-07 19:38:18 75

原创 十种排序算法

结合各种资料,自己手撕常见10中排序算法;/** * @Author: ltx * @Date: 2021/3/30 * @Description: 10种排序算法 */public class SortTen { /** * 随机n长度的数组 * * @param min 最小值 * @param max 最大值 * @param n 数组长度 * @return */ public ..

2021-04-07 19:29:22 125 1

原创 istio入门-官网bookinfo项目(笔记)

中文官网:https://istio.io/latest/zh/前言目前的Java分布式框架,已经比较成熟了,比如spring cloud和dubbo,可以实现比较好的服务治理。istio也有它的适用场景,服务治理方面做得也不错,它的适用场景:跨语言,运行与k8s平台的容器里面,不限于开发语言,Java、Go、Ruby、Python...都可以支持; 代码侵入性低,老旧项目不改动或少改动代码就可以微服务化; 服务治理平台升级,不需要动业务代码; 灰度发布,基于Envoy代理,ist..

2021-03-26 17:12:03 2147

原创 springboot+activiti7+react实现模仿钉钉功能的审批流(十七、流程设计器-流程助手)

功能说明:类似钉钉流程设计里面的流程助手功能,流程设计时候可以选择预先定义好的流程模板,方便C端用户从系统预置的流程模板开始设计流程;本人并未实际具体实现此功能,只是写下自己考虑实现该功能的大致实现思路,具体细节还需要打磨,以供交流,欢迎提出更优方案;钉钉流程助手功能截图:具体实现思路:1. 流程模板管理,实现流程模板的管理功能(我猜测钉钉是有这个功能的,只是C端用户用不到):模板列表,显示系统里面的模板列表,并支持CRUD,流程模板大致字段:标题、描述、图标、模板状态(有效/无.

2021-03-25 17:46:57 2500 3

原创 k8s包管理工具helm使用

官网:https://helm.sh/zh/官网安装:https://helm.sh/zh/docs/intro/install/安装步骤:# 官网脚本安装curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3chmod 700 get_helm.sh./get_helm.sh初始化helm repo add stable https:/..

2021-03-25 10:12:13 712

原创 PMM监控mysql(笔记)

Percona Monitoring and Management(Percona监控和管理)查看和监视MySQL,MongoDB,PostgreSQL和MariaDB数据库的性能。官网:https://www.percona.com/software/database-tools/percona-monitoring-and-management官网安装步骤https://www.percona.com/software/pmm/quickstart#安装步骤(官网的搬运..

2021-03-18 19:00:14 315

原创 docker环境修改mysql配置(笔记)

最近测试环境有点小卡,需要调整下mysql性能参数,做下笔记。注:生产上一版不建议用docker部署mysql。1.查看mysql容器信息docker inspect 72202ad0470b2.docker inspect命令中查找mysql容器配置文件目录# docker inspect 72202ad0470b# 部分信息截取:..."Mounts": [ { "Type": "bind", "Source": "/mysql/mysql_master_001/.

2021-03-18 17:48:24 473

原创 springboot+activiti7+react实现模仿钉钉功能的审批流(十六、发起人权限控制)

功能说明:类似钉钉流程设计里面的发起人权限控制,有发起表单流程权限的用户就可以"看到"这个流程,可以发起,没权限的就"看不到"这个流程,不能发起;本人并未实际具体实现此功能,只是写下自己考虑实现该功能的大致实现思路,具体细节还需要打磨,以供交流,欢迎提出更优方案;流程设计-配置流程发起人只允许A用户发起:工作面板里面B用户就没这个入口:具体实现思路:1.类似钉钉流程设计,流程图发布时候,保存下配置的权限集合和表单类型的关联关系; 2.流程表单列表,根据用户id关联查询出每个.

2021-03-12 15:31:58 999

原创 springboot+activiti7+react实现模仿钉钉功能的审批流(十五、流程表单操作权限设计)

功能说明:类似钉钉流程设计里面的审批节点表单字段权限,流程设计可对节点上的字段做权限控制,比如流程节点A->B->C-D,表单字段F1、F2,B节点的审批人可对F2节点进行编辑,C节点的审批人不可见F3字段,适用于审批过程中控制审批人拥有不同字段权限的情况。本人并未实际具体实现此功能,只是写下自己考虑实现该功能的大致实现思路,具体细节还需要打磨,以供交流,欢迎提出更优方案;流程设计-配置A节点的表单操作权限审批中,审批人可编辑表单:具体实现思路:1.基于系列..

2021-03-12 14:01:35 2235 3

原创 springboot+activiti7+react实现模仿钉钉功能的审批流(十四、发起流程自动预判流程走向)

功能说明:类似钉钉发起流程,发起人填单子过程中,可自动预判该流程走向,方便发起人填单子时候就可以看到这个单子的审批人。本人并未实际具体实现此功能,只是写下自己考虑实现该功能的大致实现思路,具体细节还需要打磨,以供交流,欢迎提出更优方案;话不多的,直接举一个简单栗子:流程预判,钉钉是这样玩的:第1步 表单设计:第2步 流程设计:第3步 用户发起审批,并自动预判流程走向条件满足 “请假天数 < 3” 走B审批:条件不满足 “请假天数 < 3” 走C审批:...

2021-03-12 00:59:38 3360 8

原创 Kubernetes—minikube安装(笔记)

minikube是本地的Kubernetes,致力于使Kubernetes易于学习和开发。安装过程来自官网:https://minikube.sigs.k8s.io/docs/start/安装kubectl安装curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"chmod +x ./kubectlsudo cp ..

2021-02-27 19:13:39 1251

空空如也

空空如也

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

TA关注的人

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