Ⅰ linux 為什麼沒有病毒為什麼沒有人攻擊
Linux是「不怕」病毒,變成了Linux「沒有」病毒,這個論調歪的可以。確實,還有很多人在類似的一系列軟體上關於安全(的理解)有誤解,比如:firefox可以被病毒感染的,因為firefox沒有自帶殺毒軟體,所以firefox的安全也是神話。其實一點(也)不是,firefox的內部隔離制度,以及對ActiveX和VB的不支持本身就難以讓病毒利用。同理,關於Linux下的病毒少的原因,開始有人說Linux誕生年代少的有之,其實Linux作為一款Unix-like的系統,上面運行了多少BSD系列的程序,其設計思想和軟體都有經過比windows時間長的多的考驗。另外說病毒少的,或者運行Linux機器少的有之,經濟利益低下,以致於黑客不屑。其實真正運行大型商業數據的很多是Linux。而且Linux中心型的大型網站太多了,最起碼任何一個版本都有一個以上這樣的中心,如果按照數量論的說法,只要這些網站其中任何一個有問題都會大規模爆發,但是實際上沒有出現過這種問題。所以這些概念根本是在混淆視聽,如果真的這些能導致危害,Linux的經濟背景和數量一點不少,可惜,這些都是胡說。
其實從計算機病毒的概念來說,不就是惡意程序么,帶有自繁殖和破壞等特性。如果說系統不會有病毒,那麼就是說寫不出這種程序了,這本身不可能。雖然概念有些抽象,但是一個程序員惡意目的的寫一個能夠復制和增殖自己的程序有什麼難的,一個菜鳥Linux玩家也不用多久就能寫出(shell做這個很簡單,而Linux的shell又那麼好)。但是安全不是什麼防火牆和殺毒軟體以及一個「小心」或者「看」這樣簡單的詞彙來解決的,Linux早有一套對這種問題如何防範的方法了。
訪問控制矩陣是一個,Linuxer不厭其煩的輸入密碼再輸入,有時也非常討厭,但是很好的保證的系統缺少被惡意軟體修改的機會,一個病毒最多在非常有限范圍內實現增殖和內存消耗,但是無法危害整個系統。線程保護做得也不錯,那種許可權提升的空間被擠壓。每個版本自帶的過濾器,防火牆,很多版本是直接安裝的,雖然不配置不會怎麼好,但是好過沒有。而且快速的升級和修補,使得系統被利用的漏洞非常難以見到,而軟體的修補更加快速。
我記得有人這么說:微軟的內核代碼是封閉的,按說應該更安全,但是有些時候偏偏比較奇怪,Linux開發的源碼更好的可以把病毒隱患消除在內核的層面。Linux經常暴內核漏洞,這是正常現象,不是缺點,這是優點,那是好多都是無數人在想在做這件事,為的是更加安全,不必大驚小怪,他們總是想:「這樣寫的內核,可能有什麼安全問題呢?」於是進行了修改,所以我們內核的升級和補丁不是被動的,而是很多時候主動的出現的,這種做法在Unix-like的系統中很常見,比如安全著稱的OB就是通過這種檢查方法從根本上減少安全問題,所以才有了問世6年時間無漏洞出現而10年時間只有2個輕微漏洞被發現的佳績。也就是說Unix-like類的系統一旦補上一個補丁,就消除了無數條隱患。而windows思維的就相反,windows很少能夠從內核級別打補丁,升級速度非常緩慢,所以很多補丁是治標的,不能治本,而且很多不是windows光補丁就能解決的,比如線程許可權控制,不可能因為病毒的存在,windows的結構就因此改變了。
而Linux軟體的開放性的另外一個好處是:他開源,他就接受大眾的監督和統一管理,病毒代碼很難藏身,而且現在Unix-like系統的軟體大部分不是像windows那樣隨意下載傳播,而是都有人維護和上傳的,一旦發生問題,很快就能定位,找出病毒來源。我很少見人不是從自己的源中安裝軟體,即使不是自己的源,也是sorceforge之類的網站,而二進制的安裝需要編譯,這就讓病毒傳播途徑截斷了,病毒在這里遇到的是一個悖論:病毒要起作用就要讓形成可執行文件,而形成可執行文件病毒就失去作用。(ps:承認自己的無知,其實我不知道編譯會使病毒消失,這個不是我的研究結論)。對於大部分源內的二進制包,一般Linux軟體管理器都有強制的md5驗證機制,所以如果有病毒篡改,很容易就發現了。想散播病毒?Linux通過軟體來機會太少了。
當傳播途徑被截斷,利用漏洞被修補,觸發條件不能達成的時候,病毒——惡意程序——也無法成為效果上的病毒,只能算是多餘的程序罷了,而且很多時候他們連感染的能力都沒有了,來了的時候來,然後溫順的等到連同病毒文件一起被刪除。所以雖然Linux下也有不少殺毒軟體,主要是對付跨平台操作時windows上的病毒的。
總之:Linux「不怕」病毒,而不是Linux「沒有」病毒,借用某篇文章的結論:現在存在的 Linux 病毒僅僅是技術上的好奇;現實是沒有能養得活的 Linux 病毒
Ⅱ 在linux環境下,java怎麼實現從word格式轉換為pdf格式
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
/**
* @author XuMing Li
*
* @version 1.00, 2007-4-9
*
*/
public class D2P {
private ActiveXComponent wordCom = null;
private Object wordDoc = null;
private final Variant False = new Variant(false);
private final Variant True = new Variant(true);
/**
* 打開word文檔
*
* @param filePath
* word文檔
* @return 返回word文檔對象
*/
public boolean openWord(String filePath) {
//建立ActiveX部件
wordCom = new ActiveXComponent( "Word.Application ");
try {
//返回wrdCom.Documents的Dispatch
Dispatch wrdDocs = wordCom.getProperty( "Documents ").toDispatch();
//調用wrdCom.Documents.Open方法打開指定的word文檔,返回wordDoc
wordDoc = Dispatch.invoke(wrdDocs, "Open ", Dispatch.Method,
new Object[] { filePath }, new int[1]).toDispatch();
return true;
} catch (Exception ex) {
ex.printStackTrace();
}
return false;
}
/**
* 關閉word文檔
*/
public void closeWord() {
//關閉word文件
wordCom.invoke( "Quit ", new Variant[] {});
}
/**
* * 將word文檔列印為PS文件後,使用Distiller將PS文件轉換為PDF文件 *
*
* @param sourceFilePath
* 源文件路徑 *
* @param destinPSFilePath
* 首先生成的PS文件路徑 *
* @param destinPDFFilePath
* 生成PDF文件路徑
*/
public void docToPDF(String sourceFilePath, String destinPSFilePath,
String destinPDFFilePath) {
if (!openWord(sourceFilePath)) {
closeWord();
return;
}
//建立Adobe Distiller的com對象
ActiveXComponent distiller = new ActiveXComponent(
"PDFDistiller.PDFDistiller.1 ");
try {
//設置當前使用的列印機,我的Adobe Distiller列印機名字為 "Adobe PDF "
wordCom.setProperty( "ActivePrinter ", new Variant( "Adobe PDF "));
//設置printout的參數,將word文檔列印為postscript文檔。目前只使用了前5個參數,如果要使用更多的話可以參考MSDN的office開發相關api
//是否在後台運行
Variant Background = False;
//是否追加列印
Variant Append = False;
//列印所有文檔
int wdPrintAllDocument = 0;
Variant Range = new Variant(wdPrintAllDocument);
//輸出的postscript文件的路徑
Variant OutputFileName = new Variant(destinPSFilePath);
Dispatch.callN((Dispatch) wordDoc, "PrintOut ", new Variant[] {
Background, Append, Range, OutputFileName });
System.out.println( "由word文檔列印為ps文檔成功! ");
//調用Distiller對象的FileToPDF方法所用的參數,詳細內容參考Distiller Api手冊
//作為輸入的ps文檔路徑
Variant inputPostScriptFilePath = new Variant(destinPSFilePath);
//作為輸出的pdf文檔的路徑
Variant outputPDFFilePath = new Variant(destinPDFFilePath);
//定義FileToPDF方法要使用adobe pdf設置文件的路徑,在這里沒有賦值表示並不使用pdf配置文件
Variant PDFOption = new Variant( " ");
//調用FileToPDF方法將ps文檔轉換為pdf文檔
Dispatch.callN(distiller, "FileToPDF ", new Variant[] {
inputPostScriptFilePath, outputPDFFilePath, PDFOption });
System.out.println( "由ps文檔轉換為pdf文檔成功! ");
} catch (Exception ex) {
ex.printStackTrace();
} finally {
closeWord();
}
}
public static void main(String[] argv) {
D2P d2p = new D2P();
// d2p.openWord( "c:/12.doc ");
// d2p.callWordMacro( "c:/12.docc ", "MyWordMacro ",
// new String[] { "這是調用word宏的測試程序 " });
d2p.docToPDF( "d:/12.doc ", "c:/1p.ps ", "c:/1p.pdf ");
}
}
Ⅲ 常用的組態軟體有哪些
組態軟體有ChinPMC、InTouch、QTouch、IFix、Citech。
1、ChinPMC
ChinPMC在傳統組態軟體的基礎上,提供管控一體化組態工具及多終端一體化運行環境,以數據展示的直觀性(圖形、圖表、曲線、報表)、圖形格式的矢量化、數據監控的實時性、事件處理的智能性、多系統集成的開放性、系統平台的無關性為重要特徵。
為生產企業的安全生產、環境監測、節能減排和物聯網應用提供開發和運行支撐工具集。
2、InTouch
最早進入我國的組態軟體。在80年代末、90年代初,基於Windows3.1的InTouch軟體曾讓我們耳目一新,並且InTouch提供了豐富的圖庫。
但是,早期的InTouch軟體採用DDE方式與驅動程序通信,性能較差,最新的InTouch7.0版已經完全基於32位的Windows平台,並且提供了OPC支持。
3、QTouch
由著名的QT類庫開發而成,完全具有跨平台和統一工作平台特性,可以跨越多個操作系統,如unix、linux、windows等,同時在多個操作上實現統一工作平台,即可以在windows上開發組態,在linux上運行等。
QTouch為HMI/SCADA組態軟體,提供嵌入式linux平台的人機界面產品。
4、IFix
Intellution公司以Fix組態軟體起家,1995年被愛默生收購,現在是愛默生集團的全資子公司,Fix6.x軟體提供工控人員熟悉的概念和操作界面,並提供完備的驅動程序(需單獨購買)。
5、Citech
CiT公司的Citech也是較早進入中國市場的產品。Citech具有簡潔的操作方式,但其操作方式更多的是面向程序員,而不是工控用戶。
Citech提供了類似C語言的腳本語言進行二次開發,但與iFix不同的是,Citech的腳本語言並非是面向對象的,而是類似於C語言,這無疑為用戶進行二次開發增加了難度。
(3)linuxactivex擴展閱讀
組態軟體功能
1、可以讀寫不同類型的PLC、儀表、智能模塊和板卡,採集工業現場的各種信號,從而對工業現場進行監視和控制。
2、可以以圖形和動畫等直觀形象的方式呈現工業現場信息,以方便對控制流程的監視也可以直接對控制系統發出指令、設置參數干預工業現場的控制流程。
3、可以將控制系統中的緊急工況(如報警等)通過軟體界面、電子郵件、手機簡訊、即時消息軟體、聲音和計算機自動語音等多種手段及時通知給相關人員,使之及時掌控自動化系統的運行狀況。
4、可以對工業現場的數據進行邏輯運算和數字運算等處理,並將結果返回給控制系統。
5、可以對從控制系統得到的以及自身產生的數據進行記錄存儲。在系統發生事故和故障的時候,利用記錄的運行工況數據和歷史數據,可以對系統故障原因等進行分析定位,責任追查等。通過對數據的質量統計分析,還可以提高自動化系統的運行效率,提升產品質量。
6、可以將工程運行的狀況、實時數據、歷史數據、警告和外部資料庫中的數據以及統計運算結果製作成報表,供運行和管理人員參考。