java随手笔记(二)

applet是一种在web环境下,运行于客户端的java程序组件,applet必须运行于某个特定的
“容器”,这个容器可以是浏览器本身,也可以是通过各种插件,或者包括支持applet的移动


设备在内的其他各种程序来运行。与一般的java应用程序不同,applet不是通过main方法来运


行的。applet运行之前,先调用init()方法,然后调用start()方法,最后调用paint()


方法。


java把内存划分为两种:一种是栈内存。另一种是堆内存。在函数定义中的一些基本类型的变


量和对象的引用变量都是在函数栈内存中分配,当超过变量的作用域后,java会自动释放掉为


该变量分配的内存空间,该内存空间可以立即被另作它用。堆内存用来存放有New创建的对象和


数组,在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理。


方法重写的前提:必须要存在继承的关系。


什么时候要使用方法的重写:父类的功能无法满足子类的需求时。




方法重写要注意的事项:


1、方法重写时、方法名与形参列表必须一致。
2、方法重写时、子类的权限修饰符必须要大于或等于父类的权限修饰符
3、方法重写时、子类的返回值类型必须要小于或等于父类的返回值类型
4、方法重写时、子类抛出的异常类型要小于或等于父类抛出的异常类型


Exception(最坏)
RuntimeExeception(小坏)








方法的重载:在一个类中存在两个或者两个以上的同名函数,称作为方法重载。


方法重载的要求:
1、函数名要一致
2、形参列表不一致(形参的个数或形参的类型不一致)
3、与返回值类型无关




main函数即主函数,是一个前台线程,前台进程是程序中必须执行完成的,而后台线程是java


中所有前台结束后结束,不管有没有完成,后台线程主要用于内存分配等方面:
1、后台线程不会阻止进程的终止。属于某个进程的所有的前台线程都终止后,该进程就会被终


止。所有剩余的后台线程都会停止且不会完成


2、可以在任何时候将前台线程修改为后台线程,方式是设置Thread.IsBackGround属性。
3、不管是前台线程还是后台线程,如果线程内出现了异常,都会导致进程的终止。


4、托管线程池中的线程都是后台线程,使用new Thread 方式创建的线程默认都是前台线程




优化Hibernata所鼓励的7大措施:
1、尽量使用many-to-one,避免使用单项one-to-many
2、灵活使用单向one-to-many
3、不用一对一、使用多对一代替一对一
4、配置对象缓存。不使用集合缓存
5、一对多使用Bag,多对一使用Set
6、继承使用显示多态HQL:from object polymorphism='exlicit'避免查处所有对象
7、消除大表、使用二级缓存


抽象类;
特点:
1、抽象类中可以含有构造方法
2、抽象类中拦截恶意存在普通属性、方法、静态属性和方法
3、抽象类中可以存在抽象方法
4、如果一个类中有一个抽象方法、那么当前类一定是抽象类;抽象类中不一定有抽象


方法
5、抽象类中的抽象方法、需要有子类实现,如果子类不实现,则子类也需要定义为抽


象的
6、抽象类不能被实例化。抽象类和抽象方法必须被abstract修饰


抽象类中的抽象方法(其前面有abstract修饰)不能使用private、static、synchronized、


native访问修饰符修饰


接口
1.在接口中只有方法的声明,没有方法体。 
2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static 


final 
3.在接口中的方法,永远都被public来修饰。 
4.接口中没有构造方法,也不能实例化接口的对象。(所以接口不能继承类) 
5.接口可以实现多继承 
6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法


则实现类定义为抽象类。 
7,接口可以继承接口,用extends






用iterator安全的删除一个list中保存


Iterator it = list.iterator();
int index=0;
while(it.hashNext()){
Object obj =it.next();
if(needDelete(obj)){

it.remove();
}
index++;
}




public Method[] getDeclaredMethods()返回类或接口声明的所有方法,包括public, 


protected, default (package) 访问和private方法的Method对象,但不包括继承的方法。当


然也包括它所实现接口的方法。
public Method[] getMethods()返回类的所有public方法,包括其继承类的公用方法,当然也


包括它所实现接口的方法。




public:可以被所有其他类所访问;
protected:自身、子类及同一个包中类可以访问;
default:同一包中的类可以访问;
private:只能被自己访问和修改。
public>protcted>default>priavte




1.子父类存在同名成员时,子类中默认访问子类的成员,可通过super指定访问父类的成员,格


式:super.xx  (注:xx是成员名);
2.创建子类对象时,默认会调用父类的无参构造方法,可通过super指定调用父类其他构造方法


,格式:s uper(yy) (注:yy是父类构造方法需要传递的参数)




成员变量:就是声明为类的属性的变量。
静态变量(也叫做类变量):就是声明为静态属性的变量。
局部变量:就是方法里面声明的变量。
volatile变量:和多线程相关,用于简化同步的变量
transient变量:用于使该变量不会被持久化
final变量:基本上就是常量




首先 我们要知道 == 这个比较符号
==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的


时候,是比较对象是否相同。
"=="和"!="比较的是地址 指第一个new()c出来的地址
所以因为两次new() 分出的内存也不同
所以
System.out.print(n1 == n2);返回 false


!=就返回true








jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。
常量池属于 PermGen(方法区)




Collection
    -----List
               -----LinkedList    非同步
                ----ArrayList      非同步,实现了可变大小的元素数组
                ----Vector          同步
                         ------Stack
    -----Set   不允许有相同的元素




Map
    -----HashTable        同步,实现一个key--value映射的哈希表
    -----HashMap          非同步,
    -----WeakHashMap   改进的HashMap,实现了“弱引用”,如果一个key不被引用,则被GC回收








Web service顾名思义是基于web的服务,它是一种跨平台,跨语言的服务。
我们可以这样理解它,比如说我们可以调用互联网上查询天气信息的web服务,把它嵌入到我们的B/S程序中,当用户从我们的网点看到天气信息时,会认为我们为他提供很多的服务,但其实我们什么也没做,只是简单的调用了一下服务器上的一端代码而已。Web service 可以将你的服务发布到互联网上让别人去调用,也可以调用别人发布的web service,和使用自己的代码一样。
它是采用XML传输格式化的数据,它的通信协议是SOAP(简单对象访问协议).






客户端通过new Socket()方法创建通信的Socket对象。
服务器端通过new ServerSocket()创建TCP连接对象 accept接纳客户端请求


super()和this()都是调用一个构造方法,都必须出现在第一行,static下不存在对象,所以不存在this与super的说法


1、创建泛型对象的时候,一定要指出类型变量T的具体类型。争取让编译器检查出错误,而不是留给JVM运行的时候抛出类不匹配的异常。 2、JVM如何理解泛型概念 —— 类型擦除。事实上,JVM并不知道泛型,所有的泛型在编译阶段就已经被处理成了普通类和方法。 处理方法很简单,我们叫做类型变量T的擦除(erased) 。 总结:泛型代码与JVM ① 虚拟机中没有泛型,只有普通类和方法。 ② 在编译阶段,所有泛型类的类型参数都会被Object或者它们的限定边界来替换。(类型擦除) ③ 在继承泛型类型的时候,桥方法的合成是为了避免类型变量擦除所带来的多态灾难。 无论我们如何定义一个泛型类型,相应的都会有一个原始类型被自动提供。原始类型的名字就是擦除类型参数的泛型类型的名字。




spring框架是一个分层架构,由7部门组成
核心容器、Spring上下文、SpringAop、SpringDao、Spring ORM、Spring Web、Spring MVC






 "com.jd.". replaceAll(".", "/") + "MyClass.class";


replaceAll()中的第一参数为正则表达式,“.”在正则表达式中表示所有字符,






1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.


2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.


3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.


4.从效率来说
forward:高.
redirect:低.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值