- 博客(84)
- 收藏
- 关注
原创 IOS全平台去开屏广告方案,真实有效
最近被苹果平台上的APP开屏广告搞得心烦意乱。请star一下人家的仓库,和本篇文章。,下载配置,即刻生效。
2024-06-18 21:09:28
2150
原创 Shell基础
自定义变量方式定义变量变量名=值,赋值符左右不能有空格,默认是字符串类型删除变量unset 变量名定义只读变量readyonly 变量名=值,只读变量不可被unset导入环境变量export 变量名定义环境变量export 变量名=值根据类型定义变量declare -类型 变量名=值,-i 整型,-r 只读,-a 普通数组,-A 关联数组,-x 环境变量。
2024-03-09 11:25:11
971
原创 Lua语法入门和C API基础
只需为table添加一个构造器new函数,在其中绑定一个空表作元表并设置__index为基表。返回该空表,该空表就是一个新的对象。如果为该空表添加新的键值对,那么它就是子类。可以为构造器设置一个table类型的参数,将其中属性添加到元表中。age = nil,endendmeta = objendreturn setmetatable(meta, { __index = self }) -- 在meta表中找不到的键值对,则会到Person表中找end。
2024-03-09 11:23:30
1119
原创 ubuntu安装qt5启动失败,qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was
qt.qpa.plugin: Could not load the Qt platform plugin “xcb” in “” even though it was found.错误,链接:https://www.jianshu.com/p/b51008566134。商业转载请联系作者获得授权,非商业转载请注明出处。在Linux上使用PyQt5时,出现。
2023-12-09 19:34:26
660
原创 C++进阶:异常和智能指针
实际项目中不可随便抛任意类型的异常,这样会增加处理难度。很多公司都会定义自己的异常类体系进行规范的异常管理。实际工程中也都是自定义异常类体系,用父类对象捕获子类对象,这非常实用。", 101);//...//...
2023-09-07 14:15:52
569
原创 C++进阶:c++11
相比于C++98,C++11则带来了数量可观的变化,以及对C++03缺陷的修正。C++11语法更加泛化简单化、更加稳定安全,功能更强大,提升开发效率。
2023-07-23 20:26:59
286
原创 C++进阶:哈希
哈希也叫做散列,记数排序就体现了哈希思想。计数排序为统计数字出现的个数,为每个数字都开辟了对应的一块空间,用来记录其出现的个数,每遇到就加一。将一个元素和一个位置建立映射关系,这就是哈希的本质。常见的数据类型如整数,库中自带哈希函数,但有些类型比如自定义类型,需要我们自定义哈希函数。可以把哈希函数设计成仿函数,对不同类型添加特化处理。return key;} };// 特化 template < > struct Hash < string > {} };
2023-07-20 16:26:28
187
原创 C++进阶:map和set
键值对是表示具有对应关系的一种结构,一般只有两个成员key和value,key代表键值,value表示对应的数据。} };pair就是键值对,实际上是一个结构体,被map当作元素类型使用。搜索树的查找效率高,但如果数据有序或接近有序,搜索树就会退化成单支树,查找效率就会变成线性的。使用AVL树插入新结点时会对树进行调整,保证每个结点的左右子树高度之差的绝对值不超过1。从而降低树的高度,减少平均搜索长度。该树的左右子树都是AVL树,左右子树的高度之差(简称平衡因子)的绝对值不超过1。
2023-07-16 21:10:16
244
原创 HTTP服务器
对于CGI机制的理解和实现。整个HTTP服务就是CGI程序和客户端沟通的桥梁,因为CGI程序与外界的输入输出都由HTTP服务器代理和转发。通过子进程进程程序替换的方式,能够调用任意程序,且可以获得程序的运行结果和控制其输入输出。
2022-11-24 02:33:41
574
3
原创 MySQL:用户权限和语言接口
/0. 创建MYSQL句柄 MYSQL * my = mysql_init(nullptr);//4. 关闭数据库 mysql_close(my);由此也可以看出MySQL其实是网络服务,句柄就是文件描述符。
2022-10-16 22:39:46
1046
4
原创 MySQL:事务管理
事务的本质就是一组DML数据库管理语言,这些语句在逻辑上存在相关性,这一组语句要么失败要么成功,属于一个整体。MySQL提供一种机制就是MySQL事务,保证我们达到这样的原子性的效果。事务对于应用层用户来说就是一件事情,对于MySQL底层对应着多条SQL语句,这多条SQL语句是具有逻辑性的。事务就是所要做的工作、事情,主要用于处理操作量大、复杂度高的数据,比如一些需要多条SQL语句组合起来才能完成的一项任务。我们把这样的多条SQL语句的集合,这样的一项工作就被称为事务。
2022-10-07 14:30:00
1153
原创 MySQL:索引
索引是一个“物美价廉”的特性,用来提高数据库的性能。不需要改程序、调SQL、只需要正确的创建索引,查询速度就能提高成百上千倍,但查询速度的提升也带来了插入、更新、删除速度的下降。
2022-10-03 11:15:00
2233
4
原创 MySQL:数据类型和表的约束
如果插入的数据低于指定的位数,就在前面补0,如果插入的数据超过了指定的位数,就正常显示,这就是zerofill的作用。char 不管存储的数据如何,实际占用始终都是L个字符的大小,varchar 的实际占用和数据大小相关。对于数据库用户来说,外键是为了方便业务关联,对于MySQL来说,外键是为了产生对应的外键约束,保证数据的安全。这个唯一的特定标识就是主键,类似于序号学号这样的唯一标识,可以根据主键来唯一地筛选出一条记录。可以说,主键和唯一键并不冲突,他们不是用来对比的,只是负责数据在不同层面的唯一性。
2022-09-15 11:32:07
2013
60
原创 Linux网络:多路转接
select函数没有读写的功能,只负责IO当中等的环节,一旦条件就绪会通知上层进行读取和写入。read/write,send/recv等IO接口本身也具有等待的功能,不过只能等1个文件条件就绪,select可以同时等多个fd。NAME// fd_set操作函数 void FD_CLR(int fd , fd_set * set);// 清除 int FD_ISSET(int fd , fd_set * set);// 检测 void FD_SET(int fd , fd_set * set);
2022-09-09 16:04:44
1414
43
原创 MySQL:基本概念和基础操作
存储数据用文件就可以了,为什么还要弄个数据库?数据库存储介质:磁盘、内存。为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。...
2022-09-06 12:34:14
643
1
原创 Linux网络:网络层链路层
对于网络传输来说,TCP负责决策,IP负责执行。IP协议是以较大概率将数据跨网络传输到对端主机上,TCP在此基础上负责可靠性和效率。
2022-08-31 08:55:11
1450
29
原创 Linux网络:传输层TCP/UDP
端口号标识主机上的网络进程。一些知名的服务绑定的端口一般是不变的,如下图所示:虽然端口号和这些网络协议没有绑定关系,但这些端口号和服务的联系是早已被习惯和接受的,擅自更改可能导致服务无法访问。一般0-1023给应用层协议使用。
2022-08-22 13:07:04
2379
33
原创 Linux网络:应用层HTTP
对文本内容利用单向哈希算法,生成固定长度的、具有唯一性的、不可逆的字符序列,该字符序列就称为数字指纹/数字摘要。数字摘要不是严格的加密,因为无法反推出文本内容,所以只能进行数据对比。对传输来的文本重新生成哈希结果,对比两者哈希结果是否相同,就能看出文本是否被篡改。
2022-08-15 08:46:51
564
24
原创 Linux网络:套接字编程
数据实际是由进程产生和接收的,IP确定了主机,但还要进一步确定主机上的网络进程。。源端口号确定源主机上的网络进程,目的端口号确定目的主机上的网络进程。IP和端口就能标识互联网上的唯一一台机器上的唯一一个进程。可以把整个网络看作是一个大操作系统,所有的网络行为就可看作是这个系统内的进程间通信。进程具有独立性,进程间通信的前提是先让不同的进程看到同一份资源,而网络通信的临界资源就是网络。
2022-08-11 09:14:33
1158
5
原创 Linux网络:网络基础
人们在利用计算机工作时,通常都需要多人协作,所以免不了要进行数据交互。没有网络的话数据就需要人来拷贝,这样效率大大降低,所以慢慢的网络就出来了。上图就是计算机网络的雏形,一台机器用来共享数据,其他人通过网线连接到该机器。
2022-08-08 05:37:25
1282
19
原创 Linux系统:多线程
线程是在进程内部运行的执行分支,是进程的一部分,粒度更细更轻量化,调度成本更低。这是比较笼统抽象的描述。如何理解进程内部、执行流、更轻量化?将进程代码划分成多个函数模块,每个线程负责一个函数。每个线程拥有一个PCB,多个线程共享一个地址空间,共享进程的资源。CPU不必关心PCB对应着进程还是线程,只需按部就班的执行即可。概念解释线程在进程的内部线程在进程的地址空间内运行线程是进程的执行分支线程负责进程的部分代码线程是进程的一部分多个线程组成了进程,线程占用进程的部分资源线程更轻量化。
2022-08-05 07:04:01
1280
22
原创 Linux系统:进程间通信
进程具有独立性,通常进程之间不会出现联系。但有时又需要进程之间相互协同工作,每个进程分工明确、高内聚低耦合,能使得代码更高效且维护性高。进程是具有独立性的,进程之间不能互相访问资源,所以通信的成本很高。。。该资源具有暂存资源的能力,能够让双方读写。.........
2022-07-25 17:20:10
940
15
原创 Linux系统:基础IO
一般语言都会提供库,库可以看成一套头文件和一套库文件的集合。库用来给开发者提供一些基础的功能,可以提高开发效率。也可以保证代码安全。一般库分两种:静态库和动态库。Linux下静态库文件的后缀为.a,动态库文件的后缀为.so。
2022-07-21 09:56:25
795
29
原创 C++进阶:多态
文章目录多态1. 多态的概念1.1 虚函数虚函数的定义重写的构成条件重写条件的例外1.2 多态的构成条件多态的效果1.3 重载重写隐藏对比重载重写隐藏1.4 final & overridefinal 修饰类final 修饰虚函数override2. 抽象类2.1 纯虚函数和抽象类2.2 接口继承和实现继承实现继承接口继承3. 多态的原理3.1 虚函数表虚表指针虚表的底层原理3.2 多态的实现原理3.3 动态绑定与静态绑定4. 不同继承关系的虚函数表4.1 单继承的虚函数表4.2 多继承的虚函数表4
2022-05-30 08:02:21
567
33
原创 Linux系统:进程概念
系统启动之前是作为文件存储在磁盘中的。只有启动的操作系统才有意义。肤浅的来说,加载到内存中的程序就叫做进程。具体定义在了解进程之后可以给出。运行中的系统存在大量的进程,操作系统该如何管理这些进程呢?仍然是先描述再组织。进程在形成之初,操作系统就会为其创建进程控制块 PCB。进程控制块PCB用于描述进程,其中存储着进程的所有属性。Linux 系统中,PCB 就是一个名为的结构体。
2022-05-16 08:54:19
1450
36
原创 算法入门题:链表
算法入门 - 链表3.1 逆序打印链表从尾到头打印链表 (nowcoder.com)利用栈反向输出class Solution {public: //正向遍历链表,并依次将元素值放入数组中,再逆置数组即相当于逆置打印链表 vector<int> printListFromTailToHead(ListNode* head) { vector<int> retV; while(head != nullptr) {
2022-05-02 13:55:43
225
11
原创 算法入门:字符串
算法入门 - 字符串1. 替换空格替换空格 (nowcoder.com)随着空格被填充后,旧尾指针和新尾指针的差距进一步缩减,直至填充完毕,前后指针指向同一个位置随即遍历结束。这是该解法的精髓。class Solution {public: //前后指针的解法,分别指向新的尾和旧的尾。利用旧尾向前遍历, // 遇到其他元素则后移2位,遇到空格元素则用新尾指针倒序填入%20, //随着空格被填充后,旧尾指针和新尾指针的差距进一步缩减,直至填充完毕,前后指针指向同一个位置
2022-04-26 15:57:40
423
31
原创 算法入门:数组
算法入门 - 数组1. 二维数组中的查找二维数组中的查找 (nowcoder.com)查找的本质就是排除,一次排除的越多,查找的越快。右上角开始遍历class Solution {public: //查找的本质就是排除,一次排除的越多,查找的越快 //由于数组左向右递增,上向下递增,故从右上角开始判断: // 当当前元素比右上元素大,说明元素不会出现在当前行,排除当前行 // 当当前元素比右上元素小,说明元素不会出现在当前列,排除当前列 //排
2022-04-18 11:49:13
457
11
原创 C++进阶:继承
继承面向对象的三大特性:封装、继承、多态。继承在实际中用的也不是太多,但必须能熟练使用。1. 继承的概念继承机制是面向对象思想中复用代码的一种手段,它能够在原有类的特性的基础上进行扩展。由此产生新的类,称为派生类,原有类称作基类。继承体现了面向对象设计的层次结构,体现了由简单到复杂的认知过程,不同于面向过程只有函数复用,继承是类的设计层面上的复用。1.1 继承的定义对于具有一定联系的一类群体,将其抽象成一类对象后,这些对象必然会具有重复的属性。比如学校中有学生老师两种群体,他们都是属于人这个
2022-04-14 11:45:00
4174
30
原创 C++初阶:IO流
IO流1. C语言IOC语言中常用的输入输出函数有如下几种:前者是格式化标准输入输出,后者是格式化文件输入输出,最后是格式化字符串输入输出。函数名内容备注scanf从标准输入流(键盘)读取格式化的数据省略standardfscanf从所有输入流读取读取格式化数据f:filesscanf从字符串中读取格式化的数据s:stringprintf将格式化的数据输出到标准输出流(屏幕)上省略standardfprintf将格式化数据输出到所有输出流
2022-04-12 17:05:51
745
35
原创 C++初阶:模板进阶
泛型编程和模板STL 简介STL(standard template libaray)是 C++ 标准库的重要组成部分:标准模板库。STL 不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。原始版本Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。也成为 HP 版本,是所有STL实现版本的始祖。P. J. 版本由
2022-04-10 13:13:45
461
37
原创 C++初阶:stack&queue
Stack&Queue1. 栈和队列的介绍1.1 stack 的介绍栈是一种特殊的线性表,栈只允许在其固定的一端进行插入和删除元素的操作。进行数据插入删除操作的一端被称为栈顶,另一端被称为栈底。栈中的数据元素遵循后进先出的原则。压栈:栈的插入操作被称为压栈,也可以叫做进栈、入栈。出栈:栈的插入操作被称为出栈,或称弹栈。后进先出,先进后出,即 LIFOLIFOLIFO 原则(Last In First Out)。1.2 queue 的介绍队列同样是一种特殊的线性表,和栈相反,队列只允许
2022-04-04 13:45:00
1317
14
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人