实操
白云天上飘
这个作者很懒,什么都没留下…
展开
-
观察者模式
* 观察者模式:主要用于1:N的通知。 * 当一个对象(目标对象)的状态变化时,需要及时告知一系列对象(观察者对象),令他们做出响应。 * 就比如网上聊天,你发一条消息,其他人那里收到相同的消息内容。 *方式: * 1.推:每次都会把通知以广播方式发送给所有观察者,所有观察者只能被动接收。 * 2.拉:观察者只要知道有情况即可,至于什么时候获取内容,获取什么内容,都可以自主决定。下...原创 2019-03-28 23:44:53 · 122 阅读 · 0 评论 -
网络编程之IP地址----InetAddress类
* IP地址:用来标识网络中的一个通信实体的地址,通信实体可以是计算机、 * 路由器等,比如互联网的每个服务器都要有自己的IP地址,而每个局域网 * 的计算机要通信也要配置IP地址,路由器是连接两个或多个网络的网络设备。 * 总的来说就是定位节点的:可以是计算机、路由、通讯设备等 *分类:IPV4:32位地址,如:192.168.0.1 * IPV6:128位,因为...原创 2019-03-23 16:26:31 · 380 阅读 · 0 评论 -
多线程目录
了解多线程、三种创建多线程的方式以及一些方法多线程下载图片静态代理设计模式推导lambda--简化线程代码线程状态线程优先级守护线程并发、同步方法、同步块、锁容器并发之死锁线程协作:生产者消费者模式任务定时调度...原创 2019-03-23 16:26:18 · 142 阅读 · 0 评论 -
IO流目录
IO流分类了解(概念)以及文本输入输出流字符集,编码解码文件的拷贝以及封装成工具类字节数组流处理流(概念)以及装饰器模式处理流之缓冲流对接流处理流之数据流处理流之对象流处理流之转换流处理流之打印流文件分割、合并、序列流IO-Commons-fileUtils...原创 2019-03-22 16:50:07 · 129 阅读 · 0 评论 -
面向对象目录
抽象类和接口数组扩容、拷贝,二维数组多态和关键字final继承与重写,关键字super内部类封装包装类概念,常用integer,stringBuilder,string方法冒泡排序和二分法(折中法)查找集合(容器),collection,泛型,comparable接口用容器(集合)来存储表格数据时间类,日期(日历)类异常(概念)file类、递归打印文...原创 2019-03-22 16:31:03 · 104 阅读 · 0 评论 -
控制语句
控制语句:if: int a = 2; int b = 3; int c = 4; if (a > 0) { System.out.println(a); } else if (a > b) { System.out.println(b); } else { System.out.println(c); }控...原创 2019-03-22 14:29:47 · 75 阅读 · 0 评论 -
运算符
* 算术运算符:二元运算符:+,-,*,/,% 一元运算符:++,-- 赋值运算符:= * 扩展运算符:+=,-=,*=,/=,%= 关系运算符:==,!=,>,<,<=,>= * 逻辑运算符:&(或),|(与),!(非),^(异或);短路:&&,||,优先级:逻辑非>逻辑与>逻辑或 * 位运算符:&,|,^,~...原创 2019-03-22 13:56:57 · 76 阅读 · 0 评论 -
单例模式以及5种实现方式
单例模式:在多线程环境下,对外存在一个对象,并且提供一个访问该实例的全局访问点。说白了就是给类“计划生育”,对外只能有一个。应用场景: * 常见应用场景: * 1.Windows的Task Manager(任务管理器)就是典型的单例模式:启动多次都是一个管理器。 * 2.Windows的回收站也是单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个实例。 * 3.项目...原创 2019-03-19 17:18:11 · 546 阅读 · 0 评论 -
任务定时调度
java.util.Timer:类似闹钟的功能,本身实现的就是一个线程 * java.util.TimerTask:一个抽象类,该类实现了Runnable接口,所以具备多线程的能力import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Timer;import java.util.T...原创 2019-03-19 17:18:29 · 108 阅读 · 0 评论 -
线程协作:生产者消费者模式
线程协作:生产者消费者模式:这个模式不是类与类的模式, * 是处理线程协作的模型,处理线程通信的问题。 * 生产者与消费者共享同一资源,并且生产者和消费者之间互相依赖, * 互为条件:1.对于生产者,没有生产产品之前,要通知消费者等待, * 生产了之后通知消费者消费; * 2.对于消费者,在消费之后,要通知生产者已经消费完了, * 需...原创 2019-03-19 17:18:03 · 187 阅读 · 0 评论 -
并发之死锁
并发之死锁:一个同步块同时拥有两个以上对象的锁就有可能发生死锁; * 因为都在等待着对方释放资源而停止执行。 * 模拟:大丫有镜子,小丫有口红,大丫想要小丫的口红, * 小丫想要大丫的镜子,互不退让。//口红class Lipstick{}//镜子class Mirror{}//化妆class Markup implements Runnable{ ...原创 2019-03-18 22:01:44 · 110 阅读 · 0 评论 -
并发、同步方法、同步块、锁容器
什么是并发?怎么解决?并发:会导致线程不安全,数据混乱,比如负数。 * 当多个线程同时操作一个对象就会出现并发问题。 * 怎么解决:现实生活中,当多个人买一样东西或者结账的时候,我们都是排队, * 可以用这个思维。但我们怎么知道上一个线程使用完没,这个可以用一个锁来表示; * 就好像我们住宾馆的时候,我们住的时候会得到一张卡,凭卡进,退房的时候就把卡 * 还给宾馆,这个...原创 2019-03-18 21:37:20 · 178 阅读 · 0 评论 -
守护线程
守护线程:1.线程分为用户线程和守护线程; * 2.JVM必需确保用户线程执行完毕,而不用等待守护线程执行完毕; * 3.是为用户线程服务的; * 4.比如后台记录操作日志、监控内存使用等在西方都信仰上帝守护人民,拿这个写一个例子:写一个people类,一个god类,都实现runnable接口class Peolpe impl...原创 2019-03-18 21:13:58 · 71 阅读 · 0 评论 -
网络编程之端口----InetSocketAddress类以及通过命令查看端口冲突
* 端口:IP地址是用来区分计算机,那么端口就是来区分计算机里的软件的。 * 端口是一个虚拟的概念,不代表主机里真的有多个端口。端口表示的是 * 一个16位的二进制整数,2个字节,对应十进制的0-65535,两个传输协议: * TCP UDP,同一个协议端口不能冲突。 * 公认端口:0-1023:比如80是分配给www,21端口分配给FTP * 注册端口:102...原创 2019-03-23 16:26:42 · 993 阅读 · 0 评论 -
网络编程之URL以及下载资源403错误解决方式
* URL:IP定位计算机,端口定位计算机里的软件,那么URL是定位软件里的资源。 * URL是属于URI的分类,下面还有URN: * URI:统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。 * URL:统一资源定位符,一种定位资源的主要访问机制的字符串,一个 * 标准的URL必须包含:协议、存放资源的主机域名、端口号(默认80)、资源文件名 * ...原创 2019-03-23 16:26:53 · 3587 阅读 · 0 评论 -
传输协议,TCP、UDP编程的基本步骤
概念* 传输协议:TCP UDP * TCP:一种面向连接的、可靠的、基于字节流的运输层通信协议,特点: * 面向连接;点到点的通信;高可靠性;占用系统资源多、效率低。 * 就像打电话:拨通、说喂、确认。这就是三次握手。 *UDP:一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,特点: * 非面向连接,传输不可靠,可能丢失;发送不管对方是否准...原创 2019-03-23 16:27:02 · 207 阅读 · 0 评论 -
代理模式
什么是代理模式?* 代理模式: * 核心作用:通过代理,控制对对象的访问。可以详细控制访问某个(某类)对象, * 在调用这个方法前做前置处理,调用这个方法后做后置处理(即AOP的微观实现)。 * AOP:面向切面编程的核心机制就是代理。 * 现实中,经纪人就是一个代理,一个歌手的经纪人需要在歌手唱歌前跟别人面谈、 * 签合同、安排事宜,然后歌手只需要唱歌,之后收尾款这都是...原创 2019-03-28 22:15:05 · 115 阅读 · 0 评论 -
适配器模式
* 适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式使得 * 原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 * 模式中的角色: * 1.目标接口(target):客户所期待的接口,目标可以是具体的或抽象的类,也可以是接口。 * 2.需要适配的类(adaptee):需要适配的类或适配者类。 * 3.适配器(adapter):通过包装一个需要适配的对...原创 2019-03-28 17:47:56 · 106 阅读 · 0 评论 -
原型模式,也叫克隆、拷贝模式,深克隆浅克隆
概念: * 原型模式:也可以说是克隆模式。 * 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以用原型模式。 * 就是java的克隆技术,以某个对象为原型,复制出新的对象,显然,新的对象具备原型对象的特点。 * 优势:效率高:直接克隆,避免了重新执行构造过程步骤。 * 克隆不同于new,new出来的对象属性是默认值,克隆出来的属性完全和原型相同,并且修改不会影...原创 2019-03-27 16:33:04 · 240 阅读 · 0 评论 -
建造者模式
* 建造者模式:建造一个复杂的产品,比如:飞船,要生产部件,还要装配。 * 建造模式分离了对象子组件的单独构造(Builder负责)和装配(Director), * 从而可以构造复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。 * 由于实现了构建和装配的解耦,不同的构建器,相同的装配,也可以做出不同的对象; * 相同的构建器,不同的装配顺序也可以做出不同...原创 2019-03-27 15:23:08 · 72 阅读 · 0 评论 -
工厂模式三大分类
* 工厂模式:实现创建者和调用者的分离。 * 分类: * 1.简单工厂模式 * 2.工厂方法模式 * 3.抽象工厂模式简单工厂模式,就以造车为例:首先有个车接口,有个跑的方法:public interface Car { void run();}然后有两个实现类:public class Audi implements Car{ ...原创 2019-03-27 15:17:42 · 4616 阅读 · 0 评论 -
自定义注解以及使用注解完成类与表结构的映射关系
*自定义注解:1.使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口 * 2.格式:public @interface 注解名{定义体} * 3.其中的每一个方法实际上是声明了一个配置参数: * a.方法的名称就是参数的名称. * b.返回值类型就是参数的类型(返回值类型只能是基本类型、cla...原创 2019-03-26 21:27:41 · 706 阅读 · 0 评论 -
反射机制性能问题,反射操作泛型、注解
性能问题:* 反射机制性能问题:反射使代码灵活,提高了开发效率,也带来了性能问题,运行效率。 * 反射的对象在使用是会有安全检查,我们可以通过setAccessible方法来 * 启用和禁用访问安全检查的开关,true:取消访问检查,false:实施访问 * 检查。禁止安全检查,可以提高反射的运行速度。 field.setAccessible(true);//不需要安...原创 2019-03-26 21:26:49 · 293 阅读 · 0 评论 -
注解、内置注解
注解是什么?在哪里用?* 注解Annotation: * 1.从JDK5.0开始引入的新技术; * 2.不是程序本身,是对程序进行解释;和注释不同的是可以被其他程序 * (比如:编译器等)读取。 * 格式:@注释名,还可以添加一些参数值 * 在哪里用:可以附加在package,class,method,field等上面,还可以通过 * 反射机制编程实现对这些元数据的访问。...原创 2019-03-26 20:07:25 · 362 阅读 · 0 评论 -
多线程环境测试单例5种实现方式的效率
写一段代码来测试:public class Test2 { public static void main(String[] args) throws InterruptedException { long start = System.currentTimeMillis(); /* 下面这么写是有问题的,因为这是多线程,当main线程...原创 2019-03-26 19:57:11 · 284 阅读 · 0 评论 -
反射和反序列化破解单例模式以及解决方案
* 反射和反序列化可以破解除了枚举之外的4种实现方式。反射破解单例: TestDcl dcl1 = TestDcl.getInstance(); TestDcl dcl2 = TestDcl.getInstance(); System.out.println(dcl1); System.out.println(dcl2)...原创 2019-03-26 19:51:40 · 260 阅读 · 0 评论 -
TCP双向登录、多线程登录、文件传输
客户端和服务端是两个类文件传输://客户端 public static void file() throws IOException{ //1 Socket socket = new Socket("localhost",8888); //2 InputStream is = new BufferedInputStream...原创 2019-03-23 16:27:26 · 175 阅读 · 0 评论 -
UDP传输基本数据类型、对象、文件
接收端和发送端是两个类。基本数据类型://发送端 public static void clientData() throws Exception { DatagramSocket client = new DatagramSocket(8888); ByteArrayOutputStream baos = new ByteArrayOutputStre...原创 2019-03-23 16:27:09 · 2305 阅读 · 1 评论 -
线程状态
线程状态:5大状态:新生、就绪、运行、阻塞、死亡 * 新生:线程对象创建就进入新生状态,每个线程有自己的工作内存。 * 就绪:调用了start方法就进入就绪状态,但不代表会被立即调度;阻塞事件解除,进入就绪状态; * 运行时调用yield(礼让线程,暂停,让出CPU的调度,等待调度)方法,进入就绪状态;jvm * 将CPU从本地线程切换到其他线程,进入就绪状态。...原创 2019-03-18 20:59:03 · 79 阅读 · 0 评论 -
文件分割、合并、序列流
文件分割:下载工具就是用这个原理来下载的;比如一部电影,有5个人同时在下,那么就把 * 这个电影分割成5部分,每人下一部分然后再合起来,这就是为什么下载这么快。 * 但是必需先对这个文件进行分割。 * randomAccessFile:随机访问:支持读取和写入随机访问文件 * sequenceInputStream:序列流,用于文件的合并分割文件 //分割...原创 2019-03-13 19:24:19 · 273 阅读 · 0 评论 -
递归,使用递归遍历目录结构和树状展现
import java.io.File;/** * 递归结构:递归就是自己调用自己,分为两部分: * 1.递归头:什么时候不调用自己,如果没有头,会陷入死循环 * 2.递归体:什么时候需要调用自己 * 递归遍历目录结构和树状展现 */public class TestRecursion { public static void main(String[] ar...原创 2019-03-10 01:12:22 · 306 阅读 · 0 评论 -
map,以及底层存储分析
本章内容:map的底层原理,底层存储过程,hashmap\treemap的使用map(键值对):有hashMap实现类:hashMap底层实现了哈希表,这是一个非常重要的数据结构。 * 哈希表:基本结构是“数组+链表”,将两个的优点结合起来了。 * 链表:指的是entry类型的对象,每一个entry对象就是一个单向链表结构,存储结...原创 2019-03-10 01:11:08 · 491 阅读 · 0 评论 -
迭代器和collections工具类的使用
注意:collections和集合colletion是不一样的,collections是工具类,别搞混了。import java.util.*;collecions工具类的使用 List<Integer> list = new ArrayList<>(); list.add(2); list.add(3); l...原创 2019-03-10 01:06:42 · 79 阅读 · 0 评论 -
file类、递归打印文件名称、获取文件大小
file类是以抽象的方式代表文件名和目录路径名,用于文件和目录的创建,文件查找和文件删除等,所以不可直接对文件里面的内容进行操作,需要学IO流之后才能学到。import java.io.File;import java.io.IOException;import java.util.Date;file类的一些基本方法 File f = new File("F:\\a...原创 2019-03-10 01:00:35 · 441 阅读 · 0 评论 -
时间类,日期(日历)类
本章内容:时间类。日期类的一些常用方法,时间和字符串之间的转换时间类Date:用long类型来表示时间 * DateFormat:实现时间和字符串之间的转换,不能新建,因为是个抽象类 * 日历(期)类:calender要导的包import java.text.DateFormat;import java.text.ParseException;import java.tex...原创 2019-03-10 00:51:28 · 190 阅读 · 0 评论 -
用容器(集合)来存储表格数据
本章内容:如标题要导的包:import java.util.*;直接看代码:public class testCollectionSaveTableData { public static void main(String[] args) { Map<String,Object> row1 = new HashMap<>(); ...原创 2019-03-10 00:41:15 · 281 阅读 · 0 评论 -
集合(容器),collection,泛型,comparable接口
本章内容:已经有数组了为什么有集合;集合的子类特性以及实现;泛型是什么;comparable接口的简单使用泛型:帮助我们建立类型安全的集合。本质是“数据类型的参数化”,可以理解为是形参。 * 需要集合的原因:因为数组不灵活的特性,比如长度要先定好,但是实际上写的时候不知道有多少数据。 * 容器(集合)collection:interface修饰,下面有set和list两个子类,也是in...原创 2019-03-10 00:38:01 · 135 阅读 · 0 评论 -
冒泡排序和二分法(折中法)查找
本章内容(一个类的代码,上下能看懂)冒泡排序的概念和实现与优化,二分法的概念和实现:排序:冒泡排序:数据之间两两比较,大的放后面,直到比较出最大的那个出来,然后继续循环比较。 * 优化:有时会出现已经排序好了,但依然循环的情况,这时就要判断是否还在进行比较, * 如果没有比较说明排序已经好了,可以跳出循环了 * 查找:二分法查找(折半查找):需要数组已经排序好了;将整...原创 2019-03-10 00:05:45 · 711 阅读 · 0 评论 -
包装类概念,常用integer,stringBuilder,string方法
本章内容(一个类里的代码,上下能读懂)为什么有包装类;数据自动拆装箱;缓存问题;string,stringBuilder,的基本方法,数字,字符串与与对象的相互转换:包装类:我们经常使用的基本数据类型不是对象,但在实际应用中经常需要将基本数据转化成对象, * 为了解决这个问题,设计了对应的八个类,这就是包装类。 * byte-Byte boolean-Boolean short-Sh...原创 2019-03-09 23:47:29 · 144 阅读 · 0 评论 -
继承与重写,关键字super
本章内容(以下代码都在一个类里,上下能读懂)/** * 继承与重写、super * 继承:子类继承父类,类只能单继承,接口可以多继承 * 重写:子类重写父类的方法,类名不同,方法名和形参相同, * 子类返回值小于等于父类,子类访问权限大于等于父类。 * super:可以通过super来访问父类中被子类覆盖的方法和属性 */先定义一个persi...原创 2019-03-09 23:25:27 · 217 阅读 · 0 评论