Ubuntu18.04更换国内源

  1. 备份源文件,以防止操作失误后无法还原文件

    1
    
    sudo cp /etc/apt/sources.list /ect/apt/sources.list.backup
    
  2. 打开 /etc/apt/sources.list 文件

    1
    
    sudo vim /ect/apt/sources.list
    
  3. 将源文件里的内容全部注释或者全部删除,然后写入以下内容

    • 阿里云源

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      
      deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
      deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
      deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
      deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
      deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
      
    • 清华源

golang环境配置

Windows

  1. golang官方下载页面下载最新的安装程序

image-20200209192801030

  1. 进行安装,安装过程中需要记住go的安装目录,默认为 C:\Go\

  2. 增加 GOROOT 变量(如果没有的话),值为第二步的时候 go 的安装目录

image-20200209190734594

  1. 增加 GOPATH 变量(如果没有的话),GOPATH 是一个我们的工作路径,go 下面的开发都是在该工作路径下进行的,这个工作路径可以是一个随意的目录,但不能是 go 的安装目录,这里我设置为 D:\go_project,在该路径下创建三个文件夹,bin、pkg、src。其中bin是存放由go install生成的可执行文件,pkg是存放go编译生成的文件,src是存放是我们的go源代码,不同工程项目的代码以包名区分。

image-20200209191459031

Golang的sync.RWMutex与sync.Mutex

介绍

Golang 中的 sync 包中实现了两种锁,一种是 Mutex(互斥锁),另一种是RWMutex(读写锁),其中 RWMutex 是基于 Mutex 实现的

Mutex

Mutex 是互斥锁,Lock() 是加锁,Unlock() 是解锁,在一个 goruntine 对 Mutex 进行上锁之后,其他的 goruntine 只能等到该 goruntine 对该 Mutex 解锁之后才能在对其进行加锁操作。

Golang的sync.Once

使用

sync.Once 可以控制函数只能被调用一次,不能多次重复调用。

例如如下代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
package main

import (
	"fmt"
	"sync"
)

func main() {
	once := sync.Once{}
	n := 10
	for i := 0; i < n; i++ {
		once.Do(f)
	}
}

func f() {
	fmt.Println("Hello World")
}

虽然在 for 循环中多次执行了 once.Do(f) ,但是最终却只执行了一次f 函数而已。

Golang的sync.WaitGroup

使用

假设我们需要在主函数中调用协程打印数据,

很容易我们能想写出下面的代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
package main

import "fmt"

func main() {
	n := 100
	for i := 0; i < n; i++ {
		go fmt.Println("Hello World!")
	}
}

本来我们的要求是需要打印 100 个 “Hello World” 在控制台上,但是实际运行起来会发现每次都是少那么几个,这是什么原因呢?因为在 main 函数执行完毕之后由它所派生出的协程也将会全部给操作系统给杀死,而不会再继续执行其相应的操作了。

github使用Travis CI

前言

使用 hexo + gitPages 搭建个人博客的都知道,每当要发表一篇博文的时候,都需要手动使用 hexo g 生成静态网页,然后再通过 hexo d 命令将静态文件推送到 GitHub远程仓库,这段操作在你执行一次两次的时候还不觉得有什么,但是当你频繁的修改博文的时候,你就会明白每次都需要执行这两条语句是多么的枯燥。对于一个程序猿来说,最不想干的就是一些重复且枯燥的工作(懒惰促使程序猿进步!)😋。现在,我们可以通过 Travis CI自动构建博客,我们只需要将写好的博文推送到GitHub上即可。

Linux美化

记录每次安装Linux系统必完成的流程,方便以后的开发

zsh

1
2
3
4
5
6
# ubuntu
$ sudo apt-get install zsh
# contos
$ sudo yum install zsh -y
# arch
$ sudo pacman -S zsh

on-my-zsh

安装

通过在线脚本安装

1
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

主题

1
$ vim ~/.zshrc

找到 ZSH_THEME,将其更改为 ZSH_THEME="agnoster"

windows上安装WSL

介绍

Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。

意思就是一个能在windows系统上运行的linux系统。

lombok的常用注解

Lombok介绍

官网介绍:

Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java. Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.

翻译:Lombok 项目是一个 Java 库,它会自动插入您的编辑器和构建工具中,从而使您的 Java 更加生动有趣。 永远不要再写另一个 getter 或 equals 方法,带有一个注释的您的类有一个功能全面的生成器,自动化您的日志记录变量等等。