自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 xcode编译library要同时支持armv7和arm64的设置

project>Info>iOS Deployment Target最大只能为10.3,才能支持32bit appArchitectures中要加上armv7另外,注意xcode中debug默认启用Build Active architecture onlyrelease版默认禁用Build Active architecture only可以在debug时启用但更好的办法是...

2019-04-30 13:56:26 4977

原创 vs,xcode源代码建议不要使用中文注释,否则可能遇到奇怪的现象

今天又被vs和xcode坑了一下中文注释引起的vs下用utf8 with bom保存时,运行正常但xcode不支持utf8 with bom,所以改用utf8 without bom保存然后就发现vs下utf8 with bom的版本运行正常vs和xcode utf8 without bom的版本运行不正常在vs中输出list看到带bom的.cod文件:; 201 :;...

2019-04-19 19:25:24 567

原创 利用cmake来编译sim800c,sim868 app

sim原厂提供的编译方法是直接用makefile它有个缺点是即使只改动一个文件,每次都要重新编译所有源文件目前项目功能越做越多,源文件也比较多,每次编译需要花较长时间,有点浪费采用cmake编译的好处是只编译修改过的文件,节省时间。经测试效果良好,在Visual Studio中编译时很快了。效果如下:1>------ Build started: Project: s...

2019-04-01 11:45:28 368

原创 解决sim800C c++ 二次开发 内存分配的坑

sim sdk提供了专门的内存管理api,主要是eat_mem_alloc和eat_mem_free在开发时用c++标准new,delete也是可以分配和释放内存的,所以没采用eat_mem_alloc和eat_mem_free近来功能越加越多,发现app很不稳定,没有规律,迹象表明可能是资源不够引起的最终发现是内存不够引起的sim板子上面给c++标准new,delete预留...

2019-03-20 18:54:04 726

原创 CoreLooper正式开源,代码已上传到https://github.com/xwpcom/CoreLooper

https://github.com/xwpcom/CoreLooper欢迎扫码加入CoreLooper开发交流QQ群 484544131

2018-12-31 12:00:19 812

原创 c51 sturct 成员函数指针都不支持?

.遇到c51一个大坑,连sturct 成员函数指针都不支持,相关文档如下:http://www.keil.com/support/docs/2066.htmhttp://www.keil.com/forum/17469/Basically, the 8051 is not "just another processor" that you can program as you would a...

2018-12-22 16:17:03 530

原创 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux解决办法

android studio:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android解决办法:classpath 'com.android.tools.build:gradle:3.0.1'改为classpath 'com.android.tools.buil...

2018-11-28 14:51:04 174

原创 windows下android studio对apk进行系统签名

前提:要有android厂家提供的platform.x509.pem和platform.pk8工具:openssl和keytool,请确保在path中openssl pkcs8 -inform DER -nocrypt -in "platform.pk8" -out "key.tmp"openssl pkcs12 -export -in "platform.x509.pem" -ink...

2018-11-21 15:34:55 1304

原创 markdown文档神器

用chrome查看.mdhttps://github.com/simov/markdown-viewer手工安装办法(不需要翻墙):Clone this repository Navigate to chrome://extensions Make sure that the Developer mode checkbox is checked at the top Disabl...

2018-10-29 10:07:50 357

原创 百度brpc初步分析

最近在QQ群听说百度的brpc非常好,所以下载研究一下。首先,它的文档写的非常用心,要点个赞。里面有个brpc_intro.pptx用搞笑且浅显易懂的方式来做介绍,非常合我心意。闲话少说,下面转入正题。brpc代码量有点大,没时间细看,粗略看了一下代码,感觉有些地方有改进空间。下面描述一下大量代码在int main()中调用了server.RunUntilAskedTo...

2018-10-14 11:36:04 1900 1

原创 windows vc++神器 vcpkg

能在vs中非常方便的使用开源项目详见baidu  

2018-10-09 09:38:21 934

原创 关于sendMessage的思考

Windows:LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );Android:boolean sendMessage (Message msg)Windows中SendMessage是发消息给窗口,并且要等待窗口响应后才返回android Handler.sendMessage则简单的多...

2018-09-21 18:24:04 447

转载 corelooper有望解决这一难题:C++的软肋-缺少统一的框架

http://blog.chinaunix.net/uid-1732420-id-2803996.html感觉说的很有道理,原文如下:C++的软肋-缺少统一的框架C++语言诞生二十年有余,曾经辉煌,在Java大出风头时被频频指责,再到如今不死不活。语言是表达思想的工具,作为一门程序设计语言应该为开发人员提供有力的工具来解放开发人员。C++语言支持结构化编程、面向对象编程、泛型编程等,貌...

2018-09-21 15:24:56 509

原创 远程调试cpu过高问题

最近发现PlatformServer.exe的cpu占用几乎一直保持在100%.exe和相关.dll加上debug info,然后用vs remote debugger远程调试用Process Explorer可看到哪个线程占用的cpu比较高最终发现是mbedtls相关类在一个循环中do{        auto ret=xxxx;        if (ret == ...

2018-09-08 11:20:45 1373 1

原创 发现c++ namespace非常好用

用c++快20年了,近年来才开始使用namespace越来越发现namespace非常好用,体现了层次分类的思想 

2018-08-31 18:18:04 153 1

原创 研究java的依赖注入DI和控制反转IoC

java中的概念比较多,经常看到java文章谈依赖注入和控制反转,一直没时间深究,今天花几分钟看了一下,总结一下,就是抽象和反射。c++原生不支持反射,但可以有办法解决,比如微软件的MIDL定义ocx接口就可实现差不多的效果。至于DI和IoC的抽象,是一种很常见的设计模式,在c++中用virtual接口类就能实现并且很常用,只是没有专门提出这个概念。  ...

2018-08-30 18:16:50 140

原创 关于mbed TLS的想法

最近想弄https,有两个选择,用openssl或者mbed TLS,前者过于庞大,后者简单很多,功能也很全。但发现不好整合到corelooper问题在于mbed TLS做的太多,包括建立socket,协商沟通,收发数据等最精简的情况下面,我们需要的是mbed TLS只提供两个核心接口,input和outputclass MbedTls;class MbedTlsCB{public...

2018-08-11 10:00:28 3625

原创 HJ212 2017中国国家环境保护标准,服务器&客户端初步完成

感觉HJ212协议制订的有缺陷,比如请求编码QN精确到毫秒的时间戳:QN=YYYYMMDDhhmmsszzz,用来唯一标识一次命令交互 问题在于如果一毫秒内提交多个命令怎么办感觉按RTSP那样引入CSeq递增,更加简单可靠   ...

2018-08-06 18:05:34 7899 4

原创 被Android Studio小坑一次

安装这个plugin之后启动as时报错解决办法:清除C:\Users\bear\.AndroidStudio3.1\config\plugins即可 

2018-08-01 15:03:50 198

原创 一键从native .java生成jni header .h文件

创建ExternalTool,便于给java生成.jni头文件AudioStudio>File>Settings>Tools>External Tools>Name:.java to .hProgram:$JDKPath$\bin\javah.exeParameters:-classpath $OutputPath$ -o app/src/main/j...

2018-07-28 12:32:22 615

原创 CoreLooper框架改动:为支持跨Looper析构Handler而做的几处改动

.对于调用了handler.Create()后的handler,CoreLooper基本可以保证Handler在原生looper在析构,但不是100%保证 在验证稳定性时可精心构造出此场景,由此CoreLooper保证Handler在跨looper析构时不会出现异常 实际运行中跨looper析构handler的几率可忽略不计 强烈建议用户把清理操作放在OnDestroy()中就能保证不出现异...

2018-07-27 21:56:41 224

原创 corelooper如何支持其他语言

目前corelooper框架还在重构中,不可避免的思考如何让corelooper支持其他语言发现RPC是个好东西,粗略看了一下thrift和grpc,感觉都非常好,后面可研究一下另外,很早听说java的netty,今天看了一下,还可以,代码有点啰嗦 发现thrift中有Runnable,netty中有ByteBuf,和corelooper中的很相似。  ...

2018-07-20 09:11:14 229

原创 Android Studio中切换测试多个Activity

.发现可以在as中指定启动哪个activity,这样就不需要频繁的修改AndroidManifest.xml了 步骤如下,在.xml中给activity任意指定一个intent,比如 <activity android:name="com.jjy.dahua.CameraDemoActivity" > <intent-filter&gt...

2018-07-18 18:44:52 1398

原创 遇到android Handler.sendMessage的一个坑

今天遇到一个android app bug,最后发现copy代码时犯了个错对同一message调用了两次sendMessage { String msg= "event=CarDetected\r\n" +"car=test"+"\r\n" +"\r\n...

2018-07-18 10:12:14 3269

原创 vs的test很好用

可以很方便的做单元测试每次编译时可全自动测试当前代码

2018-07-08 14:28:10 1185

原创 android crash java.lang.UnsatisfiedLinkError 大坑

在做大华android app时遇到java.lang.UnsatisfiedLinkError发现大华提供的是libs/armeabi,我们的工程有几个.so是放在libs/armeabi-v7a,在安装apk时,android只复制了一部分.so文件到/data/data/包名/lib下面,导致确实是缺少某些.so最简单的解决办法:去掉armeabi.so都放在armeabi-v7a下面...

2018-07-07 17:26:31 248

原创 android studio中module删除不了的解决办法

有时删除module之后,下次打开工程,module还在,怎么都删除不了解决办法:打开settings.gradle,删除不需要的moudle,再sync即可as的低级bug

2018-07-06 20:47:53 1505 1

原创 32寸曲面屏,颜色有点淡,效果很好

2018-07-03 11:08:01 867

原创 Handler增加了Runnable接口

//android style virtual LRESULT LOOPER_SAFE sendRunnable(shared_ptr<Runnable> obj); virtual LRESULT LOOPER_SAFE postRunnable(shared_ptr<Runnable> obj); virtual LRESULT LOOPER_SAFE postDel...

2018-07-02 18:04:06 100

原创 在重构Handler时遇到bit field初始化问题

由于要支持嵌入式产品,CoreLooper只能坚守c++ 11为了节省内存,Handler中有些成员变量采用bit field,但c++ 11不支持 bit field 只有c++20才支持如下用法class Handler{ int x1 : 8 = 42; int x2 : 8 { 42 }; };详见https://en.cppreference.com/w/cpp/language/...

2018-06-30 13:57:12 148

原创 支持x64时遇到问题,佩服Microsoft眼光长远

在重构CoreLooper编写unit test时遇到一个场景,需要从OnMessage返回指针long OnMessage(UINT msg,WPARAM wp,LPARAM lp)即使是x64下vs的long仍然是32bit,详见https://blog.csdn.net/sky_qing/article/details/11650497导致OnMessage无法返回指针,只能修改原型重新审...

2018-06-28 18:36:50 128

原创 sim868 c++二次开发基本完成

sim868支持二次开发,其性能比一般的单片机要强大的多,支持多线程。最值得称赞的是支持c++,比c用起来顺手。

2018-06-28 09:15:21 1902 3

原创 BaseLooper改名为CoreLooper

代码正在重构整理中

2018-06-27 11:19:09 226

原创 nlohmann json比rapidjson好用

https://github.com/nlohmann/json在TEST_CLASS(NlohmannJson)测试ok,能很方便的生成和解析jsonFileEx::Dump(o.dump(4), "d:/t.json");//dump(4)是pretty格式,indent为4个空格,效果很好!

2018-06-07 18:56:12 4455

原创 BaseLooper决定大量采用多级namespace

框架结构要清晰,感觉c++用namespace能很好的展示这一点vs class view会很直观这样能做成和android,ms .net,ios一样的framework

2018-06-06 10:37:08 133

原创 string sz = nullptr;会crash

不明白为什么stl不回避这一点

2018-05-31 18:15:16 596

原创 c#还真好用

这两天由于要和其他公司平台对接,对方只提供了c#和java sdk,最好后c#搞定,感觉c#还真好用

2018-05-17 17:41:41 900

原创 __super很好用

microsoft扩展的__super很好用,不明白c++标准为什么不引入这个帖子有讨论https://stackoverflow.com/questions/180601/using-super-in-c但自己用typdef做的__super一不小心就容易出问题,BS c++决策者...

2018-05-17 16:18:03 1386

原创 客户端与服务器的数据同步问题

客户端离线后又上线时,与服务器的数据同步问题可借鉴svn的版本管理思想,客户端提交到服务器的每次数据变更都自动递增1,同时把变更日志加到数据库客户端上线后提交本地svnClientVersion到server,server缓存client.user.svnLatestVersion,如果版本匹配,说明客户端可直接使用本地缓存的数据否则server返回svnClientVersion到svnLate...

2018-05-13 17:59:54 3854

原创 BaseHandler timer接口改进

.BaseHandler的timer接口可以改进一下现在是long BaseHandler::SetTimer(UINT timerId, UINT interval)long BaseHandler::KillTimer(UINT timerId);void OnTimer(UINT timerId);这样存在一个问题:timerId由class自行指定,而子类有可能不知道基类的内部实现当基类和...

2018-05-13 11:16:10 135

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除