自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘森林l的博客

个人的一些学习心得,毕竟初学,难免有所差错,希望可以留言指正,谢谢!

  • 博客(235)
  • 收藏
  • 关注

原创 Linux C/C++代码调试之深入熟悉使用GDB

Coredump文件是什么?1.1 产生根因1.2 如何打开?1.3 如何设置文件名以及路径GDB理论部分2.1 基本命令2.2 被忽略但实用的命令2.3 实用的GDB设置GDB操作部分3.1 coredump文件是否任何时候都产生?3.2 系统函数是否可以打印coredump信息?3.3 调试案列(基本使用)3.4 调试案列(多进程)3.5 调试案列(多线程以及线程锁问...

2020-04-24 12:56:14 920 4

原创 深入探究 Linux C中进程崩溃

目录前言栈内存异常以及案列分享堆内存异常以及案列分享Ptmalloc的内存管理前言LinuxC的内存管理融入了设计者很多高效的算法和思想,提供了用户直接可以操作的内存的“指针”,这也是其他语言不涉及的(除Go语言21世纪的C语言),但是对于指针这把双刃剑,开发者操作着进程的内存,难免造成意想不到的崩溃问题,其实踩内存情况应该把栈和堆(ptmalloc)分开,因为linux对这两块的管理...

2020-04-23 22:10:08 1443 4

原创 gRPC学习之简单模式(第三十九天)

简单模式:简单模式只是使用参数和返回值作为服务器与客户端传递数据的方式建立如下工程:编写文件proto文件syntax="proto3";package Model;message execlResponse{ int32 sid=1; int32 age=2; string name=3; string telephone=4; stri...

2020-04-20 09:12:30 2231 1

原创 gRPC学习之简单实现C\S通信(第三十八天)

总结增加、修改一个grpc接口步骤:1.修改proto文件,新增修改一个service,相应的请求和回复的message2.使用protoc生成go代码3.server和cilent分别调用生成的go包里的方法这个也就是平台中立的体现,没有完全的平台中立,只是从新设计。thrift和 grpc的优劣:1.依据网络进行合理选择2.thrift是Facebook的开源rpc框架,thr...

2020-04-18 22:42:33 6189 2

原创 微服务之技术栈(第二十六天)

这是Spring Cloud 体系,仅仅了解核心支撑组件服务网关 Zuul服务注册发现 Eureka+Ribbon服务配置中心 Apollo认证授权中心 Spring Security OAuth2服务框架 Spring MVC/Boot监控反馈组件数据总线 Kafka日志监控 ELK调用链监控 CATMetrics 监控 KairosDB健康检查和告警 ZMon限...

2020-04-18 14:59:40 171

原创 Go语言之gRPC+Protobuf搭建(第二十八天)

环境安装-Protobuf 安装1.安装Protobuf 编译器 protoc,下载地址:https://github.com/google/protobuf/releases我的是windows,将压缩包bin目录下的exe放到环境PATH目录中即可。...

2020-04-18 14:54:30 1264

原创 Redis学习之查看服务器运行状态(第三十五天)

管理 redis 服务127.0.0.1:6379> INFO # Serverredis_version:5.0.8redis_git_sha1:00000000redis_git_dirty:0redis_build_id:fb7771d11d193afbredis_mode:standaloneos:Linux 3.10.0-327.el7.x86_64 x86_64...

2020-04-17 16:52:18 568

原创 Redis学习之事务(第三十四天)

Redis 事务一个事务从开始到执行会经历以下三个阶段:开始事务,命令入队,执行事务。Redis 事务命令:序号 命令及描述1 DISCARD取消事务,放弃执行事务块内的所有命令。2 EXEC执行所有事务块内的命令。3 MULTI标记一个事务块的开始。4 UNWATCH取消 WATCH 命令对所有 key 的监视。5 WATCH key [key ...]监视一个(或多个...

2020-04-17 10:51:50 127

原创 Docker学习之安装(第三十五天)

环境安装DockerToolbox在Win7上的安装和设置Docker在Windows上使用有两种方式:1.利用VirtualBox建立linux虚拟机,在linux虚拟机中安装docker服务端和客户端2.利用Windows的Hyper-v虚拟化技术,直接在Windows上安装docker服务端和客户端。WIndows7不支持Hyper-v,采用Docker Toolbox的方式使用Do...

2020-04-17 00:27:14 103

原创 Redis学习之发布订阅(第三十六天)

Redis 发布订阅Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。1.订阅者订阅,资源变更事件触发,发送者推送给订阅者(类似与广播或者组播)下图展示了消息通道 channel1 , 订阅的三个客户端 :当有新消息或者资源变更,通过 PUBLISH 命令发送给channel 时, 这个...

2020-04-16 16:41:21 127

原创 Redis学习之键(key)(第三十三天)

对于任何语言以及中间件,我们知道学习不能死记硬背,我们需要的知道思想,工具类的都是死的,我们甚至感觉不好用,可以自己造工具所以,关于Redis 的命令可以通过 ? COMMAND COUNT?的使用127.0.0.1:6379> ?redis-cli 5.0.8To get help about Redis commands type: "help @<group...

2020-04-16 16:05:47 176

原创 Redis学习之Redis 数据类型(第三十二天)

Redis 数据类型Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)zset(sorted set:有序集合)string最基本的类型,一个 key 对应一个 value。是二进制安全的。意思是 redis 的 string 可以包含任何数据。如jpg图片或者序列化的对象。string 类型的值最大能存储 512MB127.0....

2020-04-16 15:08:19 144

原创 Redis学习之redis.conf(第三十一天)

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf查看配置通过 CONFIG 命令查看或设置配置项vim redis.conf 查看配置 CONFIG GET * 1) "dbfilename" 2) "dump.rdb" 3) "requirepass" 4) "" 5) "masterauth" 6) "" 7) "clust...

2020-04-16 12:49:26 134

原创 Redis学习之环境搭建(第三十天)

简述Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。数据结构服务器,因为(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。特点Redis 与其他 key - value 缓存产品有以下三...

2020-04-16 11:16:17 138

原创 微服务之RPC通信(第二十七天)

RPC通信RPC,远程调用方式(Remote Procedure Call),RPC像调用本地方法一样调用别的机器上的方法,屏蔽了用户与服务器,服务器与服务器之间的通讯。客户端(Client),服务的调用方。服务端(Server),真正的服务提供者。客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。服务端存根,接收客户端发送过来的消息...

2020-04-14 20:43:29 565

原创 微服务(第二十六天)

微服务微服务(Micro services)是架构演变的产物,相对于单体架构,它用了抽象的思维,将一个系统抽象化,拆成几个小的独立的服务,再把独立的服务串起来微服务特性:每个微服务都运行在自己的空间里;一系列独立运行的微服务共同构建起了整个系统;每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如网络管理,用户管理等;微服务之间通过一些轻量级的通信机制进行通信,例如REST...

2020-04-12 22:27:04 154

原创 GO语言基础理论知识总结以及自评150题(第二十五天)

试题转自网上,答案解析是自己做的,如果有误差欢迎评论邮箱:[email protected]选择题【初级】下面属于关键字的是()A. funcB. defC. structD. class参考答案:AC,func 定义函数,struct 定义结构体【初级】定义一个包内全局字符串变量,下面语法正确的是()A. var str stringB. str := “”C. st...

2020-04-08 23:53:56 648

原创 GO与C\C++\python输入输出函数小结(二十四天)

C输入输出c语言的输入输出都是包含在头文件stdio.h中scanf() 与 printf()scanf() 函数用于从标准输入(键盘)读取并格式化printf() 函数发送格式化输出到标准输出(屏幕)#include <stdio.h>int main(){ int a = 0; char b = 'a'; char str[100] = {0}...

2020-04-06 19:11:33 375

原创 GO语言基础语法之并发 (第二十三天)

Go 并发Go 语言并发,通过 go 关键字来开启 goroutine ,goroutine 是轻量级线程,goroutine 的调度是由 Golang 运行时进行管理的。goroutine 语法格式:go 函数名( 参数列表 )例如:go fast(x, y, z) //开启一个新的 goroutine同一个程序中的所有 goroutine 共享同一个地址空间通道(channe...

2020-04-05 23:25:33 247

原创 GO语言基础语法之错误处理 (第二十二天)

Go 错误处理Go 语言通过内置的错误接口 errors.New(“日志描述”),import “errors”package mainimport ( "errors" "fmt")func Sqrt(f float64) (float64, error) { if f < 0 { return 0 ,errors.New("negative number")...

2020-04-02 16:09:15 190

原创 GO语言基础语法之接口 (第二十一天)

Go语言接口定义一个接口type 接口变量 interface {函数名称(形参列表)(返回值列表)函数名称(形参列表)(返回值列表)}注意点1.接口中只能有方法的声明, 不能有方法的实现2.接口中只能有方法的声明, 不能有变量的声明3.只有实现了接口中声明的所有方法, 才算实现了接口, 才能使用接口变量保存4.在实现接口的时候, 方法名称,形参列表,返回值列表必须一模一样5...

2020-04-01 21:27:03 163

原创 GO语言基础语法之递归函数 (第二十天)

Go 语言递归函数Go 语言递归与C语言基本一样。调用递归时,需要设置退出条件,否则递归将陷入无限循环中。语法格式如下:func recursion() {recursion() /* 函数调用自身 */}func main() {recursion()}...

2020-04-01 18:42:09 178

原创 GO语言基础语法之Map(第十九天)

Go 语言Map(集合)Map 是一种无序的键值对的集合。通过 key 来快速检索数据,key 类似于索引,指向数据的值。Map实现涉及两种数据结构,搜索树(红黑树)以及hash table,GO 是使用 hash 表来实现的。定义 Map/* 声明变量,默认 map 是 nil */var map_variable map[key_data_type]value_data_typ...

2020-04-01 00:57:09 234

原创 GO语言基础语法之Range(第十八天)

GO中的关键字Rangefor循环中迭代数组(array)、切片(slice)、链表(channel)、集合(map)的元素在数组和切片中它返回元素的索引值(index)在Map中返回 key-value 对的 key 值通道(channel)只返回通道内的值package mainimport "fmt"func main() { //这是我们使用range去求一个slice...

2020-03-31 22:01:58 410 1

原创 GO语言基础语法之切片(第十七天)

Go 语言切片(Slice),学习时候对比python 的切片Go 数组的长度固定,切片是内置类型,长度是不固定的,可以追加(append)元素,在追加后容量(cap)增大。定义切片声明未指定大小的数组来定义切片:var identifier []type //切片不需要说明长度区别于数组。使用make()函数来创建切片:var slice1 []type = make([]typ...

2020-03-31 21:28:30 468

原创 GO语言基础语法之结构体(第十六天)

Go 语言结构体与C语言类似,Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。定义和C有些许差异,c中涉及 typedef (自定义类型) struct,有类型名和标签名概念。GO语言中结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一...

2020-03-31 00:42:05 226

原创 GO语言基础语法之指针(第十五天)

指针与C语言类似,go也有指针,指针的引用,使用者就可以直接使用指针修改、获取内存中的内容Go 语言的取地址符是 &,与C语言类似。GO语言的指针声明:var varName * varTypeC语言指针声明:varType * varNameGo 空指针:当一个指针被定义后没有分配到任何变量时,它的值为 nil。nil 指针也称为空指针。C语言空指针:值为 NU...

2020-03-30 00:10:02 107

原创 GO语言基础语法之数组(第十四天)

数组:与C语言类似,数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二个索引为 1,以此类推,一维数组的定义方式:Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:var variable_name [SIZE] variable_type。例如var str [10] float64多维数组声明方式:var variable_n...

2020-03-29 23:18:47 431

原创 GO语言基础语法之函数方法(第十三天)

Go 语言中同时有函数和方法。方法就是包含了接受者的函数,方法是对象实例绑定的特殊函数。方法是特殊的函数,定义在某一特定的类型上,通过类型的实例来进行调用,这个实例被叫接收者(receiver)语法格式如下:func (variable_name variable_data_type) function_name() [return_type]{/* 函数体*/}注意:variabl...

2020-03-28 19:15:30 156

原创 GO语言基础语法之函数闭包(第十二天)

Go 语言支持匿名函数,可作为闭包。从匿名函数角度:优越性在于可以直接使用函数内的变量,不必申明动态创建的特性,该特性使得匿名函数不用通过参数传递的方式,就可以直接引用外部的变量。其实理解闭包的类似看成C++中的一个类,一个闭包函数调用就是实例化一个类。根据类的角度看出哪些是“全局变量”,哪些是“局部变量”函数返回结果分别实例化了“闭包类”,在这个“闭包类”中有个“闭包全局变量”。...

2020-03-28 12:33:29 160

原创 GO语言基础语法之函数调用以及回调(第十一天)

Go 语言函数函数是基本的代码块,执行一个任务,与C语言类似。Go 语言最少仅且有一个 main() 函数。函数声明告诉了编译器函数的名称,返回类型,和参数。Go 语言函数定义格式如下:func function_name( [parameter list] ) [return_types] {函数体}函数定义解析:func:函数由 func 声明function_name:函...

2020-03-27 20:56:54 342

原创 GO语言基础语法之控制语句(第十天)

go语言的if 、if else与C语言相似,除了不需要括号()Go 语言 switch 语句switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break。switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 c...

2020-03-26 22:05:02 146

原创 GO语言基础语法之常量(第九天)

Go 语言常量常量const是一个简单值的标识符,在程序运行时,不会被修改的量。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。常量的定义格式:const identifier [type] = value你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。显式类型定义: const b string = “abc”隐式类型定义: ...

2020-03-26 19:57:38 143

原创 GO语言基础语法之变量(第八天)

Go 语言数据类型1 布尔型布尔型的值只可以是常量 true 或者 false。列如:var b bool = true。2 数字类型整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,采用补码。3 字符串类型:字符串就是的字符序列。由单个字节连接起来的。使用 UTF-8 编码标识 Unicode 文本。4 派生类型:包括:(a)...

2020-03-26 13:57:47 115

原创 GO语言运行原理与其他语言对比(第四天)

GO语言特点Go 语言虽然是静态编译型语言,21世纪的C语言,比起解释语言性能更高。拥有脚本化的语法,有着perl、Python一样简洁的语法。支持多种函数式和面向对象。其原生支持并发编程,不使用三方库,优胜于C C++的Glibc。Go 语言对网络通信、并发和并行编程的支持度极高,从而可以更好地利用大量的分布式和多核的计算机,他是计算机多核后的产物,充分利用计算机多核。开发者可以通...

2020-03-17 00:31:02 466

原创 GO的基础语法之变量(第七天)

Go 语言的基础组成有以下几个部分:包声明引入包函数变量语句 & 表达式注释行分隔符在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。--------简洁性fmt.Println(“Hello, World!”)注释注释不会被编译,以 // 开头的单行注释。多行注释也叫块注...

2020-03-17 00:26:52 105

原创 GO语言之linux下环境搭建(第六天)

linux 下环境搭建相当简单方便,只要解压缩GO 的压缩包即可tar xvf go1.10.3.linux-amd64.tar.gzGOROOT就是go的安装路径,在~/.bash_profile或者/etc/profile中添加export GOROOT=/home/liusenlin/goexport PATH=$PATH:$GOROOT/bin之后执行source /etc...

2020-03-16 22:31:06 122

原创 GO代码如何建立基本工程目录(第五天)

Go语言开发环境要设置环境变量 GOPATH,构建一个项目,就需要将这个项目的目录添加到 GOPATH 中,多个项目之间可以使用;分隔目录结构一个Go语言项目的目录一般包含以下三个子目录:src 目录:放置项目和库的源文件;pkg 目录:放置编译后生成的包/库的归档文件;bin 目录:放置编译后生成的可执行文件src 目录用于以包(package)的形式组织并存放 Go 源文件,这...

2020-03-16 21:41:31 610

原创 GO语言环境搭建以及第一个程序(第三天)

环境搭建安装go语言开发包什么是go语言开发包?其实是对go语言的一种实现,包括相应版本的语法、编译、运行、垃圾回收等,里面包含着开发go所需的标准库、运行时以及其他的一些必要资源如何安装?(1)打开go开发包下载页:https://golang.org/dl/或者https://golang.google.cn/dl/如下,点击对应的安装环境,Linux win64都有。安装编...

2020-03-15 15:50:59 130

原创 GO语言学习规划(第二天)

前言: 最近学习GO语言,因为一直是LinuxC/C++开发,对C的语法熟悉,所以对于GO的语法还是有自信的,我是初识GO语言,所以就先了解哈大概。整体计划:1.买书,《Go语言高级编程》,《分布式对象存储–原理、架构、以及GO语言实现》。2.收集视频资料,买了一些培训班视频资料。3.坚持写博客,从基础开始,并且列下学习大纲。学习目标:专技术:GO原理,解决各种需求。懂框架:不同...

2020-03-14 23:22:23 247

空空如也

空空如也

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

TA关注的人

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