2017年2月17日

递归概述

摘要: 概述: 就是方法定义中调用方法本身的现象 注意事项: 1. 递归的次数不宜过多 , 过多 , 会产生栈内存溢出 2. 递归一定要存在出口 阅读全文

posted @ 2017-02-17 19:28 LoaderMan 阅读(184) 评论(0) 推荐(0) 编辑

反射获取方法

摘要: Method Class.getMethod(String, Class...) 和 Class.getDeclaredMethod(String, Class...)方法可以获取类中的指定方法,调用invoke(Object, Object...)可以调用该方法,Class.getMethod(" 阅读全文

posted @ 2017-02-17 19:26 LoaderMan 阅读(372) 评论(0) 推荐(0) 编辑

反射越过泛型检查

摘要: public void setProperty(Object obj, String propertyName, Object value){},此方法可将obj对象中名为propertyName的属性的值设置为value。 阅读全文

posted @ 2017-02-17 19:26 LoaderMan 阅读(152) 评论(0) 推荐(0) 编辑

反射获取成员变量

摘要: Field Class.getField(String)方法可以获取类中的指定字段(可见的), 如果是私有的可以用getDeclaedField("name")方法获取,通过set(obj, "李四")方法可以设置指定对象上该字段的值, 如果是私有的需要先调用setAccessible(true)设 阅读全文

posted @ 2017-02-17 19:24 LoaderMan 阅读(304) 评论(0) 推荐(0) 编辑

反射获取带参数的构造方法

摘要: Constructor Class类的newInstance()方法是使用该类无参的构造函数创建对象, 如果一个类没有无参的构造函数, 就不能这样创建了,可以调用Class类的getConstructor(String.class,int.class)方法获取一个指定的构造函数然后再调用Constr 阅读全文

posted @ 2017-02-17 19:21 LoaderMan 阅读(4398) 评论(0) 推荐(0) 编辑

Class.ForName()读取配置文件

摘要: 榨汁机(Juicer)榨汁的案例 分别有水果(Fruit)苹果(Apple)香蕉(Banana)桔子(Orange)榨汁(squeeze) public class Demo_Reflect { /** * 榨汁机(Juicer)榨汁的案例 * 分别有水果(Fruit)苹果(Apple)香蕉(Ban 阅读全文

posted @ 2017-02-17 19:18 LoaderMan 阅读(606) 评论(0) 推荐(0) 编辑

类加载器

摘要: A:类加载器的概述 负责将.class文件加载到内存中,并为之生成对应的Class对象。虽然我们不需要关心类加载机制,但是了解这个机制我们就能更好的理解程序的运行。 B:类加载器的分类 Bootstrap ClassLoader 根类加载器 Extension ClassLoader 扩展类加载器 阅读全文

posted @ 2017-02-17 19:16 LoaderMan 阅读(178) 评论(0) 推荐(0) 编辑

反射概述

摘要: A:反射概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意一个方法和属性; 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 要想解剖一个类,必须先要获取到该类的字节码文件对象。 而解剖使用的就是C 阅读全文

posted @ 2017-02-17 19:16 LoaderMan 阅读(168) 评论(0) 推荐(0) 编辑

类的加载概述

摘要: 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 加载 就是指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象。 连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静 阅读全文

posted @ 2017-02-17 19:14 LoaderMan 阅读(146) 评论(0) 推荐(0) 编辑

类的加载时机

摘要: 创建类的实例 访问类的静态变量,或者为静态变量赋值 调用类的静态方法 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象 初始化某个类的子类 直接使用java.exe命令来运行某个主类 阅读全文

posted @ 2017-02-17 19:14 LoaderMan 阅读(156) 评论(0) 推荐(0) 编辑

UDP传输

摘要: 1.发送Send 创建DatagramSocket, 随机端口号 创建DatagramPacket, 指定数据, 长度, 地址, 端口 使用DatagramSocket发送DatagramPacket 关闭DatagramSocket 2.接收Receive 创建DatagramSocket, 指定 阅读全文

posted @ 2017-02-17 19:12 LoaderMan 阅读(219) 评论(0) 推荐(0) 编辑

TCP传输

摘要: 1.客户端 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流 输入流可以读取服务端输出流写出的数据 输出流可以写出数据到服务端的输入流 2.服务端 创建Se 阅读全文

posted @ 2017-02-17 19:12 LoaderMan 阅读(231) 评论(0) 推荐(0) 编辑

Socket概述

摘要: Socket套接字概述: 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。 通信的两端都有Socket。 网络通信其实就是Socket间的通信。 数据在两个Socket间通过IO流传输。 Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应 阅读全文

posted @ 2017-02-17 19:08 LoaderMan 阅读(240) 评论(0) 推荐(0) 编辑

网络编程三要素之端口号

摘要: 每个程序在设备上的唯一标识 每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。 端口号范围从0-65535 编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。 常用端口 mysql: 3306 oracle: 阅读全文

posted @ 2017-02-17 19:07 LoaderMan 阅读(466) 评论(0) 推荐(0) 编辑

网络编程之协议

摘要: 为计算机网络中进行数据交换而建立的规则、标准或约定的集合。 UDP 面向无连接,数据不安全,速度快。不区分客户端与服务端。 TCP * 面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。 三次握手: 客户端先向服务端发起请求, 服务端响应请求, 传输数据 面向无连接,数据不安全,速度快。 阅读全文

posted @ 2017-02-17 19:07 LoaderMan 阅读(169) 评论(0) 推荐(0) 编辑

网络编程三要素之IP

摘要: 用来标示我们计算机在互联网上的唯一性 每个设备在网络中的唯一标识 每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。 ipconfig:查看本机IP192.168.12.42 ping:测试连接192.168.40.62 本地回路地址:127.0.0.1 255.255. 阅读全文

posted @ 2017-02-17 19:06 LoaderMan 阅读(377) 评论(0) 推荐(0) 编辑

网络编程概述

摘要: 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。 阅读全文

posted @ 2017-02-17 19:05 LoaderMan 阅读(169) 评论(0) 推荐(0) 编辑

多线程中注意事项

摘要: 1、多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看 阅读全文

posted @ 2017-02-17 18:59 LoaderMan 阅读(9647) 评论(0) 推荐(5) 编辑

线程的生命周期

摘要: 阅读全文

posted @ 2017-02-17 18:58 LoaderMan 阅读(173) 评论(0) 推荐(0) 编辑

多线程实现第三种方式

摘要: import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class CallableDemo { publ... 阅读全文

posted @ 2017-02-17 18:57 LoaderMan 阅读(384) 评论(0) 推荐(0) 编辑

线程池《一》

摘要: 线程池概述 程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互。而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。在JDK5之前,我们必 阅读全文

posted @ 2017-02-17 18:55 LoaderMan 阅读(181) 评论(0) 推荐(0) 编辑

线程组

摘要: Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。 默认情况下,所有的线程都属于主线程组。 * public final ThreadGroup getThreadGroup()//通过线程对象获取他所属于的组 * public f 阅读全文

posted @ 2017-02-17 18:54 LoaderMan 阅读(211) 评论(0) 推荐(0) 编辑

线程间通信注意的问题

摘要: 在同步代码块中,用哪个对象锁,就用哪个对象调用wait方法 为什么wait方法和notify方法定义在Object这个类中? * 锁对象可以是任意对象,那么任意对象对应的类都是Object类的子类, * 也就是Object是所有的类的基类,所以将将方法定义在Object这个类中就会让任意对象对其调用 阅读全文

posted @ 2017-02-17 18:53 LoaderMan 阅读(220) 评论(0) 推荐(0) 编辑

互斥锁

摘要: 同步 * 使用ReentrantLock类的lock()和unlock()方法进行同步 通信 * 使用ReentrantLock类的newCondition()方法可以获取Condition对象 * 需要等待的时候使用Condition的await()方法, 唤醒的时候用signal()方法 * 不 阅读全文

posted @ 2017-02-17 18:53 LoaderMan 阅读(154) 评论(0) 推荐(0) 编辑

多个线程通信的问题

摘要: * notify()方法是随机唤醒一个线程 notifyAll()方法是唤醒所有线程 JDK5之前无法唤醒指定的一个线程 如果多个线程之间通信, 需要使用notifyAll()通知所有线程, 用while来反复判断条件 阅读全文

posted @ 2017-02-17 18:52 LoaderMan 阅读(168) 评论(0) 推荐(0) 编辑

二个线程间的通信

摘要: * a.什么时候需要通信 多个线程并发执行时, 在默认情况下CPU是随机切换线程的 如果我们希望他们有规律的执行, 就可以使用通信, 例如每个线程执行一次打印 * b.怎么通信 如果希望线程等待, 就调用wait() 如果希望唤醒等待的线程, 就调用notify(); 这两个方法必须在同步代码中执行 阅读全文

posted @ 2017-02-17 18:51 LoaderMan 阅读(204) 评论(0) 推荐(0) 编辑

死锁产生的原理

摘要: 概述: 就是多个线程在抢占CPU的执行权的时候,出现了相互等待的状态 当代码中出现了同步嵌套的时候,并且使用两个相同的锁,就容易发生死锁; 尽量不要嵌套使用 阅读全文

posted @ 2017-02-17 18:48 LoaderMan 阅读(642) 评论(0) 推荐(0) 编辑

线程安全问题

摘要: 当多个线程共同使用同一数据时候,可能会导致数据错乱,容易发生线程安全问题; 解决方案:使用同步代码块把需要一起运行的代码包裹起来,以达到数据安全的目的. Vector是线程安全的,ArrayList是线程不安全的 StringBuffer是线程安全的,StringBuilder是线程不安全的 Has 阅读全文

posted @ 2017-02-17 18:47 LoaderMan 阅读(240) 评论(0) 推荐(0) 编辑

多线程卖票代码

摘要: package com.loaderman.syn; public class Demo_Ticket { /** * 需求:铁路售票,一共100张,通过四个窗口卖完. */ public static void main(String[] args) { new Ticket().start(); new Ticke... 阅读全文

posted @ 2017-02-17 18:46 LoaderMan 阅读(267) 评论(0) 推荐(0) 编辑

同步方法

摘要: 使用synchronized关键字修饰一个方法, 该方法中所有的代码都是同步的 阅读全文

posted @ 2017-02-17 18:44 LoaderMan 阅读(172) 评论(0) 推荐(0) 编辑

同步代码块

摘要: 什么情况下需要同步 当多线程并发, 有多段代码同时执行时, 我们希望某一段代码执行的过程中CPU不要切换到其他线程工作. 这时就需要同步. 如果两段代码是同步的, 那么同一时间只能执行一段, 在一段代码没执行结束之前, 不会执行另外一段代码. 作用: 保证了数据的安全性 弊端: 程序的运行效率低 格 阅读全文

posted @ 2017-02-17 18:42 LoaderMan 阅读(378) 评论(0) 推荐(0) 编辑

线程的优先级

摘要: 设置线程的优先级 setPriority()设置线程的优先级 阅读全文

posted @ 2017-02-17 18:40 LoaderMan 阅读(227) 评论(0) 推荐(0) 编辑

礼让线程

摘要: 礼让线程 yield让出cpu 阅读全文

posted @ 2017-02-17 18:38 LoaderMan 阅读(352) 评论(0) 推荐(0) 编辑

加入线程

摘要: 加入线程 join(), 当前线程暂停, 等待指定的线程执行结束后, 当前线程再继续 join(int), 可以等待指定的毫秒之后继续 阅读全文

posted @ 2017-02-17 18:37 LoaderMan 阅读(266) 评论(0) 推荐(0) 编辑

守护线程

摘要: 守护线程 setDaemon() Thread t1 = new Thread() { public void run() { for(int i = 0; i < 50; i++) { System.out.println(getName() + "...aaaaaaaaaaaaaaaaaaaaaa"); try { ... 阅读全文

posted @ 2017-02-17 18:36 LoaderMan 阅读(267) 评论(0) 推荐(0) 编辑

休眠线程

摘要: 休眠线程 Thread.sleep(毫秒,纳秒), 控制当前线程休眠若干毫秒1秒= 1000毫秒 1秒 = 1000 * 1000 * 1000纳秒 阅读全文

posted @ 2017-02-17 18:35 LoaderMan 阅读(325) 评论(0) 推荐(0) 编辑

多线程的方法和类别

摘要: 获取名字 * 通过getName()方法获取线程对象的名字 设置名字 * 通过构造函数可以传入String类型的名字 获取当前线程的对象 *Thread.currentThread(), 主线程也可以获取 阅读全文

posted @ 2017-02-17 18:34 LoaderMan 阅读(229) 评论(0) 推荐(0) 编辑

匿名内部类实现线程的二种方式

摘要: 继承Thread类 实现Runnable接口 阅读全文

posted @ 2017-02-17 18:33 LoaderMan 阅读(221) 评论(0) 推荐(0) 编辑

多线程的二种区别

摘要: 查看源码的区别: * 继承Thread : 由于子类重写了Thread类的run(), 当调用start()时, 直接找子类的run()方法 * 实现Runnable : 构造函数中传入了Runnable的引用, 成员变量记住了它, start()调用run()方法时内部判断成员变量Runnable 阅读全文

posted @ 2017-02-17 18:32 LoaderMan 阅读(130) 评论(0) 推荐(0) 编辑

多线程实现的二种方式

摘要: 继承Thread * 定义类继承Thread * 重写run方法 * 把新线程要做的事写在run方法中 * 创建线程对象 * 开启新线程, 内部会自动执行run方法 实现Runnable * 定义类实现Runnable接口 * 实现run方法 * 把新线程要做的事写在run方法中 * 创建自定义的R 阅读全文

posted @ 2017-02-17 18:31 LoaderMan 阅读(124) 评论(0) 推荐(0) 编辑

导航