Linux下的多线程定时器实现 2016年10月16日 9 阅读 一、功能:Linux下编写一个程序库,实现定时器的功能,它能为用户提供在同一进程中多次使用的定时器。二、实现#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <time.h>#include <sys/queue.h>#include <sys/time.h>#include <pthread.h&g...
Linux Shell编程学习札记 2016年10月16日 9 阅读 Linux课的几个Shell编程学习札记。1、找出文件sample.txt中出现”Linux”的次数#!/bin/bash#how many "Linux" in Linux.txt?grep -o "Linux" Linux.txt | wc -l2、将/etc/passwd的第一列(用户名)取出,以”the n account is $usr”显示每一个用户名。n表示行数,其中,/etc/passwd以&...
Linux内核中的typeof 2016年10月16日 9 阅读 Linux内核版本:2.6.14今天分析内核时又看到了typeof,只知道它大概是返回变量的类型,后来上网查了下发现这个关键字在linux中用的非常多。如果你对sizeof很熟悉的话,那么大可进行类推,sizeof(exp)返回的是exp的数据类型大小,那么typeof(exp.)返回的就是exp的数据类型。下面是linux内核中typeof的一些例子。include/linux/kernel.h/** min()/max() macros that al...
使用IntelliJ IDEA 12开发haXe应用 2016年10月16日 9 阅读 一直以来haXe缺少一个好的IDE,这点确实不方便,在现在注重快速开发的时代,一个现代IDE能带来太多的帮助。目前,官方推荐的是在Windows上使用FlashDevelop,在Mac上是MonoDevelop和Sublime Text2,我前一段一直都在用FlashDevelop,只能说可用而已,好用谈不上,比如:代码自动完成还是时有时无的,也无重构等功能,好处是可以进行Flash目标上的调试。自从试用了IntelliJ IDEA 12的Early Ac...
haXe开发备忘:位图重复填充的问题 2016年10月16日 9 阅读 haXe开发中发现:在native也就是cpp目标中,用Graphics.beginBitmapFill()这个方法填充一个区域时,repeat参数不起作用,结果总是用边缘像素填充了空白区域。经过一番检索与研究,发现这是OpenGL硬件渲染器的一个已知限制,如果纹理图的边长不是2的整数倍(如4, 16, 64, 256, 1024...)的话,就是这个结果。有几个解决方案可根据实际情况选用:1. 强制NME采用软件渲染器,方法是把显示对象的cacheAsB...
haXe NME通过JNI调用Android 2016年10月16日 9 阅读 haXe中的JNI概念首先澄清一个概念问题,NME中的JNI接口和java中的含义并不相同,java中的JNI是java调用本地C/C++代码的标准接口,而haXe中的JNI则正好相反,是用haXe在Android目标平台调用java代码。当然,意义上也说得通,因为从haXe和Android目标的关系来说,Android自带的java运行库反而是native的嘛,呵呵。nme.JNI类的使用haXe NME调用java方法是通过nme.JNI类实现的,JN...
Java 方法映射到C中的签名 2016年10月16日 9 阅读 刚接触JNI 的 兄弟在看一些demo的时候 发现有类似与“([Ljava/lang/String;)V”的东西的时候肯定会很“蛋疼”,完全不懂这是啥东西,怎么来的,有啥用处?今天就讲讲这个“蛋疼”的东西把,俗称 方法签名直接来个Demo 把 :观察下面四个方法对应的签名public void test(){} ()Vpublic void test1(int i){} ...
C++ 协程与网络编程 2016年10月16日 9 阅读 协程协程,即协作式程序,其思想是,一系列互相依赖的协程间依次使用CPU,每次只有一个协程工作,而其他协程处于休眠状态。协程可以在运行期间的某个点上暂停执行,并在恢复运行时从暂停的点上继续执行。 协程已经被证明是一种非常有用的程序组件,不仅被python、lua、ruby等脚本语言广泛采用,而且被新一代面向多核的编程语言如golang rust-lang等采用作为并发的基本单位。 协程可以被认为是一种用户空间线程,与传统的线程相比,有2个主要的优点:与线程不...
使用Python以及工具包进行简单的验证码识别 2016年10月16日 9 阅读 使用Python以及工具包进行简单的验证码识别,直接开始。原始图像 Step 1 打开图像吧。im = Image.open("temp1.jpg")Step 2 把彩色图像转化为灰度图像。彩色图像转化为灰度图像的方法很多,这里采用RBG转化到HSI彩色空间,采用I分量。imgry = im.convert("L")灰度看起来是这样的Step 3 需要把图像中的噪声去除掉。这里的图像比较简单,直接阈值化就行了。我们把大于阈值threshold的像素置为1,...
Linux内核中的IS_ERR()、PTR_ERR()和ERR_PTR() 2016年10月16日 9 阅读 在看Linux内核源码的时候,经常会遇到IS_ERR,比如在 linux/arch/arm/kernel/sys_arm.c中asmlinkage int sys_execve(char __user *filenamei, char __user * __user *argv, char __user * __user *envp, struct pt_regs *regs){int error;char * filename;filename = g...
扫描服务端口的Java程序 2016年10月16日 9 阅读 在Linux下用C写了一个扫描指定IP地址对外开放端口号的程序。扫描自己的机器的端口号速度还是挺快的,用编写的程序扫描在美国的服务器时,等了10分钟,端口号才扫到1000左右。于是就想到了用多线程,可是linux c的多线程不会,于是就用java程序编写了一个可实现多线程扫描的功能。速度比原来快了很多。import java.net.*;import java.io.IOException;public class ScannerPort extends ...
glibc中的printf如何输出到串口 2016年10月16日 9 阅读 Linux内核版本:2.6.14glibc版本:2.3.6CPU平台:armprintf的输出不一定是串口,也可以是LCD,甚至是文件等,这里仅以输出到串口为例。本文分析了printf和文件描述符0、1和2以及stdout、stdin和stderr的关系,通过这篇文章可以知道文件描述符0、1和2为什么对应着stdout、stdin和stderr,因为glibc就是这么定义的!!!首先看glibc中printf函数的定义(glibc-2.3.6/stdio-...
Linux编程---守护进程 2016年10月16日 9 阅读 Linux守护进程linux服务器在启动时需要启动很多系统服务,他们向本地和网络用户提供了linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程来执行的。守护进程是运行在后台,生存期长的一种特殊服务进程,他们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。由于在linux中,每一个系统终端与用户进行交流的界面称为终端,每一个从终端开始运行的进程都依附于这个...
用C语言求一组数组的最大值以及最小值 2016年10月16日 9 阅读 用C语言求一组数组的最大值以及最小值#include<stdio.h>//stdio.h是c的标准的i/o库,是以函数的方式向buffer写入或读取字符,iostream.h是c++的标准i/o库,引入了输入/输出流的概念,是一个类库,是以类方法从streambuf中读取,写入字符。int max=0;int min=1000;void change(int a[],int n) { int i,j,k; for(i=1;i<n;i++...
Linux内核中的get_user和put_user 2016年10月16日 9 阅读 Linux内核版本:2.6.14CPU平台:arm在内核空间和用户空间交换数据时,get_user和put_user是两个两用的函数。相对于copy_to_user和copy_from_user(将在另一篇文中分析),这两个函数主要用于完成一些简单类型变量(char、int、long等)的拷贝任务,对于一些复合类型的变量,比如数据结构或者数组类型,get_user和put_user函数还是无法胜任,这两个函数内部将对指针指向的对象长度进行检查,在arm平台...
详解大端模式和小端模式 2016年10月16日 9 阅读 一、大端模式和小端模式的起源关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令所有的子民吃鸡蛋的时候,必须先打破鸡蛋较小的一端,违令者重罚。然后老百姓对此法令极为反感,期间发生了多次叛...
Python之eval()函数的危险 2016年10月16日 9 阅读 Python的eval()函数可以把字符串“123”变成数字类型的123,PP3E上说它很危险,还可以执行其他命令!在家没事,做了些试验。果然,如果python写的cgi程序中如果使用eval()而非int()来转换诸如年龄这样的输入框中的内容时是非常危险的。不仅可以看见列出系统的全部文件,还可以删除文件,察看文件源代码。试着写了个程序,想把本地的脚本文件同过这样的形式一行一行的写到服务器的某个文件里,可最后失败在无法输入换行符"/...
HTML5本地存储之Web Storage篇 2016年10月16日 9 阅读 Web Storage是HTML5引入的一个非常重要的功能,可以在客户端本地存储数据,类似HTML4的cookie,但可实现功能要比cookie强大的多,cookie大小被限制在4KB,Web Storage官方建议为每个网站5MB。Web Storage又分为两种:sessionStoragelocalStorage从字面意思就可以很清楚的看出来,sessionStorage将数据保存在session中,浏览器关闭也就没了;而localStorage则一...
HTML5实现网页元素的拖放操作 2016年10月16日 9 阅读 HTML5之前,要实现网页元素的拖放操作,需要依靠mousedown、mousemove、mouseup等API,通过大量的JS代码来实现;HTML5中引入了直接支持拖放操作的API,大大简化了网页元素的拖放操作编程难度,并且这些API除了支持浏览器内部元素的拖放外,同时支持浏览器和其它应用程序之间的数据互相拖动。本文通过一个简单示例,演示HTML5中拖放API的使用方法。场景:如下图所示,我们要实现:通过拖放将照片从左侧“相册”区...
HTML5自定义data属性 2016年10月16日 9 阅读 可能大家在使用jquery mobile时,经常会看到data-role、data-theme等的使用,比如:通过如下代码即可实现页眉的效果:<div data-role="header"> <h1>我是标题</h1></div>通过手机浏览,效果如下:为什么写一个data-role="header"就能实现底部为黑色、文字居中显示的效果呢?本文提供一种最简单的实现办法,让大家对这些用法有个直观的了解。我们...