- 博客(95)
- 收藏
- 关注
原创 【软件测试】
软件需求是 a.用户解决问题或达到目标所需条件或权能(Capability)。b. 系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。一种反映上面 a 或 b 所述条件或权能的文档说明(它包括功能性需求及非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制)测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。
2024-03-03 15:28:17 1098
原创 C++设计模式
从宏观层面来看,面向对象的构建方式更能适应软件的变化,能将变化所带来的影响减为最小。① 创建型模式:将对象的部分创建工作延迟到子类或其他对象,从而应对需求变化为对象创建时,具体类型实现引来的冲击。② 结构型模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。③ 行为型模式:通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。
2024-01-13 11:06:05 1376
原创 search_engine:搜索引擎实现
竞价排名是一种按效果付费的网络推广方式, 通过购买相关关键词, 然后给予出价获得竞价排名, 展现给目标用户, 从而获取用户点击.很多浏览器都存在竞价排名, 因此这里我也实现一个简单的竞价排名.
2023-09-11 10:25:27 869
原创 MySQL视图
同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。⑤ order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图中的 order by 将被覆盖。这时,就可以发现多了一个表hotdata,此时如果想要查看,直接看这个表就可以了。这里我们更改这个hotdata视图的数据,那么可以看到emp基表的数据也被跟着改了。反过来也是一样的,更改emp基表的数据,hotdata视图的数据也是会被更改的。
2023-08-27 10:39:18 296
原创 MySQL事务
事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的(一个查,一个改,查的那个每次查到的数据可能都是不同的)。事务就是要做的或所做的事情,主要用于处理操作量大,复杂度高的数据。
2023-08-18 06:53:37 1231
原创 MySQL复合查询
经过前面的学习,MySQL的基本操作都已经掌握了。之前介绍的是对于一张表进行查询,但是仅仅查询一张表是不够的,所以从这一篇开始要介绍多张表时如何查询。
2023-07-25 11:00:25 1230
原创 MySQL表的约束
前言:这一篇介绍MySQL表的约束语句,对于主键和唯一键的不同点进行了区分,并且进行了充分的测试。真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary。
2023-07-05 15:13:31 1012
原创 MySQL数据类型
前言:这一篇介绍MySQL的数据类型,学过语言的数据类型后,再学这个就比较简单了,这里会详细的举例子说明该数据类型的限制条件和作用方式。
2023-06-27 17:20:51 1086
原创 MySQL数据库基础
安装数据库之后,我们要验证三个mysql,mysqld和/var/lib/mysql中是否存在文件,其中mysql是数据库客户端,mysqld是数据库服务端(在某些语境中也可以叫数据库,比如数据库是否启动,这里的数据库就是这个mysqld),/var/lib/mysql中以特定的格式保存好的文件,才叫数据库。mysqld是一个软件层,能够帮助用户进行数据管理mysql是一套网络服务数据库:提供较为便捷的数据的存取服务的软件集合(解决方案)数据库vs文件:文件或者数据库,都可以进行数据的存储。
2023-05-12 15:36:39 1638
原创 高级【IO】
可以用一个结构体来表示一个文件描述符所对应的events(用户告诉内核)、revents(内核告诉用户)相关的事件,用指针(代表数组)可以让poll关心多个文件描述符,每一个文件描述符的输入输出事件都可以使用不同的位图来表征,所以select上的参数都可以使用poll来取代了。select需要一个第三方数组,而poll则不需要了,poll可以把这个结构体数组作为全局数组,就可以让poll进行事件监听,又可以让新链接把文件描述符加进来。
2023-05-05 10:40:51 1457
原创 网络基础3【网络层、数据链路层】
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称.例如:www.baidu.com域名使用 . 连接;com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.baidu: 二级域名, 公司名.www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议。
2023-05-01 17:34:09 2570
原创 网络基础2【HTTP、UDP、TCP】
数据摘要((数据指纹):其基本原理是利用单向散列函数(Hash函数)对信息进行运算,生成一串固定长度的数据摘要。数据摘要并不是一种加密机制,但可以用来判断数据数据有没有被篡改。摘要常见算法:MD5、SHA1、SHA256、SHA512等。算法把无限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率非常低)。摘要特征:和加密算法的区别的,摘要严格意义不是加密,因为没有解密。只不过从摘要很难反推原信息,通常用来进行数据对比。
2023-04-11 13:34:37 3096
原创 理解B树及B+树、B*树
B树:有序数组+平衡多叉树;B+树:有序数组链表+平衡多叉树;B*树:一棵更丰满的,空间利用率更高的B+树。在实际使用中,B+的使用是最多的。MySQL是目前非常流行的开源关系型数据库,不仅是免费的,可靠性高,速度也比较快,而且拥有灵活的插件式存储引擎MySQL中索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。
2023-02-22 22:11:16 1263
原创 LRU Cache(最近最少使用)实现
LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。什么是Cache呢?狭义的Cache指的是位于CPU和主存间的快速RAM, 通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。广义上的Cache指的是位于速度相差较大的两种硬件之间, 用于协调两者数据传输速度差异的结构。
2023-01-26 13:10:05 1648
原创 通过C++对【图】进行抽丝剥茧(包括广度、深度优先遍历,求最小生成树,求最短路径)
图是一个非常抽象的数据结构,之前学过的二叉树也属于图。想要理解图,就要一步一步的去分析理解。
2023-01-20 17:56:24 1975
原创 网络编程套接字
① 端口号是一个2字节16位的整数;② 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理;③ IP地址 + 端口号能够标识网络上的某一台主机的某一个进程;④ 一个端口号只能被一个进程占用。
2023-01-03 20:12:18 1840
原创 Linux 多线程
①在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”② 一切进程至少都有一个执行线程③ 线程在进程内部运行,本质是在进程地址空间内运行④ 在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化⑤ 透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。
2022-12-01 13:08:02 1443
原创 Linux 进程信号
信号是给进程发送的,进程要具备处理信号的能力。① 该能力一定是预先早就已经有了的(程序员写的 ---- OS提供)② 进程能够识别对应的信号③ 进程能够处理对应信号对于进程来讲,即使是信号还没有产生,进程已经具有识别和处理这个信号的能力了。}return 0;}正常运行一个进程,直接用ctrl+c就可以终止,并且按任何命令都是没有效果的。
2022-11-17 12:11:20 1162
原创 Linux 进程间通信
因为进程是具有独立性的,所以进程间想交互数据,成本会非常高,因此需要多进程进行协同处理一件事情,就有了进程间通信。要注意,虽然进程独立了,但不是彻底独立了,有时候,需要双方能够进行一定程度的信息交互。
2022-11-12 10:14:04 1326
原创 C++的IO流
在C语言中,如果想要将一个整形变量的数据转化为字符串格式,如何去做?①. 使用itoa()函数② 使用sprintf()函数但是两个函数在转化时,都得需要先给出保存结果的空间,那空间要给多大呢,就不太好界定,而且转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。在C++中,可以使用stringstream类对象来避开此问题。在程序中如果想要使用stringstream,必须要包含头文件。
2022-11-06 20:09:43 369
原创 Linux 基础IO
前言:这是Linux基础IO的一大块内容,包括了Linux的系统IO接口的介绍及使用、理解文件描述符、重定向和缓冲区,标准输入、输出、错误,文件系统,软硬链接,动态库和静态库。
2022-10-30 16:08:39 1449
原创 C++类型转换
在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。,每次使用强制类型转换前,程序员应该仔细考虑是否还有其他不同的方法达到同一目的,如果非强制类型转换不可,则应限制强制转换值的作用域,以减少发生错误的机会。static_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用,但它不能用于两个不相关的类型进行转换。
2022-10-10 20:52:10 342
原创 C++异常
在实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法做了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了{// 服务器开发中通常使用的异常继承体系{public:{}{}{}// 描述错误信息int _id;// 错误编码// 堆栈信息};{
2022-10-02 12:53:38 1696
原创 C++11一些零碎的知识点介绍
这里都是C++11的一些相对比较零碎或者简单的知识点,而一些重要的知识点(比如右值引用、lambda表达式、智能指针等之后再介绍)
2022-09-29 06:00:00 670
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人