- 博客(60)
- 收藏
- 关注
原创 【网络】HTTP协议
在我们之前写过的服务端和客户端,两者进行通信时,理论上来讲,我们只需要拿着服务端的ip地址和端口号,就可以使用客户端去任意的访问到它。但是IP地址和端口号对人来说很不友好,因为人根本不知道这两个东西加在一起究竟是什么。我们在浏览器网址输入220.181.38.150,就会访问到百度网站,我们在Linux使用telnet访问该ip地址,就会出现一些前端代码,而浏览器不会,因为浏览器会自动识别并且弄出web页面。http(超文本传输协议)就是针对这种问题而提出的一种解决方案。
2024-09-03 10:18:25
1103
原创 【MySql】表的约束
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。
2024-06-02 21:54:56
860
2
原创 【Qt】信号和槽
自定义槽在Qt designer中推拽一个Push Button,右键单击点传为槽,会生成这么一个函数。在Qt中除了通过connect连接信号槽之外,还有可以通过函数名字的方式自动连接。如果我们改了这个函数的名字,按钮点击无反应,在控制台会出现下面这条信息。自定义信号。
2024-05-30 14:27:04
1030
原创 【网络】网络基础
将多台电脑连接起来,以达到数据的传输,这是计算机发展的趋势。在此情形下,网络的产生是必然的,因为我们最终还是要方便的拿到这些电脑的数据来进行决策。
2024-05-12 15:51:51
921
原创 【项目】高并发内存池实现(化简版tcmalloc)
tcmalloc,全称Thread-Caching Malloc。叫线程缓存的malloc,其中实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free)。由于new和delete底层也是通过malloc和free实现的。 我们这个项目是把tcmalloc最核心的框架简化了之后再去实现,模拟实现出一个属于自己的高并发内存池,简单的来说目的就是学习tcmalloc的精华。
2024-05-06 17:40:11
715
原创 MySQL#MySql数据库的操作
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据 库,再使用source来还原。这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。对数据库的修改主要指的是修改数据库的字符集,校验规则。如果备份的不是整个数据库,而是其中的一张表,怎么做?创建数据库的时候,有两个编码集。
2024-05-05 17:42:27
613
原创 MySql#MySql数据库基础
存储数据用文件就可以了,为什么还要弄个数据库?数据库存储介质:磁盘和内存数据库本质:对数据内存存储的一套解决方案,你给我字段或者要求,我直接给你结果就行为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。。mysql是一套给我们提供数据存取的服务的网络程序数据库一般指的是,在磁盘或者内存存储的特定结构组织的数据 -- 在磁盘存储的一套数据库方案数据库服务 -- mysqld。
2024-05-05 15:01:32
821
原创 MySql#MySql安装和配置
1.先去查看自己的系统里是否有mysql和mariadb这两个数据库2.查看下面的路径下是否有文件,有就备份删除。
2024-05-05 13:21:55
523
1
原创 C++之线程库
在C++11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。C++11中最重要的特性就是对线程进行支持了,使得C++在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。
2024-05-02 15:59:54
114
原创 Linux之多线程
linux下一个进程是由一个PCB块task_struct,进程地址空间mm_struct,页表+MMU,代码和数据组成,而创建子进程,因为进程具有独立性,子进程也有自己的task_struct,mm_struct,页表。而我们创建出一个只有一个PCB的东西,它指向父进程的进程地址空间,可以通过页表访问父进程的代码和数据,我们把这个称作线程。
2024-05-01 23:45:45
1069
2
原创 linux之进程信号
ctrl+c为什么会杀掉我们的前台进程呢?linux中,每一次登录,一个终端一般会配上一个bash,每一个登录,只允许一个进程是前台进程,可以允许多个进程是后台进程。ctrl+c本质是被进程解释成为,2号信号。
2024-04-28 21:07:20
704
原创 C++11之智能指针
我们来先看一段代码上述代码有什么问题呢?由于除零错误,异常处理导致该程序没有执行释放a,b指针空间,从而引发内存泄漏这个严重问题。
2024-04-26 13:37:36
769
原创 C++11
从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率,公司实际项目开发中也用得比较多,C++11增加的语法特性非常篇幅非常多,我们这里没办法一 一讲解。
2024-04-17 13:35:28
713
原创 数据结构之AVL树
上一篇文章对map/multimap/set/multiset进行了简单的介绍,在其文档介绍中发现,这几个容器有个共同点是:其底层都是按照二叉搜索树来实现的,但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单枝树,时间复杂度会退化成O(N),因此map、set等关联式容器的底层结构是对二叉树进行了平衡处理,即。
2024-04-09 09:24:25
627
原创 数据结构之搜索二叉树与关联性容器初接触
set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行 排序。set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代。set在底层是用二叉搜索树(红黑树)实现的。
2024-04-07 19:38:22
656
原创 linux之文件系统、inode和动静态库制作和发布
1.没有被打开的文件都在磁盘上 --- 磁盘级文件2.对磁盘级别的文件,我们的侧重点单个文件角度 -- 这个文件在哪里,有多大,其他属性是什么?站在系统角度 -- 一共有多少文件?各自属性在哪里?如何快速找到?可以存储多少个文件?如何快速找到指定文件?如何对此磁盘文件进行分门别类的存储,用来支持更好的存取!3.磁盘文件磁盘是一个外设 + 还是计算机上唯一的一个机械设备4.磁盘结构磁盘盘片、磁头、伺服系统、音圈马达....5.磁盘的存储结构如何找到一个扇区 (CHS寻址)
2024-04-06 23:36:04
1137
1
原创 linux之进程
指定进程获取某种资源的先后顺序task_struct 进程控制块 -> struct -> 内部字段 -> int prio =???linux中优先级数字越小,优先级越高优先级:已经能,但是看顺序。权限:能不能?的问题地址空间结构体源代码地址空间本质是内核的一个struct结构体!内部很多属性都是表示start end的范围。
2024-03-28 22:43:43
869
原创 Linux调试器-gdb
debug模式:编译器形成可执行程序的时候会给可执行程序添加调试信息。程序员调试时使用debug模式,而release模式用于测试。dubug模式下文件大小大于release模式下文件大小。程序的发布方式有两种,debug模式和release模式。用gcc/g++使用debug模式编译, 加 -g。而gcc/g++默认编译,采用release模式。debug模式下会添加调试信息。
2024-03-25 16:14:05
319
1
原创 Linux之git
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单来说就是用于管理多人协同开发项目的技术。
2024-03-24 23:01:51
437
原创 Linux之gcc_makefile
1. 预处理(进行宏替换)2. 编译(生成汇编)3. 汇编(生成机器可识别代码)4. 链接(生成可执行文件或库文件)五六十年代,我们编程大多是二进制编程,也就是使用打孔纸带喂给机器再往后,科学家们发明汇编语言再往后,人们就发明了高级语言提问:编译器什么时候有的?二进制编程需要编译器吗?汇编语言时期出现了编译器,二进制则不需要最早人们先用二进制写编译器,提供汇编语言进行编程,是先有语言的。
2024-03-19 21:08:58
303
1
原创 linux之vim编辑器的使用
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。我们课堂上,统一按照vim来进行讲解。
2024-03-17 19:22:34
513
6
原创 C++多态
比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优先买票。不同的人买票却有不同的价钱,这就是一种多态行为。
2024-03-11 17:13:27
853
原创 c++继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。
2024-03-10 22:43:52
889
原创 stl-list
2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3.与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。4.与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问。二、list模拟实现。
2024-03-09 13:27:00
421
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人