- 博客(36)
- 问答 (1)
- 收藏
- 关注
原创 关于 Redis 缓存一致
为了提升系统性能,常常会引入 Redis 作为缓存。数据通常会存储在持久化的数据源(如 MySQL 数据库)中,同时在 Redis 中保存一份副本。当数据源中的数据发生变化时,如果不能及时同步到 Redis 缓存,或者缓存中的数据更新操作出现异常,就会导致缓存和数据源的数据不一致。这种不一致可能会给业务带来严重影响,比如展示给用户的信息是过时的,或者业务逻辑基于错误的数据进行处理。
2025-03-21 18:35:31
930
原创 数字签名技术基础
数字签名技术是现代信息安全的重要组成部分,它通过非对称加密和哈希函数确保了数据的完整性、身份认证和不可否认性。尽管存在一些局限性,但它在电子商务、软件分发、电子合同等领域发挥着不可替代的作用。结尾附带题目:下列关于数字签名表述正确的是()。A.数字签名一般采用对称加密机制B.数字签名能够解决数据的加密传输C.数字签名能够解决篡改、伪造等安全性问题D.数字签名是所传输数据上附加一段无关数字解析:本题考查数字签名的相关知识。
2025-02-22 20:24:50
955
原创 日做力扣题2--215. 数组中的第K个最大元素
这道题我在做北京的一家教育公司的笔试时出现过,且题目里直接要求使用快排做,所以我也使用快排做的。
2025-02-19 21:45:41
513
原创 日做力扣题1--3. 无重复字符的最长子串
是字符集的大小(ASCII 字符集为 128)。每个字符最多被访问两次(左边界和右边界各一次)。来记录当前窗口中的字符,方便快速判断字符是否重复。,直到遇到重复字符或到达字符串末尾。,请你找出其中不含有重复字符的。时,从集合中移除左边界前一个字符。因为无重复字符的最长子串是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。窗口内的字符始终是不重复的。请注意,你的答案必须是。表示窗口的左右边界。
2025-02-18 19:55:37
365
原创 [面试]关于Redis 的持久化你了解吗
Redis的持久化是指Redis服务器在关闭或重启时,将内存中的数据保存到磁盘上的一种机制。Redis支持多种持久化方式。
2024-11-08 20:59:40
983
原创 [面试]Mysql的锁机制
MySQL中的锁主要用于控制多个事务对数据库资源的并发访问,以确保数据的一致性和完整性。锁机制是数据库并发控制的核心,通过锁定数据库中的资源来防止并发操作引发的数据冲突。行锁允许多个事务在同一个表中并发执行不同行上的操作,而不会互相阻塞,因此具有较高的并发性。但相比于表锁,行锁需要更多的资源来维护锁的状态,开销更大。表锁是一种较粗粒度的锁机制,会锁定整个表,而不是某个具体的行或记录。综上,MySQL的锁机制是数据库并发控制的核心。除了表级锁和行级锁,MySQL还提供了其他类型的锁来支持不同的并发控制需求。
2024-11-08 18:40:59
761
原创 ROS话题通信机制理论模型的学习
话题通信是ROS(Robot Operating System,机器人操作系统)中使用频率最高的一种通信模式,其实现模型主要基于发布/订阅模式。
2024-11-07 18:47:41
985
原创 hashmap和hashtable的区别
今天面了一个大厂的ai面试,奇了怪了,我投的明明是C++岗位怎么全是Java的问题。还把ai面试后面塞了测评,哪个天才想出来的,虽然是Java的但也记一下吧HashMap和Hashtable都是Java中常用的存储键值对的集合类,它们都实现了Map接口,但二者之间存在一些显著的区别。
2024-10-28 21:13:05
636
原创 C++中的泛型
C++中的泛型编程是一种编程范式,它允许程序员编写与类型无关的代码。通过使用模板(Templates),C++程序员可以创建能够处理多种数据类型的函数和类,而无需为每种数据类型重复代码。这种技术提高了代码的重用性和灵活性。
2024-10-22 21:56:51
599
原创 [数据结构复习] 树的类型,特点及二叉树的遍历方式
数据结构中的“树”是一种重要的非线性数据结构,它呈现出层次嵌套的特点,就像一棵倒挂的树,根朝上,叶子朝下。
2024-10-22 19:09:46
889
原创 关于服务器系统中的低安全设置及建议
在/etc/pam.d/system-auth文件中设置minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1。建议修改默认账户root,建立系统管理员账户(system)、安全管理员账户(secure)、审计管理员账户(audit),并设立相应权限,禁用超级管理员权限。备份原始文件:在进行任何更改之前,确保备份相关文件,以防出现问题。重启相关服务(可选):确保新配置生效,可以重启系统或相关服务。(1)登录失败锁定账户策略。
2024-10-09 19:38:32
639
原创 面试:关于迭代器失效
迭代器失效是一个在使用容器时需要特别注意的问题,尤其是在需要频繁修改容器的场景中。通过合理使用容器、注意操作顺序、使用合适的算法和数据结构,可以有效避免迭代器失效,从而提高代码的稳定性和可读性。
2024-10-09 15:06:53
610
原创 编写提高CPU利用率的脚本并使其后台执行
执行命令 nohup sh yoush.sh > yoush.sh 2>&1 1 &解释:把脚本输出到指定文件yoush.log 然后把2错误输出常定义为标准输出1。报错:然而我执行的时候会有脚本输出到nohup日志的报错并跟一堆乱码。解决:把时间&改为1000000很大的数能执行,原因不了解。即nohup sh yoush.sh 1 &指的是执行这个脚本用1个cpu执行80秒。例如:sh yoush.sh 1 80。想要后台执行(即关闭终端依旧执行)进行执行要先确定后怎么执行。要使用命令nohup。
2024-10-01 13:31:06
420
原创 安装CentOS与进行XShell连接
内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。要更改为多用户文本模式。host-only(主机模式): A可以和A1,A2互通,A1,A2 -> B不可以, B -> A1,A2不行;bridge(桥接模式): A可以和A1,A2互通,A1,A2 -> B可以,B -> A1,A2可以。Nat(网络地址转换): A可以和A1,A2互通,A1,A2 -> B可以,B - > A1,A2不行。
2024-10-01 13:00:43
3321
原创 如何理解TCP面向字节流协议
当用户消息通过 TCP 协议传输时,消息可能会被操作系统分组成多个的 TCP 报文,也就是一个完整的用户消息被拆分成多个 TCP 报文进行传输。这时,接收方的程序如果不知道发送方发送的消息的长度,也就是不知道消息的边界时,是无法读出一个有效的用户消息的,因为用户消息被拆分成多个 TCP 报文后,并不能像 UDP 那样,一个 UDP 报文就能代表一个完整的用户消息。举个实际的例子来说明。发送方准备发送「Hi.」和「l am Xiaolin」这两个消息。
2024-06-18 20:08:45
582
1
原创 进程间六种通信方式(简单介绍面试用)
管道的实质是一个内核缓冲区,进程以先进先出的方式从缓冲区存取数据:管道一端的进程顺序地将进程数据写入缓冲区,另一端的进程则顺序地读取数据,该缓冲区可以看做一个循环队列,读和写的位置都是自动增加的,一个数据只能被读一次,读出以后再缓冲区都不复存在了。当缓冲区读空或者写满时,有一定的规则控制相应的读进程或写进程是否进入等待队列,当空的缓冲区有新数据写入或满的缓冲区有数据读出时,就唤醒等待队列中的进程继续读写。套接字也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同设备及其间的进程通信.
2024-06-02 18:38:21
322
原创 List与vector的区别(表格对比)
迭代器失效:插入元素不会导致迭代器失效,删除时只会导致当前迭代器失效,其他迭代器不受影响,重新赋值当前迭代器即可。迭代器失效:在插入元素可能会扩容导致原有迭代器失效所有迭代器需要重新赋值,删除时当前迭代器会失效需要重新赋值。在任意位置插入和删除效率低,插入有可能会增容,会导致开辟新空间,拷贝元素释放旧空间使效率更低。需要高效存储,支持随机访问,不关心插入删除效率时使用 vector。有大量插入和删除操作,不关心随机访问使用list。底层结构是带头节点的双向循环链表。底层结构是动态顺序表。
2024-05-26 17:21:34
189
原创 C/C++内存管理方式,内存分配
内存分配方式:在C++中内存分为5个区,分别是堆、栈,自由存储区、全局/静态存储区、常量存储区。 栈:在执行程序过程中,局部作用域出现的一些局部变量可以在栈上创建,等脱离该作用域创建的内存被释放。栈是机器系统提供的数据结构,计算机会在底层对提供支持:分配专门的寄存器存放栈的地址,压出栈都有专门的指令执行,这就决定了栈的效率比较高。 堆:用于程序内存动态分配,用c/c++中的new/malloc分配,delete/free释放 堆的生长空间向上,地址越来越大,栈的生长空间向下,地址越来越小。堆空间因为会
2024-05-17 16:14:14
201
原创 在C++程序中调用被C编译器编译后的函数,为什么要加extern “C“?
首先,作为 extern 是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。 通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern 声明。例如,如果模块 B欲引用该模块 A 中定义的全局变量和函数时只需包含模块 A的头文件即可。这样,模块 B 中调用模块 A中的函数时,在编译阶段,模块 B 虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块 A编译生成的目标代码中找到此函数 exter
2024-05-15 21:54:21
191
原创 C++和C的不同以及面向对象的了解
(1)C语言是面向过程的程序设计,主要考虑如何通过一个过程,对输入进行处理得到一个输出,C++是面向对象的程序设计,对于C++,首先考虑的是如何构造一个对象模型,让这个模型配合对应问题,这样可以获取对象信息状态得到输出。(2)C++比C的增强点在C语言中,输出正常:210;在C++中,运行出错,变量重定义;封装:将一类事物的属性和行为抽象为一个类,使属性私有化,行为公开化,提高数据隐蔽性,复用性高。封装隐藏了类的实现细节和成员数据,实现了代码模块化,如类里面的 private 和public;
2024-05-14 21:16:37
387
原创 [蓝桥杯练习]试题:货物摆放
想要解决此问题,在求有多少种堆放货物的方案满足要求时我们可以利用三层循环遍历给出的n,即(d[i] * d[j] * d[z] == n)。我们可以找出n的所有因子并存储到数组d,这样就可以只遍历因子,同时取n开平方在其中查找因子,因为平方前的因子和平方后的因子相同,节省计算数量。即在长、宽、高的方向上分别堆L、W、H 的货物,满足n=LxWxH。例如,当n=4时,有以下6种方案:1x1x4、1x2x2、1x4x1、2x1x2、2x2x1、4x1x1。给定 n,请问有多少种堆放货物的方案满足要求。
2024-03-22 22:03:31
441
1
原创 vector扩容
因此容器在进行内存的改变时,会导致迭代器失效。(注意,数据删除时并不会导致内存的改变,而是让被删除的数据无法访问,因此迭代器不会失效)3、当使用的是两个参数的有参构造函数创建Vector对象时,初始化容量则为指定的长度,每次扩容,容量 = 原容量 + 指定的扩容长度。2、当使用的是一个参数的有参构造函数创建Vector对象时,初始化容量则为指定的长度,每次扩容,容量 = 原容量 × 2;1、当使用的是无参构造函数创建Vector对象时,默认会初始化容量为10,每次扩容,容量 = 原容量 × 2。
2024-01-17 15:26:27
790
原创 关于智能指针(更新中)
在Java中,其自带垃圾回收机制,但c++不同。c++必须释放掉分配的内存,否则会造成内存泄露。由此c++11引入了智能指针。
2024-01-17 15:13:29
1034
原创 new和malloc的区别
(1)对于基本类型而言,没有区别。根据需要new和malloc 可以混用,new[]和malloc 可以混用,delete、 deletel[]和 free 可以混用。(4)对于显式定义析构函数的类,delete[]和new[]必须配套使用,delete和free如果想混用,free需要显式调用析构函数。(3)对于没有显式定义析构函数的类,delete、 delete[]和 free可以混用。(2)对于构造函数没有作用的类,new和malloc可以混用。new/delete 是。
2024-01-15 15:00:58
448
1
原创 虚函数(virtual)可以是内联函数(inline)吗?
解释:内联是在编译期建议编译器内联,而虚函数的多态性在运行期,编译器无法知道运行期调用哪个代码,因此虚函数表现为多态性时(即运行期)不能内联。 inline virtual唯一可以内联的时候是:编译器知道所调用的对象是哪个类(Base::who()),这只在编译器具有实际对象而不是对象的指针或引用时才会发生。
2023-03-05 21:11:42
560
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人