随笔分类 -  C/C++开发

摘要:最近部门做安卓移动开发的需要调C++的代码,困难重重,最后任务交给了我,查找相关资料,没有一个教程能把不同环境(windows,linux)下怎么调用说明白的,自己在实现的过程中踩了几个坑,在这里总结下,希望看到的以后能少走弯路。 <! more 使用工具: 1.JAVA使用的IDE为eclipse 阅读全文
posted @ 2019-10-17 17:21 蜗牛201 阅读(1006) 评论(0) 推荐(0)
摘要:JSON是一种轻量级的数据交互格式,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率,实际项目中经常用到,相比xml有很多优点,问问度娘,优点一箩筐。 第三方库 json解析选用jsoncpp作为第三方库,jsoncpp使用广泛,c++开发首选。 jsoncpp目前已经托管到了g 阅读全文
posted @ 2019-10-16 17:33 蜗牛201 阅读(1804) 评论(0) 推荐(0)
摘要:1.xml 指可扩展标记语言(EXtensible Markup Language) 2.xml 是一种标记语言,类似html 3.xml 的设计宗旨是传输数据,而非显示数据 4.xml 标签没有被预定义。需要自行定义标签 XML与HTML区别 1.xml 不是 html 的替代。 2.xml 和 阅读全文
posted @ 2019-10-16 12:00 蜗牛201 阅读(2612) 评论(0) 推荐(0)
摘要:C++中多态是面向对象设计思想的重要特性,同名具有不同功能函数,该函数调用过程执行不同的功能。多态的原理是通过一张虚函数表(Virtual Table)实现的。动多态会牺牲一些空间和效率来最终实现动态绑定。 ​ 静多态 函数重载为静多态,绑定发生在编译期间,根据函数的参数来确定调用哪个函数。 #in 阅读全文
posted @ 2019-06-30 14:21 蜗牛201 阅读(163) 评论(0) 推荐(0)
摘要:认识字节对齐之前,假定int(4Byte),char(1Byte),short(2Byte) 认识字节对齐 先看段代码: sizeof(Data1)和sizeof(Data2)分别表示Data1和Data2内存占用字节数,输出结果不一样是因为编译时对Data1和Data2做了不同的字节对齐。Data 阅读全文
posted @ 2019-05-27 17:10 蜗牛201 阅读(456) 评论(0) 推荐(0)
摘要:项目中需要用到smtp协议来发送邮件告警,后端的技术栈主要是Java和C++,Java项目里直接在网上找的现成的类完美实现,163邮箱,腾讯邮箱和阿里邮箱均测试通过,不幸的是C++的项目也需要使用smtp协议来发送邮件,惯例先度娘,CSDN逛了一圈,例程也不少但是每个下边留言都有这样和那样的问题,c 阅读全文
posted @ 2019-04-09 16:37 蜗牛201 阅读(846) 评论(2) 推荐(2)
摘要:C++11引入了thread类,大大降低了多线程使用的复杂度,原先使用多线程只能用系统的API,无法解决跨平台问题,一套代码平台移植,对应多线程代码也必须要修改。现在在C++11中只需使用语言层面的thread可以解决这个问题。 阅读全文
posted @ 2018-12-20 14:57 蜗牛201 阅读(7487) 评论(0) 推荐(1)
摘要:一:概述 项目中经常用遇到多线程操作共享数据问题,常用的处理方式是对共享数据进行加锁,如果多线程操作共享变量也同样采用这种方式。 为什么要对共享变量加锁或使用原子操作?如两个线程操作同一变量过程中,一个线程执行过程中可能被内核临时挂起,这就是线程切换,当内核再次切换到该线程时,之前的数据可能已被修改 阅读全文
posted @ 2018-12-14 15:16 蜗牛201 阅读(745) 评论(0) 推荐(0)
摘要:一:async std::async:用于创建异步任务,可以代替创建线程,函数原型:async(std::launch::async | std::launch::deferred, f, args...),第一个参数是创建策略std::launch::async:立即创建线程std::launch 阅读全文
posted @ 2018-12-12 17:00 蜗牛201 阅读(376) 评论(0) 推荐(0)
摘要:一:介绍 map是STL的关联式容器,以key-value的形式存储,以红黑树(平衡二叉查找树)作为底层数据结构,对数据有自动排序的功能。命名空间为std,所属头文件<map> 二:常用操作 容量:a.map中实际数据的数据:map.size()b.map中最大数据的数量:map.max_size( 阅读全文
posted @ 2018-10-30 15:11 蜗牛201 阅读(255) 评论(0) 推荐(0)
摘要:一:介绍 set是STL的关联式容器,以红黑树(Red-Black Tree)作为底层数据结构。自动去重,保证每个元素唯一,并对数据进行排序。 命名空间为std,所属头文件为<set> 二:常用操作 容量:a.set中实际数据的数据:set.size()b.set中最大数据的数量:set.max_s 阅读全文
posted @ 2018-10-30 15:02 蜗牛201 阅读(222) 评论(0) 推荐(0)
摘要:一:介绍 list底层为链表,非连续内存,不支持[]操作符,支持任意位置的插入操作。 命名空间为std,所属头文件为<list> 二:常用操作 容量:a.元素个数:list.size()b.判断是否为空:list.empty() 修改:a.尾部添加元素:list.push_buack()b.首部添加 阅读全文
posted @ 2018-10-26 13:26 蜗牛201 阅读(328) 评论(0) 推荐(0)
摘要:一:介绍 信号量也是系统核心对象,它允许多个线程同一时刻访问同一资源,但需限制同一时刻访问资源的最大线程数目。 信号量遵循规则:1.当前资源计数大于0,信号量有效。2.当前资源计数等于0,信号量无效。3.系统不允许当前资源数量为负。4.当前资源数量不能大于最大资源数量。 二:函数说明 创建信号量: 阅读全文
posted @ 2018-10-26 11:36 蜗牛201 阅读(315) 评论(0) 推荐(0)
摘要:一:介绍 vector是C++标准模板库,是一个容器,底层是数组,为连续内存。命名空间为std,所属头文件为<vector> 注意:不是<vector.h>vector存储数据时,会分配一个存储空间,如果继续存储,该分配的空间已满,就会分配一块更大的内存,把原来的数据复制过来,继续存储,这些性能也会 阅读全文
posted @ 2018-10-26 11:26 蜗牛201 阅读(2651) 评论(0) 推荐(0)
摘要:一:介绍 事件Event实际上是个内核对象,事件分两种状态:激发状态和未激发状态。分两种类型:手动处置事件和自动处置事件。手动处置事件被设置为激发状态后,会唤醒所有等待的线程,一直保持为激发状态,直到把它设置为未激发状态。自动处置事件被设置为激发状态后,会唤醒一个等待中的线程,然后会自动设置成未激发 阅读全文
posted @ 2018-10-24 12:05 蜗牛201 阅读(228) 评论(0) 推荐(0)
摘要:一:介绍 互斥对象是系统内核维护的一种数据结构,保证了对象对单个线程的访问权。 二:函数说明 创建互斥对象: HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, 安全属性结构指针,可为NULL,表示默认安全性 BOOL bInit 阅读全文
posted @ 2018-10-23 18:37 蜗牛201 阅读(210) 评论(0) 推荐(0)
摘要:临界区指的是一个访问共用资源(例:全局变量)的程序片段,该共用资源无法同时被多个线程访问的特性 阅读全文
posted @ 2018-10-23 16:32 蜗牛201 阅读(203) 评论(0) 推荐(0)
摘要:c/c++开发中经常要用到http/https协议,直接使用socket工作量很大,要是使用socket实现https,那更不可思议,开源的c/c++的http客户端框架,libcurl是首选,而且也相当成熟稳定,最近C++项目中用到https请求,就做下研究。 libcurl简介(来源官网) li 阅读全文
posted @ 2018-10-16 15:31 蜗牛201 阅读(5630) 评论(0) 推荐(1)