0%

#Java注解学习笔记

为什么学习注解?

  1. 能够读懂别人写的代码,特别是框架相关的代码。
  2. 让编程更加简洁,让代码更加清晰

什么是注解?
Java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法。

阅读全文 »

#Java反射学习笔记

Class类

万事万物皆对象,但是在Java中有两样不是对象

  1. 静态的成员:静态成员不是属于对象,是属于类的。
  2. 普通的数据类型:普通的数据类型有封装类可以将普通数据类型封装为对象。

类是谁的对象?
类是对象,是java.lang.Class类的实例对象。

阅读全文 »

#项目管理:Maven

Mac下Maven安装配置

一、Maven核心知识

1、Maven常用构建命令

mvn -v 查看版本
mvn compile 对项目进行编译
mvn test 运行测试类
mvn clean 删除 target 文件夹
mvn install 将jar添加到仓库中 以供调用

阅读全文 »

基于动态规划的计算两个字符串的编辑距离

字符串编辑距离: 是一种字符串之间相似度计算的方法。给定两个字符串S、T,将S转换成T所需要的删除,插入,替换操作的数量就叫做S到T的编辑路径。而最短的编辑路径就叫做字符串S和T的编辑距离。

阅读全文 »

#PhotoShop更改证件照底色
妹子突然发消息问我会不会PS,需要给1寸照片换个底色,这种时候怎么能说不会呢

立马找了教程安装了Photoshop,请教了实验室的小伙伴,帮妹子搞定。

写个教程记录一下

从网上随便找了张证件照

阅读全文 »

#对象,类,包,模块,组件,容器,框架和架构的关系
最近在对EJB的相关内容进行总结,在总结的过程中发现对容器的概念并不是很理解,因为EJB本身就是一个容器,但是容器到底是用来做什么的?它跟我们之前所了解的组件,框架,包,类等都有什么关系?接下来主要是从容器入手来理解这些概念.

对象,类,包,模块,组件,容器,框架,这些java属于他们都有一个共同的特点:容纳.但是他们彼此之间又有什么关系和联系么?

阅读全文 »

String源码分析


从一段代码说起:

1
2
3
4
5
public void stringTest(){
String a = "a"+"b"+1;
String b = "ab1";
System.out.println(a == b);
}

大家猜一猜结果如何?如果你的结论是true。好吧,再来一段代码:

1
2
3
4
5
public void stringTest(){
String a = new String("ab1");
String b = "ab1";
System.out.println(a == b);
}

结果如何呢?正确答案是false。

让我们看看经过编译器编译后的代码如何

1
2
3
4
5
6
//第一段代码
public void stringTest() {
String a = "ab1";
String b = "ab1";
System.out.println(a == b);
}
1
2
3
4
5
6
//第二段代码
public void stringTest() {
String a1 = new String("ab1");
String b = "ab1";
System.out.println(a1 == b);
}

也就是说第一段代码经过了编译期优化,原因是编译器发现”a”+”b”+1和”ab1”的效果是一样的,都是不可变量组成。但是为什么他们的内存地址会相同呢?如果你对此还有兴趣,那就一起看看String类的一些重要源码吧。

阅读全文 »

Vector简介

Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。

Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境。

Vector没有实现Serializable接口,因此它不支持序列化,实现了Cloneable接口,能被克隆,实现了RandomAccess接口,支持快速随机访问。

阅读全文 »

LinkedHashMap简介

LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有put到LinkedHashmap的节点一一串成了一个双向循环链表,因此它保留了节点插入的顺序,可以使节点的输出顺序与输入顺序相同。

LinkedHashMap可以用来实现LRU算法(这会在下面的源码中进行分析)。

LinkedHashMap同样是非线程安全的,只在单线程环境下使用。

阅读全文 »

Hashtable简介

HashTable同样是基于哈希表实现的,同样每个元素都是key-value对,其内部也是通过单链表解决冲突问题,容量不足(超过了阈值)时,同样会自动增长。

Hashtable也是JDK1.0引入的类,是线程安全的,能用于多线程环境中。

Hashtable同样实现了Serializable接口,它支持序列化,实现了Cloneable接口,能被克隆。

阅读全文 »