当前位置:网站首页>1、 Go knowledge check and remedy + practical course notes youth training camp notes
1、 Go knowledge check and remedy + practical course notes youth training camp notes
2022-07-07 07:24:00 【A low-key horse】
Go Knowledge checking and filling + Practical course notes | Youth Camp notes
This is my participation 「 The third youth training camp - Back end field 」 The third part of note creation activities 1 Notes
It is divided into simple basic grammar to check and fill gaps and notes of the final practical project
Check for defects and make up for omissions :
Map:
map The assignment of is completely unordered , It has nothing to do with the content and order of insertion
Structure :
Pass in the structure pointer as a parameter in the method , It can be modified , In some cases, the overhead of copying structures can be avoided
string library :
a := "hello"
fmt.Println(strings.Contains(a, "ll")) // true
fmt.Println(strings.Count(a, "l")) // 2
fmt.Println(strings.HasPrefix(a, "he")) // true
fmt.Println(strings.HasSuffix(a, "llo")) // true
fmt.Println(strings.Index(a, "ll")) // 2
fmt.Println(strings.Join([]string{
"he", "llo"}, "-")) // he-llo
fmt.Println(strings.Repeat(a, 2)) // hellohello
fmt.Println(strings.Replace(a, "e", "E", -1)) // hEllo
fmt.Println(strings.Split("a-b-c", "-")) // [a b c]
fmt.Println(strings.ToLower(a)) // hello
fmt.Println(strings.ToUpper(a)) // HELLO
fmt package :
+v: Print out more details
fmt.Printf("p=%+v\n", p) // p={x:1 y:2}
#v: Print out more detailed content
fmt.Printf("p=%#v\n", p) // p=main.point{x:1, y:2}
JSON:
Serialize to a string :
a := userInfo{
Name: "wang", Age: 18, Hobby: []string{
"Golang", "TypeScript"}}
buf, err := json.Marshal(a)
if err != nil {
panic(err)
}
fmt.Println(buf) // [123 34 78 97...]
fmt.Println(string(buf)) // {"Name":"wang","age":18,"Hobby":["Golang","TypeScript"]}
Deserialize back to structure :
var b userInfo
err = json.Unmarshal(buf, &b)
if err != nil {
panic(err)
}
fmt.Printf("%#v\n", b) // main.userInfo{Name:"wang", Age:18, Hobby:[]string{"Golang", "TypeScript"}}
Get the timestamp :
now := time.Now()
fmt.Println(now.Unix()) // 1648738080
Type conversion :
This method always forgets
// String to number
n2, _ := strconv.Atoi("123")
// 123
// The number is converted to a string
strconv.Itoa(n2)
// "123"
rand random number
The corresponding random number seed is generated by the timestamp generated by the time the project is started each time :
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
The client parses the response
Convert a string into a stream
Because if you pass in a stream instead of a string , Prevent if the parameter file is large , It will waste a lot of time
client := &http.Client{
}
var data = strings.NewReader(`{"trans_type":"en2zh","source":"good"}`)
Add a blog you wrote before (golang Of Panic)
You can put panic Understand as a kind of try catch
Used only to catch fatal errors , It should not be used to report common errors : For example, when something should not happen happens , We should call panic( An array 、 Null pointer exception, etc )
When an exception occurs and is panic When capturing , The program will break , And then execute defer
stay go Language design , The function gets a multiple return value , Although very miscellaneous , Use... Every time if err != nil
however , Really catch exceptions and throw , It has to be used panic
The sample code
Practice notes :
SOCKS5 proxy server
SOCKS5 The protocol is a clear text transmission protocol , The purpose is to open a hole in the firewall , Let the authorized users have the ability to access the resources through a single port
Activation effect :
After starting the program ,
- Mode one : Configure and use this proxy in the browser , At this point, we open the web page , Proxy server logs , It will print out the domain name of the website you visit or IP, This shows that our network traffic is through this proxy server .
- Mode two : Test our proxy server on the command line . We can use
cur-soci5 + Proxy address , Followed by an accessible URL
, If the proxy server works properly , that curt The command will return normally .
socks5 How the protocol works
Normal browser to visit a website , If you don't go through the proxy server , Will first establish with each other's website TCP Connect , Then shake hands three times . After shaking hands HTTP request , Then the service returns HTTP Respond to .
If you set up a proxy server , The process will become more complicated . The first is the browser and socks5 The agent establishes TCP Connect ,socks5 The agent then establishes with the real server TCP Connect . It can be divided into four stages , handshake phase 、 Authentication phase 、 Request stage 、relay Stage .
The first handshake stage , Liuziqi will socks5 Agent sends request , The content of the request package includes the version number of a protocol , There are also supported authentication types , socks5 Will choose an authentication method , Back to the browser . If you return 00 That means you don't need certification , If other types are returned, the authentication process will begin .
( The certification process :
First step , The browser will send a package to the proxy server , This package has three fields ; First field :version, That is, the protocol version number , Fixed is 5; Second field :methods, Number of certified methods ; Third field : Every method The coding ,0 Representatives don't need certification ,2 On behalf of user name and password authentication
here , The proxy server also needs to return a response, The return package includes two fields , One is version One is method, That is, the authentication method we selected , At present, we are only ready to implement the method without authentication , That is to say 0)
The third stage is the request stage , After authentication, the browser will towards socks5 Initiate request . The main information includes version number , Type of request , Generally, it's mainly connection request , Represents hope socks5 The server goes to a domain name or a IP Address a port to establish TCP Connect , After the proxy server receives the response , It will establish a connection with the back-end server , Then return the response .
The fourth stage is relay Stage , At this time, the browser will send a normal sending request , Then after the proxy server receives the request , It will directly convert the request to the real server . Then if the real server returns a response , The response will also be sent to the proxy server , The proxy server doesn't care about the details of sending traffic , It can be HTTP Traffic , It could be something else TCP Traffic .
Establish connection with back-end server , Then return the response .
The fourth stage is relay Stage , At this time, the browser will send a normal sending request , Then after the proxy server receives the request , It will directly convert the request to the real server . Then if the real server returns a response , The response will also be sent to the proxy server , The proxy server doesn't care about the details of sending traffic , It can be HTTP Traffic , It could be something else TCP Traffic .
边栏推荐
- JS small exercise ---- time sharing reminder and greeting, form password display hidden effect, text box focus event, closing advertisement
- Basic process of network transmission using tcp/ip four layer model
- 抽丝剥茧C语言(高阶)数据的储存+练习
- main函数在import语句中的特殊行为
- leetcode 509. Fibonacci number
- 父组件传递给子组件:Props
- How do I get the last part of a string- How to get the last part of a string?
- sql中对集合进行非空校验
- Calculus key and difficult points record part integral + trigonometric function integral
- Test of transform parameters of impdp
猜你喜欢
mips uclibc 交叉编译ffmpeg,支持 G711A 编解码
Freeswitch dials extension number source code tracking
Kuboard无法发送邮件和钉钉告警问题解决
Wechat applet full stack development practice Chapter 3 Introduction and use of APIs commonly used in wechat applet development -- 3.10 tabbar component (I) how to open and use the default tabbar comp
Abnova immunohistochemical service solution
子组件传递给父组件
Jesd204b clock network
2018 Jiangsu Vocational College skills competition vocational group "information security management and evaluation" competition assignment
L'étape avancée du pointeur de langage C (haut de gamme) pour l'enroulement des cocons
Music | cat and mouse -- classic not only plot
随机推荐
Unity3d learning notes
Release notes of JMeter version 5.5
Jesd204b clock network
How to model and simulate the target robot [mathematical / control significance]
身边35岁程序员如何建立起技术护城河?
Introduction to abnova's in vitro mRNA transcription workflow and capping method
Detailed explanation of transform origin attribute
弹性布局(一)
Nesting and splitting of components
Lvs+kept (DR mode) learning notes
Blue Bridge Cup Netizen age (violence)
1089: highest order of factorial
普通测试年薪15w,测试开发年薪30w+,二者差距在哪?
Reflection (II)
How to * * labelimg
云备份项目
Advanced level of C language (high level) pointer
Four goals for the construction of intelligent safety risk management and control platform for hazardous chemical enterprises in Chemical Industry Park
$refs: get the element object or sub component instance in the component:
Torefs API and toref API