不能停止的脚步
#
因为工作需要分析protobuf的数据,google了一下,我个人没有找到合适的,就参考google protobuf文档,写了一个分析工具。这个项目用的是C++Builder XE10.2, win64实现。 因为是临时定的代码,就写的很随意了,很少注释。
C++ Builder XE 10.2
https://code.csdn.net/zdhsoft/protobuf_tools/tree/master
在开发过程中,如果代码很整齐的话,那么这个代码就会看起来比较舒服。就像看到一个整洁的屋子一样。 其中,=,:等对齐,则是一个重要的整洁处理。
这个就是vscode的对齐插件,启动vscode,进入插件管理,没有安装的话,搜索一下,很快就有了。然后安装即可。vscode的插件管理真是做的很不错,易用。
安装完成后,就可以使用了 将光标移到要对齐的代码块,然后安一下ctrl+shift+p,然后输入命令,就立马对齐了。 如下图演示 Comma-first sytle Trailing comment Align within selection
如果老是输入命令,确实很麻烦,可以配置快捷键 我这里配置的是ctrl+alt+= 如下图:文件->首选项->键盘快捷方式,如下图 进入之后:在键盘快捷方式编辑中,点击keybindings.json, 进入json设置后 然后我输入ctrl+alt+= 然后输入操作内容
{ "key": "ctrl+alt+oem_plus", "command": "wwm.aligncode", "when": "editorTextFocus && !editorReadonly" }
这样,就可以使用快捷键操作了
原文地址:http://www.infoq.com/cn/news/2017/08/vs2017-153
从Visual Studio 2017 15.3预览版的发布时间表中可以看出,Microsoft似乎马上要发布这一版本的正式版。过去几周对VS2017 15.3的改动主要集中在问题修复上,开发人员可以注意到,最近的VS2017 15.3 Preview版本提供了对C# 7.1的支持,对C++语言服务的改进,以及对IDE自身的几处改动。通过几个重要的问题修复,提高了稳定性和性能。
C++开发人员将看到一些IDE的改动,例如一些常用模板的位置发生了改变。基于Win32的项目现在可以在Windows 桌面类别下找到。Windows控制台和桌面程序模板在创建过程中不需要调用向导,可以分别创建他们各自的项目。Windows桌面向导可供需要的人员使用。
15.3的Preview目前已经支持C# 7.1的语言特性。InfoQ的首席编辑Jonathan Allen分两部分对这些特性进行了深入介绍。第一部分关于异步主函数(Async Main)和默认表达式(Default Expressions),第二部分探讨了推导元组名(Infer Tuple Names),以及使用泛型的模式匹配(Pattern-matching with Generics)。有了15.3 Preview,开发人员现在可以在VS2017中体验这些特性。
一个很有用的特性是增加了信息栏。如果有一个安装的扩展程序运行不正常,信息栏将给出通知,允许用户决定是否禁用有问题的扩展程序,或者不管它。
VS2017 15.3增加的其他特性包括命令行工具vswhere.exe。可以使用该工具获得VS2017安装实例的信息。该工具在15.2版本中首次出现,但是在15.3版本已经被修改,不再默认显示VS2017 Preview的实例。要获得预览版的安装信息,需要加入命令行参数prerelease。
修复的问题有:
如往常一样,不建议将Visual Studio预览版用于生产系统。感兴趣的开发人员现在可以下载Visual Studio 2017 15.3 Preview,也可参看完整的版本说明。
查看英文原文: Visual Studio 2017 15.3 Preview Nears Final Release
之前,都是在32位Android手机上,做测试。然后搞了一个64位手机,就不行了。
分析后,先是报:is 32-bit instead of 64-bit
然后,再自己的CPP的库中,修改Application.mk,将APP_ABI :=armeabi改为APP_ABI :=armeabi arm64-v8a
这样生成的时候,就会得到两个版本的so
第一种情况解决后,第二种情况又来了,就是找不到lib
原来,我是通过/data/data/com.xxx.xxx/lib访问so的,结果在64位安装后,lib这个是无效的,然后就加载失败。
最后通过ApplicationInfo取到。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersion\14.0然后删除,就可以了。再去行RAD,就不报这个错了。然后就可以开开心心写了一个android例子,顺利跑了起来。
在es6中增加了一个class,简单明了,比ES5下面强多了 每个类都有会有一个构造函数constructor。如果没有申明,则会默认分配一个空的。 如果需要调父类的构造函数,需要在constructor第一行调用super,至于为什么,已经有N多文档说明了。 例如:
class a { constructor(m) { this.m_m = m; } }; class b extends a { constructor(m, m1) { super(m); this.m_m1 = m1; } };
在es6中,使用get和set来标明属的读写函数
class a { constructor(m) { this.m_m = m; } get m() { return this.m_m; } set m(v) { this.m_m = v; }};let testa = new a(1999); console.log(testa.m);
在这里就会 打印出1999
class a { constructor(m) { this.m_m = m; } get m() { return this.m_m; } set m(v) { this.m_m = v; } mult(k) { return this.m_m * k; } add(k) { return this.m_m + k; } sub(k) { return this.m_m / k; }};
在这里可以看到,不需要用function了,又是做了大大的简化。
只需要在类的成员方法前,加一个static关键字就可以了,如果同一个类的静态函数,可以用this来调用。如下面的astatcfun1调用astatcfun,也可以用类名.的方问,如astatcfun2调用astatcfun,建议还是用this,在使用的时候,静态方法,不需new出对象来,直接用对象.的方式,如下面的testcall调用a的静态方法。也可以派生给子类。
class a { constructor(m) { this.m_m = m; } static astaticfun() { return 100; } static astatcfun1() { return this.astaticfun() + 200; } static astatcfun2() { return a.astaticfun() + 200; } get m() { return this.m_m; } set m(v) { this.m_m = v; } mult(k) { return this.m_m * k; } add(k) { return this.m_m + k; } sub(k) { return this.m_m / k; }}; // function testcall(){ console.log(a.astaticfun()); console.log(a.astatcfun1()); console.log(a.astatcfun2()); }
class a { static aaa() { return "aaa"; } static bbb() { return this.aaa() + "bbb"; //同一个类的静态函数调用函数,只需要用this.就可以 } kkk() { return "kkk"; } ccc() { return a.aaa() + "ccc" + this.kkk(); //同一个类的非静态函数调用静态函数,则需要类名.的方式 }}; let c = new a(); console.log(a.bbb()); console.log(c.ccc());
在ES6的派生通过extends这个关键字就可以,如
class b extends a() { };
Copyright @ 冬瓜 Powered by: .Text and ASP.NET Theme by: .NET Monster