自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Web前端概述】

CSS(Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)的计算机语言,CSS文件扩展名为 .css。CSS的作用CSS的工作原理规则、属性和值常用选择器Write Less Do More(用更少的代码来完成更多的工作)使用CSS选择器来查找元素(更简单更方便)使用jQuery方法来操作元素(解决浏览器兼容性问题、应用于所有元素并施加多个方法)

2024-10-16 22:03:16 888

原创 【Python语言进阶(二)】

面向对象设计原则。

2024-10-15 22:41:16 799

原创 【Python语言进阶(一)】

我们有一个type()函数的应用:type(类名, 父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值)),可以通过这种方式来创建一个我们自己想要的类。接下来,每当j遇见比pivot小的元素,都会推动i向前走,直到最后i是找到大于pivot的元素,j找到最后小于pivot的元素,因为二者位置的元素已然不相连,则将二者互换位置即可。互换后,此时i(算上i)左侧都是比pivot小的元素,i+1(算上i+1)都是比pivot大的元素,将i+1和pivot元素互换即可,最后在分组递归就好了。

2024-10-08 22:51:33 1214

原创 解决Github打不开或速度慢的问题

基于这种背景,人们在IP地址的基础上又发展出了一种更易识别的符号化标识,这种标识由人们自行选择的字母和数字构成,相比IP地址更易被识别和记忆,逐渐代替IP地址成为互联网用户进行访问互联的主要入口。Github 在全球各地都有服务器,而在国内,DNS解析服务基本上都是把域名解析到了美国的服务器,所以访问起来会比较慢,但我们可以通过修改本地 hosts 文件来绕过公共DNS解析,直接访问 Github 在韩国、日本等的服务器,从而达到加速访问的目的。打开软件,点击软件左下角,选择准备修改 hosts 的网站。

2024-10-02 21:40:22 5867 1

原创 【Python语言初识(六)】

很显然,这样的服务器并不能满足我们的需求,我们需要的服务器是能够同时接纳和处理多个用户请求的。就像我们可以用HTTP(超文本传输协议)来访问一个网站一样,发送邮件要使用SMTP(简单邮件传输协议),SMTP也是一个建立在TCP(传输控制协议)提供的可靠数据传输服务的基础上的应用级协议,它规定了邮件的发送者如何跟发送邮件的服务器进行通信的细节,而Python中的smtplib模块将这些操作简化成了几个简单的函数。不同的进程之间的通信所使用的套接字是不一样的,套接字可以用来区分不同的进程之间的数据传输。

2024-10-01 21:27:27 1881

原创 【Python语言初识(五)】

Queue。

2024-09-26 21:58:01 788 1

原创 【正则表达式】

,那么正则表达式也是与之类似的用来进行文本匹配的工具,只不过比起通配符正则表达式更强大,它能更精确地描述你的需求(当然你付出的代价是书写一个正则表达式比打出一个通配符要复杂得多,要知道任何给你带来好处的东西都是有代价的,就如同学习一门编程语言一样),比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像028-12345678或0813-7654321),这不就是国内的座机号码吗。要指定一个子表达式的组名,请使用这样的语法:(?

2024-09-25 21:08:28 1023

原创 【图形用户界面和游戏开发(基于Python)】

Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的,Tk是一个工具包,最初是为Tcl设计的,后来被移植到很多其他的脚本语言中,它提供了跨平台的GUI控件。碰撞检测在绝大多数的游戏中都是一个必须得处理的至关重要的问题,pygame的sprite(动画精灵)模块就提供了对碰撞检测的支持,这里我们暂时不介绍sprite模块提供的功能,因为要检测两个小球有没有碰撞其实非常简单,只需要检查球心的距离有没有小于两个球的半径之和。

2024-09-24 22:19:07 1104

原创 【Python语言初识(四)】

在Python中可以使用class关键字定义类,然后在类中通过之前学习过的函数来定义方法,这样就可以将对象的动态特征描述出来,代码如下所示。# __init__是一个特殊方法用于在创建对象时进行初始化操作# 通过这个方法我们可以为学生对象绑定name和age两个属性print('%s正在学习%s.' % (self.name, course_name))# PEP 8要求标识符的名字用全小写多个单词用下划线连接# 但是部分程序员和公司更倾向于使用驼峰命名法(驼峰标识)

2024-09-23 21:48:18 1186

原创 【Python语言初识(三)】

字典是另一种可变容器模型,Python中的字典跟我们生活中使用的字典是一样一样的,它可以存储任意类型对象,与列表、集合不同的是,字典的每个元素都是由一个键和一个值组成的“键值对”,键和值通过冒号分开。Python中允许通过一些特殊的方法来为某种类型或数据结构自定义运算符,上面的代码中我们对集合进行运算的时候可以调用集合对象的方法,也可以直接使用对应的运算符,例如。和字符串一样,列表也可以做切片操作,通过切片操作我们可以实现对列表的复制或者将列表中的一部分取出来创建出新的列表,代码如下所示。

2024-09-23 21:17:01 1063

原创 【Python语言初识(二)】

需要说明的是,如果我们导入的模块除了定义函数之外还有可以执行代码,那么Python解释器在导入这个模块时就会执行这些代码,事实上我们可能并不希望如此,因此如果我们在模块中编写了执行代码,最好是将这些执行代码放入如下所示的条件中,这样的话除非直接运行该模块,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是"__main__"。给上面两个函数的参数都设定了默认值,这也就意味着如果在调用函数的时候如果没有传入对应参数的值时将使用该参数的默认值,所以在上面的代码中我们可以用各种不同的方式去调用。

2024-09-20 18:49:47 1310

原创 【Python语言初识(一)】

计算机中的变量是实际存在的数据或者说是存储器中存储数据的一块内存空间,变量的值可以被读取和修改,这是所有计算和控制的基础。计算机能处理的数据有很多种类型,除了数值之外还可以处理文本、图形、音频、视频等各种各样的数据,那么不同的数据就需要定义不同的存储类型。:turtle是Python内置的一个非常有趣的模块,特别适合对计算机程序设计进行初体验的小伙伴,它最早是Logo语言的一部分,Logo语言是Wally Feurzig和Seymour Papert在1966发明的编程语言。会被字符串的值替换掉。

2024-09-20 18:18:20 1407

原创 The Missing Semester of Your CS Education(计算机教育中缺失的一课)

Signal的信任模型是,信任用户第一次使用时给出的身份(trust on first use),同时支持用户线下(out-of-band)、面对面交换公钥(Signal里的safety number)。一般我们认为攻击者了解密码的模型(最小长度,最大长度,可能包含的字符种类等),但是不了解某个密码是如何随机选择的—— 比如。是Git中使用的一种散列函数, 它可以将任意大小的输入映射为一个160比特(可被40位十六进制数表示)的输出。文件中存储的用户公钥来验证返回的信息是否由所对应的私钥所签名。

2024-06-15 11:13:57 826

原创 The Missing Semester of Your CS Education(计算机教育中缺失的一课)

你会发现很多程序会使用实际时间,用户时间和系统时间,用户时间是指CPU执行用户级别的代码所用的时间,系统时间则是相反的,它是你的程序在CPU上执行内核级别的指令所花费的时间。追踪分析器会在你的代码中插入一些东西,它们会与你的代码一起执行,会记录程序的每一次函数调用,而采样分析器则只会周期性的监测(通常为每毫秒)您的程序并记录程序堆栈。但是应该如何设置呢?这个例子我们可以记录一下当前时间,然后执行一些操作,再记录一下时间,计算一下时间差,这样你就可以缩小范围,把代码不同的部分分隔开,分析不同模块使用时间。

2024-06-13 21:25:19 790

原创 The Missing Semester of Your CS Education(计算机教育中缺失的一课)

如果我们执行上面的命令,"&" 告诉bash我希望该程序在后台运行,这个程序依然是在运行当中,但不会在提示符旁边显示出来,如果只是运行命令而没有"&"符号,我将无法执行任何操作,除非命令完成或手动终结,否则我将无法使用提示符。如果我们启动一个耗时很长的进程,在进程执行中按下"CTRL + Z",我们可以看到终端显示"已暂停",这实际上意味着该进程被发送了一个"SIGSTOP"信号,现在仍在那里,你可以继续执行它,不过只是被暂停了,它依然在后台。在启动时,您的 shell 程序会读取很多文件以加载其配置项。

2024-06-06 11:53:16 695

原创 【Git】

git - 分布式版本控制工具Version control systems(VCSs) VS 集中式版本控制工具Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git 易于学习,占地面积小,性能极快。它具有廉价的本地库(在本地磁盘上),方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCase 等版本控制工具。

2024-06-04 21:05:44 1587

原创 The Missing Semester of Your CS Education(计算机教育中缺失的一课)

在正则表达式中,我们可以使用捕获组(capture group),来捕获我们想要的输出的内容,捕获组可以指定我们关心的值,并在以后重复使用它。"sort -nk1,1":"-n":数字排序,"-k":选择输入中以空格为分隔符的列来执行排列,"1,1":从第一列开始并在第一列停止排序,或者说依据所有的列进行排序(在此情况下只按第一列排序)。但是这里我们即使把第一个字符换成"b",输出还会是"ba",这是因为正则表达式,还是在默认的情况下,每行只会匹配一次,替换一次,这就是"sed"通常会做的事情。

2024-06-03 20:15:30 802

原创 The Missing Semester of Your CS Education(计算机教育中缺失的一课)

这样做更改的效果是,如果"cd"没有正确执行,你不能"cd"进入该文件夹,因为要么你没有权限,要么其不存在,这将返回一个非0的错误代码,脚本将执行"exit",这将停止脚本的运行,而不是继续对实际不存在的地方执行命令。"返回0则代表程序正常执行返回,没有问题,而返回1则代表程序出现错误,"grep foorbar mcd.sh":表示从"mcd.sh"中寻找"foobar"字符串,但是该字符串不存在,故,"grep"不会输出任何内容,但是会返回1告诉我们程序发生了错误。",它可以扩展为任何一个字符。

2024-05-24 21:09:14 723

原创 The Missing Semester of Your CS Education(计算机教育中缺失的一课)

因为我们输入或输出的重定向是不被程序所知道的,通道的重定向是由shell设置的,所以,在这种情况下,我告诉我的shell运行程序"sudo",并使用参数"echo"和"500",并将其输出发送到"brightness"文件中,但是。"sudo"或"do as su":这里的"su"代表超级用户,这是以超级用户的身份执行操作的一种方式,通常,我们在终端中输入"sudo"+命令,我们就可以以root用户的身份运行该命令,而不是你实际使用的用户身份。例如,"-a"和"--all"都是标志;"cp":复制文件。

2024-05-16 21:08:14 1087

原创 【Vim】

Vim是一个历史悠久的文本编辑器,可以追溯到qed。于 1991 年发布初始版本。Vim 有着悠久的历史;它起源于 Vi 编辑器(1976 年),至今仍在开发中。编程时,您大部分时间都花在阅读/编辑上,而不是写作上。出于这个原因,Vim 是一个模态编辑器:它有不同的插入文本和操作文本的模式。Vim 是可编程的(使用 Vimscript 和 Python 等其他语言),而 Vim 的界面本身就是一种编程语言:击键(带有助记词名称)是命令,这些命令是可组合的。Vim 避免使用鼠标,因为它太慢了;

2024-05-16 11:28:07 1194

原创 【数据结构(链表)】

Josephus及他的朋友躲到⼀个洞中,39个犹太⼈决定宁愿死也不要被⼈抓到,于是决定了⼀个自杀⽅式,41个⼈排成⼀个圆圈,由第1个⼈开始报数,每报数到第3⼈该⼈就必须自杀,然后再由下⼀个重新报数,直到所有⼈都自杀身亡为止。链表中每个节点都是独立申请的(即需要插入数据时才去申请⼀块节点的空间),我们需要通过指针变量来保存下⼀个节点位置才能从当前节点找到下⼀个节点。当我们想要从第⼀个节点⾛到最后⼀个节点时,只需要在前⼀个节点拿上下⼀个节点的地址(下⼀个节点的钥匙)就可以了。实际中使用的链表数据结构,都。

2024-03-03 09:01:52 746

原创 【数据结构(顺序表)】

数据结构是由“数据”和“结构”两词组合而来。什么是数据?常见的数值1、2、3、4.....、教务系统里保存的用户信息(姓名、性别、年龄、学历等等)、网页里肉眼可以看到的信息(文字、图片、视频等等),这些都是数据什么是结构?当我们想要使用大量使用同⼀类型的数据时,通过手动定义大量的独立的变量对于程序来说,可读性非常差,我们可以借助数组这样的数据结构将大量的数据组织在⼀起,结构也可以理解为组织数据的方式。想要找到草原上名叫“咩咩”的羊很难,但是从羊圈里找到1号羊就很简单,羊圈这样的结构有效将。

2024-02-24 21:11:50 1194

原创 【机房预约系统(C++版)】

学校现有几个规格不同的机房,由于使用时经常出现“撞车“现象,现开发一套机房预约系统,解决这一问题。分别有三种身份使用该程序学生代表:申请使用机房教师:审核学生的预约申请管理员:给学生、教师创建账号机房总共有3间1号机房 --- 最大容量20人2号机房 --- 最多容量50人3号机房 --- 最多容量100人申请的订单每周由管理员负责清空学生可以预约未来一周内的机房使用,预约的日期为周一至周五,预约时需要选择预约时段(上午、下午)教师来审核预约,依据实际情况审核预约通过或者不通过。

2024-02-09 12:02:14 877

原创 【演讲比赛流程管理系统(C++版)】

在speechManager.h中提供开始比赛的的成员函数void startSpeech();在speechManager.h中添加保存记录的成员函数void saveRecord();在speechManager.h中添加保存记录的成员函数void clearRecord();在speechManager.h中添加保存记录的成员函数void loadRecord();在speechManager.h中添加保存记录的成员函数void showRecord();

2024-02-01 21:36:33 2134

原创 【C++提高编程(四)】

map中所有元素都是pair。

2024-01-29 10:26:17 915

原创 【C++提高编程(三)】

deque容器和vector容器的构造方式几乎一致,灵活使用即可。

2024-01-25 09:52:11 1064

原创 【C++提高编程(二)】

学习目标:vector中存放自定义数据类型,并打印输出//存放自定义数据类型public:int m_Age;Person p1("孙悟空", 999);Person p2("沙悟净", 569);Person p3("猪悟能", 789);Person p4("唐三藏", 40);Person p5("白龙马", 423);//向容器中插入数据//遍历容器中的数据it!= v.end();it++)

2024-01-21 08:40:37 1613

原创 【C语言(十七)】

(假定某个程序中声明了⼀个某个长度的数组,如果机器内存有限,我们需要⼀个很小的数组,但是另外⼀个机器内存大些,我们需要⼀个数组能够⼤些。当宏参数在宏的定义中出现超过⼀次的时候,如果参数带有副作用,那么你在使用这个宏的时候就可能出现危险,导致不可预测的后果。将源代码程序被输入扫描器,扫描器的任务就是简单的进行词法分析,把代码中的字符分割成⼀系列的记号(关键字、标识符、字面量、特殊字符等)。如果是加了分号的情况,等替换后,if和else之间就是2条语句,⽽没有大括号的时候,if后边只能有⼀条语句。

2024-01-18 11:39:38 1324

原创 【C++提高编程(一)】

本阶段主要针对C++和技术做详细讲解,探讨C++更深层的使用。

2024-01-16 09:15:03 1054

原创 【职工管理系统(C++版)】

如果想将所有不同种类的员工都放入到一个数组中,可以将所有员工的指针维护到一个数组里如果想在程序中维护这个不定长度的数组,可以将数组创建到堆区,并利用Worker **的指针维护。虽然我们实现了添加职工后保存到文件的操作,但是每次开始运行程序,并没有将文件中数据读取到程席中而我们的程序功能中还有清空文件的需求。增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号。在workerManager.h中添加成员函数 void clean_File();

2024-01-13 17:14:02 970

原创 【C++核心编程(四)】

继承是面向对象三大特性之一。有些类与类之间存在特殊的关系,例如下图中:我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码。例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同,接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处。总结:继承的好处:可以减少重复的代码class A : public B;A 类称为子类或派生类;B 称为父类或基类。派生类中的成员

2024-01-07 14:48:42 1278

原创 【C++核心编程(三)】

④对GoodGay类中的函数一一实现(GoodGay的构造函数必须在类外实现且要在Building类实现后,因为里面需要创建Building类的对象,如若在类内实现,前面光声明Building类不够,会报错)通过上述知识点我们知道在C++中成员变量和成员函数是分开存储的,每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码。在程序里,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去。

2024-01-03 15:44:17 1078

原创 【C++核心编程(二)】

构造函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用。C++中的面向对象来源于生活,每个对象也都会有初始设置以及 对象销毁前的清理数据的设置。人可以作为对象,属性有姓名、年龄、身高、体重...,行为有走、跑、跳、吃饭、唱歌...设计一个圆形类 (Circle) ,和一个点类 (Point) ,计算点和圆的关系。总结: 如果属性有在堆区开的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题。C++类中的成员可以是另一个类的对象,我们称该成员为:对象成员。

2024-01-02 11:36:47 1075

原创 【C++核心编程(一)】

函数名可以相同,提高复用性。函数重载满足条件:同一个作用域下函数名称相同函数参数类型不同或者个数不同或者顺序不同函数的返回值不可以作为函数重载的条件cout

2023-12-29 15:52:49 1031

原创 【通讯录管理系统(C++版)】

联系人是由多种不同的元素组成的,所以我们需要用结构体来描述它,而通讯录是包含联系人和联系人人数的,所以通讯录理应是一个嵌套结构体,里面嵌套了联系人结构体,并且联系人的人数是不确定的,故我们在通讯录结构体中用结构体数组来存储不同联系人的信息。实现思路: 将通讯录所有联系人信息清除掉,只要将通讯录记录的联系人数量置为0,做逻辑清空即可,并且为了防止误操作,在清空之前我们让用户选择是否清空,可以保证通讯录被恶意误操作。要删除李四,我们只需要将李四后面的数据均向前移动,并将通讯录中记录的人员个数做-1的操作即可。

2023-12-27 09:35:15 1128 1

原创 【C语言(十六)】

磁盘上的文件是文件。但是在程序设计中,我们⼀般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。上面说的适用于所有输入流⼀般指适用于标准输入流和其他输入流(如文件输入流);所有输出流一般指适用于标准输出流和其他输出流(如文件输出流)。//将data1.txt文件的内容,拷贝一份生成data2.txt文件//1.从data1.txt中读取数据//2.写到data2.txt的文件中int main()return 1;return 1;//数据的读写(拷贝)

2023-12-19 15:16:04 858

原创 【C语言(十五)】

C/C++程序内存分配的几个区域:1.栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。2.堆区(heap):⼀般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。分配方式类似于链表。3.数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放。4.

2023-12-16 09:17:12 1181 1

原创 【C语言(十四)】

像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同⼀块内存空间。共用体。给联合体其中⼀个成员赋值,其他成员的值也跟着变化。//联合类型的声明union Unchar c;int i;int main()//联合变量的定义//计算整个变量的⼤⼩return 0;

2023-12-14 16:42:25 1175 1

原创 【C语言(十三)】

结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。位段的声明和结构是类似的,有两个不同:1.位段的成员必须是int或signed int,在C99中位段成员的类型也可以选择其他类型。2.位段的成员名后边有⼀个冒号和⼀个数字。int _b:5;int _c:10;int _d:30;A就是⼀个位段类型。那位段A所占内存的大小是多少?

2023-12-14 15:50:02 942 1

原创 【C语言(十二)】

其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储,下面是具体的概念:⼤端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处。小端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。上述概念需要记住,方便分辨大小端。

2023-12-13 15:31:19 1128

空空如也

空空如也

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

TA关注的人

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