太感謝@勤奮的小小塵,完全解決了心中的疑慮,果然如此。我這的VPN用不了了,某度又找不準想要的。真是千恩萬謝
models ...interface{} 語法的參數(shù)接收到之后 models 應(yīng)該是 []interface{}
所以原樣傳遞給 RegisterModel 時 應(yīng)該 orm.RegisterModel(models...) 這樣寫
HTTP無狀態(tài)決定了本質(zhì)上無法繼續(xù)上次的HTTP請求。
首先,客戶端先發(fā)送了一個請求,這個請求的header中包含了一個屬性expect: 100-continue。這種情況一般出現(xiàn)于上傳大容量body或者是需要驗證的時候。這時服務(wù)器會讀取請求的header并返回一個100 continue的響應(yīng),如果服務(wù)器可以提供這項服務(wù)的話??蛻舳嗽賹ttp請求發(fā)送回去。然后服務(wù)器會讀取請求的body并且在成功后返回200狀態(tài)碼。
如果出于驗證的目的發(fā)出expect:100-continue,那么你只需在認證通過之后的下一次請求中攜帶上你的認證信息(authorization等等)即可。
如果是出于詢問服務(wù)器是否能夠完成自己的請求,比如是不是能夠向它發(fā)送一個類型為video/mp4的大文件時,則第二次正常發(fā)送body為這個文件的http請求即可。這里使用expect:100-continue的原因在于避免大文件傳送失敗帶來的帶寬浪費。第一次發(fā)送的詢問請求可以只有一個header,如果服務(wù)器拒絕提供這個服務(wù),則無需繼續(xù)發(fā)送大文件。
值的分隔符為,text/html沒有加;q= 表示權(quán)重為1*/*是任意類型的 MIME 類型
參考
https://developer.mozilla.org...
https://developer.mozilla.org...
去網(wǎng)上找個aes加密庫,然后在前后端約定好加密鹽,在進行加密傳輸即可。
單步調(diào)試發(fā)現(xiàn)遞歸的效率太慢了。fib(100)算了幾百萬次。
遞歸算法(以計算fib(10)為例)
+ fib(10)=fib(9)+fib(8)
+ fib(9)=fib(8)+fib(7)
// ...
可以發(fā)現(xiàn)在fib(10)和fib(9)的時候fib(8)被重復(fù)計算了。
用了一種比較笨的方法,效率還可以。
package main
import "fmt"
func fib(n uint64) uint64 {
callTime := 0
if n == 0 {
return 0
}
if n == 1 {
return 1
}
var (
first uint64 = 0
second uint64 = 1
result uint64 = 0
cursor uint64 = 1
)
for cursor < n {
callTime++
fmt.Println("fib", callTime)
result = first + second
first = second
second = result
cursor++
}
return result
}
var (
callTime = 0
)
func fib2(n int) int {
callTime++
fmt.Println("fib2", callTime)
if n <= 0 {
return 0
}
if n == 1 {
return 1
}
return fib2(n-1) + fib2(n-2)
}
func main() {
fib(10)
fib2(10)
}
終端輸出
fib 1
fib 2
fib 3
fib 4
fib 5
fib 6
fib 7
fib 8
fib 9
fib2 1
fib2 2
fib2 3
fib2 4
fib2 5
fib2 6
fib2 7
fib2 8
fib2 9
fib2 10
fib2 11
fib2 12
fib2 13
fib2 14
fib2 15
fib2 16
fib2 17
fib2 18
fib2 19
fib2 20
fib2 21
fib2 22
fib2 23
fib2 24
fib2 25
fib2 26
fib2 27
fib2 28
fib2 29
fib2 30
fib2 31
fib2 32
fib2 33
fib2 34
fib2 35
fib2 36
fib2 37
fib2 38
fib2 39
fib2 40
fib2 41
fib2 42
fib2 43
fib2 44
fib2 45
fib2 46
fib2 47
fib2 48
fib2 49
fib2 50
fib2 51
fib2 52
fib2 53
fib2 54
fib2 55
fib2 56
fib2 57
fib2 58
fib2 59
fib2 60
fib2 61
fib2 62
fib2 63
fib2 64
fib2 65
fib2 66
fib2 67
fib2 68
fib2 69
fib2 70
fib2 71
fib2 72
fib2 73
fib2 74
fib2 75
fib2 76
fib2 77
fib2 78
fib2 79
fib2 80
fib2 81
fib2 82
fib2 83
fib2 84
fib2 85
fib2 86
fib2 87
fib2 88
fib2 89
fib2 90
fib2 91
fib2 92
fib2 93
fib2 94
fib2 95
fib2 96
fib2 97
fib2 98
fib2 99
fib2 100
fib2 101
fib2 102
fib2 103
fib2 104
fib2 105
fib2 106
fib2 107
fib2 108
fib2 109
fib2 110
fib2 111
fib2 112
fib2 113
fib2 114
fib2 115
fib2 116
fib2 117
fib2 118
fib2 119
fib2 120
fib2 121
fib2 122
fib2 123
fib2 124
fib2 125
fib2 126
fib2 127
fib2 128
fib2 129
fib2 130
fib2 131
fib2 132
fib2 133
fib2 134
fib2 135
fib2 136
fib2 137
fib2 138
fib2 139
fib2 140
fib2 141
fib2 142
fib2 143
fib2 144
fib2 145
fib2 146
fib2 147
fib2 148
fib2 149
fib2 150
fib2 151
fib2 152
fib2 153
fib2 154
fib2 155
fib2 156
fib2 157
fib2 158
fib2 159
fib2 160
fib2 161
fib2 162
fib2 163
fib2 164
fib2 165
fib2 166
fib2 167
fib2 168
fib2 169
fib2 170
fib2 171
fib2 172
fib2 173
fib2 174
fib2 175
fib2 176
fib2 177
可以看到算法1優(yōu)勢還是蠻大的
func MaxMin(position [][]float64) (max, min [2]float64) { // 改為數(shù)組解決
for k, v := range position {
if k == 0 {
max = [2]float64{
position[k][0],
position[k][1],
}
min = [2]float64{
position[k][0],
position[k][1],
}
continue
}
if v[0] > max[0] {
max[0] = v[0]
}
if v[1] > max[1] {
max[1] = v[1]
}
if v[0] < min[0] {
min[0] = v[0]
}
if v[1] < min[1] {
min[1] = v[1]
}
fmt.Println(v)
}
return
}當你以 interface 接受的時候,你對原來的值就一無所知了,但可以使用反射來獲取它的值。
延用你的寫法可以這樣寫:
//把類似slice的map轉(zhuǎn)為slice
func MapToSlice(input interface{}) []interface{} {
v := reflect.ValueOf(input)
keys := v.MapKeys()
output := []interface{}{}
for i, l := 0, v.Len(); i < l; i++ {
output = append(output, v.MapIndex(keys[i]))
}
return output
}
但需要注意的是,這里返回的值是 reflect.Value 類型
http://zhwen.org/?p=984&from=...
優(yōu)雅的重啟服務(wù),主要使用信號量,在已啟動的進程中創(chuàng)建子進程,不影響用戶體驗.新啟動的和再次啟動的服務(wù)創(chuàng)建更新后的服務(wù)的進程.
source ~/.bash_profile
首先你先確定你是否更改了默認的SHELL,比如有很多人使用了zsh,拿配置文件就又不一樣了!
算了我都直接說了吧?。?br>如果你使用的是ZSH
需要你在cat /etc/shells 修改默認SHELL,完后去更改.zshrc
break只是break了select,你這里的for是一個死循環(huán)且沒有退出條件。
sum(float)/num(int)
找到原因了,是我的鍋,調(diào)grpc如果返回error,前面那個變量*push.RegisterResponse,就默認返回nil,然后我在測試里試圖訪問以res.Msg的形式獲取錯誤信息,res是nil,就有了invalid memory address or nil pointer dereference的錯
fmt打印有內(nèi)容的話,resp絕不會為空,是否req url弄錯了.
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。