笔记
文章平均质量分 93
阿布~
好好努力,会遇到更好的事情
展开
-
了解 JVM 中几个相关问题 — JVM 内存布局、类加载机制、垃圾回收
了解 JVM 中几个相关问题 — JVM 内存布局、类加载机制、垃圾回收原创 2022-06-26 11:57:42 · 286 阅读 · 1 评论 -
Java文件操作 —— IO
硬盘的基本构造:但是受限于机械硬盘的硬件结构,盘片的转速不可能无限高,机械硬盘的读写速度难以再提升更快的速度,只能在容量扩充方向发展。固态硬盘(SSD):固态硬盘的读写速度要比机械硬盘高很多。整体的文件系统,就是如上图这样一种树形的结构,如果是一个普通文件,就是树的叶子节点;如果是一个目录文件,目录文件就可以包含子树,这个目录就是非叶子节点;每个目录文件中可以包含多个文件,所以称为一个 N叉 树。路径分为两种:绝对路径 — 以盘符开头从树型结构的角度来看,树中的每个结点都可以被一条从根开始,一直到达原创 2022-06-19 12:02:17 · 482 阅读 · 0 评论 -
计算机网络—网络原理之<TCP/IP 五层协议 >图解+详述
计算机网络原理之,每一层的协议介绍,包括详细介绍 TCP中可靠性机制“三次握手,四次挥手”,图解+细节+划重点 。原创 2022-06-19 12:01:07 · 8326 阅读 · 1 评论 -
HTTP协议— 基于 TCP 的请求-响应协议 相关交互过程详细介绍
HTTP 叫做:超文本传输协议(Hyper Text TransferProtocol,HTTP)是一个简单的请求-响应协议,它通常运行在 TCP/IP 五层协议栈的应用层。是一种非常广泛的**应用层协议**(客户端和服务器建立连接在应用层)。经典面试题:GET 和 POST 的区别首先先下定论:GET 和 POST 没有本质区别(可以相互替代使用),具体来说,相当于:GET 能使用的场景,也能替换成 POST;POST 使用的场景,也能替换成 GET。语义上的区别:GET 通常是用来取数据的;PO原创 2022-05-11 11:53:49 · 3325 阅读 · 4 评论 -
JavaScript 常用API — WebAPI 详细介绍+实例描述
作为一个想要做后端开发的大三学生,总觉得不了解前端内容比较难受,就通过两篇博客来写写代码,整理整理 ~ 供自己之后复习查阅,也提供给大家有需要的人查看~原创 2022-05-06 13:31:30 · 2832 阅读 · 1 评论 -
(JUC 下典型的类)Java 并发包中线程同步器
文章介绍了并发包中关于线程协作的一些重要类。首先 CountDownLatch 通过计数器提供了更灵活的控制,只要检测到计数器值为 0,就可以往下执行,这相比于 join 必须等待线程执行完毕后主线程才会继续向下运行更灵活。另外,CyclicBarrier 也可以达到 CountDownLatch 的效果,但是后者在计数器值变为 0 后,就不能再被复用,而前者则可以使用 reset 方法重置后复用,前者对同一个算法但是输入参数不同的类似场景比较使用。而 Semaphore 采用了信号量递增的策略,一开始并不原创 2022-04-22 11:32:13 · 844 阅读 · 10 评论 -
并发编程中常见的锁策略<包含详细介绍CAS机制和ABA问题>
常见锁策略乐观锁与悲观锁 <CAS机制的ABA问题>公平锁与非公平锁独占锁与共享锁<锁一直是围绕线程安全来实现的>可重入锁自旋锁原创 2022-04-20 09:16:13 · 1925 阅读 · 11 评论 -
设计模式之一——单例模式
许多时候整个系统只需要拥有⼀个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在⼀个文件中,这些配置数据由⼀个单例对象统⼀读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种⽅式简化了在复杂环境下的配置管理。原创 2022-04-19 12:32:32 · 811 阅读 · 7 评论 -
关于Java线程池ThreadPoolExecutor相关介绍
线程池主要解决两个问题:一是当执行大量异步任务时线程池能够提供较好的性能。在不使用线程池时,每当需要执行异步任务时直接 new 一个线程来运行,而线程的创建和销毁是需要开销的。线程池里面的线程是可以服用的,不需要每次执行异步任务时都重新创建和销毁线程等。每个 ThreadPoolExecutor 也保留了一些基本的统计数据,比如当前线程池完成的任务数目等。原创 2022-04-14 21:24:06 · 1041 阅读 · 23 评论 -
线程休眠和指定唤醒—关于 LockSupport 相关介绍
JDK 中的 rt.jar 包里面的 LockSupport 是个工具类,它的主要作用是挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。原创 2022-04-13 12:12:41 · 901 阅读 · 0 评论 -
Java 多线程—线程通讯【线程通知与等待,wait / notify() / notifyAll()】
线程通讯就是通过实现多线程之间的交互,让线程的每一个独立的“执行流”通过交互相互配合,在能够有效避免线程并发和死锁的的问题下发挥多线程的优势,更高效的处理一些时间片短,任务量大的执行任务。在 Java 当中,实现线程之间进行通讯和配合执行的功能有三个方法:wait() / wait(long timeout):让线程进入等待状态。no原创 2022-04-11 20:12:48 · 1180 阅读 · 10 评论 -
Java 线程死锁及如何避免死锁介绍
死锁是指两个或两个以上的线程在执行过程中,**因争夺资源而造成的互相等待**的现象,在无外力作用的情况下,这些线程会一直相互等待而无法继续运行下去,原创 2022-04-05 01:09:24 · 4221 阅读 · 10 评论 -
Java 中的线程安全性问题——synchronized / Lock
多线程的“共享性”,意味着在程序中的变量可以由多个线程同时访问。而“可变性”则意味着变量的值在其生命周期内可以发生变化。本篇博客记录在 Java 的多线程学习中如何防止多个线程在数据上发生不受控的并发访问~多线程的“共享性”,意味着在程序中的变量可以由多个线程同时访问。而“可变性”则意味着变量的值在其生命周期内可以发生变化。本篇博客记录在 Java 的多线程学习中如何防止多个线程在数据上发生不受控的并发访问~一个对象是否需要是线程安全的,取决于它是否被多个线程访问。这指的是在程序中访问对象的方原创 2022-03-29 01:22:13 · 1644 阅读 · 29 评论 -
Java 多线程的几种状态
Java中的线程的生命周期大体可分为5钟状态新建(NEW): 新创建了一个线程对象。可运行(RUNNABLE): 线程对象创建后,其他线程(比如main线程) 调用了该线程的 start() 方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取 cpu 的使用权。运行中(RUNNING): 可运行状态(runnable) 的线程获得了cpu 时间片,执行程序代码。阻塞(BLOCKED): 阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了 cpu 时间片(timeslice),原创 2022-03-26 23:01:27 · 1510 阅读 · 13 评论 -
Thread 类的基本用法 — 学习笔记
Thread 类的基本用法线程创建线程等待线程休眠yield 让出执行权线程创建线程创建与运行Java中有三种线程创建方式, 分别为实现 Runnable 接口的 run 方法, 继承 Thread 类并重写 run 的方法,和使用带有返回值的 FutureTask 方式。继承 Thread 类方式的实现/** * 继承Thread类创建方式,并重写run方法 */public class ThredDemo { public static void main(Strin原创 2022-03-25 16:45:52 · 1097 阅读 · 9 评论 -
理解—进程和线程之间的联系
进程如果从计算机发展的时间线来讲,在早期的计算机中不含操作系统,他们从头到尾只执行一个程序,并且这个程序能访问计算机中所有的资源。操作系统的出现使得计算机每次能运行多个程序,并且不同的程序都能够在自己单独的进程中运行,操作系统为各个独立的进程分配各种资源。那么从程序层面来讲:进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。线程在早期的分时系统中,每个进程相当于一台虚拟的冯·诺依曼计算机,它拥有存储指令和数据的内存空间,根据机器语言的语义以串行的方式执行指令。那..原创 2022-03-24 23:31:12 · 1130 阅读 · 10 评论 -
MySQL学习记录 【基本操作 → 数据操作 → 高级查询 → 联合查询】 总结
MySQL学习记录 【基本操作 → 数据操作 → 高级查询 → 联合查询】 总结数据库和表的基本操作—11. SQL命令分类2. 数据库操作2.1 MySQL 数据类型2.2 表结构操作3. MySQL增删改查3.1 CRUD二级目录三级目录数据库和表的基本操作—11. SQL命令分类DDL【Data Definition Language】数据定义语言,用来维护存储数据的结构代表指令: create, drop,alter;它的作用是做了一个数据库表的结构的创建和操作数据库结构的语言。数据库表为原创 2022-03-18 13:14:16 · 952 阅读 · 6 评论 -
Java通过 JDBC 连接数据库操作
Java通过 JDBC 连接数据库操作1. 程序是怎么操作数据库的?2. 什么是JDBCJDBC 工作原理3. JDBC 使用3.1 创建项目并添加 MySQL 驱动3.2 使用代码操作数据库3.2.1 获得数据源3.2.2 获得连接3.2.3 获得执行器3.3.4 查询或操作数据库3.3.5 关闭数据库连接首先,我们想要操作一个数据库服务器,需要有一个数据库客户端,以 MySQL 数据库为引例,最直接的数据库客户端它自己驱动窗口的 ① 命令行工具。一般我们还可以配置出一些 ② 带界面的GUI客户原创 2022-03-14 23:55:57 · 8124 阅读 · 4 评论 -
MySQL事务-知识点总结
MySQL事务-知识点总结1. 什么是事务2. 理解事务 - (用转账操作示例)3. 事务的使用4. 事务的四大特性(ACID)MySQL 事务隔离级别有 4 种(重要)1. 什么是事务事务(Transaction)是将⼀组操作封装成⼀个执⾏单元(封装到⼀起),这⼀个执⾏单元要么⼀起执⾏ 成功,要么⼀起失败,不会出现执⾏“⼀半”的情况。一个最小的执行单元;通常一个事务对应一个完整的业务(例如银行的转账业务,只有转出者金额的减少对应到接收者金额增多这样一个不会从中间断开的一个动态平衡的过程,也就是一个原创 2022-03-14 13:31:29 · 2222 阅读 · 6 评论 -
MySQL索引-知识点总结
MySQL索引-知识点总结1.什么是索引2.索引的使用3.索引底层的数据结构·> MySQL 作为一个数据存储的工具,最基本的就是 MySQL 的基础使用,我们首先要会使用这个工具,会写 SQL 语句,懂得 MySQL 存储数据和 SQL 语句操作数据的机制。·> 那么第二点,我们就要考虑如何让能够把 MySQL 用好,这就是我本文想要整理的关于 MySQL 索引的使用,索引是能够提高 MySQL 性能的,它能够让我们把 MySQL 用得更快,用的更好。索引也是面试中容易考察到的点。·&原创 2022-03-13 13:21:49 · 2350 阅读 · 3 评论 -
七大基于比较的排序[总结]
七大基于比较的排序插入排序直接插入排序希尔排序选择排序选择排序堆排序交换排序冒泡排序快速排序随机化快排双路快排三路快排归并排序插入排序插入排序是一种比较常见的排序方法,它主要包含直接插入排序,希尔排序和折半插入等集中常见的排序方法。直接插入排序首先,我们先来想象一个场景,一个有序的数组,现在需要往这个有序数组中添加一个新的数据,那么此时,需要找到这个数据的合适位置,将大于它的元素后移,将它直接插入就可以了。这是一个动态的,一个一个往有序集合中添加数据的过程,我们可以通过这种方法保持集合中的数据一原创 2022-02-20 12:19:02 · 485 阅读 · 0 评论 -
Java面向对象编程的特征—封装、继承、多态详细介绍
面向对象编程的特征 封装 继承三 态总结原创 2021-12-28 20:08:39 · 196 阅读 · 0 评论