- 博客(57)
- 收藏
- 关注
原创 C++ 常用自定义函数
1 字符串分割2 秒数转换成时间3 子字符串出现的位置1 字符串分割输入 : 一个指定分隔符的字符串输出 : 被分割符分割的字符串codingreturn;1 : 0;for (;index++)2 秒数转换成时间输入 : 距离1970年1月1日的毫秒数输出 : 年月日{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, // 平年每月天数。
2023-10-29 17:42:01
360
原创 linux系统下C/C++静态库和动态库的制作及使用
一般情况下,为了更好的支持开发,第三方库或者是语言库都必须提供静态库和动态库(eg:C C++等官方库),这是方便程序员根据需求功能进行可执行文件的生成;动态链接使用动态库,而静态链接使用静态库。一般来说,我们gcc编译默认是动态链接的而如果加上-static选项,那么生成的可执行文件将为静态生成;
2023-04-30 09:17:37
2437
原创 基于Qt5实现精美电子表
基于Qt5实现精美电子表好久没有写博文了,主要是最近工作有点忙。今天就来更新一下博文。本文要实现的一个精美的电子时钟。先看图 这个电子表的特别之处在于,每过一秒钟,时针,分针,秒针,刻度的颜色也会跟着变化,看到合适的颜色,点击一下左键即可颜色便会定下来。它不仅是一个电子表。它就像我们的人生一样。你可能不会知道下一刻会是什么样子,但只要坚持走下去,总会见到不一样的色彩,当你看到适合自己的,就要果断出手。说了这么半天,再精美不也是用代码实现吗。接下来就上关键代码。#include "analogc
2020-12-03 22:59:13
427
原创 Qt5网络编程3-基于TCP编程
Qt5网络编程3-基于TCP编程1 TCP(transmission control protocol)工作原理TCP是面向连接的,可靠的,基于字节流的传输协议,在数据传输之前,客户端和服务器必须要建立连接.在数据传输的过程中,有数据的校验.因此TCP传输数据时比较可靠的,但是传输效率没有UDP高.此外,它是一种全双工的工作方式.关于TCP的详细描述,可以参考博主博客:TCP数据的传输过程2 Qt中与TCP编程相关 的类QTcpSocket Class :提供一个TCP套接字的类,可以使用它建立
2020-10-01 20:03:30
273
原创 Qt网络编程2-基于UDP编程
Qt网络编程2-基于UDP编程1 UDP概述:用户数据报协议(User data Protocol)是一种简单轻量级,不可靠,面向数据,无连接的传输层协议.可用在可靠性不是十分重要的场合.如短消息 广播信息等适合应用的情况有一下几种:网络数据大多为短消息拥有大量的客户端对数据安全性无特殊要求网络负担非常重,但对响应速度要求高.2 UDP工作原理UDP客户端向UDP服务器发送一定长度的请求报文,报文大小限制和各系统的协议实现有关,但不能超过其下层规定的64kB,UDP服务器同样以报文的
2020-09-30 00:33:07
869
原创 Qt网络编程1-获取主机信息
Qt网络编程1-获取主机信息1 概述:在网络编程中,通常需要获取主机名,IP地址,MAC地址.其中相关的类有QHostInfo,QNetworkInterface, QNetworAddressEntry.2 相关的类和方法:2.1 QHostInfo简述:这个类提供了查找ip地址和主机名的相关方法几个常用的静态成员函数1)localHostName()//获取这台机器的主机名称QString QHostInfo::localHostName()2)fromName()//根据主机名
2020-09-29 18:20:47
522
原创 C++单例模式的实现
C++单例模式的实现1 单例模式1)概念:一个类只能创建唯一一个对象。并提供它的访问方法。2)实现思路禁止在类的外部创建对象:私有化构造函数在类的内部维护唯一的对象 :静态成员变量。提供单例对象的访问方法:通过一个静态成员函数。 3)创建方式饿汉式:单例对象无论用或不用,程序启动即创建。懒汉式:单例对象用时再创建,不用即销毁。4)总结优缺点饿汉式 : 代码实现简单,多线程安全,访问效率高,在程序装载的时候就创建了对象。浪费内存,以空间(内存)换时间懒汉式 : 节省内存,以时间
2020-09-26 00:21:22
187
原创 基于UDP编程
基于UDP编程1 UDP是数据报协议,无连接的,不可靠,追求传输效率的一种通信协议数据的发送和接收是同步的.在进行通信之前,不需要建立连接.其传输效率比TCP高.对其服务器而言,并没有三次握手的过程.因此和TCP相比,少了被动监听(listen)和(accept).只需要创建通信设备,绑定IP地址和端口号.然后进行数据的收发.1.服务器端的编程模型创建一个socket端点,返回该端点的文件描述符fd socket(2)2 )将fd和本地地址绑定 bind(2)while(1){3) 阻塞等待
2020-09-25 23:59:12
2086
原创 TCP并发服务器的编程实现
TCP并发服务器的编程实现1. 基于TCP的服务器编程模型创建通信端点(套接字),返回该端点的文件描述符 sfd socket(2)2 )将sfd和本地的ip地址和端口号绑定 bind(2);3 )将sfd设置为被动连接状态,监听客户端的到来,如果有客户段的到来,将其放入到未决连接队列中.listen(2)while{4 从未决连接中取出一个处理,返回一个新的连接描述符 如果未决连接为空,阻塞等待 cfd = accept(2)5 从连接描述符中读取客户段的请求数据到buf中 read(2)
2020-09-25 23:44:56
6492
原创 TCP数据的传输过程
TCP数据的传输过程TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。TCP三次握手(建立连接)TCP建立连接时要传输三个数据包,俗称三次握手。TCP数据报的结构:其中有几个字段比较重要,需要说明一下:1)32位的序列号(
2020-09-24 19:59:23
5043
原创 socket编程--相关函数
socket编程–相关函数1.socket函数头文件:#include <sys/types.h> #include <sys/socket.h>1)函数原型int socket(int domain, int type, int protocol);2)函数功能创建一个套接字,并返回一个文件描述符;3)函数参数domain协议家族AF_INET : IPv4协议AF_INET6: IPv6协议type:数据传输方式/套接字类型,常
2020-09-24 01:16:21
504
原创 socket编程--socket基础
socket编程–socket基础 1. socket基本概念 2. 套接字的类型1.socket的基本概念socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。UNIX/Linux 中的 socket 在 UNIX/Linux系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的
2020-09-23 23:00:16
153
原创 使用C++实现找出字符串中第一个出现一次的字符串
使用C++实现找出字符串中第一个出现一次的字符串使用STL中的映射容器实现,遍历字符串,找出每个字符串出现的次数#include <iostream>#include <map>using namespace std;int main(void){ map<char,int> themap; string str; while(getline(cin,str)){ //在themap中保存每个字符串出现的次数 for(int i = 0;i<
2020-09-20 01:11:36
771
原创 C++实现字符串加密算法
算法需求描述有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,其余几个丢弃。现在,修改过的那个单词属于字母表的下面,如下所示:A B C D E F G H I J K L M N O P Q R S T U V W X Y ZT R A I L B Z E S C D F G H J K M N O P Q U V W X Y上面其他用字母表中剩余的字母填充完整。在对信息进
2020-09-20 00:56:35
8853
4
原创 c++ STL中的五种序列式容器
c++ STL中的五种序列式容器序列式容器序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。序列容器大致包含以下几类容器:array<T,N>(数组容器):表示可以存储 N 个 T 类型的元素,是 C++ 本身提供的一种容器。此类容器一旦建立,其长度就是固定不变的,这意味着不能增加或删除元素,只能改变某个元素的值;vector(向量容器):用来
2020-09-18 16:58:12
658
2
原创 c++ STL容器基础
c++ STL容器基础STL序列式容器也叫线性容器.包括 array、vector、deque、list 和 forward_list 容器。1.STL容器的类型简单的理解容器,它就是一些模板类的集合,但和普通模板类不同的是,容器中封装的是组织数据的方法(也就是数据结构)。STL 提供有 3 类标准容器,分别是序列容器、排序容器和哈希容器,其中后两类容器有时也统称为关联容器.1.1 序列容器(线性容器)序列容器主要包括:vector 向量容器、list 列表容器以及 deque 双端队列容器。之所
2020-09-18 16:25:44
117
原创 Ubuntu系统下Qt5中QMYSQL driver not loaded问题
Ubuntu系统下Qt5中QMYSQL driver not loaded问题1 .问题描述 int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("192.168.8.129"); db.setDatabaseName("choose");
2020-09-15 00:02:35
762
原创 基于C++实现string类
基于C++实现string类在C++ string类是比较典型的一个类。在类的内部使用一个char类型的指针去维护一个内存。最主要的成员函数包括构造函数、析构函数、拷贝构造函数,拷贝赋值函数。下面就使用 C++实现String类#include <iostream>#include <cstring>using namespace std;class String{public: //构造函数 String(const char* str = NULL){ /
2020-09-03 00:17:24
222
原创 C语言数据结构--双向链表的实现
C语言数据结构–双向链表的实现双向链表对比单向链表增加了一个指向前一个节点的指针。双向链表和单向链表节点的对比:1、单向链表的节点//节点 typedef struct node{ int val; struct node* p_next; }node_t; //链表的结构体 typedef struct{ //头节点 node_t head; //尾节点 node_t tail; }link_t;2 、
2020-08-28 13:26:00
468
原创 数据结构-链表的实现(C语言)
数据结构-链表的实现(C语言)链表在实际开发中是一种非常常用的数据结构。涉及的操作有:插入,删除,查找,遍历等。下面就编写代码实现上述功能: 1 /* 2 * 链表实现对线性链式物理结构的管理 3 * 链表可以把管理存储区的代码和使用数据的代码分开 4 * 链表的主要功能包括插入,删除,查找,遍历等 5 */ 6 #include <stdlib.h> 7 #include <stdio.h> 8 //节点 9 typedef struc
2020-08-27 23:14:06
364
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人