自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BPC's Domain

A Geek's Perspective On Life...

  • 博客(156)
  • 资源 (4)
  • 收藏
  • 关注

转载 Arduino的图形化开发环境: ArduBlock

转载自http://youngmakers.cn/groups/articles/54f9466b9835fed6656d4dd6ArduBlock是一款为Arduino设计的开源图形化编程软件,由上海新车间创客开发。使用ArduBlock可以以图形化积木搭建的方式编程的,这样的方式会使编程的可视化和交互性加强,编程门槛降低,即使没有编程经验的人特别是程序入门的小朋友也可以尝试给Ardui

2015-03-06 15:58:18 11222

转载 Linux下的利器——supervise

supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程序。本文简单介绍一下supervise的安装和使用。一、      安装创建 /pacakage目录(你可 supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在

2014-10-14 16:50:51 2397

转载 使用pypi镜像源加速第三方库在线安装

用easy_install和pip来安装第三方库很方便它们的原理其实就是从Python的官方源pypi.python.org/pypi 下载到本地,然后解包安装。不过因为某些原因,访问官方的pypi不稳定,很慢甚至访问不了。跟ubuntu的apt和centos的yum有各个镜像源一样,pypi也有。在国内的强烈推荐豆瓣的源http://pypi.douban.com/simpl

2014-03-28 21:39:09 1356

转载 Python-转换距1970年的秒数为可读的时间格式

情景:程序获得了一个距1970.1.1的秒数,假设为“1355028714.92” 。这个长长的秒数看着是不是有些头大?于是乎就想办法将这个秒数转换成可读的时间格式,当然转换的方法是很多的,下面列出一个比较简单方便的转换方法--通过Python转换。1.在控制台下输入:python[python] view plaincopy

2014-01-27 14:41:30 2362

转载 机器学习中的相似性度量

在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。  本文的目的就是对常用的相似性度量作一个总结。本文目录:1. 欧氏距离2. 曼哈顿距离3. 切比雪夫距离4. 闵可夫斯基距离5. 标准化欧氏距

2014-01-05 17:14:46 843

转载 Nginx 基础篇(序)---转发代理服务器与反向代理服务器

说到代理服务器,大部分人都应该比较熟悉了。记得在学校的时候因为校园网无法访问国外网站,因此经常使用代理来访问国外的网站。但是提到反向代理服务器可能大部分人就比较陌生,对于一般的代理服务器与反向代理服务器的区别估计也不是那么清楚。    因工作需要就研究了一下,搞清了是怎么回事,这里做个笔记,也为大家所共享。    代理服务器通常分为两类,即转发代理(forward proxy)服务

2013-12-28 15:32:10 1176

转载 Linux——bash shell 使用技巧

使用GNU/Linux系统使用bash是家常便饭,知道一些bash常用的快捷键就显得非常有必要,bash快捷键大全Ctrl-A 相当于HOME键,用于将光标定位到本行最前面,回到命令行开始,UNIX上只能用这个组合键Ctrl-E 相当于End键,即将光标移动到本行末尾,转到命令行尾,UNIX上同样只能使用这个组合键Ctrl-B 相当于左箭头键,用于将光标向左移动一格Ctrl-F 相

2013-12-04 09:56:19 935

转载 python 根据类名实例化对象

方法一:class obj(object):       pass  a = eval('obj()')方法二:如果是经常需要这样可以#将用来创建对象的字符串预编译成code对象.create_obj = compile('obj()', 'create_obj.py', 'eval') #需要创建的时候, 直接用code

2013-12-03 12:01:31 13160

原创 python笔记

一、char ASCII>>> ord('s')115>>> chr(115)s二、进制转换>>> int('100',2)4>>> bin(8)           #oct    hex'0b1000'

2013-11-12 19:47:39 710

转载 卡塔兰数

卡塔兰数规定C0=1而C1=1,C2=2,C3=5,C4=14,C5=42,C6=132,C7=429,C8=1430,C9=4862,C10=16796,C11=58786,C12=208012,C13=742900,C14=2674440,C15=9694845·········································卡塔兰数的一般项公式

2013-10-27 15:54:22 724

转载 一些常见的概率生成器的题目

1. 百度的一个面试题目:.已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器, 使得它构造0和1的概率均为1/2;构造一个发生器,使得它构造1、2、3的概率均为1/3;…, 构造一个发生器,使得它构造1、2、3、…n的概率均为1/n,要求复杂度最低。初看确实有点头晕,也没什么思路。但是仔细想想为什么生成0和1的概率均为1/2,我们可以看成是生

2013-10-17 17:46:00 2887

转载 全排列生成算法

recursive generating这个算法接受一个元素均不同的数组,通过递归的调用以生成所有全排列序列。递归的原则在于,生成序列的全排列P(a1,a2,…,an)等价于生成序列…这构成了递归算法设计的deduction-case;而base-case,则是要生成全排列的序列只有一个元素。整个算法大致上可以如下实现:

2013-10-17 10:58:31 681

转载 最近共同父结点(LCA,Least Common Ancestor)

给定一棵二叉搜索树中两个节点的值,找到它们的最近共同祖先。假定两个节点都在树中,比如如图4和14的最近共同节点是8。1、通用解决方案:建立两个链表分别保存两个节点的祖先,然后逐个比较这两个链表,找到第一个不同的节点,这个节点之前的那个节点就是最近共同祖先。2、本方案:检查当前节点;如果value1和value2都小于当前节点的值,检查它的左子节点;如果value1和valu

2013-10-16 10:15:08 1391

转载 中断线屏蔽与禁用什么区别?

总结自http://bbs.chinaunix.net/thread-3628928-1-1.html基本上每个CPU在其关键控制寄存器有一位用于控制中断enable/disable中断禁用,就是把这个bit disable;如果这一bit被清掉了,整个系统中断就不可能发生中断控制器里有个寄存器叫中断屏蔽寄存器MASK;基本上每一个中断源在MASK寄存器里有一个屏蔽位;如果

2013-10-10 13:24:34 3656

转载 求两个链表的第一个节点

参考编程之美的第三章 234页。如果离链表有环的话,有环的节点肯定是共同的节点,通过标志位找环的节点或者通过链长度n以及循环的第n+1个节点肯定是第一个节点,然后用这个节点在第二个链中去遍历。 剑指offer上的193页,面试题37方法2:标记已经访问的节点 首先对每个节点添加一个标志位bVisited,表示这个节点有没有被访问过,初始为fals

2013-10-09 17:27:53 627

转载 内核中的原子上下文

内核的一个基本原则就是:在中断或者说原子上下文中,内核不能访问用户空间,而且内核是不能睡眠的。也就是说在这种情况下,内核是不能调用有可能引起睡眠的任何函数。一般来讲原子上下文指的是在中断或软中断中,以及在持有自旋锁的时候。内核提供了四个宏来判断是否处于这几种情况里:#define in_irq() (hardirq_count()) //在处理硬中断中#define in_sof

2013-10-09 09:59:56 753

转载 schedule调用相关整理

1 schedule的调用时机×××正常情况下进程上下文中的直接调用schedule(),就会尝试着进行上下文切换。比如:int down_interruptible(struct semaphore *sem)copy_from_user(to, from, n)--------只能在用户上下文中调用.×××抢占式的调用schedule()。比如:在中断里面返回时

2013-10-08 21:18:05 1126

转载 mmap详解

内存映射,简而言之就是将内核空间的一段内存区域映射到用户空间。映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,相反,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间与用户空间两者之间需要大量数据传输等操作的话效率是非常高的。当然,也可以将内核空间的一段内存区域同时映射到多个进程,这样还可以实现进程间的共享内存通信。系统调用mmap()就是用来实现上面说的内存映射。最

2013-10-08 13:23:59 1349

转载 二叉树集锦

1. 求二叉树第K层的节点个数递归解法:(1)如果二叉树为空或者k(2)如果二叉树不为空并且k==1,返回1(3)如果二叉树不为空且k>1,返回左子树中k-1层的节点个数与右子树k-1层节点个数之和参考代码如下:[cpp] view plaincopyint GetNodeNumKthLevel(BinaryTreeNode *

2013-09-29 20:32:19 1190

转载 为什么中断上下文不可以休眠

先把中断处理流程给出来1.进入中断处理程序--->2.保存关键上下文---->3.开中断(sti指令)--->4.进入中断处理程序的handler--->5.关中断(cli指令)---->6.写EOI寄存器(表示中断处理完成)---->7.开中断。复制代码硬中断:对应于上图的1、2、3步骤,在这几个步骤中,所有中断是被屏蔽的,如果在这个时候睡眠了,操作系统不

2013-09-24 22:08:21 1410

转载 自旋锁的实现

(1) linux上的自旋锁有三种实现:          1. 在单cpu,不可抢占内核中,自旋锁为空操作。          2. 在单cpu,可抢占内核中,自旋锁实现为“禁止内核抢占”,并不实现“自旋”。          3. 在多cpu,可抢占内核中,自旋锁实现为“禁止内核抢占” + “自旋”。(2) 关于抢占式内核与非抢占式内核:          在非抢占式内核中

2013-09-24 21:52:33 1059

转载 IRQ line number vs Interrupt vector number

On the mainbord we have an interrupt controller (IRC) which acts as a multiplexer between the devices which can raise an interrupt and the CPU: |--------| |----

2013-09-11 18:57:04 2004

转载 linux字符设备驱动总结之:全自动创建设备及节点

/***************************************************************************************************                         linux字符设备驱动总结之:全自动创建设备及节点看了LDD3,深入浅出LDD,以及各个博文,还是需要总结下的。张永辉 2012年10月9

2013-09-08 21:46:43 624

转载 class_create() & device_create

本章节将介绍 class_create class_destroy 使用下一章介绍“device_create device_destroy 使用==mknod及通过class_create自动创建设备节点”========================================================================struct cla

2013-09-08 21:13:38 1242

转载 dev、devfs、 udev和sysfs之间的关系

一、/dev存储的是linux可以认识的所有的文件设备名,无论这个设备有没有在系统里。为了解决/dev目录过大的问题,就 产生了devfs,但devfs是基因内核的,有很多无法解决的问题(参考前面的文章),所以就出现了udev。而udev对设备在/dev目录下的命名 依赖于sysfs所提供的规则信息,这些规则信息由用户提供。sysfs是在2.6内核时加进linux内核的。sysfs就是我们系统加载

2013-09-08 20:58:59 1923

转载 linux中的 IO端口映射和IO内存映射

CPU地址空间(一)地址的概念1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上 (如显存、BIOS等)。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。        物理地址空间,一部分给物理RAM(内存)用,一部分给总线用,这是由硬件设计来

2013-09-08 19:56:22 6143

转载 Why Memory Barrier?

要了解如何使用memory barrier,最好的方法是明白它为什么存在。CPU硬件设计为了提高指令的执行速度,增设了两个缓冲区(store buffer, invalidate queue)。这个两个缓冲区可以避免CPU在某些情况下进行不必要的等待,从而提高速度,但是这两个缓冲区的存在也同时带来了新的问题。要仔细分析这个问题需要先了解cache的工作方式。目前CPU的cache的

2013-09-08 16:26:45 573

转载 对Linux内核中进程上下文和中断上下文的理解

作者:杨硕,华清远见嵌入式学院讲师。内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间。现代的CPU都具有不同的操作模式,代表不同的级别,不同的级别具有不同的功能,在较低的级别中将禁止某些操作。Linux系统设计时利用了这种硬件特性,使用了两个级别,最高级别和最低级别,内核运行在最高级别(内核态),这个级别可以进行所有操作,而应用程序运行在较

2013-09-05 10:06:22 503

转载 klogd和syslogd

我们可以看到LINUX系统信息日志的途径基本有以下2种:1>dmesg查看----这个命令比较常见2>/var/log/下的文件那下面我们就从这个2个途径着手,一步步的走下去.首先,我们来看dmesg这个常见的命令背后隐藏的是什么!!1> 先让我们来MAN一下这个家伙从LINUX提供的手册,我们可以得知一条最重要的信息dmesg是从kerne

2013-08-30 10:57:09 748

转载 SystemServer vs ServiceManager

在Android系统中有很多内置的软件,例如,当手机接到来电时,会显示对方的电话号。也可以根据周围的环境将手机设置成震动或静音。如果想把这些功能加到自己的软件中应该怎么办呢?答案就是“系统服务”。在Android系统中提供了很多这种服务,通过这些服务,就可以像Android系统的内置软件一样随心所欲地控制Android系统了。系统服务(System Services)并非Android开发应用程序

2013-08-18 01:06:36 4088 1

转载 Camera服务之--Service

在camera service这端的结构还是很容易让人迷惑的,我就是看了好久,才缕清楚关系。service这部分包括以下几个头文件:ICamera.h, ICameraService.h, CameraService.h,对应的实现ICamera.cpp, ICameraService.cpp, CameraService.cpp。CameraService中包含了一个内部类Cam

2013-08-16 00:54:55 715

转载 Camera服务之--JNI部分

这一部分主要在/frameworks/base/core/java/android/hardware/Camera.java和/frameworks/base/core/jni/android_hardware_Camera.cpp中实现的。在Camera.java中声明了很多native的方法,这些方法都是在android_hardware_Camera.cpp,通过JNI的方式来调用。

2013-08-16 00:54:30 835

转载 Camera服务之--App

Camera的应用部分代码在/packages/apps/Camera下面,大家可以自己去看一下这部分代码。我主要讲一下几个回调接口和一些我在读代码中遇到的问题。1.回调接口.如果看过了《Camera服务之--Client》这篇文章,就会知道Camera Client端需要提供一些回调方法,给Camera Service用。而Camera Client提供的

2013-08-16 00:53:50 797

转载 Camera服务之--Client

Camera服务分为Client和Server两部分,本文主要分析Client部分。1. Camera Client介绍主要由以下几个文件组成:Camera.h/ Camera.cppICameraClient.h/ IcameraClient.h如图中所示,Camera.class继承自IcameraClient.class。Cam

2013-08-16 00:52:36 716

转载 Camera服务之--架构浅析

一.应用层Camera 的应用层在Android 上表现为直接调用SDK API 开发的一个Camera 应用APK 包。代码在/android/packages/apps/Camera 下。主要对 android.hardware.Camera(在Framework中) 类的调用,并且实现Camera 应用的业务逻辑和UI 显示。一个Android 应用中若要使用这个android.ha

2013-08-16 00:11:08 834

转载 mmap函数使用

UNIX网络编程第二卷进程间通信对mmap函数进行了说明。该函数主要用途有三个:1、将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能;2、将特殊文件进行匿名内存映射,可以为关联进程提供共享内存空间;3、为无关联的进程提供共享内存空间,一般也是将一个普通文件映射到内存中。函数:void *mmap(void *star

2013-07-16 17:56:21 757

转载 Difference between Cache and Buffer

Key difference: A cache transparently stores data so that future requests for that data can be served faster. A buffer, on the other hand, temporarily stores data while the data is the process of mo

2013-07-03 17:28:12 774

转载 使用异步 I/O 大大提高应用程序的性能

使用异步 I/O 大大提高应用程序的性能学习何时以及如何使用 POSIX AIO APIM. Tim Jones ([email protected]), 顾问工程师, Emulex简介: Linux® 中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序

2013-06-27 21:59:36 551

转载 关于Linux Cache与Direct IO

A file is simply a collection of data stored on media. When a process wants to access data from a file, the operating system brings the data into main memory, the process reads it, alters it and store

2013-06-25 20:49:49 1713

原创 exit shell background job got killed?

Feature, of a sort. If you are using a login shell, and if the huponexit shell option is enabled, then all jobs are sent a SIGHUP signal when the shell is exited. cp does not handle this signal, so th

2013-06-24 21:27:43 830

The design of design

Making Sense of Design Effective design is at the heart of everything from software development to engineering to architecture. But what do we really know about the design process? What leads to effective, elegant designs? The Design of Design addresses these questions. These new essays by Fred Brooks contain extraordinary insights for designers in every discipline. Brooks pinpoints constants inherent in all design projects and uncovers processes and patterns likely to lead to excellence. Drawing on conversations with dozens of exceptional designers, as well as his own experiences in several design domains, Brooks observes that bold design decisions lead to better outcomes. The author tracks the evolution of the design process, treats collaborative and distributed design, and illuminates what makes a truly great designer. He examines the nuts and bolts of design processes, including budget constraints of many kinds, aesthetics, design empiricism, and tools, and grounds this discussion in his own real-world examples—case studies ranging from home construction to IBM's Operating System/360. Throughout, Brooks reveals keys to success that every designer, design project manager, and design researcher should know.

2011-08-22

NS中文手册精美版.pdf

当参考书文档不错 ns方面的中文资料太少。。

2010-04-14

Inside the C++ object model

Inside the C++ Object Model focuses on the underlying mechanisms that support object-oriented programming within C++: constructor semantics, temporary generation, support for encapsulation, inheritance, and "the virtuals"-virtual functions and virtual inheritance. This book shows how your understanding the underlying implementation models can help you code more efficiently and with greater confidence. Lippman dispells the misinformation and myths about the overhead and complexity associated with C++, while pointing out areas in which costs and trade offs, sometimes hidden, do exist. He then explains how the various implementation models arose, points out areas in which they are likely to evolve, and why they are what they are. He covers the semantic implications of the C++ object model and how that model affects your programs.

2008-09-10

空空如也

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

TA关注的人

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