笔记

来源:互联网 发布:无人机淘宝可靠吗 编辑:程序博客网 时间:2024/05/01 13:09
浏览器默认是以GB2312读  Servlet中的response默认输出是ISO8859
getParamat 最取用户提交的数据,getAttribute是取域里面存的数据。


数据库MYSQL强制结束ctr+c


对象一建立就运行了,而且优先于构造函数执行
作用:给对象进行初始化的
构造代码块和构造方法的区别:
构造方法是对应的对象进行初始化,
构造代码块是给所有的对象进行统一的初始化


构造代码块中定义是不同对象共性的初始化内容
*/




this:看上去,用来区分局部变量和成员变量同名的情况
this:就是代表本类对象,this代表它所在函数(方法)所属对象的引用


构造函数之间的调用只能通过this语句来完成


构造函数之间进行调用时this语句只能出现在第一行,初始化要先执行,如果初始化当中还有初始化,那就去执行更细节的初始化






/*
static关键字
作用:是一个修饰符,用于修饰成员(成员变量,成员方法)
1.被static 修饰后的成员变量只有一份
2.当成员被static修饰之后,多了一种访问方式,除了可以对象调用之外,还可以被类直接调用(类名.静态成员)


static的特点:
1.随着类的加载而被加载
2.优先于对象的存在
3.被所有的对象所共享的
4.可以直接被类名所调用


存放位置
类变量随着类的加载而存在于data内存区
实例变量随着对象的建立而存在于堆内存。


生命周期:
1.类变量生命周期最长,随着类的消失而消失
2.实例变量生命比类变量短,它是随着对象的消失而消失


方法注意事项:
1.静态的方法只能访问静态的成员
2.非静态的方法既能访问静态的成员(成员变量,成员方法)也能访问非静态成员
3.静态的方法中是不可以定义this super关键字
因为静态优先于对象存在,所以静态方法不可以出现this




静态应用工具类
每一个应用程序都有共性的功能,
可以将这些功能进行抽取,独立封装。以使复用
对象的作用:对象是用来封装数据的,
只要这个类里面有非静态的成员时,
那对象就必须存在。






静态代码块中执行语句


特点:随着类的加载而执行,并且只会执行一次,并且还优先于主函数。
作用:用于给类进行初始化






1.因为new Student()用到了Student类,所以会把它从硬盘上加载进入内存
2.如果有static静态代码块就会随着类的加载而执行,
还有静态成员和普通方法也会随着类的加载而被加载
3.在堆中开辟空间,分配内存地址
4.在堆中建立对象特有属性,并同时对特有属性进行默认初始化
5.对属性进行显示初始化
6.执行构造代码块。对所有对象进行初始化
7.执行对应的构造函数,对对象进行初始化.
8.将内存地址给S(给栈中的变量)
*




/*子父类成员特点
成员:
1.成员变量
2.函数
3.构造函数


变量:
this 代表当前对象的引用 this.变量  首先在本类中找所需要的这个变量,
如果没有找到再父类中找。
super 用于访问当前对象的父类成员,super.变量 直接父类中找所需变量
*/






当子类中出现和父类中一样的函数时,当子类对象调用该函数,
运行的是子类中的函数,如同父类中的函数被覆盖了一样,
这种情况就是函数的另一种特性:重写(覆盖)


注意:
1.子类覆盖父类时,必须要保证子类权限大于等于父类,才可以覆盖,否则编译出错


访问权限修饰符:public> default>private   成员前面没加任何访问权限
修饰符默认权限就是default


2.静态的函数只能覆盖静态的


记住:
重载:只看同名的方法的参数列表
重写:子父类方法要一模一样








有了子父类之后构造函数的特点:
在对子类对象进行初始化的时候,
父类的构造方法也会运行,那是因为子类的构造函数默认
第一行
有一条隐式的语句 super();


子类每个构造方法第一行都有一个隐式的 super();
*/




/*
对象的转型:
1.对象的向上转型 子类转成父类 默认进行 父类引用指向子类对象
2.对象的向下转型 父类转成子类 强制进行 


关键字:instanceof 测试左边的对象是否是右边类的实例 
如果是返回true 不是返回false
*/ 








1.多态的体现
父类引用指向子类对象
2.多态的前提
(1)必须得类与类之间存在关系,可以是继承关系 也可以是实现关系
(2)必须得有重写 
3.多态的好处
大大提高了程序的可扩展性
4.多态的弊端
提高的程序可扩展性,只能用父类的引用,访问到父类中成员
多态成员变量的特点:
1.编译期间:参阅的是引用型变量所属的类中是否有调用的方法
2.运行期间:参阅对象所属的类中是否有调用的方法
*/




/*
匿名对象:没有名字的对象
匿名对象的使用方式之一:当对对象的方法只调用一次时,我们可以用匿名对象来完成
,比较简化。
匿名对象的使用方式之二:匿名对象可以被当做实参传递
*/






==和Object里面的equals其实比较的就两对象的内存地址是否一致






/*
final(最终)是一个修饰符
1.final可以修饰类,函数,变量(成员变量,局部变量)
2.被final修饰后的类不可以被其他类继承
3.被final修饰后的函数不可以被重写
4.被final修饰后的变量不允许被再次赋值,final在对变量进行修饰时一定赋值,
被final修饰后的变量我们称它常量


注意:常量的命名规范:字母全部要大写,
如果这个名字是由多个单词组成,在单词之间用_隔开
*/








/*
abstract:是一个修饰符
可以修饰方法,类
1.当我们多个类存在相同的功能,但是功能的主体不同,这时我进行向上抽取
只抽取功能的定义不抽取功能的主体


抽象类的特点:
1.抽象方法一定要在抽象类中
2.抽象类和抽象方法必须要被abstract关键字修饰
  abstract只能修饰类和函数
3.抽象的类是不能被创建对象,因为调用抽象的方法没意义
4.抽象类的中方法要被使用,必须由子类重写抽象类中的方法
,然后创建子类对象来调用
5.抽象类中可以定义非抽象的方法,有时我们需要此类不能被new关键字创建对象时,
可以用abstract将此类变成抽象类。
6.子类如果只重写一部分的抽象方法,那么该子类还是一个抽象类,如果抽象类的方法
要被使用,子类必须重写抽象类中的所有方法。


值得注意:抽象类和普通的类没有太大的不同。
1.抽象类无法同过new关键字创建对象
2.抽象类里面可有抽象的方法








/*
接口:初步理解,接口是一个特殊的抽象类,当抽象类中全部是抽象方法时,
可以通过接口的形式来体现。
class 用于定义类
interface 用于定义接口


接口中成员的格式:
1.public static final String NAME="小李";//全局常量
2.public abstract void show(); //抽象方法


注意:
1.接口中只能出现public 访问修饰符
2.接口不可以创建对象,因为里面有抽象方法,需要被子类实现,子类对接口中的所有抽象方法实现后,子类才能够实例化,否则子类就是一个抽象类
*/




/*
接口:提高了我们功能的扩展性,
因为它降低事物与事物之间的耦合性(关系紧密程度)


父类中定义的是多个类中共性的基本功能
接口中定义的是扩展功能


接口好处:
可以多实现,也就是一个类可以实现多个接口


提示用快捷ALTA+斜杠




成员变量都有默认初始化值可以直接参与运算,在堆内存中
局部变量没有默认初始化值,在栈内存中


类变量或者静态变量是指static修饰的
实例变量指没有static的


存放位置
类变量随着类的加载而存在于data方法区
实例变量随着对象的建立而存在于堆内存




一、成员变量、实例变量、类变量和局部变量区别
1:成员变量:变量电议部分所定义的变量被称为累的成员变量。也就是说成员变量在整个类中都有效,类中的方法可以直接调用成员变量使用。
然而成员变量又分为实例成员变量(简称实例变量)和类变量(简称静态变量)
1.1:实例变量:就是我们正常定义的变量,比如int a; a就是实例变量
1.2:静态变量:静态变量定义前要加上Static 比如static int a;这个a就是静态变量,当在变量定义前加上static的时候就代表着该变量在使用的时候有一处改变则各个用到这个变量的地方,该变量都发生改变,就是所谓的一处改变处处改变,静态变量的生存期为整个源程序,但是只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
2:局部变量:在方法体中定义的变量和方法的参数称局部变量。也就是说局部变量只在定义它的方法内有效,而方法外部的其他方法无法使用局部变量。当局部变量名字与成员变量名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效,以局部变量定义的为准。






TableModel是一个接口,DefaultTableModel是它的一个实现






netbeans 中的EJB中的配置文件中的persistence中配置数据库,其位置在jboss中的standalone中的configuration中的standalone.xml中


Java发展快10年了,版本升级一直显示在次版上,从1.1至1.4,等到大家都以为Tiger应当叫1.5时,突然间就变成了5.0,跨了N个版本,始料不及啊,一直没有细想其中的原因(没时间没心情)。终于某日坐在马桶上时,想通了,Java也不容易啊,花了这么多年才升到1.4,.Net几年时间就升到2.0了,JDK再以次版升下去,.Net 8.0了,JDK估计才1.8,这不是给人映像Java比.Net还嫩了吗?不行,不行,怎么的也得升到5.0,以示差距。哈哈,这就是为啥JDK5.0能力没升多少,版本却飞奔的原因,竞争的压力啊。






jboss ,tomcat 都是web容器
servlet和jsp都是需要通过web容器来运行
ejb就是一个重量级的框架,tomcat不支持,jboss支持ejb












在使用Eclipse 编写Java代码时,自动生成的注释信息都是按照预先设置好的格式生成的。
修改作者、日期注释格式:打开Windows->Preferences->Java->Code Style->Code Templates,点击右边窗口中的Comments,
将${user}删除,改成你希望显示的名字;将${tags}删除,点击Insert Variable,选择Date,这样就会自动生成日期信息。在你需要添加注释的地方点击Sources->Ganarate Element Comment,或者使用快捷键 Alt+Shift+J ,则 eclipse 自动在该类前面添加注释。




报关010 1  4401938169
云关通 001@qq.com.cn


版本控制器中圆柱和勾代表跟服务端上是一样的,提交过的  红色感叹号代表有新内容 没提交






mcmp
4453069599


Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//获得连接
ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=xuesheng", "sa" , "wb124584");


System.out.println("sqlserver数据库连接成功!");




 Class.forName("oracle.jdbc.driver.OracleDriver");
 conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.53:1521:orcl", "wb", "wb");
E:\workspace\netbeansProjects\wildfly-8.0.0.Final\standalone\deployments\ojdbc6-oracle-11g.jar






1 如何将字串 String 转换成整数 int?
A. 有两个方法:
1). int i = Integer.parseInt([String]); 或
i = Integer.parseInt([String],[int radix]);
2). int i = Integer.valueOf(my_str).intValue();
注: 字串转成 Double, Float, Long 的方法大同小异.
2 如何将整数 int 转换成字串 String ?
A. 有叁种方法:
1.) String s = String.valueOf(i);
2.) String s = Integer.toString(i);
3.) String s = "" + i;
注: Double, Float, Long 转成字串的方法大同小异.




Arrays.asList(new Person[]{person}将一个对像转换成集合






脏读: 读到别人未提交的
幻读: 读到别人插入的
不可重复读: 读到别人提交的








第五章 jsp基本语法 


5.2:指令标签<%@   %>
5.2.1: page
extends属性 import language pageEccoding contentType session buffer qutoFlush isErropage
5.2.2: include包含          静态 包含的不会编译,以文件显示
include属性
5.2.3: taglib标签指令

5.3:脚本标识
5.3.1:表达式
5.3.2:声明标识  (放方法)
5.3.3:代码片断(JAVA代码)




5.4:JSP注释


5.5:动作标识:
5.5.1包含文件标识<jsp:include>  动态 包含的会编译
5.5.2请求转发<jsp:forward>
5.5.3传递参数标识<jsp:param>




第六章:jsp内置对像


6.2:request对像 所有的request请求都是ISO-8859-1需要解决中文乱码
6.2.1访问请求参数 request.getParameter("id");
6.2.2在作用域中管理属性 request.setAttribute(String mame,Object object)
6.2.3获取cookie


6.3:response对像
6.3.1重定向 response.sendRedirect(String path) 不同于转发,重定向会重新发送请求
6.3.2处理HTTP文件头
1禁用缓存
2设置页面自动刷新 response.setHeader("refresh","10")
6.3.3设置输出缓冲
6.4:session对象


6.5:application对象  保存公有数据,随服务器启动时创建,停止时销毁


6.6:out对象   用于在web浏览器内输出信息,并管理服务器上的输出缓冲区有clear flush等方法


6.7:pageContext对象  可通过它获取request,response,session,application,exception,config等


6.8:page对象   只有在JSP页面内合法,包含servlet接口引用的变量,可以当作this的别名


6.9:exception对象,获取异常信息


6.1:config对象 用于取得服务器配置信息














Java.lang.Exception和Java.lang.Error继承自Java.lang.Throwable;


Java.lang.RuntimeException继承自Java.lang.Exception.


编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。


运行期异常: 这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。


错误: 一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而有运行环境处理






看继承结构ctr+t;
sout+Tab输出在netbeans中






spring:(AOP IOC)






实例化bean,有三种方法,第一种是用默认的构造方法来的
第二种和第三种是静态工厂,和实例工厂来的
实例化中默认是用singleton,只创建一次,可以改为scope=prototype,这样每次获取的的就是新的










手动装配:1.构造器注入,2.setter方法注入,  3.@注解两种方式(要有一个空参的构造器)  就不用在bean里传东西了和bean里加bean了




手动: 使用注释注入有@Autowired与@Resource两种,一般用后面那种,因为可以它会先按名字后按类型找注入,可注在字段和Set方法上

Autowired 默认按类型注解,如果需要按名称注解需要在后面加@Qualifier("这里放名称");有一个属性required,当为true时如果没有类型与之匹配就会报错




自动装配:直接在配置文件中的bean后面加入@Autowired








自动扫描方式把组件纳入spring容器上(不用写bean了)




setAccessible(true)允许访问private字段




@Scope("prototype")设置为不单例,重新new一个对你,这时equals为false






AOP拦截
1用JDK的proxy但前提是得是接口
2用spring提供cglib的jar包,这时用cglib创建,不用一定是接口


spring面向切面AOP  execution( *             cn.itcast.servic  ..            *   .*         ( ..))
     返回的类型    哪个包底下的类    对其子包下所在的类  类,代表所有的类  所有的方法参数所有参数
1注解方式
2xml方式





<context:property-placeholder location="classpath:jdbc.properties" />


实体bean中必须有个无参的构造函数










Hibernate:(ORM  Object/Relation Mapping)



// 方式一:使用HQL查询
List<User> list = session.createQuery("FROM User").list(); 

// 方式二:使用Criteria查询
Criteria criteria = session.createCriteria(User.class);
List<User> list = criteria.list();




二.其它配置:
1自动建表
<property name="hbm2ddl.auto">create</property>设置自动建立表

create:先删除,再创建
update:如果表不存在就创建,不一样就更新,一样就什么都不做。
create-drop:初始化时创建表,SessionFactory执行close()时删除表。
validate:验证表结构是否一致,如果不一致,就抛异常。




三.映射     首先要满足的就是实体类必须有空参的构造器  因为session.get方法获取对像,默认的反射有new对像






关键字加反引号``就不再是关键字,而只是一个普通的变量










学生系统中new 出来的dao不行,那是因为New出来的只是普通的,跟配置文件没关系,不会有事务的








在hbm.xml中配置的,自己指定主键
<id name="id" type="int" column="id" length="20">
           <generator class="assigned"/>
          
           <!-- <generator class="native"/>-->
        </id>


直接通过注解的方式,直接什么都不指定就是自己指定主键




一、JPA通用策略生成器 
通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 
其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是JPA的标准用法, 
JPA提供四种标准用法,由@GeneratedValue的源代码可以明显看出. 




JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO. 
TABLE:使用一个特定的数据库表格来保存主键。 
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。 
IDENTITY:主键由数据库自动生成(主要是自动增长型) 
AUTO:主键由程序控制。






二、hibernate主键策略生成器 
hibernate提供多种主键生成策略,有点是类似于JPA,有的是hibernate特有: 


native: 对于 oracle 采用 Sequence 方式,对于MySQL 和 SQL Server 采用identity(自增主键生成机制),native就是将主键的生成工作交由数据库完成,hibernate不管(很常用)。 


uuid: 采用128位的uuid算法生成主键,uuid被编码为一个32位16进制数字的字符串。占用空间大(字符串类型)。 


hilo: 使用hilo生成策略,要在数据库中建立一张额外的表,默认表名为hibernate_unique_key,默认字段为integer类型,名称是next_hi(比较少用)。 


assigned: 在插入数据的时候主键由程序处理(很常用),这是 <generator>元素没有指定时的默认生成策略。等同于JPA中的AUTO。 


identity: 使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用)。 
          等同于JPA中的INDENTITY。 


select: 使用触发器生成主键(主要用于早期的数据库主键生成机制,少用)。 


sequence: 调用底层数据库的序列来生成主键,要设定序列名,不然hibernate无法找到。 


seqhilo: 通过hilo算法实现,但是主键历史保存在Sequence中,适用于支持 Sequence 的数据库,如 Oracle(比较少用) 
increment: 插入数据的时候hibernate会给主键添加一个自增的主键,但是一个hibernate实例就维护一个计数器,所以在多个实例运行的时候不能使用这个方法。 


foreign: 使用另外一个相关联的对象的主键。通常和<one-to-one>联合起来使用。 


guid: 采用数据库底层的guid算法机制,对应MYSQL的uuid()函数,SQL Server的newid()函数,ORACLE的rawtohex(sys_guid())函数等。 


uuid.hex: 看uuid,建议用uuid替换。 


sequence-identity: sequence策略的扩展,采用立即检索策略来获取sequence值,需要JDBC3.0和JDK4以上(含1.4)版本 



0 0
原创粉丝点击