① 开放源代码软件的应用平台
WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。WWW 是 Internet 的多媒体信息查询工具,是 Internet 上近年才发展起来的服务,也是发展最快和目前用的最广泛的服务。正是因为有了WWW工具,才使得近年来 Internet 迅速发展,且用户数量飞速增长。
开源的web服务器软件包括apache、kangle、nginx等。
Blog
Blog 全名Web log,中文意思是“网络日志”,后来缩写为Blog。它是继Email、BBS、IM之后出现的第四种网络交流方式,是网络时代的个人“读者文摘”,是以超级链接为武器的网络日记,是代表着新的生活方式和新的工作方式,更代表着新的学习方式。简言之,Blog 就是以网络作为载体,简易迅速便捷地发布自己的心得,及时有效轻松地与他人进行交流,再集丰富多彩的个性化展示于一体的综合性平台。
开源的Blog软件有b2evolution(php+MySQL)、BLOG:CMS (PHP、基于Nucleus CMS)、BLOG:CMS (PHP、基于Nucleus CMS)等。
论坛
论坛又名网络论坛BBS,全称为Bulletin Board System(电子公告板)或者Bulletin Board Service(公告板服务)。是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。它是一种交互性强,内容丰富而即使的Internet电子信息服务系统。用户在BBS站点上可以获得各种信息服务,发布信息,进行讨论,聊天等等。
开源的论坛应用软件包括phpbb、BMForum、phpwind[等。 应用服务器定是指通过各种协议把商业逻辑曝露给客户端的程序。它提供了访问商业逻辑的途径以供客户端应用程序使用。应用服务器使用此商业逻辑就像调用对象的一个方法一样。简单的说能实现动态网页技术的服务器叫做应用服务器。
开源的应用服务器软件包括Enhydra (java)、JBoss (Java)、Open3 (XML)等。 消息服务器作为网络的节点,专门用来存储、转发网络上的数据、信息(例如:聊天信息)。做一个形象的比喻:消息服务器就像是邮局的交换机,而微机、笔记本、PDA、手机等固定或移动的网络终端,就如散落在家庭、各种办公场所、公共场所等处的电话机。我们与外界日常的生活、工作中的电话交流、沟通,必须经过交换机,才能到达目标电话;同样如此,我们利用个人电脑,PDA,手机等,发送消息,也必须经过消息服务器,因此也可以说是消息服务器在“组织”和“领导”这些接收消息设备。
开源的消息服务器软件包括ArsDigita (Tcl & Java)、Exolab Group (J2EE,整合OpenEJB,OpenJMS,OpenORA,Tyrex)、Zend (PHP)等。 企业应用程序是一个泛指的概念,细分下来可分为企业资源计划(ERP)、客户关联管理、项目管理、内容管理、人力资源管理、自动化采购软件、信息仓库(CIW)、生产计划、库存管理、群组软体、B2B和图书馆资源整合系统(ILS)。
开源的企业应用程序包括Compiere (ERP+CRM)、Compiere、Gnome Planner 、ArsDigita、phpgroupware、J2EE、Akopia、Compiere (ERP+CRM)、openapplications、OpenBiblio等。 所谓无线网络,既包括允许用户建立远距离无线连接的全球语音和数据网络,也包括为近距离无线连接进行优化的红外线技术及射频技术,与有线网络的用途十分类似,最大的不同在于传输媒介的不同,利用无线电技术取代网线,可以和有线网络互为备份。
开源的无线应用程序有kannel、Jwap、Ophelia等。 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
开源的数据库软件有BerkelayDB、MySQL、SQLite等。 “桌面环境”可能仅仅是一个简单的窗口管理器,也可能是一个像 KDE 或者 GNOME这样的完整桌面应用程序套件。
开源的桌面环境类软件包括GNOME、GNUstep、KDE等。
窗口管理类
窗口管理,又名用户界面,电子计算机系统中实现用户与计算机信息交换的软件、硬件部分。软件部分包括用户与计算机信息交换的约定、操作命令等处理软件,硬件部分包括输入装置和输出装置。目前常用的是图形用户界面,它采用多窗口系统,显示直接形象,操作简便。
开源的窗口管理类软件有Afterstep、Twm、fvwm、Window Maker等。
CD刻录类
CD刻录机的功能是:可以刻录CD,读取CD,但是却无法读取/写入DVD,功能上次于COMBO,又次于DVD刻录机。现在多数人使用的是DVDROM,COMBO,DVD刻录机。性能方面:读取——CDROM=CD刻录机<DVDROM=COMBO=DVD刻录机;写入——CD刻录机<COMBO<DVD刻录机。
开源的CD刻录软件有CD Record、Freeburn、Xfburn等。
文件编辑类
文件编辑类软件是一个泛指的概念,细分下来包括办公软件套件、记事本、PDF相关软件、科技文本编辑器、文本编辑器、WYSIWYG和文件处理。
开源的文件编辑类软件包括Gnome Office、KeyNote、FPDF、GNU TeXmacs、FreeDOS edlin、HTMLarea、AbiWord等。
教育类软件
教育类软件是一个泛指的概念,细分下来包括学习支持软件、语言相关软件、数学相关软件、科学研究软件、打字软件和其他教育软件。
开源的教育类软件包括ILIAS、FlashKard、KBruch、BioJava、GNU Typist、KEca等。
金融相关软件
从广义上说,政府、个人、组织等市场主体通过募集、配置和使用资金而产生的所有资本流动都可称之为金融。因此,不仅是金融业者,有关政府的财政,行业企业的行为、以及个人的理财都是金融的一部分。
开源的金融相关软件有GnuCash、JCash、JMoney等。
游戏类软件
游戏有很多种,在不同的媒体会以不同型式出现,使用的道具或参与的人数不一样也会衍生出不同类型的游戏。其中包括:人手游戏、桌上游戏、版图游戏、纸上游戏、纸牌游戏、群体游戏、电子游戏、角色扮演游戏、益智类游戏和其他。
开源的游戏类软件有Abuse、Falcon's Eye、Java Risk、UFO2000、XulMine等。
网络软件
网络及因特网类软件是一个泛指的概念,细分下来包括电子邮件、即时通讯软件、通讯相关软件、文件传输软件、P2P文件共享软件、远程登录、网页浏览器、Webcam、Webgrabber、网络相关软件和其他网络软件。
络及因特网类软件有Magic Mail Monitor 3、AMSN、Slrn、Samba、eMule、RealVNC、Galeon、Dorgem、HTTrack、Apache Tomcat、OpenLDAP等。
数学软件类
是专门用来进行数学运算、数学规划、统计运算、工程运算、绘制数学图形或制作数学动画的软件。
开源的数学类软件包括GAP、MAⅪMA、SINGULAR等。
媒体类
体类软件是一个泛指的概念,细分下来包括音频编辑软件/音频管理软件、图形类/图片浏览类、媒体播放器类、视频剪辑类。
源的媒体类软件包括CD-DA X-Tractor、GOCR/JOCR、JCDSee、CoolPlayer、GNU VCDImager等。
操作系统类
操作系统(英语:Operating System,简称OS)是一管理电脑硬件与电脑软件资源的程序,同时也是计算机系统的核心与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网上与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作接口。
开源的操作系统类软件有开源Unix(System V/BSD)、FreeDOS、Linux、Menuet等。
密码管理类
围绕用户账号密码安全和管理的软件或者硬件的集合。
开源的密码管理类软件包括Password Safe、PINs等。
个人信息管理类
个人信息管理系统是一种提供个人信息组织管理功能的应用软件。其目的是为了便于记录、跟踪和管理各种个人信息。
开源的个人信息管理类软件有Elephant Memory、KAddressbook、KOrganizer等。
编程语言类
计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。如果按语种分,可以分为英文符号语言和汉语符号语言两类。(典型的如:易语言、易语言.飞扬) 电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。目前通用的编程语言有两种形式:汇编语言和高级语言。
开源的编程语言类软件包括DJGPP、GCC、Open64、Objective CAML、PHP等。
屏幕保护软件
屏幕保护程序是电脑程序,原意是通过将画面空白,或在画面上填满移动的图像,避免电脑显示器在静止的情况下产生磷质烙印,从而减低其寿命。现在,屏幕保护程序被用作娱乐或保安用途。
开源的屏幕保护软件有Flurry、KISS Image Screen Saver、Really Slick Screensavers、xmatrix等。
安全软件
安全软件是一个泛指的概念,细分下来包括杀毒软件、加密软件、防火墙、SSH、其他安全软件。
开源的安全软件包括Open Antivirus、GnuPG、Coyote Linux、OpenSSH、Stunnel等。
其他软件
下面列举一些难于分类的开源软件:
Active2
AstroGrep — 有GUI图形界面的Grep
Autopackage — Linux上的软件包管理系统
BibleTime — 圣经学习软件
Bochs — PC积累器
Cygwin — Win32的开源Unix模拟环境
Link Checker — 检查HTML文档的坏连接
Memtest86 — 内存检查软件
Open Scene Graph
Sun Grid Engine —计算机集群软件
TeX — 排版系统
Vitrite — Windows 2000/XP 上使窗口透明的软件
WINE — 在Linux/BSD上运行Windows软件
XFree86 — 视窗系统
gEDA自动化电器设计工具
GPAI 通用公共人工智能平台
② 姹傦细鐢↗AVA璇瑷缂栧啓镄勯摱琛屽剁畻娉旷殑婧愪唬镰
import java.util.*;
class ThreadTest {
static int type = 4, num = 10; //瀹氢箟璧勬簮鏁扮洰鍜岀嚎绋嬫暟鐩
static int[] resource = new int[type]; //绯荤粺璧勬簮镐绘暟
//static int[] Resource = new int[type]; //鍓链
static Random rand = new Random();
static Bank[] bank = new Bank[num]; //绾跨▼缁
Bank temp = new Bank();
public void init() {
//鍒濆嫔寲缁勪腑姣忎釜绾跨▼锛岄殢链哄~鍏呯郴缁熻祫婧愭绘暟
for(int i = 0; i < type; i++)
resource[i] = rand.nextInt(10) + 80;
System.out.print("Resource:");
for(int i = 0; i < type; i++)
System.out.print(" " + resource[i]);
System.out.println("");
for(int i = 0; i < bank.length; i++)
bank[i] = new Bank("#" + i);
}
public ThreadTest4() {
init();
}
class Bank extends Thread {
//阈惰屽剁畻娉曢伩鍏嶆婚挛
public int[]
max = new int[type], //镐诲叡闇姹傞噺
need = new int[type], //灏氶渶璧勬簮閲
allocation = new int[type]; //宸插垎閰嶉噺
private int[]
request = new int[type], //鐢宠疯祫婧愰噺
Resource = new int[type]; //璧勬簮鍓链
private boolean isFinish = false; //绾跨▼鏄钖﹀畬鎴
int[][] table = new int[bank.length][type*4]; //浜岀淮璧勬簮鍒嗛厤琛
private void init() {
// 闅忔満濉鍏呮诲叡銆佸皻闇銆佸凡鍒嗛厤閲
synchronized(resource) {
for(int i = 0; i < type; i++) {
max[i] = rand.nextInt(5) + 10;
need[i] = rand.nextInt(10);
allocation[i] = max[i] - need[i];
resource[i] -= allocation[i]; //浠庣郴缁熻祫婧愪腑鍑忓幓宸插垎閰岖殑
}
printer();
for(int i = 0; i < type; i++) {
if(resource[i] < 0) {
//鑻ュ嚭鐜板凡鍒嗛厤閲忚秴鍑虹郴缁熻祫婧愭绘暟镄勯敊璇鍒欓鍑
System.out.println("The summation of Threads' allocations is out of range!");
System.exit(1);
}
}
}
}
public Bank(String s) {
setName(s);
init();
start();
}
public Bank() {
//none
}
public void run() {
try {
sleep(rand.nextInt(2000));
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
while(true) {
//绋嫔簭娌℃湁瀹屾垚镞朵竴鐩翠笉鏂鐢宠疯祫婧
if(askFor() == false) {
try {
sleep(1000);
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
}
else
tryRequest();
if(noNeed() == true)
break;
}
//浼戠湢涓娈垫椂闂存ā𨰾熺▼搴忚繍琛
try {
sleep(1000);
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println(getName() + " finish!");
synchronized(resource) {
//杩愯岀粨𨱒熼喷鏀惧崰链夎祫婧
for(int i = 0; i < type; i++) {
resource[i] += allocation[i];
need[i] = allocation[i] = max[i] = 0;
}
}
}
private void printer() {
//镓揿嵃褰揿墠璧勬簮淇℃伅
System.out.print(getName() + " Max:");
for(int i = 0; i < type; i++)
System.out.print(" " + max[i]);
System.out.print(" Allocation:");
for(int i = 0; i < type; i++)
System.out.print(" " + allocation[i]);
System.out.print(" Need:");
for(int i = 0; i < type; i++)
System.out.print(" " + need[i]);
System.out.print(" Available:");
for(int i = 0; i < type; i++)
System.out.print(" " + resource[i]);
System.out.println("");
}
private boolean askFor() {
//闅忔満浜х敓鐢宠疯祫婧愰噺骞舵娴嬫槸钖﹁秴镙
boolean canAsk = false;
for(int i = 0; i < type; i++) {
request[i] = rand.nextInt(20);
//阒叉㈢敌璇烽噺瓒呰繃镓闇閲
if(request[i] > need[i])
request[i] = need[i];
}
for(int i = 0; i < type; i++) //阒叉㈤殢链虹敌璇疯祫婧愬叏涓0
if(request[i] > 0)
canAsk = true;
synchronized(resource) {
//阌佷綇鍙渚涜祫婧愭镆ユ槸钖﹁秴镙
for(int i = 0; i < type; i++) {
if(request[i] > resource[i])
//濡傛灉鐢宠疯祫婧愯秴杩囧彲渚涜祫婧愬垯绛夊緟涓娈垫椂闂村悗閲嶆柊鐢宠
return false;
}
}
return canAsk;
}
private void tryRequest() {
//鍒涘缓鍓链灏濊瘯鍒嗛厤璇锋眰
synchronized(resource) {
for(int i = 0; i < type; i++)
//渚濈劧瑕侀槻姝㈣锋眰閲忚秴鍑鸿寖锲
if(request[i] > resource[i])
return;
for(int i = 0; i < type; i++) {
//澶嶅埗璧勬簮閲忓苟鍑忓幓闇姹傞噺鍒颁竴涓鍓链涓
Resource[i] = resource[i];
Resource[i] -= request[i];
}
System.out.print(getName() + " ask for:");
for(int i = 0; i < type; i++)
System.out.print(" " + request[i]);
System.out.println("");
if(checkSafe() == true) {
//濡傛灉妫镆ュ畨鍏ㄥ垯灏嗗坛链鍊艰祴缁栾祫婧愰噺骞朵慨鏀瑰崰链夐噺鍜岄渶姹傞噺
for(int i = 0; i < type; i++) {
resource[i] = Resource[i];
allocation[i] += request[i];
need[i] -= request[i];
}
System.out.println(getName() + " request succeed!");
}
else
System.out.println(getName() + " request fail!");
}
}
private boolean checkSafe() {
//阈惰屽剁畻娉曟镆ュ畨鍏ㄦ
synchronized(bank) {
//灏嗙嚎绋嬭祫婧愪俊鎭鏀惧叆浜岀淮璧勬簮鍒嗛厤琛ㄦ镆ュ畨鍏ㄦэ纴0~type鍙鐢ㄨ祫婧愶纺type~type*2镓闇璧勬簮锛弔ype*2~type*3鍗犳湁璧勬簮锛弔ype*3~-1鍙鐢+鍗犵敤璧勬簮
for(int i = 0; i < bank.length; i++) {
for(int j = type; j < type*2; j++) {
table[i][j] = bank[i].need[j%type];
}
for(int j = type*2; j < type*3; j++) {
table[i][j] = bank[i].allocation[j%type];
}
}
//鍐掓场鎺掑簭鎸夐渶姹傝祫婧愪粠灏忓埌澶ф帓
for(int i = 0; i < bank.length; i++) {
for(int j = i; j < bank.length-1; j++) {
sort(j, 4);
}
}
//杩涜屾ゆ椂鍒荤殑瀹夊叏镐ф镆
for(int i = 0; i < type; i++) {
table[0][i] = Resource[i];
table[0][i+type*3] = table[0][i] + table[0][i+type*2];
if(table[0][i+type*3] < table[1][i+type])
return false;
}
for(int j = 1; j < bank.length-1; j++) {
for(int k = 0; k < type; k++) {
table[j][k] = table[j-1][k+type*3];
table[j][k+type*3] = table[j][k] + table[j][k+type*2];
if(table[j][k+type*3] < table[j+1][k+type])
return false;
}
}
}
return true;
}
private void sort(int j, int k) {
//阃掑綊鍐掓场鎺掑簭
int tempNum;
if(table[j][k] > table[j+1][k]) {
for(int i = type; i < type*2; i++) {
tempNum = table[j][i];
table[j][i] = table[j+1][i];
table[j+1][i] = tempNum;
}
/*temp = bank[j];
bank[j] = bank[j+1];
bank[j+1] = temp;*/
}
else if(table[j][k] == table[j+1][k] && k < type*2) //姝よ祫婧愰噺鐩稿悓镞堕掑綊涓嬩竴涓璧勬簮閲忔帓搴忓苟涓旈槻姝㈣秴鍑鸿寖锲
sort(j, k+1);
}
private boolean noNeed() {
//鏄钖﹁缮闇瑕佽祫婧
boolean finish = true;
for(int i = 0; i < type; i++) {
if(need[i] != 0) {
finish = false;
break;
}
}
return finish;
}
}
public static void main(String[] args) {
ThreadTest t = new ThreadTest();
//钖庡彴绾跨▼锛岃惧畾绋嫔簭杩愯屽氶暱镞堕棿钖庤嚜锷ㄧ粨𨱒
new Timeout(30000, "---Stop!!!---");
}
}
③ java实现论坛权限管理
我把之前写过的给你好了,办法应该有很多种,我使用比较简单的session属性判断,就是1。如果管理员登录了,马上设置管理员的session属性,2,3。在有管理员区分的页面的前面加个管理员的session判断就行了
1.登录页面或登录处理页面
if(管理员账号密码验证成功) {
session.setAttribute("admin","logined"); //设置session
}
2.登录判断页面
_adminLogined.jsp
<%@ page language="java" pageEncoding="gb18030"%>
<%
//==========管理员判断===========
String sessAdmin = (String)session.getAttribute("admin");
if(sessAdmin == null || !sessAdmin.trim().equals("logined")) {
response.sendRedirect("login.jsp");
return; //这个return 很重要 否则会继续向下执行 详见response特性
}
%>
3。论坛页面(有用到管理员权限的)如:删除,修改页面
在这些页面前面加上这句,如果不是管理员,删除修改页面是访问不了的
<%@ include file="_adminLogined.jsp" %>
④ 怎样把JAVA源代码编译exe文件
你可以下载专门的工具比如:http://java.chinaitlab.com/tools/714803.html 但是如果你想自己知道怎么做的,可以参考下面文章
******************************************************************
第一种:在jbuilder中:
首先你要保证Run菜单-->Run Project能顺利运行
然后Wizards菜单-->Native Executable Builder
选中Compress the contents of the archive(产生jar文件的话)
Next-->Next-->选中Always include all classes and resources再Next-->Next-->Next
选中Windows GUI"exe"(产生EXE文件的话)-->Finish
再在项目的文件列表中的Native Executable右击-->Make就可以了
第二种:在cmd 下生成jar文件
abc.txt内容如下:
Manifest-Version: 1.0
Main-Class: main-class-name(回车)
在cmd下:
javac *.java
jar cvfm abc.jar abc.txt *.class
示例——生成能通过鼠标双击就执行的.jar文件
一、 编写Java源程序Test.java如下:
// Test.java
import javax.swing.*;
/**
* @(#) Test.java
* Copyleft (c) 2002 RatKing
* @author <a href="[email protected]">RatKing</a>
* @version 0.1, 2002-11-7
* 描述:一个测试用的Java Application
*/
public class Test extends JFrame {
public Test(String title) {
super(title);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().add(new JLabel("测试!", JLabel.CENTER), SwingConstants.CENTER);
this.pack();
}
public static void main(String[] args) {
try {
//UIManager.setLookAndFeel(UIManager.());
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
e.printStackTrace();
}
Test t = new Test("Test - 测试");
t.setVisible(true);
}
}
二、编译Test.java为Test.class(当然假设你事先已经设置好了JDK的环境变量PATH和CLASSPATH)
在命令行执行编译命令:
javac Test.java
三、用文本编辑器(比如记事本/UltraEdit等 - 甚至用ECHO命令加管道“>>”)编写如下manifest文件,并保存为abc.txt
Manifest-Version: 1.0
Main-Class: Test
【注意】文件abc.txt内必须是3行文本:
第一行的内容依次是:“Manifest”、英文减号、“Version”、英文冒号、英文空格、数字“1”、英文句号、数字“0”
第二行的英文冒号与Test之间必须要有一个英文空格!!!
第三行是一个空行,也就是说,你要在Test之后键入一个回车,然后才可以存盘退出!!!
如果冒号后面没有空格,可以生成jar文件但不能执行;如果Test后没有回车符,则生成jar文件时会报错。
四、将Test.class打包成.jar文件,并使用abc.txt指明哪一个是带有public static void main()的“主函数”
在命令行执行编译命令:
jar cvfm Test.jar abc.txt *.class
你可以使用WinZip之类的解压软件看一看刚刚生成的Test.jar文件里到底有什么。
五、用鼠标双击Test.jar的图标,应该可以看到Test执行后的窗口。
〖说明〗如果你正确地安装了Java运行环境(JRE),那么.jar的图标应该是象一页纸并有一个A的形状,就如同写字板的图标。
如果你的.jar文件默认的打开关联不对,可以重新设置:
我的电脑->查看(Win9x)或工具(Win2k)->文件夹选项->文件类型->选择JAR文件->编辑该类型文件的属性->操作栏填入[ open ](不填引号和中括号[]),并在“执行操作的应用程序”栏填入[ "C:\Program Files\Java\j2re1.4.1\bin\javaw.exe" -jar "%1" %* ](填两对英文引号,不填[])
并按“确定”、“关闭”退出对.jar文件关联的编辑。
(你的javaw.exe文件是不是位于C:\Program Files\Java\j2re1.4.1\bin\路径下,视你自己电脑的情况而定)