自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 131

原创 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 144

原创 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 127

原创 java.util包中的重要接口

1. Collection接口该接口继承了Iterable接口,是除了Map以外所有集合类的根集合,一般来说Collection的实现类需要提供两个构造器,一是无参构造器,用于创建一个空集合,二是参数为Collection类型的构造器,用来创建一个与参数元素相同的集合。接口中的方法:add:添加单个元素 addAll:添加集合中的所有元素 clear:清空集合 contains:判断是否包含某元素 containsAll:判断是否包含集合中所有元素 equals:判断集合是否相同 h

2020-05-31 10:10:08 294 1

原创 File类

File类是一个文件和目录路径的抽象表示,该类的实例对象是不可变的。File():创建一个File实例对象,将一个给定的路径名转换为抽象路径名,也可以传入父路径和子路径两个参数 canExecute()、canRead()、canWrite():检查权限 createNewFile():原子操作,创建一个新的空的由该抽象路径名命名的文件 createTempFile():静态方法,在指定目录创建一个临时文件,参数为三个字符串prefix、suffix和directory delete()、del

2020-05-24 10:25:32 148

原创 抽象类InputStream、OutputStream、Reader和Writer

一、InputStream类该抽象类是所有代表一个字节输入流类的父类。read():每次只读一个字节或者读多个字节到一个缓冲数组,后者默认实现是在一个循环里调用前者,这是个抽象方法 skip():跳过n字节,默认实现是读n个字节 available():估计还有多少个字节可以读,默认实现返回0 close():关闭输入流并且释放与流关联的资源,默认实现为空 mark():调用该方法后,在读取的字节数小于readlimit时,调用reset方法可以重新读取重复字节,默认实现为空 reset(

2020-05-23 11:02:05 879

原创 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 146

原创 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 252

原创 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 80

原创 用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 153

原创 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 282

原创 用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 172

原创 Java中的Object类

一、Obejct中没有属性二、Object中的方法clone():被克隆对象的类需要实现Cloneable接口,按照惯例,实现了Cloneable接口的类需要覆写clone方法,默认实现是浅复制 equals():默认实现是比较地址,通常覆写该方法时也要覆写hashCode方法 finalize():由GC在没有引用指向该对象时调用,默认实现什么也没做 getClass():返回该对象运行时类的Class对象 hashCode():equals()返回true的两个对象该方法返回值必须.

2020-05-09 22:37:14 96

原创 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 188

原创 MySQL入门(三)

一、连接查询交叉连接select 字段列表[字段别名]/* from 左表 cross join 右表;或select 字段列表[字段别名]/* from 左表, 右表;结果为笛卡尔积,都可以跟条件where/on,效果和内连接一样。内连接select 字段列表[字段别名]/* from 左表 [inner] join 右表 on 左表.字段 = 右表.字段;去掉on条件效果和交叉连接一样,on也...

2018-04-18 22:38:13 89

原创 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 99

原创 MySQL入门(一)

1. MySQL简介MySQL是一个关系型数据库管理系统,属于Oracle旗下产品。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言,特点是体积小,速度快,总体拥有成本低以及源代码开放,一般中小型网站的开发都选择MySQL作为网站数据库。——百度百科2. 其他常见数据库关系型数据库大型:Oracle、DB2中型:MySQL、SQLServer小型:Acess非关系型数据库    Me...

2018-04-18 19:47:12 231

空空如也

空空如也

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

TA关注的人

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