自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 求二进制中0/1的个数

今天看到一个题:求整数的二进制中0/1的个数 说实话 我一开始看求1的还好,那个求0的我是真没看懂 上代码 //找0的 int countofZero(int x) { int N = 0; while (x + 1) { N++; x |= (x + 1); } return N; } //找1的 int countOfOne(x) { int N = 0; while(x) { N++;

2020-08-12 09:29:50 485 2

原创 暴躁的一天从Ubuntu搜狗拼音开始

今天是暴躁的一天 本就是周六加班,搜狗输入法还给我出幺蛾子,王德发! 先说现象: 昨天算是突发奇想把搜狗装在了Ubuntu上,然后满心欢喜的回家了,今天早上来的时候开机启动QT后,他居然罢工了,然后启动终端,输入框中显示的是乱码,但是打出来的是正常字。 我这问题比较复杂 花了一小时左右才解决。(基本上网上搜出来的问题我都要改) 步骤1:点击系统设置->语言支持 将English(英式键盘)改为English(美式键盘) 并且将汉语() ...

2020-08-08 09:37:21 329

原创 无名小辈的有感而记

写在前面的话:本博客写给自己,内容可能会有些负能量~

2020-07-22 15:21:34 1349 9

原创 QML 通过定时器实现视频循环播放和待机跳转

这个月月初开始自学和使用QML。 要求是再主界面循环播放一个视频,通过触摸屏进入菜单界面。若待机5秒,则返回视频播放。 思路是再管理员按下start按钮后,按钮和倒计时文本隐藏,视频播放;倒计时结束后将视频和倒计时重置。(倒计时 == 视频时间) import QtQuick 2.12 import QtMultimedia 5.0 import QtQuick.Window 2.12 //设置视频播放 Item { id:item visible: true

2020-07-13 14:26:48 1051

转载 Qt的三大窗口

Qt的三大窗口dialog、widget、mainwindow 一、dialog、widget、mainwindow的区别 1)、dialog有exec函数,如果是dialog窗口,后边的窗口时不可选的; 2)、widget和dialog都有show函数,如果通过这个函数显示这两种类型的窗口,则两个窗口都是可选的; 3)、widget主要是在上面放置布局和控件; 4)、mainwindow可以显示菜单,工具栏,状态栏、托盘等功能。 二、dialog窗口 这个dialog窗口只是为了给人们提供更好的可视化操作

2020-07-06 15:38:21 1520

原创 从零开始的Qt(Qt创造器)

一、Qt创造器的使用 打开Qt创造器 在终端执行:qtcreator,右键锁定到启动器。 创建项目 文件->新建文件或工程->Qt控件项目->Qt Gui应用->填写项目名称(不要使用中文)->桌面->选择窗口容器->设置类名、头文件名、源文件名->选择是否创建界面文件(设置界面文件名)。 窗口类的构成: mainwindow.ui 文件会自动生成...

2019-09-03 20:23:18 397

原创 从零开始的Qt(信号和槽)

信号和槽 1、信号 当用户或系统触发一个动作,导致某个窗口发生变化,该控件就会发射一个信号,信号就可以调用一个函数,必须时还可以附加参数。 如:QPushButton 控件中就有 clicked(void) 信号。 2、槽 槽就一个普通的类成员函数,它可以是公有的、私有的、保护护的,可以被重载也可以被覆盖,其参数、返回值可以是任意类型,可以被直接调用。 与普通函数的区别就是它可以被信号触发,自动执...

2019-09-03 20:16:28 307 1

原创 从零开始的Qt(基本概念)

一、Qt简介 1、Qt是什么 图形用户程序框架,是对底层应用编程接口API面向对象的封装。 是一套基于C++语言的类库,专注但不局限于图形用户界面的开发,也可以进行系统调用、网络编程、数据库、2D/3D图形处理。 特点:跨平台,支持Linux,windows、MacOS、iOS、Android等操作系统。 2、为什么选择Qt 基于C++语言,简单、易用、面向对象(针对GTK) 优良的跨平台特性(针...

2019-09-03 20:09:50 756

原创 从零开始的UML

一、UML 1、什么是UML 项目开发的说明书(设计图) 2、UML是做什么的 帮助建立软件开发过程和各种模型 主要目的是为了让开发者之间进行有效的交流 开发者与用户之间的交流 开发者与设计者之间的交流 开发者与开发者之间的交流 开发者与管理者之间的交流 适合大型项目和大型团队的开发 3、UML的应用领域 UML的目标是以面向对象的方式来描述任何类型的系统,常用于建立软件的模型。 4、我对UML的...

2019-09-02 19:21:09 310 2

原创 从零开始的C++(虚析构与IO流)

一、虚函数表 什么是虚函表,在C++的类中,一旦成员函数中有虚函数,这个类中就会多一个虚函数表指针,这个指针指向一个虚函数表,表里面记录了这个类中所有的虚函数,当这个类被继承,他的子类也会有一个虚函数表,如果子类的成员函数中有函数签名与父类中的虚函数一样就会用子类中的函数替换它在虚函数表中的位置,这样就达到了覆盖的效果 当通过类指针或引用调用函数时,会根据对象中实际的虚函数表记录来调用函数,这样...

2019-08-21 20:50:15 188

原创 10分钟理解虚继承与覆盖!从零开始的C++(继承与覆盖)

一、多重继承、钻石继承、虚继承 多重载继承 在C++中一个子类可以有多个父类,在继承表中按照顺序继承多个父类中的属性和行为,并按照顺序表中的调用父类的构造函数。 按照从低到高的地址顺序排列父类,子类中会标记每个父类存储位置。 当子类指针转换成父类的隐式指针时候,编译器会自动计算父类中的内存所在子类的中的位置,地址会自动进行偏移计算。 名字冲突 如果父类中有同名的成员,可以正常继承,但如果直...

2019-08-20 20:14:27 531

原创 从零开始的C++(类的继承)

一、类的继承 1、共性与个性 表达不同类型事物之间共有的属性和行为 个性用于刻画每种事物特有的属性和行为 2、共性表示为父类(基类),个性表示为子类(派生类) 子类继承父类 基类派生出子类 二、继承的基本语法 1、继承表 一个子类可以同时继承0~多个父类,每个父类的继承方式可以相同也可以不同 class 子类:继承方式1 父类1, 继承方式2,父类2… { } 2、继承方式 public 公有...

2019-08-19 20:10:55 241

原创 从零开始的C++(操作符函数重载)

一、操作符函数重载 什么是操作符函数:在C++中针对类类型的对象的运算符,由于它们肯定不支持真正的运算操作,因此编译器会将它们翻译成函数,这种就叫作操作符函数(运算符函数)。 编译器把运算翻译成运算符函数,可以针对自定义的类类型设计它独有的运算功能。 其实各种运算已经具备一些功能,再次实现它的就是叫作运算符重载。 双目运算符: a+b 成员函数 a.operator+(b); 全局函数 oper...

2019-08-17 17:15:32 234

原创 从零开始的C++(单例模式下的饿汉模式和懒汉模式)

一、单例模式 定义:只能创建出一个类对象(只有一个实际的实例)的叫单例模式 单例模式的应用: Window系统的任务管理器 Linux/Unix系统的日志系统 网站的访问计数器 服务端程序的连接池、线程池、数据池。 获取单一对象的方法: 定义全局(C语言),但不受控制,防君子不能防小人 专门写一个类,让类的构造函数设置私有,借助静态成员函数提供一个接口,以此来获取唯一的实例 C+...

2019-08-16 19:19:13 342

原创 从零开始的C++(静态成员)

静态成员 类成员一旦被 static 修饰就会变成静态成员,他不会存储在每一个对象当中,而是单独一份存储在bss或data内存段中,所有的类对象共享(静态成员属于类,而不属于某个对象) 静态成员需要在类内声明,但要在类外定义和初始化,与成员函数一样需要加"类名::"限定符表示它属于那个类,但不需要再加额外的 static。 成员函数前也可以被 static 修饰,这种函数叫静态成员函数...

2019-08-16 19:09:04 194

原创 从零开始的C++(拷贝构造/赋值构造)

一、拷贝构造 拷贝构造又称为复制构造,是一种特殊的构造函数,它是使用一个现有的对象来构造一个新的对象,只有一个引用型的参数(对象本身) 类名(类& ) { } 拷贝构造的参数应该加 const 保护,但编译器并没有强制限制 编译器会自己生成一个拷贝构造函数,他负责旧对象中的所有数据拷贝给新创建对象 深拷贝和浅拷贝的区别 如果类成员中有指针,浅拷贝只拷贝指针变量的值,而深拷贝是拷贝...

2019-08-16 17:33:14 280

原创 从零开始的C++(析构函数)

析构函数 1、特殊的成员函数 函数名必须是 ~类名(void) { } //没有参数、没有返回值、不能重载 2、谁来调用 析构函数会在销毁对象时自动调用,在对象整个生命周期来最多被调用一次 而构造函数一定被调用一次 3、析构函数负责什么 析构函数负责释放在构造函数期间所获取的所有资源,它的执行过程: 先执行析构函数本身代码 调用成员类的析构函数 调用父类的析构函数 ...

2019-08-16 17:29:39 229

原创 从零开始的C++(面向过程/对象编程)

面向过程编程: 关注的是问题的解决的过程步骤(事情是如何解决的),算法 面向对象编程: 关注的是解决问题的人(类),具备什么样的数据(成员变量),具备什么样的技能(成员函数)才能解决问题 抽象:找出一个能解决问题的"对象"(观察研究对象),找出解决问题所必须的数据(属性),功能(成员函数) 封装:把抽象的结构,归结为一个类(数据类型),然后实例化出类对象,设置对象的属性,调用对象的功能达到解决问...

2019-08-16 17:24:20 403

原创 从零开始的C++(this 指针与 常函数)

this 指针 类的成员变量单独存储在每个类对象中,成员函数存储在代码段中,所有类对象共享一份成员函数 成员函数是如何区别调用它是哪个类对象? 借助了this指针,类的每个成员函数都有一个隐藏的参数,就是this指针。它指向类对象 类的构造函数中也同样有this指针,指向的就是正在构造的这个对象 在类中(成员、构造、析构)对成员变量、成员函数访问都是借助了 this 指针 this...

2019-08-16 16:59:37 217

原创 从零开始的C++(内存管理)

C++的内存管理 1、new/delete new/delete是C++具备申请/释放堆内存功能的运算符,相当于C语言中的malloc和free。 new + 类型 会自动计算类型所需要的字节数,然后从堆中分配对应字节数的内存,并返回内存的首地址(具备类型) delete + 指针 会自动释放堆内存 注意:new/delete 与 malloc/free 不能混用,因为new和delete会自...

2019-08-16 16:46:49 185

原创 从零开始的线程(功能函数)

一、同步、竞争、互斥 当多个线程同时访问其共享的资源时,需要相互协调,以防止出现数据不一致、不完整的问题,能达到这种状态线程同步。 而有些资源在同一时刻只有一个线程访问,对于这种资源的访问需要竞争。 当资源获取到后,能够防止资源被其它线程再次获取的技术叫互斥。 二、互斥量(锁) pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; int pthre...

2019-08-14 19:54:00 162

原创 从零开始的线程(基本概念)

一、线程基本概念 1、线程就是进程中的执行路线,即进程内部的控制序列,或者说是进程的子任务(进程就是正在运行的程序,它一个资源单位)。 2、线程就是轻量级的,没有自己独立的内存资源,使用的是进程的代码段、数据段、bss段、堆(注意没有栈)、环境变量表、命令行参数、文件描述符、信号处理函数、工作目录、用户ID、组ID等资源。 3、线程拥有自己独立的栈,也就是有自己独立的局部变量。 4、一个进程中可以...

2019-08-14 19:42:46 226

原创 从零开始的C++

一、C++介绍 本贾尼 贝尔实验室 在分析UNIX系统分布内核流量的时候,希望有一种有效的更加模块化的工具 1979年10月完成了预处理器Cpre,为C增加了类机制,也就是面向对象。 1983年完成了C++的第一个版本,C with classes也就是C++ C++与C的不同点: 1、C++完全兼容C的所有语法 2、支持面向对象的编程思想 3、支持运算符,函数重载 4、支持泛型编程,模版 5、支...

2019-08-14 19:36:13 375

原创 从零开始的进程管理(函数)

进程标识符 操作系统会为每个进程分配一个唯一的标识符,采用无符号整数表示,即进程ID。 进程ID在任何时候都是唯一的,但是可以重用,当一进程结束,新创建的进程才可以使用它的进程ID(延时重用)。 pid_t getpid(void); 功能:获取进程ID pid_t getppid(void); 功能:获取父进程ID uid_t getuid(void); 功能:获取当前进程的用户ID gid_t...

2019-08-13 20:38:31 241

原创 从零开始的进程管理(基本概念)

进程管理的基本概念 1、进程与程序 程序:存储在磁盘上的文件,包含可执行指令和数据的静态实体 进程: 运行中的程序(一个程序可以执行多次,加载出多个进程) 进程就是处于活动状态的计算机程序 2、进程的分类: 交互进程(有输入,有输出,用户可以根据自己的情况输入数据,得到想要结果)(一般进程) 批处理程序(由脚本加载执行的程序)(Linux下的shell,windows下的bat) 守护进程(...

2019-08-08 20:49:09 245

原创 从零开始的文件操作(标准C)

文件操作 FILE *fopen(const char *path, const char *mode); 功能:打开文件 path:文件的路径 mode:文件打开的方式,以字符串形式提供 “r” 以只读方式打开文件,如果文件不存在则打开失败,返回值为空。 “r+” 在"r"的基础上增加写权限。 “w” 以只写方式打开文件,如果文件不存在则创建,如果文件存在则把内容清空。 “w+” 在"w"的基础...

2019-08-06 20:25:21 193

原创 从零开始的预处理指令

预处理指令 程序员所编写的代码不是标准的C代码,需要一段程序把它翻译成标准的C代码才能进行编译,负责翻译的程序叫预处理器,翻译的过程叫预处理,被翻译的代码叫预处理指令(以#开头)。 查找预处理的结果: gcc -E code.c 会把预处理的结果显示在屏幕上 gcc -E code.c -o code.i 把预处理的结果保存到文件中。 常见预处理指令: #include 把头文件导入到源文件中 #...

2019-08-06 20:21:52 265

原创 从零开始的枚举

枚举 把一种类型可以等于的值全部列举出来,除此以再赋其它值就是非法的。 注意:这只一种美好的愿望,而实际上为了提高运行速度,编译器并没有做检查,因此枚举变量是可以用整数来赋值的(我猜测枚举就是使用unsigned int模拟的)。 enum Role {STUDENT=3,TEACHER=5,ADMIN=7}; enum Role role = STUDENT; 为什么使用枚举:可以把意义的整数使...

2019-08-06 20:19:37 1688 2

原创 从零开始的联合

联合 关键字:union,语法与struct样,区别是所有成员共用一块存储空间。 当给其中一个成员赋值时,其它成员的值也会发生变化。 使用union判断系统是大端还是小端。 int num = 0x01020304; 0xe1e2e3e4 <=> &num 低位地址存储低位数据-小端。 0xe1e2e3e4 = 0x04 0xe1e2e3e5 = 0x03 0xe1e2e3...

2019-08-06 20:18:16 147

原创 从零开始的2048(标准C语言)(简单版)

在翻以前的代码时发现了一个2048的小练习 在这通过这篇博客分享给大家 2048功能 这个游戏的玩法就是左右上下移动,遇到两个相同的数字将其合并生成两数字之和的新数字,数字满盘了游戏就结束。 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <time.h> #i...

2019-08-05 20:34:33 392

原创 震惊!原来TCP那么容易!从零开始的TCP协议的C/S模型

最近学习了计算机网络通信,这次和大家分享一下 编程模型 Server 创建socket套接字 准备地址(sockaddr_in,本机地址) 绑定(bind) 监听(listen) 等待连接(accept、fork) 接收请求(read/recv) 响应请求(write/send) 关闭(close) Client 创建s...

2019-08-05 20:20:58 468 1

原创 从零开始的计算机网络

一、计算机网络 1、什么是计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 2、计算机网络的功能 数据通信 资源共享 提高系统的可靠性 分布式网络处理和负载均衡 3、计算机网络的组成 通信子网:网卡、线缆、集线器、中继器、交换机、路由器。 资源子网:网...

2019-08-05 19:59:32 842

原创 从零开始的进程间通信

一、基本概念 什么叫进程间通信(IPC,Interprocess communication):是指两人个或多个进程之间交换数据的过程叫进程间通信。 进程之间为什么需要通信? 当需要多个进程协同工作高效率完成任务时,因为每个进程都个独立的个体(资源单位),进程之间就需要进行通信。 进程间通信方式: 1、简单进程间通信:命令行参数,环境变量表、信号、文件 2、传统进程间通信:管道 3、XSI进程间通...

2019-08-03 17:34:16 395 1

原创 从零开始的电话簿(标准C语言)

主要功能 添加联系人,要求不超过100人,超过100则显示添加失败。 删除联系人,按姓名删除(要保证不能有重名) 修改联系人信息,先根据姓名查找到联系人 查找联系人,根据电话号码查找联系人 显示所有联系人 程序运行 1、菜单界面 实现程序后进入的电话簿菜单界面,输入指令1、2、3、4、5、q,分别实现电话簿添加、删除、修改、查找、显示、退出功能。 2、添加联系人 输入指令1后添加联系人,添...

2019-07-27 15:52:31 936

原创 从零开始的学生信息管理系统(标准C)(超全)

从零开始的学生管理系统(标准C)(超级管理员)(超全) 主要功能 学生能够登陆系统查询语文、数学、英语三科成绩,及三科的平均分、总分、排名 教师能够管理学生、录入学生考试成绩。 管理员能够管理教师,超级管理员有且只有一个,只为管理普通管理员。 除超级管理员外,所有用户连续登陆三次帐号被锁定,需要上级用户才能解锁。 除超级管理员外,所有用户id要求有序且唯一。 除超级管理员外,所有用户登陆必须修改密码。 学生功能 学生信息包括:学...

2019-07-27 11:48:36 423 1

原创 从零开始的操作系统

操作系统 Unix/Linux环境C语言,以学习操作系统的接口的方法来学习,理解操作系统的运行机制以及一些网络协议。 C/C++ 语言和数据结构算法 与平台无关,重点是算法逻辑 Unix/linux/Android/ios平台相关,系统接口 嵌入式/驱动/移植 硬件相关,硬件接口 环境介绍 内存管理 文件操作 文件管理 信号处理 进程管理 进程通信 网络通信 线程同步 线程管理 2、 Unix操...

2019-07-24 13:02:01 347

原创 从零开始的二叉树

二叉树 1、子结点的数量最多为2的树叫做二叉树 2.、相关术语: 前序遍历: 根结点,左结点,右结点 中序遍历: 左结点,根结点,右结点 后序遍历: 左结点,右结点,根结点 层序遍历: 从上到下,从左到右 3、二叉树的构成 最上面的结点为根结点(root),第二层的结点为根结点的子节点,也是第三层的父结点,第三层为第二层的子结点,其余的叫做边。结点和链表中的结点...

2019-07-24 12:57:28 470

原创 从零开始的链表

新人小白,初学代码。本博客简单的说一下自己学链表的心得,如有错误,欢迎指出。 链表的定义 链表是一种常见的基础数据结构,可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节点。链表都有一个头指针,一般以head来表示,存放的是一个地址。链表中的节点分为两类,头结点和一般节点,头结点是没有数据域的。链表中每个节点都分为两...

2019-07-13 15:02:43 337

空空如也

空空如也

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

TA关注的人

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