11 2021 档案

摘要:并发编程必须掌握的三个辅助类 CountDownLatch 倒计时计数器 countDownLatch.countDown() countDownLatch.await() package com.example.juc; import java.util.concurrent.CountDownL 阅读全文
posted @ 2021-11-30 20:16 Oh,mydream! 阅读(34) 评论(0) 推荐(0)
摘要:Callable接口实现 之前学过callable, 这次再学些不一样的东西 Callable vs. Runnable Callable 接口有返回值, Runnable 接口没有返回值 Callable 接口可以抛出异常, Runnable 接口不能抛出异常 一个重写call方法,一个重写run 阅读全文
posted @ 2021-11-30 11:26 Oh,mydream! 阅读(52) 评论(0) 推荐(0)
摘要:CopyOnWriteArraySet HashSet是多线程不安全的,建议使用CopyOnWriteArraySet package com.example.juc; import java.util.Set; import java.util.UUID; import java.util.con 阅读全文
posted @ 2021-11-30 10:20 Oh,mydream! 阅读(61) 评论(0) 推荐(0)
摘要:CopyOnWriteArrayList ArrayList是多线程不安全的,建议使用CopyOnWriteArrayList package com.example.juc; import java.util.List; import java.util.UUID; import java.uti 阅读全文
posted @ 2021-11-30 09:41 Oh,mydream! 阅读(32) 评论(0) 推荐(0)
摘要:简单工厂模式与工厂方法模式 简单工厂模式 优点:简单,代码量少,清晰 缺点:新增一个产品,工厂的代码不能做到零修改 工厂方法模式 优点:新增一个产品,代码可以做到零修改,只做扩展 缺点:代码量过多,繁杂 注意:实践中还是简单工厂模式更好用 简单工厂模式代码 package com.example.d 阅读全文
posted @ 2021-11-29 21:15 Oh,mydream! 阅读(53) 评论(0) 推荐(0)
摘要:彻底理解8锁 重点:锁 锁的是对象或者class模板, 静态方法锁的是class模板 1.初始情况 同一个对象,两个方法加锁,先“打电话”还是发短信? package com.example.juc; import java.util.concurrent.TimeUnit; public clas 阅读全文
posted @ 2021-11-29 15:40 Oh,mydream! 阅读(99) 评论(0) 推荐(0)
摘要:Lock版的生产者消费者的实现及问题 方法功能对应 synchronized Lock Condition wait() await() notifyAll() signalAll() package com.example.juc; import java.util.concurrent.lock 阅读全文
posted @ 2021-11-29 11:16 Oh,mydream! 阅读(38) 评论(0) 推荐(0)
摘要:传统的生产者消费者问题,防止虚假唤醒 注意点:wait需要被放进while代码块中,防止虚假唤醒 存在虚假唤醒代码: package com.example.juc; public class TestPc { public static void main(String[] args) { A a 阅读全文
posted @ 2021-11-27 18:00 Oh,mydream! 阅读(48) 评论(0) 推荐(0)
摘要:Lock vs synchronized Synchronzied 和 Lock 的主要区别如下: 存在层面:Syncronized 是Java 中的一个关键字,存在于 JVM 层面,Lock 是 Java 中的一个接口 锁的释放条件:1. 获取锁的线程执行完同步代码后,自动释放;2. 线程发生异常 阅读全文
posted @ 2021-11-27 16:41 Oh,mydream! 阅读(39) 评论(0) 推荐(0)
摘要:lock锁 三个实现类 可重入锁(普通)ReentrantLock 读锁ReentrantReadWriteLock.ReadLock 写锁ReentrantReadWriteLock.WriteLock fair和unfair 公平锁:严格执行先来后到 非公平锁:可以插队(默认) 默认非公平锁:如 阅读全文
posted @ 2021-11-27 16:19 Oh,mydream! 阅读(93) 评论(0) 推荐(0)
摘要:OOP思想实践-线程就是一个资源类,没有任何附属操作 不要把Ticket 写成一个Runnable接口的实现,最好用lambda表达式 package com.example.juc; public class SaleTicket { public static void main(String[ 阅读全文
posted @ 2021-11-27 11:23 Oh,mydream! 阅读(49) 评论(0) 推荐(0)
摘要:OOP七大原则 开闭原则:对扩展开放,对修改关闭 (如果增加模块,需要在原有设计上进行扩展,而不是直接修改) 里氏替换原则:继承必须确保超类所拥有的性质在子类中仍然成立(子类不应重写父类的属性和方法,而应该添加新的方法和属性) 依赖倒置原则:要面向接口编程,不要面向实现编程 (大佬写接口,开发将接口 阅读全文
posted @ 2021-11-27 10:27 Oh,mydream! 阅读(76) 评论(0) 推荐(0)
摘要:基础简介 sleep() 方法让当前线程停止运行一段时间,到期自动继续执行。 wait() 方法让线程停止运行,在 notify() 或 notifyAll() 后继续执行。 相同 sleep() 和 wait() 调用都会暂停当前线程并让出 CPU 不同 定义位置不同:sleep() 是线程类(T 阅读全文
posted @ 2021-11-26 21:48 Oh,mydream! 阅读(40) 评论(0) 推荐(0)
摘要:GUI编程 本来听完面试的时候不会用到,就想跳过,结果说到为什么学习,又把我留住了。 简介 GUI的核心技术:Swing/AWT, java 做GUI没有流行起来,这两个技术也没有流行起来 因为页面不美观 需要jre环境 80兆左右大小 为什么要学习:了解mvc的思想,了解监听 AWT Awt介绍 阅读全文
posted @ 2021-11-23 11:29 Oh,mydream! 阅读(69) 评论(0) 推荐(0)
摘要:URL下载 java里面什么东西都是流,文件流、输入流、输出流 URL (Uniform Resource Locator) 统一资源定位符 定位网络资源 DNS 域名解析:将域名解析为ip 格式 协议://ip地址:port/项目名/文件 URL类 package com.example.netw 阅读全文
posted @ 2021-11-20 11:26 Oh,mydream! 阅读(306) 评论(0) 推荐(0)
摘要:UDP实现聊天 虽然不完美。但基本实现通信 TalkSender.java package com.example.network; import lombok.SneakyThrows; import java.io.BufferedReader; import java.io.InputStre 阅读全文
posted @ 2021-11-20 10:33 Oh,mydream! 阅读(50) 评论(0) 推荐(0)
摘要:UDP实现循环接收输入 发送端: package com.example.network; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java 阅读全文
posted @ 2021-11-18 16:48 Oh,mydream! 阅读(203) 评论(0) 推荐(0)
摘要:UDP实现通信 1.创建连接 DatagramSocket 2.构建包 DatagramPacket 3.发送包 .send() 或接收包.receive() 发送方 package com.example.network; import java.net.DatagramPacket; impor 阅读全文
posted @ 2021-11-18 15:47 Oh,mydream! 阅读(168) 评论(0) 推荐(0)
摘要:初识Tomcat C/S 和B/S 服务端 自定义 S Tomcat S 客户端 自定义 C 浏览器 B 实践 下载apache-tomcat-8.5.15包,版本可以不同 进入apache-tomcat-8.5.15->bin->startup.bat 在浏览器中输入 localhost:8080 阅读全文
posted @ 2021-11-18 10:50 Oh,mydream! 阅读(40) 评论(0) 推荐(0)
摘要:TCP文件上传 服务器端: 确定接收地址--端口 监听连接 accept 获取输入流 将输入流写入文件输出流 通知客户端已完成接收 关闭资源 客户端: 建立连接 socket 读取文件流 将文件流写入socket输出流 结束输出流 shutdownOutput 等待客户端完成接收 关闭资源 服务器端 阅读全文
posted @ 2021-11-18 10:33 Oh,mydream! 阅读(43) 评论(0) 推荐(0)
摘要:TCP实现聊天 客户端: ​ 连接服务器 Socket ​ 发送消息 服务器端: ​ 建立服务器端口 ServerSocket ​ 等待连接 accept ​ 接收用户的消息 // TcpClientDemo01.java package com.example.network; import ja 阅读全文
posted @ 2021-11-17 20:57 Oh,mydream! 阅读(58) 评论(0) 推荐(0)
摘要:通信协议 协议:约定,比如我们都说普通话 网络通信协议:速率,传输码率,代码结构,传输控制 层级 应用层:软件,qq 传输层:通信 网络层:数据封包 数据链路层:硬件传输 TCP/IP协议:是一组协议 重要的协议: ​ TCP:(Transmission Control Protocol)传输控制协 阅读全文
posted @ 2021-11-16 16:53 Oh,mydream! 阅读(396) 评论(0) 推荐(0)
摘要:端口 端口概念 端口表示计算机上的一个程序的进程 不同的进程有不同的端口号,用来区分软件 被规定0-65535 TCP/UDP 65535*2 不同协议相同端口不冲突 端口分类: 公有端口: 0-1023 ​ HTTP:80 ​ HTTPS:443 ​ FTP:21 ​ SSH:22 ​ Telen 阅读全文
posted @ 2021-11-16 11:16 Oh,mydream! 阅读(113) 评论(0) 推荐(0)
摘要:java ip类 InetAddress package com.example.network; import java.net.InetAddress; import java.net.UnknownHostException; public class TestIp { public stat 阅读全文
posted @ 2021-11-16 10:32 Oh,mydream! 阅读(63) 评论(0) 推荐(0)
摘要:网络通信的要素 如何实现网络的通信? 通信双方的地址 ​ ip ​ port 规则:网络通信的协议 TCP/IP参考模型 OSI七层参考模型 TCP/IP四层概念模型 对应网络协议 应用层 应用层 HTTP/TFTP/FTP/NFS/WAIS/SMTP 表示层 Telnet/Rlogin/SNMP/ 阅读全文
posted @ 2021-11-16 08:53 Oh,mydream! 阅读(55) 评论(0) 推荐(0)
摘要:多线程总结 三种多线程类实现方法 package com.example.multi_thread; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public class Overview 阅读全文
posted @ 2021-11-15 21:05 Oh,mydream! 阅读(25) 评论(0) 推荐(0)
摘要:线程池 使用线程池的优势: 提高响应速度(减少了创建新线程的时间) 降低资源消耗(重复利用线程池中线程,不需要每次都创建) 便于线程管理 ​ corePoolSize: 核心池的大小 ​ maximumPoolSize: 最大线程数 ​ keepAliveTime: 线程没有任务时最多保持多长时间后 阅读全文
posted @ 2021-11-15 20:42 Oh,mydream! 阅读(33) 评论(0) 推荐(0)
摘要:信号灯法实现多线程通信 多线程接近尾声了,学习是一方面,练习也很重要 例子: 演员表演节目 观众观看 package com.example.multi_thread; import lombok.SneakyThrows; // 信号灯法实现肯德基购餐 public class TestPC2 { 阅读全文
posted @ 2021-11-15 17:40 Oh,mydream! 阅读(48) 评论(0) 推荐(0)
摘要:管程法实现线程通信 例子: 生产者只负责生产鸡 消费者只负责消费鸡 缓冲区负责存放鸡,有存入方法,缓冲区满了等待消费者消费,没有满生产者生产,通知消费者消费 缓冲区有弹出方法,缓冲区为空等待生产者生产,不为空通知生产者生产 代码 package com.example.multi_thread; i 阅读全文
posted @ 2021-11-15 15:52 Oh,mydream! 阅读(50) 评论(0) 推荐(0)
摘要:死锁 产生死锁的四个必要条件 互斥条件:一个资源每次只能被一个进程使用 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放 不剥夺条件:进程已获得的资源在未使用完之前,不能强行剥夺 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系 死锁示例 package com.exa 阅读全文
posted @ 2021-11-13 17:36 Oh,mydream! 阅读(35) 评论(0) 推荐(0)
摘要:CopyOnWriteArrayList JUC 并发领域的概念 JUC:java.util.concurrent package com.example.multi_thread; import java.util.concurrent.CopyOnWriteArrayList; public c 阅读全文
posted @ 2021-11-13 11:49 Oh,mydream! 阅读(14) 评论(0) 推荐(0)
摘要:同步方法及同步块 如果我们意识不到思维方式中的弱点,我们永远无法突破当前困境 上篇博客三大线程不安全例子中给出了不安全的示例,那如何才是安全的呢? 同步方法 synchronized关键字,同步,可以放在方法前 public synchronized void method(int args){} 阅读全文
posted @ 2021-11-13 11:37 Oh,mydream! 阅读(156) 评论(0) 推荐(0)
摘要:线程同步--三大线程不安全例子 概念 线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该地址进行操作,而其他线程又处于等待状态 锁机制 由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了冲突问题,为了保证数据在方 阅读全文
posted @ 2021-11-12 20:48 Oh,mydream! 阅读(135) 评论(0) 推荐(0)
摘要:守护线程 守护线程的例子搞的我很伤感,终有离世的一天,愿我们每天都能开心度过。 线程分为用户线程(main线程)和守护线程(gc 垃圾回收线程) 虚拟机必须确保用户线程执行完毕 虚拟机不用等待守护线程执行完毕 守护线程例子:后台记录操作日志、监控内存、垃圾回收等等 例子: package com.e 阅读全文
posted @ 2021-11-12 16:24 Oh,mydream! 阅读(31) 评论(0) 推荐(0)
摘要:线程优先级 弱肉强食在什么时代都适用,不要当绵羊,要当老虎 java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行 线程的优先级用数字来表示 ​ Thread.MIN_PRIORITY=1; ​ Thread.MAX_PRIORITY=10 阅读全文
posted @ 2021-11-12 11:47 Oh,mydream! 阅读(36) 评论(0) 推荐(0)
摘要:观测线程状态 线程状态 Thread.State NEW 尚未启动的线程处于此状态 RUNNABLE 在java虚拟机中执行的的线程处于此状态 BLOCKED 被阻塞等待监视器锁定的线程处于此状态 WAITING 正在等待另一个线程执行特定动作的线程处于此状态 TIMED_WAITING 正在等待另 阅读全文
posted @ 2021-11-12 09:02 Oh,mydream! 阅读(33) 评论(0) 推荐(0)
摘要:线程强制执行-join 强制执行就是插队 join合并线程,待次线程执行完成后,再执行其他线程,其他线程阻塞 代码 package com.example.multi_thread; public class TestJoin implements Runnable { @Override publ 阅读全文
posted @ 2021-11-11 17:03 Oh,mydream! 阅读(40) 评论(0) 推荐(0)
摘要:线程礼让 礼让线程,让当前正在执行的线程礼让,但不阻塞 将线程从运行状态转化为就绪状态 让cpu重新调度,礼让不一定成功,看cpu心情 测试代码,多运行几次,结果不一样 package com.example.multi_thread; public class TestYield { public 阅读全文
posted @ 2021-11-11 16:48 Oh,mydream! 阅读(32) 评论(0) 推荐(0)
摘要:线程休眠 sleep(时间) 指定当前线程阻塞的毫秒数 sleep存在异常InterruptedException sleep时间达到后线程进入就绪状态 sleep可以模拟网络延时、计时器等 每个对象都有一个锁,sleep不会释放锁 代码 package com.example.multi_thre 阅读全文
posted @ 2021-11-11 16:09 Oh,mydream! 阅读(35) 评论(0) 推荐(0)
摘要:线程停止 线程状态 创建状态:new Thread() 线程一旦创建,就进入新生状态 就绪状态:线程start()后进入就绪状态,线程阻塞解除后由阻塞状态进入就绪状态 运行状态:线程由就绪状态获得CPU资源之后进入运行状态,释放资源后由运行状态进入就绪状态 阻塞状态:运行状态时等待用户输入时/线程休 阅读全文
posted @ 2021-11-11 15:37 Oh,mydream! 阅读(51) 评论(0) 推荐(0)
摘要:lambda表达式 lambda表达式简单说就是实现了类中的方法,是一种简化的写法 概念: lambda表达式只有在一行代码的时候才能简化成一行,否则要用代码块包裹 接口是函数式接口:仅存在一个方法的接口 多个参数也可以去掉返回类型,加上()即可 package com.example.multi_ 阅读全文
posted @ 2021-11-11 14:46 Oh,mydream! 阅读(63) 评论(0) 推荐(0)
摘要:静态代理模式 相关视频https://www.kuangstudy.com/course/play/1317506465254887425 直接上代码 package com.example.multi_thread; public class StaticProxy { public static 阅读全文
posted @ 2021-11-11 11:01 Oh,mydream! 阅读(38) 评论(0) 推荐(0)
摘要:实现callable接口-多线程下载图片 说是了解即可,但在项目中还是遇到了,要掌握 实现步骤 实现Callable接口 重写call方法 创建目标对象 Xxxxx t1 = new Xxxxxx(); 创建执行任务 ExecutorService ser = Executors.newFixedT 阅读全文
posted @ 2021-11-08 14:56 Oh,mydream! 阅读(45) 评论(0) 推荐(0)
摘要:多线程之龟兔赛跑 从简单的例子来看,多线程的数据的线程不安全问题还是比较严重 直接上代码 package com.example.multi_thread; public class Race implements Runnable { private String winner; @Overrid 阅读全文
posted @ 2021-11-08 11:28 Oh,mydream! 阅读(52) 评论(0) 推荐(0)
摘要:初识并发问题 多线程操作同一个资源时,不造成线程不安全 代码 package com.example.multi_thread; public class TestThread4 implements Runnable { private int ticketNums = 10; @Override 阅读全文
posted @ 2021-11-06 12:11 Oh,mydream! 阅读(28) 评论(0) 推荐(0)
摘要:实现Runnable类练习-多线程下载图片 准备工作 在java目录下新建lib目录,下载commons.io包(org.apache)jar包文件放在lib目录下; 右键点击lib目录->Add as Library 代码, 需结合继承Thread类练习-多线程下载图片 一起看: package 阅读全文
posted @ 2021-11-06 11:44 Oh,mydream! 阅读(45) 评论(0) 推荐(0)
摘要:继承Thread类练习-多线程下载图片 附上视频连接https://www.kuangstudy.com/course/play/1317506465254887425 准备工作 在java目录下新建lib目录,下载commons.io包(org.apache)jar包文件放在lib目录下; 右键点 阅读全文
posted @ 2021-11-06 11:05 Oh,mydream! 阅读(54) 评论(0) 推荐(0)
摘要:多线程三种创建方法之继承Thread类 三种创建方法 继承Thread类 实现Runable接口 实现Callable接口 继承Tread类 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法开启线程 TestThread.java packag 阅读全文
posted @ 2021-11-05 17:19 Oh,mydream! 阅读(59) 评论(0) 推荐(0)
摘要:线程与进程 基础打牢,开始学一些原来认为很难理解的东西 进程:Process ,进程就是执行程序的一次过程,它是一个动态的概念,是系统资源分配的单位 通常在一个进程中可以包含若干个线程,当然,一个进程中最少能包含一个线程,不然没有存在的意义。线程是CPU调度和执行的单位 注:很多多线程是模拟出来的, 阅读全文
posted @ 2021-11-05 11:35 Oh,mydream! 阅读(35) 评论(0) 推荐(0)
摘要:内部类 内部类就是在一个类的内部再定义一个类 成员内部类 静态内部类 局部内部类 匿名内部类 上代码 package com.example.oop.demo05; public class Outer { public int id = 10; // 成员内部类 public class Memb 阅读全文
posted @ 2021-11-03 15:22 Oh,mydream! 阅读(25) 评论(0) 推荐(0)
摘要:接口的定义与实现 接口与其他类的区别 普通类:只有具体实现 关键字:class 抽象类:具体实现和规范(抽象方法)都有 关键字:abstract class 接口:只有规范,没有具体实现,无构造函数 关键字:interface 接口就是规范,定义的是一组规则 接口的本质是契约,就像我们的人间法律一样 阅读全文
posted @ 2021-11-03 09:21 Oh,mydream! 阅读(156) 评论(0) 推荐(0)
摘要:抽象类 抽象类包含abstract 关键字 抽象类不能 使用new创建,它是用来让子类继承实现的 抽象类可以包含抽象方法和普通方法 有抽象方法的类必须声明为抽象类 抽象方法只有声明,没有方法的实现,是用来让子类实现的 子类继承抽象类,必须要实现抽象类没有实现的抽象方法,否则该类也要声明为抽象类 思考 阅读全文
posted @ 2021-11-02 16:50 Oh,mydream! 阅读(57) 评论(0) 推荐(0)
摘要:static关键字 被static修饰的属性和方法称为静态属性和静态方法 ,可以通过类调用(推荐)也可以通过对象调用 没有被static修饰的属性和方法只能通过对象调用 静态代码块 静态代码块在类对象创建时执行,并且仅执行一次, 对象创建时执行顺序:1.静态代码块 2.匿名代码块(可以用来初始化)3 阅读全文
posted @ 2021-11-02 15:48 Oh,mydream! 阅读(46) 评论(0) 推荐(0)
摘要:instanceof和类型转换 instanceof 判断一个对象是否是一个类的实例 编译不报错前提:两个类之间存在关系 核心:父类引用指向子类对象 父类转子类 是引用类型的从高转低,需要强制转换 子类转父类,可能丢失一些自己本来的方法 代码示例 需认真理解 Person.java package 阅读全文
posted @ 2021-11-02 15:13 Oh,mydream! 阅读(34) 评论(0) 推荐(0)
摘要:多态 不知道多态到底用来干啥 多态即同一方法可以根据返回对象的不同而采用多种不同的行为方式 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多 多态存在的条件 ​ 有继承关系 ​ 子类重写父类的方法 ​ 父类引用指向子类对象 注意:多态是方法的多态,属性没有多态 示例:与重写 博客的示例有 阅读全文
posted @ 2021-11-02 11:46 Oh,mydream! 阅读(34) 评论(0) 推荐(0)
摘要:重写 如果你有目标,就不会被别人带节奏 重写 vs 重构 不同的概念: 重构是同一个类中的同名方法,参数类型或者个数不同 重写是存在两个继承关系的父子类中,子类重写父类的方法,方法名和参数类型完全相同 重写 1.方法名必须相同,参数列表必须完全相同 2.如果为静态方法,调用static结果不同 3. 阅读全文
posted @ 2021-11-02 11:22 Oh,mydream! 阅读(97) 评论(0) 推荐(0)
摘要:super详解 super注意点 super是父类的构造,必须在构造方法的第一条 super只能出现在子类构造或者子类方法中 super构造和this构造不能同时调用,因为两者都要必须出现在构造方法的第一条,会冲突 super vs. this 代表的对象不同 ​ super代表父类对象的引用 ​ 阅读全文
posted @ 2021-11-01 16:11 Oh,mydream! 阅读(77) 评论(0) 推荐(0)