StringBuffer 和 StringBuilder 类
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
public class one {
public static void main(String[] args) {
StringBuffer sBuffer = new StringBuffer("这里面可添加值:");
sBuffer.append("one");
sBuffer.append("two");
sBuffer.append("three");
System.out.println(sBuffer);
}
}
总结:1.StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况 StringBuffer
2 适用多线程下在字符缓冲区进行大量操作的情况
HashMap 与HashTable的区别: HashMap 是基于“拉链法”实现的散列表。一般用于单线程程序中。
Hashtable 也是基于“拉链法”实现的散列表。它一般用于多线程程序中。
WeakHashMap 也是基于“拉链法”实现的散列表,它一般也用于单线程程序中。相比HashMap,WeakHashMap中的键是“弱键”,当“弱键”被GC回收时,它对应的键值对也会被从WeakHashMap中删除;而HashMap中的键是强键。
TreeMap 是有序的散列表,它是通过红黑树实现的。它一般用于单线程中存储有序的映射。
(Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)https://www.cnblogs.com/skywang12345/p/3311126.html)
3.Set(HashSet TreeSet:TreeSet:会将里面的元素默认排序)集合的特点:不能存储相同的元素。同时因为其是一个抽象的接口:所以不能直接实例化一个set对象。(Set s = new Set() )错误该接口主要继承于Collections接口,所以具有Collection的一些常见的方法。(Java Set集合的详解:https://blog.youkuaiyun.com/qq_33642117/article/details/52040345)
(java之collection总结:http://www.cnblogs.com/taiwan/p/6954135.html)
List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引,
ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步
LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快)
Vector:底层是数组数据结构 线程同步(数组长度是可变的百分之百延长)(无论查询还是增删都很慢,被ArrayList替代了)(java list的一些基本操作:https://blog.youkuaiyun.com/qq_33505051/article/details/78967362)
stati(静态修饰符):https://www.cnblogs.com/dolphin0520/p/3799052.html
@Override 的作用是:如果想重写父类的方法,比如toString()方法的话,在方法前面加上@Override 系统可以帮你检查方法的正确性。
interface接口的优点:
1、重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。
2、简单、规范性:如果一个项目比较庞大,那么就需要一个能理清所有业务的架构师来定义一些主要的接口,这些接口不仅告诉开发人员你需要实现那些业务,而且也将命名规范限制住了(防止一些开发人员随便命名导致别的程序员无法看明白)。
3、维护、拓展性:比如你要做一个画板程序,其中里面有一个面板类,主要负责绘画功能,然后你就这样定义了这个类。
可是在不久将来,你突然发现这个类满足不了你了,然后你又要重新设计这个类,更糟糕是你可能要放弃这个类,那么其他地方可能有引用他,这样修改起来很麻烦。
如果你一开始定义一个接口,把绘制功能放在接口里,然后定义类时实现这个接口,然后你只要用这个接口去引用实现它的类就行了,以后要换的话只不过是引用另一个类而已,这样就达到维护、拓展的方便性。
4、安全、严密性:接口是实现软件松耦合的重要手段,它描叙了系统对外的所有服务,而不涉及任何具体的实现细节。这样就比较安全、严密一些(一般软件服务商考虑的比较多)。(https://blog.youkuaiyun.com/whandwho/article/details/80247521 https://www.cnblogs.com/zhaoyanjun/p/5320034.html)
继承的概念:继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
DML(data manipulation language)数据操纵语言:就是我们最经常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些操作。
DDL(data definition language)数据库定义语言:其实就是我们在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上
GSON:是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。(Gson介绍:https://blog.youkuaiyun.com/kakaxi1o1/article/details/79643399)
什么是 JSON ?
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言 *
- JSON 具有自我描述性,更易理解
* JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。(http://www.w3school.com.cn/json/index.asp)
get和post的区别:(http://www.cnblogs.com/logsharing/p/8448446.html)
session和cookie:https://www.cnblogs.com/andy-zhou/p/5360107.html#_caption_1(转载)
获取i/o文件路径:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String address="\\upload\\20141128";//存放文件位置
String time=df.format(new Date());//获取日期时间
String title="";
DiskFileItemFactory factory = new DiskFileItemFactory();
//2、创建一个文件上传解析器
ServletFileUpload upload = new ServletFileUpload(factory);
//解决上传文件名的中文乱码
upload.setHeaderEncoding("UTF-8");
factory.setSizeThreshold(1024 * 5000);//设置内存的临界值为500K
File temp = new File(address);//当超过500K的时候,存到一个临时文件夹中
factory.setRepository(temp);
upload.setSizeMax(1024 * 1024 * 50);//设置上传的文件总的大小不能超过500M
try {
// 1. 得到 FileItem 的集合 items
List<FileItem> /* FileItem */items = upload.parseRequest(request);
// 2. 遍历 items:
for (FileItem item : items) {
// 若是一个一般的表单域, 打印信息
if (item.isFormField()) {
title = item.getString("utf-8");
}
else {
String fileName = item.getName();
long sizeInBytes = item.getSize();
System.out.println(fileName);
System.out.println(sizeInBytes);
InputStream in = item.getInputStream();
byte[] buffer = new byte[1024];
int len = 0;
address = address +"\\"+ fileName;//文件最终上传的位置
String fullAdress=request.getSession().getServletContext().getRealPath(address);//获取上传文件绝对路径,防止不同系统中文件路径不一致
5.synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行它包括两种用法:synchronized 方法和 synchronized 块
6.Javaweb上传图片或文件到服务器,Tomcat服务器重新部署项目,会删除原来上传的文件的问题(转:https://blog.youkuaiyun.com/nwpu_geeker/article/details/79343740)
7.request.getParameter(“参数名”) 中文乱码解决方法:
String str = new String(request.getParameter("参数名").getBytes("iso-8859-1"), "utf-8");
8.Cookie数据保存在客户端,Session数据保存在服务器端。
Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。
Cookies是属于Session对象的一种。但有不同,Cookies不会占服务器资源,是存在客服端内存或者一个Cookie的文本文件中;而Session则会占用服务器资源。所以,尽量不要使用Session,而使用Cookies。但是我们一般认为Cookie是不可靠的,Cookies是保存在本机上的,但是其信息的完全可见性且易于本地编辑性,往往可以引起很多的安全问题Session是可靠地。但是目前很多著名的站点也都用Cookie。
9.ServletContext与ApplicationContext的区别:https://blog.youkuaiyun.com/u010325193/article/details/84534861(转发)
10.java项目里classpath具体指哪儿个路径(转载:https://blog.youkuaiyun.com/u011095110/article/details/76152952)
11.正则表达式:https://www.runoob.com/regexp/regexp-syntax.html
12.restful风格(转载:https://www.jianshu.com/p/91600da4df95)
13.Java - 阐述Hibernate实体对象的三种状态以及转换关系:https://blog.youkuaiyun.com/troubleshooter/article/details/78457207?utm_source=blogxgwz0
14.Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。这种传统接口已被迭代器取代(转载:https://www.cnblogs.com/zyuze/p/7726582.html)
15.Java BigDecimal详解(转载:https://www.cnblogs.com/LeoBoy/p/6056394.html)