Java核心知识
文章平均质量分 86
满眼*星辰
一名努力学习编程的大三学生
展开
-
复习多线程相关知识
进程 vs 线程1.进程是资源分配的最小单位,线程是系统调度的最小单位2.一个进程中至少包含一个线程,线程是依附线程存在的,而进程的实际执行单位是线程3.进程之间不能共享资源,而线程之间可以共享资源单例模式将构造函数设置成私有创建一个私有的对象创建一个公共提供单例对象的方法DCL双重效验锁volatile,为什么要加volatile?锁策略乐观锁-》cas-》aba》版本号JUC:ReentrantLock信号量 -》实现限流计数器循环屏障jvm内存布局内存模型原创 2021-07-08 12:25:49 · 214 阅读 · 2 评论 -
超详解 JVM 中重点内容,对整个底层体系更进认知
JVM 组成 5 个部分类加载机制(JVM 加载)、双亲委派模型、破坏双亲委派模型的3个场景垃圾回收a)判断什么是垃圾?b)垃圾算法c)垃圾处理器(7种 -》 CMS/G1)JMM(让 JVM 高速运行的一种技术)java能够一次编写,到处运行的关键(JVM兼容处理)第一: HotSpot JVM第二: IBM J9 JVMJVM 布局(HotSpot)JDK 1.81. 堆new Object() 所有对象都是存在此区域,此区域也是 JVM 中最大的一块区域JVM 的垃圾回收原创 2021-07-05 21:08:07 · 202 阅读 · 3 评论 -
思维导图模式 -- 深度理解及复习 网络 知识
网络应用层:将标准的数据格式转换成程序需要的格式表示层:将设备的数据格式转换成标准的格式会话层:用来关闭通讯双方之间的会话传输层:保证通讯双方的数据能够正常传输网络层:地址的管理和路由选择数据链路层:确保两个相邻节点间的数据传递物理层:将数字信号转换成光电信号TCP / IP应用层:HTTP(80)、FTP(21)、SSH(22)、TELENT(23)、DNS(53)传输层:TCP、UDP网络层数据链路层数据传输的 5 个要素:1.源地址 IP2.源地址端口号3.目的地 IP原创 2021-07-03 10:27:09 · 457 阅读 · 1 评论 -
举例详解 java.util.concurrent 并发包 4 种常见类
JUC:常用类1. ReentrantLock(1)lock 写在 try 之前(2)一定要记得在 finally 里面进行 unlock()2. 信号量用来控制锁的数量acquire() 尝试获取锁,如果可以正常获取到,则执行后面的业务逻辑,如果获取失败,则阻塞等待release() 释放锁3. 计数器 CountDownLatch计数器是用来保证一组线程同时完成某个await() :等待,当线程数量不满足 CountDownLatch 的数量的时候,执行此代码会阻塞等待,直到数量满足原创 2021-06-03 14:18:02 · 1304 阅读 · 6 评论 -
带你深入理解多线程 --- 锁策略篇
ThreadLocal 缺点 :不可继承行(子线程不能读取父线程的变量)脏数据(ThreadPool【复用】线程的复用会复用线程相关的静态变量)内存溢出【原因】ThreadPool(长生命周期) -》 Thread -》 ThreadLocal -》 Map -》 Entry -》 key,value(强引用)单例模式:饿汉方式(线程安全)懒汉方式(线程安全)DCL 双重效验锁阻塞式队列:生产者在队列满的情况下就会休眠消费者在队列为空的时候进行休眠乐观锁【策略】:它认为一原创 2021-05-30 00:16:49 · 317 阅读 · 0 评论 -
多线程案例 --- 单例模式(饿汉、懒汉)、阻塞式队列
ThreadLocal 使用:set:将私有变量设置到线程get:从线程终获取ThreadLocalremove:将线程的ThreadLocal移除initialValue:初始化withInitialValue:初始化ThreadLocal 使用场景:线程安全问题线程级别的数据传递ThreadLocal 缺点:不能实现父子线程之间的数据传递脏数据 - > ThreadLocal + 线程池(复用)内存溢出分析内存溢出线程池是长生命周期,而线程是执行完成任务线程原创 2021-05-26 20:36:03 · 201 阅读 · 0 评论 -
深度解析http协议
Url详解协议方案名:有http和https,两者区别为https相比http协议多了一层加密层,从而使得数据传输更安全。登录信息:这一部分是用户登录的账号和密码,由于不安全,现在几乎不用到了IP地址/域名:在浏览器输入该ip地址来跳转到网页,比如www.baidu.com端口号:http协议默认端口号为80,https协议默认端口号为443文件路径:该文件路径就是tomcat中webapps中定位到的资源路径。url参数:是追加到 URL 上的一个名称-值对,参数以问号 (?) 开始 并原创 2021-03-30 15:37:22 · 253 阅读 · 0 评论 -
对比分析线程休眠三种方式
线程休眠sleepsleep线程休眠方式休眠当前线程wait线程通讯机制wait举例wait方法面试问题wait 为什么要加锁?wait 为什么要释放锁?Thread.sleep(0) 和 Object.lock(0) 区别wait 和 sleep 的区别为什么 wait 会放到 Object 中而不是 Thread 中?LockSupport不传参传参wait 和 LockSupport 的区别sleepsleep线程休眠方式sleep线程休眠一共有 3 种方式:方式一:Thread.sleep原创 2021-05-13 17:33:02 · 1754 阅读 · 0 评论 -
死锁的概念以及处理方式
线程和锁的关系(一对多)一个线程可以拥有多把锁一把锁只能被一个线程锁拥有死锁造成的四个条件(同时满足)互斥条件(一个资源只能被一个线程持有,当被一个线程持有之后就不能被其他线程持有)请求拥有条件(一个线程持有了一个资源之后,又试图请求另一个资源)不可剥夺条件(一个资源被一个线程拥有之后,如果这个线程不释放此资源,那么其他线程不能强制获得此资源)环路等待条件(多个线程在获取资源时,形成了一个环形链条)如何解决死锁从以下两个条件如手,修改以下条件任意一个:请求拥有条件环路等待条件原创 2021-05-13 17:22:21 · 313 阅读 · 0 评论 -
排查死锁的三款工具流程介绍
排查死锁方法一:jconsole 工具方法二:jvisualvm 工具方法三:jmc 工具我首先写了一个死锁的代码,文件名叫ThreadDemo36方法一:jconsole 工具1.我们在 JDK 的 bin 目录下找到 jconsole.exe 文件,点击启动 jconsole2.选择我们本地进程的 ThreadDemo36 死锁代码,点击连接,并选择不安全的连接3.选择线程,点击检测死锁4.我们此时就可以看到出现死锁的两个线程,并且看到死锁的详细信息,拥有者,死锁的类,死锁的具体位置原创 2021-05-13 11:46:46 · 441 阅读 · 2 评论 -
面试必问系列 --- 多线程安全问题
线程安全用主线程来执行增加减少操作,这是安全线程 static class Counter { // 定义的私有变量 private int num = 0; // 任务执行次数 private final int maxSize = 100000; //num++; public void incrment() { for (int i = 0; i < maxSize原创 2021-05-01 21:49:26 · 763 阅读 · 1 评论 -
多线程的最全基本操作用法
线程进程是系统分配资源的最小单位,线程是系统调度的最小单位。一个进程内的线程之间是可以共享资源的原创 2021-04-30 21:36:59 · 484 阅读 · 2 评论 -
如何查看线程的详细信息
我们先创建一个线程/** * Created with IntelliJ IDEA. * Description:第一个线程的创建 * User: starry * Date: 2021 -04 -24 * Time: 16:34 */public class ThreadDemo1 { public static void main(String[] args) { // 创建线程 Thread thread = new Thread(new Run原创 2021-04-30 21:20:31 · 2670 阅读 · 3 评论 -
浅析计算机操作系统 之 进程线程
冯诺依曼体系结构硬件组成:冯诺依曼体系结构输入单元:包括键盘,鼠标,扫描仪,写板等中央处理器(CPU):含有运算器和控制器等输出单元:显示器,打印机等二进制:.java源文件----》.class字节码文件-----》机器码(OS)二进制,从而让cpu内核识别注意:CPU和输入设备或输出设备之间不能直接进行交互,必须依靠中间的存储部分(内存)内存 vs 硬盘:内存的读写速度要远远大于磁盘,内存读写速度是纳秒级别(10的-9次方),硬盘读写速度是微妙级别(10的-3次方)内存的价格原创 2021-04-24 19:46:32 · 197 阅读 · 0 评论 -
深度解析TCP/IP---网络原理的重重之重
传输层端口号端口号作用:找到应用程序(1)知名端口号:知名程序在启动之后占用的端口号(0-1023)ssh服务器, 使用22端口ftp服务器, 使用21端口telnet服务器, 使用23端口http服务器, 使用80端口https服务器, 使用443(2)动态端口号:1024-65535 最大端口号两个程序不能使用同一个端口号,一个程序可以使用两个端口号(理解:程序 – >人 ;端口号 --> 手机号)UDP协议16位源端口号:源程序的端口号,根据这个端口号可以定原创 2021-04-21 15:54:31 · 2894 阅读 · 7 评论 -
TCP编程实现自定义HTTP服务器
HPPT服务器实现原理实现步骤详细代码服务器部署实现原理因为HTTP是基于TCP的,那么我们会了TCP编程,那我们就可以自己做出一个HTTP服务器了首先我们要了解HTTP有什么内容,然后遵循HTTP的内容进行传输,就做出了自定义的HTTP服务器HTTP详细内容可以看我这篇文章https://blog.csdn.net/starry1441/article/details/115260350根据 uri 内容返回不同的信息如果 uri 里面包含了 404 ,给浏览器输出“未找到此页面”如果 u原创 2021-04-17 23:21:19 · 231 阅读 · 0 评论 -
TCP编程实现汉译英功能
TCP编程基础知识创建两端服务器端创建:ServerSocket客户端创建:Socket读写消息读取消息:BufferReader写入消息:BufferWriter其中Buffer叫作缓冲区(类似于菜鸟驿站)作用:高效地进行收发消息TCP 既有发送缓冲区,又有接收缓冲区UDP 没有发送缓冲区,只有接收缓冲区(因为无连接的特性)TCP编程实操服务器端package tcptest;import java.io.*;import java.net.ServerSocket原创 2021-04-17 23:18:12 · 304 阅读 · 0 评论 -
UDP编程制作对话机器人
UDPUDP对象UDP编程服务器端客户端UDP服务端发布小机器人对话UDP对象服务器端:一经启动就会对外提供服务;不知道客户端什么时候发送请求;它是被动接收的一方【就相当于饭店,一开始营业,就要时刻准备为顾客服务】客户端:在需要的时候才发起连接;它是主动发送请求的一方【相当于顾客,什么时候饿了,就回去饭店点餐吃】UDP编程服务器端启动一个UDP服务器端(IP、端口号)端口号是需要自己手动设置的(1024一前的端口号被称为知名端口号,都是被占用的,我们自己定义的端口号从9000开始往原创 2021-04-15 16:00:55 · 315 阅读 · 0 评论 -
java核心知识---网络原理初识
网络原理初识网络发展形态网络分层协议OSI 7层协议TCP/IP 4层协议网络在传输过程中必须依靠的5个信息传输层的TCP/UDP协议数据传输过程网络中的地址管理IP地址MAC地址网络发展形态独立模式: 计算机之间相互独立网络互联: 多台计算机连接在一起, 完成数据共享局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起广域网WAN: 将远隔千里的计算机都连在一起;移动互联网:现阶段是pc-pad-手机 都进行网络联机物联网:所有电器设配都可以进行网络连接网络分层协议OSI原创 2021-04-15 11:35:13 · 179 阅读 · 0 评论