GNU/Linux與開源文化的那些人和事

?一、計算機的發明

世上本無路,走的人多了,就有了路。世上本無計算機,琢磨的人多了……沒有計算機,一切無從談起。

三個人對計算機的發明功不可沒,居功至偉。阿蘭·圖靈(Alan Mathison Turing)、阿塔那索夫(John Vincent Atanasoff)、和馮·諾依曼(John von Neumann)。

圖靈從理論上證明了計算機的可行性;阿塔那索夫實踐了圖靈的理論;馮·諾依曼奠定了現代計算機的體系結構。

圖靈說這玩意兒應該可以做,已經被證明了;阿塔那索夫二話不說動手就做了一個;馮·諾依曼說應該這么做才更好。

圖靈功勞很大,死得很慘,只因他是同性戀。他的最后時刻是吃了一個沾有氰化鉀的蘋果。有人說蘋果公司的Logo是為了紀念圖靈,不實。確定紀念圖靈的是“圖靈獎”,計算機研究領域的最高獎項,由美國計算機協會于1966年設立。

阿塔那索夫名氣不大,享年較長。世界上第一臺計算機是阿塔那索夫領導發明的ABC計算機,并非我們很多書上說的ENIAC。

馮·諾依曼長得帥,聰明,研究領域廣,故事很多。今天我們使用的計算機都被打上了一個的深深的烙印,這個烙印就叫馮·諾依曼體系結構。

關于計算機之父有很多說法,版本不一,這三個人都可以稱為計算機之父。曾有人奉馮·諾依曼為計算機之父,馮·諾依曼說不敢當,殊榮當歸圖靈。

早年全世界的計算機中心在美國普林斯頓大學,群星閃耀,璀璨奪目。馮·諾依曼曾在此工作,圖靈曾在此學習,他倆在普林斯頓的花園里聊過天。馮·諾依曼想讓圖靈給他當助手,被拒絕了。

二、最初的Unix和C語言

早期計算機個頭大,電子元器件多,開動一次電費都不少,使用起來也很不方便。別的不說,一次只能干一件事就讓人受不了。先煮粥,半小時之后粥煮好了再炒菜。花老多錢雇的廚師,明明煮粥的時候可以炒菜好不好?一次做一件事,就叫單任務,比較笨。

受不了就要想辦法,就有人提出了操作系統的想法。操作系統就是想讓計算機用起來更方便,能發揮更大的作用。

1965年,MIT、貝爾實驗室和美國通用電氣公司合作準備搞個超級操作系統,取了個霸氣的名字:Multics (Multiplexed Information and Computing System),多路復用信息和計算機系統。能讓多個人可以同時干很多事,也叫多用戶多任務操作系統。

Multics名字挺好,事沒干成,目標過于龐大,結果壯志未酬。

1969年,Multics項目進展緩慢,被迫停止,參與項目的兩個人Ken Thompson和Dennis Ritchie也閑了下來。他們都是貝爾實驗室的人。沒活干了,就打游戲。他們倆找了一臺破電腦準備玩以前開發的一個游戲。

把游戲移植到一臺閑置機器(PDP-7)的過程中,實現了一個簡單的操作系統。到了 1970年,這個簡單的系統已經可以使用,但只能同時兩個人使用。有人調侃他們,說你們這個破玩意離Multics差遠了,就叫Unics(UNiplexed Information and Computing Service)吧。Unics是Multics的反義,與其說調侃他倆,不如說在調侃Multics。Ken Thompson稍微把名字修改了一下,Unix。

自此,Unix紀元開始。1970年是為Unix元年,今年已經是Unix45年。Unix時間戳從1970年1月1日開始計算和Unix誕生的時間有莫大關系。

早年的操作系統最早是用匯編語言寫的,匯編語言低級落后,寫起來很痛苦。開發Unix過程中,Thompson發明了B語言,Ritchie在B語言基礎做了改進,稱之為C語言。

C語言發明后,Ritchie和貝爾實驗室的同事Brian W. Kernighan合著一本C語言的書,后來被稱為K&R。Kernighan名氣沒Ritchie大,但并非凡人,Unix命令Awk中的K就是Kernighan。

接下來Thompson和Ritchie用C語言重新編寫了Unix系統。結果相當滿意,Unix可以見人了。1974年,Dennis M. Ritchie和Ken Thompson發表了第一篇關于UNIX的論文《The UNIX Time Sharing System》,從此Unix廣為人知。

這幾年世界計算機的中心到了貝爾實驗室,Thompson、Ritchie、Kernighan還有好多。Thompson和Ritchie后來都獲得了圖靈獎。

有心栽花花不活,無心插柳柳成蔭。Multics目標宏偉,沒干成,Unix和C語言剛開始并沒想那么多,而且還是業余時間的作品,終成偉業!

Unix和C語言是計算機領域的常青樹,歷久彌新。從發明至今一直保持著旺盛的生命力,從發明至今都基本保持原貌,足見偉大!

三、混亂的Unix發展過程

Unix一經出現,引起了眾人的關注,很多人找Thompson和Ritchie要Unix的源代碼。那是個開放的時代,那是個相互學習研究的時代,把程序的源碼分享給別人是很平常的事。一份份的Unix源碼被流傳到各個實驗室、學校、公司。

加州大學伯克利分校有一幫熱衷于Unix的人,他們拿到源碼后不斷研究,不斷改進,大大推進了Unix的發展。

這個階段Unix發展有兩條主線,一條在貝爾實驗室內部,另一條就在伯克利分校。伯克利分校的成果很輝煌,著名的TCP/IP協議在Unix上的實現就是他們搞出來的。后來把他們搞的這套Unix稱為BSD(Berkeley Software Distribution)。

伯克利分校一時風光無兩,最杰出的一位是Bill Joy。Bill Joy,Vi、Csh等等一系列軟件的作者,Sun公司的創始人。沒有Sun公司,就沒有今天的Java語言。

Unix剛誕生的時候,貝爾實驗室受反壟斷法所限,不能從事計算機業務。其實也并沒想到Unix發展勢頭如此之好。

等到1983年,貝爾實驗室的母公司AT&T已經被強制拆分為幾個小公司,不再受反壟斷法的限制。這時,AT&T發布了Unix最新版System V,宣布從此Unix只能商業使用,不再開放源代碼。AT&T想用Unix賺大錢。

BSD那邊受到了很大影響,他們不想急著賺錢,他們想開放源碼。沒辦法,伯克利分校決心把BSD當中受到影響的源碼重新寫過。從伯克利分校出來的幾位同學成立了一家公司,專門開發BSD項目。直到有一天,他們宣布BSD當中再沒有最初來自貝爾實驗室的源碼。AT&T不買賬,告你,起訴,打官司。

這是一場漫長的官司,官司尚未打完,Unix版權就被倒賣了好幾次。買版權的好幾家公司繼續和BSD打官司,幾家公司相互也打官司。

等到硝煙散盡,BSD終究推出了完全屬于自己的Unix,因為版權的問題,不能再叫Unix,只能叫類Unix系統。

BSD的類Unix系統是FreeBSD、MacOS的前身。今天使用的蘋果電腦,iPhone手機上的操作系統都是從BSD這一支上發展而來。

漫長的官司耗盡了人們對BSD的熱情,也讓BSD錯過了最好的發展機會。后來的FreeBSD、NetBSD、OpenBSD都是從BSD分化而來,免費,開源,優秀,但再沒挽回曾經的榮光,因為已經有了Linux。


Unix發展過程圖

四、斯托曼博士的GNU計劃

AT&T想靠Unix賺錢的時候,不止是AT&T,很多商業公司都希望通過軟件賺錢。不再免費,不再開放源代碼,不再相互通過源代碼學習研究。

曾經是多么好的時代,怎么現在就變得只認錢了呢?這一切讓一個人很不滿意。他曾經看到一個系統有問題,想要一份源碼拿來幫修改一下,別人冷笑以對。

世風日下,他要向這個令人沮喪的時代挑戰,他要還一個開源、免費的系統與人世間。請記住這個人的名字,理查德·斯托曼(Richard Matthew Stallman)博士。

斯托曼是老牌黑客,Emacs的作者。Emacs和前面提到的Vi是計算機領域中兩大強悍的編輯工具,Emacs和Vi哪個更強是最容易引起爭議的話題之一。為了少吵架,千萬別和寶馬車主說奔馳好。

斯托曼博士長頭發,大胡子,不修邊幅,一直單身。他一心投入自由軟件運動,他創建了自由軟件基金會(FSF)。他雄心勃勃地提出了一項偉大的計劃,GNU(GNU's not Unix)計劃。Not Unix,不是Unix,是自由的、免費的、開源的、像Unix一樣好用的系統。


理查德·斯托曼博士

GNU起初進展很順利,GLibc、GCC、GDB,這一系列的操作系統必備軟件都有條不紊地在進展。所有的“G”來自Gnu的首字母。為什么叫“G”,斯托曼博士說當時他覺得好玩,而且他小時候聽過一首歌,很喜歡,歌名是《The Gnu》。

完全搞個操作系統看來也并非易事,GNU完成了一大堆軟件的時候才意識到遇到了大麻煩。GNU系統的內核項目Hurd遲遲不能令人滿意。內核之于操作系統,就像發動機之于汽車,必不可缺。

五、Linux出世記

1991年,Linus Torvalds尚是芬蘭赫爾辛基大學的一名學生,他在學校學操作系統的課程,他也想搞個操作系統玩玩。他當時已經在使用Gnu項目的Bash、GCC等軟件。受GNU的影響,把他自己開發的一個簡陋的操作系統內核放到了互聯網上。

這個內核系統就是Linux,Linus's Unix,Linus的Unix。名字并非Linux所取,他一貫的風格是取個調侃的名字,但當時管理員說Linux挺好,名字就這么定了。

Linux放到網上后引起了很多人的興趣,他們陸續通過互聯網加入到Linux開發過程中。1993年,大約有100多名程序員參與了Linux內核代碼。這時已經是互聯網的時代,他們不用相識,不用謀面,通過網絡討論,通過網絡協作,推進著Linux。

1994年3月,Linux1.0發布,Linux已經成為一個基本可用的內核。從此Linux就一直沒有踩過剎車,一步步從幼苗長成參天大樹。

Linus小時候被企鵝攻擊過,他給Linux定Logo的時候選中了企鵝,真不知道這是什么邏輯。長得像企鵝的除了QQ,還有Linux。

Linux開創了一種前所未有的軟件開發模式。多人協作,代碼隨時提交,有問題及時修改,所有參與人員并非精英,而是一群狂熱的支持者。前前后后無數人參與了Linux項目的開發,組織不太嚴謹,有很多的爭吵和討論。Linus經常寫代碼,偶爾扮演仲裁的角色,而非傳統意義上的領導。

后來開源運動的吹鼓手Eric Raymond寫了一篇文章《大教堂與集市》來分析Linux的開發模式。大教堂要設計好圖紙,動用優秀的工匠,有序的工程計劃才能修筑,鬧哄哄無序如菜市場的一撥人能不能修一座大教堂?答案是可以的,因為他們建成了。

Linus后來坦言,他開發Linux時不了解還有FreeBSD等項目,如果知道了可能他就不會動手寫Linux了。那時各種BSD系統正在官司的陰影籠罩下,某種程度了也促進了Linux的發展。

他們一開始也沒什么圖紙,一邊修建,一邊請人參觀,出了問題隨時修復,有的地方干脆推倒重來。他們沒有嚴密的組織,只有大體的分工。隨時有人在使用教堂,給他們提出各種意見。他們建的教堂已經足夠好,他們建的教堂一直沒有竣工,會一直修建下去。

Eric Raymond這個人不得不提,早年和斯托曼博士一起共事,還幫斯托曼博士修改過Emacs的代碼。他比寫程序更擅長的是演講和寫文章。《大教堂與集市》是開源文化的扛鼎之作。斯托曼博士是開源運動的精神領袖,Raymond是開源運動的布道師和理論家。

六、Linux各種發行版

一邊GNU項目為內核苦苦掙扎,一邊Linux內核項目橫空出世,這不天作之合么?不錯,手快的人來不及同情斯托曼博士的痛苦,把GNU一大堆項目和Linux攢在一起搞了個新系統,GNU/Linux。

好了,終于大家可以拿去用了,可以用一個完全免費、源碼開放的系統了。

今天很多人把使用的系統叫Linux,很不公平,是對GNU工作的漠視。正確的叫法是GNU/Linux。

有了GNU/Linux還不是一切,只能是一個基礎的操作系統,要想用得更好還缺很多軟件。就像有了Windows系統,沒有Word,沒有Excel,沒有瀏覽器,沒有游戲,可干的事并不多。

所幸的是GNU/Linux誕生的年代,已經有了很多優秀的開源項目,他們和GNU無關,有的是個人開發,有的是組織開發,都遵循免費開源的理念。這些開源項目有Apache、Perl、Python、Vim、TeX等等。

攢系統的人干脆一股腦攢了起來,就是所謂的GNU/Linux的發行版。最早攢GNU/Linux系統的公司是Redhat,后來陸續一大堆GNU/Linux的發行版,Slackware、Mandrake、Gentoo、Debian、Ubuntu等等。有的已經死了,有的還活得挺好。

所謂GNU/Linux發行版,就是攢好的一套GNU/Linux。選用GNU項目中的基礎軟件,加上Linux內核,再找一堆開源免費,版權協議許可的軟件,最后做個安裝程序,就齊活了。更好的發行版大體就是考慮的更周全些,軟件包的更新、安裝、卸載更方便些。

能不能自己動手攢一個GNU/Linux的發行版?當然可以,Linux From Scratch,網上的一個項目,教你一步一步從頭打造一個屬于自己的GNU/Linux發行版。

2002年,南非商人Mark Shuttleworth花了兩千萬美金,搭乘俄羅斯的宇宙飛船去了一趟太空。次年,他成立了Canonical公司,致力于開源文化的推廣,推出了GNU/Linux發行版Ubuntu。有錢人辦事就是不一樣,Ubuntu做得太好了,GNU/Linux用戶紛紛投靠,Ubuntu基本一統GNU/Linux發行版的江湖。

五、GNU/Linux和開源文化的背后

GNU/Linux來了雖然沒成為大多數人電腦里的系統,但每個人都離不開它。諸多互聯網公司的服務器里都跑著GNU/Linux,名單不完全確認,Google、Facebook、淘寶、百度、騰訊、小說閱讀網等等。

大多人使用的安卓手機的系統也是基于Linux內核。

GNU/Linux的繁榮有宏偉的規劃,有個人的努力,也有很多無形的力量在起著作用。

沒有Unix就沒有GNU/Linux,是Unix給予了偉大的啟示。

沒有C語言就有沒有GNU/Linux,C語言簡單,優雅,介于高級語言和低級語言之間,開發系統軟件的首選編程語言。

沒有一系列Unix標準的制定就沒有GNU/Linux的繁榮。標準就是“車同軌、書同文、統一度量衡”,秦始皇可算最早的標準制訂者。遵循Posix標準為GNU/Linux發展鋪平了道路。

沒有互聯網就沒有GNU/Linux,GNU/Linux不是一個人在開發,是全球無數人協作的結果。如果沒有互聯網實在不可想象。當然,GNU/Linux也反哺了互聯網,無數互聯網公司采用GNU/Linux搭建服務器,GNU/Linux也促進了互聯網的繁榮。

沒有斯托曼博士的努力,就沒有GNU/Linux。他的功勞不僅是創建GNU組織,也不僅是編寫Emacs、GCC、GDB,他的精神感召著無數人為開源運動做貢獻。

當然還有Raymond的振臂高呼,搖旗吶喊。

還有GNU/Linux誕生之前就開發開源項目的人和組織。Larry Wall因為懶,整天被報表搞得焦頭爛額,發布了Perl語言;高德納教授因為對排版工人不滿意,十年時間停止重要工作,發明了偉大的排版軟件TeX;Guido為了打發圣誕節的無聊,編寫了新的腳本語言Python……

GNU/Linux發布之后,在前輩們的感召下無數人接受了開源的思想和理念,接受了開源文化的洗禮,興起了開源文化運動。無數為開源項目做出貢獻的人和組織,他們發布了PHP、MySQL、Ruby、Node.js、X.Org、Gnome、KDE……他們豐富了GNU/Linux,他們進一步推動了開源文化運動,他們繼續感召著別人。

KDE(Kool Desktop Environment)的初衷是想開發一套易用的桌面系統。Windows系統就是一種桌面,使用方便,不是像程序員整天對著黑乎乎的屏幕工作。桌面系統要有瀏覽器,他們就分了一個小組KHTML來開發瀏覽器。全世界能開發瀏覽器核心的也沒幾家,KDE做到了。后來蘋果公司和微軟鬧別扭,想自己開發瀏覽器,就是在KHMTL的基礎之上開發了自己的瀏覽器Safari。KHTML的瀏覽器核心模塊叫Webkit。Google推出安卓手機時瀏覽器也是基于Webkit開發的。

今天的iPhone手機和安卓手機的瀏覽器都是Webkit內核。

各種版權許可協議的制訂也為GNU/Linux的發展鋪平了道路,其中就有GNU的GPL、LGPL,還有Apache License、BSD協議。不可能每個人都有一套自己開源協議項目的版權協議,已經制訂好的版權許可協議使得軟件更好地傳播。

其實開源并非自由,有人說GPL是用自由抹殺自由。GPL許可要求任何含有GPL許可的軟件發布時必須開放源碼。BSD和Apache License相對比較寬松,算是準自由軟件。

版本管理軟件對GNU/Linux的發展和開源文化運動也功不可沒。Linux內核開發起初使用的是商用版本管理軟件,某天Linus Torvalds先生不開心了,就自己動手搞了一個。他好取自嘲調侃的名字,命名為Git,意為沒什么用的東西。

Git可不是沒什么用,太好用了,Linux內核源碼從此都用Git管理。Git免費、開源,Git成就了一家偉大的網站github.com,偉大的源碼項目托管網站。很多開源項目紛紛把源碼托管到了Github上。

GNU/Linux不朽,開源運動不朽!

作者劉軍民,主頁http://www.jianshu.com/users/98212189b0d9/latest_articles

轉載于:https://www.cnblogs.com/lamp01/p/6610902.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282516.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282516.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282516.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP使用PHPMailer發送郵件

1. 首先下載phpmailer插件,并將插件復制到目錄下 下載地址: http://download.csdn.net/download/m_nanle_xiaobudiu/10261269 2. home/view/user/mail_chck.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

python學習記錄2

一、兩個模塊&#xff08;sys和os&#xff09; 1 #!/usr/bin/env python2 # _*_ coding: UTF-8 _*_3 # Author:taoke4 import sys5 print(sys.path)#打印環境變量6 print(sys.argv[0])#當前文件相對路徑,sys.argv是一個列表&#xff0c;第一個元素為程序本身的相對路徑&#xf…

cordova-config.xml配置應用圖標

1. <icon src"res/icon/ios/browser.png"/> 2.規格&#xff1a; iphone平臺一般要求3種規格的圖片&#xff1a;1x、2x、3x&#xff0c;也是就Icon.png、Icon2x.png、Icon3x.png. 注意&#xff1a;iOS所有圖標的圓角效果由系統生成&#xff0c;給到的圖標本身不…

將 Figma 設計轉換為 .NET MAUI Graphics 代碼

原文鏈接&#xff1a;https://github.com/jsuarezruiz/figma-to-maui-graphics原文作者&#xff1a;jsuarezruiz翻譯&#xff1a;沙漠盡頭的狼(谷歌翻譯加持)&#xff0c;翻譯別扭&#xff0c;建議直接閱讀原文使用FigmaSharp.Maui.Graphics將Figma設計轉換為 .NET MAUI Graphi…

Android之上下文context

Context&#xff0c;中文直譯為“上下文”&#xff0c;SDK中對其說明如下&#xff1a; 1、它描述的是一個應用程序環境的信息&#xff0c;即上下文。 2、該類是一個抽象(abstract class)類&#xff0c;Android提供了該抽象類的具體實現類。 3、通過它我們可以獲取應用程序的資…

論壇中,無限分類的原理

1.創建數據表 CREATE TABLE category( cat_id SMALLINT unsigned not null auto_increment comment 類別id, cat_name VARCHAR(30) not null default comment 類別名稱, par_id SMALLINT unsigned not null default 0 comment 類別父id, PRIMARY KEY (cat_id) )enginemyisam …

mooc- 基本程序設計方法week1,week2

學習了第一單元我們幾本可以寫出10行左右的代碼。 week1:python編程之基本方法 1、從計算機到程序設計語言&#xff1a; 理解計算機&#xff1a;計算機是能夠根據一組指令操作數據的機器。 功能性&#xff1a;可以進行數據計算 可編程性&#xff1a;根據一系列指令來執行 計算機…

Windows 11 的 2022 更新為每個人帶來了新的東西

Windows 網站發布博客&#xff0c;宣布今天在 190 多個國家/地區推出 Windows 11 2022 更新。微軟在過去一年中對 Windows 11 進行了非常大的改進&#xff0c;感覺每個月都有一次更新。對于之前的 Windows 11&#xff0c;相信很多人在使用過程中也遇到過或大或小的問題。而一部…

goaccess_nginx日志分析工具

在控制臺分析nginx日志goaccess -f b.log生成html文件分析nginx日志vi ~/.goacce***ctime-format %Tdate-format %d/%b/%Ylog-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"各參數詳解&#xff1a; man goaccess或Nginx Variable …

HTML5 Canvas 繪制六葉草

注意&#xff1a; context.arc(橫坐標,縱坐標,弧半徑,起始角度,終止角度,逆順時針);這個函數挺難用&#xff0c;主要原因是最后參數和角度的關系。不管文檔怎么說&#xff0c;按我的實際經驗&#xff0c;逆順時針false時&#xff0c;是逆時針旋轉&#xff1b;逆順時針true時&am…

tp框架中執行事務

function tran() {//定義事務成功失敗的標志$mark true;//1. 實例化模型$model D(student);//2. 開啟事務處理$model->startTrans();//3. ls減少2000$sql "update student set moneymoney-2000 where unamels";$result $model->execute($sql);//判斷sql執行…

哪些聽起來像段子一樣的故事?

杭州海底世界&#xff0c;一個小走廊兩邊都是各種爬行動物展覽。有兩只蜥蜴當時是這個樣子人還年輕&#xff0c;還比較猥瑣&#xff0c;看到一個趴在另一個身上就覺得在做什么羞羞的事。于是就拍下來&#xff0c;發到群里&#xff0c;然后說了句交配中。然后一天就光拍照&#…

Event 事件 - 基礎

事件驅動三要素 事件源&#xff1a;即觸發事件的元素 事件&#xff1a;被JavaScript檢測到的行為。例如&#xff1a; 鼠標點擊 鍵盤按鍵 選輸入框 事件處理函數&#xff1a;事件發生時要進行的操作&#xff0c;又叫做“事件句柄”或“事件監聽器” 事件分類&#xff1a; 鼠標事…

String 與 StringBuilder 區別與用法

String用final修飾&#xff0c;實際上是不可更改的。我們平常用的“”來連接&#xff0c;實際執行過程中是將原字符串連接之后生成新的對象重新賦值給這個名字的字符串。Testpublic void myStrTest(){String s "str_s";System.out.println(s);String ss s.toUpperC…

防跳墻訪問

出現場景: 1. 沒有登錄&#xff0c;也能訪問網頁 2. 沒有相關權限&#xff0c;也能訪問對應的控制器和方法 解決方案: 定義一個CommonController,其他控制器繼承CommonController,在CommonController中定義初始化方法_initialize 注:這里用的是tp3.2框架,如果我們直接在Commo…

windows編譯libevent時報告“缺少print_winsock_errors.obj”的解決

一、綜述 Libevent 是一個用C語言編寫的、輕量級的開源高性能事件通知庫。 在libevent官網(http://libevent.org)下載源碼包&#xff0c;在Windows平臺編譯時&#xff0c;會報缺少“print_winsock_errors.obj”的錯誤。 二、原因及解決 經檢查&#xff0c;這是因為源碼包中缺少…

7.python之正則表達式re模塊

一.正則表達式中常用元字符的復習。通配符系列.(點)匹配任意一個除換行符以外的字符。*(星號)用來匹配*星號前面的字符或者一組字符0到無窮次。可以寫為0(加號)匹配加號前面的一個字符或者一組字符1到無窮次。可以寫為1?(問號)匹配問號前面的一個字符或者一組字符0到1次。可以…

C# WPF開源控件庫HandyControl用法舉例

概述HandyControl是一款免費開源的WPF控件庫&#xff0c;Github可以獲取到源代碼&#xff0c;相關的示例代碼也在github上能獲取到&#xff0c;但是沒有詳細的中文說明文檔&#xff0c;對于新手而言使用起來還是會有一些困擾&#xff0c;網上也很難搜到相關的用法示例&#xff…

nginx服務器,訪問時顯示目錄,不直接顯示index.php

一、效果 二、解決方案 修改網站配置文件&#xff0c;添加如下代碼&#xff1a; autoindex on; autoindex_exact_size off; autoindex_localtime on; 修改后的網站配置文件如下&#xff1a; server {listen 80;server_name test.haveyb.com;charset utf-8;error_log …

復選框checked 選中后不顯示打鉤

復選框checked 選中后不顯示打鉤 checkbox屬性checked"checked"已有&#xff0c;但復選框卻不顯示打鉤的原因 復選框綁定了click事件&#xff0c;點一次選中&#xff0c;再點擊取消選中&#xff0c; 第一次&#xff0c;可以正常顯示選中和取消&#xff0c;但當再去選…