随笔分类 - JavaSE
摘要:反射-理解Class类并获取Class实例 一、class 类介绍 在 Object 类中定义了以下的方法,此方法将被所有子类继承 public final native Class<?> getClass(); getClass 方法返回值的类型是一个 Class类,此类是Java反射的源头,实际
阅读全文
摘要:反射机制 一、静态 & 动态语言 动态语言 是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码在运行时可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。 主要动态语言:Object-C、C#、 JavaScript、PHP、 P
阅读全文
摘要:注解 一、注解入门 Annotation 是 jdk1.5 开始引入的新技术。 Annotation的作用: 不是程序本身,可以对程序作出解释; 可以被其他程序(例如编译器)读取。 Annotation的格式 “@注解名”,也可以带参数,例如: @SuppressWarnings(value=“un
阅读全文
摘要:线程池 背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。 思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具。 好处: 提高响应速度(减少了创建新线程的时间); 降低资源消耗(重复利用线
阅读全文
摘要:线程通信问题 应用场景 : 生产者和消费者问题 假设仓库中只能存放一件产品 , 生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费。 对于生产者:如果仓库中没有产品 , 则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止。 对于消费者:如果仓库中放有产品 , 则消费
阅读全文
摘要:线程死锁 多个线程抱着对方需要的资源形成僵持状态 多个线程各自占有一些共享资源,并且互相等待被其他线程占有的资源,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。 某一个同步块同时拥有“两个以上对象的锁"时,就可能会发生“死锁”的问题。 package com.gcbeen.threa
阅读全文
摘要:线程 Lock 锁 JUC安全集合类型扩充 package com.gcbeen.thread; import java.util.concurrent.CopyOnWriteArrayList; // 测试JUC安全类型的集合 public class TestThreadJuc { public
阅读全文
摘要:线程 synchroized synchroized 同步方法 由于我们可以通过 private关键字来保证数据对象只能被方法访问,所以我们只需要针对方法提岀一套机制,这套机制就是 synchronized 关键字。它包括两种用法 synchronized方法和 synchronized 块。 同步
阅读全文
摘要:线程同步 介绍 多个线程操作同一个资源 线程同步 现实生活中我们会遇到“同—个资源,多个人都想使用”的问题,比如食堂排队打饭,每个人都想吃饭,最天然的解決办法就是:排队,一个个来。 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象这时候我们就需要线程同步。线程同步其实就是一种等
阅读全文
摘要:线程状态 一、线程的五大状态 二、线程方法 停止线程 不推荐使用 JDK 提供的 stop、destroy 方法。这两个方法已经废弃。 推荐线程自己停止下来。建议使用一个标识位 flag 进行终止线程。当 flag = false时,程序运行结束,线程自动结束,就终止线程运行。 package co
阅读全文
摘要:线程与静态代理模式以及创建接口对象的简写方法 静态代理模式 静态代理是多线程底部的原理,在 Java 中线程的设计就使用了静态代理设计模式,其中自定义线程类及Thread类都是实现了Runable接口。 在创建子线程的时候,传入了自定义线程类的引用,再通过调用start()方法,调用自定义线程对
阅读全文
摘要:线程实现 线程的创建(三种方式) 1.继承 Thread 类(重要) 自定义线程类继承Thread类; 重写run()方法,编写线程执行体; 创建线程对象,调用start()方法启动线程。 package com.gcbeen.thread; // 创建线程方式一:继承Thread类,重写run()
阅读全文
摘要:线程简介 一、多任务 现实中太多这样同时做多件事情的例子了,看起来是多个任务都在做,其实本质上我们的大脑在同一时间依旧只做了一件事情。 二、多线程 原来是一条车道,车多了后,道路阻塞,效率极低。为了提高使用的效率,于是加了多个车道。 普通方法调用和多线程 三、程序.进程.线程 一个进程可以有多个线程
阅读全文
摘要:网络编程-Java输入输出流 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样,如下图: 通过数据流、序列化和文件系统提供
阅读全文
摘要:网络编程-TCP 建立连接 与 终止连接 建立 TCP 连接 TCP是因特网中的传输层协议,使用三次握手协议建立连接。当客户端发出SYN连接请求后,等待服务器端回答SYN+ACK,并最终对服务器端的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变
阅读全文
摘要:网络编程-IP地址的分类 网络中有多台计算机,它们必须通过某种标识来区分每一台机器,这个用于区分的标识这就是IP地址; IP地址由4个数字组成,形如“192.168.1.1”。(其实是4个字节的二进制数,共32位)。 在网络中寻找某一台计算机都是依靠它的IP地址。(用域名或计算机名定位主机其实也是通
阅读全文
摘要:网络编程-TCP UDP URL TCP 先启动服务端,再启动客户端!!!! 1.TCP 基本实现 客户端 连接服务器 Socket 发送消息 package com.gcbeen.net; import java.io.IOException; import java.io.OutputStrea
阅读全文
摘要:网络编程 一、概述 简单地说,计算机网络就是把一些计算机相互连接起来。实现资源共享和信息传递。 计算机网络的正式定义是这样的: 利用通信线路和通信设备,将地理位置不同的、功能独立的多台计算机互连起来,以功能完善的网络软件来实现资源共享和信息传递,就构成了计算机网络系统。 目的是:资源共享 和 信息传
阅读全文
摘要:异常 一、什么是异常 实际工作中,遇到的情况不可能是非常完美的。比如: 你写的某个模块,用户输入不一定符合你的要求 你的程序要打开某个文件,这个文件可能不存在或者文件格式不对 你要读取数据库的数据,数据可能是空的 我们的程序在跑着,内存或硬盘可能满了 软件程序在运行过程中,非常可能遇到这些异常问题,
阅读全文
摘要:类中的关键字 super 与 this 作区分作用 super 表明 是 父类的 构造器 或者 方法 或者 属性 this 表明 是 本身类的 构造器 或者 方法 或者 属性 public class Pet { protected String name = "pet"; public Pet()
阅读全文