04 2020 档案

摘要:queue 队列,先进先出 1、构造函数 queue<T> q; queue<T> q1(q); 2、大小 size() empty() 3、插入弹出 push(); pop(); 4、查找 front() back() 阅读全文
posted @ 2020-04-26 23:04 醉深梦始 阅读(95) 评论(0) 推荐(0)
摘要:stack 先进后出 1、Stack构造函数 stack<T> s; stack<T> s1(s); 2、stack大小 size() empty 3、插入删除 push() pop() 4、查找 top();//返回栈顶的值,不删除 阅读全文
posted @ 2020-04-26 22:51 醉深梦始 阅读(140) 评论(0) 推荐(0)
摘要:1、deque构造函数 deque<T> d;//默认构造函数 deque(begin, end);//构造函数将begin、end之间的元素拷贝到本身 deque(n,T e);//将n个元素e拷贝给自身 deque(const deque<T> &d);//拷贝构造函数 2、deque赋值 as 阅读全文
posted @ 2020-04-26 22:25 醉深梦始 阅读(169) 评论(0) 推荐(0)
摘要:1、vector 构造函数 vector<T> v; v(v1.begin(),v1.end()) v(n,T e)//构造函数将n个e拷贝给本身 v(v2)//拷贝构造函数 //还可以拷贝数组 int arr[] = {2,3,4,1,9}; v(arr , sizeof(arr) / sizeo 阅读全文
posted @ 2020-04-26 16:50 醉深梦始 阅读(166) 评论(0) 推荐(0)
摘要:string 容器 1、string的特性 char *是一个指针,string是一个类 string 封装了char *,管理这个字符串。 string 封装了很多使用的成员方法:查找find,拷贝copy,删除delete,替换replace,插入insert。 string可以和char *互 阅读全文
posted @ 2020-04-26 15:04 醉深梦始 阅读(230) 评论(0) 推荐(0)
摘要:docker容器数据卷 1、是什么? Docker理念: 将运用于运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对于数据的要求希望 持久化的 容器直线希望有可能共享数据 docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容 阅读全文
posted @ 2020-04-21 22:42 醉深梦始 阅读(141) 评论(0) 推荐(0)
摘要:docker镜像 1、是什么? 镜像是一种轻量级、可独立执行的软件包,用来打包软件环境和基于运行环境软件的开发,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。 UnionFS(联合文件系统):Union文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修 阅读全文
posted @ 2020-04-21 21:42 醉深梦始 阅读(167) 评论(0) 推荐(0)
摘要:1、更换镜像:可以使用阿里云或者腾讯云提供的镜像服务。 docker 帮助命令: docker version:查看版本 docker info:docker 的详细信息 docker help:帮助命令提示信息 docker镜像命令: docker images:查看当前docker已经可使用的镜 阅读全文
posted @ 2020-04-21 20:02 醉深梦始 阅读(137) 评论(0) 推荐(0)
摘要:用户操作: 1)连接mysql:mysql -h主机地址 -u用户名 -p密码 2)修改密码:mysqladmin -u用户名 -p旧密码 password 新密码 3)添加用户:insert into mysql.user(user,password) values('username','pas 阅读全文
posted @ 2020-04-15 23:34 醉深梦始 阅读(188) 评论(0) 推荐(0)
摘要:1、事务的基本要素(ACID) 1)原子性(Atomicity):事务开始后的所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务过程中出错,会回滚到事务开始的状态,所有操作就像没有发生过一样。也就是说事务是一个不可分割的整体,就像化学中的原子,是物质构成的基本单位。 2)一致性(Con 阅读全文
posted @ 2020-04-14 23:21 醉深梦始 阅读(126) 评论(0) 推荐(0)
摘要:mysql 索引 索引是帮助Mysql高效获取数据的而且已经是排好序的数据结构 索引数据结构一般有以下几种: 二叉树 红黑树 hash表 B(+)Tree 推荐一个外国的网站学习数据结构: https://www.cs.usfca.edu/~galles/visualization/Algorith 阅读全文
posted @ 2020-04-14 08:31 醉深梦始 阅读(153) 评论(0) 推荐(0)
摘要:redisgo可以使用连接池: pool = &redis.Pool{ Dial: func() (conn redis.Conn, e error) { return redis.Dial("tcp","192.168.50.131:6379") }, MaxIdle:3, MaxActive:5 阅读全文
posted @ 2020-04-11 23:32 醉深梦始 阅读(1710) 评论(0) 推荐(0)
摘要:redis分布式锁:可以使用setnx+expire+pipeline: //方法一:setnx+expire+pipeline func DoSetWithPipe(conn redis.Conn){ lock.Lock() defer lock.Unlock() conn.Send("setnx 阅读全文
posted @ 2020-04-11 10:48 醉深梦始 阅读(2004) 评论(1) 推荐(0)
摘要:这里我采用了比较常用的redisgo作为go redis的学习 安装redisgo:go get -u github.com/garyburd/redigo/redis 普通连接: //创建一个连接 conn, err := redis.Dial("tcp", "192.168.1.101:6379 阅读全文
posted @ 2020-04-10 23:06 醉深梦始 阅读(605) 评论(0) 推荐(0)
摘要:1、为什么要持久化? 因为redis是内存数据库,它将自己的数据存储到内存中,一旦redis服务器退出运行,服务器中的数据就会消失。 为了避免数据丢失,redis提供了持久化机制,将存储在内存中的数据保存到磁盘中,用于在redis服务器退出或者宕机时,快速恢复之前redis存储在内存中的数据。 re 阅读全文
posted @ 2020-04-10 21:58 醉深梦始 阅读(160) 评论(0) 推荐(0)
摘要:1、redis有哪些数据结构? 答:字符串string、字典hash、列表list、集合set、有序集合scored set;加上pub/sub吧 2、如果有大量的key需要设置同一时间过期,一般需要注意什么? 答:如果大量的key过期时间过于集中,到过期的那个时间点,redis可能会出现短暂的卡顿 阅读全文
posted @ 2020-04-10 17:07 醉深梦始 阅读(177) 评论(0) 推荐(0)
摘要:常用命令: WATCH key [key ...] //监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。 UNWATCH //取消 WATCH 命令对所有 key 的监视。如果在执行 WATCH 命令之后, EXEC 命令或 DISCARD 阅读全文
posted @ 2020-04-10 13:48 醉深梦始 阅读(110) 评论(0) 推荐(0)
摘要:常用命令: publish channel message //将信息发送到指定的频道 SUBSCRIBE channel [channel ...] //订阅给定的一个或多个频道的信息。 psubscribe pattern [pattern ...] //订阅一个或多个符合给定模式的频道。 un 阅读全文
posted @ 2020-04-10 13:29 醉深梦始 阅读(116) 评论(0) 推荐(0)
摘要:常用命令: zadd key score member [[score member] ...] //将一个或者多个member元素的score值加入的有序集set中 zrem key member [member ...] //删除有序集set中的一个或者多个成员 zcard key //返回有序 阅读全文
posted @ 2020-04-10 13:08 醉深梦始 阅读(264) 评论(0) 推荐(0)
摘要:set集合 常用命令: SADD key member [member ...] //往集合中存入数据,若元素存在,则忽略数据;若key不存在,则新建 SREM key member [member ...] //删除集合中的元素 SMEMBERS key //获取集合中的所有元素 SCARD ke 阅读全文
posted @ 2020-04-10 00:20 醉深梦始 阅读(147) 评论(0) 推荐(0)
摘要:list常用命令: LPUSH key value [value ...] //将一个或者多个值value插入到key列表头(最左端) RPUSH key value [value ...] //将一个或者多个value值插入到key列表尾(最右端) LPOP key //移除并返回key列表的头部 阅读全文
posted @ 2020-04-09 23:58 醉深梦始 阅读(135) 评论(0) 推荐(0)
摘要:Hash Hash的常用操作: HSET key filed value //存储一个hash表的key值 HSETNX key filed value //存储一个不存在的hash表的key的值,注意:是key或者filed不存在时返回成功 HMSET key filed value [filed 阅读全文
posted @ 2020-04-09 23:36 醉深梦始 阅读(194) 评论(0) 推荐(0)
摘要:String(字符串) redis命令用法: SET key value //存入字符串键值对 MSET key value [key2 value2 ...] //批量存入字符串键值对 SETNX key value //存入一个不存在的键值对 GET key //获取一个字符串键值 MGET k 阅读全文
posted @ 2020-04-09 22:49 醉深梦始 阅读(157) 评论(0) 推荐(0)
摘要:Redis是现在最受欢迎的Nosql数据库之一,Redis是使用C语言编写的开源的、包含多种数据结构、支持网络、基于内存、可选持久性的键值对的数据库,其具备如下特征: 基于内存运行,性能高效 支持分布式,理论上可无限扩展 key-value存储系统 开源、使用C语言编写、支持网络、可基于内存亦可持久 阅读全文
posted @ 2020-04-09 22:01 醉深梦始 阅读(278) 评论(0) 推荐(0)
摘要:模板与渲染 在一些前后端不分离的Web架构中,我们通常需要在后端将一些数据渲染到HTML文档中,从而实现动态的网页(网页的布局和样式大致一样,但展示的内容并不一样)效果。 Go语言内置了文本模板引擎text/template和用于HTML文档的html/template。它们的作用机制可以简单归纳如 阅读全文
posted @ 2020-04-09 17:33 醉深梦始 阅读(529) 评论(0) 推荐(0)
摘要:总所周知,http是无状态协议,即http的每次请求都是独立的,它不会受之前的请求影响,在这种情况下,对于服务器而言每次请求都全新的,所以服务器处理之前请求参数的数据都不会保留,会话中产生的数据又是我们需要保存的,也就是说要“保持状态”。因此Cookie就是在这样一个场景下诞生。 http中的coo 阅读全文
posted @ 2020-04-09 17:17 醉深梦始 阅读(1998) 评论(0) 推荐(0)
摘要:使用闭包实现选项模式: package main import "fmt" //先定义一个结构体 type Stu struct { Name string Age int Addr string } var ( //设置Stu属性的默认值 DefaultStu = &Stu{ Name: "som 阅读全文
posted @ 2020-04-09 16:47 醉深梦始 阅读(215) 评论(0) 推荐(0)
摘要:go 可以用几行代码就可以实现一个http的简单服务 http.HandleFunc("/",Do) http.HandleFunc("/index",index) http.ListenAndServe(":9999",nil) http.HandleFunc 注册路由,默认使用了DefaultS 阅读全文
posted @ 2020-04-09 14:09 醉深梦始 阅读(171) 评论(0) 推荐(0)
摘要:go mutex是互斥锁,只有Lock和Unlock两个方法。而且lock和unlock之间的代码都只能由一个 Go 协程执行,于是就可以避免竞态条件。 package main import ( "fmt" "sync" ) var wg = sync.WaitGroup{} var sum in 阅读全文
posted @ 2020-04-08 17:50 醉深梦始 阅读(1193) 评论(0) 推荐(1)
摘要:协程上下文控制 主要函数: Background()和TODO() Go内置两个函数:Background()和TODO(),这两个函数分别返回一个实现了Context接口的background和todo。我们代码中最开始都是以这两个内置的上下文对象作为最顶层的partent context,衍生出 阅读全文
posted @ 2020-04-08 17:29 醉深梦始 阅读(254) 评论(0) 推荐(0)
摘要:WaitGroup用于等待一组线程的结束。父线程调用Add 方法来设定应等待的线程数量。每个被等待的线程在结束时应调用Done方法。 同时,主线程里可以调用wait方法阻塞至所有线程结束。 主要函数: func (wg *WaitGroup) Add(delta int):等待协程的数量。 func 阅读全文
posted @ 2020-04-08 13:20 醉深梦始 阅读(580) 评论(0) 推荐(0)
摘要:Channel是一个数据结构--队列 数据是先进先出 channel是线程安全的,多线程访问时不需要枷锁 channel是有类型的,声明时需要绑定数据类型 var chan int//双向管道 var chan<- int //只写管道 var <-chan int//只读管道 //上诉管道中的数据 阅读全文
posted @ 2020-04-05 17:23 醉深梦始 阅读(351) 评论(0) 推荐(0)
摘要:Go 协程,可以理解成轻量级的协程 Go主线程,一个主线程可以起多个协程 Go协程的特点: 有独立的栈空间 共享程序堆空间 调度由用户控制 package main import( "fmt" "time" ) func SayHello(){ for i:=0;i< 5;i++{ fmt.Prin 阅读全文
posted @ 2020-04-05 16:51 醉深梦始 阅读(197) 评论(0) 推荐(0)
摘要:Json 是一中轻量级的数据交换格式,易与人阅读和编写。 Json易于解析和生成,有效的提升网络传输效率,通常网络在传输时会先将数据(结构体、map等)序列化成json字符串,到接收方得到json字符串时,在反序列化成对应的数据类型。 go提供了json的序列反序列化的接口 package main 阅读全文
posted @ 2020-04-05 15:53 醉深梦始 阅读(959) 评论(0) 推荐(0)
摘要:interface接口可以定义一组方法,但是不需要实现。interface 不能包含任何变量,可以看成是一组方法的封装。这些方法的实现是在具体的自定义类型中。 接口本身不能创建实例,但是可以指向一个实现了该接口的自定义类型的实例。 接口如果想要指向某个实例,这个实例的类型必须实现了该接口包含的所有方 阅读全文
posted @ 2020-04-05 15:30 醉深梦始 阅读(171) 评论(0) 推荐(0)
摘要:装饰模式使用对象组合的方式动态改变或增加对象行为。 Go语言借助于匿名组合和非入侵式接口可以很方便实现装饰模式。 使用匿名组合,在装饰器中不必显式定义转调原对象方法。 package decorator import ( _ "fmt" ) type BaseCal interface{ Cal() 阅读全文
posted @ 2020-04-04 15:45 醉深梦始 阅读(275) 评论(0) 推荐(0)
摘要:桥接模式分离抽象部分和实现部分。使得两部分独立扩展。 桥接模式类似于策略模式,区别在于策略模式封装一系列算法使得算法可以互相替换。 策略模式使抽象部分和实现部分分离,可以独立变化。 package bridge import( "fmt" ) type Road interface{ //选择路线 阅读全文
posted @ 2020-04-04 14:37 醉深梦始 阅读(407) 评论(0) 推荐(0)
摘要:适配器:就是一个类的实例通过适配器功能可以实现一个它没有的功能 package adapt import( "fmt" ) type ChargeHeadB struct{//B的充电头 } func (this *ChargeHeadB)ChargeB(){ fmt.Println("Head B 阅读全文
posted @ 2020-04-03 21:34 醉深梦始 阅读(536) 评论(0) 推荐(0)
摘要:造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同, 阅读全文
posted @ 2020-04-03 19:10 醉深梦始 阅读(660) 评论(0) 推荐(0)
摘要:Go单例模式 package main import( "fmt" "sync" "time" ) type Singleton struct {} var singleton *Singleton //只会创建一次 var once sync.Once func GetInstance() *Si 阅读全文
posted @ 2020-04-03 18:10 醉深梦始 阅读(192) 评论(0) 推荐(0)
摘要:抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。 实现举例: package absfactory import( "fmt" ) //手机制作接口 type Se 阅读全文
posted @ 2020-04-03 17:03 醉深梦始 阅读(613) 评论(0) 推荐(0)
摘要:基于简单的工厂模式进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成。不同的子工厂负责创建不同的产品(实例) package factory import( "fmt" ) //玩具工厂 type ToyFactory interface{ C 阅读全文
posted @ 2020-04-03 15:25 醉深梦始 阅读(1703) 评论(0) 推荐(0)
摘要:简单的工厂模式,又称为静态工厂方法,它属于类创建型模式。在简单工厂模式中,可以根据参数创建不同的实例。简单工厂模式专门定义一个类来创建其他类的实例。 在以下情况下可以使用简单工厂模式: 工厂类负责创建的对象比较少:由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。 客户端只知道传入工厂类的参 阅读全文
posted @ 2020-04-03 14:10 醉深梦始 阅读(420) 评论(0) 推荐(0)
摘要:在结构体中,除了定义一些类的属性之外,还可以定义封装一些方法,来描述类的一些行为 如下在Person中实现了一个获取姓名的方法: type Person struct{ Name string Age int Addr string Hobby []string } func (this *Pers 阅读全文
posted @ 2020-04-02 22:38 醉深梦始 阅读(210) 评论(0) 推荐(0)
摘要:Go 支持创建解构题 例如描述一个小猫 type cat struct{//小猫结构体 name string //姓名 age int //年龄 color string //颜色 } Go面向对象编程说明: 1.Go支持面向对象编程,但是和传统的面向对象编程是有区别的,并不是纯粹的面向对象语言, 阅读全文
posted @ 2020-04-02 22:15 醉深梦始 阅读(323) 评论(0) 推荐(0)
摘要:map是key-val数据结构 var map 变量名 map[keytype]valtype 其中key可以是很多种类型,例如bool、数字、string、channel、指针、接口、结构体、数组等等,但是切片、map、func不可以,因为这些不能用来查找 value 通常为数字、string、m 阅读全文
posted @ 2020-04-02 18:31 醉深梦始 阅读(203) 评论(0) 推荐(0)
摘要:1.函数的defer 作用:在函数中,程序员经常要创建资源(比如:数据库连接,文件句柄,锁等),为了在函数执行完成之后及时释放资源,go提供了defer机制,可以在函数执行完成后return前执行 //来一个defer中的经典面试题,求打印顺序 package main import ( "fmt" 阅读全文
posted @ 2020-04-02 18:11 醉深梦始 阅读(145) 评论(0) 推荐(0)
摘要:go的每一个文件都是属于一个包的,也就是说go是以包的形式来管理文件和目录结构的 包的作用: 区分相同名字的函数、变量和标识符 当程序文件很多时,可以很好的管理项目 控制函数变量等的访问范围,即作用域 函数说明: func 函数名(参数列表)(返回值类型列表){ 语句。。。 return 返回值列表 阅读全文
posted @ 2020-04-02 17:43 醉深梦始 阅读(263) 评论(0) 推荐(0)
摘要:从C转golang,golang中的包算是一个特色 首先函数的定义: 包的引出: 我们之前用练习的main.go 中package main,就形成了一个包 实际工作中我们会用到很多包,可以用import引入,例如“fmt”、“net”。。 当然我们也可以定义自己的包:例如在utils中定义了一个u 阅读全文
posted @ 2020-04-02 16:53 醉深梦始 阅读(289) 评论(0) 推荐(0)
摘要:代码流程控制,比如c/c++中的for while if switch语句,golang中也有类似的语句 主要控制代码的走向 在golang中也有类似语句: //if 语句 var ok bool = false if !ok { //if后直接写判断条件,不用加() fmt.Println("sa 阅读全文
posted @ 2020-04-02 16:22 醉深梦始 阅读(182) 评论(0) 推荐(0)
摘要:切片和数组类似,都可以存储一组数据,但是数组是定长,即声明时就确定了长度,切片支持扩容 切片的声明初始化: 1.声明时就初始化 //声明方法1 slice1 := []int{1,2,3,4} fmt.Println("slice1",slice1) 2.使用make分配一定的空间,根据需要初始化 阅读全文
posted @ 2020-04-02 15:45 醉深梦始 阅读(179) 评论(0) 推荐(0)
摘要:golang种的变量: 先来学习基本数据类型的声明: package main //变量学习:变量的声明 import( "fmt" ) //全局变量 var ( a int //指明类型,不赋值,默认为改类型的零值 b = 1 //也可以不指明类型,但是必须赋值,golang会默认匹配类型 c s 阅读全文
posted @ 2020-04-02 13:13 醉深梦始 阅读(1186) 评论(0) 推荐(0)
摘要:萌新学习golang第一天 先对golang的代码的基本结构结构进行小结,以后再慢慢深入 https://gitee.com/fly520cc/golang/tree/master package main //包名,main一般为程序的入口 //学习golang程序结构 import( //引入工 阅读全文
posted @ 2020-04-02 12:43 醉深梦始 阅读(154) 评论(0) 推荐(0)
摘要:之前学习了git bash 本地操作,今天来学习如何连接远程github管理 公钥操作 首先生成通过本地bash 管理github的公钥:ssh-keygen -t rsa -C "youremail@xxx.com" 查看你的公钥:cat ~/.ssh/id_rsa.pub,复制其内容 打开git 阅读全文
posted @ 2020-04-01 23:19 醉深梦始 阅读(124) 评论(0) 推荐(0)
摘要:新手程序员一枚,作为自己进阶第一步,打算先把git玩懂。 下列操作皆为windows下操作。 下载好git,成功打开bash: 进入bash命令行窗口后,发现基本的操作命令和linux下差不多,cd,pwd,mkdir,ls ...,只不过 注意切换磁盘命令为:cd /f/ (切换到f盘): 然后输 阅读全文
posted @ 2020-04-01 21:58 醉深梦始 阅读(116) 评论(0) 推荐(0)