首页原创精华区最新随笔(rss)

PipeCAD之管道标准库PipeStd(4)

     摘要: 管道标准部件库程序PipeStd的主要用法与PDMS的Paragon模块类似  阅读全文

2020-06-02 16:17 作者: eryar【评论:0】【阅读:213】 

Oracle数据类型Number的解析实现

     摘要: 存储格式    Oracle Number数据类型是变长的,占0~22字节,不像编程语言中的2/4字节整数或4/8字节浮点数,关于它的存储格式与解析,DSI上有详细的描述,如下所示                   &n...  阅读全文

2020-05-08 12:23 作者: 春秋十二月【评论:0】【阅读:188】 

origin游戏服务器引擎介绍

     摘要: origin 游戏服务器引擎简介==================origin 是一个由 Go 语言(golang)编写的分布式开源游戏服务器引擎。origin适用于各类游戏服务器的开发,包括 H5(HTML5)游戏服务器。origin 解决的问题:* origin总体设计如go语言设计一样,总是尽可能的提供简洁和易用的模式,快速开发。* 能够根据业务需求快速并灵活的制定服务器架构。* 利用多核...  阅读全文

2020-05-07 16:06 作者: C++技术中心【评论:0】【阅读:177】 

golang游戏服务器引擎

现在go语言比较流行的有leaf,gowold,origin。前两个比较基础,实现集群还需要进行二次的编码设计。origin不一样,只需要通过配置方便快速的集群。origin总体设计如go语言设计一样,总是尽可能的提供简洁和易用的模式,快速开发。 能够根据业务需求快速并灵活的制定服务器架构。 利用多核优势,将不同的service配置到不同的node,并能高效的协同工作。 将整个引擎抽象三大对象,node,service,module。通过统一的组合模型管理游戏中各功能模块的关系。 


origin引擎三大对象关系
---------------
* Node:   可以认为每一个Node代表着一个origin进程
* Service:一个独立的服务可以认为是一个大的功能模块,他是Node的子集,创建完成并安装Node对象中。服务可以支持对外部RPC等功能。
* Module: 这是origin最小对象单元,强烈建议所有的业务模块都划分成各个小的Module组合,origin引擎将监控所有服务与Module运行状态,例如可以监控它们的慢处理和死循环函数。Module可以建立树状关系。Service本身也是Module的类型。

更加详细的参照项目地址:https://github.com/duanhf2012/origin

2020-05-07 16:04 作者: C++技术中心【评论:0】【阅读:467】 

RvmTranslator7.3

     摘要: RvmTranslator7.3发布啦!
  阅读全文

2020-05-06 19:24 作者: eryar【评论:1】【阅读:753】 

基于ENet实现可靠UDP通信的同步模型

     摘要: 场景说明    选择ENet代替TCP用于弱网环境(通常丢包率高)的数据传输,提高可靠性及传输效率。为了说明怎样正确有效地应用ENet,本文按照TCP C/S同步通信的流程作了对应的接口封装实现,取库名为rudp。 接口对照    左边为rudp库的API,右边为标准的Berkeley套接字API。rudp库所有API前缀为rudp,ru...  阅读全文

2020-05-04 19:08 作者: 春秋十二月【评论:0】【阅读:205】 

基于VSS热备SQL Server的架构及应用

     摘要: 为什么用VSS    VSS是Windows系统的卷影像拷贝服务,用于解决如下问题:        ◆ 许多备份工具涉及打开文件        ◆ 但是若一个应用程序已经以独占方式打开文件并进行访问时,备份工具则不能访问...  阅读全文

2020-05-02 16:31 作者: 春秋十二月【评论:0】【阅读:154】 

MySQL和Oracle在日志子系统及热备方面的对比心得

阅读《MySQL Innodb无锁化设计的日志系统》(https://zhuanlan.zhihu.com/p/53037796)后的心得:
与oracle日志子系统异曲同工的差异
 1. 空洞:对于并发会话copy重做日志造成的空洞,oracle是由lgwr判断并等待持有redo copy闩锁的会话释放后,这时空洞已被填充,可以刷到磁盘了;mysql则是由log writer线程监测到空洞被填充后,再写入一段连续最大lsn的日志到磁盘
 2. io方式:oracle的lgwr是direct io;mysql的log writer是写到os的page cache,后由独立的log flusher线程刷盘,比oracle多了一个过程
 3. 唤醒会话:oracle由lgwr扫描所有等待的会话,只唤醒满足写入条件(事务提交log已刷盘)的会话;mysql则由独立的log flush notifier通过满足条件对应的分片消息队列来唤醒,比oracle多了一个过程
总结:mysql通过原子变量来管理全局log buffer的几个内存位置来实现无锁化,而原子操作在多核上仍不利于线性扩展。oracle的闩锁也存在类似问题,但通过私有redo缓存和多个全局log buffer(相关闩锁量与cpu核数正比),来提升了扩展性。故整体上oracle更优

阅读《MySQL/InnoDB数据克隆插件(clone plugin)实现剖析》(https://zhuanlan.zhihu.com/p/76255304)后的心得:
与oracle老式热备异曲同工的差异
 1. page追踪:oracle老式热备实际当每行更新时将整个关联的page记录在redo日志中;mysql热备则是记录变化page的id在单独一个地方,用于page copy阶段从buffer pool读取并发送页数据到备库
 2. redo归档:oracle老式热备在拷贝数据文件的全过程,只要数据文件被修改就会有redo归档;mysql热备则仅在page copy阶段启用redo归档,可看做是临时的
 3. 一致性恢复:oracle老式热备存在数据块分离现象,对此应用被冻结scn及日志序列号后的redo log来恢复;mysql则通过page copy及应用clone lsn后的redo log来恢复
总结:oracle老式热备必须处于归档模式,由于记录整块而非行变化,因此重做日志写放大而增加了cpu和io的开销,由于可能判断并修复分离的块,因此延长了恢复时间;mysql通过page追踪和临时redo归档来减少应用redo的体量而缩短了恢复时间。故mysql热备整体更优,但相对oracle的现代rman备份则并不更优

2020-04-21 11:19 作者: 春秋十二月【评论:0】【阅读:665】 

OpenCASCADE Customize Highlighting

     摘要: OpenCASCADE自定义高亮效果  阅读全文

2020-02-29 15:01 作者: eryar【评论:0】【阅读:4206】 

Qt Python Scriptable Application

     摘要: Abstract. Python and C++ are in many ways as different as two languages could be: while C++ is usually compiled to machine-code, Python is interpreted. Python's dynamic type system is often cited as the foundation of its flexibility, while in C++ static typing is the cornerstone of its efficiency. C++ has an intricate and difficult compile-time meta-language, while in Python, practically everything happens at runtime.

Key Words. Qt, Python, Shiboken2, PySide2  阅读全文

2020-02-24 14:56 作者: eryar【评论:0】【阅读:3001】 

Use Skia in MFC or Win32 application

     摘要: What is Skia Skia is an open source 2D graphics library which provides common APIs that work across a variety of hardware and software platforms. It serves as the graphics engine for Google Chrome ...  阅读全文

2020-02-07 07:53 作者: brent【评论:0】【阅读:860】 

技 术 改 变 世 界

网站分类

统计信息

聚合

Blog客户端API

推荐客户端

博客排行榜[前32人]