自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 golang-利用反射访问/修改结构体的非导出字段

在golang中定义结构体时,如果字段名的首字母大写,那么这个字段就是可导出的,即可以在包外访问并修改的,而如果字段名的首字母小写,这个字段就是不可导出的。但其实,通过golang提供的反射,我们是可以在包外访问并操作到结构体中的非导出字段的。...

2020-09-13 16:44:36 2816

原创 golang-for range的坑

golang中,常用的遍历方式有经典的for循环和for range两种。实际上,使用 for range 语法的控制结构最终应该也会被golang的编译器转换成普通的 for 循环,所以for range实际上会被先转换成经典的for循环再真正执行,而正是这个转换过程常常会留坑。下面简单表示这个转换过程:for range代码是:for index, value := range t_slice { original body}转换后:len_temp := len(t_slice)ra

2020-08-08 17:25:55 3392 1

原创 golang-短变量覆盖case

常见的情形就是:在if条件语句块或for循环语句块中,使用“:=”给一个与外部同名的变量赋值直接看个例子:package mainimport "fmt"func returnSomething() (int, bool) { return 0, true}func main() { var errOrNot = false a := 1 if a > 0 { // var res int res, errOrNot := returnSomething() f

2020-07-25 16:10:34 414

原创 golang-性能测试的同时进行性能分析

性能测试使用benchmark,性能分析使用pprof,二者可以同时进行。示例代码:package benchmarktestimport ( "strings" "testing")func BenchmarkConcatStringByAdd(b *testing.B) { elems := []string{"1", "2", "3", "4", "5"} b.ResetTimer() for i := 0; i < b.N; i++ { res := "" fo

2020-07-25 12:32:56 239

原创 golang-使用pprof进行性能分析

pprof是golang自带的性能分析工具,在程序运行过程中,可以记录程序的运行信息,像CPU使用情况、内存使用情况、协程的情况等等。pprof主要有两种使用方式:通过文件方式输出Profilehttp通过文件方式输出profile下面给出一个简单的示例程序(例子摘自网上):package mainimport ( "log" "math/rand" "os" "runtime/pprof" "time") const ( row = 10

2020-07-25 00:58:30 1969 1

原创 golang-写一个简单的性能测试

golang中,可以使用自带的benchmark来进行性能测试。写法与单元测试很类似:文件名仍以xxx_test.go来命名,函数以Benchmark为前缀名,并且带有一个testing.B类型的参数。实例:func BenchmarkXXX(b *testing.B) { // 与性能测试无关的代码 b.ResetTimer() for i:=0;i<b.N;i++ { //测试代码 } b.StopTimer() // 与性能测试无关的代码}具体的测试代码就放在循环里。

2020-07-24 17:12:59 651

原创 golang-写一个简单的单元测试

golang中的单元测试主要使用golang的内建测试指令go test和testing包来实现。#先编写一个简单的待测试文件functions.go,主要包含两个待测试的功能函数square和addOne

2020-07-24 16:12:48 717

原创 golang-不固定格式的json

当json字符串没有固定格式时,反序列化不好定义与其相对应的结构体,此时应使用json.RawMessage将原始字节数据保存下来,再做进一步解析。json.RawMessage其实是[]byte的别名。如:package mainimport ( "encoding/json" "fmt")type Student struct { Name string `json:"name"` Age int `json:"age,string"`}func main() {

2020-06-27 10:44:49 2660

原创 golang-自定义json序列化和反序列化

为某个类型实现MarshalJSON()([]byte, error)和UnmarshalJSON(b []byte) error方法,那么该类型在序列化和反序列化时就会使用相应方法。未自定义前代码:package mainimport ( "encoding/json" "fmt" "time")type Student struct { Name string `json:"name"` Age int `json:"age"` We

2020-06-24 17:43:53 2827

原创 golang-json中的数字

json中的数字类型问题JSON 协议中没有整型和浮点型之分,都是number。Go中json字符串中的数字经过json包反序列化会成为float64类型。如:package mainimport ( "encoding/json" "fmt")type Student struct { Name string `json:"name"` Age interface{} `json:"age"` Weight float64 `json:"weight"`

2020-06-24 16:33:00 2562

原创 golang-json使用(json tag)

结构体的tagtag是结构体的元信息,运行时通过反射机制读取。结构体的tag一般定义在相应字段的后面,格式为:fieldName fieldType `key1:"value1" key2:"value2"同一个结构体字段可以设置多个键值对tag,不同的键值对之间使用空格分隔。json tag默认情况下序列化与反序列化使用的都是结构体的原生字段名,可以通过给结构体字段添加json tag来指定序列化后的字段名。例如代码:package mainimport ( "fmt" "enc

2020-06-23 17:32:05 3581 1

原创 golang-json基础使用

golang中直接导入“encoding/json”包即可使用json.普通结构体的序列化与反序列化主要是json.Marshal与json.Unmarshal两个函数的使用。func Marshal(v interface{}) ([]byte, error)func Unmarshal(data []byte, v interface{}) error这里示例代码及输出为:package mainimport ( "fmt" "encoding/json")type Stud

2020-06-23 15:44:27 215

原创 golang-使用自定义的包(不使用包管理工具)

golang中怎样在不使用其它包管理工具时使用自己定义的包呢,这里举一个简单的例子。在 GOPATH/src 下新建文件夹hello执行时golang会在GOPATH/src/和GOROOT/src/下寻找代码中引入的包,所以一般在GOPATH/src下自定义包在hello中新建文件夹func,在func下编写func.go://自定义包func作为被调用包package func//Add函数是被调用工具函数func Add(a, b int) int { return a + b

2020-06-22 17:37:20 694

转载 ngx_http_request_t结构体

收藏学习................................................................................................

2017-04-19 10:47:34 1376

原创 ubuntu下安装nginx时PCRE库、zlib库、OpenSSL库的安装

Nginx个人学习备忘............................................................

2017-04-09 14:35:17 25081 4

原创 C语言打印某年日历

个人C语言学习记录.................................

2017-03-29 21:53:24 9667 3

原创 C语言 计算e及e的次方的近似值

个人C语言学习笔记.......

2017-03-25 15:36:15 36732

转载 C语言中的格式控制符

C语言学习记录

2017-03-14 21:07:04 17888 2

转载 Wireshark学习十:应用Wireshark显示过滤器分析特定数据流(下)

wireshark学习

2016-08-09 01:16:43 4239

转载 Wireshark学习九:应用Wireshark显示过滤器分析特定数据流(上)

wireshark学习

2016-08-09 01:14:39 2706

转载 Wireshark学习八:应用Wireshark过滤条件抓取特定数据流

wireshark学习

2016-08-09 01:12:52 796

转载 Wireshark学习七:Statistics统计工具功能详解与应用

wireshark学习

2016-08-09 01:11:07 16485

转载 Wireshark学习六:狙击网络高延时点

wireshark学习

2016-08-09 01:08:24 508

转载 Wireshark学习五:TCP窗口与拥塞处理

wireshark学习

2016-08-09 01:06:17 1225

转载 Wireshark学习四:网络性能排查之TCP重传与重复ACK

wireshark学习

2016-08-09 01:03:33 3481

转载 Wireshark学习三:应用Wireshark IO Graphs分析数据流

wireshark学习

2016-08-09 00:56:42 3316

转载 Wireshark学习二:TCP

wireshark学习

2016-08-09 00:54:56 757

转载 Wireshark学习一:基本用法

wireshark学习

2016-08-09 00:51:27 482

转载 数据结构

本部分总结前面介绍的数据结构和算法,并讨论在不同的情况下如何进行选择。通用数据结构:数组、链表、树、哈希表专用数据结构:栈、队列、优先级队列排序:插入排序、希尔排序、快速排序、归并排序、堆排序图:邻接矩阵、邻接表外部存储:顺序存储、索引文件、B-树、哈希方法

2016-08-03 01:00:49 431

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除