要求
比较两个版本号 version1 和 version2。
如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。
你可以假设版本字符串非空,并且只包含数字和 . 字符。
. 字符不代表小数点,而...
要求
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存...
什么是策略模式?
不同的算法按照统一的标准封装,客户端根据不同的场景,决策使用何种算法。
优势
典型的高内聚:算法和算法之间完全独立、互不干扰
典型的松耦合:客户端依赖的是接口的抽象方法
沉淀:每一个封装好的...
代码示例:
package main
import (
"fmt"
"math"
"reflect"
"strconv"
)
func main() {
numF := 0.2253
// 保留两位小数, 通用
value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", numF), 64)
fm...
go-redis对redis执行批量操作的类是Pipeliner,具体示例如下.
运行该示例可在redis服务端依次接收到:
MULTI
incr tx_pipeline_counter
expire tx_pipeline_counter 3600
EXEC
多条命令采用批量处理不止节省网络时...
栈的介绍
栈的英文为stack
栈是一个先入后出(FILO-First In Last Out)的有序列表
栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),...
冒泡排序
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的...
约瑟夫(Josephu)问题
设编号为1,2,3,...... n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,他的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个...
链表的定义
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个...
结构体定义
type Queue struct {
maxSize int // 队列的最大长度
array []int // 存放队列数组
head int // 指向队列队首 默认值 0
tail int // 指向队列队尾 默认值 0
}
分析:
什么时候队列满?(tail + 1) % ma...
实际需求
编写的五子棋程序中,有存盘退出和续上盘的功能
如果按照原始的方式来存储二维数组,因为该二维数组很多值是默认值0,因此记录了很多没有意义的数据。
基本介绍
当一个数组中大部分元素为0,或者为同一个值的数组...
// 定义redis链接池
var client *redis.Client
// 初始化redis链接池
func init() {
db, err := beego.AppConfig.Int("redisDB")
if err != nil {
logs.Error("redis-db", err)
}
client = redis.NewClient(&am...
基本介绍
反射可以在运行时动态获取变量的各种信息,比如变量的类型(type),类别(kind)
如果是结构体变量,还可以获取到结构体本身的信息(包括结构体的字段,方法)
通过反射,可以改变变量的值,可以调用关联的方法
...
基本介绍
channel本质就是一个数据结构-队列
数据是先进先出(FIFO: first in first out)
线程安全,多goroutine访问时,不需要加锁,也就是说,channel本身就是线程安全的
channel有类型,一个string的channel只能存...
基本介绍
M:操作系统的主线程(是物理线程)
P:协程执行需要的上下文
G:协程
MPG模式运行的状态1
当前程序有三个M,如果三个M都在一个CPU上运行,就是并发,如果在不同的CPU上运行,就是并行。
M1,M2,M3...