java相关
java知识
正月看飞雪
这个作者很懒,什么都没留下…
展开
-
JAVA网络编程实战(TCP, UDP)
1.使用字节流,客户端給服务器发一句hello serve, 服务器接受到了, 然后在控制台输出//服务器 @Test public void server() throws IOException { //1.监听端口 等待连接 ServerSocket serverSocket = new ServerSocket(9999); System.out.println("等待连接。。。"); //2. 如果有客户端连接, 返原创 2021-05-07 22:03:41 · 108 阅读 · 0 评论 -
java语法糖:自动装箱的陷阱
代码清单 int aa = 1; Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 128; Integer f = 128; Long g = 3L; System.out.println(aa == a); System.out.println(a.eq原创 2021-04-24 15:04:05 · 119 阅读 · 0 评论 -
JAVA设计模式-----Proxy
代理对象:增强后的对象(中介)目标对象:被增强的对象 (自己)两种方式静态代理静态代理两种方式:继承1.继承我们创建在DAO层中查询数据库, 此时我们增强它public class UserDaoImpl { //我们增强这个方法 输出方法的执行时间 public void query(String name){ System.out.println("query name = " + name); }}我们创建一个类去继承它, 重写它的方法pu原创 2021-04-07 23:16:00 · 108 阅读 · 0 评论 -
JVM: 调优相关
java参数:-开头, 标准参数-X开头, 非标参数我们调优的参数, -XX参数如下java -XX:+PrintCommandLineFlags -version。 打印java虚拟机启动的时候, 自带了一些参数, 打印这些参数。[root@iZ2ze1zeijykeg3hjbji2dZ java]# java -XX:+PrintCommandLineFlags -version-XX:InitialHeapSize=30115712 -XX:MaxHeapSize=481原创 2021-03-31 23:22:28 · 122 阅读 · 0 评论 -
jvm: 10种垃圾回收器
垃圾回收器是随着内存的增长而推进的,单线程的垃圾回收器,最多是100上百m的内存。因为内存打了大了, 一个线程去垃圾回收, 那要扫很久, 因此, 下一步的改进方向, 多线程。但是ps,po也是不能清理太多,Serial: 及时几十mParalle:几个GCMS:几十个Gjdk:1.8默认是ps+po我们jvm调优就是调的G11. Serial(单线程)她是jdk1.0自带的, (停止整个世界)原理:工作线程在那工作, 内存满了, 需要垃圾回收了, 停止一切工作, 清理线程, 清理完了, 他原创 2021-03-31 21:27:39 · 907 阅读 · 1 评论 -
jvm: 一个对象出生到消亡
垃圾回收分代模型一个对象new以后来到缅因区域, 回收一次幸存下来了, 来到幸存区, 在回收, 区幸存区域2, 再回收, 又回来, 一直到年龄到了, 就去到老年代. 老年代在快慢的时候, 回收一次。生命周期过程:年轻代回收:YGC, minorGC,老年代回收: majarGC全部回收:FGC过程:一个对象new以后, 尝试去stack空间, 如果可以分配上(好处, 速度及其快, 而且不需要gc介入,方法完成就弹出, 爽死),不够都会就去堆空间,如果它很大,就去老年代, 进过FGC回收,原创 2021-03-31 20:36:11 · 186 阅读 · 2 评论 -
JAVA多线程:使用两个线程交替打印数组
LockSupport简单说的说, 它可以拿来代替resume()和.suspend()方法 public static void main(String[] args) throws InterruptedException { char[] a1 = {'1', '2', '3', '4', '5'}; char[] a2 = "ABCDEF".toCharArray(); t1 = new Thread() { @O原创 2021-03-30 23:07:18 · 1254 阅读 · 1 评论 -
JAVA synchronized 锁的升级过程
对象在内存中的存储布局将对象输出可以看见如下布局:以下为上锁和不上锁的情况,改变的是头部信息。其中markword:锁的信息GC三色hashcode锁的概念:重量级的锁, 加锁, 锁的调度, 唤醒,这些操作都交给OS完成,jvm就当一个甩手掌柜。线程在等待队列,由操作系统唤醒。轻量级锁(自旋锁): 由jvm完成锁的相关操作, 此时是一个忙等的状态,线程自己在那兜圈, 看看资源释放没有, 释放了, 就去争夺资源,这样cpu消耗就比较大。偏向锁: 就是给自己贴一个标签, 代表这个原创 2021-03-30 22:30:09 · 125 阅读 · 1 评论 -
java源码:String源码解读
一: String类成员组成String中的成员变量 private final char value[];//存放字符串 private int hash; // Default to 0 //使用JDK1.0.2中的serialVersionUID实现互操作性 private static final long serialVersionUID = -6849794470754667710L; private static final ObjectStreamF原创 2021-03-26 13:01:06 · 454 阅读 · 0 评论