自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 操作系统内存管理

在虚拟内存管理中,每个进程拥有自己的页表,这样不同的进程可以有相同的虚拟地址,但由于使用不同的页表,它们会映射到不同的物理地址。此时,操作系统会介入,查找该虚拟页面的数据或代码,将其从磁盘加载到一个空闲的物理页面,并更新页表,建立虚拟页面到物理页面的映射关系。虚拟内存是一种抽象的内存概念,它允许程序访问比实际物理内存更大的内存空间,使得每个进程都认为它具有连续的内存空间,而不需要关心实际物理内存的大小和分布。虚拟内存是一种抽象的内存概念,它扩展了物理内存的大小,允许程序访问比物理内存更大的内存空间。

2023-07-31 11:20:36 190

原创 事务的概念及使用

事务 A 按 id>5 的条件进行多次查询,在多次查询中间,事务 B 插入了一条 id 为6的数据,事务 A 多次查询的结果集数量就会不同。在 SQL 标准中定义了四种隔离级别, 每一种级别都规定了一个事务中所做的修改,哪些在事务内和事务间是可见的,哪些是不可见的。原子性(atomicity):事务是最小工作单元,不可再分,事务的所有操作要么全部提交成功,要么全部失败回滚,不可能只执行其中的一部分操作。隔离性(isolation):通常来说,一个事务所做的修改在最终提交前,对其他事务是不可见的。

2023-07-24 11:26:40 105

原创 DDL\DML

插入完整的行,所有字段,每一个字段都必须提供一个值,如果某个字段没有值,应该使用 NULL,每个字段必须以他们在表中定义的顺序给出。主键用来表示一个特定的行。更安全的方法是,在表名后的括号中给出字段名,values 中的值的顺序与前面给出的字段的顺序相同,一一对应。外键为表中的某一字段,该字段是另一表的主键值,外键用来在两个表的数据之间建立联结,一个表中可以有一个或多个外键。用于确保特定列或列组合的唯一性,被约束的列的值在整个表中是唯一的,唯一约束默认允许空值(null),因此多个空值不违反唯一约束。

2023-07-24 10:58:59 451

原创 单列模式多学两遍

方法中使用了局部静态变量。局部静态变量是在第一次执行该代码行时初始化,并且在程序的整个生命周期内保持其值,直到程序结束。这样的特性使得局部静态变量非常适合实现懒汉式单例模式,因为它们能够确保只有在第一次调用。懒汉式单例模式是一种延迟加载的单例模式,在需要时才创建实例。单例模式(Singleton Pattern,也称为单件模式),使用最广泛的设计模式之一。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。当使用C++局部静态变量实现懒汉式单例模式时,我们在。

2023-07-21 10:55:31 444

原创 项目实战Qt网盘系统

转存失败重新上传取消转存失败重新上传取消背景:随着时代的发展,业务数据量的剧增及移动办公需求,人们对内存的需求越来越强,传统的存储产品,在容量及携带型日益不能满足人工的工作需求,网盘再此背景下应运而生。网盘是能够提供文件同步,备份及共享等服务的网络云存储平台。可以随时随地的把照片、音乐、视频、文档等轻松地保存到网盘,无须担心文件丢失。通过网盘,用户可以多终端上传和下载、管理、分享文件,一切就变得轻而易举。描述:随时随地上传下载、编辑和分享;搜索好友、加好友、聊天等要点:多线程。

2023-07-19 09:16:39 1385 1

原创 数据库连接池(七)

具体的,工作线程从数据库连接池取得一个连接,访问数据库中的数据,访问完毕后将连接交还连接池。从一般流程中可以看出,若系统需要频繁访问数据库,则需要频繁创建和断开数据库连接,而创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。当线程数量大于数据库连接数量时,使用信号量进行同步,每次取出连接,信号量原子减1,释放连接原子加1,若连接池内没有连接了,则阻塞等待。在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,更加安全可靠。

2023-07-18 10:30:41 269

原创 日志系统(六)

再具体点,有可能多个线程都在等待这个资源可用的信号,信号发出后只有一个资源可用,但是有A,B两个线程都在等待,B比较速度快,获得互斥锁,然后加锁,消耗资源,然后解锁,之后A获得互斥锁,但A回去发现资源已经被使用了,它便有两个选择,一个是去访问不存在的资源,另一个就是继续等待,那么继续等待下去的条件就是使用while,要不然使用if的话pthread_cond_wait返回后,就会顺序执行下去。答案是否定的,如果同时有两个或者两个以上的线程正在等待此资源,wait返回后,资源可能已经被使用了。

2023-07-18 10:11:28 145

原创 定时器处理非活动连接(五)

具体的,信号处理函数使用管道将信号传递给主循环,信号处理函数往管道的写端写入信号值,主循环则从管道的读端读出信号值,使用I/O复用系统调用来监听管道读端的可读事件,这样信号事件与其他文件描述符都可以通过epoll来监测,从而实现统一处理。接收信号的任务是由内核代理的,当内核接收到信号后,会将其放到对应进程的信号队列中,同时向进程发送一个中断,使其陷入内核态。信号,信号处理函数利用管道通知主循环,主循环接收到该信号后对升序链表上所有定时器进行处理,若该段时间内没有交换数据,则将该连接关闭,释放所占用的资源。

2023-07-17 19:33:42 263

原创 http连接处理(下)(四)

writev的返回值为已写的字节数,但这个返回值“实用性”并不高,因为参数传入的是iovec数组,计量单位是iovcnt,而不是字节数,我们仍然需要通过遍历iovec来计算新的基址,另外写入数据的“结束点”可能位于一个iovec的中间某个位置,因此需要调整临界iovec的io_base和io_len。是一个结构体,里面有两个元素,指针成员iov_base指向一个缓冲区,这个缓冲区是存放的是writev将要发送的数据。原代码的write函数不严谨,这里对其中的Bug进行了修复,可以正常传输大文件。

2023-07-15 00:09:40 1687

原创 主流数据库介绍,MySQL数据库基本操作

Oracle:全球领先的商业关系型数据库,拥有极强的稳定性、安全性和可扩展性,支持高可用、分布式架构,提供强大的数据分析和管理功能。SQL Server:微软开发的关系型数据库管理系统,适用于中小型企业应用,拥有可靠的性能、安全性和易用性。SQLite:轻量级的嵌入式关系型数据库,支持跨平台开发和部署,易于使用和集成,适用于小型应用和移动应用。数据库(Database,DB):按照特定的数据结构来组织、存储和管理数据的仓库。5、删除数据库:将已经存在的数据库清除,数据库中的数据也将被清除。

2023-07-14 23:50:26 328

原创 http连接处理(中)(四)

主状态机初始状态是CHECK_STATE_REQUESTLINE,通过调用从状态机来驱动主状态机,在主状态机进行解析前,从状态机已经将每一行的末尾\r\n符号改为\0\0,以便于主状态机直接取出对应字符串进行处理。在报文中,请求头和空行的处理使用的同一个函数,这里通过判断当前的text首位是不是\0字符,若是,则表示当前处理的是空行,若不是,则表示当前处理的是请求头。接下来的字符是\n,将\r\n修改成\0\0,将m_checked_idx指向下一行的开头,则返回LINE_OK。

2023-07-14 00:56:08 1857 2

原创 http连接处理(上)(四)

我们期望的是一个socket连接在任一时刻都只被一个线程处理,通过epoll_ctl对该文件描述符注册epolloneshot事件,一个线程处理socket时,其他线程将无法处理,当该线程处理完后,需要通过epoll_ctl重置epolloneshot事件。状态机的当前状态记录在cur_State变量中,逻辑处理时,状态机先通过getNewPackage获取数据包,然后根据当前状态对数据进行处理,处理完后,状态机通过改变cur_State完成状态转移。其中,type_A是初始状态,type_C是结束状态。

2023-07-12 16:35:48 753

原创 半同步半反应堆线程池(三)

本章讲解线程池所涉及的基础知识,包括服务器基本框架、I/O模型、事件处理模式等。主要围绕服务器项目中涉及的知识进行介绍,若想了解更多相关知识,请参考《Linux下高性能服务器编程》。1.服务器编程基本框架主要由I/O单元,逻辑单元和网络存储单元组成,其中每个单元之间通过请求队列进行通信,从而协同完成任务。其中I/O单元用于处理客户端连接,读写网络数据;逻辑单元用于处理业务逻辑的线程;网络存储单元指本地数据库和文件等。2.五种I/O模型。

2023-07-12 11:46:11 336

原创 线程同步机制封装类(二)

pthread_cond_wait函数用于等待目标条件变量.该函数调用时需要传入 mutex参数(加锁的互斥锁) ,函数执行时,先把调用线程放入条件变量的请求队列,然后将互斥锁mutex解锁,当函数成功返回为0时,互斥锁会再次被锁上. 也就是说函数内部会有一次解锁和加锁操作.RAII的核心思想是将资源或者状态与对象的生命周期绑定,通过C++的语言机制,实现资源和状态的安全管理,智能指针是RAII最好的例子。信号量的取值可以是任何自然数,最常用的,最简单的信号量是二进制信号量,只有0和1两个值.

2023-07-11 23:44:44 57

原创 web服务器项目介绍(一)

通过请求行的解析我们可以判断该HTTP请求的类型(GET/POST),而请求行中最重要的部分就是URL部分,我们会将这部分保存下来用于后面的生成HTTP响应。OK,经过上述解析,当得到一个完整的,正确的HTTP请求时,就到了do_request代码部分,我们需要首先对GET请求和不同POST请求(登录,注册,请求图片,视频等等)做不同的预处理,然后分析目标文件的属性,若目标文件存在、对所有用户可读且不是目录时,则使用mmap将其映射到内存地址m_file_address处,并告诉调用者获取文件成功。

2023-07-11 22:37:41 1704

原创 Linux开发环境搭建

Linux开发环境搭建

2023-07-10 23:33:51 120

原创 C++11知识点总结(下)智能指针等

C++11知识点总结(下)左值引用、右值引用、智能指针等

2023-07-10 23:17:49 92

原创 C++11知识总结(中)

C++11知识总结(中)

2023-07-10 16:42:04 62

原创 C++11知识点整理(上)

C++11知识点总结(上)

2023-07-10 13:50:52 38

原创 C++知识总结(下)

C++知识整理(下)

2023-07-09 15:52:46 51

原创 C++基础知识(中)

C++基础知识(中)

2023-07-09 15:29:31 85

原创 C++知识点整理(上)

C++基础知识点(上)

2023-07-09 14:31:23 39

原创 力扣题链表反转笔记

【代码】力扣题链表反转笔记。

2023-06-19 20:20:40 34

原创 C++内存管理

解析:因为globalVar是全局变量,staticGlobalVar和staticVar是静态变量,所以它们存储在数据段中,localVar是main函数中的局部变量,num1 是数组名,表示的是数组首元素的地址,为指针变量,也为局部变量,所以它们存储在栈中,申请的空间使用完后没有及时释放,而是指向的那块空间的指针给先销毁掉,导致这块空间没有还给系统,这块空间我们却找不到它,系统不能去重新分配这块空间,但是那块依然存在那里,最终造成内存的浪费。____ staticGlobalVar在哪里?

2023-06-19 19:39:00 45

原创 说说C++中struct和class的区别

是两种用于定义数据类型的关键字。它们的主要区别在于默认的成员访问控制和默认继承类型。在语法上是相同的,可以拥有构造函数、析构函数、成员函数、静态成员等。,意味着派生类的成员函数不能访问基类的私有成员。,意味着派生类的成员函数可以访问基类的公共成员。自身的函数外,其他函数都不能访问。通常用于定义简单的数据结构,而。需要注意的是,除了以上区别,,意味着所有函数都可以访问。中,默认的成员访问控制是。中,默认的成员访问控制是。用于定义更复杂的对象。中,默认的继承类型是。中,默认的继承类型是。

2023-05-07 20:17:43 111

原创 C语言和C++的区别

如果在try块中发生了异常,程序就会跳转到与之匹配的catch块中,catch块中的代码会处理异常并进行相应的操作,比如输出错误信息、恢复程序状态等。C语言的类型检查比较宽松,通常只检查变量的类型是否与函数声明或定义中的类型匹配。静态类型检查是指在编译期间进行的类型检查,即编译器会检查变量的类型是否与函数声明或定义中的类型匹配,并在发现类型不匹配时发出错误信息,导致编译失败。动态类型检查是指在程序运行期间进行的类型检查,即编译器会生成代码来检查对象的类型,并在对象类型不匹配时抛出异常。

2023-05-07 20:05:01 594

原创 XML序列化和解析案例

编写小案列,掌握XML序列化和解析

2023-04-19 13:02:45 100

原创 使用SharedPreferences存储数据案列

编写一个小案例,熟练掌握使用SharedPreferences存储数据

2023-04-19 12:45:21 318

原创 ListView简单使用案列

学习ListView控件,通过练习小案例掌握他吧

2023-04-19 11:21:08 169

原创 并发,进程,线程,进程间通信法式,几种典型的锁的理解

并发,进程,线程,进程间通信法式,几种典型的锁的理解

2023-03-05 19:27:22 103

原创 IO多路复用三种实现--select、poll、epoll

IO多路复用三种实现--select、poll、epoll,分别实现回射服务器

2022-12-10 17:12:53 467

翻译 C++哈希表最详细解决

哈希表及相关力扣题

2022-12-09 23:36:26 1574

原创 6种常用的调度算法

常用的调度算法有:先来先服务调度算法、时间片轮转调度法、短作业优先调度算法、最短剩余时间优先、高响应比优先调度算法、优先级调度算法等等。

2022-12-08 23:08:18 3403

原创 兰神一席话,胜读十年书

学习心得体会

2022-12-05 10:38:22 116

原创 const、static关键字、this指针、inline内联函数知识清单(C++)

const、static关键字、this指针、inline内联函数知识清单(C++)

2022-12-05 09:57:18 138

原创 git介绍、安装、基本使用流程

git介绍、安装、基本使用流程

2022-12-02 15:50:10 470

原创 C++的enum、和decltype知识清单

C++的enum、和decltype知识清单

2022-12-01 00:23:46 285

原创 友元类和友元函数、using、::范围解析运算符知识清单

友元类和友元函数、using、::范围解析运算符知识清单

2022-11-29 21:12:32 394

翻译 用C++创建链表,在链表中增删一个节点

链表相关概念,用C++创建链表,在链表中增删节点练习

2022-11-26 22:11:55 472

原创 进程相关总结(Linux)

总结了进程相关知识,在Linux下练习进程相关指令和函数的用法

2022-11-25 15:29:40 601

使用设计模式实现的花店订购系统,前端用javaswing

在小组的项目设计中,我们应用了各种设计模式来解决各种软件设计和开发的问题。设计模式是一种被广泛接受和验证的面向对象设计经验的总结,可以提供可复用的解决方案,并促进代码的可读性、可维护性和可扩展性。在项目开发后,我们深刻学习设计模式给我们编码带来的方便,具体如下: 在需要确保系统中只有一个实例对象的情况下,我们使用了单例模式。这可以防止多个实例的创建,并提供了一个全局访问点来获取该实例。为了实现对象的创建和解耦,我们使用了工厂模式。通过工厂类创建对象,将对象的实例化过程和客户端代码分离,提供了更好的灵活性和可扩展性。为了实现对象之间的松耦合和事件通知,我们采用了观察者模式。对象之间的一对多依赖关系通过观察者模式得到解耦,并且当对象的状态发生变化时,能够通知所有依赖的观察者。并让发布者获取唯一实例我们使用单例模式 总的来说,通过应用设计模式,我们成功地解决了在小组课程设计中遇到的各种问题,提高了代码的可复用性、可扩展性和可维护性。同时,设计模式也使我们的代码更加结构化,易于理解和修改。这些经验和应用对于我们今后的软件开发工作将会非常有益

2023-06-12

android studio开发的校园新闻APP,想找项目学习或者期末项目没写的可以下载

用android studio开发的校园新闻App,App主要涉及新闻的分类管理、发布和浏览,大致可以将系统分为以下几个模块: 1、 用户登录模块:该模块负责处理用户登录和用户注册等相关操作。 2、 新闻主界面管理模块:该模块负责管理新闻分类,包括添加、删除新闻,根据新闻类型分页查看。 3、 新闻发布模块:发布新闻模块包括了即将要发布的新闻的标题,类别,作者学号,联系方式,内容。 4、 个人中心模块: 个人中心模块包括了对个人信息的修改,我的发布的删除,刷新,返回,我的收藏的删除,刷新,返回,修改个人密码,关于系统简介的查看,退出登录,校园商城的浏览,返回主页面等功能。

2023-04-27

操作系统模拟实验,进程调度,进程同步,避免死锁,存储器管理,设备管理,文件管理并集成

本项目是用C#编写的操作系统模拟实验,进程调度,进程同步,避免死锁,存储器管理,设备管理,文件管理并集成,可满足操作系统课程实验,内附文档说明和运行说明。

2023-03-05

进程调度,进程同步,避免死锁,C#写的三个项目包+内附实验报告

用C#语言编写进程管理,包括进程调度(先来先服务算法,高优先级),进程同步,避免死锁(银行家算法),三个项目包,内附实验报告

2022-12-05

Linux2.6内核源代码

Linux2.6内核源代码,需要的下载

2022-11-22

unity期末大作业+游戏源码+报告

开发环境unity2021.3.8f1c1,闯关游戏,源码带注释,很容易看懂,适合初学者学习使用,游戏源码地址在报告里有写,大家觉得对你交作业有帮助,记得点点赞哦。谢谢大家

2022-11-20

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除