當前位置:首頁 » 操作系統 » 分發源碼仿

分發源碼仿

發布時間: 2023-05-29 05:32:02

A. 常聽說開放「源代碼」,「源代碼」是什麼,怎樣開放求答案

linux和Zope是典型的開發源代碼產品,IBM和HP是典型的開放源代碼支持公司。
開放源代碼軟體是一種公開源代碼的軟體,任何人都可以修改、使用、拷貝、分發軟體的源代碼。Linux和Zope是最典型的開放源代碼軟體。
開放源代碼軟體由眾多的商業公司共同開發,能夠得到更好的質量保證。Zope是由數百個公司數千個開發人員共同維護的,他們共同組成了zope社區。同樣Plone也是由很多的商業公司在共同開發和維護,潤普公司正是這些商業公司的積極參與者之一。IBM和惠普也都是非常典型的開放源代碼軟體公司。
同傳統的封閉源代碼軟體相比,開放源代碼軟體為客戶帶來如下價值:
沒有版權問題: 客戶無需支付軟體License費用,便可授權使用。這同時極大地降低了解決方案的成本。
更加安全和穩定: 由於其開放性,開放軟體源代碼可以得到全世界眾多同行的審查,因此更易具備類似Linux的安全性和穩定性
更強的生命力:開放源代碼產品有更多的用戶,因此她有著更強的生命力。 開放源代碼軟體不會因某個具體的公司的倒閉而結束。

B. app分發平台程序源碼怎麼搭建

跟蒲公英分發相似的可以試一下微導流分發,直接將apk文件上傳,就可以生成下載鏈接及下載二維碼了,用戶直接掃碼就可以下載了。

同時微導流也可以幫助搭建屬於客戶自己的分發平台,用戶可以自己管理,自由上傳,自己運營。

直接聯系客戶即可搭建分發託管平台。

C. 開放源代碼軟體如何生存的

開放源碼軟體《open-source》是一個新名詞,它被定義為描述其源碼可以被公眾使用的軟體,並且此軟體的使用,修改和分發也不受許可證的限制。開放源碼軟體主要被散布在全世界的編程者隊伍所開發,但是同時一些大學,政府機構承包商,協會和商業公司也開發它。開放源碼軟體在歷史上曾經與UNIX,Internet聯系的非常緊密。在這些系統中許多不同的硬體需要支持,而且源碼分發是實現交叉平台可移植性的唯一實際可行的辦法。在DOS,Windows,Macintosh平台上僅僅有很少的用戶有可用的編譯器,開放源碼軟體更加不普遍。對開放源碼開發模式的更詳細的討論請看Eric Raymond寫的「The Cathedral and the Bazaar」。使用Open-Source的優點

降低風險:擁有源代碼使顧客們可以控制那些他們的業務所賴以生存的工具。當一個open-source產品的開發者提高價格,增加了難以接收的限制,或者使用了一些使顧客不滿意的方法,另一個不同的組織將使用該源代碼開始開發新的產品以解決原來機構的問題。顧客也能自己維護或找別人改進它以達到自己的要求。顧客控制軟體,這在傳統私有軟體模式下是聞所未聞的事情。即使是一些財大氣粗的顧客喊裂大也可能緩解由於傳統軟體商自己內部的問題而導致嚴重的金融危機或公司被別的公司收購的風險。

質量:一些研究已經顯示了open-source軟體與別的可比商業軟體具有可靠性上的極大優勢。更加有效的開發模式,更多的獨立同行對代碼和設計的雙重審查,以及大部分作者對自己作品的極大榮譽感,都對其優良的質量有所貢獻。一些公司甚至給予發現Bug者以物質獎勵。

透明度:私有軟體有很多「陰暗的死角」,隱藏著許多Bug。源碼對於查錯和理解產品工作原理來說是很重要的。在大的軟體公司,只有極少數人能接觸到源碼,而這些能接觸源碼的人通常用戶都無法直接接觸。能接觸源碼對於修補安全漏洞來說,也是非常重要的。

正確的特性:一些開放源碼的產品--包括上面列舉的一些產品--是如此成功,以至於其商業競爭者無法存活。

剪裁:開放源碼給用戶極大自由,使他們能夠按照自己的業務需求定製軟體。大型組織能從即使很小的定製行為中削減大量開支和人力成本。用戶的挑錯和改進反過來對標准開放源碼軟體包也是個貢獻。這在傳統的私有軟體開發中是不可能得到的。

有利的版權許可和價格:定義為開放源碼使得軟體在版權許可方面比私有軟體具有更大的靈活性。這可以大大削減更多安裝帶來的花費和時間,對那些采購過程費時費力的機構更加有利。它也能給用戶安裝軟體以更大的自由度。

什麼時候不使用開放源碼軟體

錯誤的特性:如果一個開放源碼產品不能很好地滿足一個組織的需求,而另外的一個私有軟體卻可以,並且得到一個滿足特性的私有軟體的成本比再開發修改一個開放源碼產品的成本高的話,最好不使用開放源碼軟體。但參考上面的「剪裁」。

支持: 一些open-source軟體傳統的付費支持和電話支持。事實上,無論怎樣,這都沒有一個既沒有源代碼且無支持的產品嚴重。請看支持和open source軟體一節。

錯誤的平台:大部分open-source軟體主要是支持UNIX和Linux系統的,有時也支持Windows NT。另一些平台,例如大型機,對於移植開放源碼軟體是個巨大挑戰。移植軟體從UNIX到Windows NT上要付出很大代價。然而。開放源碼的優點幾乎可以使平台轉換顯得更劃算。

缺乏技術人員:安裝open-source軟體有時需要一些更多的技術經驗,例如,可以配置或編譯源代碼的能力。有源代碼的優點在一些沒有軟體開發專家的公司被降低了。open-source的定製也要求有配置管理經驗。無論如何源嫌,那些充分具有上述技術能力的任何組織都會很好地享受open-source的優點。

惰性:如果現存的所有系統都被很好的支持並完成,就沒有必要去改變它們。然而,時常的去檢討這個決定是很重要,因為新技術經常會使它們變得過時。

值得鄭豎懷疑的避免open-source軟體的原因

這些論據常被作為避免使用open-source軟體的借口,但是通常經不起推敲。

---對未知的恐懼。

正如你在上面的「open-source軟體的例子」一節所看到的,許多的組織已經嚴重的依賴open-source軟體,不管他們的決策者是否意識到這一點。這個問題由於open-source開發者宣傳和使用市場的增加,以及更多的擁護者的出現變得比較容易解決。

---在購買商業軟體包上我們已經擁有巨大的投資。

這僅僅是「必然花費謬誤」的一種形式。軟體許可證,好像為寫字樓付的租金,是一些消費,但不是投資。如果別的產品能很好的以較低的成本實現你的組織的需要,那麼過去把錢花費在低級的軟體上對

決策不應該產生影響。記住,你可能面臨嚴重的政治上的反對,它來自於那些選擇了贊成使用昂貴的,低級的產品,而不願意承認他們的錯誤的守舊者。同時,考慮到它們可能被再次擴展,在訓練職員和相關基礎設施上的投資是完全合理的。

---如果出了問題,我們需要有人負責。

盡管理論上這聽起來很合理,但如果我們一開始就使用可信賴的軟體產品,遠比在遭受經濟損失之後才去控告軟體供應商要好的多。幾乎所有的主要軟體公司都利用最終用戶許可證的支持來解決一些由於他們軟體的問題而帶來的可能要負責的困擾。Microsoft和IBM公司有著龐大的,一流的法律職員,使得顧客的控訴不可能成功。在將來法律可能會越來越偏向軟體供應商。

open-source和軟體技術支持

商業支持和同幾乎是那些正在使用open-source軟體的公司最關心的問題了。付費支持是正當的問題,但是這對於open-source產品通常是可用的,而且一般都過高估計了它的重要性。

---許多主要的open-source產品都有可用的技術支持合同。

例如,Red Hat 和Caldera公司對他們銷售的linux有電話支持。Cygnus,Collective 和許多小的顧問公司靠支持和增強open-source軟體,生意也做的不錯。而且越來越多的open-source軟體在保持其開放源碼狀態的同時,也獲得了大量商業維護和支持。

---電子郵件和Usenet新聞支持時非常有效的。

幾乎所有開發open-source軟體的組織都提供免費的電子郵件支持,提供郵件列表和Usenet新聞組。這些機制比電話支持更加實際有效。在一個有許多軟體供應商所支持的調查中,「Linux用戶協會」在1997年獲得「最好的技術支持獎」,同時也暴露了許多對傳統的軟體開發商的服務質量的大量不滿意見。

---對傳統商業軟體的支持經常是有限的並且是低質量的。

例如Microsoft公司僅僅提供了為它的所有產品僅僅提供了一個技術支持電話號碼:900。許多市場商業銷售支持人員把注意力集中在幫助初學者上手上,無法回答使用手冊上沒有包括的問題。許多軟體公司認為傳統的電話支持是很昂貴的代價,而因此消減它,這就導致了質量下降。

Netscape的發展趨勢

一個著名的計算機工業雜志報道Netscape是「受大量免費和共享軟體許可的啟發」。事實上,Netscape正在與許多著名的UNIX自由軟體開發者互通信息,現在看起來已經非常接近BSD和GPL許可證了。Nescape Public License和GPL有所不同,它使得Nescape對源碼的開發和商標上有更多的控制。

Netscape的棄子戰術是很聰明的。首先,瀏覽器的銷售在Netscape的業務中已經只佔很少一部分了。瀏覽器的開放源碼狀態不會對它有太大的沖擊,另外有些想要正式技術支持的買家仍然願意付錢。第二,它真正按照某個開放源碼的許可證發放,從而完全改變了Microsoft免費派送Explorer造成的被動局面。這將有助於提高Nescape瀏覽器的市場份額。最後,Netscape的立場從開放源碼社群中獲得了友誼,信任度和潛在的巨大革新。Netscape的未來還不能讓人放心,尤其是在NT的Web伺服器上;但它為採用的勇敢的、戲劇性的許可證政策不會帶來任何損失。

D. 既可以免費使用、復制,也可以自由修改並分發其源代碼的軟體是 什麼

自由軟體
小竅門(自己想的):
如果有「自由修改」就是<自由軟體>
「先使用後付費」的是<共享軟體>
單純免費使用(和代碼無關)的是<免費軟體>
刪除後無垃圾的是<綠色軟體>

E. 開放源代碼軟體的介紹

開放源碼軟體(open-source)是一個新名詞,它被定義為描述其源碼可以被公眾使用的軟體,並且此軟體的使用,修改和分發也不受許可證的限制。開放源碼軟體通常是有right的,它的許可證可能包含這樣一些限制: 蓄意的保護它的開放源碼狀態,著者身份的公告,或者開發的控制。「開放源碼」正在被公眾利益軟體組織注冊為認證標記,這也是創立正式的開放源碼定義的一種手段。開放源碼軟體主要被散布在全世界的編程者隊伍所開發,但是同時一些大學,政府機構承包商,協會和商業公司也開發它。源代碼開放是信息技術發展引發網路革命所帶來的面向未來以開放創新、共同創新為特點的、以人為本的創新2.0模式在軟體行業的典型體現和生動註解。開放源碼軟體在歷史上曾經與UNIX,Internet聯系的非常緊密。在這些系統中許多不同的硬體需要支持,而且源碼分發是實現交叉平台可移植性的唯一實際可行的辦法。在DOS,Windows,Macintosh平台上僅僅有很少的用戶有可用的編譯器,開放源碼軟體更加不普遍。對開放源碼開發模式的更詳細的討論請看Eric Raymond寫的「The Cathedral and the Bazaar」。

F. 源代碼是什麼意思

源代派高碼是襲晌指程序員編寫的用於計算機程序的原始文本形式。它通常以計算機程序設計的形式出現,如C ++,Java和Python等。源代碼是開發軟體的基礎,其容易被計算機理解,它們可以被編譯成二進制文件,然後在計算機系統上運行。在拍羨鋒開源軟體中,源代碼通常是公開的,因此任何人可以查看、修改和重新分發軟體的源代碼。

G. Android Touch事件分發處理機制詳解

Android應用的開發過程不可能不涉及到Touch事件的處理,簡單地如設置OnClickListener、OnLongClickListener等監聽器處理View的點擊事件,復雜地如在自定義View中通過重寫onTouchEvent來捕獲用戶交互事件以定製出各種效果,在使用的過程中或多或少會遇到一些奇怪的Bug,讓你對Touch事件「從哪來,到哪去」產生迷之疑惑,經過多少次徘徊之後終於決定系統的分析下源碼,本文就給大家分享下我的收獲。

MotionEvent作為Touch事件的載體,採用時間片來管理Touch事件所有相關行為的數據,本文這樣理解時間片這個概念:

通常MotionEvent會將觸發當前事件的Pointer作為主要Pointer,其PointerIndex為0,而MotionEvent通過提供getX()這類不帶index參數的介面以更方便的操作主要Pointer的數據。
了解了MotionEvent的組成結構之後,接下來就可以分析MotionEvent包含的事件類型了,MotionEvent通過getAction介面來獲取事件Action,而Action中低8位地址存儲的是事件類型(對於觸摸事件來說,主要包括Down、Move、Up、Cancel、PointerDown、PointerUp),高8位地址存儲的是PointerId(當事件類型為PointerDown、PointerUp時)。通常來說事件會以Down開始,以Up或Cancel結束,各事件所承擔的角色以及各自的特點在分析事件分發與處理的過程時再詳細說明。
另外,MotionEvent中的Flag需要說明一下:

本文僅分析Touch事件在Framework中Java層的傳遞,因此從事件傳遞到Activity開始分析。當Touch事件傳遞給Activity時,會調用Activity.dispatchTouchEvent(MotionEvent),Activity會將事件傳遞給其Window進行處理,實際會調用PhoneWindow.superDispatchTouchEvent(MotionEvent),PhoneWindow會將該事件傳遞給Android中View層級前埋中的頂層View(即DecorView)進行處理:

在Window未設置Callback的情況下,會調用父類的dispatchTouchEvent,DecorView繼承自FrameLayout,然後FrameLayout並未實現dispatchEvent,因此最終調用ViewGroup.dispatchTouchEvent,也就是Touch事件分發的核心邏輯所在,前文中提到MotionEvent中事件類型主要包括Down、Move、Up、Cancel、PointerDown、PointerUp,而dispatchTouchEvent根據事件的不同類型會做不同處理,因此這里分別進行分析:

Down事件處理

非異常情況下,Touch事件的事件周期總是以Down事件開始的,因此Down事件在整個事件分發邏輯中起關鍵作用,將決定了後續Move、Up及Cancel事件的處理主體,先看一張Down事件分發的流程圖:

從流程圖中可以看到,Down事件的分發邏輯主要目的在於尋找到能處理該Touch事件的View控制項(該View為以當前ViewGroup為Root節點的View層級中的View,利用尋找到的View創建事件處理Target),整個處理邏輯主要包含以下渣悔陸幾步:

Move、Up、Cancel事件處理

完成Down事件的分發邏輯後,就確定了該Down事件後續Move、Up及Cancel事件的處理主體(注意:這里並沒有確定PointerDown事件的處理主體,關於PointerDown事件的分發邏輯稍後分析),先通過一張流程圖來感受下Move、Up、Cancel事件的分發邏輯:

從流程圖可以看出,對於Move、Up、Cancel事件的分發步驟如如頃下:

PointerDown事件處理

PointerDown事件是在支持多Pointer(調用將FLAG_SPLIT_MOTION_EVENTS置位)的環境下,當有新的Pointer按下時產生的,該事件處理的特殊性在於會重新遍歷View層級,尋找可以處理新Pointer事件的Target,具體流程參考Down事件的分發邏輯;遍歷結束若仍沒有找到處理該事件的Target,則會將新Pointer的處理權設置給已有Target中最早被添加的Target。完成Target的尋找之後,會將該事件通過dispatchTransformedTouchEvent傳遞至所有已有Target進行處理,可以通過下面流程圖,對PointerDown事件的處理有一個更全局的認識:

PointerUp事件處理

相對於Up事件來說,對於PointerUp事件的處理區別在於當傳遞至所有已有Target結束之後並不能標記以Down事件起始的整個事件周期結束,僅能標記其關聯Pointer(以PointerDown事件起始)的事件周期結束,因此不會清除所有狀態,而僅會從已有Target中移除掉與該Pointer相關的部分。

onInterceptTouchEvent

在ViewGroup進行事件分發的過程中,會調用該函數來確定是否需要攔截事件,當該函數返回true時該事件將會被攔截,即不會進行正常的View層級傳遞,而是直接由該ViewGroup來處理,而攔截後的操作需要根據攔截事件的類型不同而不同:

dispatchTransformedTouchEvent(MotionEvent event, boolean cancel, View child, int desiredPointerIdBits)

在將事件傳遞給Target進行處理之前會調用該函數對MotionEvent進行處理:

MotionEvent.split(int idBits)

判斷一個View控制項是否消費一個事件,是由View.dispatchEvent的返回值來決定的,而View.dispatchEvent用於尋找事件的最終消費者,話不多說,還是通過一張流程圖來個直觀感受:

從流程圖中可以看出,View會根據ouch事件對Scroll狀態進行調整,並尋找該事件的最終處理器:

View.dispatchEvent將向其直接ViewGroup返回是否消費掉該事件,返回值將決定上級ViewGroup是否需要繼續詢問其他子View是否需要消費該事件。這就是View中分發事件的邏輯,真是簡單粗暴!

從View.dispatchEvent的分析中可以發現當未對View設置mTouchListener或mTouchListener未消費掉該事件時,Touch事件最終將由View.onTouchEvent來決定是否消費,自定義View可以重寫該方法實現自身的邏輯,此處僅分析View中的通用處理邏輯:

從上述分析可以很開心地發現熟悉的onClick及onLongClick事件的產生邏輯,若是之前沒看過類似的文章,應該會有原來如此的感覺吧,哈哈~~

至此,Touch事件的分發與處理流程算是走通了,個人看完整個源碼之後有種豁然開朗的感覺,能很清晰的分析向「為什麼事件有時候傳到某個View有時候卻不傳?」、「有時候只傳前面幾個事件後面卻不傳了?」等問題,也希望本文的分析能讓你更清晰地感知Android中Touch事件的傳遞流程,如果發現文中有何錯誤,希望不吝賜教!

H. Android TV 焦點原理源碼解析

相信很多剛接觸AndroidTV開發的開發者,都會被各種焦點問題給折磨的不行。不管是學技術還是學習其他知識,都要學習和理解其中原理,碰到問題我們才能得心應手。下面就來探一探Android的焦點分發的過程。

Android焦點事件的分發是從ViewRootImpl的processKeyEvent開始的,源碼如下:

源碼比較長,下面我就慢慢來講解一下具體的每一個細節。

dispatchKeyEvent方法返回true代表焦點事件被消費了。

ViewGroup的dispatchKeyEvent()方法的源碼如下:

(2)ViewGroup的dispatchKeyEvent執行流程

(3)下面再來瞧瞧view的dispatchKeyEvent方法的具體的執行過程

驚奇的發現執行了onKeyListener中的onKey方法,如果onKey方法返回true,那麼dispatchKeyEvent方法也會返回true

可以得出結論:如果想要修改ViewGroup焦點事件的分發,可以這么干:

注意:實際開發中,理論上所有焦點問題都可以通過給dispatchKeyEvent方法增加監聽來來攔截來控制。

(1)dispatchKeyEvent方法返回false後,先得到按鍵的方向direction值,這個值是一個int類型參數。這個direction值是後面來進行焦點查找的。

(2)接著會調用DecorView的findFocus()方法一層一層往下查找已經獲取焦點的子View。
ViewGroup的findFocus方法如下:

View的findFocus方法

說明:判斷view是否獲取焦點的isFocused()方法, (mPrivateFlags & PFLAG_FOCUSED) != 0 和view 的isFocused()方法是一致的。

其中isFocused()方法的作用是判斷view是否已經獲取焦點,如果viewGroup已經獲取到了焦點,那麼返回本身即可,否則通過mFocused的findFocus()方法來找焦點。mFocused其實就是ViewGroup中獲取焦點的子view,如果mView不是ViewGourp的話,findFocus其實就是判斷本身是否已經獲取焦點,如果已經獲取焦點了,返回本身。

(3)回到processKeyEvent方法中,如果findFocus方法返回的mFocused不為空,說明找到了當前獲取焦點的view(mFocused),接著focusSearch會把direction(遙控器按鍵按下的方向)作為參數,找到特定方向下一個將要獲取焦點的view,最後如果該view不為空,那麼就讓該view獲取焦點。

(4)focusSearch方法的具體實現。

focusSearch方法的源碼如下:

可以看出focusSearch其實是一層一層地網上調用父View的focusSearch方法,直到當前view是根布局(isRootNamespace()方法),通過注釋可以知道focusSearch最終會調用DecorView的focusSearch方法。而DecorView的focusSearch方法找到的焦點view是通過FocusFinder來找到的。

(5)FocusFinder是什麼?

它其實是一個實現 根據給定的按鍵方向,通過當前的獲取焦點的View,查找下一個獲取焦點的view這樣演算法的類。焦點沒有被攔截的情況下,Android框架焦點的查找最終都是通過FocusFinder類來實現的。

(6)FocusFinder是如何通過findNextFocus方法尋找焦點的。

下面就來看看FocusFinder類是如何通過findNextFocus來找焦點的。一層一層往下看,後面會執行findNextUserSpecifiedFocus()方法,這個方法會執行focused(即當前獲取焦點的View)的findUserSetNextFocus方法,如果該方法返回的View不為空,且isFocusable = true && isInTouchMode() = true的話,FocusFinder找到的焦點就是findNextUserSpecifiedFocus()返回的View。

(7)findNextFocus會優先根據XML里設置的下一個將獲取焦點的View ID值來尋找將要獲取焦點的View。

看看View的findUserSetNextFocus方法內部都幹了些什麼,OMG不就是通過我們xml布局裡設置的nextFocusLeft,nextFocusRight的viewId來找焦點嗎,如果按下Left鍵,那麼便會通過nextFocusLeft值里的View Id值去找下一個獲取焦點的View。

可以得出以下結論:

1. 如果一個View在XML布局中設置了focusable = true && isInTouchMode = true,那麼這個View會優先獲取焦點。

2. 通過設置nextFocusLeft,nextFocusRight,nextFocusUp,nextFocusDown值可以控制View的下一個焦點。

Android焦點的原理實現就這些。總結一下:

為了方便同志們學習,我這做了張導圖,方便大家理解~

I. 想通過c++中的map容器實現函數分發,請教各位大神解答下疑惑

因為你使用的map的key是const char *類型,即存儲的是一個指針類型,所以在下面的代碼中使用find函數就找不到對應的key。這里主要要理解c風格字元串和c++字元串的差異。

可以渣羨將map的key類型改為string,修改後代碼:

#include<iostream>
#include<string>
#include<map>

//定義函數指針
typedefvoid(*fun)(constchar*);
//定義map容器
std::map<困山std::string,fun>mapTest;
voidmyPrintf(constchar*pszStr){std::cout<<pszStr<<std::endl;}

intmain(intargc,char*argv[])
{
std::cout<<"map初始化!"<<std::endl;
mapTest.insert(std::pair<std::string,fun>("myPrintf",myPrintf));
std::stringstrCmd=汪梁中"myPrintf";
mapTest["myPrintf"]("123");
boolisFind=(mapTest.find(strCmd)==mapTest.end())?true:false;
if(!isFind)
{
mapTest[strCmd]("aaaa");
}
else
{
std::cout<<"找不到對應的處理函數!"<<std::endl;
}
return0;
}

執行結果:

J. 手機系統中的開放源代碼許可是什麼東西

手機系統中的開放源代碼許可,是安卓系統的許可證。

開放源代碼許可類似於商品的許可證,它是Android系統的許可證。打開它之後,您會看到很多英文,許可證可能要求派生程序使用與初始軟體不同的名稱或版本號。

(10)分發源碼仿擴展閱讀:

開源軟體條件:

1、自由再發賣孝行

許可證不能限制任何團體出售或贈送該軟體,並且該軟體可以是來自多個不同來源的程序集成的原始軟體發行版之一。許可證不能要求許可證費或其他費用來進行此類畢兄銷售。

2、程序源代碼

該程序必須包含源代碼。必須允許發行版在包含編譯形式的同時也包含程序源代碼。當產品以某種形式發布而沒有源代碼時,必須非常醒目的告知用戶,如何通過Internet免費下載源代碼。

源代碼必須以程序員修改程序時首選的形式提供。不允許故意干擾源代碼。不允許將中間形式(例如預處理器或翻譯器)用作源代碼。

3、派生程序

許可證必須允許更改或派生程序。必須允許這些程序以與原始軟體相同的許可證發行。

4、作者源代碼的完整性

僅當許可證允許發布中數稿帶有程序調整目的的帶有源代碼的「修補文件」時,許可證才能以修改後的形式限制源代碼的發布。許可證必須明確允許分發使用更改後的源代碼創建的程序。

熱點內容
動畫與編程 發布:2024-04-19 18:53:10 瀏覽:314
把自己家的wifi加密 發布:2024-04-19 18:47:23 瀏覽:573
顯卡資料庫 發布:2024-04-19 18:47:22 瀏覽:552
iosapp清除緩存 發布:2024-04-19 18:47:18 瀏覽:269
sql應用領域 發布:2024-04-19 18:42:56 瀏覽:36
訪問外網伺服器加速軟體 發布:2024-04-19 17:48:45 瀏覽:696
加密軟體對比 發布:2024-04-19 17:27:05 瀏覽:367
保密管理系統怎麼連接伺服器 發布:2024-04-19 17:26:59 瀏覽:18
廣州社保卡密碼激活在哪裡辦 發布:2024-04-19 17:21:18 瀏覽:368
編譯器和操作系統有關系嗎 發布:2024-04-19 17:20:28 瀏覽:274