自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(109)
  • 资源 (1)
  • 收藏
  • 关注

转载 从程序员角度深入计算机系统的底层 CPU的运行环、特权级与保护

可能你凭借直觉就知道应用程序的功能受到了Intel x86计算机的某种限制,有些特定的任务只有操作系统的代码才可以完成,但是你知道这到底是怎么一回事吗?在这篇文章里,我们会接触到x86的特权级(privilege level),看看操作系统和CPU是怎么一起合谋来限制用户模式的应用程序的。特权级总共有4个,编号从0(最高特权)到3(最低特权)。有3种主要的资源受到保护:内存,I/O端口以及

2013-07-18 20:56:09 526

转载 从程序员角度深入计算机系统的底层 内存地址转换与分段

本文是Intel兼容计算机(x86)的内存与保护系列文章的第一篇,延续了启动引导系列文章的主题,进一步分析操作系统内核的工作流程。与以前一样,我将引用Linux内核的源代码,但对Windows只给出示例(抱歉,我忽略了BSD,Mac等系统,但大部分的讨论对它们一样适用)。文中如果有错误,请不吝赐教。在支持Intel的主板芯片组上,CPU对内存的访问是通过连接着CPU和北桥芯片的前端总线来完

2013-07-18 20:35:24 343

转载 从程序员角度深入计算机系统的底层 内核引导过程

上一篇文章解释了计算机的引导过程,正好讲到引导装载程序把系统内核镜像塞进内存,准备跳转到内核入口点去执行的时刻。作为引导启动系列文章的最后一篇,就让我们深入内核,去看看操作系统是怎么启动的吧。由于我习惯以事实为依据讨论问题,所以文中会出现大量的链接引用Linux 内核2.6.25.6版的源代码(源自Linux Cross Reference)。如果你熟悉C的语法,这些代码就会非常容易读懂;即使

2013-07-18 20:31:38 418

转载 从程序员角度深入计算机系统的底层 计算机的引导过程

前一篇文章介绍了Intel计算机的主板与内存映射,从而为本文设定了一个系统引导阶段的场景。引导(Booting)是一个复杂的,充满技巧的,涉及多个阶段,又十分有趣的过程。下图列出了此过程的概要:引导过程概要当你按下计算机的电源键后(现在别按!),机器就开始运转了。一旦主板上电,它就会初始化自身的固件(firmware)——芯片组和其他零零碎碎的东

2013-07-18 20:30:14 300

转载 从程序员角度深入计算机系统的底层 一主板芯片组与内存映射

我打算写一组讲述计算机内幕的文章,旨在揭示现代操作系统内核的工作原理。我希望这些文章能对电脑爱好者和程序员有所帮助,特别是对这类话题感兴趣但没有相关知识的人们。讨论的焦点是Linux,Windows,和Intel处理器。钻研系统内幕是我的一个爱好。我曾经编写过不少内核模式的代码,只是最近一段时间不再写了。这第一篇文章讲述了现代Intel主板的布局,CPU如何访问内存,以及系统的内存映射。

2013-07-18 20:27:08 321

转载 使用 Lua 编写可嵌入式脚本

虽然编译性编程语言和脚本语言各自具有自己独特的优点,但是如果我们使用这两种类型的语言来编写大型的应用程序会是什么样子呢?Lua 是一种嵌入式脚本语言,它非常小,速度很快,功能却非常强大。在创建其他配置文件或资源格式(以及与之对应的解析器)之前,请尝试一下 Lua。尽管诸如 Perl、Python、PHP 和 Ruby 之类的解释性编程语言日益被 Web 应用程序广泛地采纳 —— 它们已经长

2013-07-07 19:03:29 286

转载 Lua 语言和C集成调研小结

1. Lua的特点Lua 是一个小巧的脚本语言。作者是巴西人。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。它的主页是 www.lua.org。Lua最著名的应用是在暴雪公司的网络游戏WOW中。Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,

2013-07-07 19:00:57 249

原创 LUA语法笔记

lua 是个小巧的脚本语言,但缺乏强大的库的支持,一般配合C/C++等宿主语言,不单独使用。一 环境    下载安装后,将lua主目录添加入环境变量比如LUA_HOME = f:\Program Files (x86)\Lua\5.1,启动控制台,输入lua,能进入lua控制台.第一个lua脚本,  新建一个文本文件,输入print("hello world")     然后保存为he

2013-07-05 15:55:39 94

原创 lua简单教程

lua 是个小巧的脚本语言,但缺乏强大的库的支持,一般配合C/C++等宿主语言,不单独使用。一 环境    下载安装后,将lua主目录添加入环境变量比如LUA_HOME = f:\Program Files (x86)\Lua\5.1,启动控制台,输入lua,能进入lua控制台.第一个lua脚本,  新建一个文本文件,输入print("hello world")     然后保存为he

2013-07-05 15:41:52 179

原创 lua简单教程

lua 是个小巧的脚本语言,但缺乏强大的库的支持,一般配合C/C++等宿主语言,不单独使用。一 环境    下载安装后,将lua主目录添加入环境变量比如LUA_HOME = f:\Program Files (x86)\Lua\5.1,启动控制台,输入lua,能进入lua控制台.第一个lua脚本,  新建一个文本文件,输入print("hello world")     然后保存为he

2013-07-05 12:49:29 141

转载 C语言获取当前系统时间的几种方式

C语言中如何获取时间?精度如何?1 使用time_t time( time_t * timer ) 精确到秒2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒3 计算时间差使用double difftime( time_t timer1, time_t timer0 )4 使用DWORD GetTickCount()

2013-07-05 12:07:56 3720

转载 C语言函数clock()

C语言函数clock()  功 能: 返回处理器调用某个进程或函数所花费的时间。  用 法: clock_t clock(void);  说明:clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件

2013-07-05 12:05:25 1440

转载 关于Debug和Release之本质区别的讨论

关于Debug和Release之本质区别的讨论 一、Debug 和 Release 编译方式的本质区别     Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。     Debug 和 Release 的真正秘密,在于一组编译选

2013-06-23 23:18:56 194

转载 C++中获取当前文件名和行数

C++中获取当前文件名和行数__FILE__当前文件名 __LINE__当前所在行数在特定的位置向日志中写入当前行号和文件名,以判断对应代码是否被执行到,可以使用下面的宏:                 #ifdef   _DEBUG                 #define   TRACE_FILE_LINE_INFO()   do{\

2013-06-23 15:04:27 944

转载 2013年或将是游戏微主机的时代

我们已经知道了Ouya(基于安卓4.0的开源游戏主机系统),当然,Valve将会为Steam制造一款专用设备的传说也已经散布了好一阵了。这条传说在本周终于以“活塞”(Piston)的代号浮出水面,而NVIDIA也宣布了一款名为Shield形似PS Vita,本身可以同时兼作游戏机和外设的游戏掌机。同时,我们还不应当忘记Gamestick,一款由Playjam公司开发的USB大小的主机,

2013-06-22 19:52:07 214

转载 用ODBC访问Excel

分类: WINDOWS////////////////////////////////////////////////////////////////////////////////名称:OnReadexcel//功能:从Excel文件中读取相应数据并显示出来//作者:徐景周(jingzhou_xu@163.net)//组织:未来工作室(Future Studi

2013-06-21 22:58:52 233

转载 github for Windows使用介绍

Git已经变得非常流行,连Codeplex现在也已经主推Git。Github上更是充斥着各种高质量的开源项目,比如ruby on rails,cocos2d等等。对于习惯Windows图形界面的程序员来讲,Github的使用是需要点时间和耐心的,然而最近Github发布了Github for Windows 则大大降低了学习成本和使用难度,他甚至比SVN都简单,好吧,你不信,我们来一步一步

2013-06-18 23:00:49 2184

转载 一个游戏团队的惨败教训:错误连着错误

编者按:这是一家游戏创业公司用两年时间换来的惨痛教训,在他们重新启程之际,天使投资人曾李青给他们布下了“命题作文”:为什么第一次创业会失败?这个创业团队犯的错误,可能是很多人都犯过的,也就是说,并不缺少前车之鉴,他们在创业之初也想到了,但为什么悲剧会继续上演?这是值得所有创业者思考的问题。文/德迅系某创业者我现在知道一个企业都是从小长到大的,别着急,而且创业大概有一年半到两年是瓶颈

2013-06-10 14:27:05 258

转载 Socket编程中select()的妙用

用过 WinSock API 网友们知道:WinSock 编程中有一很方便的地方便是其  息驱动机制,不管是底层 API 的 WSAAsyncSelect() 还是 MFC 的异步Socket类:  CAsyncSocket,都提供了诸如 FD_ACCEPT、FD_READ、FD_CLOSE 之类的消息  供编程人员捕捉并处理。FD_ACCEPT 通知进程有客户方Socket请求连接,

2013-06-01 21:21:48 226

翻译 Unity与本地库交互

介绍 公共语言基础设施(CLI)的目的是使它“容易”与现有代码进行互操作。原则上,所有您需要做的就是创建一个函数声明DllImport为现有的代码来调用,运行时将处理其余的。例如: [DllImport("libc.so")] privatestaticexternint getpid ();请注意,大多数的类和枚举提到在这个文档保存在System.Runt

2013-05-26 17:50:09 925

转载 jni jstring 、char* 类型的转换

jni jstring 、char* 类型的转换//jstring to char*char* jstringTostring(JNIEnv* env, jstring jstr){        char* rtn = NULL;jclass clsstring = env->FindClass("java/lang/String");jstring strenc

2013-05-25 19:17:53 209

转载 Java 方法映射到C中的签名

Java 方法映射到C中的签名       刚接触JNI 的 兄弟在看一些demo的时候 发现有类似与“([Ljava/lang/String;)V”的东西的时候肯定会很“蛋疼”,完全不懂这是啥东西,怎么来的,有啥用处?       今天就讲讲这个“蛋疼”的东西把,俗称 方法签名 直接来个Demo 把 : 观察下面四个方法对应的签名       public void

2013-05-25 18:53:36 224

转载 C++字符串函数详解

void *memset(void *dest, int c, size_t count); 将dest前面count个字符置为字符c.返回dest的值.void *memmove(void *dest, const void *src, size_t count);从src复制count字节的字符到dest. 如果src和dest出现重叠, 函数会自动处理.返

2013-05-25 17:45:05 238

原创 Unity3d调用C++DLL

1 用VS2008创建一个项目:UnityDllTest2 选控制台应用程序, 附加选项为空项目创建udll_add.h和udll_add.cpp两文件内容如下:udll_add.cpp#include "udll_add.h"#include #include int add(int x, int y){ return x+y;}udll_add.h#ifndef UNIT

2013-05-25 15:26:51 1747

转载 关于U3d内置寻路

官方翻译http://game.ceeger.com/Components/class-NavMeshAgent.htmlhttp://game.ceeger.com/Components/comp-AIGroup.htmlhttp://game.ceeger.com/Components/class-OffMeshLink.html和U3D以前大多数的优化组件类似,Nav也需要在设置

2013-05-17 23:23:00 577

转载 Unity3D占用内存太大怎么解决

最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化.Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。 Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时

2013-05-16 17:15:25 702

转载 Unity3D fbx动画

在官方提供的例子里,可以找到主角的fbx文件.(win7下是默认是这样的C:\Users\Public\Documents\Unity Projects\AngryBots\Assets\Objects\Player\Player.FBX),将此文件放到自己的Assets文件夹下,Unity3D中的Project面板会将其刷新出来,但是如下图所示,动作信息是没有经过分割的.一定要注意,不要选择

2013-05-09 13:50:42 401

转载 HttpURLConnection学习

最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。在Java中可以使用HttpURLConnection发起这两种请求,了解此类,对于了解soap,和编写servlet的自动测试代码都有很大的帮助。下面的代码简单描述了

2013-04-30 21:59:54 191

转载 Android中的Layout_weight详解

以前一直没弄懂Layout_weight是什么意思,自己写代码测试也出来了不同的情况,最近看了一篇帖子感觉分析的很好,转贴出来学习下。布局文件是:http://schemas.android.com/apk/res/android"    android:orientation="horizontal"    android:layout_width="fill_parent"

2013-04-20 16:00:51 198

转载 gcc/g++参数详解

gcc/g++参数详解2009-02-18 16:21这 篇文档是我的关于gcc参数的笔记,我很怀念dos年代我用小本子,纪录所有的dos 命令的参数.哈哈,下面的东西可能也不是很全面,我参考了很多的书,和gcc的帮助.不全的原因是,有可能我还没有看到这个参数,另一种原因是,我可能还 不会用它 不过,我会慢慢的补齐的.哈哈 如果你要转在本文章请保留我email(pianopan@b

2013-01-13 19:49:05 199

转载 c++编译器和连接器介绍

有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后,或许会有一些答案。    首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studio,

2012-08-12 18:43:22 326

转载 定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP 界面

引言  Java 自从 1995 年发布以来,其图形界面一直为世人所诟病。无论是早期的 AWT,还是后来的 Swing 应用程序不能像本地应用程序一样执行,外观也不一样,响应的速度也不快。SWT 吸收了 AWT 和 Swing 实现的最好的部分 : 当可以得到本地组件时调用本地实现,当不能得到本地组件时使用 Java 实现。这就同时保证了与本地窗口部件相当的外观,又提高了响应速度。

2012-05-25 16:34:46 75

转载 Oracle时间加减

加法  select sysdate,add_months(sysdate,12) from dual;        --加1年  select sysdate,add_months(sysdate,1) from dual;        --加1月  select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') f

2012-04-01 16:54:26 1363

转载 _stdcall _cdecl fastcall 调用方式详解

在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递

2012-03-22 12:04:15 206

转载 _cdecl、_stdcall、_fastcall和_thiscall整理

_cdecl、_stdcall、_fastcall和_thiscall整理    1._cdecl是C Declaration的缩写,表示C语言默认的函数调用方法:所有参数 从右到左依次入栈,这些参数由调用者清除,称为手动清栈(由调用者把参数弹出栈)。对于传送参数的内存栈是由调用者来维护的(正因为如此,实现可变参数的函数只能使用该调用约定)。被调用函数无需要求调用者传递多少参数,调用者

2012-03-22 11:54:52 247

转载 有关游戏模拟器

写在前面:最近公司在做GBA的模拟器,顺便找了点资料研究了一下。提起模拟器,爱好者们一定会想到NeoRAGEx、MAME, N64等著名游戏机的模拟器。在这些模拟器上可以模拟一些功能强大的街机板,可以让我们在自己的PC上免费玩街机的游戏。想起当初数着钱买游戏币的日子,真是一个天堂一个人间啊。玩着让人热血沸腾的游戏的时候,你是否想过这些模拟器是怎样开发出来的?你是否了想解这些模拟器的运行原理

2012-03-09 10:34:11 518

转载 利用Java Compiler API 来编译

(本文翻译自Core Java Technology Tech Tips for April 2007 )起 初,标准java平台没有提供标准的接口来调用其自身的编译器生成Java字节码。在sun提供的平台实现上,用户可以通过一个非标准的 com.sun.tools.javac包来编译自己的代码。但是这个包并不能提供标准的、开放的编程借口。使用其他java平台实现的用户不能访问这个 类。使用j

2012-02-16 00:52:23 539

转载 Tomcat下配置连接池

Tomcat下配置连接池4.1连接池知识简介总所周知建立数据库连接是一个非常耗时耗资源的行为,因此现代的Web中间件,无论是开源的Tomcat、 Jboss还是商业的websphere、weblogic都提供了数据库连接池功能,可以毫不夸张的说,数据库连接池性能的好坏,不同厂商对连接池有着 不同的实现,本文只介绍拜特公司使用较多的开源web中间件Tomcat中默认的连接池DBCP(Data

2012-01-17 12:50:44 253

原创 IE的相关问题整理

1、IE6/7的setAttribute设置属性的BUG,  属性名和W3C标准不一样,常见的如下左边为标准游览器的,右边是IE的。varIEfix = { acceptcharset:"acceptCharset", accesskey:"accessKey", allowtransparency:"allowTransparency", bgcolor:"bgC

2011-12-30 15:14:43 182

原创 JavaScript类的定义和引用

JavaScript类的定义和引用一,概述在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类、 Hashtable类等等。目前在Javascript中,已经存在一些标准的类,例如Date、Array、RegExp、String、Math、Number等等,这为我们编程提供了许多方便。但对于复杂的客户端

2011-12-21 18:13:27 181

unity3d开发的FPS

Unity3d开发的小游戏,#pragma strict //巡逻范围 var patrolRadius = 200; var currentTarget : Transform; //路径点 var wayPoints : Transform[]; var attackRadius = 5; var currentWayPoint : Transform; var findWayTime = 5; var lastTime = 0; //bot状态 var botState : Person; //攻击是否结束 var attackEnd = true; private var bot : GameObject; private var nga : NavMeshAgent; private var anima : Animation; function Start () { //取得AI对象 bot = transform.gameObject; botState = GetComponent(Person); nga = GetComponent(NavMeshAgent); //初始化动画 anima = bot.transform.Find("girl").transform.animation; //设置动画速度 anima["Run00"].speed = 2.0; anima["Attack"].speed = 2.0; if(currentTarget != null){ nga.SetDestination(currentTarget.position); } } function Update () { if(currentTarget == null){ nga.Stop(true); }else{ if(botState.Life > 0){ //必须在攻击结束后才能恢复其它动作 if(attackEnd == true){ if(GetTargetDistance()>3){ nga.SetDestination(currentTarget.position); nga.Resume(); anima.CrossFade("Run00",0.3); }else{ nga.Stop(true); anima.CrossFade("Attack",0.3); //1秒后执行攻击函数 Invoke("Attack",0.6); //攻击状态未完成 attackEnd = false; } } } } } function move(){ } function Attack(){ if(currentTarget != null){ var player : CharacterState = currentTarget.GetComponent("CharacterState"); player.ApplyDamage(5); } //攻击状态已完成 attackEnd = true; } function GetTargetDistance(){ return Vector3.Distance(bot.transform.position,currentTarget.transform.position ); } function findWay(){ } function Death(){ //停止追踪目标 nga.Stop(true); }

2013-05-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除