爱奔跑的程序猿

keep running, just do it!


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 阅读排行

  • 最新回复

  • 搜索

Google Flags使用说明

发表于 2021-06-03 | 分类于 编程语言 , C/C++ | 评论: | 阅读次数:
AI摘要
GPT

最近阅读yugabyte源码时,看到代码对对gflags的使用,不甚了解,于是去简单查了一下资料学习一下。

简介

GFlags是Google开源的一套命令行参数处理的开源库,包括C++的版本和python 版本。它与其他库(例如getopt())不同之处在于flag可以定义在不同的源代码中,而不仅仅是列在一个地方。一个源码文件可以定义一些对它自己有意义的flag,同时其他任何链接了该文件的应用也都能使用这些flag。
由于这种技术,灵活性和代码重用的简易性有了显着的提高。但是,存在两个文件定义相同标志的危险,当它们链接在一起时会发生错误。

阅读全文 »

Go-init函数

发表于 2020-10-29 | 分类于 编程语言 , Go | 评论: | 阅读次数:
AI摘要
GPT

Go init函数

Go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性。

阅读全文 »

libsearpc-server

发表于 2020-08-13 | 分类于 seafile | 评论: | 阅读次数:
AI摘要
GPT

Server

初始化

在使用服务之前,必须得先对服务所需的一些结构进行初始化。

1
2
3
4
5
6
7
8
9
10
void
searpc_server_init (RegisterMarshalFunc register_func)
{
marshal_table = g_hash_table_new_full (g_str_hash, g_str_equal,
NULL, (GDestroyNotify)marshal_item_free);
service_table = g_hash_table_new_full (g_str_hash, g_str_equal,
NULL, (GDestroyNotify)service_free);

register_func ();
}

可以看到这里涉及到marshal_table、service_table以及register_func(也就是RegisterMarshalFunc)。

阅读全文 »

libsearpc-请求与回复

发表于 2020-07-25 | 分类于 seafile | 评论: | 阅读次数:
AI摘要
GPT

前面说过一次通信的数据包分两次发送,第一个存储实际数据的大小,第二个存储实际的数据。

事实上,为了方便服务端客户端更好地对收到的数据进行处理,发送的实际的数据本身也有一定的格式。

阅读全文 »

libsearpc-消息通讯

发表于 2020-07-24 | 分类于 seafile | 评论: | 阅读次数:
AI摘要
GPT

消息通讯

客户端和服务端的连接建立完毕后,接下来就是如何对通道上的消息进行处理了。

一般都是客户端发起消息请求,服务端对监听到的请求进行处理,并把处理结果发送给客户端。这样一次消息通讯就完成了。

阅读全文 »

libsearpc-建立连接

发表于 2020-07-24 | 分类于 seafile | 评论: | 阅读次数:
AI摘要
GPT

建立连接

在介绍通信协议的时候,实际上服务侧对socket或者name_pipe的监听基本上也概括到了。

接下来客户侧连接上unix domain socket或者name_pipe,一个通信通道就建立完成了。

阅读全文 »

libsearpc-通信协议

发表于 2020-07-23 | 分类于 seafile | 评论: | 阅读次数:
AI摘要
GPT

通信协议

像google的gRpc底层的通信协议基于标准的HTTP/2设计,那么librpc是基于什么协议呢?

由于seafile的服务通常都是打包安装到同一台服务器上,所以其基于的是IPC进程间通信。

具体实现方式,其在linux/mac系统上使用的unix domain socket通讯。

而在Windows系统中使用的是name_pipe命名管道通讯。

阅读全文 »

libsearpc

发表于 2020-07-23 | 分类于 seafile | 评论: | 阅读次数:
AI摘要
GPT

介绍

Searpc是Seafile项目中基于GObject系统的一个简单的C语言RPC框架,当然为了使其Web框架Seahub通配,所以也支持了python语言。

github地址: https://github.com/haiwen/libsearpc

阅读全文 »

Linux进程间通信

发表于 2020-07-21 | 分类于 Linux | 评论: | 阅读次数:
AI摘要
GPT

什么是进程间通信

进程是系统分配资源的最小单位。由于虚拟内存的实现,每个进程都有独立的虚拟地址空间,当进程真正使用这块空间时,系统再将虚拟地址与物理地址进行映射,实现真正的系统分配。

这样,每个进程都有自己独立的系统资源,彼此之间是相互隔离的。而有时需要不同的进程互相访问资源并协调工作,才有了进程间通信。

阅读全文 »

gitbook集成leancloud

发表于 2020-07-18 | 分类于 gitbook | 评论: | 阅读次数:
AI摘要
GPT

背景

之前将hexo集成了gitbook,由于hexo的阅读量使用的是leancloud,而gitbook用的是gitbook-plugin-pageview-count的一个插件。

找了一圈也没找到leancloud相关的gitbook插件,想了想,干脆自己写一个算了。虽然基本没写过js,但依葫芦画瓢应该还是可以的。

阅读全文 »
1…161718…25
tianwei

tianwei

长路漫漫,上下求索

243 日志
57 分类
34 标签
GitHub E-Mail weibo
友情链接
  • 乘以零
  • 小逗嘛嘛
  • HY
  • 芷在安宁
  • kai
© 2024 tianwei 鄂ICP备2021009863号-1
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Pisces v6.6.0
位访客 人阅读