[ATL/WTL]_[初级]_[Win32实现Cocoa的dispatch_async到主线程的异步消息处理]

场景1.写界面程序时, 大多是底层部分需要至少一个工作线程来处理逻辑, 避免使用主线程导致界面卡顿, 当底层线程处理数据完毕后, 需要转发到主线程绘制数据. 因为非绘图线程绘制数据会导致不可预料的问题, 一般情况下会导致程序莫名其妙崩溃,多线程同时调用绘制函数会导致资源冲突,而且冲突可能会在特定情况下才发生,不易察觉.2.工作线程发送数据到主线程,Win32消息处理一般有几种方式 PostMessa...
阅读(401) 评论(0)

[Object-C]_[C/C++]_[日期时间操作对比]

场景 macOS 处理时间函数有自己的 NSDate, C 的库函数 time.h相比它就有点弱了, 不过麻雀虽小, 五脏俱全. 麻烦的是在处理一些 UTC,GMT之类的转换时需要自己动手. 说明 Object-C的 NSDate结合了NSDateFormatter来设置日期属性, 比如格式化,本地,时区等等. 如果 C实现需要把本地转换为 UTC, 那么还需要对 time_t进行处理, 调用 lo...
阅读(420) 评论(0)

[Object-C]_[C/C++]_[集合操作对比]

场景 比如编辑联系人, 联系人需要加入某个分组, 这时候界面操作就需要复选框来选择加入某个分组, 但是有可能这个联系人之前已经加入了某个分组, 现在只是需要加入新的分组即可, 但是界面操作往往用户可能并不知道这个联系人已经加入过哪些分组, 所以他会把想加入的分组都勾选一边, 这样我们程序在提交时就需要过滤出未加入过的分组,也就是”相对补集”; 再比如, 修改用户资料时, 我们需要勾选多个爱好兴趣,...
阅读(289) 评论(0)

[Object-C]_[初级]_[object类的对象和属性@property]

场景 object-c 的 @property 是我们常用的声明, 对属性类型描述涉及到 readonly,readwrite,assign,copy,retain,atomic,nonatomic,strong,weak. 如果对属性类型有理解的话, 对属性设置会有更加准确. 常遇到的 retain,copy 到底有什么区别? 实例变量和 @property声明的 是否是同一个变量? 说明 obj...
阅读(303) 评论(0)

[C/C++标准库]_[初级]_[移除反转枚举reverse_iterator]

场景 在一些业务逻辑中, 我们需要删除某个链表中的元素A, 并重新计算这个元素A后边的所有元素相对与前一个元素的值. 条件1是这个元素A必须删除, 因为这个元素A已经无效,有他存在必然影响了对整个链表的个数统计; 条件2是这个元素A后的所有元素本来是根据元素A的值进行相对计算的, 如今元素A被删除, 那么元素A后的元素值必要要重新计算. 说明 std::vector 经常被用来存储元素, 无奈我们发...
阅读(90) 评论(0)

[并发并行]_[线程池]_[Programming With POSIX Threads的线程池实现分析1]

场景1.C++标准库没有提供线程池操作, 连Win32都没有集成线程池, 相比之下macOS完善多了, 至少有operations. 多线程在执行多任务时有很大优势, 比如同时管理多个设备, 多个socket连接等.2.第3方库也有很多, 最常见的是boost的线程, 可是boost编译的成本也很高, 打包也很大, 一般不考虑.说明1.Programming With POSIX Threads 的...
阅读(688) 评论(0)

[Windows]_[网络]_[浏览器无法访问网站DNS_PROBE_POSSIBLE]

场景1.IE,Firefox浏览器访问不了网站, 谷歌浏览器可以, 返回错误码 DNS_PROBE_POSSIBLE.2.ping www.qq.com可以 ping通, ping局域网也可以ping通, 就是不能上qq.rtx.3.DNS已经设置, 通过命令ipconfig /all可以看到设置的DNS, DNS也是对的, 同事也是这么设置的. 说明1.通过浏览器的错误码可知道, 应该就是 DNS...
阅读(2249) 评论(0)

[C/C++]_[macOS-Windows]_[原子操作2]

场景1.原子操作一般用在多线程执行的逻辑里, 比如统计业务个数 ++count, 或者下载文件个数,下载大小, 设置对象状态等. 如果不用原子操作, 那么可能在并发情况下, 原本的事务指令A会被事务指令2抢占而导致出现数据被覆盖.说明1.macOS下提供了 来处理 C 方式的原子操作. 如果是object-c方式的原子属性可以使用关键字 atomic.2.C...
阅读(524) 评论(0)

[MD5]_[Windows-macOS]_[计算文件的MD5]

场景1.MD5是比较简单的文件ID, 大部分情况在安全系数要求不高时可以用它来校验文件唯一性. 比如下载文件后进行 md5计算看文件是否完整.2.对字符串进行md5也是一样的.# 例子1.下边是使用系统自带的库或API来完成计算文件的md5, 第3方库 libgcrypt也可以做到, 就是编译比较麻烦.Windows #include std::string AssUtil:...
阅读(803) 评论(0)

[Object-c]_[初级]_[数组NSArray过滤NSPredicate的简单介绍]

场景1.object-c的数组 NSArray 或 C++的 std::vector都支持查询特定条件的对象. NSArray内置了NSPredicate方式的查询, 可以说更加方便.说明1.object-c的 NSPredicate 缺点就是如果对要处理的属性值进行复杂换算再比较是做不到, 比如对属性 name 进行md5计算再比较, 不过这个时候一般都是用for进行迭代. NSPredicate...
阅读(783) 评论(0)

[文件时间]_[Windows-macOS]_[修改文件的创建时间-修改时间]

场景1.修改文件时间一般用在下载远程文件到本地时, 修改其创建时间为远程文件的原时间, 这样对文件排序查找时也方便归类. 这类文件有很多, 视频, 音频, 图片.说明1.Windows 和 macOS都有这种API, Windows以简单的C Win32 api 方式; macOS则使用NSFileManager来修改.例子Windows #include //2014-09-...
阅读(502) 评论(0)

Desktop Applications (Visual C++)- 微软的如何学好桌面本地应用程序给出的指南

转载链接: https://docs.microsoft.com/zh-cn/cpp/windows/desktop-applications-visual-cppDesktop Applications (Visual C++)2016-11-4 3 分钟阅读时长 作者    A desktop application in C++ is a native application that ca...
阅读(292) 评论(0)

Visual Studio 版本中的 Visual C++ 工具和模板

Visual Studio 版本中的 Visual C++ 工具和模板Visual Studio 2015其他版本 若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。下表显示 Visual Studio 中可用的 Visual C++ 功能。 单元格中的 X 指示功能可用;空单元格指示功能不可用。 括号中的说明指示功能可...
阅读(283) 评论(0)

[C/C++11]_[初级]_[使用正则表达式库进行分组查询]

场景1.正则表达式在查询替换字符串数据时效率很高, 可以节省很多不必要的查询代码. 特别是对字符串分组的查询, 可以说如果没有正则表达式,查询分组里的字符串需要写很多额外的代码,还不一定准确.2.查询并替换XML标签是比较常见的需求, 比如过滤掉HTML标签里的标签, 提取字符串内容等.例子1.这里举例了C++正则库的分组查询功能, 一个用于提取特定字符串, 一个用于替换字符串. // test-r...
阅读(738) 评论(0)

[C/C++]_[初级]_[关于Gdiplus::Bitmap使用的注意事项]

场景1.我们一般使用 Gdiplus::Bitmap 来存储图像数据, 使用shared_ptr来对 Gdiplus::Bitmap 进行封装, 达到使用引用计数共享图像对象, 减少内存占用的目的.2.偶尔的时候如果 Gdiplus::Bitmap 使用不当释放时会出现崩溃错误, 什么原因呢? 说明1.原因是 Gdiplus::Bitmap* 不可以在 Gdiplus::GdiplusShutdow...
阅读(530) 评论(0)

[C/C++]_[初级]_[通过映像名称判断进程是否存在]

场景1.有时候通过查询进程映像名称来判断某个程序是否在执行, 比如判断 adb.exe 是否正在运行, 从而不需要再次开启 adb进程; 或者某个服务是否开启, 比如AppleMobileDeviceService.exe 来判断是否启动了Apple移动设备服务, 从而提醒用户.代码1.如果查询的多个进程有存在的,即返回TRUE. // test-process.cpp : 定义控制台应用程序的入口...
阅读(337) 评论(0)

[C/C++]_[初级]_[关于std::string的compare陷阱]

场景1.std::string 我们经常用来存储字符串数据, 当然它也可以作为byte的存储器,存储任意字节.2.通常情况下我们使用 std::string 的 compare 方法比较字符串, 但这个方法比较奥字符串是不可靠的.说明1.compare 方法和 strcmp并不相同, 它比较的是 std::string size()大小里的所有字节.在size() 长度范围里, 如果有’\0’字符,...
阅读(1826) 评论(4)

[C/C++]_[初级]_[获取Windows系统的位数32位或64位]

场景1.在Windows 64bit系统开发程序时, 某些情况需要判断Program Files路径, 但是64bit系统有两个Program Files或 Program Files(x86), 这时候就需要根据当前系统的位数来获取路径了.说明1.通过判断程序是32bit或64bit并没有什么用,因为64bit系统可以运行32bit和64bit程序. 2.64bit系统的kernel32.dll...
阅读(1505) 评论(0)

[并发并行]_[中级]_[实现Pthread线程并发读写锁rwlock]

场景1.所有STL的类实例都是并发读线程安全的,除了shared_ptr,iostream 可允许并发写.在设计对象结构时,往往会用到std::vector,std::map 作为容器存储. 并在多线程程序里并发读写. 当然如果牺牲性能只在一个特定线程里读/写当然也可以,只是性能会降低,而且会带来异步执行的烦恼.2.当然如果多线程可以读写,那么对这个共享对象是需要加锁的, 而多线程的坏处是你并不知道...
阅读(646) 评论(0)

[Zlib]_[初级]_[使用zlib库压缩目录]

场景 http://blog.csdn.net/infoworld 压缩目录为zip不用多说了, 很多场景都会用到, 比如打包文件, 打包目录下载等. 说明 zlib里的minizip并不可以直接使用来压缩文件夹, 但并不妨碍我们借鉴它的代码. 关键其实就在这个变量里savefilenameinzip, 它支持目录结构的名字. 所以只需要在调用 zipOpenNewFileInZip3_64 时,...
阅读(1528) 评论(2)
290条 共15页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:844426次
    • 积分:10710
    • 等级:
    • 排名:第1674名
    • 原创:271篇
    • 转载:17篇
    • 译文:2篇
    • 评论:141条
    任务
    1. 阅读 《加密与解密》并总结 (2017年).
    QQ: 632994155
    搜索
    博客专栏
    最新评论