质数AcWing 866. 试除法判定质数123456789101112131415161718192021222324252627282930#include <iostream>#include <algorithm>using namespace std;bool is_prime(int x){ if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) return false; return true;}int main(){ int n; cin >> n; while (n -- ) { int x; cin >> x; if (is_prime(x)) puts("Yes"); else puts ...
力扣912. 排序数组给你一个整数数组 nums,请你将该数组升序排列。
你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。
快速排序和归并排序1234567891011121314151617181920212223242526272829303132333435363738394041424344454647class Solution {public: vector<int> sortArray(vector<int>& nums) { // qsort(nums, 0, nums.size()- 1); // merge_sort(nums, 0, nums.size()- 1); return nums; } void qsort(vector<int>& q, int l, int r) { if (l >= r) return ; ...
单例模式是怎么实现的123456789101112131415161718class CServerSocket {private: static CServerSocket* m_instance; static CHelper m_helper; // 辅助类,确保构造和析构public: static CServerSocket* getInstance() { if (!m_instance) m_instance = new CServerSocket(); return m_instance; }private: CServerSocket() { ... } // 私有构造 ~CServerSocket() { ... } // 私有析构 class CHelper { // RAII 管理单例生命周期 public: CHelper() { CServerSocket::getInstance ...
记录的笔记比较杂乱,把自己感觉重要的内容记录在这里了
提交和推送提交—>存放
推送 就是把存的东西放到服务器上面
分支切换git一般有很多分支,我们clone到本地的时候一般都是master分支,那么如何切换到其他分支呢?主要命令如下:
1、查看远程分支
1$ git branch -a
可以看到,我们现在在什么分支下面。
2、查看本地分支
1$ git branch
3、切换分支
1$ git checkout -b v0.9rc1 origin/v0.9rc1
个人感觉,分支的作用就是保存代码版本,几个版本就创建几个分支,所有的分支都先提交存放,最后,在存放的代码版本中选择最终的代码进行推送,放到服务器上面。
远程网络编程使用全局变量,在main函数之前初始化,在main函数之后释放资源
单例
1单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
...
TCP/IP通信(即SOCKET通信)是通过网线将服务器Server端和客户机Client端进行连接,在遵循ISO/OSI模型的四层层级构架的基础上通过TCP/IP协议建立的通讯。控制器可以设置为服务器端或客户端。
关于TCP/IP协议可详看:TCP/IP协议详解 - 知乎 (zhihu.com)
总的来说,TCP/IP通讯有两个部分:
客户端和服务器
QTcpServer(监听套接字)和QTcpSocket(通讯套接字)
监听套接字,顾名思义,监听关于各种通讯的状态,一旦进行通讯,监听套接字会启动通讯套接字,进行通讯
客户端使用connectToHost函数主动连接服务器后,服务器会触发newConnectio这个槽函数,并进行取出QTcpServer(监听套接字),将相关内容取出并赋给QTcpSocket(通讯套接字)。客户端向服务器发送数据,触发readyRead(),进行处理,彼此传递时,原理都是这样的。
对双方来说都起作用的部分:
一旦建立连接,就会触发connected,服务器特殊一点,触发的是newCon ...
打包整体思路:
将编译后的exe可执行文件及其各种依赖dll、lib、图标、配置文件等先打包放到一个目录中
对其进行打包发布(两种方式):
利用VS的插件Microsoft Visual Studio Installer Projects安装程序打包插件进行打包
利用Enigma Virtual Box(单文件封装工具) 进行打包
一,将编译后的exe可执行文件及其各种依赖dll、lib、图标、配置文件等先打包放到一个目录中(1)dumpbin指令查看可执行文件的dll依赖包
在VS开发人员命令提示符(vs界面->工具->命令行->开发者命令提示)中执行dumpbin /dependents 程序路径 :dumpbin/dependents C:\Users\WFD\Desktop\GCtest\Debug\GCtest
(2)windeployqt.exe指令自动将qt依赖包复制过来
1️⃣先打开 Qt 的命令行(用的32位)
2️⃣使用“cd/d 路径” 命令进入到包含.exe 文件的文件夹。
3️⃣ Qt 命令行执行 ...
个人认为,事件机制是Qt最难以理解且最为精妙的一部分。事件主要分为两种:
在与用户交互时发生。比如按下鼠标(mousePressEvent),敲击键盘(keyPressEvent)等。
系统自动发生,比如计时器事件(timerEvent)等。
在发生事件时(比如说上面说的按下鼠标),就会产生一个QEvent对象(这里是QMouseEvent,为QEvent的子类),这个QEvent对象会传给当前组件的event函数。如果当前组件没有安装事件过滤器(这个后面会提到),则会被event函数发放到相应的xxxEvent函数中(这里是mousePressEvent函数)。
需要区分的是:事件与信号并不相同。
比如:鼠标单击按钮,鼠标事件(QMouseEvent),而按钮本身发射clicked()信号。一般而言我们只需要关注单击信号,不用考虑鼠标事件。但是当我们要对该按钮做额外操作,不想通过信号处理,此时事件就是一个很好的选择。关闭事件(QCloseEvent)是一个常用的事件。
一,事件Qt 中所有事件类都继承于 QEvent。在事件对象创建完毕后,Qt 将这个事件对象传递给 QObje ...
Qt中有两种方法来使用定时器,一种是定时器事件,另一种是使用信号和槽。
常使用信号和槽(代码看起来比较整洁)但是当使用多个定时器的时候最好用定时器事件来处理。
定时器方式一:定时器事件需要: #include
方式:
利用对void timerEvent(QTimerEvent* e)事件的重写。
启动定时器 int QObject::startTimer ( int interval ) ;
开启一个定时器,返回值为int类型。他的参数interval是毫秒级别。当开启成功后会返回这个定时器的ID, 并且每隔interval 时间后会进入timerEvent 函数。直到定时器被杀死(killTimer)
timerEvent的返回值是定时器的唯一标识。可以和e->timerId比较
void killTimer(int id); //停止 ID 为 id 的计时器,ID 由 startTimer()函数返回
实例:在两个label中自动计数,一个间隔为1秒,一个为2秒。
在头文件中先声明void timerEvent(QTimerEvent* ...