本文主要介绍下xmake的整体架构设计,以及源码结构的布局和模块划分。
如果你想深度使用xmake,开发xmake插件、工程自定义脚本或者想为xmake贡献一些代码和特性,可以通过此本的介绍,对xmake项目整体有个大概的了解。,
源码地址:Github
顶层目录结构
bash
./xmake/
├── actions # 内建的一些基础task,用于基本的构建安装等操作
├── core # xmake的核心模块,提供最底层的实现支持
├── languages # 所有的语言相关特性支持和扩展,都在此目录下
├── modules # 内置的扩展模块,可用`import`导入使用
├── pack
继续阅读 »
专精专业和冗余流程的管理应该在什么时候把握平衡
在写程序和架构的过程中,经常会面临到底是以快速实现功能为目标取向的单点服务系统,还是在开始设计架构和功能的时候就考虑周全的分布式具有冗余的系统架构。 以技术角度看,得出合理的结论并不是特别难。在前期快速产品迭代争取竞争优势的时期,只要能保证基本的稳定性,当然是怎么快怎么来,单点未必就不是最佳选择。
继续阅读 »
简介
这是一个可以直接解释执行从ida pro里面提取出来的x86汇编代码的虚拟机。
非常精简,整体架构上不能跟那些成熟的虚拟机相比,主要目标是够用、能用、轻量就行,如果觉得代码架构设计的不是很好的话,也不用过于吐槽哈。。
虽然我还有写过两个比较成熟的虚拟机项目(jvm和avm),虽然架构上比这个更完善,更容易扩展,功能也更强大
但是毕竟是给公司写的,没法拿出来分享。。
背景
先说说,为什么要写这个东西。。
之前有段时间,我在用ida逆向分析某些程序的算法,并且要把它提取出来将其跨平台运行,这个时候我首先考虑到是ida的F5插件
毕竟这个可以直接反成c/c++代码,还是很强大的,基本上98%的x86汇编代码,我在通过
继续阅读 »
随着xmake v2.0.1 版本的发布,这大半年的辛苦总算告一段落,这个版本我基本上重构整个项目的90%的代码,几乎算是重写了,但结果还算挺满意的。。
因为上个版本的架构设计的不是很好,不能很好进行扩展,也不支持插件模式,语法设计上也不严谨,容易出现各种隐患,这对于后期维护和发展来说,已经出现了不可逾越的瓶颈。。
每个项目到了一定阶段,都是要不断重构,重新构思整体架构,才能使得项目不断的向好的方向演进。。
(当然如果是公司项目就另当别论了,坑太多,历史负担较重,不是说要重构就能让你重构的。=。=)
回归正题,目前xmake基本上所有模块都是可扩展的:
插件扩展
工程模板扩展
平台架构扩展
action扩展
option选
继续阅读 »
众所周知,Android的设计架构一直为人所诟病,模块的分割不清,很容易造成新手的困惑和迷茫,并且写出来的代码非常混杂,Activity即包含UI的处理,还包括数据的具体处理,让一个Activity弄出好几千行的容量,而且代码非常不清晰,可读性比较差。
所以在Android的开发过程中,一直没有一个统一的开发模式,MVC、MVP、MVVM都有出现,不过之前Google在Github开源的一个开源库to-do-mvp ,Google提供了他们对MVP的一个范式,我们一次为基础谈谈Android 的MVP的应用。
What is MVP?
MVP 指的是“models-views-pre
继续阅读 »
SonarQube(Sonar)是一个用于管理代码质量的开源平台。SonarQube目前已支持超过20种主流编程语言,它管理的代码质量主要涉及7个维度:架构与设计、重复、单元测试、复杂度、潜在的bug、代码标准、注释。
本文,笔者将围绕搭建SonarQube这样的代码质量管理平台这个主题展开,结合java代码实例一步步讲述具体的过程,其中涉及Sonar的下载安装、创建对应Mysql数据库以及运行和管理,并对实践过程中出现的一些问题进行了分析和解决。
继续阅读 »
本书第六章的读书笔记,也是我这个系列的最后一篇读书笔记。后面7、8、9章分别讲的“测试、调试与重构”、“设计和架构的原则”以及“使用Lambda表达式编写并发程序”,因为笔记不好整理,就不写了,感兴趣的同学自己买书来看吧。
并行化流操作
继续阅读 »
stl的容器库非常强大,但是为了要兼容各种元素类型,采用了模板进行泛化,这样的好处就是使用非常的方便,但是编译器会对使用到的每种类型都进行一遍实例化,用的类型太多的话不仅影响编译速度而且生成的可执行文件也很冗余。
因此,TBOX在设计容器架构的时候,引入tb_item_func_t类型,来设置容器使用的成员类型,这样在实现容器通用性的同时,也不会产生过的冗余,而且容器接口操作上,同样相当的便利。
可以先看个简单使用哈希的例子:
```c
/* 初始化hash, 哈希桶大小8
* 键:大小写敏感字符串
* 值:long整型
*/
tb_hash_map_ref_t hash = tb
继续阅读 »
docker
docker 使用go语言开发,对进程进行封装隔离。
more
docker的三个基本概念
一、镜像(Image)
Docker中的文件系统(操作系统的完整root文件系统),提供容器运行时所需的程序,文件,资源,配置及配置参数(匿名卷,环境变量,用户),镜像不会包含任何动态数据,其中的内容在构建后不会发生任何的变化,Docker的镜像设计基于Union FS设计为分层存储的架构。镜像的构建一层一层前者是后者的基础,构建完成后不再发生变化。
二、容器(container)
容器是镜像的运行实体(实质为进程),容器运行时以镜像为基础层创建当前的容器存储层,容器存储层的生命周期与容器相同,保存于容器存储层
继续阅读 »
REST 是一种现代架构风格,它定义了一种设计 Web 服务的新方法。和之前的 HTTP 以及 SOA 不同,它不是一个协议(即:一套严格的规则),而是一些关于 Web 服务应该如何相互通信的一些建议和最佳实践。按照 REST 最佳实践开发的服务被称为 “RESTful Web 服务”。
继续阅读 »