① 開放源代碼軟體的應用平台
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\路徑下,視你自己電腦的情況而定)