看《韩顺平Java》视频的笔记

一、排序中:快速排序最快,但很占内存
二、使用位运算、位移运算是最快的,由于是在内存中运算
三、对函数的调用是要开辟栈的,能减小调用就减小(代码重用)
四、有并发的问题要作成一个原子块
五、文件操做时使用byte[]数组做缓冲区的做用
六、数据库的选择:
1.成本
2.功能多很少
3.并发性(最终用户是多少)
4.安全性
七、数据库char类型定长中没有使用到的长度会使用空格补全;若是能够肯定一个字段的长度,则使用char类型,使用char类型查询时会很快;
八、带汉字的字段使用nvarchar,全英文或符号的用varchar;nvarchar处理汉字或其余unicode字符集的速度比varchar快
九、 存放小数建议使用numeric;
十、查询使用别名(须要计算的列数据)能够提升效率,由于能够减小计算次数:select sum(A) SA from table group by B having SA>1000
十一、SQL语句优化原则:尽可能把能减小结果集的条件写在右边(把能迅速排查的条件、能减小大量查询结果的条件写右边)
十二、delete删除表记录会写日志,表结构还在,是能够恢复的,速度慢;drop能够删除表的结构和数据;truncate删除表中全部记录,表结构还在,不写日志,没法找回删除记录,速度快;
1三、在常常查询、where子句或是链接条件上常常引用的列上建索引;javascript

 

 

第01讲(介绍java)
java语言是面向对象的、高性能的、跨平台(操做系统)的(一次编译,处处运行)
jdk包括jre(java运行环境)、一堆java工具和java基础的类库(3600多个类,经常使用150多个)
一个java文件中只能有一个public类
编写java文件>编译为字节码class文件>加载到JVM中执行css

-----------------------------------------------------
第02讲(变量)
类型 字节 范围
byte 1 -128到127
short 2 -32768到32767
int 4 -2147483648到2147483647
long 8 -9223372036854775808到9223372036854775807

char中a是97,小写字母从97开始;A是61,大写字母从61开始;
char在进行运算时,直接当作ascii码对应的整数对待;
高精度到低精度能够自动转换,低到高须要强制转换,转换原则:byte<short<int<long<float<double
当一个高精度和一个低精度运算时,值向高精度转变;html

-----------------------------------------------------
第03讲和第04讲(变量、流程控制、分支控制、循环)
%运算能够取到两个整数相除的余数
switch中可用数据类型主要是:byte、short、int、char、enum等;java

-----------------------------------------------------
第0五、0六、07讲(类和对象,成员属性、成员方法、构造方法)
对象是老是存在内存中的;web

-----------------------------------------------------
第0九、第10讲(类方法、封装,重载、覆盖、封装继承)
静态区域块下的代码只执行一次;
包的三大做用
①区分相同名字的类
②能够很好的管理类
③控制访问范围
java中经常使用包:
java.lang.*; 自动引入
java.util.*; 工具包
java.net.*; 网络开发包
java.awt.*; 窗口工具包
方法重载注意事项:
①方法名相同
②方法的参数类型,个数,顺序只要有一项不一样
③方法返回类型能够不一样
④方法的修饰符能够不一样正则表达式

-----------------------------------------------------
第十一、12讲(丢手帕例子,多态)
多态中父类new子类的引用是自动转换的sql

-----------------------------------------------------
第1三、14讲(抽象类和接口和final)
接口体现了程序设计的多态和高内聚低耦合的设计 思想;
接口不能继承类,可是能够继承别的接口;
接口中的变量不能用private和protected修饰
实现接口能够看做是对继承的一种补充;
实现接口可在不打破继承关系的前提下,对某个类工功能进行扩展,很是灵活;

final修饰的父类方法不能被子类覆盖,被修饰的类不能被继承;数据库

第1七、1八、19讲(数组,排序、查找、二维数组)
数组能够理解为执行数组首地址的引用;
对象数组在定义后,赋值时须要再次为每一个对象分配空间;
数组大小必须事先指定;

排序分为内部排序和外部排序法;
内部排序:交换式排序法(冒泡排序、快速排序)、选择式排序法(选择排序、堆排序)、插入式排序法(插入排序、谢耳排序、二叉树排序);
外部排序:合并排序法和直接合并排序法;
查找
顺序查找
二分查找(使用了递归)
二维数组:int arr[][]=new int[4][5];编程

-----------------------------------------------------
(重点)第20讲(二进制、位运算、位移运算)
1字节=8byte
二进制(原码、反码、补码)概念:
二进制的最高位是符号位:0正数,1负数
正数的原码、反码、补码都同样
负数的反码=它的原码符号位不变,其余位取反;
负数的补码=它的反码+1
0的反码、补码都是0
java没有无符号数
计算机运算的时候都是以补码的方式运算数组

-----------------------------------------------------
第2一、2二、23讲(集合)
经常使用集合类:List、ArrayList、Vector、LinkedList、hashMap、hashTable

ArrayList和Vector的区别
Vector是同步的,保证了Vector中的对象是线程安全的;而ArrayList则是异步的,所以不是线程安全的;
Vector缺省状况下自动增加原来一倍的数组长度,ArrayList是原来的50%,因此若是要在集合中保存大量的数据使用Vector有优点一点,由于能够经过设置集合的初始化大小来避免没必要要的资源开销;

HashTable和HashMap的区别
HashTable是同步的,是线程安全的;而HashMap是异步的,所以不是线程安全的。由于同步的要求会影响执行的效率,因此若是不须要线程安全的集合,那么使用HashMap是一个很好的选择,这样能够避免因为同步带来的没必要要的性能开销,从而提升效率。

总结
⒈若是要求线程安全,使用Vector、hashTbale;
⒉若是不要求线程安全,使用ArrayList、LinkedList、HashMap;
⒊若是要求键值对,则使用HashMap、hashTable;
⒋若是数据量大,又要线程安全考虑Vector;

-----------------------------------------------------
第25讲(泛型、异常)
泛型的优势:类型安全、向后兼容、层次清晰、性能较高;用泛型Java编写的代码能够为java编译器和虚拟机带来更多的类型信息,这些信息对java程序作进一步优化提供条件;

异常
一、编译异常
二、运行时异常
三、error错误(环境错误、外部影响)

finally不会被执行的状况
(1)finally块中发生了异常;
(2)程序所在线程死亡;
(3)在前面的代码中用了System.exit();
(4)关闭CPU;

-----------------------------------------------------
第29讲(swing介绍)
布局管理
流式布局管理器
边界布局管理器
网格布局管理器
卡片布局管理器
网格包布局管理器
开发GUI程序步骤
1.继承JFrame
2.定义须要的组件
3.建立组件
4.设置布局管理器
5.添加组件
6.显示窗体

-----------------------------------------------------
第35讲(事件处理)
java事件处理机制
java.awt.Event.*;
java事件处理是采起“委派事件模型”;

-----------------------------------------------------
第38讲(线程)
线程是进程中的一个实体,一个线程能够建立和撤销另外一个线程,同一进程中的多个线程之间能够并发执行。
线程有就绪、堵塞和运行三种进本状态;
①线程是轻量级的进程
②线程没有独立的地址空间(内存空间)
③线程是由进程建立的
④一个进程能够拥有多个线程——这就是多线程编程
⑤线程的状态:新建状态(new)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、死亡状态(Dead)

对象的标志位就是对象锁
同步机制:若是有多个线程因等待一个对象的标志位而处于阻塞状态时,当该对象的标志位恢复到1状态时,只会有一个线程可以进入同步代码执行,其余的线程仍然处于阻塞状态。

-----------------------------------------------------
第4三、44讲(IO编程)
字节流:用于读写二进制文件及任何类型文件byte
字符流:用于读写文本文件,不能操做二进制文件
类名最后是ready和write就是字符流

-----------------------------------------------------
第53讲(数据库)
DBA:数据库管理员
数据库基本结构的三个层次:
(1)物理数据层
(2)概念数据层
(3)逻辑数据层
数据库的基本特色
(1)实现数据共享
(2)减小数据的冗余度
(3)数据实现集中控制
(4)数据一致性和可维护性,以确保数据的安全性和可靠性
(5)故障恢复
主流数据库
微软:SQL Server、access
瑞典AB公司:MySQL(适合Linux)
ibm公司:db2(海量数据)、informix(安全性很好,银行喜欢用)
美国Sybase公司:Sybase
美国oracle公司:Oracle
SQL语言包含4个部分:
数据定义语言(DDL):create、drop、alert
数据操做语言(DML):insert、update、delete等
数据查询语言(DQL):select语句
数据控制语言(DCL):grant、remove、commit、rollback等
数据库的选择:
1.成本
2.功能多很少
3.并发性(最终用户是多少)
4.安全性
unicode编码:用两个字节表示一个字符
非unicode编码:用一个字节表示一个字母,用两个字节表示一个汉字;

字符型
类型 大小(字符) unicode编码
char 8000 非
varchar 8000 非
ntext 1073741823 是
text 2147483647 非
nchar 4000 是
nvarchar 4000 是
text是字节格式存储英文的,也能够存中文但可能会出现乱码
ntext是多字节格式存储unicode,可存储各类文字

isNull(comm,0):comm为null返回0,不然返回原值

-----------------------------------------------------
第62讲(复杂查询)
在from字句中使用子查询时,该子查询会做为一个临时表来对待,必须指定别名。
左外链接:左边表的记录所有显示,若是没有匹配的记录就用null填;
右外链接:右边表的记录所有显示,若是没有匹配的记录就用null填;

-----------------------------------------------------
第84讲(网络基础)
tcp/ip:网络通信协议,由网络层的IP协议和传输层的TCP协议组成;
TCP/IP四层:
应用层(application)
传输层(transport)
网络层(ip)
链路层(link)
端口范围:0-65535
0号是保留端口,1-1024是固定端口,1025-65535是动态端口(可使用)
端口注意事项
在计算机(尤为是作服务器的电脑)要尽量的少开端口
一个端口只能被一个程序监听
若是使用netstat-an可查看本机有那些端口在监听
可使用netstat-anb来查看监听端口的pid,在结合任务管理器关闭不安全的端口

url概念:统一资源定位符;每个网页的惟一的名称标识符;
url的组成
(1)协议(http,https)
(2)ip地址(32位)
(3)端口号(16位)0-65535
(4)资源名称

单工:单工数据传输只支持数据在一个方向上传输
半双工:容许数据在两个方向上传输,但不能同时传输;
全双工:容许数据同时在两个方向上传输数据;

 

——————————————JSP部分——————————————————————

第01讲(JSP)
jsp是什么?
1.jsp运行在服务器
2.jsp(java server page)
3.jsp的基础是servlet(至关于对servlet进行一个包装)
4.jsp是综合技术(jsp=html+css+javascript+java代码+jsp标签)

服务器若是是第一次访问该jsp文件,就会把demo.jsp翻译成一个Servletdemo_jsp.java,再编译成demo_jsp.class,而后在把class加在到内存中;
若是是第二次访问,就直接访问内存中的实例;
若是某个jsp文件被修改了,就须要从新访问该jsp文件(即至关于第一次);
小脚本<% %>中的变量会成为jsp.java文件中的service函数的局部变量;
jsp九大内置对象:
1.out 向客户端输出数据,字节流
2.request 接受客户端的http请求
3.response 封装jsp的产生的回应
4.session 会话,保存用户信息跟踪用户的行为
5.application 全局的,多个用户共享该对象,能够做计数器(count)
6.pageContext jsp页面的上下文,域对象
7.exception 表明运行时的一个异常
8.page 表明jsp实例自己
9.config 表明jsp对应的servlet的配置,能够获得web.xml中的参数

contentType和pageEncoding的区别
contentType指定网页以什么形式显示; pageEncoding不只能够指定网页的显示形式,还能指定web服务器以什么方式来翻译servlet

在开发jsp过程当中宏,咱们一般把jsp放入WEB-INF目录,目的是为了防止用户直接访问这些jsp文件;在WebRoot下咱们有一个index入口页面,它主要是作转发跳转:<jsp:forward page="/WEB-INF/jsp页面.jsp"></jsp:forward>;

动态引入:<jsp:include file=""></jsp:include>
静态引入:<%@ include file="" %>
相同点:把一个文件引入到另外一个文件
区别:静态引入把两个jsp翻译成一个Servlet,因此被引入的文件不要包含<body><html>;
动态引入把两个jsp分别翻译,因此被引入的jsp包含有<body><html>也能够;

注释:
<!-- -->会在servlet中对应生成out.write("<!-- -->"),返回给浏览器的静态页面也有,不过用户看不到;
<%-- --%>在servlet中没有输出,是jsp专用注释方法,建议使用;

正则表达式中使用test验证则表达式不要带/g

防止用户请求重复提交: 使用response.sendRedirect()跳转到保存转发跳转页面的servlet;

当咱们的java对象和数据库关联的时候使用java.sql.Date;若是是service类,则使用java.util.Date

 

——————————————Oracle部分——————————————————————

一、oracle安装成功会默认生成三个用户 sys:超级管理员,dba权限最高角色 system:系统管理员 scott:普通用户二、sys与system相比sys有create databse权限,其余相似;三、删除用户时,若是删除的用户中有表的话就须要在删除时代一个参数cascade;四、系统权限:用户对数据库的相关权限; 对象权限:用户对其余用户的数据对象操做的权限;五、oracle的系统权限有140多种,对象权限25种;六、profile管理用户口令能够对用户进行限制,好比限制用户登录时最多可输入密码的次数等;profile命令通常用dba的身份执行;七、delete删除表记录会写日志,表结构还在,是能够恢复的,速度慢;drop能够删除表的结构和数据;truncate删除表中全部记录,表结构还在,不写日志,没法找回删除记录,速度快;八、大量添加数据语句:insert into Users(字段,字段,字段) select * from Users九、all表示要比其中的条件都大;any只要比其中的任意一个条件大便可;十、(多行子查询)查询与SMITH的部门和岗位彻底相同的全部雇员:select * from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH';十一、如何显示高于本身部门平均工资的员工的信息:select e1.ename,e1.sal,e1.deptno,e2.avgsal from emp e1,(select deptno,avg(sal) avgsal from emp group by deptno) e2 where e1.deptno=e2.deptno and e1.sal>e2.avgsal;十二、oracle分页:select * from (select e1.*,rownum rn from (select * from emp) e1 where rownum<=10) t where t.rn>=6; 指定查询列或须要对列进行排序时只须要修改最里层的子查询;1三、使用查询结果建立一个新表:create table newEmp(id,name,sal,job) as select from id,name,sal,job from emp;1四、快速update:update emp set(job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';1五、事物的几个重要操做: 设置保存点 savepoint a 取消部分事务 rollback to a 取消所有事务 rollback1六、设置只读事务 set transaction read only;只读事务是指只容许执行查询的操做,而不容许执行任何其余DML操做的事务;1七、若是没有表可以使用dual表进行函数测试: select abs(n) from dual;1八、字符函数 lower(char):转小写 upper(char):转大写 length(char):获取字符长度 substr(char,m,n):从字符的m位截取n个字符 数学函数 round(n,[m]):四舍五入 trunc(n,[m]):截取小数 mod(m,n):用m数%n数 floor(n):向下取整 ceil(n):向上取整 日期函数 sysdate:返回当前时间 add_months(d,n):给指定日期加上n个月 last_dat(d):返回指定日期所在月份的最后一天1九、索引的创建原则: 在大表上创建索引才有意义 在where子句或是链接条件上常常引用的列上建索引 索引的层次不要超过4层20、索引的缺点 创建索引系统要占用大约为表的1.2倍的硬盘和内存空间来保存索引; 更新数据的时候,系统必需要有额外的时间来同事对索引进行更新,以维护数据和索引的一致性,所以要花更多的系统时间;2一、在如下状况不该创建索引 不多或从不引用的字段 逻辑型的字段,好比男或女(是或否)等2二、B树索引创建在重复值不多的列上,而位图索引则创建在重复值不少、不一样值相对固定的列上;2三、查看某个角色包括哪些系统权限:select * from role_sys_privs where role='DBA'2四、存储过程命名规范: 定义变量建议用v_做为前缀v_sal 定义常量建议用c_做为前缀c_rate 定义游标建议用_cursor做为后缀emp_cursor 定义例外建议用e_做为前缀e_error2五、PL/SQL有 存储过程、函数、包(可组合过程和函数);2六、复合类型 结构体: declare type_record_type is record( name emp.ename%type,sal emp.sal%type); sp_record emp_record_type; 将emp_record_type类型赋值给sp_record变量,sp_record能够接收emp_record_type类型中定义的全部类型的值; 数组: declare type sp_table_type is table of emp.ename%type index by binary_integerl; sp_table sp_table_type; 将这个复合类型赋值给sp_table变量,sp_table做为数组经过下标保存值; 游标: 了解不写了;2七、PL/SQL的循环有look、while和for循环;2八、第30讲是存储过程的分页2九、例外的分类 预约义例外:常见的oracle错误(20多个) 非预约义例外:预约义例外不能处理的例外 自定义例外:与oracle错误无关的其余状况

相关文章
相关标签/搜索