請(qǐng)問(wèn)解決了嗎?
public String encryptByte(byte[] byteS) {
byte[] byteFina = null;
Cipher cipher;
BASE64Encoder base64en = new BASE64Encoder();
String strMi = "";
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, getKey(appkey));
byteFina = cipher.doFinal(byteS);
System.out.println(Arrays.toString(byteFina));
strMi = base64en.encode(byteFina);
} catch (Exception e) {
throw new RuntimeException(
"Error initializing SqlMap class. Cause: " + e);
} finally {
cipher = null;
}
return strMi;
}
private static Key getKey(String strKey) {
try {
SecureRandom _secureRandom = SecureRandom.getInstance("SHA1PRNG");
_secureRandom.setSeed(strKey.getBytes());
KeyGenerator kg = null;
kg = KeyGenerator.getInstance(DES_ALGORITHM);
System.out.println(_secureRandom.toString());
kg.init(_secureRandom);
return kg.generateKey();
} catch (Exception e) {
throw new RuntimeException(
"Error initializing SqlMap class. Cause: " + e);
}
}徹底卸載(若你是Windows, 刪除C:\Users\當(dāng)前用戶\.vscode文件夾),然后重新安裝。
我覺(jué)得只能通過(guò)序列化成json或者其他格式了
http.Request的Context可以用來(lái)在各個(gè)中間件之間共享數(shù)據(jù)。
你說(shuō)的分層是服務(wù)器架構(gòu)的意思吧,現(xiàn)在服務(wù)器一般都是分布式的。上層接入服務(wù)器,登錄服務(wù)器、聊天服務(wù)器等等這些與游戲邏輯沒(méi)啥關(guān)系的服務(wù)器,下層就是n個(gè)負(fù)責(zé)游戲邏輯的GameServer。游戲客戶端往往是跟一個(gè)接入服務(wù)器做數(shù)據(jù)交換,由接入服務(wù)器根據(jù)具體請(qǐng)求分發(fā)消息。
593這個(gè)地方加個(gè)引號(hào)試試""
"scene":{"scene_str": "5932121212121212121212"}
跨平臺(tái)方便。新的 arch 只需要寫一個(gè)從 plan 9 匯編到 target arch 匯編的轉(zhuǎn)譯器就行了。
go func協(xié)程里的s,ok:=<-c在一個(gè)for死循環(huán)里,第一遍循環(huán)阻塞再這里,等待c信號(hào)量。 main協(xié)程的for循環(huán)打印出put,然后給go func這個(gè)協(xié)程發(fā)了一個(gè)c信號(hào),協(xié)程收到這個(gè)信號(hào),開(kāi)始繼續(xù)執(zhí)行,if !ok即為false所以不會(huì)return,此時(shí)go func協(xié)程會(huì)打印出0。進(jìn)入下個(gè)循環(huán),依舊阻塞在等待c信號(hào)量。
而main協(xié)程走到了println("main....")所以能夠打印出main...
close(c),那么go func協(xié)程阻塞在了等待c信號(hào)量上,而main協(xié)程阻塞在了等待down信號(hào)量,造成了deadlock!,A區(qū)域的close(c) 沒(méi)有機(jī)會(huì)走到,所以不會(huì)return,不會(huì)走到defer,更不會(huì)走到close(down)close(c) ,那么main協(xié)程暫時(shí)阻塞在等待down信號(hào)量,go func接受到了這個(gè)c信號(hào)量繼續(xù)走,此時(shí)c已經(jīng)close,所以if !ok為true,此時(shí)可以走到return,跳出for死循環(huán),走到defer函數(shù),走到close(down),發(fā)送一個(gè)down信號(hào)量給main,此時(shí)main接著走,完成整個(gè)流程。File->Project Structure下面配置下sdk
你的 HASH 用法搞錯(cuò)了,請(qǐng)參考下面的代碼
/*
數(shù)字簽名示例代碼。
@author: 李毅
*/
package main
import (
"bytes"
"crypto"
"crypto/rand"
"crypto/rsa"
"crypto/sha512"
"log"
)
type Demo struct {
PriKey *rsa.PrivateKey
}
func (demo *Demo) LoadPrivateKey() {
privateKey, err := rsa.GenerateKey(rand.Reader, 1024)
if err != nil {
log.Fatal(err)
}
demo.PriKey = privateKey
}
// 返回 digest, signature
func (demo *Demo) Sign(message string) ([]byte, []byte) {
messageBytes := bytes.NewBufferString(message)
hash := sha512.New()
hash.Write(messageBytes.Bytes())
digest := hash.Sum(nil)
signature, err := rsa.SignPKCS1v15(rand.Reader, demo.PriKey, crypto.SHA512, digest)
if err != nil {
log.Fatalf("rsa.SignPKCS1v15 error: %v\n", err)
}
return digest, signature
}
func (demo *Demo) Check(digest, signature []byte) bool {
err := rsa.VerifyPKCS1v15(&demo.PriKey.PublicKey, crypto.SHA512, digest, signature)
if err != nil {
log.Printf("rsa.VerifyPKCS1v15 error: %V\n", err)
return false
}
return true
}
func main() {
demo := &Demo{}
demo.LoadPrivateKey()
digest, signature := demo.Sign("hi")
if demo.Check(digest, signature) {
log.Printf("signature is good")
} else {
log.Printf("signature is bad")
}
}api中,你不應(yīng)該暴露key和加密方法到客戶端,你應(yīng)該采用https + 用戶token的方式訪問(wèn)你后端接口
排除密碼等連接信息錯(cuò)誤了嗎? 我自己搭建的表示沒(méi)有任何問(wèn)題... 是在不想就刪除軟件和對(duì)應(yīng)的殘留信息,重新安裝試試
1.參數(shù)傳進(jìn)去是副本還是引用的區(qū)別
2.receiver類型為T只包含T的方法集,receiver類型為T包含T和T的方法集
你這個(gè)寫法都錯(cuò)誤了,代碼注釋地方。
package main
import (
"fmt"
"time"
"net"
)
func main() {
addr := "127.0.0.1:8999"
go func() {
tcpaddr, err := net.ResolveTCPAddr("tcp4", addr)
if err != nil {
panic(err)
}
listen, err := net.ListenTCP("tcp", tcpaddr)
if err != nil {
panic(err)
}
for {
if conn, err := listen.Accept(); err != nil {
panic(err)
} else if conn != nil {
go func(conn net.Conn) {
buffer := make([]byte, 1024)
n, err := conn.Read(buffer)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(">", string(buffer[0 : n]))
}
conn.Close()//
}(conn)
}
}
}()
time.Sleep(time.Second)
// Client
if conn, err := net.Dial("tcp", addr); err == nil {
for i := 0; i < 2; i++ {
_, err := conn.Write([]byte("hello"))
if err != nil {
fmt.Println(err)
conn.Close()
break
} else {
fmt.Println("ok")
}
// sleep 10 seconds and re-send
time.Sleep(10*time.Second)
}
} else {
panic(err)
}
}先把兩個(gè)數(shù)組的數(shù)生成一個(gè)1-100的隨機(jī)序列,再1-1,2-2配對(duì)
下一種1-2,2-3,,,,99-100,100-1以此類推..
total小寫的,不可導(dǎo)出,多看看文檔吧
Go C++等語(yǔ)言的可執(zhí)行文件執(zhí)行是都是加載到內(nèi)存的
sum(float)/num(int)
分庫(kù)確實(shí)有很多問(wèn)題,但是現(xiàn)在大多數(shù)互聯(lián)網(wǎng)企業(yè)由于業(yè)務(wù)數(shù)據(jù)龐大基本上都會(huì)使用分庫(kù)分表。分庫(kù)分表最根本的原因就是解決單機(jī)負(fù)載壓力,把一臺(tái)機(jī)器上的壓力分散到多臺(tái)服務(wù)器上去。
分庫(kù)也確實(shí)有一些問(wèn)題需要考慮:
1.分庫(kù)規(guī)則和策略(分片原則)。什么樣的數(shù)據(jù)進(jìn)如DB1中,什么樣的數(shù)據(jù)進(jìn)入DB2中
2.跨庫(kù)事物
3.分布式業(yè)務(wù)主鍵如何設(shè)計(jì)
4.庫(kù)表和庫(kù)表之間如果需要join
5.分頁(yè)的問(wèn)題
6.多數(shù)據(jù)源整合的問(wèn)題
其實(shí),單機(jī)分庫(kù)只是解決了表的壓力,并沒(méi)有解決服務(wù)器的壓力。
現(xiàn)在也有很多開(kāi)源組件支持分庫(kù)分表,可以參考下mycat sharding-jdbc等等一些開(kāi)源項(xiàng)目。
歡迎加Q群交流討論Java技術(shù) 696883318
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。