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

nginx-openresty-windows 改造支持,提升性能,开源

     摘要:   阅读全文

2015-05-22 13:45 作者: 蔡东赟【评论:0】【阅读:58】 

Use Qt in Debian for OpenCASCADE

     摘要: Use Qt in Debian for OpenCASCADE eryar@163.com Recently several OpenCASCADE enthusiasts want to build my simple Qt demo about OpenCASCADE on ubuntu system, but could not compile it successfully. Becau...  阅读全文

2015-05-21 22:10 作者: eryar【评论:0】【阅读:91】 

现代OpenGL教程 01 - 入门指南

     摘要: http://huangwei.pro/2015-05/modern-opengl1/ modern-opengl 译序 早前学OpenGL的时候还是1.x版本,用的都是glVertex,glNormal等固定管线API。后来工作需要接触DirectX9,shader也只是可选项而已,跟固定管线一起混用着。现在工作内容是手机游戏,又转到OpenGL ES,发现OpenGL的世界已经完...  阅读全文

2015-05-21 14:11 作者: 威士忌【评论:1】【阅读:188】 

Linux ICMP消息的产生与转换

     摘要:    ICMP在IP系统间传递差错和管理报文,是任何IP系统必须实现的组成部分。Linux 2.6.34中ICMP模块的实现在linux/icmp.h,net/icmp.h和ipv4/icmp.c中,导出了icmp_err_convert数组和icmp_send函数,供其它网络子系统使用。在其它网络子系统中,当检测到错误时,调用icmp_send产生并发送相应的ICMP差错消息...  阅读全文

2015-05-18 19:52 作者: 春秋十二月【评论:0】【阅读:319】 

无锁有序链表的实现

     摘要: 无锁有序链表可以保证元素的唯一性,使其可用于哈希表的桶,甚至直接作为一个效率不那么高的map。普通链表的无锁实现相对简单点,因为插入元素可以在表头插,而有序链表的插入则是任意位置。 本文主要基于论文High Performance Dynamic Lock-Free Hash Tables实现。 主要问题 链表的主要操作包含insert和remove,先简单实现一个版本,就会看到...  阅读全文

2015-05-05 19:47 作者: Kevin Lynx【评论:0】【阅读:887】 

操作系统实现(三):中断

     摘要: 上一篇提到当访问的页表和页不在内存中时会触发 Page Fault 异常,操作系统需要在异常处理函数中分配内存页并设置好相应的分页表项。异常是一种中断类型,注册异常处理函数就是注册中断处理函数,中断处理函数注册在一个叫 IDT(Interrupt Descriptor Table) 的地方。IDT中断处理函数在实模式下注册在 IVT(Interrput Vector Table) 中,在保护模式下...  阅读全文

2015-05-05 10:03 作者: airtrack【评论:0】【阅读:425】 

AVEVA RvmTranslator

     摘要: AVEVA RvmTranslator eryar@163.com AVEVA的RVM文件格式包含了三维模型数据及其他信息,可用于工厂模型的浏览、评审等。常见的三维浏览及评审软件如Autodesk的Navisworks、Intergraph的评审软件SmartPlant Review Publisher等,都提供了对RVM格式的支持。 AVEVA的RVM格式分为两种:文本格式的和二进制格式的。因...  阅读全文

2015-05-04 20:13 作者: eryar【评论:0】【阅读:432】 

并行编程中的内存回收Hazard Pointer

     摘要: 接上篇使用RCU技术实现读写线程无锁,在没有GC机制的语言中,要实现Lock free的算法,就免不了要自己处理内存回收的问题。 Hazard Pointer是另一种处理这个问题的算法,而且相比起来不但简单,功能也很强大。锁无关的数据结构与Hazard指针中讲得很好,Wikipedia Hazard pointer也描述得比较清楚,所以我这里就不讲那么细了。 一个简单的实现可以参考我的...  阅读全文

2015-05-03 20:46 作者: Kevin Lynx【评论:0】【阅读:498】 

Linux套接字与虚拟文件系统(2):操作和销毁

     摘要:    接上篇初始化与创建,本篇阐述Socket操作和销毁两部分的实现。 Socket操作    系统调用read(v)、write(v)是用户空间读写socket的一种方法,为了弄清楚它们是怎么通过VFS将请求转发到特定协议的实现,下面以read为例(write同理),并假定文件描述符对应的是IPv4 TCP类型的socket...  阅读全文

2015-05-03 15:37 作者: 春秋十二月【评论:0】【阅读:499】 

Linux套接字与虚拟文件系统(1):初始化和创建

     摘要: 引言    在Unix的世界里,万物皆文件,通过虚拟文件系统VFS,程序可以用标准的Unix系统调用对不同的文件系统,甚至不同介质上的文件系统进行读写操作。对于网络套接字socket也是如此,除了专属的Berkeley Sockets API,还支持一些标准的文件IO系统调用如read(v)、write(v)和close等。那么为什么socket也支持文件IO系统调...  阅读全文

2015-05-03 15:16 作者: 春秋十二月【评论:0】【阅读:758】 

Unity3d 的ui处理

     这几天接手了项目逻辑部分,发现ui这部分有些问题,也花了点时间处理。
     项目中ui主要是通过两种方式处理的,一、 通过AE插件导出数据直接使用; 二、通过NGUI。
     AE插件的好处是减轻了程序的负担,美术也方便,直接在AE上做好动画就可以了。但是有个问题就是AE的动画都是缺少交互,在上面不能写脚本代码,比如有些动画可以划分背景是一个Ae做的动画,在前面是得分显示,这样的话就不能全部用AE 只能把前面的数字用NGUI来做。这样一来问题就出现了,排序问题!!!!
    看其代码发现AE插件的渲染部分通过z位置来排序,并且为每一个原始图片一个新的材质,并且还要为其开个灯光,并无优化处理。 而ngui 可以通过控制渲染顺序和拼图达到一点的优化,减少批次,其排序并不与位置z有关系。所以他们的前后关系不是随随便便设置个z来决定的。

解决方法:
      一、通过多摄像机,分为AE层,和NGUI层用不同的摄像机。这样是可以控制前后关系。但是这样有时往往两个ui的摄像机都不够使用,并且添加太多摄像机也添加了管理的麻烦,比如做镜头的淡入淡出等等。
      二、修改AE插件中的渲染部分,让其使用NGUI的组件来做渲染。这样就好比把在不同坐标系的两者搬到同一坐标了,这样就好处理排序问题了。

最终,为了优化和以后的方便,加上Ae插件本身也bug,所以决定使用第二中方法解决。其修改也还比较容易,不拼图的用UITexture(开发过程中不拼图, 大图如背景图也不拼),拼图了的用UISprite作为渲染载体。主要注意2D的锚点位置,特别是裁了空白边拼图后描点的位置的变化,ae层次结构关系,ae合成内部的depth的设置等等。


2015-04-27 21:28 作者: 木华【评论:0】【阅读:363】 

自控力读书笔记

     摘要: 附上URL:http://book.douban.com/subject/10786473/1,锻炼意志力的方法A,每天冥想5分钟B,锻炼对于锻炼有两个常见问题,第一个是“需要锻炼多久”,第二个是“什么锻炼最有效”,这两个问题的答案是“你想锻炼多久”,“你真的会去做什么样的锻炼”C,睡眠睡足觉能显著提高...  阅读全文

2015-04-27 15:34 作者: whspecial【评论:0】【阅读:636】 

操作系统实现(二):分页和物理内存管理

     摘要: 上一篇从 Bootloader 开始到内核载入使用的都是平坦内存,即所有地址对应实际的物理地址。现代操作系统都使用分页来管理内存,分页可以让每个进程都有完整的虚拟地址空间,进程间的虚拟地址空间相互隔离以提供页层级的保护。另外分页可以让物理内存少于虚拟地址空间,同时可以使用磁盘存储暂时未使用的内存页,提供更多的「内存」。分页分页通过 CPU 的 MMU(Memory Management Unit)...  阅读全文

2015-04-27 12:53 作者: airtrack【评论:0】【阅读:480】 

OpenCASCADE PCurve of Topological Face

     摘要: OpenCASCADE PCurve of Topological Face eryar@163.com Abstract. OpenCASCADE provides a class BRepBuilderAPI_MakeFace to build topological faces. A face maybe built from a surface, elementary surface fr...  阅读全文

2015-04-25 12:22 作者: eryar【评论:0】【阅读:418】 

PDMS RvmTranslator

     摘要: PDMS RvmTranslator eryar@163.com Abstract. AVEVA Review is used for 3D model visualisation for plant or ship design, construction and operation. The RVM file is main input of AVEVA Review. RvmTranslat...  阅读全文

2015-04-22 22:37 作者: eryar【评论:4】【阅读:652】 

测试SESSION分配与浏览器的关系

     摘要: 测试目的:测试SESSION分配与浏览器的关系   测试代码:   pasting@RequestMapping(value ={"index.html"})public String index2(HttpServletRequest request,ModelMap model) { String remoteIp = UserAddrUtils.getRem...  阅读全文

2015-04-21 11:14 作者: 长寿梦【评论:0】【阅读:582】 

使用RCU技术实现读写线程无锁

     摘要: 在一个系统中有一个写线程和若干个读线程,读写线程通过一个指针共用了一个数据结构,写线程改写这个结构,读线程读取该结构。在写线程改写这个数据结构的过程中,加锁情况下读线程由于等待锁耗时会增加。 可以利用RCU (Read Copy Update What is rcu)的思想来去除这个锁。本文提到的主要实现代码:gist RCU RCU可以说是一种替代读写锁的方法。其基于一个事实:...  阅读全文

2015-04-19 19:10 作者: Kevin Lynx【评论:2】【阅读:783】 

std::fstream 中文路径

     摘要: std::fstream 中文路径 eryar@163.com 用C++来开发管道出图程序IsoAlgo时,当PCF文件名中包含中文时,读取文件会失败。将下面数据存成一个简单文件:中文.txt  放到目标目录中来测试: Figure 1 包含中文的文件 简单测试程序代码如下所示: Code highlighting produced by Actipro CodeHighlighter...  阅读全文

2015-04-14 19:47 作者: eryar【评论:0】【阅读:694】 

SPRING : Handle JSON and Image object in One Request

     摘要:     代码这里~Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->    @RequestMapping(value = "/req", method = Req...  阅读全文

2015-04-13 23:53 作者: codejie【评论:0】【阅读:654】 

mongodb的测试报告

     摘要:             注意:测试方法或者推算思路,可能有问题,欢迎批评与指正。   Mongodb的版本: 执行命令mongod --version得到   "version" : "3.0.1",&n...  阅读全文

2015-04-13 17:34 作者: 长寿梦【评论:0】【阅读:656】 

mongodb的主从测试与复制集测试的实验(附带测试的配置文件)

     摘要: 1.mongodb 的版本  v3.0.1  2.mongodb的用户权限分配//创建超级管理用户use admindb.createUser(  {    user:"superuser",    pwd:"superuser@nMhU3x",    roles:["root"]  })...  阅读全文

2015-04-13 17:27 作者: 长寿梦【评论:0】【阅读:595】 

Unity3d 预设之嵌套

     由于一些原因,需要对一些预设进行修改,发现由于我们游戏中预设是有层级关系的,比如美术会完成一些基本预设,策划再通过这些基本预设编辑成一个更大的预设。这样预设就有了一种嵌套关系了。比如预设A有个子节点a。(其中 A,a 都是预设)
     我之前的理解(错误)是预设是链接关系,也就是当a预设变化了,那么A预设也跟着变化。但是发现情况不是这样的,A预设中的a已经和a源预设没有关系了。修改源预设a并不影响A预设中a。那只能理解成当在编辑预设A的时候,就已经吧a是一个拷贝了与源断开了联系。
     那这样我就不能通过修改基本预设来改变上层预设了(除非重新编辑上层预设,但是在后期是不可能的)。但这由于是游戏开发,需求的改动还是蛮频繁的。
     我的解决方法是:1 、在一开始时或不要有嵌套关联这种概念(并不是说不要编辑这种预设关系,而是不要想着能修改基本的,就把上层的也能修改好),把修改多的(涉及到逻辑的东西)剥离开来。
                            2、不改变基本预设,而是把要添加的东西作为另一Component挂上去。(如果是要修改的话,这可能就不行了)
                            3、自己通过基本的预设名,或其他id,把上层预设重新生成(这也就是和人肉重新编辑一次差不多,但是是通过代码实现)。

2015-04-11 10:20 作者: 木华【评论:0】【阅读:637】 

Unity3d 坑1

   今天想对预设进行数据的设置和修改,但不想把预设拖来出来修改后再次保存成预设。
   但在过程中发现unity3d 对prefabs进行操作,通过GetComponentsInChildren(false),是获取不到的,必须是对一个预设Instance后才能获取到。后来发现是由于预设的Componets都是active 是 false。需要用GetComponentsInChildren(true)才能正常! 看不到实现,一点点坑都花了些时间去处理。

2015-04-07 20:46 作者: 木华【评论:0】【阅读:785】 

记一次tcmalloc分配内存引起的coredump

     摘要: 现象 线上的服务出现coredump,堆栈为: #0 0x000000000045d145 in GetStackTrace(void**, int, int) () #1 0x000000000045ec22 in tcmalloc::PageHeap::GrowHeap(unsigned long) () #2 0x000000000045eeb3 in tcmalloc...  阅读全文

2015-04-06 18:33 作者: Kevin Lynx【评论:2】【阅读:1080】 

cocos2dx之坐标系详解

     摘要: cocos2dx坐标系与笛卡尔坐标系简而言之,cocos2dx的2d中的坐标系与我们初中所学的笛卡尔坐标系一样。也就是向右为X正轴,向上为Y正轴。在屏幕中,其原点位于屏幕的左下方。屏幕坐标系屏幕坐标系的Y正轴是向下,X正轴不变。原点位于左上方。World Coordinate与Node LocalWorld Coordinate == > 世界坐标系、绝对坐标系Node Local == &...  阅读全文

2015-04-06 01:53 作者: swp【评论:0】【阅读:733】 

cocos2dx之调度器(Scheduler)

     摘要: cocos2dx调度器的类图路上所示,调度器继承自Ref类,该类实现了内存的自动管理机制。我们先看一下官方文档的介绍,一下是引用官方文档,到-----线为止。原理介绍Cocos2d-x调度器为游戏提供定时事件和定时调用服务。所有Node对象都知道如何调度和取消调度事件,使用调度器有几个好处:每当Node不再可见或已从场景中移除时,调度器会停止。Cocos2d-x暂停时,调度器也会停止。当Cocos...  阅读全文

2015-04-06 00:57 作者: swp【评论:0】【阅读:598】 

寻找 重头开始

决定去寻找自由发挥的地方。
这些年为了生活压制自己在这样的地方,忍受种种

今年要任性,任性一回,找地方重头开始

2015-03-29 12:35 作者: 蔡东赟【评论:1】【阅读:1131】 

Getting Started with PostgreSQL

     摘要: Getting Started with PostgreSQL eryar@163.com Abstract. PostgreSQL is an excellent implementation of relational database, fully featured, open source, and free to use. Nearly nontrivial computer appli...  阅读全文

2015-03-28 12:56 作者: eryar【评论:0】【阅读:993】 

golang的time.Format的坑

golang的time.Format设计的和其他语言都不一样, 其他语言总是使用一些格式化字符进行标示, 而golang呢, 查了网上一些坑例子 自己查了下golang的源码, 发现以下代码// String returns the time formatted using the format string // "2006-01-02 15:04:05.999999999 -0700 MST" func (t Time) String() string { return t.Format("2006-01-02 15:04:05.999999999 -0700 MST") }

尝试将2006-01-02 15:04:05写入到自己的例子中func nowTime() string { return time.Now().Format("2006-01-02 15:04:05") }

结果返回正确. 询问了下, 据说这个日期是golang诞生的日子… 咋那么自恋呢…

2015-03-26 17:23 作者: 战魂小筑【评论:0】【阅读:836】 

OpenCV : build with Maven on Spring

     摘要:     为了赶时髦,准备把OpenCV的操作通过WebService的方式Deploy出去,因此做了如下的事情:    1. download opencv zip package;    2. download cmake source zip;    3. download ant binary package;&...  阅读全文

2015-03-24 22:13 作者: codejie【评论:0】【阅读:950】 

技 术 改 变 世 界

网站分类

24小时内最热随笔

统计信息

聚合

Blog客户端API

推荐客户端

博客排行榜[前100人]