继续谈谈其它语言的开发。
3.2) 动态语言
这里指的是包括脚本语言,解释型语言在内的编程语言,例如Java,Perl,Python,PHP,JavaScript,Ruby,Shell Script,等等。
从开发环境角度看,动态语言都有自己的运行环境,而且通常都是跨平台的。因此,编写代码,调试运行则完全可以在自己的环境中完成,只是大多是命令行的方式。Java是个例外,因为它最初是作为系统编程语言设计的,因此有着和C一样的编译过程,只是不需要链接(这也使它有了成为动态语言的可能:-))
动态语言的IDE也相对多的多,而且很多都是开源的,同时由于支持动态语言相对容易,通用的IDE往往也通过插件(plugin)的方式扩展对动态语言的支持,这也使IDE的选择容易一些:可以选择插件丰富的通用IDE,在这方面,Eclipse有着相当的优势。
需要注意的是,这些语言通常都没有专门的UI库,因此常见的UI工具都会有相应的绑定(binding),可是IDE就不一定支持了。Java又是个例外,不过我自己已经不再继续Java的开发了,最近基本没花什么时间在上面。
我常常用Shell script 完成一些简单的重复性工作,而Python则被用来作原型(prototype),不过最近一直考虑可以把它作为主要的语言编写应用程序。Java ......
并发与竞态
解决竞态问题的途径是保证对共享资源的互斥访问。
访问共享资源的代码区域称为临界区,临界区需要以某种互斥机制加以保护。中断屏蔽、原子操作、自旋锁和信号量等是Linux设备驱动中可采用的互斥途径。
中断屏蔽
中断屏蔽将使得中断与进程之间的并发不再发生,而且,由于Linux内核的进程调度等操作都依赖中断来实现,内核抢占进程之间的并发也就得以避免了。但是,需要注意是的是长时间的中断是危险的,有可能导致数据丢失或着系统崩溃。
local_irq_disable()和local_irq_enable()都只能禁止和使能本CPU内的中断,不能解决SMP多CPU引发的竞态。
local_irq_save(flags)除了进行禁止中断操作以外,还保存目前CPU的中断位信息,local_irq_restore(flags)进行相反的操作。
如果只想禁止中断的底半部,应使用local_bh_disable(),使能底半部使用local_bh_enable()。
原子操作
原子操作指的是在执行过程中不会被别的代码路径所中断的操作。
Linux内核提供了一系列函数来实现内核中的原子操作,这些函数又分为两类,分别针对位和整型变量进行原子操作。
整型原子操作
1. 设置值 void atomic_set(atomic_t *v,int i); Atomic_t v = ATOMIC ......
include/linux/sched.h
384 struct task_struct {
385 volatile long state;
386 struct thread_info *thread_info;
387 atomic_t usage;
388 unsigned long flags;
389 unsigned long ptrace;
390
391 int lock_depth;
392
393 int prio, static_prio;
394 struct list_head run_list;
395 prio_array_t *array;
396
397 unsigned long sleep_avg;
398 long interactive_credit;
399 unsigned long long timestamp;
400 int activated;
401
302 unsigned long policy;
403 cpumask_t cpus_allowed;
404 unsigned int time_slice, first_time_slice;
405
406 struct list_head tasks;
407&nb ......
1. ls:列出文件列表
格式: ls option,option可以是: -a 列出隐藏文件,-l 列出文件详细信息
2. pwd:查看当前目录
3. mkdir: 创建目录
4. touch: 创建文件
5. cd: 切换目录
6. cp: 拷贝文件/目录
格式: cp srcfile desfile
7. mv: 移动文件/目录
格式: mv srcfile desfile
8.rmdir: 删除目录
9.rm: 删除文件
10.chmod: 改变文件权限
格式: chmod user+permission file
user的取值为: a(全部用户)、用户、组
permission的取值: x(执行权)、w(写权)、r(读权)
11.chown: 改变文件属主
格式: chown option user file, option: -R表示递归
12.chgrp: 改变文件属组
格式: chgrp option usergrup file, oprion: -R表示递归 ......
This is a memo of setting up Suse 10.3 on Mon Mar 17, 5:18 PM
Download Open Suse: http://en.opensuse.org and see http://en.opensuse.org/Download_Help
Summary - These tools were configured to use:
Apache 2.2 web server
Bison 2.3
Flex 2.5.33
Ftp server
Gcc 4.2.1 (C/C++)
Java 1.5.0
Mono (C# cross compiler)
MySQL (Ver 14.12 Distrib 5.0.45, for suse-linux-gnu (i686) using readline 5.2)
Perl (v5.8.8 built for i586-linux-thread-multi)
Php (PHP 5.2.4 with Suhosin-Patch 0.9.6.2 (cli) (built: Sep 23 2007 14:12:53))
phpBB 3.0.1
Python 2.5.1
SSH server
Demos
cgi-bin/hi.cgi
(cgi written in Perl)
cgi-bin/hi.pl
(cgi written in Perl)
cgi-bin/chi.cgi
(cgi written in C)
php/index.php
(PHP)
cgi-python/hi.py?user_name=me
(Python as cgi, use mod_python.cgihandler as handler)
python/index.py (with a function hello(req, who))
(Python, use mod_python.publisher as handler, the better way)
Perl using MySQL database
Apache
www root is /srv/www/htdocs/
......
编辑
$netbeans_home/etc/netbeans.conf,在"netbeans_default_options"项中添加"-J-
Dawt.useSystemAAFontSettings=on --fontsize=12"
p.s:让所有的Java程序都使用反锯
齿: export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'
-------------------------------------------------
netbeans.conf 里 netbeans_default_options 后面加上: --locale en_US
再切换到 Ubuntu 中文环境,打开 NetBeans,已经是英文界面了,编辑区域字体也正常 ......