我写代码那些年--开始--自学之路

寻路准备。 决定转行IT后,接下来的事儿,就是学编程了,那时候,对计算机的使用,仅限于日常办公一类的。对于编程写代码,可以说是很迷茫,怎么搞?从哪里开始?如何下手?一头雾水。左思右想后,当时我想到了一种取巧的方式学习,我想:我不懂这个,就没必要瞎折腾,网上查也可能事倍功半,走没必要的弯路只是浪费时间,于是我就找了几个关系好的计算机学院的同学,让他们帮我出主意,该怎么学,推荐我一些书,我自己对着练。当时我让他们告诉我怎么学还不算完,还让他们帮我推荐一些书单,列出书的名字,出版社,作者。这样我比较容...阅读全文

简书 2020-11-29 21:32:44 风调雨顺_735b

分别用Python,Java,Golang,PHP实现Hello World,哪个更适合你

Python语言(只要一行,不带分号):print("Hello World")Java语言(需要五行,要带分号):public class test{ public static void main(String[] args) { System.out.println("Hello World"); }}Golang语言(五行,不带分号):package mainimport "fmt"func main() { fmt.Println("Hello World")}PHP语言(三行,带分号...阅读全文

简书 2020-11-29 21:32:44 1024小神

一文看懂 session 和 cookie

----------- cookie 大家应该都熟悉,比如说登录某些网站一段时间后,就要求你重新登录;再比如有的同学很喜欢玩爬虫技术,有时候网站就是可以拦截住你的爬虫,这些都和 cookie 有关。如果你明白了服务器后端对于 cookie 和 session 的处理逻辑,就可以解释这些现象,甚至钻一些空子无限白嫖,待我慢慢道来。 一、session 和 cookie 简介 cookie 的出现是因为 HTTP 是无状态的一种协议,换句话说,服务器记不住你,可能你每刷新一次网页,就要重新输入一次账...阅读全文

简书 2020-11-29 21:32:42 labuladong

一文带你入门 Golang

go 语言特点脚本化的语法,容易上手。静态类型+编译性,开发、运行效率都有保证函数式 & 面向对象 两种编程范式,原生支持并发编程支持,降低开发成本,维护成本,以及更好的兼容性,效率。劣势:语法糖没有 Python 和 Ruby 多。运行效率不及C,但已赶超C++,Java。第三方库不多,就是轮子少(喜欢造轮子的可以加入golang轮子大军)。安装官方: https://golang.org/国内官方站点: https://go-zh.org/Linuxhttp://golang.org/dl/...阅读全文

Segmentfault 2020-12-02 14:32:32 小白要生发

sync.Cond学习笔记

sync.Condgo/syncsync.Cond用于goroutine之间的协作,用于协程的挂起和唤醒。当多个协程之间协作时,有可能一个协程需要依赖别的协程完成后再进行某种操作,这时可依据管道进行通信,这对于两个协程之间是比较方便的。但若是多个协程依赖一个协程的完成后再进行某种操作,那么就可以使用sync.Cond来实现了;例子:package main import ( "fmt" "sync" "time" ) var locker = new(sync.Mutex) var cond =...阅读全文

Segmentfault 2020-12-02 11:32:33 byte

Golang error浅析

由于Golang的语言设计的原因,不管是不是愿意,每个golang开发者的几乎每一段代码都需要与error做缠斗。下面我就简单分析一下golang中的error相关。 error是什么? 首先需要明确的一点是,golang中对于error类型的定义是什么?不同于很多语言的exception机制,golang在语言层面经常需要显示的做错误处理。其实从本质上来讲,golang中的error就是一个接口: // The error built-in interface type is the conv...阅读全文

简书 2020-11-29 09:32:39 MontyOak

golang中defer执行时机与常见问题

defer是什么? 在Go语言中,可以使用关键字defer向函数注册退出调用,即主函数退出时,defer后的函数才被调用。defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。 defer的用途 在函数中,程序员经常需要创建资源(比如:数据库连接、文件句柄、锁等) ,为了在函数执行完 毕后,及时的释放资源,Go 的设计者提供 defer (延时机制)。 defer的执行时机 了解defer的执行时机首先要知道golang的return并非原子操作,return的底层机制如下...阅读全文

简书 2020-11-29 09:32:38 皮儿吃屁

聊聊golang的类型断言

序 本文主要研究一下golang的类型断言 类型断言 x.(T) 断言x不为nil且x为T类型 如果T不是接口类型,则该断言x为T类型 如果T类接口类型,则该断言x实现了T接口 实例1 func main() { var x interface{} = 7 i := x.(int) fmt.Println(reflect.TypeOf(i)) j := x.(int32) fmt.Println(j) } 直接赋值的方式,如果断言为true则返回该类型的值,如果断言为false则产生runtim...阅读全文

使用Golang在数秒内读取16GB的文件

By Ohm Patel 当今世界的任何计算机系统每天都会生成大量的日志或数据。随着系统的增长,将调试数据存储到数据库中是不可行的,因为它们是不可变的,而且只用于分析和故障解决目的。因此,组织倾向于将其存储在文件中,这些文件驻留在本地磁盘存储中。 我们将使用Golang从16 GB的.txt或.log文件中提取数百万行日志。 Lets Code…! 开始编码...! 让我们先打开文件。我们将使用标准的Go os.File用于任何文件IO。 f, err := os.Open(fileName) ...阅读全文

简书 2020-11-29 09:32:38 颍水书生

聊聊golang的类型断言

序本文主要研究一下golang的类型断言类型断言x.(T)断言x不为nil且x为T类型如果T不是接口类型,则该断言x为T类型如果T类接口类型,则该断言x实现了T接口实例1func main() { var x interface{} = 7 i := x.(int) fmt.Println(reflect.TypeOf(i)) j := x.(int32) fmt.Println(j) }直接赋值的方式,如果断言为true则返回该类型的值,如果断言为false则产生runtime panic;j...阅读全文

Segmentfault 2020-12-02 11:32:33 codecraft

码了2000多行代码就是为了讲清楚TLS握手流程

来自公众号:新世界杂货铺前言呼,这篇文章的准备周期可谓是相当的长了!原本是想直接通过源码进行分析的,但是发现TLS握手流程调试起来非常不方便,笔者怒了,于是实现了一个极简的net.Conn接口以方便调试。码着码着,笔者哭了,因为现在这个调试Demo已经达到2000多行代码了!虽然码了两千多行代码,但是目前只能够解析TLS1.3握手流程中发送的消息,因此本篇主要分析TLS1.3的握手流程。特别提醒:有想在本地调试一番的小伙伴请至文末获取本篇源码。结论先行鉴于本文篇幅较长,笔者决定结论先行,以助各位...阅读全文

Segmentfault 2020-12-02 10:32:33 新世界杂货铺

golang的chan特性

go routine之间可以通过channel来通信。 1、<-chan只能用来发送的单向channel;chan<-只能用来接收的单向channel;chan双向channel 向<-chan发送数据 或者 接收chan<-的数据;编译失败 ``` var cc = make(<-chan int) close(cc) cc <- 23 # command-line-arguments .\main.go:48:7: invalid operation: close...阅读全文

Go语言中文网 2020-11-28 16:18:58 minwell

MAC安装VSCode,写GOLANG例子

1,下载VSCode1.1 下载地址:https://code.visualstudio.com1.2 点击安装包,安装完成1.3 设置简体中文。打开VSCode,按下command+shitf+p,进入命令行,然后输入Configure Language,选择简体中文,若没有则选择其他,安装简体中文,安装完成之后重启VSCode,即会显示中文。1.4 安装go包,进入命令行,输入go,然后点击install安装即可。1.5 规划路径。点击VSCode左上角文件图标,显示添加文件夹,即添加对应需...阅读全文

简书 2020-11-28 15:33:20 CStart

Golang 文件操作的那些事儿

Os模块的使用与源码研究 文件:计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。例如咱们常见的文件后缀名.exe,.txt,'.word'...等等 文件的基本操作可简单分为增、删两类,也就是咱们所说的CURD(增删改查),也是基于此两类操作。可简单理解为打开文件夹、CURD、关闭文件夹。结束~ golang对于文件基本上都是基于Golang的os模块,那让我们一起了解一下,那么Golang是如何对文件进行操作呢。Let's Go~ 打开文件 Golang...阅读全文

简书 2020-11-28 15:33:15 Payne_Wu

2020-11-28 Go iris 学习

环境:Mac Goland 一、Mac 上的 go环境的安装 1、下载安装包https://golang.org/dl/ 如果访问不了的话可以使用国内的地址https://golang.google.cn/ 2、配置环境变量 (1)打开.bash_profile文件,可以直接用文本编辑打开,一般这个文件在/Users/yep/.bash_profile 路径下(yep是个人电脑的用户名) image.png (2)打开bash_profile后添加以下路径 export GOROOT=/usr/...阅读全文

简书 2020-11-28 15:33:13 路飞lep

J2SE II一一HTTP、TCP、UDP、Socket解读

<meta charset="utf-8"> OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 记忆方法:记住前面的第一个字 物 数 网 传 会 表 应 这七层每一层都有自己的作用,作用如下图分解: image 2、Http HTTP(Hyp...阅读全文

简书 2020-11-28 15:33:06 Help_II