![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java补充
文章平均质量分 94
关于java知识点的补充
是三好
大鹏一日同风起 扶摇直上九万里
展开
-
使用WebSocket实现网页聊天室
一、引言1. 问题引入Hypertext Transfer Protocol (HTTP) 协议一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动.因为http 通信只能由客户端发起,服务器返回查询结果,HTTP 协议做不到服务器主动向客户端推送信息,服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用轮询:每隔一段时候,就发出一个询问,了解服务器有没有新的信息。最典型的场景就是聊天室。轮询的效率低,非常浪费原创 2023-11-16 17:59:02 · 1398 阅读 · 0 评论 -
浅谈jvm
JVM原创 2023-11-13 17:07:37 · 793 阅读 · 0 评论 -
JVM垃圾回收机制
本节主要讲解 7 种垃圾回收器,其中有 3 种垃圾回收器是作用于年轻代垃圾回收的收集器;另外 3 种圾回收器是作用于老年代垃圾回收的收集器;剩余的 1 种垃圾回收器能够同时作用于年轻代和老年代。原创 2023-11-10 18:06:04 · 173 阅读 · 0 评论 -
JVM运行时数据区
基本概念:Java 栈有两个,分别是虚拟机栈和本地方法栈。这里以虚拟机栈为例,本地方法栈和虚拟机栈基本相同。栈的特点:对于每个线程,将创建单独的运行时栈。对于每个方法调用,将在栈存储器中产生一个条目,称为栈帧。所有局部变量将在栈内存中创建。栈区域是线程安全的,因为它不共享资源。Java 虚拟机栈是线程私有的,它的生命周期与线程相同(随线程而生,随线程而灭);如果线程请求的栈深度大于虚拟机所允许的深度,将抛出 StackOverflowError 异常;原创 2023-11-10 17:03:53 · 1184 阅读 · 0 评论 -
简单聊聊java中各种常量池
基本类型的包装类的常量池:Java中有6种基本类型的包装类型实现了常量池技术,分别是Byte,Short,Integer,Long,Character,Boolean,其中Byte,Short,Integer,Long,Character这5种整型的包装类只是在对应值小于等于127时才可使用对象池。另外两种浮点数类型的包装类型没有实现。包装类型在进行运算时可能会自动拆箱三种常量池:Class文件常量池(字面量,符号引用),其中字面量的概念需要重点掌握。运行时常量池字符串常量池字符串常量池。原创 2023-11-09 17:28:10 · 195 阅读 · 0 评论 -
Java并发工具-4-并发框架(Executor&ForkJoin)
Java 1.7 引入了一种新的并发框架—— Fork/Join Framework,主要用于实现“分而治之”的算法,特别是分治之后递归调用的函数。ForkJoin框架的本质是一个用于并行执行任务的框架, 能够把一个大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务的计算结果。在Java中,ForkJoin框架与ThreadPool共存,并不是要替换ThreadPool其实,在Java 8中引入的并行流计算,内部就是采用的ForkJoinPool来实现的。原创 2023-11-08 17:18:29 · 331 阅读 · 0 评论 -
Java并发工具-3-并发容器(Collections)
如果 key 对应的 value 不存在,则 put 进去,返回 null。否则不 put,返回已存在的 value。put在放入数据时,如果放入数据的key已经存在与Map中,最后放入的数据会覆盖之前存在的数据,而在放入数据时,如果存在重复的key,那么putIfAbsent不会放入值。putIfAbsent 如果传入key对应的value已经存在,就返回存在的value,不进行替换。如果不存在,就添加key和value,返回null。/*** put*/map.put(1, "张三")原创 2023-11-08 14:42:43 · 70 阅读 · 0 评论 -
Java并发工具-2-同步工具(Tools)
除过上面代码中使用的最基本的 acquire 方法和 release 方法之外,我们还需要掌握其他几个核心方法的使用。下面逐个介绍。上面的例子中使用了 Semaphore (int permits) 构造方法。此构造方法也是用于创建信号量对象,第二个参数表示创建的信号量是否秉持公平竞争特性。即对资源的申请使用严格按照申请的顺序给予允许。一般情况下,我们使用 Semaphore (int permits) 构造方法就可以了。返回当前还可用的许可数,即还允许多少个线程进行使用资源。原创 2023-11-07 17:40:38 · 115 阅读 · 0 评论 -
Java并发工具-1-原子操作(Atomic)
除了上面代码中使用的最基本的 AtomicInteger (int)、AtomicInteger ()、 set () 、get () 和 decrementAndGet () 方法之外,我们还需要掌握其他几组核心方法的使用。下面逐个介绍。getAndAdd (int) 方法与 AddAndGet (int) 方法第 1 个方法是先获取原值,之后再对原值做增加。注意获取的值是变更之前的值。而第 2 个方法正好相反,是先对原值做增加操作之后再获取更新过的值。// 0// 0,获取当前值并加10。原创 2023-11-07 11:33:57 · 467 阅读 · 0 评论 -
JUC-3-并发锁
Lock 接口的诞生:在 Java 中锁的实现可以由 synchronized 关键字来完成,但在 Java5 之后,出现了一种新的方式来实现,即 Lock 接口。诞生的意义:Lock 接口支持那些语义不同(重入、公平等)的锁规则,可以在非阻塞式结构的上下文(包括 hand-over-hand 和锁重排算法)中使用这些规则。主要的实现是 ReentrantLock。对于 ReentrantLock,后续有专门的小节进行讲解。JDK 1.5 前的 synchronized。原创 2023-11-06 20:42:49 · 126 阅读 · 0 评论 -
JUC-2-多线程的安全与同步
定义: 当线程的 run () 方法完成时,或者主线程的 main () 方法完成时,我们就认为它终止了。这个线程对象也许是活的,但是,它已经不是一个单独执行的线程。线程一旦终止了,就不能复生。概念:synchronized 同步块是 Java 提供的一种原子性内置锁,Java 中的每个对象都可以把它当作一个同步锁来使用,这些 Java 内置的使用者看不到的锁被称为内部锁,也叫作监视器锁。线程的执行。原创 2023-11-06 17:53:40 · 79 阅读 · 0 评论 -
JUC-1-并发编程基础
定义: 所谓并发编程是指在一台处理器上 “同时” 处理多个任务。并发是在同一实体上的多个事件,多个事件在同一时间间隔发生。意义:开发者通过使用不同的语言,实现并发编程,充分的利用处理器(CPU)的每一个核,以达到最高的处理性能,提升服务器的资源利用率,提升数据的处理速度。定义: Java 内存模型(即 Java Memory Model,简称 JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。介绍。原创 2023-11-06 17:28:30 · 67 阅读 · 0 评论 -
Java反射详解:入门+使用+原理+应用场景
反射非常强大和有用,,反射机制在框架设计中占有举足轻重的作用。所以,在你Java进阶的道路上,你需要掌握好反射。1.反射是什么?2.反射有什么用?3.反射的实现原理?4.怎么用反射?原创 2023-11-02 20:57:08 · 173 阅读 · 0 评论 -
函数式编程
Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。 Java8的Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合或数组进行链状流式的操作。可以更方便的让我们对集合或数组操作。 我们在编写代码的时候出现最多的就是空指针异常。所以在很多情况下我们需要做各种非空的判断。if(author!=null){ 尤其是对象中的属性还是一个对象的情况下。原创 2023-10-17 17:22:20 · 131 阅读 · 0 评论 -
java中的泛型
以上还算详细的和大家介绍了为啥要有泛型的出现,那么泛型是如何定义的呢?泛型就是参数化类型,也就是说把我们要操作的类型作为了一个参数,比如我们创建集合的时候,允许我们可以指定集合中元素的数据类型。在JDK1.5中引入了“参数化类型”的概念,这个就是泛型,也就是说泛型和参数化类型是等价的,一回事,那么我们来理解理解啥是参数化类型。原创 2023-10-13 19:48:40 · 255 阅读 · 0 评论 -
java中的接口interface
访问修饰符] interface 接口名 [extends 父接口 1,父接口 2…] {常量定义;方法定义;访问修饰符:只能是 public 或默认。接口名:和类名采用相同命名机制。extends:接口可以多继承。常量:接口中的属性只能是常量,总是:public static final 修饰。不写也是。方法:接口中的方法只能是:public abstract。省略的话,也是 public abstract。要点子类通过 implements 来实现接口中的规范。原创 2023-10-13 16:51:27 · 168 阅读 · 0 评论 -
java并发编程中的四个关键字:ThreadLocal、Volatile、Synchronized和Atomic
并发编程原创 2023-09-28 17:30:57 · 514 阅读 · 0 评论 -
ThreadLocal
ThreadLocal原创 2023-09-28 17:20:37 · 137 阅读 · 0 评论 -
volatile
volatile原创 2023-09-28 13:50:54 · 165 阅读 · 0 评论 -
Synchronized
上述代码与前面不同的是我们同时创建了两个新实例AccountingSyncBad,然后启动两个不同的线程对共享变量i进行操作,但很遗憾操作结果是1452317而不是期望结果2000000,因为上述代码犯了严重的错误,虽然我们使用synchronized修饰了increase方法,但却new了两个不同的实例对象,这也就意味着存在着两个不同的实例对象锁,因此t1和t2都会进入各自的对象锁,也就是说t1和t2线程使用的是不同的锁,因此线程安全是无法保证的。原创 2023-09-27 20:36:30 · 142 阅读 · 0 评论