- 博客(17)
- 收藏
- 关注
原创 二叉树遍历算法——Morris算法
Morris算法的时间复杂度是O(n),空间复杂度为O(1)基本思想是:1. 找到当前节点的前驱节点,即左节点的最右节点,若为空则指向当前节点,若为当前节点则表明该节点左边以及该节点已经遍历完,并将前驱节点的有指针恢复为空2. 若当前节点的左节点为空,则直接访问当前节点右节点前序遍历和中序遍历代码差不多,只是visit位置不同public void morris_preorder(TreeNode root) { TreeNode node1 = root, node2 = n
2020-06-19 14:26:09
172
原创 KMP
KMP算法太好忘了,记录一下public int kmp(char[] s, char[] p) { if (s == null || p == null || p.length == 0 || s.length < p.length) return -1; // next数组用于当s与p的字符不匹配时,不用将指针i前移,而是将p整体后移 // 即当当前元素不匹配时,应去匹配哪个元素 int[] next = getNext(p); int i = 0,
2020-06-16 17:12:13
179
原创 HashMap
一、HashMap的属性和方法HashMap和HashTable相似,但HashMap是线程不安全的并且允许null将HashMap转为线程安全的Map:Map m = Collections.synchronizedMap(new HashMap(...));类中的属性:DEFAULT_INITIAL_CAPACITY:默认容量16 DEFAULT_LOAD_FACTOR:默认装填因子0.75 table:Node<K, V>数组 TREEIFY_THRESHOLD
2020-06-05 16:53:09
198
原创 java.util包中的重要接口
1. Collection接口该接口继承了Iterable接口,是除了Map以外所有集合类的根集合,一般来说Collection的实现类需要提供两个构造器,一是无参构造器,用于创建一个空集合,二是参数为Collection类型的构造器,用来创建一个与参数元素相同的集合。接口中的方法:add:添加单个元素 addAll:添加集合中的所有元素 clear:清空集合 contains:判断是否包含某元素 containsAll:判断是否包含集合中所有元素 equals:判断集合是否相同 h
2020-05-31 10:10:08
381
1
原创 File类
File类是一个文件和目录路径的抽象表示,该类的实例对象是不可变的。File():创建一个File实例对象,将一个给定的路径名转换为抽象路径名,也可以传入父路径和子路径两个参数 canExecute()、canRead()、canWrite():检查权限 createNewFile():原子操作,创建一个新的空的由该抽象路径名命名的文件 createTempFile():静态方法,在指定目录创建一个临时文件,参数为三个字符串prefix、suffix和directory delete()、del
2020-05-24 10:25:32
203
原创 抽象类InputStream、OutputStream、Reader和Writer
一、InputStream类该抽象类是所有代表一个字节输入流类的父类。read():每次只读一个字节或者读多个字节到一个缓冲数组,后者默认实现是在一个循环里调用前者,这是个抽象方法 skip():跳过n字节,默认实现是读n个字节 available():估计还有多少个字节可以读,默认实现返回0 close():关闭输入流并且释放与流关联的资源,默认实现为空 mark():调用该方法后,在读取的字节数小于readlimit时,调用reset方法可以重新读取重复字节,默认实现为空 reset(
2020-05-23 11:02:05
953
原创 java.time包下的日期API
1. LocalDateTime类获取LocalDateTime对象LocalDateTime localDateTime1 = LocalDateTime.now();LocalDateTime localDateTime2 = LocalDateTime.now(Clock.systemUTC());LocalDateTime localDateTime3 = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));LocalDateTime local
2020-05-21 22:26:43
180
原创 java.util包下的日期API
1. Date类实例化Date对象// 表示当前日期Date date1 = new Date();// 表示当前日期,注意年份为当前年减去1900,月份的值0-11Date date2 = new Date(120, 4, 20);// 后面两个参数分别为时和分Date date3 = new Date(120, 4, 20, 21, 14);// 后面一个参数为秒Date date4 = new Date(120, 4, 20, 21, 14, 58);// 可以传入毫秒数Da
2020-05-21 16:16:23
333
原创 Java中的异常处理机制
一、Throwable类Throwable类是Error类和Exception类的超类。1. Throwable类中的属性serialVersionUID:序列号ID detailMessage:关于这个对象的特定信息 cause:导致该Throwable产生的Throwable对象 stackTrace:保存了堆栈信息2. Throwable类中的方法Throwable():可接受detailMessage、cause、enableSuppression、writableStack
2020-05-18 15:34:21
133
原创 用ReetrantLock实现生产者消费者
Basket类:生产者消费者需要互斥访问的资源class Basket { int capacity; int num; final Lock lock = new ReentrantLock(); final Condition notFull = lock.newCondition(); final Condition notEmpty = lock.newCondition(); Basket(int capacity) { t
2020-05-11 18:25:34
187
原创 Lock接口和ReentrantLock类
一、Lock的一般用法Lock l = ...;l.lock();try { // access the resource protected by this lock} finally { l.unlock();}二、Lock中的方法lock():获取锁 unlock():释放锁 newCondition():返回一个绑定到这个锁对象实例的一个Condition实例 tryLock():仅当锁未被其他线程占有时才能获取到并返回true,否则返回false lo
2020-05-10 20:42:26
352
原创 用Synchronized实现生产者消费者
Basket类:生产者消费者需要互斥访问的资源class Basket { int capacity; int num; Basket(int capacity) { this.capacity = capacity; } boolean isEmpty() { return num == 0 ? true : false; } boolean isFull() { return num =
2020-05-10 11:40:18
204
原创 Java中的Object类
一、Obejct中没有属性二、Object中的方法clone():被克隆对象的类需要实现Cloneable接口,按照惯例,实现了Cloneable接口的类需要覆写clone方法,默认实现是浅复制 equals():默认实现是比较地址,通常覆写该方法时也要覆写hashCode方法 finalize():由GC在没有引用指向该对象时调用,默认实现什么也没做 getClass():返回该对象运行时类的Class对象 hashCode():equals()返回true的两个对象该方法返回值必须.
2020-05-09 22:37:14
130
原创 Java中的Thread类
一、Thread类中的属性String name:线程的名称 int priority:线程的优先级(默认为5,最低为1,最高为10) boolean daemon:是否为守护线程 boolean sitllborn:JVM状态 Runnable target:需要运行的代码 ThreadGroup group:所属线程组 long tid:线程id二、Thread类中的方法构造方法Thread():调用init方法,用到的参数ThreadGroup g、Runnable target
2020-05-09 10:00:47
275
原创 MySQL入门(三)
一、连接查询交叉连接select 字段列表[字段别名]/* from 左表 cross join 右表;或select 字段列表[字段别名]/* from 左表, 右表;结果为笛卡尔积,都可以跟条件where/on,效果和内连接一样。内连接select 字段列表[字段别名]/* from 左表 [inner] join 右表 on 左表.字段 = 右表.字段;去掉on条件效果和交叉连接一样,on也...
2018-04-18 22:38:13
129
原创 MySQL入门(二)
一、列类型1. 数值型整数型:tinyint、smallint、mediumint、int、bigint(显示宽度和zerofill一起使用,e.g. int_3 tinyint(3) unsigned zerofill)小数型:其中浮点型有两个float(单精度)和double(双精度),定点型为decimal2. 时间日期类型datetime:格式为YYYY-mm-dd HH:ii:ss,表示...
2018-04-18 20:39:47
131
原创 MySQL入门(一)
1. MySQL简介MySQL是一个关系型数据库管理系统,属于Oracle旗下产品。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言,特点是体积小,速度快,总体拥有成本低以及源代码开放,一般中小型网站的开发都选择MySQL作为网站数据库。——百度百科2. 其他常见数据库关系型数据库大型:Oracle、DB2中型:MySQL、SQLServer小型:Acess非关系型数据库 Me...
2018-04-18 19:47:12
257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人