![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
无名`
这个作者很懒,什么都没留下…
展开
-
所有类型的class对象
package com.wuming.reflection;import java.lang.annotation.ElementType;public class Test04 { public static void main(String[] args) { Class c1 = Object.class;//类 Class c2 = Comparable.class;//接口 Class c3 = String[].class;//一.原创 2022-05-12 08:09:10 · 172 阅读 · 0 评论 -
得到Class类的几种方式
反射可以获取类的属性,方法和构造器类只有一个Class实列一个Class对象就是加载到jvm中的一个.class文件通过Class可以完整得到一个类中所有被加载的结构==============package com.wuming.reflection;//测试Class类的创建方式有哪些public class Test03 { public static void main(String[] args) throws ClassNotFoundException {原创 2022-04-26 07:41:22 · 191 阅读 · 0 评论 -
获取反射对象
package com.wuming.reflection;//什么叫反射public class Test02 extends Object{ //Object定义了一个方法被所有子类继承,就是public final Class getClass(),返回值类型是Class类 //反射:就是通过对象获取类的名称 public static void main(String[] args) throws ClassNotFoundException { //反.原创 2022-04-26 06:54:25 · 117 阅读 · 0 评论 -
反射概述讲解
1.动态语言运行时代码根据某些条件改变自身结构的,如Object-C,C#,JavaScript,PHP,Python2.静态语言运行时结构不可改变,如JAVA,C,C++,但JAVA可以通过反射获取类似动态语言的特性3.反射获取类的内部信息,来操作类的属性和方法正常方式:引入"包类名称"======》new实例化======》取得实例化对象反射方式:实例化对象=====》getClass()方法===》得到完整的包类名称...原创 2022-04-26 07:44:04 · 2370 阅读 · 0 评论 -
自定义注解
package com.wuming.annotation;import java.lang.annotation.*;//自定义注解public class Test03 { //注解可以显示赋值,如果没有默认值,我们就必须给注解赋值 @MyAnnotation2(age=18,name="wuming") public void test(){} @MyAnnotation3("无名") public void test2(){}}//定义一个注解.原创 2022-04-26 06:11:02 · 619 阅读 · 0 评论 -
内置注解之讲解
1.@Override重写2.@Deprecated修辞方法,属性,类3.@SuppressWarnings警告使用需加一个参数如:@SuppressWarnings("all")@SuppressWarnings("unchecked")@SuppressWarnings(value={"unchecked","deprecation"})等等..................原创 2022-04-24 10:45:27 · 60 阅读 · 0 评论 -
内置注解讲解
package com.wuming.annotation;import java.util.ArrayList;import java.util.List;//什么是注解@SuppressWarnings("all")public class Test01 extends Object{ @Override//重写注解 public String toString() { return super.toString(); } //Depre.原创 2022-04-21 07:00:23 · 231 阅读 · 0 评论 -
什么是注解
1.Annotation是JDK5引入的2.Annotation作用:对程序作解释被其他程序如编译器读取3.格式:@注释名如@SuppressWarnings(value="unchecked")4.在哪里使用:package,class,method,field原创 2022-04-20 07:34:49 · 173 阅读 · 0 评论 -
网络通信的两个要素
如何实现网络通信?通信双方地址:ip端口号192.168.16.124:5900规则:网络通信的协议TCP/IP参考模型:小结:1.网络编程两个主要问题:定位一台或多台主机找到主机如何通信2.网络编程要素ip,端口号网络通信协议 udp,tcp万物皆对象...原创 2022-03-03 05:31:48 · 2216 阅读 · 0 评论 -
什么是计算机网络
1.打电话:连接 TCP2.发短信:发就完了 UDP计算机网络:地理位置不同的多台计算机及外部设备,通过线路连接,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统网络编程目的:无线电台....传播交流信息,数据交换,通信想要达到这个效果需要什么:1.定位主机:ip:192.168.16.1242.找到主机,如何传输数据?javaweb:网页编程 B/S网络编程:TCP/IP C/S...原创 2022-03-03 05:07:39 · 1700 阅读 · 0 评论 -
使用线程池
背景:经常创建或销毁,使用量大,并发情况,性能影响大思路:提前创多个线程,放线程池中,使用直接拿,用完放回池,可避免频繁创建销毁,重复利用,类似交通工具好处:减少创建新线程时间重复利用线程池中线程,不需每次创建便于线程管理:核心池大小最大线程数线程没有任务时最多保持多长时间后会终止使用线程池:jdk5:ExecutorService和ExecutorsExecutorService:线程池接口,子类ThreadPoolExecutorvoid execute(原创 2022-02-28 22:07:31 · 94 阅读 · 0 评论 -
多线程:信号灯法
package com.wuming.thread;//测试生产者消费者问题2:信号灯法,标志位解决public class TestPc2 { public static void main(String[] args) { TV tv = new TV(); new Player(tv).start(); new Watcher(tv).start(); }}//生产者-->演员class Player extends .原创 2022-02-28 21:35:22 · 200 阅读 · 0 评论 -
多线程:管cheng法
package com.wuming.thread;//测试:生产者消费者模型,利用缓冲区解决:管程法//生产者,消费者,产品,缓冲区public class TestPC { public static void main(String[] args) { SynContainer container = new SynContainer(); new Productor(container).start(); new Consumer(c.原创 2022-02-27 11:26:59 · 70 阅读 · 0 评论 -
多线程:生产者消费者问题
1.假设仓库只能存一件产品,生产者将产品放入仓库,消费者将产品从仓库取出2.仓库没有产品,生产者将产品放仓库,否则停止生产并等待,直到仓库产品被消费者取走3.如果仓库放有产品,消费者可取走,否则停止消费并等待,直到仓库再次放入产品===============线程通信-分析生产者没有生产产品之前,要通知消费者等待,生产产品之后,通知消费者消费消费者消费后通知生产者已经结束消费,需要生产新产品供消费生产者和消费者问题中,仅有synchronized是不够的synchronize原创 2022-02-25 21:21:16 · 213 阅读 · 0 评论 -
synchronized和lock
区别:lock手动开启和关闭锁,synchronized出了作用域自动释放lock只要代码块锁,synchronized有方法锁和代码块锁lock锁jvm花费较少的时间调度线程,性能更好,更好的扩展性(提供更多的子类)优先使用顺序:lock>同步代码块(已经进入方法体,分配了相应的资源)>同步方法(在方法体之外)...原创 2022-02-24 23:56:58 · 144 阅读 · 0 评论 -
Lock锁详细讲解
package com.wuming.thread;import java.util.concurrent.locks.ReentrantLock;//测试Lock锁public class TestLock { public static void main(String[] args) { TestLock2 testLock2 = new TestLock2(); //多个对象操作同一个资源票,不用lock时线程不安全 /* 10 .原创 2022-02-24 23:49:03 · 2567 阅读 · 2 评论 -
死锁详细讲解
多个线程占有自己资源还想占用其他线程的资源导致两个或以上线程停止运行的情况=====某一个同步块同时拥有“两个以上对象的锁”时可能发生死锁=====死锁四个必要条件:一:a资源只能被一个进程使用二:一个进程阻塞时拥有的a资源不释放三:一个进程拥有的a资源在使用完之前不能抢走四:一个线程拥有了a资源又想拥有b资源只要破坏一个或多个条件就能避免死锁======package com.wuming.thread;//死锁:多个线程同时抱着对方需要的资原创 2022-02-24 23:26:53 · 126 阅读 · 0 评论 -
多线程:CopyOnWriteArrayList
package com.wuming.syn;import java.util.concurrent.CopyOnWriteArrayList;//测试JUC安全类型的集合public class TestCallable { public static void main(String[] args) { CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>();.原创 2022-02-24 22:27:53 · 125 阅读 · 0 评论 -
同步方法及同步代码块
synchronized方法和synchronized块synchronized方法必须获得对象的锁才能执行,否则线程阻塞,方法一旦执行,就独占此锁,直到方法返回才释放锁,后面被阻塞的线程才能获得这个锁,继续执行synchronized会影响效率同步块synchronized(Obj){}...原创 2022-02-24 00:31:01 · 894 阅读 · 0 评论 -
Arraylist线程不安全原因
package com.wuming.syn;import java.util.ArrayList;import java.util.List;//线程不安全的集合public class UnsafeList { public static void main(String[] args) { List<String> list=new ArrayList<String>(); for (int i = 0; i < 10.原创 2022-02-23 23:39:50 · 172 阅读 · 0 评论 -
多线程:三大不安全案例
package com.wuming.syn;//不安全的取钱//两个人去银行取钱,账户public class UnSafeBank { public static void main(String[] args) { //账户 Account account = new Account(100,"结婚基金"); Drawing you = new Drawing(account,50,"你"); Drawing girlFr.原创 2022-02-23 23:26:35 · 62 阅读 · 0 评论 -
线程同步机制
同步:多个线程操作同一个资源并发:同一个对象被多个线程同时操作多个线程进入线程对象等待池形成队列,队列+锁能保证线程安全性原创 2022-02-17 22:16:16 · 126 阅读 · 0 评论 -
守护线程讲解
线程分用户线程和守护线程虚拟机必须确保用户线程执行完毕虚拟机不用等待守护线程执行完毕后台记录操作日志,监控内存,垃圾回收package com.wuming.state;//测试守护线程//上帝守护你public class TestDaemon { public static void main(String[] args) { God god = new God(); You you = new You(); Thread原创 2022-02-17 22:08:44 · 449 阅读 · 0 评论 -
线程优先级
线程调度器决定优先调度哪个线程来执行优先级用数字1~10表示Thread.MIN_PRIORITY=1;Thread.MAX_PRIORITY=10;Thread.NORM_PRIORITY=5;使用以下方式改变个获取优先级getPriority().setPriority(int xxx);package com.wuming.state;public class TestPriority extends Thread{}class MyPriority imple原创 2022-02-17 21:53:46 · 277 阅读 · 0 评论 -
多线程观测状态
package com.wuming.state;import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;//观察测试线程的状态public class TestState { public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(() -> { for (i.原创 2022-02-17 00:00:58 · 223 阅读 · 0 评论 -
多线程join,强制执行完
想象成插队package com.wuming.state;//测试joinpublic class TestJoin implements Runnable{ /** * When an object implementing interface <code>Runnable</code> is used * to create a thread, starting the thread causes the object's * &原创 2022-02-16 23:29:58 · 169 阅读 · 0 评论 -
线程礼让详细讲解
礼让线程,让正执行的线程停止,但不阻塞将线程从运行状态转为就绪状态让cpu重新调度,礼让不一定成功,看cpu心情package com.wuming.state;public class TestYield { public static void main(String[] args) { MyYield myYield = new MyYield(); new Thread(myYield,"a").start(); new Th原创 2022-02-16 23:07:08 · 338 阅读 · 0 评论 -
线程休眠2
package com.wuming.state;import java.text.SimpleDateFormat;import java.util.Date;//模拟倒计时public class TestSleep2 { public static void main(String[] args) { /* try { tenDown(); } catch (InterruptedException e) { .原创 2022-02-16 22:46:19 · 56 阅读 · 0 评论 -
多线程休眠
sleep(时间)线程阻塞毫秒数sleep存在异常InterruptedExceptionsleep时间达到后线程进入就绪状态sleep可以模拟网络延时,倒计时每一个对象都有一个锁,sleep不会释放锁package com.wuming.state;import com.wuming.demo01.TestThread4;//模拟网络延时:放大问题的发生性。public class TestSleep implements Runnable{ /** *原创 2022-02-16 22:20:19 · 147 阅读 · 0 评论 -
线程状态及停止
状态:new就绪运行阻塞死亡停止:不推荐jdk的stop(),destory();推荐线程自己停下来;设置标识位终止变量,当flag=flase,线程终止package com.wuming.state;public class TestStop implements Runnable{ /** * When an object implementing interface <code>Runnable</code> is u原创 2022-02-15 22:31:58 · 50 阅读 · 0 评论 -
lambda总结
package com.wuming.lambda;public class TestLambda2 { public static void main(String[] args) { ILove love=null; /* //1.lambda表示简化 ILove love =(int a)->{ System.out.println("i love you-->"+a); }; .原创 2022-02-15 21:55:53 · 43 阅读 · 0 评论 -
为什么使用lambda表达式
1.避免匿名内部类使用过多package com.wuming.lambda;//推到lambda表达式public class TestLambda1 { //静态内部类 static class like2 implements Ilike{ @Override public void lambda() { System.out.println("I like lambda2"); } }原创 2022-02-15 21:09:28 · 163 阅读 · 0 评论 -
多线程:静态代理模式
//静态代理模式总结//真实对象和代理对象都要实现同一个接口//代理对象要代理真实角色//好处: //代理对象可以丛很多真实对象做不了的事情 //真实对象专注做自己的事情public class StaticProxy { public static void main(String[] args) { You you = new You();//你要结婚// weddingCompany weddingCompany = new weddi.原创 2022-02-14 21:07:29 · 196 阅读 · 0 评论 -
多线程:实现Callable接口
package com.wuming.demo02;import com.sun.org.apache.xpath.internal.operations.Bool;import org.apache.commons.io.FileUtils;import java.io.File;import java.io.IOException;import java.net.URL;import java.util.concurrent.*;//练习Thread,实现多线程同步下载图片//线.原创 2022-02-13 16:22:40 · 149 阅读 · 0 评论 -
多线程:龟兔赛跑
package com.wuming.demo01;public class Race implements Runnable{ /** * When an object implementing interface <code>Runnable</code> is used * to create a thread, starting the thread causes the object's * <code>run<.原创 2022-02-13 16:03:48 · 105 阅读 · 0 评论 -
多线程:并发
package com.wuming.demo01;//多个线程同时操作同一个对象//买火车票例子//多个线程操作下不安全,出现紊乱public class TestThread4 implements Runnable{ /** * When an object implementing interface <code>Runnable</code> is used * to create a thread, starting the thre.原创 2022-02-13 15:37:52 · 105 阅读 · 0 评论 -
多线程下载多张图片
1.用Runnable2.关联多线程下载多张图片_wanggang182007的博客-CSDN博客package com.wuming.demo01;import org.apache.commons.io.FileUtils;import java.io.File;import java.io.IOException;import java.net.URL;//练习Thread,实现多线程同步下载图片public class TestThread2_Runnable imple原创 2022-02-11 23:16:46 · 201 阅读 · 0 评论 -
多线程:实现Runnable接口
package com.wuming.demo01;//创建线程方式2,实现runnable接口,重写run(),执行线程需要丢入runnable接口实现类,调用start方法public class TestThread3 implements Runnable{ @Override public void run() { //run()线程体 for (int i = 0; i < 20; i++) { System.o.原创 2022-02-11 23:04:49 · 196 阅读 · 0 评论 -
多线程下载多张图片
1.继承thread2.重写run()3.创建线程对象,调用start()启动线程线程不一定立即执行,cpu安排调度①导包,右键make as library②package com.wuming.demo01;import org.apache.commons.io.FileUtils;import java.io.File;import java.io.IOException;import java.net.URL;//练习Thread,实现多线程同步下载图原创 2022-02-11 22:31:14 · 380 阅读 · 0 评论 -
java设计模式-抽象工厂模式
1.生产工厂的工厂package com.wuming.factory.abstract1;public class Client { public static void main(String[] args) { System.out.println("===============小米系列产品============"); //小米工厂 XiaomiFactory xiaomiFactory = new XiaomiFactory();原创 2022-02-06 18:22:39 · 196 阅读 · 0 评论