- 博客(15)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 博客更换通知
这个博客是为了软件构造课而写的,然而我并不喜欢这个博客的域名,所以就换了一个博客,博客地址在这里虽然这个博客也用了一学期了,然而内容并不系统,并且干货较少。希望在下一个博客里能有所进步,持续输出有价值的内容,共勉。或许这里以后会用来写一些随笔吧,哈哈哈。2018/08/10...
2018-08-10 14:46:11
494
原创 JVM的四种GC算法
介绍程序在运行过程中,会产生大量的内存垃圾(一些没有引用指向的内存对象都属于内存垃圾,因为这些对象已经无法访问,程序用不了它们了,对程序而言它们已经死亡),为了确保程序运行时的性能,java虚拟机在程序运行的过程中不断地进行自动的垃圾回收(GC)。关于 JVM 的 GC 算法主要有下面四种:引用计数算法(Reference counting)算法思想:每个对象在创建的时候,就给...
2018-06-23 03:12:00
18685
2
原创 线程安全的四种策略(threadsafe)
目录:前面Confinement(限制数据共享)Immutability(共享不可变数据)Threadsafe data type(共享线程安全的可变数据)Synchronization(同步机制共享)总结前面我们知道,当不同线程访问同一数据或内存时,就可能会发生交错(interleaving)或竞争(Race conditions)关系。每当这种情况发生时,...
2018-06-14 11:21:41
6140
原创 利用Comparator对Collection进行自定义排序
目录前面默认排序自定义排序类测试总结前面今天突然发现java集合类中的排序方式可以利用Comparator接口实现自定义,感觉很有意思,在这里与大家分享一下。默认排序如果我们不写自定义的排序,那么Collection默认的排序是按照字符串的字典序,考察下面代码:SortedSet<String> strings = new TreeSet&l...
2018-06-07 21:02:45
1559
原创 java设计模式之两种适配器模式(Adaptor pattern)
前言类别Adapter(适配器模式):类适配器前言之前介绍的委托与继承是代码复用的两种方式,然而,它们的复用过于“基础”和“细小”,除了类本身,设计模式更强调多个类/对象之间的关系和交互过程—比接口/类复用的力度更大。类别设计模式分为三大类:Creational patterns 创建型模式:主要考虑对象的创建过程。Structural patte...
2018-06-01 13:21:01
1032
原创 白盒框架与黑盒框架
介绍与设计模式的区别白盒框架的原理与实现黑盒框架的原理与实现二者对比白盒框架利用subclassing:黑盒框架使用委派中的组合composition:参考文章前一篇文章介绍了java中的委派和继承机制,今天介绍一下利用这两种代码复用的方式组装的两种框架——白盒框架与黑盒框架介绍为了增加代码的复用性,可以使用委派和继承机制。...
2018-05-31 20:04:54
2368
1
原创 Java中的委托和继承(Delegation and Inheritance)
写在前面概念Delegation(委托)Dependency: 临时性的delegationAssociation: 永久性的delegationComposition: 更强的delegationAggregationComposition vs. AggregationInheritance(继承)各自特点总结写在前面上课的时候对delega...
2018-05-27 11:51:23
16051
3
原创 java正则表达式入门
写在前面介绍基本用法\ 的转义字符字符类边界匹配符实验结论写在前面在做实验的时候,需要读入文件。由于读入的信息以字符串的形式存储的,并且文件是按照一定的格式进行书写的,因此要得到对应的信息,就需要匹配每个字符串,这个时候就需要用到正则表达式。由于之前并没有特意去学习过正则表达式,现在用到了,简单地分享一下我所学的正则表达式。介绍在学正则表达式...
2018-04-23 22:38:34
265
原创 eclipse中的批量替换操作
写在前面过程总结写在前面在写实验的时候,发现我的变量类名设置错误,导致我不仅需要更改该类的名称,还要修改项目中创建该类的所有类名;这就让我很头疼。想到作为编译器,编辑器的基本功能应该有吧;因此尝试了一波,发现果然有效;哈哈,心中的小花又盛开了。过程首先,点击工具栏中的Search属性,选择file选项: 输入要被替换的名称,我这里是MovieFacto...
2018-04-22 09:54:54
19531
原创 java中List的addAll方法顺序
写在前面试验最后写在前面在写实验的时候,想将一个集合中的元素全部都添加到另一个集合中,为了不增加时间复杂度,拒绝采用迭代时一个一个添加的方法;被身边的大佬提醒,可以使用addAll方法,才恍然。但是,在列表向列表中加入元素时,加入的顺序是什么样的呢?为此做了下面的一个小测试:试验新建一个list列表(为了方便观察加入顺序,就简单让其存储数字的字符串形式了)向...
2018-04-17 15:30:31
19502
5
原创 Java中的Mutable 和 Immutable
写在前面概念范例:StringStringBuilder可变类型的必要性可变类型的危险参数发生变化返回值发生变化总结写在前面最近在软件构造课上学习了Java中的两种数据类型:mutable(可变的)和immutable(不可变的)。有时候感觉有些绕,在这里记录一下我对这两种类型的理解。概念immutable(不可变的):一旦创建,就不能...
2018-03-30 16:23:48
5757
1
原创 在github上配置SSH key
生成SSH首先,打开git,敲下如下命令,如果没有生成过,则会出现提示信息。cd ~/.ssh如果提示没有找到,则输入下面命令:ssh-keygen -t rsa -C然后会让你设置密码,这里直接回车就OK。配置个人信息在git中利用如下两行代码设置用户名和邮箱:git config --global user.name "用户名"git config -...
2018-03-29 21:44:30
5074
1
原创 关于java进行迭代时更改迭代集合的问题
关于问题描述解决方法结论关于在这次实验中遇到了一个在迭代器中remove时候的bug,注意到老师上课讲过,今天自己用代码测试了一下,果然有问题。问题描述如果直接利用foreach迭代,在迭代过程中,如果在迭代的集合上进行更改,例如remove,add等方法,编译时就会报错例如,写一个ArrayList的代码如下:List<Integer> li...
2018-03-20 21:15:47
1470
原创 利用Gradle对java项目进行build
在这学期的软件构造课程的实验中,老师将会利用集成工具对上传的java代码进行检查,如果自动构建失败,则被判为0分。毕竟谁也不想看到自己辛辛苦苦写的代码,因为最后的构建而得0分。因此,在此分享我利用Gradle进行build的过程。就算是利用Gradle,每个人的build方法也是有很多的不同之处,这里仅分享我的方法。此外,关于eclipse中的gradle插件我是没有用到的,因为实验代码需要脱离e...
2018-03-19 16:53:48
4119
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人