3 字符串类
4 实例——MyString的实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136/* * C++ string 类的实现* 1. 构造函数和析构函数* 2. 字符串长度* 3. 重载=运算符* 4. 重载+=运算符* 5. 重载<< >> 运算符* 6. 重载比较运算符* 7. 重载[]下标运算符*/#include <iostream>#include <cstring>using na...
4 复数类
5 实例——complex的实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768#include <iostream>using namespace std;class complex{public: complex(double real = 0.0, double imag = 0.0): m_real(real), m_imag(imag){ };public: friend complex operator+(const complex & A, const complex & B); friend complex operator-(const complex & A, const complex & B); friend complex operator*(const ...
6 LRU算法
lru最近最少使用算法对于web开发而言,缓存必不可少,也是提高性能最常用的方式。无论是浏览器缓存,还是服务端的缓存(通过memcached或者redis等内存数据库)。缓存不仅可以加速用户的访问,同时也可以降低服务器的负载和压力。那么,了解常见的缓存淘汰算法的策略和原理就显得特别重要。 常见的缓存算法 LRU (Least recently used) 最近最少使用,如果数据最近被访问过,那么将来被访问的几率也更高。 LFU (Least frequently used) 最不经常使用,如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小。 FIFO (Fist in first out) 先进先出, 如果一个数据最先进入缓存中,则应该最早淘汰掉。 LRU缓存像浏览器的缓存策略、memcached的缓存策略、Redis缓存策略都是使用LRU这个算法,LRU算法会将近期最不会访问的数据淘汰掉。LRU如此流行的原因是实现比较简单,而且对于实际问题也很实用,良好的运行时性能,命中率较高。下面谈谈如何实现LRU缓存: 新数据插入到链表头部 每当缓存命...
1 环境搭建和第一个go程序
该笔记基于 Go语言(基础+进阶+就业) 进行整理 该视频作者的播客 李文周的博客 1.1 安装 Go 开发包环境搭建内容参考视频老师的文章地址 下载地址 Go官网下载地址 Go官方镜像站(推荐) 1.2 配置环境变量及 GOPROXY1.2.1 环境变量GOROOT 和 GOPATH 都是环境变量,其中 GOROOT 是我们安装 go 开发包的路径,而从 Go 1.8 版本开始,Go 开发包在安装完成后会为 GOPATH 设置一个默认目录,参见下表。 GOPATH 在不同操作系统平台上的默认值 平台 GOPATH默认值 举例 Windows %USERPROFILE%/go C:\Users\用户名\go Unix $HOME/go /home/用户名/go 配置方式可以参考 从零开始搭建Go语言开发环境。MAC 下的配置方式可以参考本套笔记 Android 目录下的环境变量配置。 1.2.2 GOPROXYGo 1.11 版本开始,官方支持了 go module 包依赖管理工具和 GOPROXY 变量。 设置 GOPROXY 环境变量后下载源代码...
10-函数+
10 函数10.1 函数的定义10.1.1 函数的定义12345678910111213141516171819// 有参数有返回值的func sum(x int, y int) (ret int) { return x + y}// 有参数但无返回值func f1(x int, y int) { fmt.Println(x + y)}// 无参数无返回值func f2() { fmt.Println("f2")}//无参有返回值func f3() int { return 3} 10.1.2 返回值10.1.2.1 为返回值命名可以为返回值指定一个名字,这就相当于提前声明了一个变量,并将该变量作为返回值。 1234567891011121314151617/* 声明函数时为返回值指定了名称为 ret, 在函数内部可以直接使用 ret,* 并且函数体最后只写 return 即可,其他不需要添加 ret.*/func sum(x int, y int) (ret int) ...
2-变量和常量
2.1 变量的声明变量名、常量名、函数名统称为标识符。标识符由字母、数字和下划线组成,只能以字母或下划线开头。 Go 语言中推荐使用驼峰命名方式。 命名方式:stu_name 下划线方式;stuName 小驼峰方式;StuName 大驼峰方式 Go 语言中的变量必须先声明再使用;非全局变量(函数内的变量)声明之后必须使用,否则报错 同一个作用域内不能有重名的变量。 2.1.1 标准声明方式var 变量名 变量类型 如: 123var s1 stringvar num intvar isok bool 2.1.2 批量声明123456var ( a string b int c bool d float32) 2.1.4 类型推导方式声明即在声明变量时直接赋值,且并不需要声明其类型,系统会根据变量值自动推断变量的类型,推荐使用这种方式: 1var age = 28 2.1.5 短变量声明在函数内部时,可以直接使用简短的声明方式——:= 123456789package mainimport "fmt"func main() { // 简短声明...














