socket传送二进制流的一些总结

第一次实质性的接触socket通信方面的工作,所以遇到的问题还真不少,写篇博客记录一下,提升下记忆。 需求是通过私有协议进行二进制数据的传输,必须保证数据包不能被丢失,所以选择tcp的socket进行通信。 1. 遇到的第一个问题是客户端与服务端的socket通信没有保持持续的连接状态 这个是一个想 ... »

在AndroidStudio上使用AddressSanitizer

在AndroidStudio上使用AddressSanitizer AddressSanitizer是Google主导的一个开源内存问题检测工具。现在也开始支持Android平台,且受Google推荐来替代之前的Valgrind。目前AddressSanitizer能够发现如下问题: Out of ... »

C++11部分特性

初识C++的时候,觉得会个STL就差不多了,后来发现了C++11这个东西,以及C++14,C++17QAQ,看了一下,好高深不学,emmmm真香= = 这里就只讲一下对ACM写代码有很高帮助的部分特性,因为大部分OJ和比赛只支持11,所以14和17就不讲了,然后还有C++11增加的元组tuple和几 ... »

一道简单的字符题

题目:输入一个整数(含负数),输出3个数据: 1.位数 2.拆分输出,空格隔开,其中 “-” 号与第一个数字一起输出 3.输出反转数 例: 输入: -12345 输出: 5 -1 2 3 4 5 -54321 代码: 结果: 分析:这样的实现总觉得还可以更简化···有哪位大神可以给个提示吗··· ... »

C++20草案中的宇宙飞船运算符(<=>,spaceship operator)

C++20草案中的宇宙飞船运算符(,spaceship operator) 提议的新三路运算符``已经 "被合入C++20草案中" 。 宇宙飞船运算符(hh)形式如 。 比如a与b是整型,那么 返回 类型的纯右值(prvalue,不能取地址那种): + 如果 + 如果 ,`(ab)返回std::st ... »

gdb调试常用方法介绍

一、概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。没有统一的界面,所有的操作都是通过命令的方式进行提供.对于习惯了图形界面方式进行调试的猿猿来说可能不是很顺手,但是如果你在linux下面开发,却不得不适应,很多疑问和问题,都必须通过gdb去定位,用的久了,它除了没有像VC、B ... »

极简版线段树

作者作为一个蒟蒻,也是最近才自学了线段树,不对的地方欢迎大佬们评论,但是不要喷谢谢 好啦,我们就开始说说线段树吧 线段树是个支持区间操作和查询的东东,平时的话还是蛮实用的 下面以最基本的区间加以及查询区间和为例 线段树顾名思义就是棵树嘛,叶子节点是每个基本点,它们所对应的父亲就是它们的和,具体如下图 ... »

vs2017搭建linux c++开发环境

segmentfault对应博文页面:https://segmentfault.com/a/1190000016300215 最近一直在阅读ovs的源码,看到用户态代码的时候,需要对用户态的代码进行调试,一开始想直接使用linux中的GDB进行调试,但是ovs的工程太过于复杂,从网上找了些文章,发现 ... »

C++实现string类型的大数相加(带小数)

近日,做了一道阿里给的大数相加的编程题。题目大意如下: 输入两个string类型的数,如12.223 11,判断输入字符串是否合法。合法则输出true以及相加结果(true 23.223),非法则输出false """"。 期间几经修改,在判断合法方面排除了如.212以及122.这种错误(出现除数字 ... »

(二)建筑物多边形化简系列——多边形点数化简

1.目的实验发现,一个多边形由多个环,每个环的点数数量都比较大,这直接导致程序处理速度非常慢。为了简化图形,加快程序运行速度,为方便后期拟合建筑物,打算对建筑物原始数据进行化简。 2.做法化简的内容是去除部分建筑物多边形的点,采取保留一半点的做法,观察每次化简后图形与原始图形的差别。 3.实施对去除 ... »

linux 动态库 静态库 函数覆盖

本文讨论了linux动态库 静态库中函数的覆盖问题。 测试目的: 同名函数,分别打成动态库libdync_lib.so与静态库libstatic_lib.a,并把libstatic_lib.a打到另一个动态库libapi.so中, 在可执行程序中分别连接libdync_lib.so与libapi.s ... »

STL中bitset的用法

终于又来写博客了 == bitset存储的是二进数位,就和一个bool性数组差不多。用法上和数组的操作方式也差不多。 每位只占一个字节,大大优化了空间,可以通过数组形式访问。 bitset定义 可以用以下几种方式定义bitset,值得注意的是,bitset在定义的时候必须定义大小,这里8便是我们定义 ... »

UE4【C++】windows平台使用第三方库【一】

一,内容概述 如果想用第三方库,不得不提一下UE4的编译系统,UnrealBuildTool。 UE4项目都是以模块为单位,不同模块构成整个系统。 UnrealBuildTool会将不同模块编译到一起,每一个module都需要一个.build.cs文件,当然这个文件还做其他很多工作,比如跨平台等。 ... »

你写的字符(串)忽略大小写函数真的严谨吗?

提示 阅读本文需要同时对c++和java有一定了解。 背景 有时我们比较两个字符串时不考虑它们是大写还是小写;举个例子,在这种情况下我们认为“BanAna”和“baNaNA”是等价的。 其中一种思路是: 1. 将两个字符串都转换为小写(或者都转换为大写); 2.比较转换后的两个字符串是否相同。 这里 ... »

Chino 操作系统开发日志 (1) - 为 IoT 而生

引言 很多人都听说过 IoT (物联网)这个词,越来越多的人在装修时开始选择智能家居,很多人也购买智能音箱做智能家居控制,想必未来一定是 AI + 物联网的时代。 一种技术要发展并走向成熟必须要降低门槛,提高迭代速度。传统的嵌入式开发太碎片化,很多时候还在使用代码复制、粘贴、修改的开发方法。如果不提 ... »

我们真的走心技术了吗(1)

上次的项目已经交付成功,今天翻看自己的幕布笔记,发现自己曾经犯过好多小错误,很多人现在遇到问题就百度下,只要问题解决了就ok,之前的我有时候也会这样,但越来越发现这样是不行的,故决定把自己过去没走心的语法知识重新拾起,像一名初学者一样,认真的记录每一次错误,认真的记录每一次解决方案(大佬可跳过),加 ... »

基于Live555实现RtspServer及高清高码率视频传输优化

最近做了一些pc和嵌入式平台的RTSP服务器项目,大多数的要求是简单但是功能全面,并且性能还要强劲。综合考虑后,基本都是在基于live555的基础上进行开发,在进行Live555本身的优化以及程序内部视频数据传输的优化后,不仅实现了需求而且性能还超出预期,实现了8Mbps~10Mbps高码率的108... ... »

C++常用数据类型

基本的内置类型 C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了七种基本的 C++ 数据类型: 一些基本类型可以使用一个或多个类型修饰符进行修饰: signed unsigned short long 下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变 ... »

二叉查找树(BST)、平衡二叉树(AVL树)

二叉查找树(BST) 特殊的二叉树,又称为排序二叉树、二叉搜索树、二叉排序树。 二叉查找树实际上是数据域有序的二叉树,即对树上的每个结点,都满足其左子树上所有结点的数据域均小于或等于根结点的数据域,右子树上所有结点的数据域均大于根结点的数据域。如下图所示: 二叉查找树通常包含查找、插入、建树和删除操 ... »