暂无个人介绍
搞了几个月的Android应用开发,勉强算是个Android开发者了吧,Android本就是开源的,还是把源代码下载下来自己编译一下,看看是个什么东西,出于好奇,和以后的职业发展,开始了无休止的Android研究过程。
为了方便我们每个人的学习,这里将给出Linux Shell高级技巧五篇系列博客的目录以供大家在需要时参阅和查找。 Linux Shell高级技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/12/22/2271167.
对计算机方面课程有兴趣的同学推荐报名参加斯坦福大学全球计算机方面公开课,只需要填个邮箱报名即可。公开课的老师都是很牛的老师,在课上能学到不少东西,并且一般最后会有个以老师个人名义发的证书。刚过去的这学期我参加了Andrew Ng老师的 Machine Learning 这门课,收获很大,课上有老师的讲课视频,看完视频有一些小的题目来巩固知识,另外还有编程练习,因为大部分程序老师已设计好,学生只需完成核心部分,因此也不用花太多时间(我每周大概花2~3个小时),但能掌握核心知识点。
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
在阅读文章前,您应该具备基本的存储器层次结构知识,至少要了解局部性原理。要详细了解cache基本原理,可以参考本书《深入理解计算机系统》中存储器体系结构一章: 带着疑问来看文章,cache对于程序员是不可见的,它完全是由硬件控制的,为什么在linux内核中还有cache.h这个头文件,定义了一些关于cache的结构? 1. cache概述 cache,中译名高速缓冲存储器,其作用是为了更好的利用局部性原理,减少CPU访问主存的次数。
我们的图片大部分都是可以转换成base64编码的data:image。 这个在将canvas保存为img的时候尤其有用。虽然除ie外,大部分现代浏览器都已经支持原生的基于base64的encode和decode,例如btoa和atob。
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。具体的介绍网上有很详细的描述,如闲聊哈希表 ,这里就不再累述了; 哈希表在像Java、C#等语言中是与生俱来的。
背景: 在做XXX编译器检证时经常需要区分是代码端错误,还是编译器端错误,因此对代码进行调试是必不可少的。但是狗日的甲方并没有提供对应的调试器XXXDB,而用GDB调试XXX生成的可执行程序很不稳定,经常出现异常,干脆自己动手,写mini调试器,顺便学习一下开发一个调试器到底需要哪些知识。
上一章解决了嵌入式Linux的“学什么”问题,这一章则具体来说一下“怎么学”。 只要做好以下3点: 1.学习顺序。学习任何东西都应该由浅入深,不能一口吃下一个大胖子,得循序渐进。很多刚开始想学习Linux内核开发的人,第一件事就是抱着内核的书使劲的啃,以为自己会一点C语言了就一定能看懂,甚至有的人连一些基本的Linux命令都不会,就急急忙忙的赶工。
分享一些我在Ubuntu下常用的软件。 Goolge Chrome/Firefox/Thunderbird这些重量级的跨平台的软件虽然很强大,但大家应该都比较熟悉了,没有太多必要在这里介绍。本文涉及到的软件可能不是那么出名,但都非常出色。
今天看了一个帖子,win7系统通过笔记本的无线网卡,启用虚拟Wifi功能共享上网,自己尝试了一下,感觉很好用,至少没有无线路由的自己,手机可以上wifi了,更新软件玩微信等等,都方便多了,好了,废话不多说,先介绍下吧。
要想学好嵌入式Linux,首先要解决两个重要问题: 1. 学什么? 2. 怎么学? 首先解决第一个问题。 嵌入式Linux的系统架构包括软件和硬件两个部分,如下图: 再来看看一个成熟的嵌入式产品的开发流程是怎么一个过程: 1.
后天就要回老家了,除了团团年估计也没有其他好玩的,就琢磨下点经典文章带回去看看。 Google一番找到了老赵很早以前的文章: http://www.cnblogs.com/JeffreyZhao/archive/2009/03/02/1401259.html 说来惭愧,里面的十余篇文章我只看过一篇,正好就补补知识。
(一)基本概念 sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 (二)使用方法 1、用于数据类型 sizeof使用形式:sizeof(type) ,如sizeof(int) 2、用于变量 sizeof使用形式:sizeof(var_name)或sizeof var_name 变量名可以不用括号括住。
一:C语言中的内存机制 在C语言中,内存主要分为如下5个存储区: (1)栈(Stack):位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效。 (2)堆(Heap):由程序员用malloc/calloc/realloc分配,free释放。
慢启动定义 慢启动,是传输控制协议使用的一种阻塞控制机制。慢启动也叫做指数增长期。慢启动是指每次TCP接收窗口收到确认时都会增长。增加的大小就是已确认段的数目。这种情况一直保持到要么没有收到一些段,要么窗口大小到达预先定义的阈值。
前言 虽然网络编程的socket大家很多都会操作,但是很多还是不熟悉socket编程中,底层TCP/IP协议的交互过程,本文会一个简单的客户端程序和服务端程序的交互过程,使用tcpdump抓包,实例讲解客户端和服务端的TCP/IP交互细节。
网上有很多关于程序员必读的书单,感觉都不是很有代表性。今天无意看到了一篇总结还算不错的书单。和园友们分享。以下书单中提到的书看过一部分,给我的感觉是经典就是经典。读过之后确实得到了很多东西,它们都潜在的影响着我。
博文技术有限,重在学习交流,有错误大家指正。 思路: 传统的方法调用------>委托的出现解决了什么问题---->委托的绑定方法----->总结 1.传统的方法调用 View Code 缺点:100个方法就要调用100次,如果每个人 对方法的需求不一样,就不能很好的处理了。
上一篇主要谈了一些基本理念,本篇将谈谈我个人总结的一些IOCP编程技巧。 网络游戏前端服务器的需求和设计 首先介绍一下这个服务器的技术背景。在分布式网络游戏服务器中,前端连接服务器是一种很常见的设计。
开篇 编写高效的程序并不只在于算法的精巧,还应该考虑到计算机内部的组织结构,cpu微指令的执行,缓存的组织和工作原理等。 好的算法在实际中不见得有高效率,如果完全没有考虑缓存、微指令实现的话。 前两篇博文 局部性原理浅析 介绍了程序的局部性原理,如何写出局部性良好代码。
微软一站式示例代码库2012年2月新代码示例发布。我们发布了8个全新的示例代码,内容包含Windows Azure, Directory Services, Hyper-V, TFS, WDK和Windows SDK等技术。
编写 Windows Socket TCP 客户端其实并不困难,Windows 提供了6种 I/O 通信模型供大家选择。但本座看过很多客户端程序都把 Socket 通信和业务逻辑混在一起,剪不断理还乱。
我的网络编程笔记, 因为最近又要做Linux下的网络编程,故重新修订, 其中一些内容参考了文末的链接及文章 1. 基本概念 2. 基本接口 2.1. 打开一个socket 2.2. 将socket绑定定指定的端口—bind 2.
KM算法的基本概念: http://baike.baidu.com/view/739278.htm http://baike.baidu.com/view/501092.htm 看这个算法之前,最好先看下匈牙利算法,KM算法 是建立在匈牙利算法基础上实现的 对于这个算法最有误区的地方,个人感觉还是在...
引言 “Oops,系统挂死了..." “Oops,程序崩溃了..." “Oops,命令执行报错..." 对于维护人员来说,这样的悲剧每天都在上演。理想情况下,系统或应用程序的错误日志提供了足够全面的信息,通过查看相关日志,维护人员就能很快地定位出问题发生的原因。
文章目录: 1. Demo 效果展示: 2. 进程和端口乱扯淡: 3. 查询进程和端口的 API 的介绍: 4. 根据进程 ID 获得该进程所打开的 TCP 和 UDP 端口: 5.
一、HTTP协议简介 什么是HTTP?全称是HyperText Transfer Protocal,即:超文本传输协议,从1990年开始就在WWW上广泛应用,是现今在WWW上应用最多的协议,目前版本是1.1。
要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常声明一个变量: int a; string s; 其实就...
写这篇博客源于在阅读lighttpd源代码是遇到的一个关于assert应用的疑问。 在阅读lighttpd源代码时,发现比比皆是的对malloc的调用结果进行assert检查,比如:Buffer.c: buffer* buffer_init(void) { buffer *b; b ...
我们曾经在讨论C++的时候,经常会问到:“虚函数能被声明为内联吗?”现在,我们几乎听不到这个问题了。现在听到的是:“你不应该使print成为内联的。声明一个虚函数为内联是错误的!” 这种说法的两个主要的原因是(1)虚函数是在运行期决议而内联是一个编译期动作,所以,我们将虚函数声明为内联并得不到什么效果;(2)声明一个虚函数为内联导致了函数的多分拷贝,而且我们为一个不应该在任何时候内联的函数白白花费了存储空间。
(一)基本概念 结构体是一个或是多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组合在一个名字之下。我们将关键字struct引入了结构声明中。结构声明包含在花括号内的一系列声明组成。
一、简介: SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。
tcp/ip网络通讯安全是一个广受关注的话题,现在也有一些基于tcp/ip加密技术标准如SSL,TLS等。但很多时候编写一些简单的网络通讯把这标准加密应用添加进来乎一下子把程序变得复杂了,而实现自己的加密算法那就更加不可取;其实通过一些现有的加密的技术应用完全可以实现即简单又安全的网络通讯程序。
设计概述 服务端通信组件的设计是一项非常严谨的工作,其中性能、伸缩性和稳定性是必须考虑的硬性质量指标,若要把组件设计为通用组件提供给多种已知或未知的上层应用使用,则设计的难度更会大大增加,通用性、可用性和灵活性必须考虑在内。
写在前面:出于项目的需要,最近打算对SQLite的内核进行一个完整的剖析,在此希望和对SQLite有兴趣的一起交流。我知道,这是一个漫长的过程,就像曾经去读Linux内核一样,这个过程也将是辛苦的,但我相信结果一定是美好的... ...接下来是第一章。
Linux网络核心数据结构是套接字缓存(socket buffer),简称skb。它代表一个要发送或处理的报文,并贯穿于整个协议栈。1、 套接字缓存skb由两部分组成:(1) 报文数据:它保存了实际在网络中传输的数据;(2) 管理数据:供内核处理报文的额外数据,这些数据构成了协议之间交换的控制信息。
3、套接字的实现套接字最先是在UNIX的BSD版本实现的,所以也叫做BSD套接字,它隐藏了各个协议之间的差异,并向上提供统一的接口。Linux中实现套接字的基本结构:3.1、BSD套接字3.1.1、核心数据结构为了实现BSD套接字,内核提供一个重要的数据结构struct socket,它的定义如下: //BSD套接字(include/linux/net.
1、TCP/IP参考模型为了实现各种网络的互连,国际标准化组织(ISO)制定了开放式系统互连(OSI)参考模型。尽管OSI的体系结构从理论上讲是比较完整的,但实际上,完全符合OSI各层协议的商用产品却很少进入市场。
网络设备(network device)是内核对网络适配器(硬件)的抽象与封装,并为各个协议实例提供统一的接口,它是硬件与内核的接口,它有两个特征:(1) 作为基于硬件的网络适配器与基于软件的协议之间的接口;(2) 内核协议栈异步输入输出点。
2.1、网络设备的注册与注销注册网络设备发生在下列情形: (1)加载网卡驱动程序 网卡驱动程序如果被编译进内核,则它在启动时被初始化,在运行时被作为模块加载。无论初始化是否发生,所以由驱动程序控制的网卡都被注册。
第一部分 编程模型 1、服务器编程模型 关于server编程模型,大师stevens在他的《UNP》一书中已经做了详细论述,这里不再重复,这里主要讲一下我的一些理解。 从线程的角度,可以分为两类,一是单线程,一是多线程。
2、协议相关2.1、第3层协议的管理在Linux内核中,有两种不同目的的3层协议:(1) ptype_all管理的协议主要用于分析目的,它接收所有到达第3层协议的数据包。(2) ptype_base管理正常的3层协议,仅接收具有正确协议标志符的数据包,例如,Internet的0x0800。
对于服务器程序,I/O是制约系统性能最关键的因素。对于需要处理大量连接的高并发服务器程序,异步I/O几乎是不二的选择。Linux和Windows都为异步I/O构建了大量的基础设施。本文总结了一下Linux和Windows下的异步I/O模型,并给出了一些使用这些模型的例子。
Free 我们经常用free查看服务器的内存使用情况,而free中的输出却有些让人困惑,如下: 图1-1 先看看各个数字的意义以及如何计算得到: free命令输出的第二行(Mem):这行分别显示了物理内存的总量(total)、已使用的 (used)、空闲的(free)、共享的(shared)、buffer(buffer大小)、 cache(cache的大小)的内存。
在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化、我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题。因此这段时间总结的有关Linux Shell的系列博客就给予了我极大的帮助,然而在实际的使用中却发现,有的时候确实忘记了某个技术点或某个Shell命令的使用方式曾经在哪一篇博客中予以了说明,所以不得不多次点击多篇博客,直到找到想要那篇的为止,鉴于此,为了方便我们每个人的查阅,这里特别给出了前十二篇系列博客的目录以供大家参阅和查找。
curl-loader介绍 curl-loader(也被称为“omes-NIK”和“davilka”)是一个开源的C语言编写的工具,模拟应用负载和成千上万的几十万人的HTTP / HTTPS和FTP/ FTPS的客户端应用程序的行为,每个有其自己的源IP地址。
近来文章被踩的厉害,我只想把自己从马哥学的知识自己总结下发到博客里,但是没想到昨天一篇文章刚发一上午被踩了9次。。。如果您真的觉得我的文章很烂,请告诉我原因,不胜感激。 这星期,马哥讲了关于Linux内核的编译和Linux的内核模块,浅显易懂,所以写出来和大家一起分享学习成果。
CDN是互联网中使用较频繁的一种技术。你也许常听人说:“我们的网站使用了CDN技术”,但可能他们对CDN的了解并不多,也许只局限于--用了以后网站访问速度会变快。 其实,CDN的原理非常简单。当浏览器请求一资源时,第一步是做DNS解析,DNS解析就像是从通讯录根据姓名找号码,浏览器发送域名,然后得到DNS服务器返回的IP地址。
2.1 U-Boot Makefile分析 2.1.1 U-Boot编译命令 对于mini2440开发板,编译U-Boot需要执行如下的命令: $ make mini2440_config $ make all 使用上面的命令编译U-Boot,编译生成的所有文件都保存在源代码目录中。