Java
二木林叫森
这个作者很懒,什么都没留下…
展开
-
Linux安装MySQL5.7
下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads解压tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar 移动并重命名mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql创建mysql用户组和用户并修改权限groupadd mysqluseradd -r -g mysql mysql创建数据目录并赋予权限mk转载 2021-06-19 12:12:07 · 99 阅读 · 0 评论 -
二叉树的总结
树的遍历(递归)前序遍历public void pre(TreeNode root){ if(root == null) return; System.out.println(root.val); pre(root.left); pre(root.right);}中序遍历public void mid(TreeNode root){ if(root == null) return; mid(root.left); System.out.println(root.val); m原创 2021-05-29 17:46:31 · 100 阅读 · 0 评论 -
不会初始化子类的几种情况
调用的是父类的static方法或者字段调用的是父类的final方法或者字段通过数组来引用package com.jielin;public class main { public static void main(String[] args) { //System.out.println(A.a); //A初始化! //1 //System.out.println(B.b); //2 /.原创 2021-05-04 20:10:35 · 190 阅读 · 0 评论 -
序列化,反序列化,serializableVersionUID
序列化与反序列化过程中,要面临版本问题。例如,将一个 User类的对象 user1持久化到了硬盘中,然后增删了 User类的属性,那么此时还能将持久化在硬盘中的 user1对象的序列还原成一个新的 User类的对象吗?该问题的回答需要涉及 Serializable接口的 serialVersionUID字段。serialVersionUID字段叫作序列化版本控制字段。在反序列化过程中,如果对象字节序列中的 serialVersionUID与当前类的该值不同,则反序列化失败,否则成功。如果没有显式地为一个类原创 2021-04-26 09:50:01 · 217 阅读 · 0 评论 -
Minor GC Major GC 和 Full GC
本文来源于知乎RednaxelaFX的回答Partial GC不是针对整个堆的回收Young GC只收集新生代的GCOld GC只收集老年代的GC,CMS就是这个模式MixedGCG1垃圾回收器的收集方式,收集整个新生代以及部分老年代的GC(根据用户设定的时间,选择收益高的进行回收,收益:回收后可得到的空间以及收集的期望时间)Full GC收集整个堆,针对整个堆触发Minor GC新创建的对象无法在eden区放下,出发Minor GC。将清理掉无用对象,存活对象移动到Survivor原创 2021-04-05 14:22:53 · 65 阅读 · 0 评论 -
接口和抽象类的区别
接口中的方法默认是public,不允许接口中有具体实现的方法(Java8可以有默认实现),抽象类可以有非抽象的方法一个类可以实现多个接口,当时只能继承一个抽象类,接口也可以通过extends扩展接口接口方法默认修饰符是public,抽象方法可以有public,protected和defau这些修饰符(抽象方法就是为了被子类重写,所以不能用private修饰)...原创 2021-04-05 10:53:06 · 51 阅读 · 0 评论 -
Spring Boot跨域的问题
java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value "*"since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of origins, list them explici原创 2021-03-22 20:07:22 · 114 阅读 · 0 评论 -
Java网络编程-----用UDP实现一个简单的聊天室
TalkSenderimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.*;public class TalkSender implements Runnable { DatagramSocket datagramSocket = null; BufferedReader bufferedReader = null;原创 2021-02-13 15:14:06 · 175 阅读 · 1 评论 -
Java实现读者写者问题--读者优先
Java实现读者写者问题--读者优先简介分析类的编写Semaphore类Reader类细节Writer类其他类数据格式源代码小结作者:凌杰林简介临界资源:同一时间只能由一个进程访问的资源临界区:访问临界资源的代码段读者写者问题:存在一个多个进程共享的数据区(临界资源),该数据区可以是一个文件或者一块内存空间,甚至可以是一组寄存器;有些进程reader只读取这个数据区的数据,有些进程writer只往数据区中写数据。此外,还需要满足以下条件:1.任意数量的读进程可以同时读这个文件。2.一次只能原创 2020-07-28 09:10:53 · 3019 阅读 · 14 评论 -
多线程---多生产者与多消费者 (if/while之间的区别)
引入这是一个线程同步问题,生产者和消费者共享一个资源,并且生产者相互依赖,互为条件。对于生产者,没有生产产品之前,要通知消费者等待,生产了产品后,要通知消费者可以消费对于消费者,在消费之后,要通知生产者自己结束了消费,可以生产产品了synchronized 关键字可以阻止并发地更新同一个资源,可以实现同步,但是不能用来实现不同线程间的消息传递,也即是通信wait让线程一直等待,直到其它线程通知,会释放锁,可以传递一个类型为long的参数,表示指定等待的毫秒数notify原创 2021-02-03 23:04:55 · 786 阅读 · 0 评论 -
利用IDEA的debug带你读懂 装饰模式
利用IDEA的debug带你读懂 装饰模式假如有这样一个需求:设计一个电话类,有最基础的打电话的功能。第一个需求是打电话之前播放一段铃声,这时候我们就很自然想到再写一个铃声电话类继承电话类,重写继承继承自父类的方法。现在又有新需求,打完电话后,还要给出当前的通话时间,而且也要实现第一个需求怎么办?好的,我们还可以使用继承,写一个类继承前面刚实现的铃声电话类……看起来,设计的难度不大,但是假如我们有更多的需求,那么是不是要继承前面的类。假如我们对其中的一个父类进行了修改,那么实现它的子类都会发生变化,可见,原创 2021-01-28 13:20:25 · 133 阅读 · 4 评论 -
protected关键字的深入
protected关键字的深入public class testProtected { public static void main(String[] args) { MyObject myObject = new MyObject(); myObject.clone(); }}class MyObject{}上面这段代码有什么错误?编译能通过吗?![image.png](https://img-blog.csdnimg.cn/img_conver原创 2021-01-28 00:00:47 · 210 阅读 · 0 评论 -
Java泛型/通配符/泛型擦除
Java泛型/通配符/泛型擦除Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常.泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型参数化类型:把类型当作是参数一样传递<数据类型> 只能是引用类型相关术语:ArrayList<E>中的E称为类型参数变量ArrayList<Integer>中的Integer称为实际类型参数整个称为ArrayList<E>泛型类原创 2021-01-27 22:46:02 · 140 阅读 · 0 评论