- 博客(69)
- 收藏
- 关注
原创 容器vector
vector也叫“变长数组”,即长度根据需求进行改变的数组,是属于容器中的一种数据结构。其原理是将原数据拷贝在一块新空间上实现动态变化。
2024-09-01 01:44:10 487
原创 快速上手cpp函数
1.using namespace std 是一个C++的预处理命令集,其作用是引入命名空间std中所有的标识符(包括类、函数和变量,这样在使用标识符时不需要添加。按照以下内容完成设置,这样程序运行结束后就会自动关闭黑框。因此在程序中在输出语句后需要加上system("pause");比如在使用cout输出内容时直接写成cout。3. 函数如果放在主函数前不需要声明,2.在输出内容时出现以下内容。
2024-07-29 23:50:53 280
原创 跳转语句Break、goto、continue
continue只是跳过一次循环,而break直接跳出所有循环了。在循环语句中,跳过本次循环中余下未执行的语句,下一次循环正常进行。
2024-07-29 09:00:00 259
原创 Cpp快速入门基础
C++没有直接计算数组数组长度的函数,在这里为了计算数组长度,sizeof(arr1)表示计算数组占用字节数,sizeof(*arr1)表示数组元素arr1[0]所占用的字节长度,是iostream类的一个实例,cout对象连接到标准的输出设备,通常是显示器。是iosteram类的一个实例。cin对象附属到标准输入设备,通常是键盘且cin是常与。并且流提取运算符>>可以在一个语句中多次使用。在输入是name和age需要用空格隔开。这里为了计算数组行数,利用。对数组1每个元素进行输出。几种常见的初始化方式。
2024-07-28 17:25:14 359
原创 快速排序算法介绍
首先选择一个元素作为基准值mid,一般选择数组的第一个数。将左指针指向左边界,右指针指向右边界,左指针向右边走,右指针向左边走,左指针寻找比mid值小的数组元素,右指针用于寻找比mid大的数组元素。两个指针都找到相应的元素后进行交换。继续移动指针寻找相应元素然后交换,直到两个指针相遇,将指针相遇的那个数组元素与mid元素交换。这部分的作用主要是将数组进行排序,将第一个元素设置为mid值,左右指针寻找比mid小和大的元素,找到后进行交换并继续寻找,直到左右指针相遇后停止寻找并将mid与相遇指针元素交换。
2024-05-20 11:14:30 293
原创 快速新建springboot项目
4.1.1方法一:在maven仓库中找到mybatis-plus的坐标,将坐标粘贴到pom文件中,搜索http://mvnrepository.com,在仓库在搜索mybatis-plus,选个用户多的。3、排除jdbc的自动装配机制(当然,这里也可以在 application.properties 配置文件中,加入数据库配置内容)2.在这里提前配置一些需要使用的依赖,当然后面也可以配置,然后点击Create。6.在IDEA中新建数据库,并在数据中中新建表,将刚刚在官网复制的语句粘贴。
2024-04-24 02:51:22 2618
原创 Cookie、Session以及Token的区别
客户端第一次访问服务器时,服务器返回cookie给客户端A,客户端A存储cookie,下次客户端直接带着cookie即可访问服务器数据。这里你可以把服务器理解为银行,客户端就是银行客户,cookie相当于存折,客户第一次来银行存钱时会给客户发放存折,客户通过存折来银行取钱,也就是取数据。
2024-04-20 15:02:48 392
原创 TCP和UDP协议的区别
TCP协议的全称是Transmission Control Protocol(传输控制协议),是一种面向连接的点对点的传输层协议。UDP协议的全称是User Datagram Protocal(用户数据报协议),为应用程序提供一种无需建立连接就可以发送封装的IP数据包方法,也是一种传输层协议。
2024-04-18 21:45:12 348
原创 finally、final、finalize区别
finalize用于垃圾回收,finalize 是Object类的一个方法,在垃圾回收器执行时会调用被回收对象的finalize()方法,可以覆盖此方法来实现对其他资源的回收,例如关闭文件等。finally用于抛异常,finally代码块内语句无论是否发生异常,都会在执行finally,常用于一些流的关闭。final用于修饰类、变量、方法,
2024-04-08 17:21:43 217
原创 缓存击穿以及解决方案
缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。
2024-04-07 22:38:56 437
原创 缓存雪崩以及解决思路
缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。利用Redis集群提高服务的可用性。给不同的Key的TTL添加随机值。给缓存业务添加降级限流策略。
2024-04-07 22:27:37 294
原创 缓存更新策略
缓存更新是Redis为了节约内存而设计出来的一个东西,主要是因为内存数据宝贵,当我们向redis插入太多数据,此时就可能会导致缓存中的数据过多,所以redis会对部分数据进行更新,或者淘汰。
2024-04-07 20:58:18 482
原创 Springboot中常见的配置文件
SpringBoot程序的配置文件必须是application,只是后缀名不相同而已。YAML作为一种数据序列化格式,其拓展名有.yml(主流)和(yaml)两种。pom.xml文件:管理依赖,只需要导入相关项目坐标即可将项目导入。@configutation注解标注某个类表示这个类是一个配置类。
2024-03-23 09:06:32 350
原创 Spring cloud的五大组件
1.Eureka(nacos) 注册中心。4.Hystrix 隔离、熔断、降级。5.zuul 微服务网关,网络路由。3.Ribbon 负载均衡。2.Feign 远程调用。
2024-03-13 13:22:57 211 1
原创 Redis常见的数据类型
Redis是一个Key-value的数据库,Key一般是String类型,不过value的类型多种多样,有以下8种数据类型:
2024-01-19 10:37:34 556
原创 线程间的通信方式
线程是轻量级的进程,系统进⾏资源调度的基本单位是进程,但是因为进程上下⽂切换开销太⼤,所以有了线程, 节省开销。:⽤于线程之间的协调和通信,⼀个线程可以通过条件变量等待某个条件的出现,另⼀个线程可以通过条件变量通知正在等待的线程。:远程过程调⽤(RPC)是⼀种跨网络进行的远程调用,可以实现在不同的线程或机器之间进行信息交换。:管道是⼀种半双⼯的通信⽅式,⼀个进程可以向管道中写⼊数据,另⼀个进程可以从管道中 读取数据。:⼀个线程向消息队列中放⼊⼀条消息,另⼀个线程从消息队列中取出消息。
2024-01-08 08:30:00 538
原创 TCP的三次握手和四次挥手
第⼆次握手:服务器收到客户端的 SYN 报文,向客户端发送 SYN+ACK 报文,表示可以建⽴连接。第三次握手:客户端收到服务器的 SYN+ACK 报文,向服务器发送 ACK 报文,表示连接已经建⽴。第⼆次挥手:服务器收到客户端的 FIN 报⽂,向客户端发送 ACK 报⽂,表示收到关闭请求。第四次挥手:客户端收到服务器的 FIN 报⽂,向服务器发送 ACK 报⽂,表示收到关闭请求。第三次挥手:服务器向客户端发送 FIN 报⽂,请求关闭连接。第⼀次挥手:客户端向服务器发送 FIN 报⽂,请求关闭连接。
2024-01-07 15:04:39 1302
原创 进程与线程的/并行与并发/同步与异步
1.1进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。1.2 线程线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的和资源,但每个线程有自己的和。
2024-01-04 08:30:00 743
原创 什么是上下文切换
当前任务在执行完CPU时间片切换到另外一个任务之前会先保存自己的状态,以便下次再切换回这个任务时,可以加载这个任务的状态,任务从保存到再次加载这个过程叫做。上下文切换通常是计算密集型的,也就是说它需要相当可观的处理器时间,事实上可能是操作系统中时间消耗最大的操作。
2024-01-03 16:07:05 442
原创 线程池的7个参数以及拒绝策略
如果是 CPU 密集型,主要是执行计算任务,响应时间很快,cpu 一直在运行,这 种任务 cpu 的利用率很高,那么线程数的配置应该根据 CPU 核心数来决定,CPU核心数=最大同时执行线程数,加入 CPU 核心数为 4,那么服务器最多能同时执行 4 个线程。过多的线程会导致上下文切换反而使得效率降低。那线程池的最大线程数可以配置为 cpu 核心数+1。
2024-01-03 15:58:37 538
原创 聚簇索引和非聚簇索引的区别
在 MySQL 中,B+ 树的实现主要是通过 InnoDB 存储引擎来实现的。InnoDB 存储引擎中的索引主要有聚簇索引和非聚簇索引两种类型,聚簇索引是根据主键创建的索引,⽽非聚簇索引是根据⾮主键列创建的索引。对于非聚簇索引,MySQL 中会同时创建⼀个对应的聚簇索引,这样可以提⾼查询效率。聚簇索引是物理索引,因此数据表在物理上是连续存储的,且顺序按照聚簇索引顺序存储,比如在一个表中,id是主键且为聚簇索引,因此表中所有的记录行是按照id自增顺序存储,因此一个表只能有一个聚簇索引。
2023-12-30 08:30:00 969
原创 主键、唯一键、外键
可以添加组合键(复合主键),但扩展性不行,一张表里可以有多个组合键,但是可能在非特殊的情况下实际的意义不大,添加复合主键要先把原主键删除。2.不能更改主表中的值而导致子表中的记录孤立(学生信息表中的id变化了,学生成绩表中的id也要随着发生改变)1.当主表中没有对应的记录时,不能将记录添加到子表(学生成绩表中不能出现学生信息表中没有的学号)3.子表存在与主表对应的记录,不能从主表中删除该行(不能把部门表中的数据删除)主键用来区分数据,联系各个表,不能为空且在表中数据是唯一的。4.删除主表前,先删子表。
2023-12-28 08:00:00 908
原创 单例模式的四种具体写法
通过在类中定义一个静态内部类,将对象实例的创建与初始化放在内部类中完成,我们在getInstance中获取对象直接通过静态内部类调用单例对象。饿汉模式在getInstance方法调用前实例已经被创建,因此实例在类加载的时候就已经存在于JVM中,因此。懒汉模式就是在加载类的时候只声明变量,不new对象,后面需要用到的时候再new对象,并把对象赋给变量。主要被用于一个全局类的对象在多个地方被使用并且对象的状态是全局变化的场景下。普通的懒汉模式在单线程场景下是线程安全的,但在多线程场景下是非线程安全的。
2023-12-24 07:30:00 877
原创 MySQL支持的存储引擎以及区别
存储引擎:Mysql用各种不同的存储技术,将数据存储到文件或内存中。数据库存储引擎是数据库的底层的软件组件,数据库可以使用数据存储引擎进行创建,查询,更新和删除数据的操作。不同的存储引擎会提供不同的存储机制,索引技巧,锁定水平等功能,现在许多的数据库管理系统都支持多种的不同的存储引擎。
2023-12-23 07:30:00 635
原创 MySQL事务
不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。 解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表
2023-12-22 10:23:25 731
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人