- 博客(83)
- 资源 (2)
- 收藏
- 关注
原创 升序输出三个整数
有这么个问题,升序输出三个整数。最直观的方式当然是排序:#include void sort(int *arr, int count){ int i, j; for (i = 0; i for (j = i + 1; j { if (arr[i] > arr[j])
2014-05-31 00:38:55
3612
3
原创 升级python后导致的iBus输入法设置无效以及候补框消失的问题
用到的一个软件因为使用了python,但是总是莫名其妙的崩溃,可能是因为python旧版本的实现有bug,所以讲debian自带的python 2.6.6升级到了现在找到的新版的python2.7.3,升级后惊奇地发现,bug的确没有了,那个软件也十分稳定。今天下午进入系统,刚好需要切换输入法的时候,突然发现输入法图标没了,同时输入法的候选字输入框也没了,令我十分惊讶,重新点击GNOME的输入
2012-12-02 20:27:43
7976
4
原创 main函数能调用吗?
main函数能调用吗?我想,它既然也是个函数,那它就应该有普通函数的特性,只是因为名字是main,所以被编译器作为代码段的入口而已。#include #include int main(int argc, const char *argv[]){ if (argc > 10) exit(0); printf("%d\n", argc); main(argc + 1, argv);
2012-11-24 21:19:57
3919
1
原创 3DS实时时钟相关的问题
最近做的一个项目中正好需要获取时间,正好DS内部是有硬件时钟的,而且被整合到了标准库中的time相关函数中,devkitpro自带的example中就有这样的获取时间演示。其中有一个OpenGL的显示时钟演示,但是经过测试发现,这个钟并不会走,而是第一次调用time函数获取一次时间后,以后无论多少次调用都会获得同样的结果。为了方便测试,我设置了一个硬件时钟用于定期调用获取时间并定期显示在屏幕上
2012-10-15 20:08:03
3183
1
原创 自动Suspend CPU占用率最高进程,夏天CPU好帮手
内容如代码所示,温度和suspend、resume策略你需要自己修改一下:#!/usr/bin/env python# -*- coding=utf-8 -*-import commands, signal, time, os, realarm_temp = 90safe_temp = 70ignore_cpu_percent = 10.0pid_pool = []
2012-07-22 08:56:39
1923
原创 计算宇宙的体积
题目:计算宇宙的体积(假设现在宇宙的年龄为137亿年)宇宙中最快的速度就是光速了,也就是299792458 m/s,那么宇宙爆炸能量很大,如果能以光速膨胀,137亿年后半径就会膨胀为299792458*13700000000*60*60*24*365m宇宙爆炸是以一点为中心向四周膨胀为一个球体,体积为(4/3)*PI*r^3。>>> (4/3.0)*3.14*(29979245
2012-06-17 14:44:01
3061
1
原创 Emacs+auto-complete+clang进行代码补全
Clang是一个C/C++/ObjectC语言的编译器前端,采用LLVM作为后端提供了一个性能接近GCC的编译器。不过我们现在的目标是使用Clang帮助进行代码分析和补全。首先去Clang的官方网站下载一套编译安装,官方网站地址是:http://clang.llvm.org/接下来需要安装auto-complete,下载一份,http://cx4a.org/software/aut
2012-06-17 10:47:47
19211
21
原创 Emacs24隐藏工具栏菜单栏和滚动条无效的问题
前不久发布了Emacs 24.1,下载下来编译安装后发现这样一个问题,以前旧的.emacs文件里明确设置了不显示工具栏菜单栏滚动条,但是它还是都显示了出来,旧的配置是这样的。(tool-bar-mode nil)(menu-bar-mode nil)(scroll-bar-mode nil)后来经过提醒才发现,新版这里已经不能用nil了,必须用0改成:(tool-b
2012-06-14 15:14:25
10408
3
原创 数学黑洞问题
“数学黑洞”:任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍为一个自然数。重复进行上述运算,最终会出现一个神秘的数,请编程输出这个神秘的数。#include #define INIT 1234#define SWAP(arr,i,j)\{arr[i]^=arr[j];arr[j]^=arr[i];arr[i]^=arr[j]
2012-06-01 16:48:02
4673
2
原创 VirtualBox中使用Ubuntu 12.04的问题
Ubuntu 12.04发布了,既然每半年发布一个新版本,当然要看看出了什么新特性,于是赶快去下载一个ISO。因为不打算用这种系统,所以在虚拟机中体验一下即可,令人吃惊的是启动竟然提示错误。This kernel requires the following features not present on the CPU:paeUnable to boot - please use
2012-04-29 14:38:35
3480
2
原创 小技巧:Windows系统找回快速显示桌面快捷键
以前用Windows操作系统的时候经常需要显示桌面,常用的方法是Win+M或者Win+D,因为很多键盘都有Win键所以一直没感觉到它的存在。最近Win键不能用了才发现少了它真不方便,不过找到了个很简单的方法解决。首先右键点击任务栏,选择工具栏---快速启动栏,然后快速启动栏就会显示,这时候右键点击“显示桌面”图标,在桌面建立快捷方式。右键点击该快捷方式,在快捷键那一栏按下C-M-d,就映射为和
2012-02-27 14:59:32
2163
原创 计算Pi(2)
这次使用的是Gauss-Legendre算法,具体描述在:http://en.wikipedia.org/wiki/Gauss%E2%80%93Legendre_algorithm代码如下:#include #include int gauss_legendre(int precision){ double pi; double a, b, t, p; a = 1.0; b
2012-02-13 20:42:57
1861
原创 计算Pi(1)
利用公式为:pi/4 = 1 - (1/3)+(1/5)-(1/7)+...+1/(4n-3)-1/(4n-1)#include double pi(int n){ double s = 0.0; int i; for (i = 1; i <= 4*n - 1; i += 2) { s += (1 / (double)i); i += 2; s -= (1
2012-02-09 23:36:29
1789
1
原创 绘制贝塞尔曲线
简介明了直接上代码:#define PI 3.14159265struct point{ float x; float y;};void decas(int point_count, struct point *point_v, float t, struct point *point_dst){ int r; float t1 = 1 - t; struct poin
2011-12-28 19:46:24
1467
原创 dda直线绘制算法
dda直线绘制算法,理论不好描述,这里就直接贴代码了:/* Draw Line */void line_dda(struct state *state, int x1, int y1, int x2, int y2){ float dx, dy, k, x, y; int r; int t; dx = x1 - x2; dy = y1 - y2; if (abs(dx) > a
2011-12-28 19:10:44
2121
原创 TCP网络通信实例--消息的发送与接收
TCP网络通信示例,用服务器等待客户端连接,并且在客户端连接后发送一个消息后切断。服务器端:#include #include #include #include #if defined(UNIX)#include #include #include #elif defined(WINDOWS)#include #define bzero(p, len) memset
2011-12-27 16:08:11
1580
原创 DS上音频播放相关问题
最近在搞DS上的开发,正好需要用到音频方面的功能。但是libnds音频方面问题实在是多,就我这两天遇到的问题总结一下。DS的有两个CPU,ARM7和ARM9。其中只有ARM7是能访问音频相关的控制寄存器的。我们一般编写程序主要在ARM9端,而需要用到音频功能时通过一些IPC手段发送消息到ARM7,然后ARM7再访问音频相关寄存器。在现在的较新版本libnds上,默认的模板已经做好了安装音频
2011-12-21 11:35:53
1774
原创 调整过的6*12 ANSI字体
因为要做一个项目,需要小字体,本来想寻找更小的字体的,但是太小就不容易控制清晰度,昨天就刚好转换了一个字体,效果不错,特来分享。ProFontWindows字体在9的字体大小下截取,然后经过一些小的调整,首先是'#'字符太小,我将其拉长到和其他字符一样,还有'{'、'}',这两个字符太长,我将它们缩短了两个像素。现在凑成的字体看上去还挺不错的。效果如下:下载方法很简
2011-12-17 12:15:36
1635
原创 一道关于信号的题
信号是UNIX下常见的进程间通信机制。今天碰到一道信号方面题目,与大家分享,题目如下:用fork创建两个子进程,调用signal()让父进程接收键盘上的中断信号(control-c),捕捉到信号后父进程用kill()向子进程发送自定义信号,子进程捕捉到信号后分别输出如下信息后终止:Child process 1 is killed by parent!Child process 2 is
2011-11-13 13:04:48
2230
1
原创 8皇后问题
8皇后问题太经典了,各种算法书解释回溯都用这个例子,下面是求解8皇后问题的代码:#include static int count;#define QUEEN_NUMBER 8#define NO_QUEEN -1#define TRUE 1#define FALSE 0#define ABS(x) ((x)>0?(x):(-(x)))int conflict(i
2011-11-09 11:51:27
1007
原创 Vim输入左括号时自动匹配输入对应的右括号
使用方法为Alt+括号,比如在插入模式下输入(则会自动输入()同时光标在括号之间:imap ()iimap []iimap {}i
2011-11-07 22:19:46
5800
2
原创 GeekOS源代码编译时的packed属性被忽略问题的解决
发生错误的代码segment.h的:struct Segment_Descriptor { ushort_t sizeLow PACKED ; uint_t baseLow : 24 PACKED ; uint_t type
2011-10-04 13:55:26
2125
原创 GeekOS project1 -- 载入可执行文件
这次的项目内容是载入可执行文件。首先按照project0的做法,先修改Makefile,然后make depend, make,再修改.bochsrc,最后运行,竟然发现运行失败,连TODO都没有看到,如图:错误提示说,文件系统没有挂载。看看本次项目的过程就知道原
2011-10-01 20:56:00
6962
7
原创 GeekOS project0 -- 接收键盘输入并在屏幕回显
源代码包中的geekos-0.3.0/doc/hacking.pdf中有GeekOS的简略介绍,项目概览等等,同时在代码包中中给出了project0到project6等几个项目,这几个项目是部分代码缺失的,需要根据项目的要求填充缺失的代码实现所需要的功能,同时在这个过程中了解这个
2011-10-01 12:39:22
7382
1
原创 GeekOS简介和研究GeekOS之前的知识储备
GeekOS是一个教学用的操作系统内核,虽然是个简易而且小型的内核,但是却可以运行在真实的X86 CPU硬件上,它包含了一个现代操作系统所必须的最少功能,比如虚拟内存、文件系统,进程间通信。GeekOS列出了一些项目,分别缺乏操作系统的一系列关键部件,通过补全这些部件的代码就
2011-10-01 12:34:39
2280
2
原创 GeekOS内核的源码级调试
在进一步研究GeekOS内核之前,有必要掌握调试这个技能,有了调试器,可以更直观地查看内部变量的值,也可以单步跟踪程序运行的轨迹。这里研究的调试,当然是指源码级的调试。首先从apt里安装的bochs模拟器可能是没有gdb stub的,也就是不能支持和gdb进行远程连接调试
2011-10-01 09:45:21
3109
4
原创 GNU/Linux环境下搭建GeekOS实验环境
我使用的操作系统为Debian GNU/Linux 6,基本系统安装好后GeekOS实验环境需要安装的组件只有bochs和nasm,直接使用源中的软件包即可:# apt-get install build-essential# apt-get install bochs b
2011-09-30 21:47:10
7537
3
原创 Burrows–Wheeler transform 算法
Burrows–Wheeler transform 算法#!/usr/bin/python# Burrows–Wheeler transform Algorithmdef transform(s, start_symbol, end_symbol): s
2011-09-22 21:37:26
5586
原创 Move-to-front transform 算法
Move-to-front transform 算法#!/usr/bin/env python# Move-to-front transform algorithmdef move_to_front(src): dst = [] index
2011-09-22 21:23:44
3067
原创 代码加行号打印
直接在终端显示文件的话是没有行数标记的,比如:$ cat a.c#include int main(int argc, const char *argv[]){ printf("Hello, world!\n"); return 0;}$ 用下面的脚本可以
2011-09-17 13:37:03
1581
3
原创 21位花朵数
花朵数是这么一个N位数,它的各个位数字的N次方之和为它的本身,比如:1^3+5^3+3^3=153现要求三分钟之内求解21位的水仙花数。#include #include #include #include #define N 21#define NU
2011-09-17 12:52:15
1147
原创 2等于1?
在虚构新闻看到这么一篇文章,叫《「2と1は等しい」 数学界で論議》,中间描述的那些故事就免去了,核心部分在下面这个证明过程:文字版本:a = ba^2 = aba^2 - b^2 = ab-b^2(a+b)(a-b) = b(a-b)a+b = b
2011-09-17 12:15:42
3605
2
原创 Debian 自带的Emacs不能打开手册
使用Debian官方源自带的Emacs会出现这种情况,就是C-h r,或者打开帮助菜单下的更多手册,却发现显示Info file xxx does not exist。这时候可以找emacs23-common-non-dfsg这个软件包,http://packages.deb
2011-08-26 23:35:49
1502
2
原创 Python sqlite获得查询结果表的列名
获得查询结果表的列名:db = sqlite.connect('data.db')cur = db.cursor()cur.execute("select * from table")col_name_list = [tuple[0] for tuple in cur.de
2011-07-25 01:20:27
11162
1
原创 用Valgrind检测内存泄漏
有时候使用malloc或new分配内存空间后会因为各种原因忘记free或delete,而且这一段内存因为分配给了当前应用程序却没被收回而造成占用内存越来越多、可用内存越来越少。解决的办法就是检测内存泄漏并在恰当的地方释放分配的内存。Valgrind就是一个检测内存泄漏的好工具,它
2011-07-15 14:26:44
2663
原创 堆排序(Heap Sort)
#include #include #include #define MAX 10void maxHeapify(int *arr, int i, int size){ int l = (i + 1) * 2 - 1; int r = (i + 1) * 2; int largest, t; if (l + 1 arr[i]) largest = l;
2011-07-02 13:21:12
901
原创 Python输入密码
Python有个自带的getpass模块:import getpasspassword = getpass.getpass(Enter password: )print password 该模块继承了UNIX下的一贯风格,输入密码不回显屏蔽符。 如果需要显示屏蔽符以提示自己确实正在输入密码的话,可以使用下面的模块:import sys, tty, termio
2011-06-29 08:14:00
13669
1
原创 DOSBOX使用经验
自动挂载目录首先创建一个目录作为C盘,比如~/dosbox: mkdir ~/dosbox 打开dosbox配置文件:gvim ~/.dosbox/dosbox-0.74.conf 在最底部的autoexec项里添加:mount c ~/dosboxc:c:/autoexec.bat 就可以实现开机自动挂载C盘并且执行autoexec.bat
2011-06-28 12:05:00
10955
原创 GNU/Linux下Firefox的Adobe Flash Player插件的安装
1:首先,从http://get.adobe.com/flashplayer/下载Flash插件,选择.tar.gz for other Linux,2:解压缩得到一个libflashplayer.so,并以root移动到/usr/lib/mozilla/plugins/tar -xzvf install_flash_player_10_linux.tar.gzmv libflashp
2011-06-22 10:50:00
2606
原创 简单的乱序算法
简单的乱许算法,思想是从n到1迭代,每次迭代随机从0到n-1中抽一个数与当前数字交换,最后得到的序列就是乱序的。该算法可以用于洗牌等地方。函数和测试程序如下: #include #include #include #define MAX 52#define swap(a, b) (a) ^= (b);(b) ^= (a);(a) ^= (b);int* shuffl
2011-06-17 09:33:00
6208
现代体系结构的优化编译器
2010-06-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人