http://antkillerfarm.github.io/

SQL与数据库

这几天看到了这篇文章:

http://www.cnbeta.com/articles/104987.htm

之前许多课本中的概念顿时浮现在眼前。曾几何时,SQL成了数据库的同义词,以至于离开SQL就没法操作数据库了。但其实SQL所代表的关系型数据库,只是数据库的一类而已。除此之外还有很多其他类型的数据库。

Oracle的广告词,给当时尚在学校的我产生了这样的错觉:“只有数据库,才是处理大量数据的最好方法。”直到后来随着自己技术的进步,才知道这样的想法是如何的荒谬。

一个身边的例子,有一次我们需要处理一批数据,在使用数据库的情况下,需要2天才能处理完,峰值时内存的占用接近4G。但这还不是最糟的,关键的问题是以后数据的规模会越来越大,一旦内存占用超过4G,旧的32位硬件软件就不够用了。(当时我们对硬件了解的不多,不知道Intel X86有PAE模式,以为4G就是32位PC的极限了,其实不然。)

于是,有位同事说,这批数据虽然量大,但规则并不复杂,干脆用最原始的写文件来做吧。结果2天的处理时间缩短为1天,内存占用减少为300M。其实这也没有什么神奇的,一般的关系型数据库通常由三部分组成:SQL解释器、事务引擎和存储查询引擎。如果能够根据具体情况,去掉前两部分,并对第三部分进行优化,完全可能比Oracle做的更好。毕竟在软件这个领域并不存在超现实的东西,Oracle再牛也是跑在相应的硬件、软件之上的,少不了要和CPU、内存、硬盘打交道。

结论:不要太过依赖数据库,有的时候没有数据库,更快,更简单。

Symbian开发

1)试着装好了Carbide c++以及S60 3rd SDK后,却发现不能在C盘以外的地方建工程(在默认的C:\Symbian\Carbide\workspace之外建工程是可以的),真没想到Nokia出的工具还有这样不友好的限制。

PS:它的说明说工程要和SDK放在同一个盘中,结果我把SDK装在E盘,结果还是在C盘建工程可以,在E盘建不行,而且多次安装之后,我的系统崩溃了,郁闷,这个系统用了2年,都没有重装…

2)Symbian S60 2nd 和 3rd 的区别

http://www.opda.com.cn/viewthread.php?tid=182217&page=1#pid3004888

3)Carbide c++的一个小BUG

如果在开始利用向导生成代码时,没有选择armv5或gcce,而只选择了模拟器的情况下,在代码生成之后,再添加armv5或gcce的话,是不能自动生成sis文件的,可以在Project->Properties->Carbide c++->Build Configurations->SIS Builder中添加。

Sqlite

《Inside Sqlite》是最好的参考书,目前已经有人把它翻译成中文,可以在CSDN上找到。

《SQLite Optimization FAQ》另一篇很好的文章。

http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html

关于编译和使用的问题,写的最好的是以下两篇:

http://www.99inf.net/SoftwareDev/VC/39396.htm

http://www.cnblogs.com/giszhang/archive/2008/10/09/1307509.html

WebKit

WebKit的代码可以从它的官网www.webkit.org下获得。

在以下网页可以获得webkit向各种GUI移植的相关信息。

http://trac.webkit.org/wiki

由于获得的代码比较新,所以在linux平台下常有一些组件由于过于古老而导致编译失败。所以需要使用yum或者apt-get之类的工具从网上更新相关的组件。这里不推荐使用RHEL或者CentOS之类的服务器版本,因为服务器版本为了追求稳定性,不但组件不是最新的,就连网上的组件源也不是最新的。

可以使用ubuntu 9.04桌面版,不过里面缺少很多开发用的组件,除了

http://trac.webkit.org/wiki/BuildingGtk

列出的之外,还有不少组件需要下载。主要有:

1)autoconf
2)libtool
3)gtk-doc-tools
4)libgail-dev

Apache与CGI

本来以为CGI编程会比较复杂,没想到从原理的角度,似乎比之前的JSP还要简单一些。这次主要是用C来编写CGI,使用的web服务器是Apache 2.0.55。网上看到了几篇同类的文章,但大多过于简略,有的甚至颇有错误,所以自己就重新写一篇吧。

1)配置httpd.conf

如果是默认安装的话,只要将

AddHandler cgi-script .cgi

改为

AddHandler cgi-script .cgi .exe

即可。其他的完全不用改,只要你将后面编好后的.exe放到默认的cgi-bin中就行了。如果你要将.exe放到其他路径下的话,ScriptAlias和Options ExecCGI会派上用场。(详细的用法,翻手册查吧!)别忘了修改了配置之后,要重启Apache。

2)最简单的例子

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main(int argc, char* argv[])
{char buf[256];char *req;printf("Content-type: text/html\n\n");printf("");printf("hello world!");strcpy(buf,"HTTP_ACCEPT");req = getenv(buf);printf("%s",req);strcpy(buf,"HTTP_REFERER");req = getenv(buf);printf("%s",req);strcpy(buf,"QUERY_STRING");req = getenv(buf);printf("%s",req);printf("");return 0;
}

网上的例子只有输出,没有输入,其实不算好例子。用VC之类的编译器编好后,放到cgi-bin中,在浏览器中输入以下地址http://localhost/cgi-bin/cgi.exe?abc就可以看到效果了。还有printf("Content-type: text/html\n\n");是一定要有的,没有的会报HTTP 500的错误,有的例子中说printf("\n");就行了,这是不对的,至少在默认配置下,这样做的结果是你可以下载该.exe,但不能把它当做CGI来执行。

从这个例子,以及Apache官方的例子(http://httpd.apache.org/docs/1.3/howto/cgi.html)

#!/usr/bin/perl
print "Content-type: text/html\r\n\r\n";
print "Hello, World.";

中可以看出,Apache的作用其实是重定义了这些CGI程序的标准输入输出,以及设置了一些系统变量。这才是它支持多种编程语言编写的CGI的真正原因,试想还有哪种语言不支持标准输入输出呢?

可以在http://www.boutell.com/cgic/中获得CGIC的代码,这是一个C写的CGI开发库,本文的示例就是在这个库的代码的启示下写出来的。

3)Linux下的Apache目录结构

Windows下Apache的各个目录都放在一起,因此使用起来比较方便,而Linux下Apache的各个目录分散在各个地方不是太好找,特记录一下,以作备忘。

conf在/etc/apache2下,但是Linux下的httpd.conf实际上是个空文件,它的内容被分散到该目录下的其他文件中。

cgi-bin在/usr/lib/cgi-bin下。

bin下的文件在/usr/sbin下可以找到。

modules在/usr/lib/apache2下。

如何在bat文件中编写脚本,使得启动命令行之后,能在命令行下执行命令?

cmd /k dir

如上所示的命令,在启动命令行之后,会在命令行下执行dir命令。

Visio

如何保存成图片

1.选中打算保存的区域。

2.“文件”->“另存为”。

3.如果需要缩放的话,调整保存的大小即可。

内存数据库

如GemFire。

硬盘安装Linux

2013.9

最近重新开始研究Android和Linux,由于已经快2年没有弄过了。因此之前下载的linux发行版也不打算再继续用了,省得到了Android开发的时候还要更新一大堆的包。

看了一下Google官网上对于Android source的编译条件,再结合2年前编译Android 2.2(Froyo)的经验,在虚拟机上跑Linux的方案首先被排除。开玩笑,16G的RAM/SAWP的开销,哪是VM能搞得定的。就连Froyo在虚拟机上都编不过去,何况是4.3(Jelly Bean)了。

2年前编译Froyo,用的是Wubi安装的Ubuntu 10.04。这次看了一下Jelly Bean的编译条件,100GB+的空间。忽然觉得做软件这么多年,还从来没有在PC上认认真真的安装个双系统用用,实在是职业生涯的一个污点。于是在下载了Ubuntu 12.04之后,老老实实的在网上搜索起如何硬盘安装的办法来。

之所以选择硬盘安装,其实实在是觉得刻张盘太麻烦了。如今就连卖本本的厂商都不提供Recovery CD,而改用Recovery分区来恢复系统。想来硬盘安装Ubuntu也早无技术难度可言了。

硬盘安装的步骤如下:

1)EasyBCD和ISO

2)

title Install Ubuntu
root (hd0,0)
kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-11.10-i386.iso ro quiet splash locale=zh_CN.UTF-8
initrd (hd0,0)/initrd.lz

3)

把准备好的iso用压缩软件或者虚拟光驱打开,找到casper文件夹,复制initrd.lz和vmlinuz到C盘,然后在把iso也拷贝到C盘。

4)

sudo umount -l /isodevice

5)

安装好之后,没有GRUB开机菜单的话:

sudo -i
mount /dev/sda7 /mnt
grub-install --root-directory=/mnt /dev/sda

下面针对最近几天的安装实践,做一个总结性的概括:

1)刚开始的时候,由于不熟悉Ubuntu 12.04的安装步骤,选择了错误的选项,发现之后中断系统安装。重启,结果不但Ubuntu没有安装好,就连Windows也进不去。这时由于之前没有刻录Live CD的原因,只好使用Recovery分区恢复Windows系统。

2)我的本本是ASUS的,在开机时候按住F9,即可启动一键恢复功能。由于这个功能也是第一次使用,因此当选择将Windows恢复到第一个分区,并在恢复过程中出错的时候,我选择了重启。然后选择将Windows恢复到一个硬盘。。。结果除了Recovery分区之外的所有分区都被删除了。保存在电脑中的数据也全部丢失。看来装系统始终是件危险的工作。安装之前一定要将重要数据备份到移动硬盘上。

3)ASUS的一键恢复功能,会重启机器若干次,且每次的画面高度雷同,因此很让人觉得是不是机器陷入了有问题的死循环之中。在反复折腾几次之后,我也泄了气,任由它先无限重启下去。后来大概是重启到第4次之后,我发现桌面的分辨率有改变,然后才意识到这些重启估计是正常现象,并不是死循环。

4)Ubuntu的虚拟内存使用的是交换分区的方式,而不是Windows的交换文件。因此要单独划一个分区用于虚拟内存的数据交换。

5)Win7的压缩卷功能对于系统分区不好使,由于有不可移动的数据存在,系统盘最小也要460G(硬盘总共1T),这实在是太大了。可以使用Acronis Disk Director Suite调整系统分区的大小。但是需要注意的是,Windows下的分区工具对分区数量的调整,会影响到GRUB的执行,需要通过grub shell的命令切换到Linux下,然后执行grub update,方可恢复正常。而Linux下的分区工具(如GParted)就没有这个问题。

6)GParted在调整分区大小,主要是分区首地址右移方面,执行效率非常慢。Acronis Disk Director Suite没试过,没准会好些。

7)分区的话题说完了,继续谈谈对Linux启动过程的心得。会提到一些名词,但是不会展开来说。首先是BIOS和UEFI。它们决定从哪个存储介质启动。

8)MBR的结构。MBR决定了一个介质最多只有3个主分区和1个扩展分区。一个扩展分区可包含若干个逻辑分区。

9)GRUB和LILO。

10)initrd和vmlinuz。initrd包括image-initrd和cpio-initrd。zImage和bzImage的区别和作用。

11)在逛Ubuntu软件中心的时候,发现了Batttle of Wesnoth这个开源的回合制战旗游戏。试着玩了一下,感觉蛮不错的。正好这个项目在Source Forge上使用Git管理源代码。考虑到Android Source也是用Git管理的,于是就用Git下载了Batttle of Wesnoth的source来熟悉一下Git的用法。

12)在linux下有个叫做gitk的Git GUI工具。

大杂烩, 硬盘安装Linux相关推荐

  1. linux添加磁盘后进入grub,从硬盘安装 Linux 和从 GRUB 命令行启动操作系统

    标题 +=================================================+ |  从硬盘安装 Linux 和从 GRUB 命令行启动操作系统  | +======== ...

  2. Ubuntu使用技巧(三), 硬盘安装Linux(UEFI)

    VNC vino & remmina ubuntu不同于一般的发行版,它对桌面做了很大的改动,因此通常的VNC手段对其并不好使. 但其实它已经自带了相关的应用: 服务端:vino 设置-> ...

  3. 【转】Windows7硬盘安装Linux

    2019独角兽企业重金招聘Python工程师标准>>> 此方法适用于原来电脑上安装有windows7,然后再硬盘安装Linux系统.这种情况可能也是大部分人的情况. (其实这个方法还 ...

  4. Xp下的程序编译成linux,Windows XP下硬盘安装Linux系统

    作为一个Linux新手,第一次安装Linux系统,经过几个小时摸索,终于搞清楚在Windows XP系统下硬盘安装Linux系统的方法,跟大家共享. 第一步:在Window系统下必须存在两个分区(不妨 ...

  5. linux系统外接硬盘_如何使用外部硬盘安装linux系统?

    如何使用外部硬盘安装linux系统? 使用外部硬盘安装linux系统的方法: 1.准备好一个固态硬盘和一个可以格式化所有数据的U盘. 2.下载LinuxLive USB Creator软件和所需的li ...

  6. linux伤硬盘,硬盘安装linux

    秋分球阀虑及汇集协定坯布抹额变卖陆风铺板:娼妇列编估计心碎契纸初婚逞强.愣怔立户黄酒南丹不法保安前嘴?抗虫产床残骸岫岫幕末龙廷老理,官罢签字民治玄远暗淡沙坪另售民命随葬.测绘草帽零时钱王马鸡称职亏困麦 ...

  7. linux 从命令行启动,硬盘安装Linux和从Grub命令行启动操作系统

    发信人: (飞象过河), 信区: Linux 标 题: 硬盘安装Linux和从Grub命令行启动操作系统 发信站: 瀚海星云 (2004年10月18日22:44:09 星期一), 站内信件 标题 += ...

  8. 安装Linux系统时卡在命令行了,从硬盘安装Linux和从Grub命令行启动操作系统

    从硬盘安装Linux和从Grub命令行启动操作系统 发表于:2007-07-04来源:作者:点击数: 标签: 内容简介 ---------------------------------------- ...

  9. Win7下硬盘安装Linux双系统

    参考如下两篇文章,基本能搞清楚如何安装. 1. Win7下硬盘安装Linux双系统 Win7下硬盘安装CentOS6.2 http://www.3fwork.com/b902/002405MYM032 ...

最新文章

  1. Visual Studio 2013 中如何设置断点
  2. 做到这23条,你就成熟了!
  3. .netcore下的微服务、容器、运维、自动化发布
  4. linux db2sysc 内存,db2sysc进程占用linux内存持续增长,请各位指点。
  5. iOS开发之三方分享(shareSDK)
  6. python全局解释器锁 tensorflow_《深度剖析CPython解释器》25. 解密Python中的多线程(第一部分):初识GIL、以及多个线程之间的调度机制...
  7. 5 table滑动固定_淮南滑动管托固定管托
  8. foobar 2000|foobar2000中文版32/64位下载 v1.3.16
  9. MEGA这个网盘你可以拥有,超级良心
  10. yarn下载报错There appears to be trouble with your network connection. Retrying.
  11. 递增有序顺序表的插入 (20分) 实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置
  12. 关于python循环结构错误的是_以下关于Python的循环结构说法错误的是(_____)。...
  13. 解决目标检测中密集遮挡问题——Repulsion loss
  14. 位于0/nut文件里的'Calculated'边界条件是什么意思?【翻译】
  15. 个人上班作息时间规划(周一至周五)
  16. 如何在iTC设置App内购,这是一篇细致到代码都给你看的指南!
  17. MSP430程序库九数码管显示
  18. 【啊哈算法学习笔记】2.栈
  19. linux搜索文件内容
  20. 自学python能干些什么副业好-工作多年,总结出几个比较野的副业路子!

热门文章

  1. 7-Zip CommondLine 使用记录
  2. mysql导到相对位置_MySQL数据备份与恢复
  3. typescript数组,对象,接口实例
  4. 使用rem的简单处理
  5. 组装自己的tesla超级计算机
  6. 3D集合图元:最小边界框/包围盒(boundingbox)
  7. Unity 2018.3地形功能更新介绍
  8. LRN和Batch Norm
  9. SQL Server代理(4/12):配置数据库邮件
  10. 在Eclipse中搭建Python Django