- 博客(70)
- 收藏
- 关注
原创 RocketMQ回顾整理
Producer:消息生产者,负责生产消息。Producer 通过 MQ 的负载均衡模块选择相应的 Broker 集群队列进行消息投递,投递的过程支持快速失败并且低延迟。Consumer:消息消费者,负责消费消息。一个消息消费者会从 Broker 服务器中获取到消 息,并对消息进行相关业务处理。Broker:充当着消息中转角色,负责存储消息、转发消息。NameServer:是一个 Broker 与 Topic 路由的注册中心,支持 Broker 的动态注册与发现。...
2022-08-31 10:15:33
149
原创 Redis整理复习
I/O 多路复用其实是在单个线程中通过记录跟踪每一个sock(I/O流) 的状态来管理多个I/O流。select, poll, epoll 都是I/O多路复用的具体的实现。epoll性能比其他几者要好。redis中的I/O多路复用的所有功能通过包装常见的select、epoll、evport和kqueue这些I/O多路复用函数库来实现的。
2022-08-23 13:53:13
268
原创 二叉树练习
首先要注意栈是一端先进后出的容器,比方说我们进行先序遍历,我们并不是按照中,左右的方式入栈,但是我们会按照该方式出栈。上下界的概念,对于左子树来说,根节点就是上界,而相反,对于右子树来说,根节点是下界。注意:中序遍历二叉搜索树是有序的。
2022-08-21 15:58:52
215
原创 动态规划 八月八日
动态规划,用空间换时间的算法,避免重复节点的计算,将计算过的结果记录在hash等容器中,用来减少在计算的时间,也叫作记忆化搜索。目录#该博客根据九章算法视频课程总结#1.计数2.求最大值最小值3.求存在性动态规划题四个步骤1.确定状态2.转移方程3.初始条件和边界情况4.计算顺序1.有三种面值的硬币,2 5 7 使用最少的硬币拼出27元。.........
2022-08-08 20:07:38
336
原创 八月七日 SpringBoot自动装配
思路一:使用:循环,Character.isDigit()方法(判断字符书否为数字)。思路二:栈(来源:力扣)思路与算法由于每一个函数都有一个对应的 start 和 end 日志,且当遇到一个 endendend 日志时,栈顶元素一定为其对应的 start 日志。那么我们对于每一个函数记录它的函数标识符和上次开始运行的时间戳,此时我们只需要在每次函数暂停运行的时候来计算执行时间和开始运行的时候更新时间戳即可。...
2022-08-08 10:10:03
83
原创 SpringMVC学习总结
MVC什么是MVC?MVC是一种软件架构的思想,将软件按照,模型、视图、控制器来划分。SpringMVC是什么,有什么特点HelloWorld开发环境创建maven工程
2022-07-15 14:44:40
95
原创 数据结构-栈(Stack)的学习
首先感谢大佬博客的指点:zejian_。栈是一种用于存储数据的简单数据结构,有点类似链表或者顺序表(统称线性表),栈与线性表的最大区别是数据的存取的操作,我们可以这样认为栈(Stack)是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行,一般而言,把允许操作的一端称为栈顶(Top),不可操作的一端称为栈底(Bottom),同时把插入元素的操作称为入栈(Push),删除元素的操作称为出栈(Pop)。若栈中没有任何元素,则称为空栈。自己的话说就是,栈是一种用于存储的数据结构,只能从容器的上端也
2022-03-12 15:28:18
624
2
原创 学 TypeScript 那点事一
1.什么是TypeScript?TypeScript是JavaScript的超集,还提供了类型的定义、接口、泛型等。对于使用TypeScript编写的程序,浏览器是不能直接运行的,需要先编译为 .js 的文件后才能运行。2.TypeScript的优势在JavaScript中定义的变量是没有类型约束的,他的类型取决于最后赋的值的类型,该种方式很方便,但是却有很大的弊端,为了解决这种问题,在 TypeScript 中提供了类型的约束。 除了上述的情况外,还提供了丰富的类,它更加的面向对象。3.安
2022-03-12 11:01:01
125
原创 HashMap原码
方便个人查阅。package java.util;import java.io.IOException;import java.io.InvalidObjectException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.function.BiConsumer;import java.util.
2022-01-04 20:33:51
132
原创 深度优先搜索/广度优先搜索
来源深度优先搜索算法:(DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。该图的遍历顺序为(默认为左...
2021-12-18 19:32:35
169
原创 动态规划_
1. 动态规划的两种形式:用斐波拉契数列的案例来展现。1.1自顶向下的备忘录法建立一个n+1大小的数组,用来保存求出的斐波拉契数列中的每一个值,在递归的时候如果发现前面fib(n)的值计算出来了就不再计算,如果未计算出来,则计算出来后保存在Memo数组中,下次在调用fib(n)的时候就不会重新递归了。public class memorandum { public static int Fibonacci(int n){ int []memory=new int[n
2021-12-16 13:16:46
927
原创 双指针算法
快慢指针:快慢指针是指一个指针走的快,一个指针走得慢。 左右指针:左右指针是指双指针中一个指针在数组的最左侧,而另一个在最右侧。通过判断,可以分别让两侧的指针向中间移动,以求解问题。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 :输入:nums = [-4,-1,0,
2021-12-14 15:12:19
81
原创 算法:二分查找法
二分查找是一种算法,其输入是一个有序的元素列表(必须是有序的),如果查找的元素包含在列表中,返回其位置,否则返回NULL。35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。class Solution { public int searchInsert(int[] nums, int target) { int left=0; int right=nums.
2021-12-11 17:53:07
610
原创 XML文件、XML解析
version:版本号encoding:编码字符集XML的标签可以自己定义,对大小写敏感,主要用于数据的存储。<?xml version="1.0" encoding="UTF-8" ?><department> <student id="110"> <name>张三疯</name> <age>100</age> </student> &l
2021-12-08 18:34:43
237
原创 Java工厂模式
在原有工厂模式的基础上,将定义工厂类,改为定义工厂接口,定义多个子类实现接口,重写其中的抽象方法,每个子工厂只负责创建一种产品。(该方法在API中的collection当法中广泛引用)案例(原文链接):1.定义了人的接口,内含两个抽象方法。public interface Human { public void getColor();//人有不同的颜色 public void talk(); //人会说话}2.定义了三个类,三个类都实习Human接口pub
2021-12-08 16:38:31
419
原创 线程课后整理
1.1线程和进程程序本身是一段静态的代码,是应用程序执行的副本。进程: 是指一种正在运行的程序的地址空间。进程的特点: 动态性 ----进程是指程序是一直在运行的 并发性 ----多个进程可同时运行(例如电脑上正在运行的音乐软件、QQ)。 独立性 ----进程和进程之间互相不会产生干扰线程的定义: 进程内部的一个执行单元, 是程序中单一的顺序控制流程 ,如果在一个进程中有多个线程, 用来完成不同的工作,那么称为多线程。进程是系统资源分配的单位 ,其中可以包括多个线程 。 线程是独
2021-12-06 17:11:54
525
原创 关于 抽象类 接口的继承实现问题
public interface Jump { void jump();}public abstract class Animal implements Jump{ public abstract void jiao();}public class cat extends Animal{ String name; public cat(){ } public cat(String name){ this.name=.
2021-11-24 20:31:48
1560
原创 Java hashMap同键不同值(Person类)
public class test { private HashMap<String,ArrayList<Person>> hashmap=null; public test(){ hashmap=new HashMap<String,ArrayList<Person>>(); } public void add(Child p){ ArrayList persons=hashmap.get.
2021-11-24 13:18:02
504
原创 Java单例模式(不讨论反射)
一. 特点单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同
2021-11-23 13:15:13
60
原创 剑指 Offer 64. 求1+2+…+n
作者:LeetCode-Solution链接:https://leetcode-cn.com/problems/qiu-12n-lcof/solution/qiu-12n-by-leetcode-solution/来源:力扣(LeetCode)通常实现递归的时候我们都会利用条件判断语句来决定递归的出口,但由于题目的限制我们不能使用条件判断语句,那么我们是否能使用别的办法来确定递归出口呢?答案就是逻辑运算符的短路性质。以逻辑运算符 && 为例,对于 A &&am..
2021-11-22 17:26:07
182
原创 IO总结一
一. IO流概念流 -----Stream:字节的序列 ----作用:输入输出的载体字节表示流的最小单位序列:不同的字节的顺序会有不同的结果功能: 上传下载二. InputStream、OutputStreamInputStream表示所有字节输入流的超类OutputStream 表示的是所有字节输出流的超类当read的返回值为-1时 那么表示已经读到流的末尾。Closeable 接口 -----定义关闭流的标准 closeFlushable 接口 ----- 清..
2021-11-22 15:36:09
479
原创 563. 二叉树的坡度
作者:LeetCode-Solution链接:https://leetcode-cn.com/problems/binary-tree-tilt/solution/er-cha-shu-de-po-du-by-leetcode-solution-7rha/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。深度优先算法,定义一个记录两个节点差值的和的变量ans,通过递归遍历树,直到找到最底层的点,再返回两个点的和(因为对于下层节点多余2的树..
2021-11-19 19:49:15
302
原创 加强for循环和迭代器
先看代码class Solution { public static void main(String[] args) { List<Integer> a=new LinkedList<>(); for (int i=0;i<11;i++){ a.add(i); } System.out.println(a); for (Integer b:a){
2021-11-17 19:41:22
166
原创 318. 最大单词长度乘积
链接:https://leetcode-cn.com/problems/maximum-product-of-word-lengths/solution/jian-dan-yi-dong-javac-pythonjsgo-zui-da-ertr/来源:力扣(LeetCode)class Solution { // 位运算 + 预计算 // 时间复杂度:O((m + n)* n)// 空间复杂度:O(n) public int maxProduct(Strin.
2021-11-17 19:12:27
58
原创 力扣 391. 完美矩形
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/perfect-rectangle给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 (xi, yi) ,右上顶点是 (ai, bi) 。如果所有矩形一起精确覆盖了某个矩形区域,则返回 true ;否则,返回 false 。哈希表精确覆盖意味着:矩形区域中不能有空缺,即矩形区域
2021-11-16 20:09:54
159
原创 面试题:Collection和Collections的区别
Collection 是接口 有List 和Set作为它的子接口 提供了增删的方法,用于表示一个类是否属于容器。Collections 是一个类, 是Collection的工具类, 里面会实现一些辅助的方法,如: 排序sort、 反转,等线程安全的方法 。...
2021-11-16 12:25:06
146
原创 map实现同键不同值的存储
借助List List<String> list=new LinkedList<>(); list.add("13"); list.add("1"); List<String> list1=new LinkedList<>(); list.add("13"); list.add("1"); list.add("3"); list.
2021-11-15 18:26:41
305
原创 Java内部类
一. 定义类与类之间的嵌套关系1.用于描述类与类之间的关系,内部类为外部类的成员2.为了保护类的属性的安全二. 分类2.1 成员内部类把一个类当作类中的成员 非静态的成员内部类中不能出现静态的属性和方法,案例中g()为非静态方法,而主方法为静态方法,因此主方法通过创建外部类的对象,进而创建内部类的对象来调用内部类的方法,而非静态方法g(),则直接调用了内部类的方法。public class test { int i=10; class inter...
2021-11-13 21:14:30
345
原创 二叉树 前序 中序 后序
上图简单代表一个二叉树,A、B、C代表三个节点前序遍历:ABC(根节点排最先,然后同级先左后右)。中序遍历:BAC(先左后根最后右)。后序遍历:BCA(先左后右最后根)。图来源:csdn一. 前序排列在addNode()中应该注意:先序遍历的顺序public class Tree { public Node root; public void add(int x){ Node p=new Node(); p....
2021-11-13 19:22:53
520
原创 集合课后复习一
一.HashSet关键字:集合、容器、无序、无索引1. 方法1.1 add()添加该集合中没有的元素,如果该元素已存在,则覆盖已有的元素。 HashSet<String> set=new HashSet(); set.add("123");1.2 clear()清空该集合。 set.clear();1.3 contains()如果集合中不包含该元素则返回true。 System.out.println(set.contains("
2021-11-12 17:13:22
197
原创 Java二叉树(递归思想、面向对象思想、中序排序)
public class mytree { private Node root; public void add(int x){ Node p=new Node(); p.date=x; if(root==null){ root=p; }else{ root.addNode(p); } } public void sort(){ .
2021-11-11 21:25:27
386
原创 try finally return
public static void main(String[] args) { System.out.println(new test().Test());//3 } static int Test(){ int x = 1; try { return x++; } finally { System.out.println("finally块执行:" + +...
2021-11-11 19:26:05
45
原创 什么是哈希冲突,怎么解决哈希冲突的问题?
一.哈希表哈希表是一种以键对应值(key-indexed) 来存储数据的结构,只要输入要查找的键即key,即可查找到对应的值。将键作为索引,这样就可以快速访问任意键的值。1.1构造方法原文链接https://blog.csdn.net/qq_40803710/article/details/80945617哈希函数的构造原则是:函数本身便于计算、计算出来的地址分布均匀(即对任意K,f(K)对应不同地址的概率相等)。1.数字分析法:可以从关键如果事先知道关键字集合,并且每个关键字的
2021-11-09 17:18:22
606
1
原创 为什么在重写hashcode方法时 要重写equals方法,两者有什么关系?
为了保证同一个对象 ,如果重写equals方法 没有重写hashcode的话,就会出现equals相等,而hashcode不相等, 重写hashcode方法为了避免这种情况发生。 使用了hashcode方法可以提前校验,可以避免每一次比较都用equals方法从而提高效率。...
2021-11-09 16:37:57
201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人