- 博客(16)
- 收藏
- 关注
原创 Chandy-lamport算法 (分布式快照理论)
1. 分布式系统模型分布式系统可以抽象为由有限的precess集合和有限的channel集合构成,如下图所示。其中, 有向图代表分布式系统,顶点代表process,边代表channel。一个process由一个状态(state)集合、一个初始状态和一个事件(event)集合构成。一个事件(event)e 是一个原子操作,它能够改变process本身的状态,以及最多一个channel的状态(...
2020-02-23 22:36:22
2064
原创 Backtracking(回溯算法)
Backtracking(回溯算法)1. 定义回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。wik...
2018-12-10 11:52:26
1558
原创 二叉树DFS和BFS 递归/非递归
二叉树DFS和BFS 递归/非递归方式1.DFSDFS, 深度优先遍历 (1)递归形式public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}List<TreeNode> list = new ArrayLis...
2018-12-04 11:50:01
5831
原创 java堆上的对象
Java堆上的对象1.对象的创建(new Object)创建过程:先检查能否在常量池中定位到一个类的符号引用,并且检查其代表的类是否被加载、解析和初始化过;若无,执行类加载过程;然后为新生对象分配内存(类加载完成后即可确定对象大小);内存分配完后,内存空间初始化为零;接下来,对对象的类信息、类的元数据信息、对象哈希码、GC分代年龄进行设置(这些信息存放在对象头中(Object Heade...
2018-11-21 21:19:54
569
原创 java虚拟机运行时内存区域
java虚拟机运行时内存区域程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区 (前3个为线程私有,后2个为线程共享)(1)程序计数器当前线程所执行的字节码的行号指示器;通过改变这个计数器的值来选取下一条需要执行的字节码指令;分支、循环、跳转、异常处理、线程恢复等功能依赖其完成;线程切换后能恢复到正确的执行位置,故每个线程需要一个独立的程序计数器,即“线程私有“(2)Ja...
2018-11-21 17:33:51
181
原创 Java 中的Integer Pool 和 autoboxing-same-value-to-different-objects问题
1. 遇到问题昨天刷题的时候遇到一个很有趣的整数比较的问题, 整理如下: (1) int i = 127; int j = 127; System.out.println(i == j); int i = 128; int j = 128; System.out.println(i == j);这两个输出应该都是true,没有问题。 (2) In
2017-11-07 12:05:36
382
原创 Java 中hashCode()和equals()方法
Java中,涉及到两个对象的比较时,我们会用到hashCode()和equals()。这两个方法是Object类中定义的方法。1. api中的描述(1)hashCode() hashCode()方法给对象返回一个hash code值。这个方法被用于hash tables,例如HashMap。 它的性质是:在一个Java应用的执行期间,如果一个对象提供给equals做比较的信息没有被修改的话,该
2017-09-25 00:46:19
342
原创 ConcurrentModificationException和fail-fast机制
单线程下:1. ConcurrentModificationException出现的原因例子:import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class Test { public static void main(String[] args) { Lis
2017-09-23 15:09:28
288
原创 Floyd's Cycle Detection Algorithm
Floyd判圈算法1. 什么是Floyd判圈算法?Floyd判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm),是一个可以在有限状态机、迭代函数或者链表上判断是否存在环,求出该环的起点与长度的算法。2. 算法描述如果有限状态机、迭代函数或者链表上存在环,那么在某个环上以不同速度前进的2个指针必定会在某
2017-09-01 16:37:11
826
原创 Trie (Prefix Tree) 前缀树
1. 什么是Trie?Trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。 Trie可以看作是一个确定有限状态自动机,尽管边
2017-08-28 17:03:20
2479
原创 Linux、Windows连接Linux服务器以及与服务器传输文件的方式
目前,服务器绝大多数是Linux系统,Linux作为服务器系统的好处在此就不多说了。本文主要说一下Linux、Windows系统下如何连接服务器,以及向服务器传输文件。如果表达有错误,万望指正。1.Linux系统下:Linux系统下可以通过命令行界面连接服务器以及向服务器传输文件,不需要像Windows那样下载额外的软件,比较方便。当然,下载相应版本的软件来连接服务器以及传输文件,也是可以的,不过没
2017-08-25 10:22:58
7251
原创 Mock测试工具比较
Java Mock测试工具比较最近,在做一个Java Web的项目,项目中需要集成一套Mock测试工具。随即对市面上的mock测试工具进行了调研,下面是调研结果。其中,mock测试工具分为单元测试级别的mock工具和接口测试级别的mock工具。1.单元测试级别的mock工具目前,这个级别的mock工具有easymock、jMock、Mockito、Unitils Mock、PowerMock、JMo
2017-08-24 22:38:36
12274
原创 IDEA下使用Lombok
IDEA下使用Lombok1 .什么是Lombok?lombok是一个小工具,它可以通过简单的注解的形式来简化消除一些必须有但显得很臃肿的 Java 代码。 lombok官方网址:https://projectlombok.org/2 . idea下安装lombok(1)如果是用maven构建项目的话,可以直接在pom.xml中添加依赖: <dependency> <groupId>o
2017-08-14 19:23:27
514
原创 python-深拷贝与浅拷贝
python-深拷贝与浅拷贝在考虑对象赋值、浅拷贝和深拷贝的相关问题时,一定要考虑它们在内存中的存储情况首先,拷贝的说法只针对容器类型,对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有拷贝的所法。如果元祖变量只包含原子类型对象,不能对其进行深拷贝(即对其深拷贝不会产生新的对象)。
2017-08-05 19:57:41
381
1
原创 二分查找(binary search)
1.二分查找算法适用的范围:①必须是顺序表,不适用于链式存储②查找之前,序列必须是有序的。对于无序的序列,可以先采用合适的排序算法进行排序后,再使用二分查找。2.二分查找算法的基本模式:递归方式、非递归方式3.二分查找的时间复杂度和空间复杂度
2017-08-02 23:02:54
1170
原创 python笔记-可变对象与不可变对象
python中,万物皆对象。所有的对象可以分为可变对象与不可变对象两类。当变量引用不可变对象时,使用该变量的任何操作,都会创建新对象,而不会改变引用的对象。与此相反,变量引用可变对象时,或者可能创建新的对象,或者改变被引用的对象本身,这取决于进行的何种操作。 1.可变对象与不可变对象 可变对象是指对象的内容可变,包括字典(dictionary)、列表(list)。
2017-07-15 10:38:00
381
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人