- 博客(156)
- 资源 (4)
- 收藏
- 关注
转载 Arduino的图形化开发环境: ArduBlock
转载自http://youngmakers.cn/groups/articles/54f9466b9835fed6656d4dd6ArduBlock是一款为Arduino设计的开源图形化编程软件,由上海新车间创客开发。使用ArduBlock可以以图形化积木搭建的方式编程的,这样的方式会使编程的可视化和交互性加强,编程门槛降低,即使没有编程经验的人特别是程序入门的小朋友也可以尝试给Ardui
2015-03-06 15:58:18 11478
转载 Linux下的利器——supervise
supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程序。本文简单介绍一下supervise的安装和使用。一、 安装创建 /pacakage目录(你可 supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在
2014-10-14 16:50:51 2439
转载 使用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 1385
转载 Python-转换距1970年的秒数为可读的时间格式
情景:程序获得了一个距1970.1.1的秒数,假设为“1355028714.92” 。这个长长的秒数看着是不是有些头大?于是乎就想办法将这个秒数转换成可读的时间格式,当然转换的方法是很多的,下面列出一个比较简单方便的转换方法--通过Python转换。1.在控制台下输入:python[python] view plaincopy
2014-01-27 14:41:30 2402
转载 机器学习中的相似性度量
在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。 本文的目的就是对常用的相似性度量作一个总结。本文目录:1. 欧氏距离2. 曼哈顿距离3. 切比雪夫距离4. 闵可夫斯基距离5. 标准化欧氏距
2014-01-05 17:14:46 869
转载 Nginx 基础篇(序)---转发代理服务器与反向代理服务器
说到代理服务器,大部分人都应该比较熟悉了。记得在学校的时候因为校园网无法访问国外网站,因此经常使用代理来访问国外的网站。但是提到反向代理服务器可能大部分人就比较陌生,对于一般的代理服务器与反向代理服务器的区别估计也不是那么清楚。 因工作需要就研究了一下,搞清了是怎么回事,这里做个笔记,也为大家所共享。 代理服务器通常分为两类,即转发代理(forward proxy)服务
2013-12-28 15:32:10 1283
转载 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 957
转载 python 根据类名实例化对象
方法一:class obj(object): pass a = eval('obj()')方法二:如果是经常需要这样可以#将用来创建对象的字符串预编译成code对象.create_obj = compile('obj()', 'create_obj.py', 'eval') #需要创建的时候, 直接用code
2013-12-03 12:01:31 13238
原创 python笔记
一、char ASCII>>> ord('s')115>>> chr(115)s二、进制转换>>> int('100',2)4>>> bin(8) #oct hex'0b1000'
2013-11-12 19:47:39 728
转载 卡塔兰数
卡塔兰数规定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 749
转载 一些常见的概率生成器的题目
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 2933
转载 全排列生成算法
recursive generating这个算法接受一个元素均不同的数组,通过递归的调用以生成所有全排列序列。递归的原则在于,生成序列的全排列P(a1,a2,…,an)等价于生成序列…这构成了递归算法设计的deduction-case;而base-case,则是要生成全排列的序列只有一个元素。整个算法大致上可以如下实现:
2013-10-17 10:58:31 706
转载 最近共同父结点(LCA,Least Common Ancestor)
给定一棵二叉搜索树中两个节点的值,找到它们的最近共同祖先。假定两个节点都在树中,比如如图4和14的最近共同节点是8。1、通用解决方案:建立两个链表分别保存两个节点的祖先,然后逐个比较这两个链表,找到第一个不同的节点,这个节点之前的那个节点就是最近共同祖先。2、本方案:检查当前节点;如果value1和value2都小于当前节点的值,检查它的左子节点;如果value1和valu
2013-10-16 10:15:08 1411
转载 中断线屏蔽与禁用什么区别?
总结自http://bbs.chinaunix.net/thread-3628928-1-1.html基本上每个CPU在其关键控制寄存器有一位用于控制中断enable/disable中断禁用,就是把这个bit disable;如果这一bit被清掉了,整个系统中断就不可能发生中断控制器里有个寄存器叫中断屏蔽寄存器MASK;基本上每一个中断源在MASK寄存器里有一个屏蔽位;如果
2013-10-10 13:24:34 3888
转载 求两个链表的第一个节点
参考编程之美的第三章 234页。如果离链表有环的话,有环的节点肯定是共同的节点,通过标志位找环的节点或者通过链长度n以及循环的第n+1个节点肯定是第一个节点,然后用这个节点在第二个链中去遍历。 剑指offer上的193页,面试题37方法2:标记已经访问的节点 首先对每个节点添加一个标志位bVisited,表示这个节点有没有被访问过,初始为fals
2013-10-09 17:27:53 650
转载 内核中的原子上下文
内核的一个基本原则就是:在中断或者说原子上下文中,内核不能访问用户空间,而且内核是不能睡眠的。也就是说在这种情况下,内核是不能调用有可能引起睡眠的任何函数。一般来讲原子上下文指的是在中断或软中断中,以及在持有自旋锁的时候。内核提供了四个宏来判断是否处于这几种情况里:#define in_irq() (hardirq_count()) //在处理硬中断中#define in_sof
2013-10-09 09:59:56 779
转载 schedule调用相关整理
1 schedule的调用时机×××正常情况下进程上下文中的直接调用schedule(),就会尝试着进行上下文切换。比如:int down_interruptible(struct semaphore *sem)copy_from_user(to, from, n)--------只能在用户上下文中调用.×××抢占式的调用schedule()。比如:在中断里面返回时
2013-10-08 21:18:05 1158
转载 mmap详解
内存映射,简而言之就是将内核空间的一段内存区域映射到用户空间。映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,相反,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间与用户空间两者之间需要大量数据传输等操作的话效率是非常高的。当然,也可以将内核空间的一段内存区域同时映射到多个进程,这样还可以实现进程间的共享内存通信。系统调用mmap()就是用来实现上面说的内存映射。最
2013-10-08 13:23:59 1373
转载 二叉树集锦
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 1210
转载 为什么中断上下文不可以休眠
先把中断处理流程给出来1.进入中断处理程序--->2.保存关键上下文---->3.开中断(sti指令)--->4.进入中断处理程序的handler--->5.关中断(cli指令)---->6.写EOI寄存器(表示中断处理完成)---->7.开中断。复制代码硬中断:对应于上图的1、2、3步骤,在这几个步骤中,所有中断是被屏蔽的,如果在这个时候睡眠了,操作系统不
2013-09-24 22:08:21 1466
转载 自旋锁的实现
(1) linux上的自旋锁有三种实现: 1. 在单cpu,不可抢占内核中,自旋锁为空操作。 2. 在单cpu,可抢占内核中,自旋锁实现为“禁止内核抢占”,并不实现“自旋”。 3. 在多cpu,可抢占内核中,自旋锁实现为“禁止内核抢占” + “自旋”。(2) 关于抢占式内核与非抢占式内核: 在非抢占式内核中
2013-09-24 21:52:33 1091
转载 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 2036
转载 linux字符设备驱动总结之:全自动创建设备及节点
/*************************************************************************************************** linux字符设备驱动总结之:全自动创建设备及节点看了LDD3,深入浅出LDD,以及各个博文,还是需要总结下的。张永辉 2012年10月9
2013-09-08 21:46:43 647
转载 class_create() & device_create
本章节将介绍 class_create class_destroy 使用下一章介绍“device_create device_destroy 使用==mknod及通过class_create自动创建设备节点”========================================================================struct cla
2013-09-08 21:13:38 1297
转载 dev、devfs、 udev和sysfs之间的关系
一、/dev存储的是linux可以认识的所有的文件设备名,无论这个设备有没有在系统里。为了解决/dev目录过大的问题,就 产生了devfs,但devfs是基因内核的,有很多无法解决的问题(参考前面的文章),所以就出现了udev。而udev对设备在/dev目录下的命名 依赖于sysfs所提供的规则信息,这些规则信息由用户提供。sysfs是在2.6内核时加进linux内核的。sysfs就是我们系统加载
2013-09-08 20:58:59 1961
转载 linux中的 IO端口映射和IO内存映射
CPU地址空间(一)地址的概念1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上 (如显存、BIOS等)。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。 物理地址空间,一部分给物理RAM(内存)用,一部分给总线用,这是由硬件设计来
2013-09-08 19:56:22 6287
转载 Why Memory Barrier?
要了解如何使用memory barrier,最好的方法是明白它为什么存在。CPU硬件设计为了提高指令的执行速度,增设了两个缓冲区(store buffer, invalidate queue)。这个两个缓冲区可以避免CPU在某些情况下进行不必要的等待,从而提高速度,但是这两个缓冲区的存在也同时带来了新的问题。要仔细分析这个问题需要先了解cache的工作方式。目前CPU的cache的
2013-09-08 16:26:45 587
转载 对Linux内核中进程上下文和中断上下文的理解
作者:杨硕,华清远见嵌入式学院讲师。内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间。现代的CPU都具有不同的操作模式,代表不同的级别,不同的级别具有不同的功能,在较低的级别中将禁止某些操作。Linux系统设计时利用了这种硬件特性,使用了两个级别,最高级别和最低级别,内核运行在最高级别(内核态),这个级别可以进行所有操作,而应用程序运行在较
2013-09-05 10:06:22 519
转载 klogd和syslogd
我们可以看到LINUX系统信息日志的途径基本有以下2种:1>dmesg查看----这个命令比较常见2>/var/log/下的文件那下面我们就从这个2个途径着手,一步步的走下去.首先,我们来看dmesg这个常见的命令背后隐藏的是什么!!1> 先让我们来MAN一下这个家伙从LINUX提供的手册,我们可以得知一条最重要的信息dmesg是从kerne
2013-08-30 10:57:09 767
转载 SystemServer vs ServiceManager
在Android系统中有很多内置的软件,例如,当手机接到来电时,会显示对方的电话号。也可以根据周围的环境将手机设置成震动或静音。如果想把这些功能加到自己的软件中应该怎么办呢?答案就是“系统服务”。在Android系统中提供了很多这种服务,通过这些服务,就可以像Android系统的内置软件一样随心所欲地控制Android系统了。系统服务(System Services)并非Android开发应用程序
2013-08-18 01:06:36 4122 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 765
转载 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 860
转载 Camera服务之--App
Camera的应用部分代码在/packages/apps/Camera下面,大家可以自己去看一下这部分代码。我主要讲一下几个回调接口和一些我在读代码中遇到的问题。1.回调接口.如果看过了《Camera服务之--Client》这篇文章,就会知道Camera Client端需要提供一些回调方法,给Camera Service用。而Camera Client提供的
2013-08-16 00:53:50 815
转载 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 741
转载 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 851
转载 mmap函数使用
UNIX网络编程第二卷进程间通信对mmap函数进行了说明。该函数主要用途有三个:1、将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能;2、将特殊文件进行匿名内存映射,可以为关联进程提供共享内存空间;3、为无关联的进程提供共享内存空间,一般也是将一个普通文件映射到内存中。函数:void *mmap(void *star
2013-07-16 17:56:21 783
转载 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 799
转载 使用异步 I/O 大大提高应用程序的性能
使用异步 I/O 大大提高应用程序的性能学习何时以及如何使用 POSIX AIO APIM. Tim Jones (mtj@mtjones.com), 顾问工程师, Emulex简介: Linux® 中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序
2013-06-27 21:59:36 571
转载 关于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 1752
原创 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 850
The design of design
2011-08-22
Inside the C++ object model
2008-09-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人