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

IsoAlgo Symbols

     摘要: IsoAlgo Symbolseryar@163.com Key Words. IsoAlgo, ISO, PCF, IDF, 管道轴测图 1. Introduction管道轴测图(ISO图)是管道制作安装所需的重要图纸,其中管件符号是固定大小,管子长度可变的一种非比例投影的出图形式。目前国际出图标准程序是Intergraph的ISOGEN,鉴于ISOGEN是生成管道...  阅读全文

2020-08-10 20:47 作者: eryar【评论:0】【阅读:54】 

PBR in OCCT 3D Viewer

     摘要: Forthcoming OCCT 7.5.0 release extends its real-time rendering engine with a PBR (physically-based rendering) mode. OCCT implements PBR metal-roughness material workflow described by core glTF 2....  阅读全文

2020-07-19 08:53 作者: eryar【评论:0】【阅读:301】 

BRep Builder

     摘要: BRep Builder eryar@163.com   1 Introduction 类BRep_Builder提供了创建、修改BRep模型的方法。使用这个类,你可以从底层自己构建BRep体,前提条件是你要对BRep模型的数据结构有一定理解。边界表示法BRep的重点在边界的定义,打开BRep_Builder的类图:   可以看到其中重载了很多UpdateEdge函...  阅读全文

2020-06-16 11:04 作者: eryar【评论:0】【阅读:906】 

PipeCAD之管道标准库PipeStd(4)

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

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

Oracle数据类型Number的解析实现

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

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

origin游戏服务器引擎介绍

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

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

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】【阅读:587】 

RvmTranslator7.3

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

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

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

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

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

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

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

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

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】【阅读:1554】 

技 术 改 变 世 界

网站分类

统计信息

聚合

Blog客户端API

推荐客户端

博客排行榜[前26人]