- 博客(59)
- 收藏
- 关注
原创 if-else对比switch-case
如果if-else不进行二分、哈希等优化,switch-case结构的执行效率高,是以空间(跳转表)换时间的一种策略。
2024-07-02 20:15:35
465
原创 C++ 疑难点
调用成员函数时,成员函数通过一个名为 this 的隐式参数来访问调用它的那个对象,用请求该函数的对象地址初始化 this ,this 的指向总是自己这个对象,所以 this 是一个常量指针。
2024-03-09 15:30:54
548
原创 Makefile学习
生成可执行程序过程为成四个步骤:1、由.c文件到.i文件,这个过程叫预处理。2、由.i文件到.s文件,这个过程叫编译。3、由.s文件到.o文件,这个过程叫汇编。4、由.o文件到可执行文件,这个过程叫链接。
2024-02-03 23:58:09
383
原创 C++类和对象的属性
像这样用virtual关键字修饰,并且末尾加上 =0 的格式声明的函数就是纯虚函数,还有一个重要特征,就是在当前类里这个方法不能有具体的实现,也就是不能有方法体。同时拥有纯虚函数的类会被默认定义为抽象类。什么是抽象类:至少拥有一个或者一个以上的纯虚函数的类,这种类不能创建对象,但是可以被继承,通常通过继承抽象类,然后通过重写纯虚函数后,方可以通过抽象父类的子类的对象来访问函数和数据成员。
2024-02-03 15:21:27
1207
原创 C/C++指针深析
指针对于初学者往往是很难以琢磨的东西,因为它并不如变量那么抽象,而是更贴近底层的真实结构。指针操作往往会出现各种各样的岔子,最常见的便是”segmentation fault”。
2024-01-17 02:00:00
423
原创 CSDN 博客导出工具, 用于将 CSDN 博客导出为 Markdown / PDF
CSDN 博客导出工具, 用于将 CSDN 博客导出为 Markdown / PDF 格式. 比较赞的地方在于, 它不仅支持一篇博文的导出, 还支持将某个类目下的博文批量导出, 以及将导出的多篇博文汇总为一篇, 以便用于全局搜索, 具体效果可以查看 .
2023-06-19 11:34:13
2897
原创 QComboBox 和 QPlainTextEdit
QComboBox 主要的功能是提供一个下拉列表供选择输入,也可以直接当作一个 QLineEdit 用作输入
2023-04-06 22:12:35
339
1
原创 QT Review之 QSlider(滑块)
滑块是控制有界值的经典小部件。它允许用户沿着水平或垂直槽移动滑块手柄,并将手柄的位置转换为合法范围内的整数值。QSlider 自己的功能很少,大部分功能都继承于 QAbstractSlider。最常用的函数是 setValue () ,它可以将滑块直接设置为某个值; triggerAction ()可以模拟单击的效果(对快捷键有用) ;setSingleStep (),setPageStep ()可以设置步骤; setMinimum()和 setMaximum()可以定义滚动条的范围。
2023-03-18 22:04:28
957
原创 QT Review之元对象系统(Moc)
从 QT 新增的关键字(signals、slots、emit)可以看出 QT 并不是标准的 C++ 语言,而是对其进行了一定程度的扩展。元对象系统是 QT 核心的一部分,用于支持 QT 的 C++ 扩展(QT’s C++ extensions),它提供了用于对象间通信的信号与槽、运行时类型信息以及动态属性系统。
2023-03-16 20:23:16
542
原创 C++ inline关键字
内联函数可以减少函数的执行时间:原因是它可以在使用时直接进行替换(像宏一样展开),从而避免出现参数压栈、代码生成等操作,但是如果函数体过大,编译器就不会将其作为内联函数,即使加了关键字inline,同时内联函数不能递归。如果一些简单的函数直接在类中声明并且定义,编译器可以将其优化为内联函数。关键字inline必须与函数定义放在一起才能使函数成为内联函数,仅仅将inline放在函数声明前面不起任何作用。
2023-03-13 21:29:58
227
原创 操作系统基础教程
请看这个管道通信的例子,显然必须先往里面写了数据之后,才可以读数据,但是读数据和写数据是异步发生的,我们不知道实际的读写数据操作谁先谁后,所以需要用进程同步来解决这种问题。同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。一句话来解释就是对共享资源(也叫临界资源)的互斥访问的控制。
2023-02-27 16:59:02
435
原创 广播域与冲突域
解析:每个路由器的一个端口就是一个广播域和冲突域;交换机隔离冲突域,不隔离广播域。左边有一个冲突域,右边有6个冲突域,总共7个。而交换机的本质是一个多借口网桥,就是说由交换机组成的网络中,任意两台主机通信都是通过一条专有线路,故不会冲突。一个集线器(中继器)连接的网络成为冲突域,因为每台主机都连接在了同一条线路上,所以传送信息时会冲突。通常一个局域网VLAN算一个广播域,故路由器的每个端口产生一个广播域。在下图的网络配置中,总共有()个广播域,()个冲突域。答案是:2个广播域,7个冲突域。
2023-02-15 09:43:55
6596
1
原创 C++ 多线程:原子操作atomic
atomic的两个方法:load()//读取数据 store()//存储数据 fetch_add(val)//加法 fetch_sub(val)//减法 exchange()头文件中,原子类型是封装了一个值的类型,它的访问保证不会导致数据的竞争,并且可以用于在不同的线程之间同步内存访问。可以用在指针对象上,但是只表示指针是原子类型,指针指向的数据不一定是,atomic ptr;有两个线程,一个要写数据,一个读数据,如果不加锁,可能会造成读写值混乱,使用。程序执行不会导致混乱,
2022-12-21 20:54:34
2219
2
原创 CPP指针的种类以及区别
在C和C++中,用0和NULL都可以表示空指针空指针误操作的后果:如果对空指针解引用,程序会崩溃,。NULL空指针被分配的区域是一个空闲的区域,没有对应的物理空间与之对应,所以对这段空间来说,任何读操作都是非法的,并且都要保证这个区域都没有与之对应的地址(空指针区域)。由于 使用 0 和NULL表示空指针会出现歧义,C++ 11 推荐使用nullptr,也就是(void *)0。在 Linux 平台下,要使用nullptr编译需要加上-std=C++11参数。
2022-12-21 20:34:58
319
原创 Static、#define、const、mutable、typedef
代码存储区域:常量区、代码区、静态区(全局区)、堆区、栈区栈区向下增长,堆区向上增长。,堆区存储动态开辟的变量。还有一个内核空间,但是它不与用户直接交互(内核区)。
2022-12-19 11:59:36
302
原创 跟腾讯架构大师学网络框架与后台架构
master-slave:master宕机之后,将slave转为master。利用上层来保存,可以直接使用上层的局部变量,回调的地狱。监控点多一点,出现问题的时候就比较快的找到问题所在。有持久化与非持久化的选择,可能是一个状态,不需要落地。远程数据库redis,文档数据库mongoDB。性能最高:不会阻塞IO,数据拷贝最少。使用非阻塞IO,检测到有事件。很容易扩展,平行扩展。
2022-12-17 10:53:59
463
原创 string底层实现之SSO
这就说明当字符串长度小于16时,是在栈上面分配内存,大于16的时候,在堆上分配内存,也就是调用了new方法。这里对new进行了重载,以便我们观察是否调用的new。
2022-12-11 18:41:16
195
原创 Java知识点
在这个教程里,一个添加任务队列的方法,一个是执行任务的方法,如果只是用synchronized关键字把这两个方法锁住,当需要getTask之前,这个线程可以检测任务队列是否为空,为空的话会一直阻塞这个线程;这个时候this就被锁住了,其他线程也不能获得,所以也不能添加任务,然后所有的线程都被锁住了。Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式。
2022-11-30 21:13:43
354
原创 C++ 中explicit的作用及用法
explicit可以抑制内置类型隐式转换,所以在类的构造函数中,最好尽可能多用explicit关键字,防止不必要的隐式转换。
2022-11-25 20:18:03
523
原创 八大排序算法
桶排序:将数据放到到各个桶中,在插入数据的时候每个桶的数据保持有序,所以每个桶相当于是一个有序链表。最后将各个桶合并起来,即将各个链表Merge,形成一个有序的整体。一半一半砍开来,砍成只有两个元素之后,归并。
2022-11-25 20:02:45
138
原创 计算机网络
通过这一层的封装,两个计算机之间的通信好像变成了它们之间两个进程之间的直接通信,端口号代表了进程的标识符(0-65535,0-2^16-1)。
2022-11-18 23:45:00
1805
原创 Oracle数据库的基础
触发器的用法触发器与存储过程和函数不同,函数和存储过程需要用户显示调用,触发器时在某个事件发生时,自动的隐式的完成,所以叫触发或者点火(firing)
2022-11-13 19:34:37
663
1
原创 Reactor模式理论支持
开始的服务端的设计是每一个连接都创建一个thread去处理,但是当请求开始变多了之后,比如有1w的request到达服务端,就会创建1w个thread,结束之后销毁线程。然后线程池能够处理的线程数也有上限,Reactor模式应运而生。
2022-10-13 15:33:34
118
原创 I/O多路复用(select/poll/epoll)
这三种模式是为了在一个线程下面尽可能多的管理很多个socket。这三种模式在不同的需求下,有着各自的优势,select和poll差不多,但并不一定是说epoll是最好的。比如我们就写个简单的几个client连接下的情况,这个时候用select就很香,代码更少一点,如果是在真实的生产环境下,肯定是用epoll好。
2022-10-03 15:25:48
316
原创 HyperLogLog(关于基数统计)
今天在复习Redis的一种在Redis 2.8.9 版本更新的结构的时候,知道了这个数据结构是基于一种优秀的算法HyperLogLog,基数统计算法(简单来说就是统计集合中的元素数量,但是对比set有了很大的优化),就去了解了一下这种算法的精妙之处。
2022-09-27 17:41:05
410
原创 Linux文件描述符
当一个进程系统调用过多的时候,此时的文件描述符可能会不够用,可能会出现bug“Too many open files”,这样这个进程就会消耗完所有的文件资源,这时还需要一个限制,就是最大打开文件数。这个是文件描述符的系统级限制,可以使用sysctl命令或在proc文件系统中查看,表示所有用户能够打开的文件描述符的总和,还有一个是用户级限制,使用命令ulimit查看。就是一个非负整数,用以标明每一个被进程所打开的文件和socket,表示一个指向文件的引用。3 代表标准错误流 Standard Error。
2022-09-26 16:58:55
1313
原创 1015 Reversible Primes(20)
刚开始题目都没有看懂,总是不能理解radix是什么意思,做题目做少了(下次看到radix就想到可能需要进制的转换)我很想知道我总是最后一个测试点过不去,刚开始只得到了16分,是因为判断素数的时候没有把1考虑进去,加上之后还是只有18分😭,希望在评论区有大佬可以帮我找到错误。
2022-09-17 20:30:16
74
原创 1007 Maximum Subsequence Sum(最大连续子段和)
1007 Maximum Subsequence Sum(最大连续子段和)
2022-08-11 22:41:37
270
原创 PAT (Basic Level) Practice (中文)1054 求平均值
本题的基本要求非常简单给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[−1000,1000]区间内的实数,并且最多精确到小数点后2位。当你计算平均值的时候,不能把那些非法的数据算在内。......
2022-07-29 22:20:42
73
原创 Linux命令之top
top-d2-c-p123456//每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数。top-p12345-p6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况。top-c//每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)top-d2//每隔2秒显式所有进程的资源占用情况。top//每隔5秒显式所有进程的资源占用情况。-p只显示具体的进程,不显示所有的进程。...
2022-07-22 22:39:10
907
原创 PAT (Basic Level) Practice (中文)1030 完美数列(第五点测试)
给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M≤mp,则称这个数列是完美数列。现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。
2022-07-20 23:05:16
193
原创 PAT (Basic Level) Practice (中文) 1029 旧键盘
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。
2022-07-18 23:23:08
73
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人