- 博客(43)
- 收藏
- 关注
原创 Redis学习笔记 ---- 常见面试题
Redis 是一种的,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于等场景。Redis 提供了多种数据类型来支持不同的业务场景,比如并且的,因为执行命令由负责的,不存在并发竞争的问题。Redis 具备「高性能」和「高并发」两种特性。操作 Redis 缓存就是直接操作内存,速度相当快;直接访问 Redis 能够承受的请求是远远大于直接访问 MySQL 的。
2023-03-27 21:19:15
640
原创 操作系统学习笔记 ---- 网络系统
直接内存访问(Direct Memory Access) 技术。在进行 I/O 设备和内存的数据传输的时候,的工作,而 CPU 不再参与任何与数据搬运相关的事情,这样 CPU 就可以去处理别的事务。DMA将磁盘控制器缓冲区的数据拷贝到内存缓冲区(该过程不占用CPU)传统的文件传输:数据读取和写入是从用户空间到内核空间来回复制,而内核空间的数据是通过操作系统层面的 I/O 接口从磁盘读取或写入。期间共发生了 4 次用户态与内核态的上下文切换,还发生了 4 次数据拷贝。
2023-03-17 10:32:04
523
原创 操作系统学习笔记 ----文件系统
基本数据单位是 文件Linux 文件系统会为每个文件分配两个数据结构:索引节点(index node)和目录项(directory entry),用来记录文件的元信息和目录层次结构。索引节点( inode),用来记录文件的元信息,比如 inode 编号、文件大小、访问权限、创建时间、修改时间、数据在磁盘的位置等等。索引节点是文件的唯一标识。同样占用磁盘空间目录项(dentry),用来记录文件的名字、索引节点指针以及与其他目录项的层级关联关系。目录项是由内核维护的一个数据结构,不存放于磁盘,而是缓存在内存。
2023-03-14 10:15:17
424
原创 ThreadLocal学习笔记
1、Spring采用Threadlocal的方式,来保证单个线程中的数据库操作使用的是同一个数据库连接,同时,采用这种方式可以使业务层使用事务时不需要感知并管理connection对象,通过传播级别,巧妙地管理多个事务配置之间的切换,挂起和恢复。每一个ThreadLocal对象都有一个threadLocalHashCode,在插入过程中,根据这个hash值,定位到table中的位置i,如果当前位置是空的,就初始化一个Entry对象放在位置i上;在使用的最后用remove把值清空就好了。
2023-02-27 14:45:14
108
原创 操作系统学习笔记 ---- 内存管理
线程是进程当中的一条执行流程。同一个进程内多个线程之间可以共享代码段、数据段、打开的文件等资源,但每个线程各自都有一套独立的寄存器和栈,这样可以确保线程的控制流是相对独立的。· 优点:· 一个进程中可以同时存在多个线程;· 各个线程之间可以并发执行;· 各个线程之间可以共享地址空间和文件等资源;· 缺点:· 当进程中的一个线程崩溃时,会导致其所属进程的所有线程崩溃(C/C++,Java不会)
2023-02-22 17:22:03
410
原创 操作系统学习笔记 ---- 硬件结构
运算器、控制器、存储器、输入设备、输出设备运算器、控制器是在中央处理器里的,存储器就我们常见的内存,输入输出设备则是计算机外接的设备,比如键盘就是输入设备,显示器就是输出设备。存储单元和输入输出设备要与中央处理器打交道的话,离不开总线。
2023-02-20 21:23:50
223
原创 计算机网络学习笔记 ---- TCP面向字节流协议
由包头和数据组成,其中包头包是固定大小的,而且包头里有一个字段来说明紧随其后的数据有多大。比如这个消息结构体,首先 4 个字节大小的变量来表示数据长度,真正的数据则在后面。当接收方接收到包头的大小(比如 4 个字节)后,就解析包头的内容,于是就可以知道数据的长度,然后接下来就继续读取数据,直到读满数据的长度,就可以组装成一个完整到用户消息来处理了。
2023-02-20 21:03:31
233
原创 计算机网络学习笔记 ---- TCP三次握手、四次挥手
TCP 是面向连接的可靠的、基于字节流的传输层通信协议。是一个工作在传输层的可靠数据传输的服务,它能确保接收端接收的网络包是无损坏无间隔非冗余和按序的。什么是连接:用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括 Socket、序列号和窗口大小称为连接。建立一个 TCP 连接是需要客户端与服务端达成下面三个信息的共识。Socket:由 IP 地址和端口号组成序列号:用来解决乱序问题等窗口大小:用来做流量控制TCP四元组可唯一确定一个连接。
2023-02-18 21:27:04
627
原创 计算机网络学习笔记 ---- RPC、WebSocket与HTTP区别
HTTP 协议(Hyper Text Transfer Protocol),又叫做超文本传输协议。我们用的比较多,平时上网在浏览器上敲个网址就能访问网页,这里用到的就是 HTTP 协议。而 RPC(Remote Procedure Call),又叫做远程过程调用。它本身并不是一个具体的协议,而是一种调用方式。比如 比较有名的gRPC,thrift。
2023-02-15 14:35:27
1250
1
原创 计算机网络学习笔记 ---- HTTP/2、HTTP/3
第一点,,仍然用「http://」表示,用「https://」表示,于是只需要浏览器和服务器在背后自动升级协议,这样可以让用户意识不到协议的升级,很好的实现了协议的平滑升级。第二点,,还是基于 TCP 协议传输,应用层方面为了保持功能上的兼容,HTTP/2 把 HTTP 分解成了「语义」和「语法」两个部分,「语义」层不做改动,与 HTTP/1.1 完全一致,比如请求方法、状态码、头字段等规则保留不变。HTTP/2 在「语法」层面做了很多改造,基本改变了 HTTP 报文的传输格式。
2023-02-15 10:59:31
521
原创 计算机网络学习笔记 ---- HTTPS
其中每一个「框」都是一个记录(record),是 TLS 收发数据的基本单位,类似于 TCP 里的 segment。多个记录可以组合成一个 TCP 包发送,所以通常经过「四个消息」就可以完成 TLS 握手,也就是需要 2个 RTT 的时延,然后就可以在安全的通信环境里发送 HTTP 报文,实现 HTTPS 协议。不同的密钥交换算法,TLS 的握手过程可能会有一些区别。考虑到性能的问题,双方在加密应用信息时使用的是,而对称加密密钥是的,为了保证对称加密密钥的安全性,所以使用的方式来。
2023-02-15 09:27:35
317
原创 计算机网络学习笔记 ---- HTTP/1.1
避免发送 HTTP 请求的方法就是通过。HTTP 协议的头部有不少是针对缓存的字段。客户端会把第一次请求以及响应的数据保存在本地磁盘上,其中将请求的 URL 作为 key,而响应作为 value,两者形成映射关系。服务器在发送 HTTP 响应时,会估算一个过期的时间,并把这个信息放到响应头部中,这样客户端在查看响应头部的信息时,一旦发现缓存的响应是过期的,则就会重新发送网络请求。
2023-02-14 10:09:55
209
原创 计算机网络学习笔记 ---- 基础篇
TCP/IP 网络通常是由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层。网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。
2023-02-11 20:25:03
633
原创 JAVA学习笔记 -- 设计模式
Spring框架总体架构图:核心容器由 beans、core、context 和 expression 4个模块组成· spring-beans和spring-core模块是Spring框架的核心模块,包含控制反转(IOC)和依赖注入(DI)。BeanFactory使用控制反转对应用程序的配置和依赖性规范与实际的应用程序代码进行分离。
2022-11-18 17:33:48
404
原创 JAVA学习笔记 -- JUC并发编程
遗留的安全集合,如Hashtable,其方法都是用synchronized来修饰修饰的安全集合,如SynchronizedMap,直接调用map的方法,但会增加synchronized的修饰JUC 安全集合· Blocking大部分实现基于锁,并提供用来阻塞的方法· CopyOnWrite 之类容器修改开销相对较重· Concurrent 类型的容器· 内部很多操作使用cas优化,一般可提供较高吞吐量· 弱一致性。
2022-10-27 15:51:20
617
原创 JVM--学习笔记(四) --内存模型
java内存模型 是 Java Memory Model(JMM),JMM定义了一套在多线程读写共享数据(成员变量、数组)时,对数据的可见性、有序性和原子性的规则和保障例如,完成静态变量的自增、自减需要在主存和线程内存中进行数据交换:先从主内存中读取i值,然后在线程内存中进行操作,最后把i值重新赋值给主内存synchronized(同步关键字),可用来修饰成员变量和静态成员变量,它可以避免线程从自己的工作缓存中查找变量的值,必须到主存中获取它的值,线程操作volatile变量都是直接操作主存。
2022-09-06 14:49:39
156
原创 JVM--学习笔记(三) --类加载与字节码技术
想加载非classpath随意路径中的类文件· 都是通过接口来使用实现,希望解耦时,常用在框架设计· 这些类希望予以隔离,不同应用的同名类都可以加载,不冲突,常见于tomcat容器1、继承ClassLoader父类2、要遵从双亲委派机制,重写findClass方法(注意不是重写loadClass方法,否则不会走双亲委派机制)3、读取类文件的字节码4、调用父类的defineClass方法来加载类5、使用者调用该类加载器的loadClass方法。...
2022-08-31 21:38:20
270
原创 SpringCloud微服务-----面试内容
Nacos内部接收到注册请求时,不会立即写数据,而是将服务注册任务放入一个阻塞队列就立即响应给客户端。然后利用线程池读取阻塞队列中的任务,异步来完成实例更新,从而提高并发写能力。...
2022-07-27 12:28:33
288
原创 SpringCloud微服务---学习笔记(二)--多级缓存
传统缓存策略一般是请求到达Tomcat,先查询Redis,如果未命中则查询数据库。存在问题:多级缓存方案多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性能用作缓存的Nginx是业务Nginx,需要部署为集群,再有专门的Nginx用来做反向代理:缓存分两类:1.1.1 CaffeineCaffeine是基于Java8开发的,提供了近乎最佳命中率的高性能的本地缓存库(Spring内部的缓存使用的就是Caffeine)Caffeine提供三种缓存驱逐策略:·
2022-07-12 15:23:52
1109
原创 SpringCloud微服务---学习笔记(一)
微服务技术栈图示:单体架构:将业务所有功能集中在一个项目中开发,打成一个包部署。优点:缺点:分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发(一个服务)优点:微服务一种经过良好架构设计的分布式架构方案特征:微服务技术对比企业需求:SpringCloud与SpringBoot版本兼容关系:注意事项:1、不同微服务,不能重复开发相同业务2、微服务数据独立,不访问其他微服务的数据库3、微服务将自己的业务暴露为接口,供其他微服务使用基于RestTemplate发起的
2022-07-07 20:32:15
1375
原创 Spring注解开发学习笔记
1 IOC1.1 工厂模式使用工厂中方法代替new形式创建对象的一种设计模式1.2 Inversion of Control控制翻转一种思想,用于消减代码间的耦合。实现思想:利用工厂设计模式,把创建对象代码从具体类中剥离出来,交由工厂完成,从而降低代码间依赖关系。耦合分类:1 内容耦合(最高程度耦合) 当一个模块直接修改 或 操作另一个模块数据时,或一个模块不通过正常入口而转入另一个模块2 公共耦合 两个 或 两个以上模块共同引用一个全局数据项3 外部耦合 一组模块都访问同一全局简单
2022-05-07 16:51:08
1414
原创 SSM整合学习笔记
1 原始整合方式步骤一:创建数据库表步骤二:创建Maven工程导入坐标<dependencies> <!--spring相关--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.5.RE
2022-03-04 16:00:42
487
原创 Mybatis、Mybatis-Plus学习笔记
1 Mybatis简介1.1 原始jdbc分析存在问题:1 数据库连接、创建、释放 频繁造成系统资源浪费2 sql语句 硬编码,不易维护3 查询操作,需手动将结果集中的数据手动封装到实体中。 插入操作,需手动将实体的数据设置到sql语句的占位符位置。应对方案:1 使用数据库连接池初始化连接资源2 将sql语句抽取到xml配置文件中3 使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射1.2 Mybatis基于java的持久层框架,它内部封装了jdbc,只需
2022-03-03 17:12:37
1700
原创 Spring学习笔记
1 Spring配置数据源1.1 注解开发原始注解: * @Component:使用在类上 用于实例化Bean * @Controller:使用在web层类上 用于实例化Bean * @Service:使用在service层类上 用于实例化Bean * @Repository:使用在dao层类上 用于实例化Bean * @Autowired:使用在字段上 用于根据类型依赖注入 * @Qualifier:结合@Autowired一起使用 用于根据名称进行依赖注入 * @Resource:相当
2022-02-28 15:37:35
347
转载 根据数据范围判断时间复杂度
一般ACM或者笔试题,或者力扣上的题目的时间限制是1秒或2秒。在这种情况下,C++代码中的操作次数控制在 1e7 为最佳。我们做题时可以根据不同数据范围,知道代码的时间复杂度和算法该如何选择(n越小说明我们可以使用越暴力、时间复杂度越高的解法):n≤30, 指数级别, dfs+剪枝,状态压缩dpn≤100 => O(n3),floyd,dpn≤1000 => O(n2),O(n2logn),dp,二分分界点(一旦n到达1e4,就不适合n2的暴力解法)n≤10000 => O.
2022-02-16 15:38:39
698
原创 SpringMVC学习笔记
1 概述SpringMVC 是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架1.1 开发步骤1 导入SpringMVC包2 配置Servlet3 编写Controller4 将Controller使用注解配置到Spring容器中(@Controller)5 配置spring-mvc.xml文件(配置组件扫描)6 执行访问测试·...
2022-02-16 11:11:49
230
原创 Git分布式版本控制工具学习
1 概述应用场景:1 备份2 代码还原3 协同开发4 代码追溯常用版本控制器的方式:1 集中式: 版本库集中存放在中央服务器里,必须联网 ,如SVN、CVS2 分布式: 无需联网,每人都有一个完整的版本库,如GitGit工作流程图命令如下: 1 clone:从远程仓库中克隆代码到本地仓库 2 checkout:从本地仓库中检出一个仓库分支然后修订 3 add:在提交前先将代码提交至暂存区 4 commit:提交到本地仓库(保存修改的各种历史版本) 5 fetch:从远
2021-11-18 21:40:43
2190
原创 Springboot学习
SpringBoot概述SpringBoot 是使用最小的配置去启动Spring的项目。提供一种快速使用Spring项目的方式!!!!Spring缺点: 1 配置繁琐 2 依赖繁琐SpringBoot功能: 1 自动配置 一个运行时的过程 2 起步依赖 本质是一个Maven项目对象模型(POM),定义了对其他库的传递依赖 即,将具备某种功能的坐标打包到一起,并提供一些默认的功能。 3 辅助功能 提供一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标、外部配置等。
2021-11-07 16:20:18
588
原创 python 在控制台实现学生信息管理系统(采用文件存储学生信息)附完整代码
简要说明该系统是本人学习python基础,为了对基础知识加深巩固使用,参考教学视频练手写的。用python 3.8 和idea2020.1版本。仅使用到os一个额外的模块代码直接复制,就可运行。系统比较粗糙,往大佬可以提些改进意见!!!!!!!!仅供参考,不喜勿喷!!!!!!!系统框架本系统涉及到的文件 仅三个main、Student和Student_mangementmain.py作为主函数,仅是作为系统的入口import Student_mangement as sm#主函数
2021-10-28 17:20:44
605
原创 Java 在控制台简单实现图书增删改查功能(不连数据库)
用java在控制台简单实现图书管理系统的增删改查操作,无数据库链接本代码只是我个人(代码能力相当差)在复习java编程基础内容List集合、Map集合时温习练手写的,用的idea2020版本,jdk1.8版本,仅供参考,不喜勿喷!!!!!附带有完整代码1整体架构Dao层存放Book类,即图书的基本信息Service层存放对图书的增删改查操作。2 创建Dao层创建Book类,图书包含书名、作者、价格、数量信息。定义完基本字段后,生成无参、有参构造器,生成对应字段的get、set方法(可自动生成)
2021-09-22 20:55:41
3624
原创 Java 控制台输出菱形、伞形、心形
1 菱形public void rhombus(){ for (int i = 1; i <= 5; i++) { for(int j=5-i;j>0;j--){ System.out.print(""+"\t"); } for (int j = 1; j <= (2*i-1);j++) { System.out.print("*"+"\
2021-08-28 09:56:19
495
原创 Vue框架学习----VueCLI
1.Vue CLI1.1 Vue CLI使用前提1 NodeJS2 Webpack1.2 Vue CLI使用安装npm install @vue/cli@3.2.1 -g如需拉取2.x模板(旧版本)npm install @vue/cli-init -gCLI2详解:脚手架目录先从package.json中找目录结构:
2021-08-16 17:16:55
203
原创 Vue框架学习----箭头函数
1箭头函数基本使用const 变量名 = (参数列表) => { }2参数、返回值在有一个参数时,小括号可省去函数代码块中只有一行代码时,可写成如下形式:3 this使用向外层作用域中一层一层查找this,直到有this的定义...
2021-08-16 17:15:43
240
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人