Go语言Web框架:Beego

Beego是一个用Go语言开发的全栈MVC框架,由国人谢孟军(Asta Xie)开发并维护。它借鉴了Python的Django和Flask等框架的设计思想,同时结合了Go语言的特性,为开发者提供了一套完整的Web开发解决方案。

基于boost.asio的WebSocket类库

WebSocket++ github

具有以下特点:

  • Header Only的跨平台 WebSocket 库
  • 网络 IO 基于 Boost::asio 实现
  • 由于boost::asio 的 io_context 使用了线程存储,所以在 M:N 的协程模式(fiber) 下调用需格外小心。最好是采用 1:N 的协程。

当服务作为客户端管理多个 Connection 时, 如果每个Connection 对象都使用一个 Client 对象, 由于 Client 在Connect(无论Url中使用IP还是域名) 时都会创建一个独立线程来进行域名解析,导致线程数过多,从而性能地下。

html5之语义化标签

在[HTML5]标准中,新加了几个用于增添页面语义的标签,这些标签有:article、section、nav和aside等。与别的大多数标签不同,浏览器在解释渲染这些标签的时候仅仅把它们作为普通的div块级元素来进行处理,不会添加任何额外的展现逻辑;也即,这些标签仅用于增添语义。对于Web开发人员而言,使用这些标签的实际意义主要有2点:搜索引擎优化(SEO),以及增加页面的可用性(accessibility)。

在元素分类上,article、section、nav和aside称之为“Sectioning Content”。

article
article元素可用于表示页面上某块具有一定独立性的内容,这个内容可以是一篇文章、论坛上的一个帖子/评论、一篇博客、一个可交互的控件等。article标签可以嵌套使用,当这么做时,子article元素与父article元素在逻辑上必须有相应的关联。如Web开发者可以将一篇博客的正文以及评论作为父级article元素,而将其中的各个评论作为子article元素。

trpc微服务寻址方案设计

tRPC在服务命名上定义了以下3个纬度信息:

  • app名(应用名),表示某个业务系统的名称,用于标识某个业务下不同服务模块的一个集合;
  • server名(模块名),表示具体服务模块的名称,一般也称为模块的进程名称;
  • service名,表示具体服务提供者的名称,一般使用proto文件定义的Service名称; 其中app.server 的组合在全局上要具备唯一性。

服务命名这样定义的好处是:

Kubernetes 优雅停止

Kubernetes 优雅停止

在Kubernetes (K8s) 中,Pod的优雅终止过程是一个有序的过程,旨在确保Pod中运行的应用程序能够平滑关闭,释放资源,并尽可能减少因突然关闭带来的数据丢失和服务中断。