C/C++
木棉花语
这个作者很懒,什么都没留下…
展开
-
linux判断进程单例的一种方式
bool initSigleInstanceLock(const std::string &processName) { // bool ret=false; static const char *lockFileName="/tmp/daemon_service.lck"; int fd=-1; do{ fd=open(lockFileName,O_RDWR|O_CREAT|__O_CL...原创 2021-10-19 10:40:39 · 321 阅读 · 0 评论 -
linux基于libiconv进行编码转换
string server_common::charset_convert(const void *buf,uint32_t buf_len,const string &from_encode,const string &to_endcode){ auto iconv_id=iconv_open(to_endcode.c_str(),from_encode.c_str()); if(iconv_id==reinterpret_cast<iconv_t>(-1).原创 2021-01-06 15:10:56 · 325 阅读 · 1 评论 -
C++观察者模式简单实现
//file iobserver.h#ifndef IOBSERVER_H#define IOBSERVER_H#include<map>#include<string>#include<functional>#include<mutex>namespace micagent {using namespace std;template <typename DATA>class iobserver{public:iobser.原创 2020-09-12 15:36:05 · 121 阅读 · 0 评论 -
UNIX DOMAIN SOCKET 使用示例 包含 STREAM及DGRAM 服务器/客户端收发示例
//file unix_socket_helper.h#ifndef UNIX_SOCKET_HELPER_H#define UNIX_SOCKET_HELPER_H#include <unistd.h>#include <sys/un.h>#include <sys/types.h>#include <sys/socket.h>#include<string>#define SOCKET int#define INVALID_.原创 2020-09-12 10:18:41 · 629 阅读 · 0 评论 -
去除linux文件bom头
1.查找bom头文件grep -r -I -l $'^\xEF\xBB\xBF' ./2.替换bom头文件find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \;转载 2020-08-05 10:12:56 · 665 阅读 · 0 评论 -
LIBJPEG交叉编译并用其将ARGB32转JPEG
#编译脚本 build.sh#!/bin/bashgcc_prefix=$1install_dir=$2cache_dir=$3host_name=" "if test -z ${gcc_prefix} ;then gcc_prefix=/usr/bin/else host_name=arm-linuxfiif test -z ${install_dir} ;then install_dir=$(pwd)/installfiif test -z ${cache_dir} .原创 2020-07-21 16:36:18 · 437 阅读 · 0 评论 -
QT HTTP上传二进制测试
#include <QCoreApplication>#include <QNetworkAccessManager>#include <QNetworkRequest>#include <QNetworkReply>#include <QJsonObject>#include <QJsonDocument>#include<cstdio>#include <QTimer>#include &l.原创 2020-07-16 14:09:13 · 649 阅读 · 0 评论 -
平衡树生成
#ifndef BANLANCE_TREE_H#define BANLANCE_TREE_H#include <vector>#include<mutex>#include<cmath>#include<cstring>template <typename T>class banlance_tree{ struct banlance_tree_node{ int index; T data;.原创 2020-06-20 11:46:30 · 282 阅读 · 0 评论 -
TCP异步连接状态判断原理
1.TCP socket未调用connect函数之前处于可读可写状态2.调用connect函数后socket由于协议栈发包,变为不可写状态,当协议栈发包结束,变成可写状态3.监听可写状态,判断socket上的错误状态,若无错误发生,则连接成功...原创 2020-06-18 19:04:19 · 585 阅读 · 0 评论 -
异步IO处理示例
https://github.com/xuyuanwang1993/events_handlerwindows编译环境:vs2019LINUX编译环境: GCC4.8+C++事件处理,支持线程池,延时队列,异步IO处理原创 2020-04-10 11:13:12 · 235 阅读 · 0 评论 -
泛型编程 二叉树与数组的相互转换,打印,获取二叉树深度
/* 二叉树节点定义 */ template<typename T=void> struct Binary_Tree { T* val; Binary_Tree* left; Binary_Tree* right; Binary_Tree(T _val) :left(nullptr),right(nullptr){ val = new T(_val);...原创 2020-03-10 20:14:47 · 164 阅读 · 0 评论 -
C++泛型编程练习三 选择排序,归并排序,冒泡排序,快速排序
/* 简单选择排序 */ template<typename T,typename Compare=Less<T>> static std::vector<T>& simple_select_sort(std::vector<T>& arg) { if (arg.empty())return arg; Com...原创 2020-03-07 15:33:48 · 214 阅读 · 0 评论 -
C++泛型编程练习二 希尔排序
#pragma once#include <vector>#include<string>#include<iostream>#include<random>#include<cmath>#include<functional>#include<map>#include<time.h>...原创 2020-03-06 17:49:10 · 139 阅读 · 0 评论 -
C++泛型编程练习 直接插入排序
/*.h*/#pragma once#include <vector>#include<string>#include<iostream>#include<random>#include<cmath>#include<functional>#include<map>class Tools{p...原创 2020-02-28 16:16:41 · 171 阅读 · 0 评论 -
linux 下使用gsoap 编译生成onvif源代码+动态库
1.安装openssl2.下载gsoap3.将Makefile 与其它source置于与gsoap同级的目录下,修改makefile内的gsoap版本信息,makefile如下# Makefile of gsoapARCH ?=gsoap_vesion := gsoap-2.8root_dir := $(shell pwd)build_dir := $(root_dir...原创 2020-01-16 16:16:20 · 1333 阅读 · 0 评论 -
C++模板使用示例
using namespace std;struct test{ int a; int b; int c; int d;};ostream &operator <<(ostream &os,const test & tmp){ os<<"a:"<<tmp.a<<" b:"<<tmp.b<&...原创 2020-01-07 19:01:55 · 115 阅读 · 0 评论 -
<leecode> 827.最大人工岛
在二维地图上, 0代表海洋, 1代表陆地,我们最多只能将一格 0 海洋变成 1变成陆地。进行填海之后,地图上最大的岛屿面积是多少?(上、下、左、右四个方向相连的 1 可形成岛屿)示例 1:输入: [[1, 0], [0, 1]]输出: 3解释: 将一格0变成1,最终连通两个小岛得到面积为 3 的岛屿。示例 2:输入: [[1, 1], [1, 0]]输出: 4解释: 将...原创 2019-12-27 14:58:28 · 177 阅读 · 0 评论 -
C/C++ struct存储对齐方式测试
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>//#pragma pack(8)#define IOFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)struct ...原创 2019-11-13 17:33:42 · 118 阅读 · 0 评论 -
shell排序个人学习笔记
#include<iostream> #define CHANGERATE /=2using namespace std;void shellSort(int a[], int n){ int counts=0; int gap, i, j, temp;//gap为排序容器控制,i为插入值位置标记,j为插入排序控制,temp用于临时储存插入排序初值 for(gap ...转载 2018-06-06 11:01:44 · 113 阅读 · 0 评论 -
递归求最大公约数
#include<iostream> using namespace std;int rec_gcf(int x, int y,int validity=0){ if ((0 >= x || 0 >= y) && 0 == validity)//此处判断初始输入的有效性 { cout << "error!" << e...原创 2018-06-06 11:55:08 · 554 阅读 · 0 评论 -
归并排序思想
#include<iostream> using namespace std;//将有序表a[first...mid]和a[mid + 1...last]归并成a[first...last] void merge(int a[], int first, int mid, int last){ int length = last - first + 1; int i =...转载 2018-06-06 15:12:30 · 1314 阅读 · 0 评论 -
回调函数
/****************//***callback.h***//****************/#ifndef CALLBACK_H#define CALLBACK_H#include <string.h>typedef void (*my_printf)(void *);void get_info(my_printf call_back,void * ...原创 2018-09-04 17:37:33 · 101 阅读 · 0 评论 -
linux upnp端口映射测试程序
编译环境QT4.8-ARM-V500用华为荣耀路由器测试成功,代码源自github,有修改/*"QUpnpPortMapper.h"*/#ifndef QUPNPPORTMAPPER_H#define QUPNPPORTMAPPER_H#include <QObject>#include <QHostAddress>#include <QUdpS...转载 2018-09-07 16:27:22 · 1991 阅读 · 0 评论 -
简单的网络传输加密解密代码
//source.h#pragma once//_string : 加密之后的偏移量//ip : 服务器ip//port : 服务器端口//random_base : 保存加密基数//return : 返回0代表成功,-1代表失败int offset_encrypt(char *_string, const char *ip, const int port, int &r...原创 2019-04-02 20:01:38 · 509 阅读 · 0 评论 -
fork函数测试
//common.h#ifndef COMMON_H#define COMMON_H#include <stdio.h>#define NVR_MONITOR_FILE 1#if NVR_MONITOR_FILE#define LOG_PATH ""#define LOG_FILE_NAME "nvr_monitor.log"#endif#define PRINT...原创 2019-04-19 14:49:17 · 155 阅读 · 0 评论 -
均匀分布的随机数生成器,转自KCP测试源码
#include<stdlib.h>#include <vector>class Random{public: Random(int size) { this->size = 0; seeds.resize(size); } int random() { int x, i; if (seeds.size() == 0) return ...转载 2019-05-05 14:32:35 · 495 阅读 · 0 评论 -
正则表达式匹配IP
待匹配的IP形式0.0.0.0 -255.255.255.254000.000.000.000255.000.000.xxx不接受255.1这种形式的输入由上可知,IP的前三部分匹配规则一致,最后的数字部分不能是255.分成两部分处理正常的IP区间:区间一 : 25[0-4]区间二 : 2[0-4]\d区间三 : 1\d{2}(匹配3位有效位)区...原创 2019-05-08 11:04:55 · 1241 阅读 · 0 评论 -
实例说明定义变量时为什么需要初始化
项目中自己实现了一个简单的http客户端,测试时发现上传至服务器的数据发生了错误,排查问题发现,在http组包的代码中忘记对字符串临时变量进行初始化操作。 写了如下测试代码://测试代码1:将未进行变量初始化操作的代码置于循环体中#include <stdio.h>#include <string.h>int main(){ int i=20...原创 2019-04-25 16:56:18 · 1485 阅读 · 0 评论 -
<leetcode>NO.4寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组nums1 和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中...转载 2019-05-13 19:53:29 · 105 阅读 · 0 评论 -
<leetcode>NO.5最长回文字符串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"char * longestPalindrome(char * s){ int max_level=0;//回文字符串长度 i...原创 2019-05-14 10:06:22 · 97 阅读 · 0 评论 -
<leetcode>NO.1两数之和问题
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]#in...原创 2019-05-09 14:55:27 · 179 阅读 · 0 评论 -
<leetcode>NO.6字符串Z字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的...原创 2019-05-14 13:36:31 · 243 阅读 · 0 评论 -
<leetcode>NO.7整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。...原创 2019-05-14 15:24:55 · 105 阅读 · 0 评论 -
<leetcode>NO.2逆序单链表存储整数相加
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2019-05-09 17:04:06 · 281 阅读 · 0 评论 -
<leetcode>NO.8字符串转换整数(atoi)
请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可...原创 2019-05-14 16:24:56 · 77 阅读 · 0 评论 -
<leetcode>NO.9判断一个整数是否是回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文...原创 2019-05-14 16:53:29 · 156 阅读 · 0 评论 -
<leetcode>NO.3最大无重复子串问题
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最...原创 2019-05-09 20:41:57 · 114 阅读 · 0 评论 -
<leetcode>NO.22括号生成
给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]class Solution {public: vector<string> generateParenthe...原创 2019-05-20 15:15:48 · 166 阅读 · 0 评论 -
<leetcode>NO.23合并K个有序链表
合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6class Solution {public: ListNode* mergeKLists(vect...原创 2019-05-20 16:25:25 · 124 阅读 · 0 评论 -
<leetcode>NO.24两两交换链表中的节点
合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6/** * Definition for singly-linked list. * struct Lis...原创 2019-05-20 17:45:01 · 158 阅读 · 0 评论