
化典成籍 - Java
人若无名,专心练剑,进一步自有进一步的欢喜!
WanAkiko.
遇见是一种福气,不遇见也是。
展开
-
Java通过Unsafe类忽略构造方法的执行&如何让Java类的构造方法不执行
Java通过Unsafe类略过类的构造方法的执行。转载 2022-06-30 00:26:12 · 611 阅读 · 0 评论 -
Java方法重写时容易被忽略的里氏转换原则
FatherFloor - 里氏转换父类package domain;import java.util.ArrayList;/** * 里氏转换父类 * * @author WanAkiko * */public class FatherFloor { // 原父类execute方法参数为List<Object> list,此类在被其它子类继承并重写方法时,不同的类型接收值返回的结果不一致 // 在实际开发中父类与子类间的方法重写子类参数的类型必须大于父类参数类型原创 2021-01-26 11:30:39 · 182 阅读 · 0 评论 -
Java实现Web浏览器对ServerSocket服务器的简单资源访问
服务器端功能编写:package test;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Soc原创 2021-01-18 20:46:17 · 465 阅读 · 0 评论 -
Java网络编程实现客户端向服务器端上传文件
服务器端:package client;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;public class Server { private static FileOutputStream fileOutputSt原创 2021-01-18 20:46:05 · 263 阅读 · 0 评论 -
Java基于BlockingQueue阻塞队列实现生产者消费者模型
测试用生产者模型: package domain; import java.util.concurrent.BlockingQueue; /** * 生产者模型 * * @author WanAkiko * */ public class EProductor implements Runnable { private BlockingQueue<String> queue; int count = 1; public EProduct原创 2021-01-17 11:29:34 · 243 阅读 · 0 评论 -
Java基于ReentrantLock类和Condition接口实现生产者消费者模型
测试用生产者模型:package domain;import java.util.Queue;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * 生产者模型 * * @author WanAkiko * */public class Producer implements Runnable { private Queue<St原创 2021-01-17 11:25:09 · 198 阅读 · 0 评论 -
Java基于Queue队列实现生产者消费者模型
测试用生产者模型:package domain;import java.util.Queue;/** * 生产者模型 * * @author WanAkiko * */public class Productor implements Runnable { private Queue<String> queue; // 生产队列 private Integer maxTask; // 最大产量 int i = 1; // 生产计数 public Produc原创 2021-01-17 11:19:33 · 554 阅读 · 0 评论 -
假如你遇到了Java线程死锁的概念问题
多线程以及多进程提高了系统资源的利用率以及系统的处理能力。然而,并发执行也带来了新的问题——死锁(DeadLock)。所谓死锁指多个线程因竞争资源而造成的一种僵局(互相下饭,哦不互相等待),若无外力作用,这些进程都将无法向前推进。也可以参考这篇优质文章:你的酒窝里有酒 - 线程死锁常见的死锁解决办法: (1)破坏请求和保持条件:一次性的申请所有资源,之后不再申请资源。如果不满足资源条件则得不到资源分配。只获得初期资源运行,之后将运行完的资源释放,请求原创 2021-01-17 10:25:29 · 108 阅读 · 0 评论 -
Java规避线程死锁:终止线程循环等待
测试用储户实体类:package domain;import java.util.ArrayList;/** * 规避死锁问题的共享存取实体类 * * @author WanAkiko * */public class Depositor { private String account; private Double balance; private ArrayList<Depositor> list = new ArrayList<Depositor&原创 2021-01-17 10:23:16 · 278 阅读 · 0 评论 -
Java规避线程死锁:允许线程抢占资源
测试用储户实体类:package domain;import java.util.ArrayList;/** * 规避死锁问题的共享存取实体类 * * @author WanAkiko * */public class Depositor { private String account; private Double balance; private ArrayList<Depositor> list = new ArrayList<Depositor&原创 2021-01-17 10:19:52 · 283 阅读 · 0 评论 -
Java规避线程死锁:打破单独持有,互相等待的僵局
测试用储户实体类:package domain;import java.util.ArrayList;/** * 规避死锁问题的共享存取实体类 * * @author WanAkiko * */public class Depositor { private String account; private Double balance; private ArrayList<Depositor> list = new ArrayList<Depositor&原创 2021-01-17 10:13:26 · 173 阅读 · 2 评论 -
Java单例双重检查实现对对象的把控
测试用实体类:public class ThreadInstance { private String name; private Integer numberOf; private volatile static ThreadInstance instance; private ThreadInstance() { super(); } private ThreadInstance(String name, Integer numberOf) { super(); this原创 2021-01-17 09:39:14 · 125 阅读 · 0 评论 -
Java标识位控制线程中断状态
标识中断实体类:/** * 标识位中断线程(推荐使用) * * @author WanAkiko * */public class MarkInterrupt implements Runnable { private String name; private Boolean flag = true; public MarkInterrupt() { super(); } public MarkInterrupt(String name, Boolean flag) {原创 2021-01-17 09:34:52 · 206 阅读 · 0 评论 -
Java关于线程的中断问题
/** * 方法中断线程(不推荐使用) * * @author WanAkiko * */public class MethodInterrupt { public static void main(String[] args) { Runnable runnable = new Runnable() { @Override public void run() { while (true) { // 不修改线程标识的前提下判断线程是否已被中断:bool原创 2021-01-17 09:31:17 · 121 阅读 · 0 评论 -
Java使用代码向指定的邮箱发送邮件
import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.Properties;/** * 邮件下发工具类 */public final class MailUtils { private static final String USER = "3052410459@qq.com"; // 发件人称号(邮转载 2020-09-12 17:39:01 · 578 阅读 · 0 评论 -
Java生成唯一字符串UUID
import java.util.UUID;/** * UUID工具类 */public final class UuidUtil { private UuidUtil() { } public static String getUuid() { return UUID.randomUUID().toString().replace("-", "" ); } public static void main(String[] args)原创 2020-09-12 09:27:32 · 1095 阅读 · 0 评论 -
Java类TreeMap常用API补充
TreeMap常用API补充TreeMap常用API详解package TreeMap_UtilityClass;import java.util.*;/** * TreeMap常用API补充 */public class TreeMapReplenish { public static void main(String[] args) { TreeMap<Integer,String> planetMap = new TreeMap<Inte原创 2020-08-02 14:44:54 · 361 阅读 · 1 评论 -
Java类TreeMap常用API详解
TreeMap - 测试类package TreeMap_UtilityClass;import sun.reflect.generics.tree.Tree;import java.util.*;/** * TreeMap测试类 */public class TreeMapTest { public static void main(String[] args) { // 向映射中添加元素(键不可以重复,值可以重复) TreeMap<I原创 2020-08-02 12:46:57 · 1091 阅读 · 0 评论 -
HashMap常用的四种遍历方式
测试编写package HashMap_UtilityClass;import java.util.HashMap;import java.util.Iterator;import java.util.Map;/** * 遍历HashMap映射关系 */public class HashMapTraversalMode { public static void main(String[] args) { HashMap<String, String>原创 2020-07-30 18:46:41 · 325 阅读 · 0 评论 -
Java类HashMap常用API详解
HashMap - 测试类package HashMap_UtilityClass;import HashMap_UtilityClass.domain.Person;import java.util.*;/** * HashMap测试类 */public class HashMapTest { public static void main(String[] args) throws CloneNotSupportedException { // 向一个映射原创 2020-07-30 18:42:25 · 3130 阅读 · 0 评论 -
Java类TreeSet常用API补充
TreeSet常用API补充TreeSet常用API详解package TreeSet_UtilityClass;import java.util.Arrays;import java.util.NavigableSet;import java.util.SortedSet;import java.util.TreeSet;/** * TreeSet常用API补充 */public class TreeSetReplenish { public static void ma原创 2020-07-29 18:10:31 · 437 阅读 · 0 评论 -
Java类TreeSet常用API详解
TreeSet - 测试类package TreeSet_UtilityClass;import TreeSet_UtilityClass.domain.Person;import sun.reflect.generics.tree.Tree;import java.util.*;/** * TreeSet测试类 */public class TreeSetTest { public static void main(String[] args) { //原创 2020-07-29 17:51:07 · 2043 阅读 · 0 评论 -
Java类HashSet常用API详解(附运行实例)
HashSet - 测试类package HashSet_UtilityClass;import java.util.*;/** * HashSet测试类 */public class HashSetTest { public static void main(String[] args) { // 向集合中添加一个元素,若以存在该元素则不予添加 HashSet<String> stuSet = new HashSet<Strin原创 2020-07-26 14:28:13 · 1230 阅读 · 0 评论 -
Java常用接口整理(List、Set、Map)
前言 集合存储的是引用数据类型,Java中常用的集合类型主要为List、Set、Map。一、List接口 * ArrayList类 1. 简介 ① ArrayList底层是通过维护了一个Object数组实现的,使用ArrayList的无参构造函数创建对象时,其默认容量为10。 ② 当需要对ArrayList进行扩容时,其容量会自动增长0.5倍,也就是容量会变为原来Object数组长度的1.5倍原创 2020-07-29 18:14:36 · 252 阅读 · 0 评论 -
Java类LinkedList常用API详解
LinkedList - 测试类package LinkedList_UtilityClass;import java.util.Arrays;import java.util.Iterator;import java.util.LinkedList;import java.util.ListIterator;/** * LinkedList测试类 */public class LinkedListTest { public static void main(String[]原创 2020-07-25 08:39:28 · 3175 阅读 · 0 评论 -
Java类ArrayList常用API补充
package ArrayList_UtilityClass;import java.util.*;public class ArrayListReplenish { public static void main(String[] args) { /** * 将列表元素放入Iterator迭代器进行迭代 */ ArrayList<String> arrList01 = new ArrayList<St原创 2020-07-22 17:19:36 · 211 阅读 · 0 评论 -
Java接口ListIterator的add()和remove()详解
package otherUtilityClass;import java.util.Arrays;import java.util.LinkedList;import java.util.List;import java.util.ListIterator;/** * 详解ListIterator接口类的add(); */public class ListIteratorAdd { public static void main(String[] args) {原创 2020-07-22 15:51:18 · 1618 阅读 · 0 评论 -
Java接口Iterator常用API详解
package otherUtilityClass;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class IteratorTest { public static void main(String[] args) { /** * List的iterator();要求返回一个Iterator接口,该接口被ListIterator继承原创 2020-07-22 10:21:50 · 487 阅读 · 0 评论 -
Java类ArrayList常用API详解
ArrayList - 测试类package JavaCommonUtilityClasses;import JavaCommonUtilityClasses.domain.Singer;import java.util.ArrayList;import java.util.List;/** * ArrayList类常用方法 * <p> * 快捷键生成变量接收值的三种方式:alt + enter 或者 ctrl + alt + v 或者 代码.var + enter *原创 2020-07-21 19:37:47 · 998 阅读 · 0 评论 -
Java接口Collection的retainAll()详解
package commonTools;import java.util.ArrayList;import java.util.Collection;public class CollectionUtils { public static void main(String[] args) { System.out.println("---------------集合1中的元素---------------"); Collection collection0原创 2020-07-18 15:18:17 · 2177 阅读 · 3 评论 -
Java中Math类的随机数公式
随机数公式:[0, Num):Math.random() * Num[Min, Max):Min + (Math.random() * (Max - Min))[Min, Max]:Min + (int)(Math.random() * ((Max - Min) + 1))备注:) 或 ( 表示不包括该值,] 或 [ 表示包括该值。原创 2020-06-27 13:40:47 · 338 阅读 · 0 评论 -
Java等待与唤醒机制的简单实现
采取等待与唤醒机制目的:避免多个线程操作同一份数据时造成共享变量的争夺。创建设备类:package proConModel;/** * 设备类 * * @author WanAkiko * */public class Machine { String deviceName; // 设备名称 String deviceType; // 设备型号 boolean flag = false; // 设备状态,是否可用}创建生产者类package proConModel;原创 2020-10-26 20:02:37 · 209 阅读 · 0 评论 -
Java多线程notifyAll()全数唤醒
package practice;public class ThreadNotifyAll { public static void main(String[] args) { Object obj = new Object(); // 创建唯一的锁对象 new Thread() { // 匿名内部类创建多线程1 @Override public void run() { while (true) { synchronized (obj) { // 确保等待与原创 2020-10-25 11:31:31 · 310 阅读 · 0 评论 -
Java多线程wait(long timeout)自动唤醒
package practice;/** * wait(long timeout) * @author WanAkiko * */public class OverrideWait { public static void main(String[] args) { Object obj = new Object(); // 创建唯一的锁对象 new Thread() { // 匿名内部类创建多线程 @Override public void run() {原创 2020-10-25 11:18:34 · 1206 阅读 · 2 评论 -
Java线程休眠与唤醒案例(生产者与消费者)
package practice;public class WaitNotifyCase { public static void main(String[] args) { Object obj = new Object(); // 创建唯一的锁对象 new Thread() { // 匿名内部类创建多线程A @Override public void run() { for (int i = 0; i < 3; i++) { // 循环执行三次等待与唤醒原创 2020-10-25 10:52:19 · 656 阅读 · 0 评论 -
Java线程状态与状态间的关系
NEW:至今尚未启动的线程。RUNNABLE:正在JVM中执行的线程。BLOCKED:受阻塞且在等待同步锁的线程。WAITING:永久等待其它线程执行某一特定操作的线程。TIMED_WAITING:计时等待其他线程执行完操作的线程。TERMINATED:已终止的线程。...原创 2020-10-18 19:45:32 · 119 阅读 · 0 评论 -
Java多线程的三种基本实现
方法一:创建一个类并使用extends关键字继承Thread类,调用start()开启多线程。方法二:创建一个类并使用implements关键字实现Runnable接口,重写该接口的run()设置线程任务。原创 2020-10-13 16:38:03 · 153 阅读 · 3 评论 -
Java多对象序列化实现思想
在实际开发中若想一次性保存多个对象,可以先将对象存储到某个集合中,再对该集合进行序列化和反序列化操作。代码实现:// 定义ArrayList集合并为其添加多个Person对象ArrayList<Person> list = new ArrayList<Person>();list.add(new Person("李荣浩", '男', 35));list.add(new Person("杨丞琳", '女', 36));list.add(new Person("邢晗铭",原创 2020-10-10 15:29:54 · 151 阅读 · 0 评论 -
Java缓冲IO流整理乱序文本(范围1-10)
package practice;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.HashMap;/** * 根据语句序号排序 * * @author WanAkiko * */public class Senten原创 2020-10-09 14:41:20 · 206 阅读 · 0 评论 -
Java实现金额均匀 / 不均匀随机分配
package snatchRedEnvelope;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.Scanner;public class RedEnvelope { static Scanner sc = new Scanner(System.in); public static void main(String[] args) {转载 2020-09-17 14:33:49 · 1415 阅读 · 0 评论