![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaEE初阶
文章平均质量分 92
cpu如何工作,操作系统、多线程、文件操作……
代码小娥
每天很忙,尽量每天都看一次私信。看到都会回答,若是没有及时回复,就多发几次,比如在作品下面去多评论几次。欢迎交流,共同进步
展开
-
https基础概念
首先,https不是http的复数形式。原创 2024-06-25 21:59:28 · 717 阅读 · 1 评论 -
http协议
前置知识1.什么是http协议?答:http协议是处于应用层的一个协议,用来约定数据在网络传输中的格式等2.使用场景?答:网页和服务器的交互、手机app和服务器的交互3.如何学习http协议格式?答:学习一个协议,就要认识它的报文结构;我们可以通过“抓包”工具,就可以捕获到http协议的请求报文和响应报文的内容4.一条http请求和响应是什么样的?原创 2024-06-21 18:02:08 · 661 阅读 · 1 评论 -
八股文之JVM
在判断谁是垃圾这一步,Java是采取很保守的做法,也就是可以保证只会释放后续不会再使用的对象,后续仍会使用到的对象,是不会进行回收的,所以才用的策略是:判断某个对象是否存在引用指向,如果没有引用指向,就可以判断为垃圾,反之不行。如果自己的代码中写的类的名字和标准库/扩展库冲突了,JVM会确保加载的类是标准库的类(不会加载自己写的类),如果标准库中的类无法加载,那么Java进行就没有办法正常工作了。而对于堆,保存的主要是对象,换句话说,也就是主要回收对象,那怎么回收对象呢?所以这就是引用计数最大的一个问题。原创 2024-06-17 16:51:57 · 1260 阅读 · 1 评论 -
网络编程入门之UDP编程
在前面,我已经介绍过一次方法了,现在又准备介绍一次,是为了水字数吗?那当然不是,前面两个类中的一些方法,只是为了让你认识到这些类,和实例化了对象后该怎么去做。接下来,我们再进一步结合代码来介绍方法,而且主要是和DatagramPacket有关的方法。(1)获取ip地址和端口号直接调用方法分别获得方法解释获取ip地址获取端口号在代码中的体现(2)求数据长度这里是什么意思呢?你一定看过这些代码这些求数据长度的有什么区别?该怎么使用?为什么要这样写?就是我们接下来要介绍的字符和字节的区别。原创 2024-05-08 21:11:10 · 1215 阅读 · 34 评论 -
三个关于文件操作的实例
内容是:通过文件操作,完成一些小的需求。用来查询某文件或者某个文件里面的关键字。原创 2024-05-05 22:32:39 · 720 阅读 · 7 评论 -
网络基础知识
(1)协议,其实就是一种约定,一种规则。通信双方,对于通信规则的约定,一定是通信双方都可以得到认可的。(2)例子A和B约定某一天网恋见面,因为没有真实见过面,所以他们就会事先约定好一种规则。比如A穿一条白色连衣裙,B穿着西装。两个人之间,也是可以称为一种协议的。(3)为什么通信需要协议一般通信都是指不同主机之间发生的,但是两个主机往往都不一样(设备、操作系统、硬件),所以需要约定协议。原创 2024-05-05 11:53:05 · 1038 阅读 · 2 评论 -
文件API及其操作
这里介绍两类文件操作、三个文件类。包括文件系统操作(File类)、文件内容操作(操作字节流、操作字符流)原创 2024-05-03 23:05:47 · 1292 阅读 · 3 评论 -
文件与IO基础常识知识
在这里,只介绍理论知识,不介绍代码。原创 2024-05-03 10:08:08 · 890 阅读 · 2 评论 -
JUC常见类
JUC是java.util.concurrent的简称,这个包里面存放的都是和多线程相关的类,在面试中非常的重要。原创 2024-05-02 21:28:00 · 765 阅读 · 1 评论 -
CAS原理及其API原子类
(1)问题来源CAS的核心操作是:比较相等,然后进行交换操作。也就是说,只要发现两个对象相等,就会进行交换操作。因此,就会存在一个问题:两个对象相等,但是不代表某个对象没有被修改过,CAS也无法发现问题。也就是其中一个对象的值从A被修改成B,最后又修改回A,然后进行比较操作,也是相等的。所以ABA问题也就是:CAS无法区分,当前的数据在比较相等前,是否被修改过。虽然ABA问题产生有危害的Bug几率很小,但是某些情况,就是严重问题。原创 2024-04-28 12:46:35 · 876 阅读 · 2 评论 -
多线程八股文之锁模式及优化策略
当尝试加锁的时候,锁被占用了,也就是发生锁冲突,这个时候,不会像自旋锁那样一种等待,而是被挂起(进入阻塞状态),此时该线程不会参与调度。一直到这个锁被释放,系统才会去唤醒该线程,重新进入竞争锁的队列中,但是已经不是一直在等待锁,所以拿到锁的速度会更慢,但是更加节省cpu。此时,自旋锁就会不停的循环等待锁的释放,在锁释放的第一时间,就可以拿到锁,拿到锁的效率更快了,但是会消耗很多cpu的资源。这是一个相对的锁策略,在加锁的时候,会预测当前这个锁的所冲突是大或者小,就会根据大或小决定锁的策略。原创 2024-04-28 12:43:09 · 659 阅读 · 0 评论 -
多线程代码案例之定时器
(1)“定时器”类似闹钟,在指定的时间会触发一定的操作(2)多线程中的定时器,是通过指定一个任务(Runnable),并且加上一个时间(例如:3000ms);这个任务不会立即被执行,而是会等待3000ms后才会开始执行(3)上面这种效果称为:延时执行/定时执行。原创 2024-04-22 22:45:55 · 889 阅读 · 3 评论 -
多线程代码案例之线程池
池,在计算机中很常见。(1)池举例像我们之前已经接触过的:常量池,现在准备学习的线程池等等。像:常量池、线程池、数据库连接池、进程池、内存池等等,它们之间用到的思想都是差不多的。(2)使用池的目的目的:提高效率(3)如何提高效率相比大家对“养鱼”这个词语都不陌生吧,它不是普通的养鱼,而“养鱼”的人就称为“海王”。而“养鱼”就需要一个池,暂且称它为鱼池。当一个海王不想要这条鱼时,就可以直接丢弃,并且可以直接从鱼池中再选取一条鱼。如果没有池,那么丢弃之后,就要花费各种时间和精力再去寻找下一条鱼。原创 2024-04-22 21:53:50 · 698 阅读 · 0 评论 -
多线程代码案例之阻塞队列
(1)阻塞队列1)当队列为空时,尝试出队列;此时,队列会阻塞等待,直到队列不为空才继续执行出队列操作。2)当队列为满时,尝试入队列;此时,队列就会阻塞等待,直到队列不为满为止才能继续执行入队操作。(2)消息队列并非遵循常规的先进先出,而是带有一个topic关键字。当出队时指定某个topic,就会先出topic下的元素(topic内部就遵循先进先出)原创 2024-04-14 15:49:54 · 1280 阅读 · 10 评论 -
多线程代码设计模式之单例模式
(1)设计模式就是一种代码的套用模板。例如:一类题型的步骤分别有哪些,是可以直接套用的。(2)像棋谱,也是一种设计模式。根据棋谱去下棋,棋术自然不会很差。(3)官方定义就是说:设计模式就是一套经过反复使用、多人知晓、经过分类、代码设计经验的总结(4)使用代码设计模式可以提高代码的下限。更容易被人理解,使用等等本文我们主要介绍设计模式中的单例设计模式(1)在实际的业务中,有的类,只需要有一个对象就够了(2)比如,要写一个类,用来实现一些功能,可以加载上百G的数据。原创 2024-04-07 10:57:04 · 783 阅读 · 6 评论 -
线程安全问题与解决方法~
(1)在程序运行的结果中,只要结果有一点点和预期不一样,那就是该程序有bug,不算合格程序。(2)在多线程代码中产生的bug,我们就称为“线程安全问题”。(1)在这里,会介绍锁操作的两个方面----加锁和解锁(2)这里是利用锁的一个性质,当一个线程对一个箱子加锁之后,另一个线程再想对其加锁,就会产生阻塞,也就是排斥的效果。(3)例如:当t1线程对A加锁之后,t2线程再对A加锁,t2线程就会阻塞等待(也就不会干扰到t1线程执行指令);原创 2024-04-04 23:35:19 · 1535 阅读 · 1 评论 -
Thread常用的方法及线程状态原因解析
(1)这是一个线程类,用来实例化线程对象(2)该类中,有很多方法。普通成员方法,可以使用对象的引用进行调用,像statr()方法等等;而静态方法,则需要通过类名去调用,如:Thread.sleep()等等。(3)我们通过Thread来实例化对象,产生的对象,我们默认称为“线程对象”,start()之后,线程才产生。因此,类中拥有的各种属性方法,我们后面就默认称为该线程的属性和方法。(4)线程,有哪些状态、属性,方法,本质上都是Thread中的;因此我们实例化出的线程,也就具有了。后续所说的线程。原创 2024-03-30 22:40:27 · 1343 阅读 · 4 评论 -
线程创建方式、构造方法和线程属性
而线程的状态、是否被中断,在接下来的文章中重点介绍。因为上面的情况,Thread对象和线程的生命周期不完全一样,所以不容易直接判断,就需要借助一些方法来获取当前线程的属性-是否存活。结论:说明他们之间没有什么关系,无法真正的判断线程是否结束了,所以可以通过isAlive()方法判断当前的线程是否还存货。创造线程的基本两步:(1)使用run方法记录线程要做的任务(2)使用线程的引用 调用start开启线程。这里只简单的查看一个线程是否被中断,至于如何中断一个线程,在后面介绍线程的核心操作部分介绍。原创 2024-03-28 22:54:51 · 824 阅读 · 1 评论 -
一文即可帮助你认识进程和线程~
(1)一个程序,允许起来,在操作系统中就会出现一个进程;可以理解成进程就是一个跑起来的程序。(2)进程是程序的一次执行,是一组指令的集合。(3)进程可以视为是 操作系统进行资源分配的基本单位。(1)线程其实是进程的一部分(2)一个进程,最少有一个线程,也可以包含多个线程。原创 2024-03-28 12:37:41 · 1105 阅读 · 7 评论 -
理解CPU与执行指令原理
(1)指令,可以粗略的认为是CPU在被设计的时候,给程序员提供的一些“编程接口”。所以指令≈API(2)不同的CPU,所提供的指令不一样,但大体相同。(3)CPU有多种架构,不同架构的CPU,支持的指令也就不一样(4)指令=操作码+操作数(内存地址或者寄存器编号)原创 2024-03-27 17:51:49 · 1190 阅读 · 5 评论