About the Blog
blog里的文章并非全部原创,有一部分是经过修改后整理出要点,集中一起写到这里面。也包涵了一些我对整个软件行业的想法。 这个blog是用Hugo构建的,Theme 使用的是rocinante,live2D 的纸片人是我自己加的.(不是主题里自带的). ...
blog里的文章并非全部原创,有一部分是经过修改后整理出要点,集中一起写到这里面。也包涵了一些我对整个软件行业的想法。 这个blog是用Hugo构建的,Theme 使用的是rocinante,live2D 的纸片人是我自己加的.(不是主题里自带的). ...
目前领域逻辑的组织模式分为三种,“事务脚本”,“领域模型” 以及 “表模块”。 事务脚本类似于面向过程编程,事务脚本有以下优点: 它是一种大多数软件工程师都能理解的简单过程模型。 它能和一个行数据入口或表数据入口简单的数据源很好的协作。 非常容易设定事务的边界。 一个组数据源操作便是一个独立的事务脚本。 当然事务脚本也存在很大的缺陷,当领域逻辑开始变得复杂时,这些缺点就开始暴露出来。 当几个事务要执行类似的逻辑时,通常几个脚本中会含有某些相同的代码。 通过将这些代码提取出来,来形成公共的子例程,来消除这种情况。 但是,很多时候消除副本会变得棘手,而检测副本则更困难,倒是消除副本后的程序反而比以前还要杂乱无章,难以维护。 ...
目前,市面上以及出现了各种各样的适用于微服务(下面简称ms)的注册中心,配合其使用的还有各种ms框架,例如Alibaba的Dubbo。 微服务能通过分解服务粒度,然后针对特定服务进行性能扩展,来达到高性能的目的。 ...
Kratos 是bilibili开源的一套Go微服务框架,包含大量微服务相关框架及工具。 名字来源于:《战神》游戏以希腊神话为背景,讲述由凡人成为战神的奎托斯(Kratos)成为战神并展开弑神屠杀的冒险历程。 好!开始吧! ...
protobuf 的 message 中有很多字段,每个字段的格式为: 修饰符 字段类型 字段名 = 域号; 在序列化时,protobuf 按照 TLV 的格式序列化每一个字段,T 即 Tag,也叫 Key;V 是该字段对应的值 v 省略。 序列化后的 Value 是按原样保存到字符串或者文件中,Key 按照一定的转换条件保存起来,序列化后的 message 中字段后面的域号与字段类型来转换。转换公式如下: ...
protobuf 的 message 中有很多字段,每个字段的格式为: 修饰符 字段类型 字段名 = 域号; 在序列化时,protobuf 按照 TLV 的格式序列化每一个字段,T 即 Tag,也叫 Key;V 是该字段对应的值 v 省略。 序列化后的 Value 是按原样保存到字符串或者文件中,Key 按照一定的转换条件保存起来,序列化后的 message 中字段后面的域号与字段类型来转换。转换公式如下: ...
Github Actions 上传 Releases 1name: release 2 3# https://help.github.com/en/articles/workflow-syntax-for-github-actions#on 4on: 5 push: 6 tags: 7 - "*" 8 9jobs: 10 build: 11 runs-on: ubuntu-latest 12 steps: 13 - uses: actions/checkout@v1 14 - name: "find env" 15 run: | 16 set | grep GITHUB_ | grep -v GITHUB_TOKEN 17 zip -r pkg.zip *.md 18 - uses: xresloader/upload-to-github-release@v1 19 env: 20 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 21 with: 22 file: "*.md;*.zip" 23 tags: true 24 draft: false 25 prerelease: true 26 overwrite: true 27 verbose: true