- 博客(16)
- 收藏
- 关注
原创 黑马程序员——银行调度
看了张孝祥老师解析的银行调度算法后,我有了些思考。题目:银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。异步随机生成各种类型的客户,生成各类型用户的概率比例为: VIP客户 :普通客户 :快速客户 = 1 :6 :3。客户办
2013-08-29 04:17:42 608
原创 黑马程序员——动态代理技术
一.前景知识JVM生成的动态类必须实现一个或多个接口,因为只有这样,它才能被用作实现了相同接口的目标类的代理。而如果目标类没有实现任何接口呢?我们可以用第三方提供的CGLIB库来实现动态生成一个类的子类,因为一个类的子类也可以用作该类的代理。二.JVM创建动态类及其对象需要的材料1. 生成类中的方法,通过其实现的接口获取2. 产生类字节码必须有的一个关联的类加载器3. 生成类中
2013-08-29 04:08:48 611
原创 黑马程序员——类加载器
一.概况1. 系统默认三个主要类加载器:BootStrap //不是java类,是C++语言编写的,在JVM内核中!ExtClassLoader //java类AppClassLoader //java类2. 加载器之间有父子关系3. 每个类负责加载特定位置的类4.可以调用ClassLoader.loadClass()方法来指定每个加载器加载某个类。二.运行机制
2013-08-29 03:16:18 455
原创 黑马程序员——内省JavaBean总结
一.概况:JavaBean是一种特殊的java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。示例:一般具有这种setAge()、getAge()特殊方法的类都可以成为JavaBean。当然,一个符合JavaBean特点的类也可以当做普通类一样使用。注意:JavaBean的属性是根据方法名推断出来的,比如上面类的属性是age
2013-08-29 01:50:45 446
原创 黑马程序员——数组的Class
1.具有相同维数和元素类型的数组属于同一个类型,即具有相同的Class实例对象。示例:2.基本类型的一维数组可以被当作Object类型使用,不能当作Object[ ]类型使用。而非基本类型,两种情况都可以。示例:注意:这里没给自动装箱的原因是int[]本来就已经是一个对象了!3.Arrays.asList()方法处理int[ ]和String[ ]时
2013-08-29 00:12:58 599
原创 黑马程序员——反射知识总结
一.概念:反射就是把java类中的各种成分映射成相应的java类。java类中的成分有Constructor、Field、Method、Package等。二.成分分析1.Constructor类(构造方法)得到某个类所有的构造方法:Constructor [] constructors = Class.forName("java.lang.String").getConstruct
2013-08-28 23:50:14 413
原创 黑马程序员——Java中HashSet中hashCode()的原理
一直以来,只知道如果用HashSet或HashTree存储一个自定义类型对象,那么该类中一定要重写hashCode()、equas()两个方法,但具体原因今天看了张孝祥老师的视频才知道,豁然开朗啊!而且我感觉老师讲出了hashcode的来源。
2013-08-26 15:07:56 496
原创 黑马程序员——多线程知识总结
1. 多线程的实现方式①继承Thread,线程代码写在子类run方法中。②实现Runnable,线程代码写在接口子类的run方法中。注意:推荐使用Runnable,因为其避免了单继承的局限性。2. 实现同步的方式①同步代码块synchronized(对象){需要被同步的代码}②同步函数,即将关键字synchronized作为修饰符写在函数修饰符位置。pu
2013-08-24 18:08:29 403
原创 黑马程序员——关于IO流中BufferedReader底层机制
在看毕向东老师基础视频关于IO流的时候,老师先讲了FileReader,以及其read()和read(char [])方法。后来老师说为了提高效率,需要用缓冲技术,用BufferedReader来封装实现。那么,这里BufferedReader用的缓冲区(字符数组) 和 FileReader用read(char [])方法中的数组有什么区别呢?两者是相同的吗?百思不得其解,于是查看的jav
2013-08-12 12:05:53 890
原创 黑马程序员——参数化类型与原始化类型
参数化类型可以引用一个原始类型的对象,编译报告警告,例如, Collection c = new Vector();原始类型可以引用一个参数化类型的对象,编译报告警告,例如, Collection c = new Vector();import java.util.*;class Demo { public static void main(String[] args)
2013-08-06 11:46:35 2739
原创 黑马程序员——String str1="abc";String str2=new String("abc");内部原理剖析
基础视频中,讲到String str1 = "abc"; String str2=new String("abc");区别的时候,老师说第二种方式产生两个对象,我很费解!经过和论坛上的朋友讨论,从常量池的角度对问题进行分析,总结如下假设在一个test.java文件中,包含如下类:class Str{String str1 = "abc";Stri
2013-07-31 15:20:28 959
原创 黑马程序员——如何理解当内部类中定义了静态成员,改内部类必须是静态的?
这句话的意思是,非静态内部类只能有非静态成员;静态内部类既可以有静态成员,也可以有非静态成员。那么为什么非静态内部类不能有静态成员呢?原来,java编译的原则是,如果类中有静态的东西,那么在加载该类的时候,就要为所有静态成员成员分配内存空间(应该是在方法区)。而对于非静态成员,则是在该类实例化的时候才分配内存空间。现在我们假设在一个非静态内部类中定义了静态成员。当外部类加载的时候,因为
2013-07-30 21:08:22 1099
原创 黑马程序员——单例设计模式
设计要求:1.只能被实例化一次。2.由自己创建实例。3.能向该类任意引用提供上述实例。方式一:饿汉式class Single{ private static final Single s=new Single(); private Single(){} public static Singl
2013-07-30 20:25:07 445
原创 黑马程序员——如何理解成员变量在堆内,局部变量在栈内?
在第五天的基础视频里,毕老师讲了一句话:成员变量在堆内存里,局部变量在栈内存里。我有疑惑:既然成员变量存在于对象中,对象存在于堆中,所以成员变量存在于堆中。那么按照这样的推理,局部变量存在于方法中,而方法存在于对象中,对象存在于堆中,那是不是可以说局部变量存在于堆中?这与老师说的局部变量在栈内存里不符合啊?然后我猜想:当对象new出来,实体存在于堆的时候,对象里面的方法是没有出现的
2013-07-30 18:13:04 4290 2
原创 黑马程序员——扬帆,起航
看黑马基础视频已经好几天了,笔记做了不少,但一直没动手写博客,因为觉得博客上应该写一些比较重要的东西,不是那些在百度上一找就有一大片的内容。现在我发现我错了,我高估自己了,好几天了,我能发现的问题都是能百度到的o(╯□╰)o!我决定了,从今天开始,我就把自己认为比较重要的,或者说对我来说比较薄弱的知识点记录下来!黑马,I am coming~
2013-07-30 10:46:41 417
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人