我的学习总结

1. CJK:东亚语言(中文,日文,韩文)
2. Pig pig = new Pig();其中pig为引用,Pig()为对象,前者在栈中,后者在堆中;
3. size of int:32位(4个字节)
size of char:16位(2个字节)
char在C语言中占一个字节
short :16位
boolean: 1位
float:32 位
为小型设备(如手机)等写程序时应该注意数据类型问题,因为这涉及到效率问题
重载问题:同名不同参,返回值不能作为重载。类型不匹配时,向上转换
重载基本数据类型时,要么全写,要么不这么做
package OverLoad;

public class Main {

public static void print(int arg) {
System.out.println("int:" + arg);
}

// public static void print(char arg) {
// System.out.println("char:" + arg);
// }
public static void print(short arg) {
System.out.println("short:" + arg);
}
public static void print(long arg) {
System.out.println("long:" + arg);
}

public static void print(byte arg) {
System.out.println("byte:" + arg);
}

public static void main(String args[]) {

short s = 50;// 范围-32768~+32767
print(s);

print((short) 40);
print((byte) 20);// 当调用其他类型的时候需要强制类型转换
print(20);// 默认为int类型

s++;
s += s;
//s = s + 1;
print('c');
}
}
4. 将操作符理解位函数
long l = 2000L;用大写的L,是为了避免在程序中出错

5. interface和abstract 的区别:
interface可以有多个父接口,abstract中只有一个父类;
在接口前写static final,在abstract前写public abstract
在接口中不写public也默认为public
interface意义:interface封装了操作,代表一种数据类型,用接口来定义一组操作
6. 数组和链表的差别:
ArrayList<E>使用可调整大小的数组实现List。当列表(List)很大时,在表的头部进行添加和移除操作代价很大,但是创建和随机访问它的代价比较大。

LinkedList<E>时List和Quere的双向链接实现。对于任何大小的LinkedList,修改的代价都很小,但是随机访问较慢。
7. 成员变量在堆上分配
public class Sample{
A a = new A();
...................
......................
}
a的生命周期与{}无关
8. 堆(heap)和栈(stack)的区别:
heap:系统内存。new 出来的东西存放在这;
stack:系统内存。静态的,针对线程,函数调用
A( )---->B( )----->C( )----->D( )
A a = new A();
a的生命周期在{}内 a放在栈里,用完了就没有了,A()还存在;
从父类开始初始化,先初始化静态块------.>静态成员变量
成员变量先于构造函数运行
成员变量先于{}块运行
package SuperClass;

public class Main {

public static void main(String[] args) {
Base base = new Sub();
}
}

class Base {
static {
System.out.print("A");
}

{
System.out.print("B");
}

public Base() {
System.out.print("C");
}
}

class Sub extends Base {
public Ref ref = new Ref();

static {
System.out.print("D");
}

// 成员变量先于块初始化

{
System.out.print("E");
}

public Sub() {
System.out.print("F");
}
}

class Ref {
static {
System.out.print("G");
}

{
System.out.print("H");
}

public Ref() {
System.out.print("I");
}
}
运行结果:ADBCGHIEF
9. 注意事项:养成先写注释后些代码的习惯。尽量不用拼音,只要是有用到拼音的地方,记得一定要写注释
/*

调试代码的时候可以这样写

//*/

用\n 换行会出现小黑块,应该用\r\n(windows系统里的换行)

switch case 不缩进

public static final MANAGER = 1;
uer.privligle = MANAGER; 常量的所有字母都大写,运用常量的好处在于多次调用后若要对其值进行修改,则只需要改动一次

在函数体内优先处理错误,能不写else就尽量不写 ,这样可避免一次缩进 ,如:
package SuperClass;
10. public class Function {
11. public int cal(int arg) {
12. // arg<0的时候,抛出异常。arg>0的时候求平方
13. if (arg < 0) {
14. throw new RuntimeException();
15. }
16. return (arg * arg);
17. }
18. public static void main(String args[]) {
19. Function fun = new Function();
20. System.out.println(fun.cal(6));
21. }
22. }


23. (建议)函数规模应该在200行以内,尽量使循环体内工作量最小

24. Statement接口提供了执行语句和获取结果的基本方法。
PreparedStatement接口添加了处理IN参数的方法;
PreparedStatement:对于同一条语句的多次执行,Statement每次都要把SQL语句发送 给数据库,这样做效率明显不高,而如果数据库支持预编译,PreparedStatement可以先 把要执行的语句一次发给它,然后每次执行而不必发送相同的语句,效率当然提高, 当然如果数据库不支持预编译,PreparedStatement会象Statement一样工作,只是效率 不高而不需要用户工手干预.另外PreparedStatement还支持接收参数.在预编译后只 要传输不同的参数就可以执行,大大提高了性能.
  (1)Statement:由方法createStatement所创建。Statement对象用于发送简单的SQL语句。
  (2)PreparedStatement:由方法prepareStatement所创建。PreparedStatement对象用于发送带有一个或多个输入参数(IN参数)的SQL语句。PreparedStatement拥有一组方法,用于设置IN参数的值。执行语句时,这些IN参数将被送到数据库中。PreparedStatement的实例扩展了Statement,因此它们都包括了Statement的方法。PreparedStatement对象有可能比Statement对象的效率更高,因为它已被预编译过并存放在那以供将来使用。
UUID:随机的字符串,不重复的。
package uuid;

import java.util.UUID;

public class TestUuid {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println(uuid);
}
}
25.Hash:快速定位,线程的。快速存取,将值映射到数组的下标
1. set:一组不可重复的元素
2. Collections:binarySearch(list,key);
二分查找(一定要是排好序的);
3. debug调试的时候展开this会看到堆上的成员变量
F5跟进到函数体内。F6单步运行。F7从当前函数跳过去。F8跳到下一个断点(跳过这次执行的断点)。
在debug调试的时候可以给出异常断点(运行的时候在有异常的地方停留)
4. Hit Count命中次数。若为5,则在第五次循环到此处停留
5. 递归一定要有出口,不可无限循环,否则抛出异常Java.lang.StackOverflowerError
递归的应用:(IO)遍历文件夹
6. facebook 脸谱
7. TCP:可靠的面向连接的传输协议。UDP:不可靠的,不面向连接的传输协议。
8. 表:用来实现客户的需求
9. 在实际应用中,我们总是可以通过添加中间层来解决问题。
10. varchar(10)五个汉字
11. truncate截断一个表的内容,在mysql中和oracle中都可用。truncate table table1
12. timestamp 插入时自动填充当前时间
13. 当两个或者多个表中有主键和外键关联的时候,先删除从表的内容再删除主表的内容
14. 比如国家,性别等不变的表可以写成数据字典表。
15. 索引对字符串操作时有效(有限长度的字符串),对于频繁增删改的表,不适合做索引,不要对大文本创建索引
16. 查询时用下划线进行单一匹配,%任意匹配
17. 分页查询:select * from table1 limit 1,5 ;从第二条往后查到第五条,下表从0开始计数;
18. 连接:select newstitle,readlog.id form news left join readlog on news.id=readlog.newsid and readlog.epid = 1;
19. 笛卡尔集:多表联查时表的数量不要超过4个
20. 有条件查询的原则:有where时,从左往右过滤掉最多数据的条件先写,这样可以减少程序运行时间
21. 常用分组函数:AVG,COUNT,MAX,MIN,SUM
22. select substr(company,2) from sale_log;
从这个字段的第二个字母开始向后查找并显示
23. select e.epid,n.news_title from news n inner join enterprise e on e.id = n.id;只有当这两个表有相同的字段的时候才会有查询结果
24. select replace('lenovo','l','pppp');
将字符串‘l’替换成‘pppp’。结果为:ppppenovo;
25. XML:(extensible Markup Language)可扩展标记语言
26. DTD和Schema 的区别:二者都有数据类型的概念,DTD用于校验格式是否符合标准,有自己的一套语法。Schema(XML语法)
27. 什么是SAX?什么是DOM?
SAX一边解析一边产生事件,目的:用于解析大文件。
DOM速度快,耗内存,完整的将文档加进系统内存后开始解析
28. 用XPath查询时//book查询所有的book,无论位置如何
29. XML和HTML的关系?
XML是面向数据的,HTML是面向展示的,HTML时XML的子集;
30. 建一个实例文件
共分五级:一级logger.debug()
二级logger.info()
三级logger.warn();
四级logger.error();
五级logger.fatal();
顺序由低到高


对于大量的debug输出,先判断
if(log.isDebugEnable())
log.debug("Debug Message:" + arg);
目的:防止大量生成无用字符串
31. 产生对象的三种方法:new,从序列化(恢复时),发射
32. 一个电子表格文件(Excel)有65536行,IV列。Merging Cell合并单元格
33. 脏数据的概念:
34. 事务?
35. 快速查询?
36. JSP中感叹号的作用与原理:
代码如果写在<% %>中,则编译生成java代码时(在jspService()中),直接用原代码,若不写在<% %>中,则在生成的java文件中用out.write("")中输出生成jsp代码形式
37. 加叹号与不加叹号的区别:
加了以后编译生成成员变量;不加生成临时变量
38. <jsp:forward>与redirect的区别:
前者时浏览器端的跳转,产生一次请求,在它下面的代码不会被执行,在相应生成的java文件中生成if(true)语句,若没有if(true)会出错
后者时重定向,产生两次请求,在jsp页面中的它下面的代码会被执行
39. session的生命周期:
page,request。session,application(顺序从小到达为包含关系)
一个request包含多个page
一个sessionbaohan多个request
session生命周期的消亡:1。session的时间到,2,浏览器窗口关闭,IP消亡
子窗口会继承父窗口的sessionID.
40. 异常关键字:try ---catch---finally,throw,throws
throw与throws的区别:throw抛出异常,throws是用来修饰方法的
41. SQL函数分为两种:当行函数和多行函数
42. 反射:是java基于虚拟机的动态语言,从字符串开始
43. notity与notifyAll的区别:
前者唤醒某个等待线程,由JVM决定
后者唤醒所有的等待线程
44. Collection和Collections的区别:
Collection是集合类的上级接口,继承他的接口主要有Set和List。
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
45. &和&&的区别:
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
46. 《Hibernate实战》
47. 线程与堆和栈的关系?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值