2016-09-25 - 本例子虽小,但是融合的线程同步,线程回收和信号量的知识。 需要注意pthread_join()和pthread_exit()的用法和区别: pthread_join一般是主线程来调用,用来等待子线程退出,因为是等待,所以是阻塞的,一般主线程会依次join所有它创建的子线程。 pthread_ex...
2016-09-24 - linux和windows环境下均可。 1.python与hiveserver交互 #!/usr/bin/python2.7 #hive --service hiveserver /dev/null 2/dev/null #/opt/cloudera/parcels/CDH/lib/hive/lib/py import sys sys.path.append(C:/hadoop_jar/py) from hive_service import Thrif...
2016-09-24 - 因工作需要将java工程与c++工程混合编译调试,所以一直在网上搜寻java与C++的混合调试,但是一直未找到,所以只能自己摸索,终于被我弄成功了。 在Linux下,为了能混合调试java与C++代码,即能从java进入C++代码进行跟踪调试,现对eclipse设置如下: 1.首先e...
2016-09-23 - 最近涉及Linux Shell编程,还不太熟悉,对于赋值语句,数值计算,循环语句,变量使用都不太熟悉。我不打算一个一个的说明知识点,我打算用最多3个例子说明所有的这些知识点。 Example 1: #!/bin/bash # calculate sum = 1^2 + 2^2 + 3^2 +...+ 100^2 sum=0;...
2016-09-23 - 因为Java是解释执行的,所以,几乎所有的教科书都说,Java比C++运行速度慢!可是,实际上,是这样的吗?实践是检验真理的唯一标准。 实验环境: 硬件:Intel i5 3230M双核处理器,2.6GHz 4GB DDR3内存 软件:Linux Ubuntu14.04 / Codeblocks / Eclipse C++ c...
2016-09-23 - 今天写了一个简单的 Linux Shell 逐行读取文件(txt,sh,csv....)的程序,记录一下,有需要的朋友可以参考。 #!/bin/bash # Only 1 parameter ! if [ $# != 1 ];then echo Usage: .\read.sh filename!; exit fi # check the file ! if ! [ -f $1 ];then echo...
2016-09-23 - 我应该学习哪门语言?,这是新入门的程序员最常问到的问题。对于一些有抱负的开发人员,这个问题最终成为他们永远逾越的绊脚石。 我执教过大量的开发人员,这些人常会考虑再三,从这门语言跳到那门语言,生怕做了错误的决定。如果你一再追问究竟应该学习哪门...
2016-09-23 - 最近看了一下线程的同步知识,研究起来还是linux下的线程好研究,关于线程同步一般有以下几种方法:信号量、互斥锁、读写锁、条件变量,单独看互斥锁是比较明白的,一开始一直没搞明白互斥锁+条件变量一起使用的时候,因为这个组合感觉用到的最多,互斥锁主...
2016-09-23 - 开发平台:Debain 目标板:HI3518E 最近在HI3518E上编写应用程序时需要用到定时器来实现每隔一定的时间往串口发送数据,可是在实现定时器上出现了问题,具体表现为定时不准,于是乎编写了一段代码在Debain主机上进行测试,效果也正常,代码如下,定时35ms。...
2016-09-22 - 最近一直在想做一个小系统,实时获取白银价格,如果达到了自己预期的价格,就发到自己的邮箱,免得自己经常去查看白银价格。 首先在自己的ubuntu中启用邮件发送功能。 现在介绍方法:ubuntu下使用mutt和msmtp发送邮件的简单配置 运行: sudo apt-get install...
2016-09-22 - 最近在做服务器,因为是全天候运行,服务器也不是说百分之百稳定,永远不崩溃永不宕机啥的,所以就算宕机了也不要紧,关键是能及时启动,不能影响玩家体验,所以必须得有守护进程守护着,如果服务器一崩溃,立马重启,保证整个业务能继续运行。 我的启动脚本...
2016-09-22 - 安装zlib 1.2.3.tar.gz: $wget http://www.zlib.net/zlib-1.2.3.tar.gz $tar -xvzf zlib-1.2.3.tar.gz $cd zlib-1.2.3.tar.gz $./configure $make $sudo make install 安装好之后,就可以用了。 zlibmgr.h 文件: #ifndef _ZLIBMGR #define _ZLIBMGR #defin...
2016-09-21 - Linux 内核是如何实现无线网络接口呢?数据包是通过怎样的方式被发送和接收呢? 刚开始工作接触 Linux 无线网络时,我曾迷失在浩瀚的基础代码中,寻找具有介绍性的材料来回答如上面提到的那些高层次的问题。 跟踪探索了一段时间的源代码后,我写下了这篇总结...
2016-09-21 - 使用socekt通信一般步骤 1)服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。 2)客户端:socker()建立套接字,连接(connect)服务器,连接上后使用send()和recv(),在套接字上写读数据,直至数据交换完毕,cl...
2016-09-20 - 获取当前日志(一般默认是CST标准格式) -bash-4.1$ date Tue Sep 20 09:56:58 CST 2016 获取特定以特定格式(date + format,注意格式的大小写表示了不同格式) -bash-4.1$ date +%Y-%m-%d 2016-09-20 -bash-4.1$ date +%Y%m%d%H 2016092009 获取昨天的日期(其...
2016-09-20 - 1.linux命令返回值介绍 shell 在执行某个命令时,会有一个返回值,该值保存在shell变量$?中。当$?为0时,表示命令执行成功;当$?为1时,表示命令执行失败。 2. 语法格式如下: command1 command2 ... command之间用连接,实现逻辑与功能 当左边的命令执行成...
2016-09-20 - 整个Shell脚本写法如下: THIS_PATH=$(cd `dirname $0`;pwd) cd $THIS_PATH ##要求传入的数据格式为yyyyMMdd的两个开始和结束参数,如20160901 20160910 start=$1 end=$2 ##将输入的日期转为的时间戳格式 startDate=`date -d ${start} +%s` endDate=`date -d...
2016-09-20 - Linux shell倒计时脚本代码如下: #!/bin/sh seconds_left=10 echo 请等待${seconds_left}秒 while [ $seconds_left -gt 0 ];do echo -n $seconds_left sleep 1 seconds_left=$(($seconds_left - 1)) echo -ne \r \r #清除本行文字 done 等待10秒,友好的倒...
2016-09-19 - 在这篇文章中,我们将介绍一个崭新的工具snapcraft-gui(https://github.com/snapcraft-gui/snapcraft-gui)来帮我们开发snap应用.对于一些刚开始开发snap应用的开发者来说,很多的命令及格式对它们来说非常不熟悉.我们可以利用现有的一个含有GUI的Qt应用...
2016-09-19 - 信号可以看做程序运行期间的一种软件中断,信号是异步的,也就是说对于进程运行而言信号的发生是随机的,每当有信号产生时,进程会立即处理该信号。 人们可以通过键盘组合来发送特定的信号,比较重要的有: SIGINT 2 采用ctrl+c产生该信号 SIGQUIT 3 采用ctr...
2016-09-18 - linux下通过C执行命令的时候一半都是使用system()方法,但是该方法执行命令返回的值是-1或0,而有时候我们需要得到执行命令后的结果。可以使用管道实现。 输出到文件流的函数是popen(),例如: FILE *isr; isr = popen(ls -l,r); ls -l命令的输出通过管道读...
2016-09-18 - 1.首先写一个自己的库: #include ../MyAPI.h #include cstdlib #include ctime int getRandom(int boundary) { if (boundary = 0 ) { return 0; } srand((unsigned)time(NULL)); return rand() % boundary; } 这里的MyAPI.h是库对应的头文件(这里用../MyAPI...
2016-09-17 - 1.使用getcwd()获取的是当前工作路径,而不一定是程序的路径 #include stdio.h #include stdlib.h #include unistd.h #define MAXBUFSIZE 1024 int main ( int argc, char * argv[] ) { char buf[ MAXBUFSIZE ]; getcwd(buf, MAXBUFSIZE); printf(\n); print...
2016-09-17 - I、Linux中与时间相关的函数 a、 获取当前时间,计算时间间隔; time(2) / time_t (秒) -----精度太低 ftime(3) / struct timeb (毫秒) ----已被废弃 gettimeofday(2) / struct timeval (微秒) -----满足日常计时的需要,推荐使用。 clock_gettime(2) /...
2016-09-16 - 停止并清空ebtables的简单bash脚本: EBT=/sbin/ebtables # die if ebtables not found [[ -x $EBT ]] || { echo $0: error \$EBT\ not found.; exit 1; } # die if we are not root [[ $(id -u) != 0 ]] { echo Error: $0 script must be run as root. 21;...
2016-09-15 - 有三种方法可以指定程序运行的参数,第一种方法是在命令行上直接指定;第二种方法是通过run命令提供程序运行时的参数;第三种方法是通过set args命令指定程序的参数。 第一种方法:为程序传递参数5 root@guo-virtual-machine:~/debug# gdb --args factorial...
2016-09-15 - 在我刚开始接触I2C是在单片机,通信协议就不说了。 1.芯片的I2C adapter(适配器),这是硬件相关,所以可以理解为它是芯片固定的硬件功能。 2.core层的通用API函数,在linux中,无处不体现这种设计的思想,比如,我们在驱动中最常见的file_operations的数据...
2016-09-15 - 在PC上使用Qtcreator开发的程序想要在开发板上调试运行需要进行一些设置。 1.首先,使用ssh登录到开发板 ssh root@192.168.1.136 以用户名root登录IP地址为192.168.1.136的开发板。执行这条命令后会提示输入密码。 root@192.168.1.136s password: 在光标处输...
2016-09-15 - 写一个脚本(前提:请为虚拟机新增一块硬盘,架设它为/dev/sdb),为指定的硬盘创建分区。 1,列出当前系统上所有的磁盘,让用户选择,如果选择quit则退出脚本;如果用户选择错误,就让用户重新选择; 2,档用户选择后,提醒用户确认接下来的操作可能会损坏数...
2016-09-14 - 今天在调增量备份脚本的时候,遇到了一个问题。明明脚本手工执行是没有问题的,可却在系统自动执行的时候报错了。结果就是各种的搜了,今天也为此标记下。 修改前的代码片段: #! /usr/bin/expect #set timeout=3 spawn scp -r root@10.14.162.35:/data/wyh/...
2016-09-14 - 最近看到好几个小伙伴发了图片的download脚本,昨天复制了一个的python片段,手痒执行了一下,在home目录顿时出现了大量的新文件夹,类似这种效果: ls -t 这可是home目录,不可能这样子玩,需要删掉这些自动生成的文件夹。顺便学习一下python的文件和文件夹...
2016-09-13 - 函数scandir的用法参考:Linux c目录操作函数scandir 头文件:#include dirent.h 定义函数:int scandir(const char *dir, struct dirent **namelist, nt (*select) (const struct dirent *), nt (*compar) (const struct dirent **, const struct dirent**)...
2016-09-13 - 硬件资源越来越庞大和复杂,内核的另一个挑战就是要便捷的管理这些资源。同时,面对如此之多的平台不同的CPU,管理机制需要统一适用,这就需要对资源的管理抽象到更加通用的层次。CPU中各个模块都需要时钟驱动,内核需要一种机制能通用所有的平台,方便的管...
2016-09-13 - 当我们在Linux操作系统下使用input子系统时,当我们先插鼠标,在插上摄像头与先插摄像头,在插鼠标,操作系统为两个设备分配的event号不是固定的,先插上的是event0,后插上的是event1 。那么问题来了,我们写应用程序,我们怎么知道那个设备对应那个event接...
2016-09-13 - 目前只支持jpeg格式的图片,需要显示其他图片的在main函数中添加就可以。解析出图片头字节,根据字节判断是属于什么格式的图片。 有四个文件:main.c input_manager.c touchscreen.cinput_manager.h编译时候加上-ljpeg -lts -lpthread库。 main.c文件: #inc...
2016-09-12 - 在内核代码中看到strstr函数: mode = strstr(boot_command_line, D:); 应该是一个字符串处理函数,使用man命令查看下给出如下解释: SYNOPSIS #include string.h char *strstr(const char *haystack, const char *needle); #define _GNU_SOURCE #include st...
2016-09-11 - 通常情况下单片机的烧录都是通过ISP或者串口下载线进行程序的下载升级,mege88支持通过切换到bootloader自行进行升级。 通过上图可以知道,mega88将Flash存储区分成两块,一块用来存放bootloader,一块用来存放应用程序。当需要升级的时候,通过跳转指令调至...
2016-09-11 - 一,查看文件格式 file ramdisk.img.u ramdisk.img.u: u-boot legacy uImage, ramdisk, Linux/ARM, RAMDisk Image (gzip), 7573433 bytes, Mon Jan 11 18:29:28 2016, Load Address: 0x00000000, Entry Point: 0x00000000, Header CRC: 0xA7806493, Data CRC...
2016-09-10 - 刚刚开始学习Linux,写了一个小脚本连接数据库: [root@single1 scripts_test]# vi auto_check.sh #!/bin/sh #start on 20160909 #auto_check.sh #danxinmingyue #usage: su - oracle -c sqlplus -s / as sysdba EOF select * from dual; exit EOF 结果报错...
2016-09-10 - 所谓的位置参数(positional parameters) 指的也就是Shell脚本的命令行参数(command - line arguments )。 在Shell函数里,它们同事也可以是函数的参数。各参数都由整数来命名。基于历史的原因,当它超过9,就应该用大括号把数字框起来。 echo first arg is...