2016-05-28 - OS环境 ubuntu 16.04 STL。 java代码如下: package com.mobile.register; public class Starter { static { System.load(libjni.so); } protected static native String getstr(String vs); protected static native String getnames(String vs); public st...
2016-05-27 - 今年将迎来我编程的第十七个年头。我的编程之旅始于九十年代末,上大学的时候,主要涉足基于表格的网页设计,传统的ASP,和Microsoft Access数据库。原来只是当作业余爱好的编程现在已经成为了我的事业和激情。我一生一半的时间都在学习、蹒跚、成功、失败,...
2016-05-27 - 在debian上进行了移植,移植的过程: 1.首先在Etherlab EtherCAT Master(https://sourceforge.net/p/etherlabmaster/code/ci/default/tree/)下载了最新的EtherCAT Master放在了自己的目录下。 2.在虚拟机中设置网络为桥接模式 3.参考目录下的INSTALL文件 -...
2016-05-26 - 在linux系统内核中,由于其能区分大小写的特性,故开发时同文件夹下面有很多同名文件。 如: xt_DSCP.h和xt_dscp.h xt_MARK.h和 xt_mark.h 但是在windows下面不能区分大小写,会认为是同一个文件,我在使用git查看时经常出现有修改提示,实质上是将两个文件...
2016-05-26 - 系统环境:Ubuntu15.10/ext4 今天在复习《鸟哥的私房菜-基础学习篇》,看到inode大小为128bytes,想看下这128字节里面到底是什么样的。 于是我搜索了下,发现ext2/3是128字节,ext4是256字节,以下是ext2/ext4对应的结构。 ext2.h/ext2_inode: 294 /* 295...
2016-05-26 - 系统:linux通用,virtualbox5.0 每次用下面命令启动vm虚拟机时,发现没办法知道它的IP。 $ vboxmanage startvm vmname --type headless 按照搜索的一些命令,也查不出来,于是找到一国外哥们儿用arp方法查找在线局域网主机的方法改成了脚本,目前支持单一在...
2016-05-25 - #!/bin/bash ################################################ # 脚本功能 : 列出正在占用swap的进程。 ################################################ echo -e PID\t\tSwap\t\tProc_Name # 拿出/proc目录下所有以数字为名的目录(进程名是数字才是进...
2016-05-25 - #!/bin/bash ################################################ # 脚本功能:列出正在占用mem的进程。 Rss:物理内存 Swap:虚拟内存 ################################################ echo -e PID\t\tMem\t\tProc_Name # 拿出/proc目录下所有以数字为名...
2016-05-25 - 默认的man pages只有一种颜色,有些文字是进行加粗的。 只需执行以下命令,即可。 cat \EOF /etc/bashrc man() { env \ LESS_TERMCAP_mb=$(printf \e[1;31m) \ LESS_TERMCAP_md=$(printf \e[1;31m) \ LESS_TERMCAP_me=$(printf \e[0m) \ LESS_TERMCAP_se=$(p...
2016-05-24 - 一、实验环境 虚拟机:VMware Workstation 12.0; 操作系统:ubuntu16.04(32位); 当前内核版本:4.4.0-21-generic 二、知识储备 现在,先让我们了解一下什么是内核模块: 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接...
2016-05-24 - 编写好驱动,通过挂载的方法将驱动程序挂载到内核里面,大致步骤如下: 一: 1建立以.c为后缀的c语言程序文件 (里面包含了设备名及设备号等) 2建立Makefile文件(作用是通过make来产生设备文件*.ko文件,里面可以建立自己的平台所需的设备文件如:arm等).make 产生...
2016-05-24 - 一、说明 一般Linux下提供的时间服务都是从国际标准时间公元1970年1月1日00:00:00以来经过的秒数,这种类型用time_t表示,一般我们称之为日历时间,这是我们要用的源。 二、获取系统时间并转成字符串步骤 #include time.h time_t time(time_t *calptr); ti...
2016-05-23 - 机子里的FFTW库下了很长时间了,总也没有去搞。唉,有很多东西就是这样,千方百计搞过来,搞到手了就晾在那里了。记得《黄生借书说》里面说得对啊书非借不能读也。 好了,感慨完毕。归入正题。 Windows下FFTW库的安装 1、从网址http://www.fftw.org/install/...
2016-05-23 - 内核中启动时间比较长的模块,我们可以用任务的形式来启动。 static void ssd1322_TstDemoShow(struct work_struct *work) { struct ssd1322_par *par = container_of(work, struct ssd1322_par, TstDisp_work); ssd1325_TstMain(par); } //just for demo(te...
2016-05-23 - 在学习了Linux的完全公平调度算法(CFS)后,记录下学习轨迹,这篇文章主要讲述,完全公平调度算法的工作方式,和一些调度知识。 我们可以通过ps -l看到当前正在运行的进程的详细信息其中 F:表示进程旗标,标识进程所拥有的权限,当我切换到root的时候为4表...
2016-05-22 - 今天在按键驱动中增加printk(KERN_INFO gpio_keys_gpio_isr()\n);在驱动加载阶段可以输出调试信息,但驱动加载起来后的信息,在串口端看不到输出信息。 在kernel/ /* We show everything that is MORE important than this.. */ #define MINIMUM_CONSOLE_LOG...
2016-05-22 - 第一步:安装 crontab ,命令 yum -y install vixie-cron 扩展:service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置 service crond status //查看crontab服务状态 第二步...
2016-05-22 - 启动方法: Process.Start(@E:\TestScene\test.exe, asdasd); Unity Script: [SerializeField] Text t; string cmdInfo = ; void Start() { string[] arguments = Environment.GetCommandLineArgs(); foreach (string arg in arguments) { cmdInfo += arg.T...
2016-05-22 - 在Linux中,利用Shell的作业控制是比较常用的操作,在这一节中我们将探究作业控制相关的操作。为了方便我们查看区分不同的进行,我们编写如下程序,其功能是每间隔2秒输出一次自己的编号。 /* ** Test puting a running program into backgound */ #include...
2016-05-21 - 在实验中用到这一块,就去看源码分析整理了一下,全部为个人理解。有错误的地方,希望和大牛交流。 首先解释一下,我实验的目的是获得系统调用入口函数system_call的起始地址和函数大...
2016-05-21 - 注:代码来自内核版本2.6.36 在Build kernel时,在CONFIG_CMDLINE宏中设定级别: CONFIG_CMDLINE=debug|quiet|loglevel=5,这个宏会在kernel启动时作为默认配置参数。 debug表示loglevel=10 quiet表示loglevel=4 loglevel=5表示loglevel=5 处理log级别的代码...
2016-05-20 - 有时候需要将一些图片,音乐或者字符串文件随可执行文件一起打包发布。可以用objcopy命令。 1. 准备资源文件 文件名:strings.txt 内容: well done! 2. 准备C文件 文件名: main.c 内容: #include stdio.h void main() { char *p = well; printf(%s\n, p); }...
2016-05-19 - 很多IT公司对于软件开发都有严格的分工,这包括设计、测试、服务支持等等。但是,我一直都认为只有开发者才是真正对软件质量负责的人。没有好的软件设计,软件质量基本上是无从谈起。当然,要做到这一点是需要额外的一些工具来进行保证的。因为这一段时间都...
2016-05-19 - 作为一个程序员,我知道我肯定会犯错误怎么可能不犯错!程序员也是人...
2016-05-18 - 前段时间在做播放器的时候,遇到个问题,花了很长时间,做个记录,希望对有需要的人有所帮助: 播放器的播视频的时候,无论是手动切换视频还是到视频播放完成,自动切换视频,一定次数后均出现黑屏现象,偶尔有声音,问题出现后,不可恢复,Kernel输出如下Lo...
2016-05-18 - 正如你所知道的,Linux内核提供了许多不同的库和函数,它们实现了不同的数据结构和算法。在这部分,我们将研究其中一种数据结构基数树。在 Linux 内核中,有两个文件与基数树的实现和API相关: include/linux/radix-tree.h:https://github.com/torvalds/lin...
2016-05-17 - SCSI、Host、Target、LUN等概念 在物理上说是SCSI总线是计算机内部与外设进行通讯的总线,SCSI设备就是采用SCSI总线标准的设备。 SCSI总线上可挂接的设备数量是有限的,一般为6个或15个,使用target ID(也有称为SCSI ID的)来描述这些设备,设备一加入系统...
2016-05-17 - 为什么要有cgroup Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源。也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等。于是就出现了cgroup的概念,cgroup就是controller group,最初由go...
2016-05-16 - 练习编写csh文件时,遇到符号问题记录一下。 echo input a number plz set test=$BRecho test echo add 3 and display set test=`expr $test + 3` echo adder is: $test 例子中是根据键盘输入加3的一个简单程序。 例子中的第5句 set test=`expr $test + 3`使...
2016-05-16 - 在redhat的系统中,sh是一个到bash的软链接,但是如果运行如下程序会产生不一样的结果。 #!/bin/bash function InstallFiles () { echo $BUILD } buildroot=nihaoa ROOT=wahu BUILD=${buildroot} \ InstallFiles BUILD=${BUILD}/${ROOT} \ InstallFiles 结果...
2016-05-14 - 一、源码 使用 backtrace 获得 Linux 函数调用栈 源码来自:man backtrace #include execinfo.h #include stdio.h #include stdlib.h #include unistd.h void myfunc3(void) { int j, nptrs; #define SIZE 100 void *buffer[100]; char **strings; nptrs = b...
2016-05-14 - 今天开始看《OrangeS:一个操作系统的实现》一书。这里是ubuntu 16.04下开发环境的搭建以及实现一个最小的操作系统(准确地说应该是一个引导扇区)。 工欲善其事,必先利其器。自制一个操作系统需要的工具如下: 汇编编译器NASM 虚拟机算计Bochs 软盘绝对扇区...
2016-05-13 - 由于需要在ubuntu下查看linux的内核源码,一开始用souceInsight,感觉不好用,后来换成eclipse,感觉还是不错的样子。 开始导入: 1.首先我们到Window-Preferences-General-Workspace 中将Build Automatically选项去掉。 然后到Window-Preferences-C/C++ - In...
2016-05-12 - 1、语法错误定位 因为 vim 天生就是 C 语言开发者的利器,所以很多时候它的一些原生功能就能为 C 程序员提供非常好的用户体验。 在 C 语言编译环境中,我们的编译一般是由 make 这个命令开始的,而 vim 就很好的整合了这个 make 命令。当然很多编译型的语言...
2016-05-12 - 本文用于解决如何用C++处理字符串的编码格式。本文采用的是成熟便捷的UTF8库来处理这个问题。首先是下载UTF8库,网址为:https://sourceforge.net/projects/utfcpp/ 为了方便后续使用这个C++库,我们可以直接将源程序文件utf8.h和文件夹utf8复制到目录/usr/l...
2016-05-11 - 1.os模块 import os #第一种,使用system os.system(docker ps -a)#等等的命令 #缺点是没办法得到返回值,执行命令后,系统stdout打印出命令得到的值 #第二种,使用popen f=os.popen(uname -a) data=f.readline() f.close() print data #可以获得系统的返回...
2016-05-11 - 本人水平相当有限,不当之处,欢迎指正。 在各种各样使用Linux的计算机系统中,系统启动的早期阶段,通常都会有这样一个环节,boot loader程序将内核映像加载到内存中,然后跳转到映像的起始位置开始执行。 接下来,内核就跑起来了。 那么,这个内核映像到底...
2016-05-11 - 下面的函数get_time_str实现了在内核中获取本地时间的功能。 他首先获取utc时间,然后根据系统的时区timezone转换成本地时间, 最后将时间以2014-05-11 15:14:08的字符串的形式输出到output缓冲区中。 函数的返回值,是输出的字符串的长度。 #include linux/...
2016-05-11 - eth0, eth1这些名称是怎么来的呢? 内核发现一个pci网卡设备,调用网卡驱动的probe函数。 probe函数在做完一定的初始化之后,会调用内核接口register_netdev向内核注册一个新的net_device设备。 这个设备的名字,网卡驱动程序往往只决定其中一部分。 就像下...
2016-05-11 - 为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情。因为有的进程相对重要,而有的进程则没那么重要。 本文作者:邹立巍 Linux系统技术专家。目前在腾讯SNG社交网络运营...