- 博客(53)
- 资源 (5)
- 收藏
- 关注

原创 事件驱动库-libeloop
1.介绍 简单且高效的事件驱动库实现,非常适合在嵌入式环境下使用,需要极少的资源占用支持定时器事件 支持文件描述符事件 可以在多线程中使用,每个线程都有一个事件循环 目前支持在linux下使用,使用epoll作为io复用器2.源码地址:https://github.com/huangyajie/libeloop3.使用示例一个简单的echo服务器//si...
2020-03-26 13:20:15
924
4
原创 openwrt使用花生壳域名
1.编写一个oray.sh脚本#!/bin/shUSER="花生壳账户"PASS="花生壳密码"DOMAIN="花生壳域名"IP=`ifconfig pppoe-wan|awk -F "[: ]+" '/inet addr/{print $4}'`URL="http://${USER}:${PASS}@ddns.oray.com/ph/update?hostname=${DO...
2019-10-14 19:13:06
5388
原创 修改网络设备在路由器中显示名称
(1) 方法1:udhcpc -R -b -p /var/run/udhcpc.eth0.pid -i eth0 -x hostname:MYDEV(2) 方法2:直接修改hostname
2019-10-12 08:44:26
4217
原创 nodejs v6.0.0移植到R16平台
1.configureexport CC=arm-openwrt-linux-gcc export CXX=arm-openwrt-linux-g++export LD=arm-openwrt-linux-ldexport RAINLIB=arm-openwrt-linux-rainlibexport AR=arm-openwrt-linux-ar./configure --dest-cpu=...
2018-03-09 15:59:05
392
原创 shell参数扩展
最近在看openwrt里面的看脚本,用的太帅了,以下2个参数扩展的表达式大量使用,所有记录下来。${parameter:+expression} 如果parameter有值且不为空,则使用expression的值#!/bin/shpath1="/usr/bin"path2="/usr/sbin"path=${path1:+$path2}echo $path运行结果为:/usr/sb
2016-11-20 13:57:47
601
原创 git命令记录
1.git init 初始化一个版本库2.git add readme.txt 添加一个文件到版本库3.git commit -m "readme" 确认更改4.git check -- readme.txt 撤消息readme.txt的更改 未git add 前5.git reset HEAD readme.txt 把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本
2016-10-27 09:33:46
362
原创 通过NDK生成交叉编译工具
$NDK/build/tools/make-standalone-toolchain.sh --arch=arm --platform=android-5 --install-dir=/tmp/android-toolchain 将会在/tmp/android-toolchain 中创建 sysroot 环境和工具链。如果不加 --install-dir 选项,则会创建 /tmp
2016-05-03 12:38:19
711
原创 Tkinter -- Grid布局
from Tkinter import *root = Tk()Label(root,text='user').grid(row=0)Label(root,text='pwd').grid(row=1)Entry(root).grid(row=0,column=1)Entry(root,show='*').grid(row=1,column=1)Button(root,text
2016-03-20 21:40:36
1324
原创 Tkinter -- Statusbar
from Tkinter import *root = Tk()label = Label(root,text='Ln20',bd=1,relief=SUNKEN,anchor=W) # anchor left align W -- WESTlabel.pack(side=BOTTOM,fill=X)root.mainloop()
2016-03-20 21:19:13
3075
原创 Tkinter -- Messagebox
from Tkinter import *import tkMessageBoxdef click(): if tkMessageBox.askyesno('info',"info"): print('click yes') else: print('click no')root = Tk()btn = Button(root,text
2016-03-20 21:10:49
4442
原创 Tkinter -- Toolbar
from Tkinter import *root = Tk()frame = Frame(root)nBtn = Button(frame,text="New")nBtn.pack(side=LEFT,padx=2,pady=2)oBtn = Button(frame,text="Open")oBtn.pack(side=LEFT,padx=2,pady=2)frame
2016-03-20 20:59:10
1475
原创 Tkinter -- Menu
from Tkinter import *def callback(): print("called")root = Tk()menu = Menu(root)root.config(menu = menu)fileMenu = Menu(menu)menu.add_cascade(label="File",menu=fileMenu) #add File menu
2016-03-20 20:46:29
478
原创 Tkinter -- Toplevel
from Tkinter import *root = Tk()root.title("root")top = Toplevel(bg='red')top.title("toplevel")root.mainloop()
2016-03-20 20:28:30
698
原创 Tkinter -- 事件与绑定
参考官网上示例,链接effbot.ort/tkinterbook from Tkinter import *import tkMessageBoxroot = Tk()def btnClick(ev): frame.focus_set() # must other is not work print "left buttn clicked at ",
2016-03-20 20:21:31
882
原创 Tkinter -- 通过config来配置控件属性
from Tkinter import *btn = Button(text='button',padx=10,pady=10)btn.config(bd=10,relief = RAISED)btn.config(cursor='gumby')btn.config(bg='green',fg='yellow')btn.config(font=("Times", 20, "bold"
2016-03-20 19:46:44
9945
原创 Tkinter -- 面向对象方式简单封装
from Tkinter import *class App: def __init__(self,root): frame = Frame(root) #container frame.pack() self.quitButton = Button(frame,text='quit',command = frame.quit)
2016-03-20 17:56:57
6084
原创 Tkinter -- 入门示例
from Tkinter import *root = Tk()label = Label(root,text='hello tk')label.pack() root.mainloop()
2016-03-20 17:43:25
523
原创 lua面向对象
lua面向对象的一种写法:local function _init(class,...) -- body local o = setmetatable({},{__index = class}) if o.__init__ then o:__init__(...) end return oendfunction class(base) -- body return s
2016-03-04 16:37:23
455
原创 perl在ARM上移植
1.选用的是perl-5.22.1版本2.先编译x86版本的程序,把根目录生成的generate_uudmap可执行文件保存下来3.进入Cross文件夹下,把config文件修改如下:################################################################################ This is the
2016-02-19 12:46:47
2655
原创 rsa数字签名实现
使用openssl库进行封装实现,代码如下:static int base64_decode(char *str,int str_len,char *decode,int decode_buffer_len){ int len=0; BIO *b64,*bmem; b64=BIO_new(BIO_f_base64()); BIO_set_flags(b64,
2016-02-19 12:37:20
5936
1
原创 live555在openwrt上移植
1.生成Makefile./genMakefiles openwrtconfig.openwrt 内容如下:CROSS_COMPILE= mipsel-openwrt-linux-COMPILE_OPTS = $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEF
2016-01-21 12:18:10
1879
原创 gsoap在ubuntu14.04上编译
1.我使用的是gsoap-2.8.27这个版本,编译时依赖的库比较多,提前把这些库安装好,命令如下:apt-get install g++apt-get install flexapt-get install bison apt-get install opensslapt-get install libssl-devapt-get install libgtk2.
2015-12-20 15:31:12
868
原创 贪吃蛇
1.最近在了解ncurses这个字符终端处理库,使用这个库写了一个简单的贪吃蛇游戏w,s,a,d控制上下左右,代码如下:#include #include #include #include #include typedef struct _tagDirect{ int x; int y;}Direct;typedef struct _tagSnakeNod
2015-12-12 21:43:38
425
原创 堆的实现
1.堆是一棵完全二叉树,堆有两个性质,即结构性和堆序性,堆序性指的是,对于每个结点X,它的父亲中的关键字小于或等于X的关键字。2.完全二叉树很有规律,它可以用一个数组表示而不需要指针,对于数组中任意一个位置i上的元素,其左儿子在位置2i上,右儿子在2i+1上,它的父亲则在i/2位置上。具体的代码实现如下://// Heap.h// Heap//// Created by
2015-12-06 18:34:10
350
原创 快速排序
1.算法原理设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];3)从j
2015-12-05 19:22:10
374
原创 双向循环链表的实现
1.主要实现创建、插入、删除、查找等操作,代码和用例如下://// DCList.h// DCList//// Created by Mac on 15/12/4.// Copyright © 2015年 Mac. All rights reserved.//#ifndef DCList_h#define DCList_h#include #include #
2015-12-04 21:15:25
460
原创 哈希表的实现
1.实现了创建、插入、查找等操作,代码如下://// HashTable.h// HashTable//// Created by Mac on 15/11/29.// Copyright © 2015年 Mac. All rights reserved.//#ifndef HashTable_h#define HashTable_h#include #incl
2015-11-29 16:18:07
439
原创 二叉查找树的实现
1.二叉查找树的定义对于树中的每个节点X,它的左子树中所有关键字值小于X的关键字值,而它的右子树中所有关键字值大于X的关键字值。2.主要实现插入,删除等操作,代码如下://// SerachTree.h// SearchTree//// Created by Mac on 15/11/24.// Copyright © 2015年 Mac. All rights re
2015-11-25 22:06:18
377
原创 队列的实现(数组)
1.主要实现了创建,入队,出队,销毁等操作,代码如下://// Queue.h// Queue//// Created by Mac on 15/11/22.// Copyright © 2015年 Mac. All rights reserved.//#ifndef Queue_h#define Queue_h#include #include #inclu
2015-11-22 23:15:50
464
原创 队列的实现(链式)
1.主要实现了创建,入队,出队,销毁等操作,代码如下://// QueueLink.h// Queue//// Created by Mac on 15/11/22.// Copyright © 2015年 Mac. All rights reserved.//#ifndef QueueLink_h#define QueueLink_h#include #inc
2015-11-22 23:13:39
393
原创 栈的实现(数组)
1.主要实现了创建、入栈、出栈、销毁等操作,代码如下://// Stack.h// StackArray//// Created by Mac on 15/11/22.// Copyright © 2015年 Mac. All rights reserved.//#ifndef Stack_h#define Stack_h#include #include #
2015-11-22 19:17:20
310
原创 栈的实现(链式)
1.主要实现了创建、入栈、出栈、销毁等操作,代码如下://// Stack.h// Stack//// Created by Mac on 15/11/22.// Copyright © 2015年 Mac. All rights reserved.//#ifndef Stack_h#define Stack_h#include #include #inclu
2015-11-22 16:29:48
345
原创 单链表的实现
1.实现创建、插入、删除、查找、遍历和销毁这几个操作。代码如下://// LinkList.h// LinkList//// Created by Mac on 15/11/22.// Copyright © 2015年 Mac. All rights reserved.//#ifndef LinkList_h#define LinkList_h#include
2015-11-22 15:05:33
336
原创 grep查找时,去掉grep本身那一条
grep 查找时,总会显示本身那一条,比如要查找vsftpd这个进程的运行状态,去掉本身那一条,我们可以这样操作:ps -aux | grep vsftpd | grep -v grep
2015-11-07 12:28:23
9750
原创 插入排序
1.算法原理 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 具体的图示如下: 2.代码#include int insert_sort(int *arr,int size){ int ret = 0; if(arr == NULL) return -1; int i =
2015-10-21 12:37:55
348
原创 选择排序
1.简单选择排序的基本思想: 第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。2.代码#include int select_sort(
2015-10-20 08:34:00
378
原创 冒泡排序(lua实现)
function bubble_sort(arr) -- body local tmp = 0 for i=1,#arr-1 do for j=1,#arr-i do if arr[j] > arr[j+1] then tmp = arr[j] arr[j] = arr[j+1] arr[j+1] = tmp end end endend
2015-10-19 15:08:20
5508
原创 冒泡排序
1.算法原理冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。2.代码#incl
2015-10-19 13:42:52
352
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人