自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 问答 (1)
  • 收藏
  • 关注

原创 微服务读书笔记

一、 各种坑1)微服务拆分过细,too small;2)微服务基础设施不健全,无法自动化支撑;3)微服务并不轻量级,规模变大导致甚至比ESB还要复杂。二、 服务粒度1)已有团队规模拆分:根据两个披萨理论衍生出 -> 一个微服务三个人负责开发。2)3人小组优势:每个人全面理解整个系统的复杂度;3人可以形成稳定的人员备份;3人能够形成有效的讨论,类似单数选举机制,一定会达到半...

2019-03-16 13:57:41 205

原创 十分钟轻松学习系列: 2020-3-25_SHELL学习_各种刀乐$的用法

$在shell中为何非常重要,因为它是美元的标志,虽然现在疫情导致美帝快完犊子了通过$读取变量的值,具体原理如下图:变量开辟一块内存空间,就好比你住酒店,变量名相当于门牌号,变量值相当于你。shell脚本中不同$的用法$?:这个是在流程控制中最常用的,重中之重!解释说明:$?反映的是上一条命令或者一个流程中的返回值,如果为0,则上面的命令或者流程执行成功;如果非0,则上面的命令或者流...

2020-03-30 13:41:05 715

原创 十分钟轻松学习系列: 2020-3-25_SHELL学习_流程控制基础

所有编程语言离不开流程控制,没有流程控制还玩个毛~流程控制分为三种:顺序,选择,循环1) 顺序:这个没啥好说的吧,需求:如何完成煮泡面编程是抽象化人类行为的过程,把人类做的每一个事情0wwwwwwwwwwwwwwwwwwwwwwwwwwe8u85898ehudufjutrjwoiorqji...

2020-03-25 20:20:22 198

原创 十分钟轻松学习系列: 2020-3-20_SHELL学习_函数基础

出于对培训章节考虑,因为后续需要用函数完成各种demo,所以先粗略讲一下函数,以免在后续课程中,对函数不了解,不知道写法为何意1. 函数创建方法:#!/bin/bash #固定shebang写法IP=192.168.1.1 #定义变量: <name>=<value> 一般变量名都是大写,=左右无空格挨着写 Add() { ...

2020-03-20 15:36:23 210

原创 十分钟轻松学习系列: 2020-3-19_SHELL学习_变量进阶

本章是针对上一章关于变量应用的进阶用法变量防篡改 - readonly需求:老子认为自己是世界上最英俊的男子,不接受任何反驳,但是代码出现问题如下:#!/bin/bashTHEMOSTHANDSOMEMAN="璐璐桑"THEMOSTHANDSOMEMAN="庞统"echo "墨镜墨镜请告诉我谁是这个世界上最帅的人:$THEMOSTHANDSOMEMAN"结果翻车了。。。...

2020-03-19 10:24:51 161 1

原创 十分钟轻松学习系列: 2020-3-18_SHELL学习_变量

1. 什么是变量?1)小时候一个家属院的亲邻,知道你是老谁家的小谁,举例: 你是老王家的小张,你本身叫李雷,但是大家知道你是老王家的小张,不知道你名字不要紧,所以映射关系如下: <老王家的小张>=李雷, 这个 <老王家的小张> 就是变量,变量值是李雷,找到了<老王家的小张>,自然就映射到李雷。2. 规范:a)一般情况变量名应该全部大写,而且应该定义在脚本...

2020-03-18 14:26:13 182

原创 Docker网络相关知识

Docker四种通信模式:封闭式容器:只存在Lo,无任何网络设备,Closed container,孤岛模式。[root@ci_jenkins ~]# docker run -it --network none --rm busybox# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000...

2019-06-04 23:03:20 172

原创 Go核心开发学习笔记(三十一) —— Golang操作Redis

Redis安装和基本原理请查阅相关资料学习。Redis基础知识和开发使用:1. 0 - 15 共计16个库。2. 典型的KV存储方式。3. 常用操作命令:(1) 添加kv: set (2) 查找所有key: keys <pattern正则>(3) 查找key对应的value: get (4) 切换数据库: select <num 0-15>(5) 查看k...

2019-05-30 17:16:03 1035

原创 Go核心开发学习笔记(三十) —— TCP/IP,网络编程

TCP/IP知识略过,大致总结一下几点理解OSI七层模型理论,理解TCP/IP模型的四层结构:应用层,传输层,网络层,网络接口层。TCP/IP协议包含非常多的协议,TCP和IP只不过是其中最有代表性的两种。C/S结构:代表IM,属于TCP SOCKET编程; B/S结构:代表JD商城,属于HTTP编程,HTTP也是TCP/IP协议的一部分。关于网络部分,必须深刻理解TCP/IP,才能做好...

2019-05-29 20:29:23 338

原创 Go核心开发学习笔记(廿九) —— 反射

反射使用的地方序列化和反序列化时,如果希望序列时将结构体字段名称大写转换成小写,json:"xxx" 这里就用到了反射。两个匿名函数变量,定义一个适配器函数用作统一处理接口:适配器函数:假设匿名函数名字为<匿名函数名称>,匿名函数中参数为a,b… 则适配器函数为 func(<匿名函数名称>,a,b…)就是说建立一个模板,匿名函数函数名称和匿名函数中的参数都作为适配...

2019-05-26 20:02:28 209

原创 Go核心开发学习笔记(廿八) —— 协程goroutine & 管道Channel

问题:求1-20000之间所有的素数传统方法: 每个数都需要做 2 <= i <= n - 1 次取模循环,如果是20亿,计算机该哭了。Golang方法:事情肯定过程还是这个过程,如果使用并发加并行的方式,而不是传统循环,这样效率就会高很多,同时也符合分布式需求。解决方案使用并发或者并行的方式,让统计素数的任务分配给多个goroutine去完成,这时候就引入了协程gorouti...

2019-05-25 16:32:05 336

原创 Go核心开发学习笔记(廿七) —— 单元测试

单元测试作用:确认一个函数或者一个package引入后的结果是否正确。传统方法:测试输出的结果是否和预期结果一致,有些东西要放在生产环境做,才能有效,测试环境下没有这种环境;不利于管理,所以需要测试框架来解决上述问题。Golang中带有一个轻量级的测试框架testing , go test测试命令来实现单元测试和性能测试(执行代码花费时间)。通过单元测试解决下面问题:确保每个函数是可...

2019-05-23 11:29:43 254

原创 Nginx基础架构和配置

特性模块化设计,较好的扩展性,动态加载。高可用性支持热部署,不停机更新配置文件,升级版本,更换日志文件。低内存消耗,10k keep-alive连接在非活动模式下大概2.5M。事件驱动模型,Aio,mmap,sendfile。传统网络传输过程硬盘 >> kernel buffer >> user buffer>> kernel socket b...

2019-05-18 22:47:46 21868

原创 Go核心开发学习笔记(廿六) —— 文件处理二:命令行处理参数,JSON

关于命令行处理的学习引入:假设命令行连接mysql数据库,如何实现下方mysql -uroot -p'123456' -h 192.168.240.23 -port 3306 如果使用os.Args只能按照命令参数输入的顺序来定义序列,不可变。引入package flag,实现了命令行参数的解析。示例1:使用os.Args统计一个命令包含多少个参数,这样参数传递必须按顺序,无法类似...

2019-05-18 22:10:10 217

原创 Go核心开发学习笔记(廿五) —— 文件处理一:文件CRUD和复制统计

文件基本概念文件是数据源的一种,主要作用就是保存数据。文件是以流的形式来操作的:(1) 流:数据在数据源(文件)和程序(内存)之间经历的路径;(2) 输入流: 数据从数据源到程序的路径,也就是读文件;(2) 输出流: 数据从程序到数据源的路径,也就是写文件。文件处理就是主要依赖 os.File结构体。File代表一个打开的文件句柄,是一个指针。文件打开处理完毕后...

2019-05-18 17:53:31 141

原创 Nginx IO模型相关理论

花了一元钱买了某机构关于Nginx的视频,发现理论讲的不错,受益匪浅,接下来打算花几天学习,顺便做学习笔记Httpd MPMprefork:进程模型,两级结构,主进程master负责生成子进程,每个子进程负责相应一个请求。worker: 线程模型,三级结构,主进程master负责生成子进程,每个子进程负责生成多个线程,每个线程响应一个请求。event: 线程模型,三级结构,主进程mas...

2019-05-15 23:59:34 125

原创 Go核心开发学习笔记(廿四) —— 接口,多态,断言

接口 Interface概述在Golang中大量存在,面向对象的核心与灵魂一定是接口编程,且相对于其他OOP语言也是极具特色。手机,相机连接计算机USB接口,都是统一制式,不用担心到底什么设备连接计算机,插上什么就是什么,从而引出多态概念。多态主要是依赖接口实现的,低耦合高内聚。接口定义了几个未实现的方法,创建其他结构体,补全各自方法,从而实现不同结构体调用类似"集线器"完成接口所有方法...

2019-05-15 14:45:45 136

原创 Go核心开发学习笔记(廿三) —— 面向对象编程,工厂模式

面向对象编程基本步骤对比python声明结构体,确定结构体名称 //确认一个类名称: Class xxx():确定结构体的字段 //确认类的属性: def init编写结构体方法 //确认类的方法: def xx():最简单示例:写一个球员结构体,包含name string,gender string,age in...

2019-05-13 11:26:05 158

原创 Go核心开发学习笔记(廿二) —— 函数和方法区别

函数和方法的区别函数出传参,值类型就是值类型,引用类型就是引用类型,不可混用,不能把值类型数据传入指针参数中。方法的传参,值类型和引用类型取决于 func ( x x_type ) () {…} —> x_type或者*x_type传入x参数无论是值类型还是指针类型在编译器这儿都能通过并且按照同等方式处理,即 x == &x,举例说明也就是<结构体变量>....

2019-05-12 17:21:07 78

原创 Go核心开发学习笔记(廿一) —— 结构体sturct,方法

面向对象编程(OOP):具体概念不讲了,学过java,py都知道,golang中没有类的概念,可以用结构体来模拟替代类。Golang支持面向对象编程的特性,去掉了传统OOP语言的集成,方法重载,构造函数和析构函数,隐藏的this指针等。结构体:抽取事物相同特征和行为形成新的数据类型,就是一个结构体,通过结构体可以创建很多实例(类似py就是类创建多个实例);上述是为了解决描述一个事物拥有的不...

2019-05-08 20:44:01 225

原创 Go核心开发学习笔记(廿) —— 二维数组,map(映射)

二维数组概念:一维数组中的元素又是一个一维数组。var arr [4][6]int // [ [0 0 0 0 0 0] [0 0 0 0 0 0] [0 0 0 0 0 0] [0 0 0 0 0 0] ]arr [1][2] = 1arr [2][3] = 2arr [3][4] = 3fmt.Println(arr) // [[0 0 0 0 0 0] [0 0 1...

2019-05-07 23:10:20 2444

原创 Golang面试综合考题——一个程序涵盖随机数,冒泡排序,二分查找 三个知识点

1~100之间随机生成n个整数,使用冒泡由小到大排序,使用二分查找是否存在90并显示下标,如果没有提示找不到。package mainimport ( "fmt" "math/rand" "time")func arrayCreate(n int) []int { var arr = make([]int,n) rand.Seed(time.Now().UnixNano())...

2019-05-06 21:21:58 199

原创 Go核心开发学习笔记(十九) —— 冒泡排序,顺序查找,二分查找

冒泡排序重点,众多面试都考察冒泡排序冒泡排序的基本思想:通过对 待排序序列从后向前(从下标大的元素开始),一次比较相邻的元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向。因为排序过程中,各元素不断接近自己位置,如果一趟下来没有进行交换,说明序列有序,因此优化时 要在排序过程中设置一个标志flag判断元素是否进行交换,从而减少不必要的比较。冒泡排序详细分解剖析首先要...

2019-05-06 00:12:23 136

原创 Go核心开发学习笔记(十八) —— 切片Slice

思路引入:NBA每个球队的球员需要用一个数组保存,但是每个队由于交易问题,球员个数不确定,应该如何解决 —— 使用切片。切片可以理解为动态数组,类似python列表中的.append(),切片长度可以变化的,数组长度是不可以变化的。切片是数组的引用类型,在进行传递时遵守引用传递的机制。遍历,访问,len(slice) 与数组都一样。动态变化,随着元素增加动态增加。基本语法: 与数组[n...

2019-05-05 15:26:22 176

原创 Go核心开发学习笔记(十七) —— 数组

数组与C差不多 array,切片是独有 slice数组数组在Golang中为值类型,定义方法如下:var intArray [3]int //定义一个整型数组,包含三个元素,其中下标为0,1,2var flArray [3]float64 //定义一个float64型数组,包含...

2019-05-04 23:48:19 800

原创 Go核心开发学习笔记(十六) —— 时间日期函数,内置函数,异常处理

作用:统计某段代码的执行时间,花费时间等,需要导入time包以下用一个函数包含所有使用方法package mainimport ( "fmt" "time")func main() { /* 1. 获取当前时间。 */ fmt.Println(time.Now()) // 2019-05-03 22:43:03.9052219 +0800 CST m=+0.005996...

2019-05-04 11:53:50 107

原创 Go核心开发学习笔记(十五) —— 开发常用字符串处理函数

常用函数汇总1. 字符串长度统计函数:len(str)package mainimport "fmt"func main() { // 统计字符串长度 len(str) hello啊 一共占8字节,汉字统一UTF-8占三字符 str := "hello" fmt.Println(len(str1)) //5, str1 := "hello啊" fmt.Printl...

2019-05-03 22:39:44 121

原创 Go核心开发学习笔记(十四) —— init函数,匿名函数,闭包,defer

init函数每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用。一般用来做main函数运行前的初始化工作。一个文件同时包含全局变量定义,init(),main(),那么执行顺序为: 全局变量定义->init()->main()。第3条加强版,在src非main文件夹中,写一个函数,引入两个变量,并且写入init()函数,所以...

2019-04-30 18:49:34 216

原创 Go核心开发学习笔记(十三) !—— 函数调用机制,递归

方法: 完成一个功能的代码或集合。大致过程:给方法必要的输入,方法返回结果。函数调用机制的底层分析:栈区:基本数据类型一般分配到栈区,编译器存在一个逃逸分析。堆区:引用数据类型一般分配到堆区,编译器存在一个逃逸分析。代码区:存放代码的内存区域通过一个调用过程,深刻理解函数调用都做了什么:package mainimport "fmt"func calcu (a float64,...

2019-04-29 22:25:57 123

原创 Go核心开发学习笔记(十二) —— 函数基本概念和包的概念、工程目录

函数为完成某一功能的程序指令的集合,称为函数。解决问题:代码冗余;不利于代码维护。可以使main()代码段结构简洁明了。函数分为自定义函数和系统函数。基本语法func <函数名> (<形参列表>) (返回值列表) {<执行语句>return 返回值列表 //return两个功能,终止函数和返回...

2019-04-29 11:11:27 123

原创 Go核心开发学习笔记(十一) —— 金字塔,菱形,水仙花数,三个数排大小

由于金字塔类型问题很经典,单独开了一章处理正三角倒三角菱形等案例:打印各种类型金字塔package mainimport "fmt"func main() { /* 需求:打印各种金字塔 * * * * * * * * * * * * 或者 * *** ***** ******* ********* 或者...

2019-04-28 15:12:39 253

原创 Go核心开发学习笔记(十) —— 循环控制

循环控制Golang语言中不存在while和do…while,只存在for,for完全可以替代while的循环格式,通过加入break或者continue跳出循环。for基本格式:for \<循环变量初始化>;<循环条件>;<循环变量迭代> { \<循环体> }示例1:for i := 1 ; i < = 10...

2019-04-28 15:07:24 87

原创 Go核心开发学习笔记(九)—— 顺序控制,分支控制

程序流程控制决定程序如何执行,常用三大流程控制语句顺序控制分支控制:if-else循环控制:for,while,符合条件前循环控制,符合条件后循环控制(笔记十去记录)顺序控制从上到下依次执行,每个程序都遵循这个原则,按照行一条条执行,没有判断,直到程序执行完毕或者中途报错。关于变量使用,必须遵循{合法的向前引用原则}, 即先声明再使用,不可以先使用,再声明 packag...

2019-04-27 22:41:25 132

原创 Go核心开发学习笔记(八) —— Scanf用户交互输入

键盘输入语句 InputDemo.go类似PY中的input()导入fmt包调用fmt包中的 fmt.Scanf() 或者 fmt.Scanln() 两个函数都可以完成输入fmt.Scanf() 和 fmt.Scanln()的区别:对比C语言可以知道,传入值行为与C语言中scanf无异,而package main,import “fmt” 则是类似 #include<stdi...

2019-04-27 18:45:55 457

原创 Go核心开发学习笔记(七) —— 运算符

运算符: 用以表示数据运算,赋值,比较等算术运算符: + - * / % ++ – 正负等赋值运算符 = += -= *= /= %=比较(关系)运算符 >= <= < > == !=逻辑运算符 && || !位运算符其他运算符 &取址 *取值表达式概念: 任何有值的都可以看做表达式运算符优先级:运算符有不同的优先级,也就是运...

2019-04-27 18:38:52 115

原创 Go核心开发学习笔记(六) —— 标识符

标识符Go语言对各种变量,方法,函数等命名使用的字符序列成为标识符。凡事可以起名字的地方都是标识符。规则26字母大小写,数字,下划线_数字不能开头严格区分大小写,Num和nUm不是一个变量。标识符不能包含非法字符不要使用关键字,也就是被保留的标识符,break,if之类的,也不推荐非关键字可是是int,float字眼的。标识符命名规范:包名:保持package的名字和...

2019-04-27 12:47:13 72

原创 Go核心开发学习笔记(五) ——指针

复杂数据类型:指针pointer数组array结构体struct,替代class管道channel函数(也是一种函数类型)切片slice接口interfacemap(类似hashmap,set),比较简单不复杂,相当于别的语言中的map,仅有此。指针:凡是涉及引用都涉及指针;基本数据类型,变量存的就是值,也叫做值类型;分析基本类型数据在内存中布局。什么是指针变量:...

2019-04-26 23:18:58 98

原创 Go核心开发学习笔记(四) —— 基本数据类型与String互相转换

基本数据类型的转换:Golang不同类型变量之间赋值时需要显式转换(强制转换),Goalng数据类型不能自动转换!转换方法:类似python,沟通过T(v)函数方式来转换。示例如下 package main import "fmt" func main() { //尝试使用 i = float32(i)不可行,必须要重新定义变量 var i int = 100 var i1 ...

2019-04-26 18:40:30 148

原创 Go核心开发学习笔记(三) —— 基本数据类型

变量的数据类型:基本数据类型:整数型 {int: 整形,32位操作系统占4字节,64位操作系统占8字节,byte: 等于无符号的int8,int8,int16,int32,int64: 8bit整型,16bit整型…(第一位01表示正负,所以int8只有7位表数值,所以数值范围-27...

2019-04-26 16:27:36 100

原创 Go核心开发学习笔记(二) —— 常量与变量

变量:程序的基本组成单位。变量相当于内存中的一个数据存储空间,通过变量名可以访问到变量值。变量使用:声明&赋值,使用 ----> var <var_name> <var_type> [= xxx],例如: var num int = 200 或 var num int ; num = 200 上述两个是一回事儿。变量使用注意事项(重要)...

2019-04-26 11:53:20 224

空空如也

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

TA关注的人

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