07 2021 档案
摘要:动态&静态语言 动态语言: 是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。 主要动态语言:Object-C、C#、 JavaScript、PHP、 Python等。 静态语言
阅读全文
摘要:注解 Annotation 不是程序本身,对程序做出解释 可以被其他程序(如编译器)读取 package test3; public class AnnotationDemo extends Object{ @Override //重写的注释 public String toString() { r
阅读全文
摘要:URL统一资源定位符 五大部分: 协议://IP:端口/项目名/资源 package inet; import java.net.MalformedURLException; import java.net.URL; public class URLDemo1 { public static voi
阅读全文
摘要:class TalkSend implements Runnable: package chat; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.DatagramPacket; imp
阅读全文
摘要:发送端: package chat; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; im
阅读全文
摘要:Socket使用的tcp连接,需要先连接之后才能发送数据。 DatagramSocket使用的UDP连接,客户端不需要先连接数据,可以直接发送给指定服务端。 发送端: package inet; import java.net.DatagramPacket; import java.net.Data
阅读全文
摘要:客户端: package inet; import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Sock
阅读全文
摘要:BufferedInputStream-BufferedOutputStream 字节缓冲输入输出流是粗管道 测试BufferedInputStream读速度: package testIO; import java.io.BufferedInputStream; import java.io.Fi
阅读全文
摘要:字节输入流: package com.kaka.testio; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Scanner; p
阅读全文
摘要:字节流:可以读取一切文件(以下为字节流内容) 字符流:读取纯文本文件比较方便,已经处理了乱码问题 文件创建 package testIO; import java.io.File; import java.io.IOException; public class FileTest { public
阅读全文
摘要:客户端 package inet; import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.Unknow
阅读全文
摘要:package inet; import java.net.InetSocketAddress; public class TestInetSocketAddress { public static void main(String[] args) { InetSocketAddress inetS
阅读全文
摘要:package inet; import java.awt.*; import java.net.InetAddress; import java.net.UnknownHostException; //测试ip public class TestInetAddress { public stati
阅读全文
摘要:测试代码: package com.kaka.thread; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executor
阅读全文
摘要:package com.kaka.thread; //测试生产者消费者问题2 >信号灯法:标志位 public class TestPC2 { public static void main(String[] args) { TV tv=new TV(); new Actor(tv).start()
阅读全文
摘要:理解: 生产者将生产好的数据放入缓冲区 , 消费者从缓冲区拿出数据。通过判断缓冲区大小来决定生产者何时生产,消费者何时消费。只要缓冲区有产品,消费者就可以消费。只要缓冲区不满,生产者就可以生产。 模型: 生产者 : 负责生产数据的模块 (可能是方法 , 对象 , 线程 , 进程) ; 消费者 : 负
阅读全文
摘要:显式的定义锁 CopyOnWriteArrayList类中也有ReentrantLock(可重入锁) //定义lock锁 ReentrantLock lock=new ReentrantLock(); //加锁 lock.lock(); //解锁 lock.unlock(); package tes
阅读全文
摘要:化妆的例子 两个女生同时要化妆,需要用口红和镜子: 当女孩1拿到口红时,1秒后需要拿到镜子,才能解除对口红的锁(即:同步块中嵌套类一个同步块) 同一时间下女孩2拿到镜子,2秒后需要拿到口红才能解除对镜子的锁 因此两方僵持住了,形成了死锁 package test2; public class Dea
阅读全文
摘要:package test2; import java.util.concurrent.CopyOnWriteArrayList; //测试GUC安全类型的集合 public class TestGUC { public static void main(String[] args) { CopyOn
阅读全文
摘要:同步方法-买票的例子: package com.kaka.thread; import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer; public class BuyTicket { public static void main
阅读全文
摘要:线程分类 守护线程:虚拟机不用等待守护线程执行完毕(如:后台操作日志、监控内存、垃圾回收等) 用户线程:虚拟机必须保护用户线程执行完毕 package com.kaka.thread; //上帝守护你 public class TestDaemon { public static void main
阅读全文
摘要:线程优先级 NORM_PRIORITY=5 MAX_PRIORITY=10 MIN_PRIORITY=1 package com.kaka.thread; public class TestPriority implements Runnable{ public static void main(S
阅读全文
摘要:线程五大状态 package com.kaka.thread; //观察测试线程状态 public class StateThread { public static void main(String[] args) throws InterruptedException { //此处用了lambd
阅读全文
摘要:stop()不推荐使用 package test2; public class TestStop implements Runnable{ private boolean flag=true; @Override public void run() { int j=0; while(flag){ S
阅读全文
摘要:静态代理模式 真实对象(目标对象)和代理对象都要实现同一个接口 代理对象要代理真实角色 好处: 1.代理对象可以做很多真实对象做不了的事情 2.真实对象专注做自己的事情 package test2; public class StaticProxy { public static void main
阅读全文
摘要:1.1)lambda好处: 避免匿名内部类定义过多 代码看起来更简洁 去掉没有意义的代码,只留核心逻辑 1.2)函数式接口functional interface 定义:接口中只包含唯一的一个抽象方法 可以通过lambda表达式来创建函数式接口 2.1)原始代码: package test2; //
阅读全文
摘要:多线程下载图片 package test2; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.net.URL; import java.util.
阅读全文
摘要:实现runnable接口 package test1; public class TestThread3 implements Runnable { //主线程,main线程 public static void main(String[] args) { //创建一个runnable实现接口对象
阅读全文
摘要:程序 进程 线程 一个进程process可以有多个线程thread,如视频中同时听声音、看图像、看弹幕等 程序是一个静态概念 进程是动态概念 一个进程可以包含多个线程,至少一个线程 线程是cpu调度和执行的单位 线程创建方式 继承Thread类 Thread class 实现Runnable接口 实
阅读全文
摘要:frame是一个顶级窗口 panel无法单独显示,必须添加到某个容器中 大小、定位、颜色、可见性、监听! (以下例子大部分未写监听,无法关闭) frame package kaka; import java.awt.*; //GUI的第一个界面 public class TestFrame { pu
阅读全文
摘要:throws关键字表示:本函数中存在某个异常但是我不知道,如果出现此异常就抛给调用者。 throw一般和判断语句if配合的多表示:如果满足条件就结束此函数并向调用者抛出异常,否则就继续执行接下来的代码。
阅读全文
摘要:区别: 首先接口和抽象类的设计目的就是不一样的。接口是对动作的抽象,而抽象类是对根源的抽象。 对于抽象类,比如男人,女人这两个类,那我们可以为这两个类设计一个更高级别的抽象类--人。 对于接口,我们可以坐着吃饭,可以站着吃饭,可以用筷子吃饭,可以用叉子吃饭,那么可以把这些吃饭的动作抽象成一个接口--
阅读全文
摘要:注意事项: 多态是方法的多态,属性没有多态 父类和子类有联系 存在的条件:继承关系,方法需要重写,父类引用指向子类 instanceof 详细内容参考 static 一些问题? 网上四个不同的解释如下: 第一个: 第二个,第三个: 第四个:
阅读全文
摘要:重写:需要有继承关系,子类重写父类的方法 方法名必须相同,方法体不同 参数列表必须相同 修饰符:范围可以扩大 public>Protected>Default>private (但是注意父类方法是private的子类就无法继承该方法) 抛出的异常:范围可以缩小但不能扩大 有static修饰: 无st
阅读全文
摘要:所有的类都直接或者间接的继承object类 子类继承了父类,就会拥有父类的所有方法 私有的东西无法被继承 super注意点 super调用父类的构造方法,必须在构造方法的第一个 super必须只能出现在子类的方法或者构造方法中 super和this不能同时调用构造方法 super与this区别 代表
阅读全文
摘要:快捷键:alt+insert 自动生成get/set方法 封装的意义 提高程序的安全性,保护安全 隐藏代码的实现细节 统一接口 系统可维护性增加
阅读全文