TOML教程
TOML v0.5.0全称: Tom的(语义)明显、(配置)最小化的语言。 (Tom's Obvious, Minimal Language. By Tom Preston-Werner.)
注: 此规范仍然会发生很多变化。在未标记为1.0之前,你应该假设它是不稳定的,请酌情采用。
目标TOML的目标是成为一个有明显语义而容易去阅读的最小化配置文件格式。 TOML被设计成可以无歧义地被映射为哈希表,从而很容易的被解析成各种语言中的数据结构。
示例123456789101112131415161718192021222324252627282930313233# 这是TOML文档示例.title = "TOML Example"[owner]name = "Lance Uppercut"dob = 1979-05-27T07:32:00-08:00 # 时间日期当然是一等公民了。[database]server = "192.168.1.1"ports = [ 8001, 8001, 8002 ]connection_ ...
YAML教程
YAML 语言教程一、简介YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。
它的基本语法规则如下。
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
#表示注释,从这个字符一直到行尾,都会被解析器忽略。
YAML 支持的数据结构有三种。
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值
以下分别介绍这三种数据结构。
二、对象对象的一组键值对,使用冒号结构表示。
1animal: pets
转为 JavaScript 如下。
1{ animal: 'pets' }
Yaml 也允许另一种写法,将所有键值对写成一个行内对象。
1hash: { name: S ...
帧率(FPS)计算的六种方法总结
帧率(FPS)计算的六种方法总结帧率(FPS)计算是游戏编程中常见的一个话题。大体来说,总共有如下六种方法:
一、固定时间帧数法帧率计算的公式为:
1fps = frameNum / elapsedTime;
如果记录固定时间内的帧数,就可以计算出同步率。此种方法用得较多。
1234567891011121314151617int fps(){ static int fps = 0; static int lastTime = getTime(); // ms static int frameCount = 0; ++frameCount; int curTime = getTime(); if (curTime - lastTime > 1000) // 取固定时间间隔为1秒 { fps = frameCount; frameCount = 0; lastTime = curTime; } return fps;}
还有另一种写法:
12 ...
Qt学习资料大全
Qt学习资料大全简述为了方便更多Qter了解、学习Qt,现将相关资源进行整理,主要内容包括:Qt官网、编码风格、GitHub & Third-Party、社区论坛、博客、书籍等。
Qt官网
Qt官网:https://www.qt.io
Qt下载:http://www.qt.io/download
Qt所有下载:http://download.qt.io/archive/qt
Qt官方发布下载:http://download.qt.io/official_releases/qt
Open Source下载:http://www.qt.io/download-open-source/#section-2
Qt WiKi:https://wiki.qt.io/Main_Page
编码风格
Qt Coding Style
http://wiki.qt.io/Qt_Coding_Style(low-level)
http://wiki.qt.io/Coding_Conventions( higher-level )
Google开源项目风格指南 http://zh-google-s ...
Qt Active Server的注册
Qt Active Server的注册对于Qt开发Active Server需要使用MSVC版Qt。mingw版无法用于开发Active Sever,只能通过Qt Active调用COM组件。
idc工具:D:\Qt\Qt5.5.1\5.5\msvc2013\bin
1234567#注册idc.exe multipleax.dll /regserveridc.exe multipleax.dll -regserver#反注册idc.exe multipleax.dll /unregserveridc.exe multipleax.dll -unregserver
通过Qt Active Server,可以通过浏览器来显示应用,效果就像一个web应用。Active server可以编译成dll或exe的形式。
要为每个COM类提供属性,请使用Q_CLASSINFO宏,它是Qt的元对象系统的一部分。
Key
Meaning of value
Version
类的版本号,默认值是1.0
Description
类的描述
ClassID
类的ID(COM中用来唯一确 ...
golang版PureMvc框架
golang版PureMvc框架重点PureMVC框架的目标很明确,即把程序分为低耦合的三层:Model、View和Controller。它们合称为PureMVC框架的核心,由Facade统一管理。关于它的核心层,我们不需要管太多,只需要记得下面几点就可以了:
一、Model保存对Proxy对象的引用,Proxy负责操作数据模型,与远程服务通信存取数据。
二、View保存对Mediator对象的引用。由Mediator对象来操作具体的视图组件(View Component,例如Flex的DataGrid组件),包括:添加事件监听器,发送或接收Notification ,直接改变视图组件的状态。
三、Controller保存所有Command的映射。Command可以获取Proxy对象并与之交互,通过发送Notification来执行其他的Command。
上面的什么对什么的引用,可以一开始看的时候很难理解,我们暂时不用管它谁对谁的引用的。这些已经由框架为我们管理好了,我们要所要做的是编写具体的Command,Mediator,Proxy。
一、Proxy是负责操作数据模型 ...
protobuf编译插件调用规则
要让protoc使用插件,需要做下面事情:
Place the plugin binary somewhere in the PATH and give it the name "protoc-gen-NAME" (replacing "NAME" with the name of your plugin).
If you then invoke protoc with the parameter –NAME_out=OUT_DIR (again, replace "NAME" with your plugin's name), protoc will invoke your plugin to generate the output, which will be placed in OUT_DIR.
Place the plugin binary anywhere, with any name, and pass the –plugin parameter to protoc to direct it t ...
Golang中使用protobuf高效编码
Golang中使用protobuf高效编码Protocol Buffers 是Google推出的一种数据交换格式。二进制、高性能、跨平台、跨编程语言。很适合现在分布式、微服务中结合消息总线做高性能数据交换。
定义 *.proto1234567891011121314151617181920212223242526syntax = "proto3";package tutorial;message Person { string name = 1; int32 id = 2; // Unique ID number for this person. string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { string number = 1; PhoneType type = 2; } repeated PhoneNumber phones = 4 ...
proto3与proto2的区别
这是一篇学习笔记。在粗略的看了 Protobuf 的文档中关于 proto2 和 proto3 的说明后,记录下了几点 proto3 区别于 proto2 的地方。
总的来说,proto3 比 proto2 支持更多语言但 更简洁。去掉了一些复杂的语法和特性,更强调约定而弱化语法。如果是首次使用 Protobuf ,建议使用 proto3 。
在第一行非空白非注释行,必须写:
syntax = "proto3";
字段规则移除了 “required”,并把 “optional” 改名为 “singular”1;
在 proto2 中 required 也是不推荐使用的。proto3 直接从语法层面上移除了 required 规则。其实可以做的更彻底,把所有字段规则描述都撤销,原来的 repeated 改为在类型或字段名后加一对中括号。这样是不是更简洁?
“repeated”字段默认采用 packed 编码;
在 proto2 中,需要明确使用 [packed=true] 来为字段指定比较紧凑的 packed 编码方式。
语言增加 Go、Ruby、 ...
Protobuf语言指南(proto3)
Protobuf 语言指南(proto 3)这个指南描述了如何使用Protocol buffer 语言去描述你的protocol buffer 数据, 包括 .proto文件符号和如何从.proto文件生成类。
这是一个参考指南——对于使用本文档中描述的许多功能的分步示例。
定义一个消息类型先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页数,以及每一页多少条查询结果。可以采用如下的方式来定义消息类型的.proto文件了:
123456syntax = "proto3";message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3;}
文件的第一行指定了你正在使用proto3语法:如果你没有指定这个,编译器会使用proto2。这个指定语法行必须是文件的非空非注释的第一个行。
SearchRequest消息格式有3个字段,在消息中承载的 ...
临时记录
Go标准库所有方法使用示例,请注意这不是Go的中文版标准库(内含传送门),持续更新examplehttps://github.com/zc2638/go-standard
模拟浏览器登录操作https://studygolang.com/topics/900?fr=sidebar
微服务https://studygolang.com/articles/13061?fr=sidebar
https://ewanvalentine.io/tag/go/
https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe
https://www.cnblogs.com/52php/p/6060104.html GO项目收藏
go-micro
https://github.com/micro-in-cn/all-in-one micro 特性全合一项目示例https://github.com/micro-in-cn/tutorials Micro教程系列
https://www.wangtianyi. ...
常用网址
vite vitepress vue3.0 vuex vuerouter typescript flutter dart k8s docker drone argo go html5 css javascript electron java springboot redis mq nats etcd nsq
http://www.bejson.com/ 在线工具 json解析 base64编解码等等...https://unbug.github.io/codelf/ 变量命名http://www.php.cn/ 在线文档
https://www.bookstack.cn/
https://learngitbranching.js.org/?demo Git分支练习
https://down.52pojie.cn/Tools/ 吾爱破解工具
http://www.riaway.com/zb/ 装逼工具
https://curl.haxx.se/docs/caextract.html 证书
[web工具]https://www. ...
nsq实例
nsq实例1234567nsqlookupdnsqd --lookupd-tcp-address=0.0.0.0:4160 -tcp-address="0.0.0.0:4153" --data-path=./data1 >./log/nsqd1.log 2>&1 &nsqd --lookupd-tcp-address=0.0.0.0:4160 -tcp-address="0.0.0.0:4154" --data-path=./data2 -http-address="0.0.0.0:4155" >./log/nsqd2.log 2>&1 &nsqadmin --lookupd-http-address=127.0.0.1:4161 >./log/nsqadmin.log 2>&1 &
创建Producer123456789101112131415161718192021222324252627282930313233343536packa ...
nsq介绍
nsq介绍nsq 是一个基于 Go 语言的分布式实时消息平台,nsq 可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。
nsq 具有分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。NSQ 非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。另外,官方还提供了拆箱即用 Go 和 Python 库。如果读者兴趣构建自己的客户端的话,还可以参考官方提供的协议规范。
nsq 是由四个重要组件构成:
nsqd:一个负责接收、排队、转发消息到客户端的守护进程
nsqlookupd:管理拓扑信息并提供最终一致性的发现服务的守护进程
nsqadmin:一套 Web 用户界面,可实时查看集群的统计数据和执行各种各样的管理任务
utilities:常见基础功能、数据流处理工具,如 nsq_stat、nsq_tail、nsq_to_file、nsq_to_http、nsq_to_nsq、to_nsq
nsq 的主要特点如下:
具有分布式且无单点 ...
nsq多播分发和负载均衡实验
nsq多播分发和负载均衡实验实验nsq多播分发1.在第一个shell中,启动nsqlookupd
1$ nsqlookupd
2.在第二个shell中,启动nsqd
1$ nsqd --lookupd-tcp-address=127.0.0.1:4160
3.在第三个shell中,启动nsqadmin
1$ nsqadmin --lookupd-http-address=127.0.0.1:4161
4.在第四个shell中,发布第一个消息(同时创建topic)
1$ curl -d 'hello world 1' 'http://127.0.0.1:4151/pub?topic=test'
注意:在这一步中,可以指定channel的值,但是消息依然会发送给所有订阅topic的消费者。
5.在第五个shell中,使用nsq_to_file启动一个client来接收消息(消息存储目录为/tmp/nsq1)
1$ nsq_to_file --topic=test --channel=ch_test1 --out ...
NSQ部署
NSQ部署安装Binary Releases为 linux 和 darwin 预编译二进制文件 (nsqd, nsqlookupd, nsqadmin, 以及所有的例子应用),可用来下载。
当前稳定 Release 版本: v0.3.5
nsq-0.3.5.darwin-amd64.go1.4.2.tar.gz
nsq-0.3.5.linux-amd64.go1.4.2.tar.gz
老的稳定 Release 版本
nsq-0.3.2.darwin-amd64.go1.4.1.tar.gz
nsq-0.3.2.linux-amd64.go1.4.1.tar.gz
nsq-0.3.1.darwin-amd64.go1.4.1.tar.gz
nsq-0.3.1.linux-amd64.go1.4.1.tar.gz
nsq-0.3.0.darwin-amd64.go1.3.3.tar.gz
nsq-0.3.0.linux-amd64.go1.3.3.tar.gz
nsq-0.2.31.darwin-amd64.go1.3.1.tar.gz
nsq-0.2.31.linux-amd64. ...
NSQ客户端
NSQ客户端TCP 协议规范NSQ 协议足够简单,用任何语言编译客户端都很容易。我们提供官方的 Go 和 Python 客户端库。
nsqd 进程通过监听配置的 TCP 端口来接受客户端连接。
连接后,客户端必须发送一个 4 字节的 "magic" 标识码,表示通讯协议的版本。
V2 (4 个字节的 ASCII [space][space][V][2]) 消费用到的推送流协议(和发布用到的请求/响应协议)
认证后,客户端可以发送 IDENTIFY 命令来停供常用的元数据(比如,更多的描述标识码)和协商特性。为了消费消息,客户端必须 SUB 到一个通道(channel)。
订阅的时候,客户端的 RDY 状态为 0。意味着没有消息会被发送到客户端。当客户端已经准备好接受消息时,需要把 RDY 设置为 #。比如设置为 100,不需要任何附加命令,将会有 100 条消息推送到客户端(每次服务端都会相应的减少 RDY 的值)。
V2 版本的协议让客户端拥有心跳功能。每隔 30 秒(默认设置),nsqd 将会发送一个 _heartbeat_ 响应,并期待返回。如 ...
NSQ组件
NSQ组件nsqdnsqd 是一个守护进程,负责接收,排队,投递消息给客户端。
它可以独立运行,不过通常它是由 nsqlookupd 实例所在集群配置的(它在这能声明 topics 和 channels,以便大家能找到)。
它在 2 个 TCP 端口监听,一个给客户端,另一个是 HTTP API。同时,它也能在第三个端口监听 HTTPS。
命令行选项123456789101112131415161718192021222324252627282930313233343536373839-auth-http-address=: <addr>:<port> 查询授权服务器 (可能会给多次)-broadcast-address="": 通过 lookupd 注册的地址(默认名是 OS)-config="": 配置文件路径-data-path="": 缓存消息的磁盘路径-deflate=true: 运行协商压缩特性(客户端压缩)-e2e-processing-latency-percentile=: 消息 ...
NSQ概述
NSQ概述快速开始下面的步骤将通过推送(publishing)、消费(consuming)和归档(archiving)消息到本地磁盘,在本地环境演示一个小型的 NSQ 集群
根据文档安装安装 NSQ。
在另外一个 shell 中,运行 nsqlookupd:
1$ nsqlookupd
再开启一个 shell,运行 nsqd:
1$ nsqd --lookupd-tcp-address=127.0.0.1:4160
再开启第三个 shell,运行 nsqadmin:
1$ nsqadmin --lookupd-http-address=127.0.0.1:4161
开启第四个 shell,推送一条初始化数据(并且在集群中创建一个 topic):
1$ curl -d 'hello world 1' 'http://127.0.0.1:4151/put?topic=test'
最后,开启第五个 shell, 运行 nsq_to_file:
1$ nsq_to_file --topic=test --output-dir=/tmp -- ...