基礎(chǔ)知識:(參考Henry725的博客)
創(chuàng)新互聯(lián)公司堅(jiān)信:善待客戶,將會(huì)成為終身客戶。我們能堅(jiān)持多年,是因?yàn)槲覀円恢笨芍档眯刨?。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。十多年網(wǎng)站建設(shè)經(jīng)驗(yàn)創(chuàng)新互聯(lián)公司是成都老牌網(wǎng)站營銷服務(wù)商,為您提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、H5建站、網(wǎng)站制作、品牌網(wǎng)站建設(shè)、成都微信小程序服務(wù),給眾多知名企業(yè)提供過好品質(zhì)的建站服務(wù)。
extern用于變量的聲明,告訴編譯器:已經(jīng)存在一個(gè)全局變量,但是不在當(dāng)前的編譯單元內(nèi),需要連接的時(shí)候在其他編譯單元中尋找。
修改變量作用域?yàn)楫?dāng)前編譯單元,變量生命周期不變;
避免重復(fù)定義全局變量
2.2. 修飾局部變量 -
修改變量的生命周期為整個(gè)工程周期,變量作用域不變
const修飾右邊的變量,用來限制變量為只讀屬性。
在程序的預(yù)編譯階段進(jìn)行替換處理。
區(qū)別:
1.define宏是在預(yù)處理階段展開。
const常量是編譯運(yùn)行階段使用。
2.define不做檢查,不會(huì)報(bào)編譯錯(cuò)誤,只是替換。const會(huì)編譯檢查,會(huì)報(bào)編譯錯(cuò)誤
3.define在展開的時(shí)候才分配內(nèi)存,展開幾次分配幾次內(nèi)存。const在定義的時(shí)候會(huì)分配一次內(nèi)存到靜態(tài)區(qū),使用時(shí)不重復(fù)分配
4.define可以定義一些簡單的運(yùn)算函數(shù)
聲明一個(gè)只讀的靜態(tài)變量
在多個(gè)文件中經(jīng)常使用的同一個(gè)全局變量。
使用場景:
1、.h文件中聲明
2、.m文件中賦值
這里直接訪問即可,都不用放到.pch文件中,因?yàn)槟J(rèn)權(quán)限是internal
public : 最大權(quán)限,可以在當(dāng)前framework和其他framwork中訪問;
internal : 默認(rèn)權(quán)限,可以在當(dāng)前framework中隨意訪問;
private : 私有權(quán)限,只能在當(dāng)前文件中訪問;
一般常量的話,都用extern const 來代替define。
因?yàn)橐坏┒x#define的方式,整個(gè)工程將被重新編譯,這樣帶來的時(shí)間浪費(fèi)可想而知
當(dāng)然了很多情況還是代替不了的,一般定義常量的時(shí)候是應(yīng)該使用這種方式來定義,不過也只是常量宏不被推薦,但是類函數(shù)宏用的還是很方便的,
const、#define的優(yōu)缺點(diǎn)
編譯器可以對const進(jìn)行類型安全檢查。而對#define只進(jìn)行字符替換,沒有類型安全檢查,并且在字符替換可能會(huì)產(chǎn)生意料不到的錯(cuò)誤。
這種情況還可能出現(xiàn)以下錯(cuò)誤
Sending 'const NSString *__strong' to parameter of type 'NSString *' discards qualifiers
原因是需要 NSString* 的地方使用了 const NSString*
.h中 extern const NSString* 替換為 extern NSString* const
.m中 const NSString* 替換為 NSString* const
解釋:前者相當(dāng)于指針本身不可修改,后者表示指針指向的內(nèi)容不可修改,兩者的作用都是使字符串只可讀不可寫。
OC指令是“Orbital Command”的縮寫,它是一種用于控制太空船只的指令。OC指令可以用來控制航天器的航向、速度、加速度和姿態(tài),以及航天器的起降、懸停和軌道調(diào)整等。OC指令還可以用來控制航天器的傳感器、系統(tǒng)和設(shè)備,以及航天器的通信、導(dǎo)航和控制系統(tǒng)。OC指令可以用來控制航天器的運(yùn)行狀態(tài),以及航天器的環(huán)境參數(shù),如溫度、濕度、壓力和放射性能等。OC指令還可以用來控制航天器的燃料消耗、推力和軌道變化等??傊?,OC指令是用來控制航天器的一種重要指令,它可以幫助航天器實(shí)現(xiàn)其設(shè)定的任務(wù)。
由于Xcode對中文支持良好,所以在開發(fā)過程中經(jīng)常直接使用中文字符串。
不過蘋果推薦多語言化,需要為中文字符串添加個(gè)NSLocalizedString宏。
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''''
Localization The Objective-C Code
@"..." -- NSLocalizedString(@"...", nil)
Jason Lee 2012-03-01
'''
import os, sys
import re
import codecs
targetPattern = pile('@"[^"]+"')
global newFile, newFilePointer
def isChineseCharacter(ch):
return0x4e00 = ord(ch) = 0x9fa5
def hasChineseCharacter(str):
for char in str:
if isChineseCharacter(char):
returnTrue
returnFalse
def buildNewString(oldStr):
newStrPrefix = 'NSLocalizedString('
newStrSuffix = ', nil)'
newStr = newStrPrefix + oldStr + newStrSuffix
return newStr
def processLine(line):
global newFile, newFilePointer
matchResult = targetPattern.findall(line)
for result in matchResult:
if hasChineseCharacter(result):
#print result, buildNewString(result)
p = pile(result)
line = p.sub(buildNewString(result), line)
newFilePointer.write(line)
def processFile(filename):
#Xcode file is saved with utf-8
global newFile, newFilePointer
newFile = 'Replaced.' + filename
newFilePointer = codecs.open(newFile, 'wb', 'utf-8')
fp = codecs.open(filename, 'rb', 'utf-8')
for line in fp:
processLine(line)
fp.close()
newFilePointer.close()
oldFile = 'Old.' + filename
os.system('mv ' + filename + ' ' + oldFile)
os.system('mv ' + newFile + ' ' + filename)
#os.system('rm -f ' + oldFile)
if __name__ == "__main__":
if len(sys.argv) 1:
output = os.popen('ls ' + sys.argv[1]).read()
filelist = re.split('\n', output)
filelist = filelist[:-1]
#print filelist
print'Localizing...'
for file in filelist:
if os.path.exists(file):
try:
#print 'Processing File :', file
processFile(file)
except Exception as e:
print e
print'Localization Done.'
之后需要做的事情參考:
代碼沒用經(jīng)過嚴(yán)格驗(yàn)證,請慎用。起碼,沒有檢查該字符串是否已經(jīng)加了NSLocalizedString宏。
有一天,我發(fā)現(xiàn)這篇關(guān)于 bash 帖子。如果您是專業(yè)用戶,您可能已經(jīng)知道所有這些技巧,但如果您是新手或不是這樣的專業(yè)用戶,那么該帖子很可能是您的一天。
我認(rèn)為為 oc 命令創(chuàng)建類似的帖子會(huì)很有用。 oc 命令是dope,每個(gè)人都應(yīng)該知道。它設(shè)計(jì)精良,一致,靈活,正如您將看到的,有許多值得嘗試的隱藏功能。
如果您是OpenShift專業(yè)人士,您可能已經(jīng)知道我將在這里揭示的大部分內(nèi)容; 否則,如果您剛開始使用OpenShift,或者您不是經(jīng)驗(yàn)豐富的用戶,這將為您節(jié)省一些寶貴的時(shí)間。
當(dāng)我不知道發(fā)生了什么或者我收到了不友好的錯(cuò)誤消息時(shí),我總是使用該標(biāo)志 --loglevel 。它將日志級別信息寫入stderr。根據(jù)日志級別,您將獲得curl API Rest調(diào)用,、API Rest正文答案,甚至更詳細(xì)的信息。
如果要修補(bǔ)OCP對象,loglevel 9非常方便,因?yàn)樗@示了您需要應(yīng)用的補(bǔ)?。ˋPI請求體)。
假設(shè)您要更改服務(wù)對象的標(biāo)簽,在本例中標(biāo)簽為“app:hello-jorge”。
注意: 在絕望的時(shí)刻,你總是可以添加任意數(shù)量的9,結(jié)果將只有一個(gè)9,但你可能會(huì)感到寬慰。
是的,你沒有看錯(cuò)。您可以替換正在運(yùn)行oc命令的用戶,或者在OCP術(shù)語中,您可以 "模擬"(impersonate ) 用戶。顯然,如果你有足夠的權(quán)限進(jìn)行模擬, 那么你只需要使用flag --as 。
例如:
此外,可以進(jìn)行組模擬,而不是用戶模擬:
在許多情況下,它非常方便快捷,例如,檢查用戶是否可以執(zhí)行特定操作或檢查用戶在運(yùn)行oc時(shí)將收到的輸出。在搞不清角色和權(quán)限時(shí),它也很有用。
oc whoami 命令眾所周知,特別是加上flag -t 用于獲取當(dāng)前用戶/會(huì)話的持有者令牌。但是當(dāng)你有一個(gè)令牌并且你不知道誰是所有者時(shí)會(huì)發(fā)生什么?
您可以做的一件事是使用令牌登錄OpenShift,然后執(zhí)行 oc whoami ...等待一秒鐘。 oc whoami 會(huì)給你這個(gè)信息!只需在命令行中傳遞令牌作為第3個(gè)參數(shù),不需要任何標(biāo)志。
試試看:
你可以運(yùn)行一個(gè)pod并獲得一個(gè)shell。有時(shí)獲取正在運(yùn)行的pod配置的副本并使用shell對其進(jìn)行故障排除很有用。這是默認(rèn)行為。
介紹下 oc debug 選項(xiàng),您可以以root用戶, 或任何其他用戶ID身份運(yùn)行容器,強(qiáng)制它在特定節(jié)點(diǎn)中運(yùn)行各種命令。
您必須針對有效的 dc 運(yùn)行命令,例如:
OpenShift / k8s對象有時(shí)很復(fù)雜,有很多字段。很多時(shí)候,我最終在OCP文檔或其他來源中尋找對象定義示例。在涉及OCP / k8s對象定義時(shí),您可以考慮用 oc explain 作為可信來源。
oc explain 為您提供資源及其字段的文檔。在聲明新的OCP對象時(shí),或者當(dāng)您無法訪問官方OCP文檔時(shí),它非常有用。
例如,您可以獲取pod文檔和pod spec affinity字段描述:
關(guān)于oc命令的一個(gè)非??岬氖虑槭撬哂懈袷交敵龅膬?nèi)置功能。我們都知道 -o json 或者 -o yaml ,但flag -o 為您提供了許多其他可能性。
在我發(fā)現(xiàn)的所有這些輸出選項(xiàng)中, go-template 和 jsonpath 是最強(qiáng)大的輸出選項(xiàng):
例如,假設(shè)您想要獲取特定路由(router)(docker registry router)所公開的服務(wù)(service):
或者您想了解路由器DC的部署策略:
如您所見,oc命令非常棒。我鼓勵(lì)你繼續(xù)玩它,因?yàn)檫@是OpenShift最酷的事情之一。
Jorge Tudela Gonzalez de Riancho在紅帽西班牙工作,擔(dān)任云顧問,專門研究OpenShift和容器相關(guān)技術(shù)。
網(wǎng)頁標(biāo)題:linux中oc命令詳解 linux o命令
網(wǎng)站路徑:http://muchs.cn/article34/dohcdpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、企業(yè)建站、、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)