- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 CentOS7 安装 Docker 及配置阿里云镜像仓库
Docker 的三要素1)镜像(image)镜像就是模板。2)容器(container)容器就是镜像的一个实例。比如:Public Class Person {}Person p1 = new Person();Person p2 = new Person();Person p3 = new Person();就可以类比为,Person是一个镜像(image)而 p1 p2 p3 就是该镜像对应的三个实例(容器 container)。Docke..
2021-04-20 21:37:27
1609
原创 一文读懂 Git GitHub Gitee(码云)的操作
什么是 GitGit 简单来说,就是一个分布式版本控制软件。分布式版本控制,特点就是分布式和版本控制。版本的概念很好理解,就是每个软件上线的时候,都会有一个版本号,随着软件不断增加功能或者修复以前残留的漏洞,会不断更新软件的版本,如微信一开始的版本为 v1.0.0,后面随着功能的不断增加,优化,现在我们微信的最新版本一般为 v8.0.2而分布式是一种去中心化的架构,每个开发者本地主机上都保留有一份完整的代码,开发者加入这个项目的时候,先从远程仓库克隆一份代码,在此基础上进行编程,并且把自
2021-04-17 17:08:31
569
原创 Golang 多分支语句的使用陷阱和其它细节
Golang 多分支的使用有一个容易被忽视的小细节,就是多分支语句只有一个入口。代码示例:package mainimport "fmt"func main() { var num int8 = 10 if num > 9 { fmt.Println("ok1") } else if num > 6 { fmt.Println("ok2") } else if num > 3 { fmt.Println("ok3") } else { fmt
2021-02-27 15:44:37
239
原创 Golang 浮点类型(float32、float64)在内存中的存储
在Go语言编程中,用来表示小数的有两种类型: float32(单精度类型,占据4个字节 byte,32个二进制位 bit) float64(双精度类型,占据8个字节 byte,64个二进制位 bit)那么,计算机在内存中是如何存储浮点类型的呢?我们下面就来从计算机中最小的单位 bit (二进制位)方面来详细分析:我们知道,计算机中的数据,最终都需要转化成二进制数据来存储。不管什么样的数据(文字、图片、视频、语音)存储到计算机中都会变成 0 1 这样的二进制代码那么,首...
2021-02-18 16:58:43
12994
1
原创 走迷宫算法2(顺序栈 非最短路径)
迷宫用二维数组来表示迷宫:1)0表示可走的格子。2)1表示墙。初始化二维数组: mazeMap := [10][10]int{ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 1, 0, 0, 0, 1, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 1, 0, 1}, {1, 0, 0, 0, 0, 1, 1, 0, 0, 1}, {1, 0, 1, 1, 1, 0, 0, 0, 0, 1}, {1, 0, 0,
2020-12-30 17:06:32
511
1
原创 走迷宫算法1(递归 非最短路径)
递归递归的概念简单的说,递归就是函数/方法自己调用自己。每次调用传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。递归需要遵守的重要原则1)执行一个函数时,就创建一个新的受保护的独立空间(新函数栈)。2)函数的局部变量是独立的,不会相互影响。3)递归必须向退出递归的条件逼近,否则就是无限递归。4)当一个函数执行完毕,或者遇到 return ,就会返回,遵守谁调用,就将结果返回给谁。同时当函数执行完毕或者返回时,该函数本身也会被系统销毁。.
2020-12-29 15:37:55
602
1
原创 哈希表(Hash table)
Google 上机题有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id 性别 年龄 住址...)当输入该员工的 id 时,要求查找到该员工的所有信息。要求:不使用数据库,尽量节省内存,速度越快越好。哈希表这个问题可以用哈希表来解决。哈希表的基本介绍散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放.
2020-12-29 02:27:00
433
原创 用单向链表模拟队列
示意图入队列:让 rear 指针指向的节点的 Next 指针指向新节点,然后让 rear 指针指向下一个节点。出队列:每次出队列时,都让 font 指针指向 head 节点的下一个节点。然后让 head 指针的 Next 指向 front 指针指向的节点的下一个节点,如图所示:最后从队列中弹出 front 节点。完整代码(Golang)/* 数据结构 队列 链表 创建一个链表模拟队列 实现:数据入队列、数据出队列、显示队列*/package mai.
2020-12-28 16:51:39
207
原创 取号机排队取号服务算法(数据结构 队列(Queue))
取号机排队取号服务问题假设某天的取号机最多能取出15个号。一共有2个服务窗口。要求用代码模拟出:1)客户用取号机领取编号。2)模拟服务窗口的职员服务领取到号的客户。情景示意图Golang 代码/* 数据结构 队列 题目一: 1)创建一个数组模拟队列,每隔一定时间[随机],给数组添加一个数。 2)启动两个协程,每隔一定时间(时间随机)到队列取出数据 3)在控制台输出 x 号协程 服务 ---》x 号客户 x 号协程 服务 ---》x 号客户..
2020-12-27 18:10:33
2326
原创 Golang 实现单向环形链表
单向环形链表单向环形链表是一种特殊的单向链表。单向链表最后一个节点的 Next 指针指向空。而单向环形链表最后一个节点的 Next 指针指向头节点。如图所示:单向环形链表节点的构建假设把几只猫的信息(编号、名字)构成一个单向环形链表。Golang 代码:type CatNode struct { no int // 猫编号 name string // 猫的名字 next *CatNode // 指向下一只猫的指针}往单向环形链..
2020-12-26 17:53:15
364
3
原创 栈(Stack)的快速入门
Golang 代码:/* 数据结构 栈(Stack) 快速入门案例*/package mainimport ( "errors" "fmt")// 使用数组来模拟一个栈的使用type Stack struct { MaxTop int // 表示栈最大能存放的数据个数 Top int // 栈顶 arr [5]int // 模拟栈的数组}// 入栈func (this *Stack) Push(val int) (err error) {
2020-12-21 18:02:37
201
原创 约瑟夫问题(Josephus problem)详解
约瑟夫问题1)设编号为 1,2,3 ... n 的 n 个人围坐一圈。2)约定编号为 k (1 <= k <= n)的人从 1 开始报数,数到 m 的那个人出列。3)它的下一位又从 1 开始报数,数到 m 的那个人又出列,依此类推,直到所有人出列为止。4)由此产生一个出列编号的序列。解题思路1)构建一个结构体 Boy No 为 Boy 的编号。 Next 指针指向下一个 Boy。代码如下:// 小孩的结构体type Boy struct {...
2020-12-21 15:52:04
9576
原创 Golang 实现双向链表
Golang 代码:/* 数据结构 双向链表*/package mainimport "fmt"// 定义一个双向链表type DoubleNode struct { no int // 排名 name string // 名字 nickname string // 外号 pre *DoubleNode // 前一个节点 next *DoubleNode // 下一个节点}// 给双向链表加入一
2020-12-17 01:06:07
302
原创 Golang 操作单向链表的应用实例
代码:/* 使用带head头节点的单向链表实现-水浒传英雄排行榜管理: 1)完成对英雄人物的增删改查操作。 2)第一种方法:在添加英雄时,直接添加到链表的尾部 3)第二种方法:在添加英雄时,根据排名将英雄插入到指定位置 (如果没有这个排名,则添加失败,并给出提示)*/package mainimport "fmt"// 定义一个 HeroNodetype HeroNode struct { no int // 排名 name string
2020-12-16 16:17:51
190
原创 测试 Golang 指针变量的引用传递
首先设计一个数据结构(Golang 结构体) SimpleList :type SimpleList struct { num int next *SimpleList}num 用来代表该结构的编号。*SimpleList 用来表示该结构体类型的指针变量,指向下一个节点。创建头节点 head。创建其它节点 node1、node2、node3。 node3 := &SimpleList{ num: 3, } node2 := &SimpleLi.
2020-12-16 15:59:04
274
原创 稀疏数组(压缩数组)
如何用代码来表示棋盘?棋盘(11 * 11)如图所示,一个 11 * 11 的围棋棋盘。三枚黑子的位置分别为 (1,2) (2,3) (3,2)一枚白子的位置为 (2,2)传统方式一般会联想到二维数组来表示棋盘,假设:黑棋的值为1。白棋的值为2。没有落子的值为0。用二维数组来表示棋盘和棋子的 Golang 代码:package mainimport "fmt"type Node struct { row int // 行 column in..
2020-12-08 15:27:44
929
原创 Golang Redis 连接池
Redis 连接池说明:通过 Golang 对 Redis 进行操作,还可以通过使用 Redis 连接池,流程如下:1)事先初始化一定数量的线程,放入到连接池。2)当 Go 需要操作 Redis 时,直接从 Redis 连接池取出链接即可。3)这样可以节省临时获取 Redis 链接的时间,从而提高效率。核心代码:var pool *redis.Poolpool = &redis.Pool { MaxIdle:8, // 最大空闲连接处 MaxActiv
2020-12-07 16:21:37
543
原创 Java 关键字 volatile 的作用(2/2):禁止指令重排序
我们先来看一段 Java 代码,DCL (Double Check Lock) 单例模式:package singleton;public class Mgr06 { private volatile static Mgr06 INSTANCE; private Mgr06() { } public static Mgr06 getInstance() { if (INSTANCE == null) { synch
2020-12-06 23:15:11
390
原创 Linux 操作系统文件权限详解
Linux文件权限是非常重要的一部分,熟悉Linux的文件权限有助于程序员更好地使用Linux操作系统。这里我用 CentOS7 版本的 Linux 操作系统远程连接工具使用 FinalShell 3.7.7切换到测试目录 /opt/testShell[root@192 ~]# cd /opt/testShell用 root 用户登陆 Linux 然后输入 Linux 命令查看文件[root@192 testShell]# ls -lLinux 系统输出的结果:如图.
2020-12-05 23:38:09
583
原创 Golang 操作 Redis 示例
/* Golang 操作 Redis*/package mainimport ( "fmt" // 引入 Redis 包 "github.com/garyburd/redigo/redis")func main() { // 链接到 Redis conn, err := redis.Dial("tcp", "localhost:6379") if err != nil { fmt.Println("connect redis fails err = ", err) .
2020-11-20 16:22:15
472
2
原创 Go语言的简介与特点
Go语言的核心开发团队Ken Thompson 1983年图灵奖获得者,C语言的主要发明人Rob Pike 贝尔实验室Unix团队的成员,和Ken共创出广泛使用的UTF-8编码Robert Griesemer:曾协作制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8Go语言诞生的小故事Google为什么要创建出Go语言?1.计算机硬件技术更新频繁,目前主流编程语言的发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。2.软件.
2020-11-20 15:45:10
1289
1
原创 Java 关键字 volatile 的作用(1/2):保证线程的可见性
volatile 保证线程可见性先贴上代码变量 running 前面不加 volatile 修饰时:package test;import java.util.concurrent.TimeUnit;public class T01_HelloVolatile { boolean running = true; void m() { System.out.println("m start"); while (running) {
2020-11-11 11:27:15
407
1
原创 win10 安装 mysqld 8.0.13 时候报错, mysqld --initialize --console 遇到的问题解决
错误:执行mysqld --initialize --console命令时解决方法:在配置文件my.ini时把所有的字符集编码设置 utf8 通通换成 utf8m4原因:一、简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编...
2019-12-08 14:46:51
8377
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人