- 博客(60)
- 收藏
- 关注
原创 算法分析与设计之并查集详解
本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,称为Union-Find。更多的信息可以参考Algorithms一书的Section 1.5,实际上本文也就是基于它的一篇读后感吧。原文中更多的是给出一些结论,我尝试给出一些思路上的过程,即为什么要使用这个方法,而不是别的什么方法。我觉得这个可能更加有意义一些,相比于记下一些结论。
2023-03-06 09:47:22
634
原创 java调用dubbo服务接口_Dubbo使用invoke指令来调用dubbo接口以及telnet命令连接Dubbo服务
最近被分配了一个任务,是通过dubbo的方式对外提供服务,dubbo没有我们一般的web项目中的Controller层,所以没有办法通过http的方式进行调用调试。作为萌新的我,确实有点一筹莫展,直到被老司机提醒使用dubbo invoke的方式进行接口测试,我才有方向。
2022-12-30 14:39:35
2858
原创 9-设计模式之行为型模式(迭代器模式、访问者模式、备忘录模式、解释器模式)
9-设计模式之行为型模式(迭代器模式、访问者模式、备忘录模式、解释器模式)
2022-10-27 14:48:31
152
原创 4-设计模式之创建型模式【原型模式、建造者模式】
设计模式之创建型模式【原型模式、建造者模式】1.4 原型模式1.4.1 概述1.4.2 结构1.4.3 实现1.4.4 案例1.4.5 使用场景1.4.6 扩展(深克隆)1.5 建造者模式1.5.1 概述1.5.2 结构1.5.3 实例1.5.4 优缺点1.5.5 使用场景1.5.6 模式扩展1.6 创建者模式对比1.6.1 工厂方法模式VS建造者模式1.6.2 抽象工厂模式VS建造者模式1.4 原型模式1.4.1 概述用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象
2022-04-23 19:45:00
159
原创 3-设计模式之创建型模式【单例模式、工厂方法模式、抽象工厂方法模式】
创建型模式【单例模式、工厂方法模式、抽象工厂方法模式】1,创建型模式1.1 单例设计模式1.1.1 单例模式的结构1.1.2 单例模式的实现1.1.3 存在的问题1.1.3.1 问题演示1.1.3.2 问题的解决1.1.4 JDK源码解析-Runtime类1.2 工厂模式1.2.1 概述1.2.2 简单工厂模式1.2.2.1 结构1.2.2.2 实现1.2.2.4 优缺点1.2.2.3 扩展1.2.3 工厂方法模式1.2.3.1 概念1.2.3.2 结构1.2.3.3 实现1.2.3.4 优缺点1.3 抽象
2022-04-23 15:18:02
276
原创 2-设计模式-软件设计原则
软件设计原则1.1 开闭原则1.2 里氏代换原则1.3 依赖倒转原则1.4 接口隔离原则1.5 迪米特法则1.6 合成复用原则在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。1.1 开闭原则对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。因为抽
2022-04-22 18:45:00
223
原创 1-设计模式-基础概念
1,设计模式概述1.1 软件设计模式的产生背景"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克
2022-04-22 14:13:43
112
原创 数据结构与算法之图的进阶(有向图、拓扑排序、加权无向图、最小生成树、加权有向图、最短路径)
目录一、有向图1.1 有向图的定义及相关术语1.2 有向图API设计1.3 有向图实现二、拓扑排序2.1 检测有向图中的环2.1.1 检测有向环的API设计2.1.2 检测有向环实现2.2 基于深度优先的顶点排序2.2.1 顶点排序API设计2.2.2 顶点排序实现2.3 拓扑排序实现三、加权无向图3.1 加权无向图边的表示3.2 加权无向图的实现四、最小生成树4.1 最小生成树定义及相关约定4.2 最小生成树原理4.2.1 树的性质4.2.2 切分定理4.3 贪心算法4.4 Prim算法4.4.1 Pri
2021-12-11 19:40:32
603
原创 数据结构与算法之图的入门(图的基础介绍 以及无向图的深度优先搜寻、广度优先搜索)
目录一、图的入门1.1 图的实际应用:1.2 图的定义及分类1.3 无向图1.3.1 图的相关术语1.3.2 图的存储结构1.3.2.1 邻接矩阵1.3.2.2 邻接表1.3.3 图的实现1.3.3.1 图的API设计1.3.3.2 代码实现1.3.4 图的搜索1.3.4.1 深度优先搜索1.3.4.2 广度优先搜索1.3.5 案例-畅通工程续 11.3.6 路径查找1.3.6.1 路径查找API设计1.3.6.2 路径查找实现一、图的入门1.1 图的实际应用:在现实生活中,有许多应用场景会包含很多点
2021-12-10 06:57:49
495
原创 数据结构与算法之并查集
目录一、并查集1.1 并查集结构1.2 并查集API设计1.3 并查集的实现1.3.1 UF(int N)构造方法实现1.3.2 union(int p,int q)合并方法实现1.3.3 代码1.3.4 并查集应用举例1.3.5 UF_Tree算法优化1.3.5.1 UF_Tree API设计1.3.5.2 find(int p)查询方法实现1.3.5.3 union(int p,int q)合并方法实现1.3.5.4 代码1.3.5.5 优化后的性能分析1.3.6 路径压缩1.3.6.1 UF_Tree
2021-12-08 11:06:43
108
原创 数据结构与算法之树的进阶(平衡树(2-3查找树、红黑树)、B-树、B+树)
目录一、平衡树1.1、 2-3查找树1.1.1、 2-3查找树的定义1.1.2 查找1.1.3 插入1.1.3.1 向2-结点中插入新键1.1.3.2 向一棵只含有一个3-结点的树中插入新键1.1.3.3 向一个父结点为2-结点的3-结点中插入新键1.3.1.4 向一个父结点为3-结点的3-结点中插入新键1.3.1.5 分解根结点1.3.4、 2-3树的性质1.3.5 2-3树的实现1.2 红黑树1.2.1 红黑树的定义1.2.2 红黑树结点API1.2.3 平衡化1.2.3.1 左旋1.2.3.2 右旋1
2021-12-07 17:12:15
178
原创 数据结构与算法之优先队列(最大优先队列、最小优先队列、索引优先队列)
目录优先队列前言1.1 最大优先队列1.1.1 最大优先队列API设计1.1.2 最大优先队列代码实现1.2 最小优先队列1.2.1 最小优先队列API设计1.2.2 最小优先队列代码实现1.3 索引优先队列1.3.1 索引优先队列实现思路1.3.2 索引优先队列API设计1.3.3 索引优先队列代码实现优先队列前言普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在某些情况下,我们可能需要找出队列中的最大值或者最小值,例如使用一个队列保存计算机的任务,一般情况下计算机的任务都是有优
2021-12-06 10:10:50
438
原创 数据结构与算法之堆heap
目录一、堆1.1 堆的定义1.2 堆的API设计1.3 堆的实现1.3.1 insert插入方法的实现1.3.2 delMax删除最大元素方法的实现1.3.3 堆的实现代码1.4 堆排序1.4.1 堆构造过程1.4.2 堆排序过程一、堆1.1 堆的定义堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。堆的特性:它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右不满。它通常用数组来实
2021-11-30 21:29:06
284
原创 数据结构之树的入门(二叉树)
目录一、二叉树入门1.1树的基本定义1.2 树的相关术语1.3 二叉树的基本定义1.4 二叉查找树的创建1.4.1二叉树的结点类1.4.2 二叉查找树API设计1.4.3 二叉查找树实现1.4.4 二叉查找树其他便捷方法1.4.4.1 查找二叉树中最小的键1.4.4.2 查找二叉树中最大的键1.5 二叉树的基础遍历1.5.1 前序遍历1.5.2 中序遍历1.5.3 后序遍历1.6 二叉树的层序遍历1.7 二叉树的最大深度问题1.8 折纸问题一、二叉树入门之前我们实现的符号表中,不难看出,符号表的增删查操
2021-11-30 11:16:17
145
原创 数据结构之符号表
目录一、符号表1.1 符号表API设计1.2 符号表(无序符号表)实现1.3 有序符号表一、符号表符号表最主要的目的就是将一个键和一个值联系起来,符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据,我们可以根据键来查找对应的值。符号表中,键具有唯一性。符号表在实际生活中的使用场景是非常广泛的,见下表:1.1 符号表API设计结点类:符号表:1.2 符号表(无序符号表)实现public class SymbolTable<Key,Value> { //记录
2021-11-28 12:25:57
467
原创 数据结构之线性表(顺序表、链表、栈、队列)
目录一、线性表1.1 顺序表1.1.1 顺序表的实现1.1.2 顺序表的遍历1.1.3 顺序表的容量可变1.1.4 顺序表的时间复杂度1.1.5 java中ArrayList实现1.2 链表1.2.1 单向链表1.2.1.1 单向链表API设计1.2.1.2 单向链表代码实现1.2.2 双向链表1.2.3 链表的复杂度分析1.2.4 链表反转1.2.5 快慢指针1.2.5.1 中间值问题1.2.5.2 单向链表是否有环问题1.2.5.3 有环链表入口问题1.2.6 循环链表1.2.7 约瑟夫问题一、线性表
2021-11-28 07:37:34
1026
原创 数据结构之排序算法
目录一、简单排序1.1 Comparable接口介绍1.2 冒泡排序1.3 选择排序1.4 插入排序二、高级排序2.1希尔排序(shell)前面学习插入排序的时候,我们会发现一个很不友好的事儿,如果已排序的分组元素为{2,5,7,9,10},未排序的分组元素为{1,8},那么下一个待插入元素为 1 ,我们需要拿着 1 从后往前,依次和10,9,7,5,2进行交换位置,才能完成真正的插入,每次交换只能和相邻的元素交换位置。那如果我们要提高效率,直观的想法就是一次交换,能把 1 放到更前面的位置,比如一次交换就
2021-11-25 21:25:19
775
原创 数据库连接池/Spring JDBC——(优化简化JDBC)
目录一、数据库连接池二、Spring JDBC一、数据库连接池1. 概念:其实就是一个容器(集合),存放数据库连接的容器。 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。2. 好处: 1. 节约资源 2. 用户访问高效3. 实现: 1. 标准接口:DataSource javax.sql包下的 1. 方法: * 获取连接:getConnection() * 归还连接:
2021-11-14 09:50:04
209
原创 JDK1.8API文档中文版和英文版下载
链接:https://pan.baidu.com/s/10jUrzWTl8dlAwMyAc05RUA提取码:8hk1
2021-11-12 11:01:53
768
原创 Junit单元测试/反射/注解——Java简要介绍
目录Junit单元测试:反射:框架设计的灵魂注解:Junit单元测试:测试分类:黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。**白盒测试:需要写代码的。关注程序具体的执行流程。Junit使用:白盒测试步骤:定义一个测试类(测试用例)建议:测试类名:被测试的类名Test CalculatorTest包名:xxx.xxx.xx.test cn.itcast.test定义测试方法:可以独立运行建议:方法名:test测试的方法名
2021-11-04 09:41:53
114
原创 jdbc入门\获取数据库连接\使用PreparedStatement
目录一、jdbc概述二、获取数据库连接2.1、要素一:Driver接口实现类2.1.1、Driver接口介绍2.1.2、加载与注册DBUtils驱动2.2、要素二:URL2.3、要素三:用户名和密码2.4、数据库连接方式举例三、使用PreparedStatement3.1、操作和访问数据库3.2、使用Statement操作数据表的弊端3.2.1、体会增删改代码3.2.2、体会查询代码3.2.3、代码优化3.2.4、公共提取3.2.5、sql注入问题3.3、PreparedStatement的使用3.3.1、
2021-10-28 21:53:27
462
原创 mysql实现主从复制/主从同步
目录mysql实现主从复制/主从同步一、什么是mysql 的主从复制?1、简介2、 主从复制工作原理剖析二、为什么要用mysql 的主从1、**实现服务器负载均衡**2、**通过复制实现数据的异地备份**3、**提高数据库系统的可用性**三、怎么配置mysql主从复制1、环境准备2、mysql 配置文件配置3、master数据库,创建复制用户并授权四、可能遇到的问题1.现象2.原因3.解决mysql实现主从复制/主从同步如果一个项目只有一个数据库服务器,而这个服务器万一宕机,就会导致业务停顿,造成影响。
2021-10-25 12:36:39
473
1
原创 mysql-触发器、存储过程、存储函数
目录一、触发器1、触发器的特性2、触发器的创建3、删除触发器二、存储过程1、 变量1.1 系统变量1.2 用户变量2、存储过程的创建2.1 流程控制语句三、存储函数1、创建函数2、使用函数3、查看函数4、删除函数二、定时任务一、查看定时策略是否开启三、创建定时任务四、定时任务操作五、定时规则一、触发器与表有关的数据对象,在满足某种条件的时候,被动执行的SQL语句。1、触发器的特性有begin、end的结构体(多条sql语句)需要指定触发的条件:INSERT,UPDATE,DELETE有指定的触
2021-10-24 19:39:38
691
原创 MySQL的锁机制
目录mysql的锁机制一、InnoDB行锁的种类1、记录锁(Record Lock)2、间隙锁(GAP Lock)3、记录锁和间隙锁的组合(next-key lock)二、表锁三、InnoDB的锁类型1、读锁2、写锁3、MDL锁4、意向锁四、从另一个角度区分锁的分类1、乐观锁2、悲观锁五、锁等待和死锁六、如何避免死锁七、MVCC,多版本并发控制(1)什么是当前读和快照读?(2)当前读,快照读和MVCC的关系(3)MVCC能解决什么问题(4)MVCC的实现原理(5)Read View(读视图)八、Redo l
2021-10-23 16:31:24
373
原创 MySQL事务
目录MySQL事务1.事务简介2.事务四大特征(1)原子性(Atomicity)(2)一致性(Consistency)(3)隔离性(Isolation)(4)持久性(Durability)3.事务提交、回滚4.事务特性--隔离性4.1 隔离性有隔离级别(4个)4.2 读未提交4.3 读已提交4.4 可重复读4.5 串行化MySQL事务1.事务简介(1)在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。(2)事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全
2021-10-23 11:47:30
94
原创 MySQL文件目录
一、了解mysql的安装目录1、windows中的目录(1)整体的目录结构(2)数据文件目录1、bin目录用于放置一些可执行文件,如mysql.exe、mysqld.exe、mysqlshow.exe等。2、data目录用于放置一些日志文件以及数据库。3、include目录用于放置一些头文件,如:mysql.h、mysql_ername.h等。4、lib目录用于放置一系列库文件。5、share目录用于存放字符集、语言等信息。6、my.ini这个很重要是MySQL数据库中使
2021-10-18 21:29:55
3818
原创 数据库设计
目录一、三范式第一范式第二范式第三范式二、常见表关系1. 一对一 (用的不多)2. 一对多3. 多对多一、三范式注:设计只是一种思想、一种理念,我们按照规范的设计方式设计数据库对我们来说有好处,但绝对不是说一定要严格遵守,三范式能极大的减少数据冗余,但是相对编写sql而言是增加了难度的,所以所有好的设计都是要权衡利弊的,要对编码难度,存储大小,执行效率等多方面进行综合考量,但是在学习初期最好紧紧的遵循三范式,在后续的编码中体会和总结自己的经验。设计数据库表的时候所依据的规范,共三个规范:第一范式:
2021-10-18 12:29:07
259
原创 mysql视图入门
目录一、Mysql 视图入门1.创建视图2.显示视图3.删除视图一、Mysql 视图入门 视图其相当于从原来的数据表中获取部分数据,然后新建一个只可创建、查询和删除的新表来存放这些数据(一般情况下),可以理解成把想要的数据部分截图下来保存,供以后查询用,此时视图只是为了满足某些数据查询而建立的对象。 当然,也存在可以修改的视图,并且当修改视图的数据时,原来表里的数据也会一同修改,此时视图的作用就是为了保护数据的安全性而只把部分数据展示出来供他人使用,有兴趣的话可以深度自学。视图和表的区别如下:
2021-10-18 11:45:28
108
原创 mysql索引
目录前言一、mysql的数据存储格式1、磁盘IO的问题2、B-树3、B+ 树5、为什么使用B-/B+ Tree6、为什么使用 B+树二、为什么要使用索引三、索引的数据结构四、索引的分类和创建(1)、修改表结构(2)、创建表的时候直接指定五、索引失效的问题1、索引列上不能使用表达式或者函数 **2、联合索引,如何选择索引的顺序3、索引不会包含有NULL值的列 **4、索引列排序 *5、like语句操作 **六、explain关键字explain的用途explain的执行效果explain包含的字段id字
2021-10-15 21:30:54
381
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人