- 博客(107)
- 资源 (3)
- 收藏
- 关注
原创 IOS中Object语法的枚举深入理解
--------------------------------- 核心部分 ---------------------------------------------------------这段代码最后的分析就是,为啥typedef对枚举类型UIControlState : NSUInteger的"别名"定义前置了,这个从语法上面没有问题么?如上我们针对于枚举进行了一些常识的复习,对于匿名枚举也有了认识。我们做一个示例,定义一个枚举名称为Test,拥有TestA、TestB等枚举成员的枚举类型。
2024-06-17 02:10:42 747
原创 Unity内存泄露排查实战
这次在一个项目中采用了Unity技术作为客户端开发的核心。在开发完成后释放给到客户的某次体验中,突然发现了放置10分钟后会导致程序直接卡死。于是乎进行了长达2周的排查战役。现将排查分享如下。采用了Unity memory profile工具,两次内存对照,发现有严重的内存泄露情况产生。有关Unity memory profile工具的安装和使用, 大家可以去度娘search,这个几乎一抓一大把跑了30分钟样子,在RenderTexture和Texture2D两个内存对象中,消耗了3.35GB和0.
2021-09-25 13:21:53 5352 1
原创 Unity学习笔记之一
进入了程序员职业生涯的后期,想想自己的编程生涯,从App到系统,到Linuxkernel。语言从Java,C++,C, arm汇编等,也是算玩过了最流行的几种语言了。返回到App的时候,发现目前AR领域中Unity又火了,不得已硬着头皮去学习Unity中的C#。C#是我最不愿意接触的语言,因为在大学,我是Java流派的铁粉。但是,为了生活不得已。 ????。其实,越往后越发现,程序员必须突破编程语言这一关。真正需要重视的是生态和行业,编程的程序是为了解决社会生产力,而社会生产力是需要集大家的力量才能产生
2021-08-02 23:45:49 255
原创 C++11中Lambda表达式的理解
今日准备着手在C++11多线程编程,在网上找的教程里面看到这么一句话:“线程函数不仅支持普通函数,还可以是类的成员函数和lambda表达式”早上在看《C++程序设计语言(第四部分:标准库)》中就看到了N次,原本想先写个示例,等以后有时间在来理解。没有想到在一次看到了lambda表达式,看来不得不提前准备去理解这个概念了。 从百度百科里面开到lambda表达式的叙述:【【“L...
2019-02-12 13:45:42 1215
原创 C++ Const 初步总结(《C++程序设计语言》读后感)
工作已经进入到了11年的工龄了。在我这个年龄大部分人都去做管理岗位了。对于我来说, 还是忠于编程,编程就是我的兴趣爱好。干一行就爱一行。开始学习C++的基础知识。在看《C++程序设计语言》的时候,看到引用这章节的介绍时,里面有这么一段代码:template<class T>class vector { T* elem; // ...public: ...
2019-01-24 15:27:46 1780 2
转载 Linux slab basic introduce
伙伴系统算法采用页作为基本内存区,这适合于大块内存的请求。对于小内存区的申请,比如说几十或几百个字节,我们用slab机制。Slab分配器把对象分组放进高速缓存。每个高速缓存都是同类型对象的一种“储备”。包含高速缓存的主内存区被划分为多个slab,每个slab由一个OR多个连续的页组成,这些页中既包含已分配的对象,也包含空闲的对象。1,cache对象管理器Cache对象管理器为kme
2015-10-05 02:26:17 272
原创 Linux的might_sleep()
might_sleep(): 指示当前函数可以睡眠。如果它所在的函数处于原子上下文(atomic context)中(如,spinlock, irq-handler…),将打印出堆栈的回溯信息。这个函数主要用来做调试工作,在你不确定不期望睡眠的地方是否真的不会睡眠时,就把这个宏加进去。 来自于: http://blog.csdn.net/arethe/article/details/60...
2013-05-03 10:43:07 685
原创 Linux cpu核心代码set_bit的实现分析
在arm系统中,对cpu核的设计。使用了位技术变量来代表每个cpu的使用情况。但是这里考虑到多核对同一变量的设置,因为有了多核访问,于是乎就需要防止冲突的机制。真样产生了特殊情况的操作位接口--> macro bitop, name, instr。使用汇编的形式来完成。主要的技术,是arm arch6中的strex, ldrex。 STREX指令的英文解释如下:STR...
2013-05-02 16:52:29 811
原创 汇编指令状态寄存器访问指令(MRS,MSR)
ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器。每个位的含义如下图: 分成了4部分:1,条件标志位N(Negative), Z(Zero), C(Carry), V(Verflow)统称为条件标志位。ARM指令可以根据CPSR中的这些条件标志位来选择性的执行。2,Q标志位ARM v5的E系列处理...
2013-03-10 23:02:14 1747
原创 从Linux代码反思整形以及无符号整形变量的知识
从Linux代码反思整形以及无符号整形变量的知识 今日,在分析Linux调度器的过程中。在sched.c中的init_cfs_rq中,看到了如下一条奇怪的赋值语句。 static void init_cfs_rq(struct cfs_rq *cfs_rq, struct rq *rq){ cfs_rq->tasks_timeline = RB_ROOT;...
2013-03-06 22:18:38 208
原创 ubuntu11.04配置nfs--解决mount.nfs: access denied问题
总算通过了nfs的localhost测试。 配置很简单,下面摘自网络,并且整理下: 1 安装nfs#apt-get install nfs-kernel-server#apt-get install nfs-common 2 配置/etc/exports在文本末添加#/root/nfs_root *(rw,sync,no_root_squash)#chm...
2011-09-18 07:57:40 636
原创 Ubuntu 11.04配置tftp的辛酸历史
最近买了块mini2440的开发板。打算使用kgdb来调试下内核。于是乎开始配置tftp,搜索了众多网址。发现没有一个是可以成功的。没有附带上ubuntu的版本不同需要的tftp的配置也不同。好不容易在http://blog.chinaunix.net/space.php?uid=24810608&do=blog&id=159447找到了解决方案。 同时,非常感...
2011-09-14 06:18:14 160
原创 ARM汇编中LDR与LTORG的关系
看了arm汇编语言语法一个多月了。总算入门了。当然还有很多东西值得继续努力推敲滴。 最近对LDR与LTORG有了一些新的认识。 LDR是一个比较复制的指令。作用是从存储器到寄存器的单一数据读取指令。它有19条指令格式。其中有两条格式为宏指令(macro),格式如下:1,LDR<cond><type>Rd,<label>2,LDR<...
2011-06-12 13:07:11 427
原创 由于GNU Make中文手册触发深入理解sed
最近由于要分析Uboot的代码。于是乎,再一次开始复习《GNU Make中文手册》()第一次看这本手册是在快一年前的事情了,当时是啥都不懂。一头雾水。 这次细细品味的时候,发现收获颇多。建议初学者去多看看。 今天看到 《4.14 自动产生依赖》的时候,一段代码在一次让我郁闷了。同样的地方,同样的不理解。今天偶就要好好揭开这个惑! 代码如下:1 %.d: %....
2011-05-16 19:22:43 162
ARM汇编学习资料的一些链接
1 GNU ARM 汇编快速入门,http://blog.chinaunix.net/u/31996/showart.php?id=3261462 ARM GNU 汇编伪指令简介,http://www.cppblog.com/jb8164/archive/2008/01/22/41661.aspx3 GNU汇编使用经验,http://blog.chinaunix.net/u1/37...
2011-05-08 08:43:31 161
原创 学习linux内核的神级书籍
有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验。首先是5本久经考验的神作。《Linux内核设计与实现》 简称LKD,从入门开始,介绍了诸如进程管理、系统调用、中断和中断处理程序、内核同步、时间管理、内存管理、地址空间、调试技术等方面,内容比较浅显易懂,个人认为是内核新人首先必读的书籍。新人得有此书,足矣! 《深入理解Linux内核》...
2011-03-16 16:38:48 234
原创 如何区分“总线地址”与“物理地址”
今天在看《Linux设备驱动程序》里面的第十五章“内存映射和DMA”里面的一大堆地址类型弄得我云里去雾里来的。 如:用户虚拟地址物理地址总线地址内核逻辑地址内核虚拟地址linux这个操作系统真是事情多啊,地址都搞这么多名堂的。我以前对地址的理解就是:逻辑地址:相对于进程4G空间来说的,为了隔离物理地址与程序直接交互,减轻程序员的负担。通过段映射,页映射可...
2011-03-11 15:41:50 1258
原创 再次理解C语言的变参
实在是令我很郁闷的事啊。去年用了两天的时间恶补了一下变参,今天看到变参。发现头脑一篇空白,啥都不知道了。 古人有云:温故而知新。今日我就在看一遍,做个笔记了。 在C语言中,函数参数的传递方式有值传和址传.值传是把实参的一个专用的、临时的复制值给被调函数中相应的形参被调用函数使用、修改这个传来的复制值,不会影响实参的值.址传则是把变量...
2011-03-09 20:01:00 218
原创 再次理解offsetof的实现原理
offsetof的原型为:size_t offsetof(type, member); DESCRIPTION The macro offsetof() returns the offset of the field member from the start of the structure type. This macro ...
2011-03-09 14:30:02 559
原创 有关mmap
近日,一直忙于android的研究。好久没有记录点什么了今天在分析binder的时候,看到了一个函数,mmap, 这个函数以前看过很多遍,但是没有一次真正去深入了解它, 今天就开始深入了解一下了。 以下来自于网络:-------------------------Linux提供了内存映射函数mmap, 它把文件内容映射到一段内存上(准确说是虚拟内存上), 通过对这段内...
2010-11-21 23:00:54 146
原创 Linux文件权限管理的肤浅理解
最近正在转向Linux的环境开发。装了一个openSUSE。呵呵,是我最敬仰的Boss热爱的Linux版本。So我打算在该平台上搭建android源代码开发平台。 研究Linux内核将近半年了,玩linux Os也有1年。但都是陆陆续续的进行。 今天就碰到了一个很基础的问题。在安装gnupg的时候,进入目录!发现里面的文件有各种颜色,如何来区分文件的属性以及是否可执行呢。 ...
2010-06-23 18:50:11 117
原创 Linux编程 sockaddr_in sockaddr in_addr详解。
#include<stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <netdb.h>#include <sys/types.h>#include <netinet/in.h>#incl
2010-06-21 22:31:28 258
__int64 类型(VC中)与long long 型(gcc中,C99标准)(转)
int64 是有符号 64 位整数数据类型,也就是 C# 中的 long 和 SQL Server 中的 bigint,范围为 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807),存储空间占 8 字节。用于整数值可能超过 int 数据类型支持范围的情况。 c#中:Int64 值类型表示值介于 -9,...
2010-04-01 14:13:41 164
VMware上跑Hello,World操作系统
这真是令人兴奋的一件事情。 哈哈, 在去年的时候就打算开始研究linux内核。苦于公司的事情繁忙。 今天终于入门了。 在这里偶把偶的经历分享一下吧! 1温故而知新先温习一下汇编语言,当然这个是一个苦活!我是温习了一下《IBM-PC汇编语言程序设计》 2了解操作系统基础概念我推荐一本电子书,《自己动手写操作系统》。这本书写的真的不错。如果谁需要,可以发...
2010-04-01 00:50:16 714 1
C++调用约定和名字约定
__cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容: 1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。 1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈, 2、_cdecl是C和C+...
2010-03-27 07:38:57 79
VCard 通信薄格式说明
最在网络上面查找关于vcard格式的技术资料,发现中文的资料很少,只能阅读vCard MIME Directory Profile(rfc-2426) 翻译它需要花太多的时间,现在把自己的理解做下记录,希望对大家有帮助 VCard 数据格式的标识符是VCARDl 预定义的值类型:uri, date, date-time, floatl ...
2010-03-24 00:48:25 843
交叉编译器
在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行...
2010-03-21 13:22:48 117
C++中引用与指针的区别
最近一个礼拜,都在进行SDL的研究,感觉这个东西还不错。 我入门的课程就是Uvi Studio写的一本入门书, 还写的不错。不过可惜的是他里面的技术采用的是C++语言。 对我这个外行来说就有点困难了, 整整花了一个礼拜才把上面的技术点都看完了。 不过也只是表面的理解, C++的确是一门博大的技术。 这里我对引用与指针区别就很是不明白了。 首先, 我从汇编的层...
2010-03-13 12:25:07 120
原创 VMware上安装Fedora 12的流程
最近公司一直很忙,所以都好久没有开始写Blog了。今天看到我的Blog访问量居然有上万。还真的着实大吃一惊,这样更加激起了我写Blog的激情了。o(∩_∩)o...! 我会努力, 为大家奉上写好的文章!同时让我们一起进步吧! OK,为什么我会选择这个话题呢? 主要是我今年的目标是写一个自己的操作系统。而这方面linux是最好的材料,但是偶以前的开发都是在window os上...
2010-02-22 00:25:07 196
原创 Ant path 匹配原则
路径匹配原则(Path Matching) Spring MVC中的路径匹配要比标准的web.xml要灵活的多。默认的策略实现了 org.springframework.util.AntPathMatcher,就像名字提示的那样,路径模式是使用了Apache Ant的样式路径,Apache Ant样式的路径有三种通配符匹配方法(在下面的表格中列出)这些可以组合出很多种灵活的路径模式Tabl...
2009-11-15 23:49:28 81
原创 CreateFileMapping和MapViewOfFile函数用法
在开发软件过程里,也经常碰到进程间共享数据的需求。比如A进程创建计算数据,B进程进行显示数据的图形。这样的开发方式可以把一个大程序分开成独立的小程序,提高软件的成功率,也可以更加适合团队一起开发,加快软件的开发速度。下面就来使用文件映射的方式进行共享数据。先要使用函数CreateFileMapping来创建一个想共享的文件数据句柄,然后使用MapViewOfFile来获取共享的内存地址,然后使用O...
2009-10-01 15:51:36 246
原创 LPSTR、LPCSTR、LPTSTR和LPCTSTR的意义及区别
1、ANSI(即MBCS):为多字节字符集,它是不定长表示世界文字的编码方式。ANSI表示英文字母时就和ASCII一样,但表示其他文字时就需要用多字节。2、Unicode:用两个字节表示一个字符的编码方式。比如字符'A'在ASCII下面用一个字节表示,而在Unicode下面用两个字节表示,其中高字节用“0”填充;函数'程'在ASCII下面用两个字节表示,而在Unicode下面也是用...
2009-10-01 15:33:32 688
原创 Java中的字符集编码入门(二)
需要再一次强调的是,无论历史上的UCS还是现如今的Unicode,两者指的都是编码字符集,而不是字符集编码。花费一点时间来理解好这件事,然后你会发现对所有网页的,系统的,编码标准之间的来回转换等等繁杂事务都会思路清晰,手到擒来。 首先说说最一般意义上的字符集。 一个抽象字符集其实就是指字符的集合,例如所有的英文字母是一个抽象字符集,所有的汉字是一个抽象字符集,当然,把全世界所有...
2009-08-17 11:04:59 112
原创 Java中的字符集编码入门1
如果你是JVM的设计者,让你来决定JVM中所有字符的表示形式,你会不会允许使用各种编码方式的字符并存?我想你的答案是不会,如果在内存中的Java字符可以以GB2312,UTF-16,BIG5等各种编码形式存在,那么对开发者来说,连进行最基本的字符串打印、连接等操作都会寸步难行。例如一个GB2312的字符串后面连接一个UTF-8的字符串,那么连接后的最终结果应该是什么编码的呢?你选哪一个都没有道理。...
2009-08-17 11:01:54 175
原创 String,StringBuffer ,StringBuilder类型区别
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字...
2009-08-16 00:14:53 107
原创 Java Lint 工具
Java Lint 工具 Stephen Suen Copyright (c) 2005 Stephen Suen. All rights reserved. 如果你在编译 Java 程序时,碰到类似"注意: 要了解详细信息,请使用 -Xlint:deprecation 重新编译"这样的提示,而且你对选项 -Xlint 感到困惑的话,本文或许会带给你一些有趣且有用的信息。 本文的最新版...
2009-08-14 11:20:55 868
原创 String的深入分析
java.lang.String类对大家来说最熟悉不过了,我们写java程序很少能不用String的。本文讲述如何正确的使用String,内容主要涉及初始化、串联和比较等操作。 首先我们必须清楚的一点是String类是final类型的,因此你不可以继承这个类、不能修改这个类。我们使用String的时候非常简单,通常都是String s = "hello",但是Java API中同时提...
2009-08-04 08:47:34 101
<init>与<clinit>的区别
今天在看深入Java虚拟机的class文件结构时,看到了这么一句话,可能出现在class文件中的两种编译器产生的方法是:实例初始化方法(名为<init>)和类与接口初始化方法(名为<clinit>)。 这两种方法有什么区别呢?首先:这两个方法一个是虚拟机在装载一个类初始化的时候调用的(clinit)。另一个是在类实例化时调用的(init) 首先说说类...
2009-07-28 00:19:06 203
原创 Java Class文件解析
定义:u1 1个字节为单位的非负值u2 2个字节为单位的非负值u3 . . . . . . . . (其他以此类推 )Java文件结构用类似struct的描述如下:ClassFile {u4 magic; // 必须为: 0xCAFEBABEu2 minor_version;u2 major_version; //CLASS文件结构主次版本号 JAVA2支持45.0-46.0u2 constant...
2009-07-27 17:27:54 138
Object中的wait(), notify(), notifyAll()的自己一些看法
昨天下班, 我回来后。由于没有钥匙,于是先到一个待就业的学弟那里做了一下。首先我们谈了一下最近的就业环境。后来他就像我问了一个Java基础方面的问题。 Object对象中有那些方法?呵呵,还别说, 对于这些基础知识本人还是很有信息的。 但是结果还是差强人意。少说了两个方法equals(), clone(); 一说起clone(),前不久在公司写的一个nativ...
2009-07-25 23:36:55 91
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人