自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (8)
  • 收藏
  • 关注

原创 重写-学生选课系统

c++ 学生选课系统 多文件

2024-11-12 18:39:58 427

原创 # Windows环境下VSCode + Jupyter + Conda的AI学习环境配置指南

确保已安装`ipykernel`,可以通过运行`conda install ipykernel`来安装。3. 安装完成后,打开命令提示符(CMD),输入`conda --version`确认安装成功。:尝试使用`pip install [包名]`替代`conda install [包名]`。Jupyter已经包含在Anaconda安装中,但我们需要在VSCode中进行一些配置。4. 在VSCode中,打开一个新的终端(Ctrl+`),确保它使用的是你刚创建的环境。

2024-09-24 11:26:21 1497 1

原创 How Blink Works

在 Blink 上开发绝非易事。对于新接触 Blink的开发者来说,要实现一个高效的渲染引擎,需要了解大量Blink特有的概念和编码约定。对于经验丰富的开发者来说亦非易事,因为 Blink 非常庞大,对性能、内存和安全性极为敏感。关于Blink开发的更多内容, 参考这里。

2024-05-24 16:53:15 819

原创 Linux 操作系统管理命令(全)

jobs 命令执行的结果中,加号(+)表示是一个当前的任务,减号(一)表示是一个当前任务之后的任务。如果后台的任务号有2个,当第[1]个后台任务顺利执行完毕,第[2]个后台任务还在执行中时,当前任务便会自动变成后台任务号码[2]的后台任务,即当前任务是动态变化的。LInux操作系统的用户和组信息保存在系统的配置文件中 ,其中的用户信息保存在/passwd和etc/shadow文件中,组信息保存在/etc/group和/etc/gshadow文件中,这些文件都是文本文件,文件格式类似。

2022-12-12 20:01:42 28196 8

原创 函数调用的过程分析

局部变量占用的内存是在程序执行过程中”动态”地建立和释放的。这种”动态”是通过栈由系统自动管理进行的。当任何一个函数调用发生时,系统都要作以下工作:通过如下代码进行“一”的分析: 首先进入主函数,系统为主函数开辟一个栈帧,依次入栈 x=10(占4字节),y=20(占4字节),res=0(占4字节),执行到z=fun(x,y);调用子函数fun(),开辟子函数fun的栈帧,先将y的值赋值给b,b=20入栈,然后将x的值赋值给a,a=10入栈,然后将主函数的栈底指针入栈,然后将主函数z=fun(x,y);后的指

2022-12-04 21:36:03 1653 1

原创 std::shared_ptr(基础、仿写、安全性)

调用适当的构造函数初始化对象;shared_ptr 作为unordered_map的key如果把sharedp_tr放到unordered_set中,或者用于unordered_map 的key,那么要小心hash table 退化为链表。对于shared_ ptr 在拷贝和赋值时的行为是,每个shared _ptr 都有一个关联的计数值, 通常称为引用计数。例如,当用一个shared_ptr 初始化另一个 shred_ptr,或将它当做参数传递给一个函数以及作为函数的返回值时,它所关联的计数器就会递增。

2022-11-26 20:08:33 1571

原创 std::weak_ptr(分析、仿写)

weak ptr是为了配合shared _ptr 而引入的一种智能指针,它指向一个由shared_ptr 管理的对象而不影响所指对象的生命周期,也就是将一个weak_ptr 绑定到一个shared_ptr不会改变shared_ptr 的引用计数。当我们创建一个weak_ptr 时,需要用一个shared_ptr实例来初始化weak_ptr,由于是弱共享, weak_ ptr的创建并不会影响shared_ptr 的引用计数值。为了解决类似这样的问题,C++11 引入了weak_ptr,来打破这种循环引用。

2022-11-26 20:07:31 1887

转载 c++ 左值、右值

注:有移动对象先调动移动构造来构架将亡值对象,而不调用普通的拷贝构造,如果没有移动构造,就会调用普通拷贝构造来构造将亡值对象。由于将亡值是一个不具名的对象,所以不能用左值引用,只能用右值引用,并且通过右值引用,也增长了将亡值的生存周期。左值引用:需要引用一个有名字的变量,不能引用不具名的对象。对堆内存构建了一次,如果没有移动构建,就会构建三次。右值引用:只能引用字面常量,不具有名字。右值:不可以取它的地址。左值:可以取它的地址。

2022-11-25 17:06:23 627

原创 std::Auto_Ptr(仿写)

因为auto_ptr析构的时候肯定会删除他所拥有的那个对象,所以我们就要注意了,一个萝卜一个坑,两个auto_ptr 不能同时拥有同一个对象。2、因为auto_ptr 的析构函数中删除指针用的是delete,而不是delete [],所以我们不应该用auto_ ptr 来管理一个数组指针。4、因为auto_ ptr不具有值语义(value semantics),所以auto_ ptr不能被用在stl标准容器中。因为ap1与ap2都认为指针p是归它管的,在析构时都试图删除p,两次删除同一个对象的行为在。

2022-11-25 00:00:00 626

原创 std::unique_ptr(基础和仿写)

【代码】std::unique_ptr(基础和仿写)

2022-11-25 00:00:00 1630

原创 explicit 说明符

explicit指定构造函数或转换函数 (C++11 起)或(C++17 起)为显式,即它不能用于和explicit (

2022-11-24 10:32:58 920

原创 noexcept说明符/运算符

与相同。

2022-11-24 10:24:51 1625

原创 Python(1)——基础

可以使用:\来进行转义name = "我是谁" # 双引号namel = """我是谁""" #三引号name = '我是谁' #单引号。

2022-11-23 16:03:11 559

原创 letcode 739 每日温度

由于温度范围在 [30, 100] 之内,因此可以维护一个数组 next 记录每个温度第一次出现的下标。数组 next 中的元素初始化为无穷大,在遍历温度列表的过程中更新 next 的值。对于温度列表中的每个元素 temperatures[i],需要找到最小的下标 j,使得 i < j 且 temperatures[i] < temperatures[j]。天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。返回的是当天温度后第一次温度上升的天数;,表示每天的温度,返回一个数组。

2022-10-17 23:23:21 579

原创 c++复习——名字粉碎

如果返回类型,函数名,参数类型都相同,但是参数个数不同也未必能够进行重载,如果没有缺 省值或者默认值的情况下可以重载,如果有默认值则不能确定。所以调用的时候无法确定哪个函数因此要注意二义性问题。

2022-09-19 23:44:10 816

原创 C++复习 ——内联函数

1)内联函数的处理方式是在函数的调用点直接代码展开。在计算机系统下,假如频繁的调用,就会造成较大的时间开销(这里时间开销指的是:现场保护和现场恢复,栈帧的开辟和清除栈帧的开销)。2)在release版本内联函数才会起作用,才会将代码直接展开成一条条指令,在debug版本不起作用,仍然会按照函数的方式进行。答:只能对非常小的函数加inline,如果函数内部有循环、if语句等,加上inline,系统会报错。为了消除函数调用的时空开销,C++ 提供一种提高效率的方法,②没有if语句、循环语句。

2022-09-19 23:26:49 790

原创 Redis(12)Bitmap

统计用户信息,活跃,不活跃!两个状态的,都可以使用 Bitmaps!127.0.0.1:6379> bitcount sign # 统计这周的打卡记录,就可以看到是否有全勤!使用bitmap 来记录 周一到周日的打卡!周一:1 周二:0 周三:0 周四:1 ......Bitmap 位图,数据结构!都是操作二进制位来进行记录,就只有0 和 1 两个状态!365 天 = 365 bit 1字节 = 8bit 46 个字节左右!统计操作,统计 打卡的天数!查看某一天是否有打卡!

2022-08-22 00:27:19 596 1

原创 Redis(11)Hyperloglog

A {1,3,5,7,8,7} B{1,3,5,7,8} 基数(不重复的元素) = 5,可以接受误差!Redis 2.8.9 版本就更新了 Hyperloglog 数据结构!Redis Hyperloglog 基数统计的算法!优点:占用的内存是固定,2^64 不同的元素的基数,只需要废 12KB内存!如果要从内存角度来比较的 话 Hyperloglog 首选!网页的 UV (一个人访问一个网站多次,但是还是算作一个人!)

2022-08-22 00:23:52 491

原创 Redis(10)Geospatial 地理位置

(获得所有附近的人的地址,定位!获得指定数量的人,200 所有数据应该都录入:china:city ,才会让结果更加请求!找出位于指定元素周围的其他元素!获得当前定位:一定是一个坐标值!km 表示单位为千米。mi 表示单位为英里。ft 表示单位为英尺。

2022-08-22 00:21:42 537

原创 Redis(9)五大数据类型 ——Zset(有序集合)

在set的基础上,增加了一个值set k1 v1 zset k1 score1 v12、排序从小到大排列值:从大到小排列值:按条件显示值的所有信息:3、移除 移除元素: 获取zset的元素的个数:4、获取指定区间元素个数 获取指定区间的成员数量的个数:...

2022-08-18 22:40:31 606

原创 Redis(8)五大数据类型——Hash(哈希)

hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息!hash 更适合于对象的 存储String更加适合字符串存储!

2022-08-18 22:34:10 1653

原创 Redis(7)五大数据类型——Set(集合)

微博,A用户将所有关注的人放在一个set集合中!将它的粉丝也放在一个集合中!共同关注,共同爱好,二度好友,推荐好友!

2022-08-18 22:22:31 548

原创 Redis(6)五大数据类型——List(列表)

他实际上是一个链表,before Node after , left,right 都可以插入值如果key 不存在,创建新的链表如果key存在,新增内容如果移除了所有值,空链表,也代表不存在!在两边插入或者改动值,效率最高!中间元素,相对来说效率会低一点~...

2022-08-18 22:10:01 1296

原创 Redis(5)五大数据类型——string(字符串)

再创建(如果不存在,再设置 (在分布式锁中会常常使用!GET KEY(键)

2022-08-18 00:01:42 257

原创 Redis(4)数据类型

代码】Redis(4)数据类型。

2022-08-17 22:59:01 201

原创 Redis(3)Redis为什么这么快

核心:redis 是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作!多次读写都是在一个CPU上的,在内存情况下,这个就是最佳的方案!官方表示,Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!所有就使用了单线程了!Redis 是C 语言写的,官方提供的数据为 100000+ 的QPS,完全不比同样是使用 key-vale的Memecache差!.......

2022-08-17 22:41:01 214

原创 Redis(2)基础命令

5.查询数据库 所有的 key值。2.Redis 默认数据库数量。4.set / get 命令。7.清除全部数据库的内容。

2022-08-17 17:34:01 201

原创 Redis(1)安装redis

4.查看redis 配置文件 位置。2.安装redis-server。3.查看 redis 安装。默认 :no 后台运行。

2022-08-17 17:10:20 241

原创 207.数组序号转换

给你一个整数数组arr,请你将数组中的每个元素替换为它们排序后的序号。一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。序号代表了一个元素有多大。每个数字的序号都应该尽可能地小。序号从1开始编号。......

2022-07-28 11:43:29 168

原创 面向对象——继承(c++)

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础,上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构。体现了由简单到复杂的认识过程。百度百科(继承)通过继承(inheritance)的机制可对类(class)分层,提供类型/子类型的关系。C++通过类派生(classderivation)的机制来支持继承。被继承的类称为基类(baseclass)或超类(superclass),新产生的类为。......

2022-07-26 23:06:24 2913 1

原创 设计模式(1)——设计模式的七大原则及三大模式

一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。模块应该尽量在不修改原代码的情况下进行扩展。在软件周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给代码引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。当软件需求变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有代码来实现变化。开放封闭原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。...

2022-07-25 17:18:33 631

转载 I/O复用——epoll(全)

Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll 高效的原因是什么?网上虽然也有不少讲解 Epoll 的文章,但要么是过于浅显,或者陷入源码解析,很少能有通俗易懂的。笔者于是决定编写此文,让缺乏专业背景知识的读者也能够明白 Epoll 的原理。本文核心思想是:要让读者清晰明白 Epoll 为什么性能好。文章会从网卡接收数据的流程讲起,串联起 CPU 中断、操作系统进程调度等知识;再一步步分析阻塞接收数据、Select 到 Epoll 的进化过程;最后探究 Epoll 的实现

2022-07-10 10:39:18 569 1

原创 I/O复用——poll

目录poll APIpoll 编程poll 总结poll系统调用 和 select类似,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪事件。 poll的原型如下:头文件:#include fds参数:pollfd结构类型的数组,它指定所有我们感兴趣的文件描述上发生的可读、可写和异常等事件。pollfd结构体的定义如下: 成员fd:指定文件描述符; 成员events:告诉poll监听fd上的那些事件,它是一系列事件的按位或; 成员revents:由内核修改,通...

2022-07-09 11:00:02 643 1

原创 I/O复用——select(全)

select系统调用的原型如下:头文件 #include返回值 :select成功时返回就绪(可读、可写和异常)文件描述符的总数。如果在超时时间内没有任何文件描述符就绪,select将返回0。select失败时返回-1。如果在select等待期间,程序接收到信号,则select立即返回-1,并设置errno为EINTR。maxfd:参数指定的被监听的文件描述符的总数。它通常被设置为 select 监听的所有文件描述符中的最大值+1,因为描述符是从0开始计数的。readfd......

2022-07-08 13:50:35 2599 2

原创 一篇文章搞懂TCP协议及TCP编程

目录运输层端口号、多路复用、多路分解1.1运输层端口号端口号的基本概念TCP/IP体系的应用层常用协议所使用的熟知端口号1.2运输层的多路复用与多路分解​面向连接的运输:TCP2.1TCP连接2.2TCP协议与UDP协议对比2.3TCP报文段格式2.4TCP三次握手(建立连接)2.4.1TCP为了保证连接的可靠性,每次都会通过进行三次握手来建立可靠的连接2.4.2使用tcpdump命令抓包查看建立过程2.5两次握手是否可以?(面试题)2.5TCP四次挥手(释放连接)2.5.1TCP使用四次挥手进行断开连接;

2022-06-16 15:49:58 4683 31

原创 DNS和SMTP

因特网的电子邮件基本原理首先我们要明白不管DNS还是SMTP都是运行在应用层的,所以我们理解他们并不能超过应用层;下图给出了因特网电子邮件系统的总体情况。从该图中我们可以看到它有3个主要组成部分:用户代理(user agent)、邮件服务器( mail server)和简单邮件传输协议( Simple Mail Transfer Protocol, SMTP)。用户代理:允许用户阅读、回复、转发、保存和撰写报文。微软的Outlook和Apple Mail是电子邮件用户代理的例子。例子

2022-05-23 17:47:12 5820 1

原创 设计B+树(B+Tree)

定义B+树是一种树数据结构,通常用于数据库和的文件系统中。B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+树元素自底向上插入,这与二叉树恰好相反。...

2022-05-20 20:18:59 1324 1

原创 Web和HTTP

目录HTTP概况Web术语HTTP基本HTTP是无状态协议HTTP连接方式非持续连接HTTP例子花费时间持续连接的HTTP非持续的缺点;HTTP报文格式请求报文HTTP请求报文的通用格式及GET、POST、HEAD等常用方法HTTP响应报文格式HTTP响应报文通用格式及状态码HTTP概况Web的应用层协议是超文本传输协议,它是Web的核心,在[RFC 1945]和[RFC 2616]中进行了定义。HTTP有两个程序实现:客户端——服务端..

2022-05-19 19:30:44 2733 7

原创 数据结构——B-树(c++)

简介 在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binary search tree),可以拥有多于2个子节点。与自平衡二叉查找树不同,B树为系统大块数据的读写操作做了优化。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。定义一颗m阶B-T...

2022-05-18 19:34:34 3097 3

原创 字典树(T树)

T树、字典树

2022-05-14 14:21:25 2042 1

Qt5下使用c++实现的局域网聊天系统

以前下载大牛的,window环境下会出现错误,linux环境下一次就过,为windows下删掉资源相关的内容; 使用语言:c++ 软件:Qt5 功能:登录/注册,添加好友/删除好友/私聊/群聊/记录保存/修改/语音聊天/ 界面:仿照QQ聊天制作 项目内容很庞大,适合qt和c++学的好的同学; 可以参考,相信帮助很大;

2022-07-16

局域网聊天系统Qt实现

项目名称:局域网聊天系统 进度:可运行、可展示 平台:windows 软件:Qt5 编码语言:C++ 实现功能:添加、删除、聊天、群聊、文件传输 特色:上线提醒 项目概述:适合课程设计

2022-07-16

局域网聊天软件 qt5、c++、window

编程语言:c++ 设计思路:客户端/服务器端 处理方法:服务器端接收/客户端发送 聊天:udp协议 文件:tcp连接 界面:模仿QQ界面 功能:登录/私聊/群聊/字体改变/文件发送/消息保存/消息删除/上下线提醒 适用范围:c++/qt 初学者

2022-07-16

window环境下Qt5 基于C++ 语言编写的局域网聊天系统

服务器端功能,主要处理来自局域网下的客户端连接,转发。 客户端功能: 数据库实现注册和登录(与数据库内容进行比对) 私聊、群聊,发送文件(可设置文件大小)清除聊天记录、保存聊天记录、好友上下线提醒; 开发语言c++、连接使用tcp通信; 缺点:界面美化不足。适合初学者;

2022-07-16

linux高性能服务器编程

适用于c++后台开发的朋友,文章内容很详细、对c++和linux开发帮助很大

2022-06-16

计算机网络面试题汇总2023

覆盖自己和同学的秋招面试体汇总

2022-06-16

tcp/ip详解卷一;;

挺好的 就是不好理解

2022-06-16

《计算机网络自顶向下方法第7版》中文PDF+复习题问题中文版答案

挺好的书,中文英文都有 课后题答案也有

2022-05-18

空空如也

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

TA关注的人

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