Procházet zdrojové kódy

学习笔记备份提交

master
SisMaker před 4 roky
rodič
revize
7946486b32
8 změnil soubory, kde provedl 321 přidání a 0 odebrání
  1. +107
    -0
      src/docs/centos8换源.md
  2. +0
    -0
      src/docs/go反射讲解.md
  3. +2
    -0
      src/go101/go注意事项.md
  4. +101
    -0
      src/go101/go程序源码基本元素.md
  5. +21
    -0
      src/go101/go语言特性.md
  6. +28
    -0
      src/learn/calcQ.go
  7. +30
    -0
      src/learn/defer.go
  8. +32
    -0
      src/learn/worker.go

+ 107
- 0
src/docs/centos8换源.md Zobrazit soubor

@ -0,0 +1,107 @@
# CentOS 8 换源,设置dnf / yum镜像
aliyun更新了centos8的说明
1、备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
3、生成缓存
yum makecache
4 配置镜像的。
cd /etc/yum.repos.d
#备份
cp CentOS-Base.repo CentOS-Base.repo.bak;
cp CentOS-AppStream.repo CentOS-AppStream.repo.bak;
cp CentOS-Extras.repo CentOS-Extras.repo.bak;
sed -i 's/mirrorlist=/#mirrorlist=/g' CentOS-Base.repo CentOS-AppStream.repo CentOS-Extras.repo;
sed -i 's/#baseurl=/baseurl=/g' CentOS-Base.repo CentOS-AppStream.repo CentOS-Extras.repo;
sed -i 's/http:\/\/mirror.centos.org/https:\/\/mirrors.aliyun.com/g' CentOS-Base.repo CentOS-AppStream.repo CentOS-Extras.repo
# ssh 生成密钥
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' ;
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '';
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N '';
8、配置ssh无密码登录
先退出 ssh客户端
ssh-keygen -t rsa
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
# 安装 wxWidgets
先安装
安装wxWidgets相关依赖,不装这个就会报以下错误
yum -y install ncurses-devel unixODBC-devel openssl-devel gcc gcc-c++ autoconf automake
yum -y install gtk2-devel binutils-devel
编译安装
./configure --with-regex=builtin --with-gtk --enable-unicode --disable-shared --prefix=/usr/local/wxWidgets
make && make install
sudo ldconfig
# erlang 简单安装
wxWidgets插件
1- 添加源
# wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
# rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
# rpm --import http://packages.erlang-solutions.com/rpm/erlang_solutions.asc
2- 看一下新装上的源
# vim /etc/yum.repos.d/erlang_solutions.repo
[erlang-solutions]
name=Centos $releasever - $basearch - Erlang Solutions
baseurl=http://packages.erlang-solutions.com/rpm/centos/$releasever/$basearch
gpgcheck=0
gpgkey=http://packages.erlang-solutions.com/debian/erlang_solutions.asc
enabled=1
3- 安装
# yum install erlang erlang-wx
按照源的地址在网页上下载
http://packages.erlang-solutions.com/rpm/centos/7/x86_64/
erlang-18.0-1.el7.centos.x86_64.rpm 和 erlang-wx-18.0-1.el7.centos.x86_64.rpm
# yum install erlang-18.0-1.el7.centos.x86_64.rpm erlang-wx-18.0-1.el7.centos.x86_64.rpm
# erlang编译安装
安装 erlang
3 安装java环境
3.1 下载java安装文件 wget http://download.oracle.com/otn-pub/java/jdk/7u1-b08/jdk-7u1-linux-i586.rpm
3.2 使用rpm 安装 rpm -ivh jdk-7u1-linux-i586.rpm
yum -y install ncurses-devel unixODBC-devel openssl-devel gcc gcc-c++ autoconf automake libxslt gtk3-devel.x86_64
运行configure配置
./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
fop is missing可以忽略
运行make install安装
8 安装
8.1 将erlang源码包解压到/root目录下(一定要/root目录, 非/root目录需要配置参数,还没搞明白)
8.2 运行./configrue
8.3 运行 make install
CentOS添加环境变量
在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行“php -v”命令查看当前php版本信息时时,则会提示命令不存在的错误,下面我们详细介绍一下在linux下将php和mysql加入到环境变量中的方法(假设php和mysql分别安装在/usr/local/webserver/php/和/usr/local/webserver/mysql/中)。
方法一:直接运行命令export PATH=$PATH:/usr/local/webserver/php/bin 和 export PATH=$PATH:/usr/local/webserver/mysql/bin
使用这种方法,只会对当前会话有效,也就是说每当登出或注销系统以后,PATH 设置就会失效,只是临时生效。
方法二:执行vi ~/.bash_profile修改文件中PATH一行,将/usr/local/webserver/php/bin 和 /usr/local/webserver/mysql/bin 加入到PATH=$PATH:$HOME/bin一行之后
这种方法只对当前登录用户生效
方法三:修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码
PATH=$PATH:/usr/local/webserver/php/bin:/usr/local/webserver/mysql/bin
PATH=$PATH:/usr/local/erlang/bin
export PATH
最后:执行 命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。

+ 0
- 0
src/docs/go反射讲解.md Zobrazit soubor


+ 2
- 0
src/go101/go注意事项.md Zobrazit soubor

@ -0,0 +1,2 @@
1. 一般 print和println这两个内置函数并不推荐使用, 在正式的项目中,我们应该尽量使用fmt标准库包声明的相应函数
2. Go大括号 {} 来显示一个代码块 但是在Go中 { 不能放到下一行 这限制的好处(加快编译速度, 统一编程风格)

+ 101
- 0
src/go101/go程序源码基本元素.md Zobrazit soubor

@ -0,0 +1,101 @@
# 代码元素
关键字
标识符
基本类型 和 它们的字面量
常量 变量
操作符
函数声明与函数调用
代码包和包引入
表达式,语句和简单语句
基本流程控制语法
# 关键字 共25个分四组
用来声明各种代码元素
const func import package type var
用于组合类型的字面表示
chan interface map struct
基本流程控制
break case continue default else fallthrough for goto if range switch return select
特殊流程关键字
defer go
# 标识符
一个标识符是以unioncode字母或者 _ 开头并且完全由unioncode字母和uninocode数字组成的单词
Unicode字母是定义在Unicode标准8.0 ? 中的Lu、Ll、Lt、Lm和Lo分类中的字符。
Unicode数字是定义在Unicode标准8.0中的Nd数字字符分类中的字符。
所有的类型名, 变量名 常量名 跳转标签 包名 和包的引入名 都必须是标识符
由UnionCode大写字母开头的标识符成为导出标识符
# 基本类型和它们的字面量表示
## 基本的内置类型(go支持下列基本类型) 也称为 预声明类型
1种布尔类型 bool
11种中内置整数类型
int8 uint8 int16 uint16 int32 uint32 int64 uint64 int uint uintptr
2种浮点数类型
float32 float64
2种内置的复数类型
complex64 complex128
1种字符串
string
除了bool和string类型 其他15中内置基本类型都称为数值类型
Go中有两种内置类型别名(type alias)
byte是uint8的内置别名 我们可以将byte 和 uint8 看作同一个类型
rune是uint32内置别名 我们可以将rune 和 uint32 看作容一个类型
其中 uintptr int uint 类型的值的尺寸都依赖于具体的编译器实现 通常在64位架构上 int,uint类型的
值是64位,在32位是则是32位
编译器必输保证uintptr类型的值的尺寸能够存下任意一个内存地址
complex64复数值的实部和虚部都是float32
complex128复数值的实部和虚部都是float64
在内存中 浮点数都是用IEEE-754格式存储
尽管布尔和字符串类型分类各自只有一种类型,我们可以声明更多的自定义布尔和字符串类型
1| // 一些类型定义声明
2| type status bool // status和bool是两个不同的类型
3| type MyString string // MyString和string是两个不同的类型
4| type Id uint64 // Id和uint64是两个不同的类型
5| type real float32 // real和float32是两个不同的类型
6|
7| // 一些类型别名声明
8| type boolean = bool // boolean和bool表示同一个类型
9| type Text = string // Text和string表示同一个类型
10| type U8 = uint8 // U8、uint8和 byte表示同一个类型
11| type char = rune // char、rune和int32表示同一个类型
# 零值
每种类型都有一个零值, 零值都可以看做此类型的默认值, 相应类型的零值如下
bool: false
数值类型: 0 (虽然都是零 但是内存占用不同)
字符串: ""
# 基本类型的字面量表示形式
一个值的字面形式称为一个字面量,它表示此值在代码中的字体体现形式(和内存中的表现形式相对应)
一个值可能有很多种字面量形式
## 布尔值的字面量形式
true false
## 整数类型值的字面量形式
整数类型值有四种字面量形式:
十进制形式(decimal) 不能以 0 开头
八进制形式(octal) )0o 0O 0 开头
十六进制形式(hex) 0x 0X 开头
二进制形式(binary) 0b 0B 开头
## 浮点数类型值的字面量形式
一个浮点数的完整字面量形式包含一个十进制整数部分, 一个小数点 一个十进制小数部分和一个整数指数部分,部分可以省略

+ 21
- 0
src/go101/go语言特性.md Zobrazit soubor

@ -0,0 +1,21 @@
# go语言特性
内置并发编程支持
使用携程 goroutine 作为基本计算单元
使用通道 channel 作为通信和同步
内置了map slice 类型
支持多态
使用接口 interface 来实现value boxing 和 反射 reflection
支持指针
支持函数闭包 closure
支持方法
支持延迟函数调用 defer
支持类型内嵌 type embedding
支持类型推断 type deduction or type inference
内存安全
自动垃圾回收
良好的代码跨平台性

+ 28
- 0
src/learn/calcQ.go Zobrazit soubor

@ -4,6 +4,7 @@ import (
"fmt"
"math"
"math/rand"
"strings"
)
func calcQuality(min, max, equipQuality, continueMatNumb int32, jewelQualityMap map[int32]int32) int32 {
@ -50,4 +51,31 @@ func main() {
fmt.Printf("get eeeeeeeeeee %v", q)
lastCost := CeilToInt32(float32(500 * 100.0 / (100 + 1)))
println("IMY********************", lastCost)
fmt.Printf("IMY******************** %v \n", strings.Split("5:6:7", ":"))
fmt.Printf("IMY******************** %v \n", strings.Split("8", ":"))
fmt.Printf("IMY******************** %v \n", int64(math.Ceil(float64(50)*float64(7197/3600.0))))
var duration int32 = 7197
A := float64(float64(duration) / 3600.0)
fmt.Printf("IMY********************%v \n", A)
fmap := make(map[int32]float64)
fmap[2] = 2.00
fmap[3] = 2.01
fmt.Printf("IMY*********%v %v \n", math.Ceil(fmap[1]), math.Ceil(fmap[1]))
fmt.Printf("IMY*********%v %v \n", math.Ceil(fmap[2]), math.Ceil(fmap[2]))
fmt.Printf("IMY*********%v %v \n", math.Ceil(fmap[3]), math.Ceil(fmap[3]))
vvv := make(map[int]map[int]int)
if _, ok := vvv[1]; !ok {
vvv[1] = make(map[int]int)
}
vvv[1][1] = 1
fmt.Printf("IMY*********%v %v \n", math.Ceil(fmap[3]), math.Ceil(fmap[3]))
var nonInitSlice []int
nonInitSlice = append(nonInitSlice, 111)
nonInitSlice = append(nonInitSlice, 2222)
fmt.Printf("IMY************** %v", nonInitSlice)
}

+ 30
- 0
src/learn/defer.go Zobrazit soubor

@ -0,0 +1,30 @@
package main
func f1() (result int) {
defer func() {
result++
}()
return 0
}
func f2() (r int) {
a := 5
t := &a
defer func() {
*t = *t + 5
}()
return *t
}
func f3() (r int) {
defer func(r int) {
r = r + 5
}(r)
return 1
}
func main() {
println(f1())
println(f2())
println(f3())
}

+ 32
- 0
src/learn/worker.go Zobrazit soubor

@ -0,0 +1,32 @@
package main
import (
"fmt"
"os"
"time"
)
func main() {
tackCh := make(chan int, 10)
go worker(tackCh)
timeStart := time.Now().UnixNano()
for i := 0; i < 100000000; i++ {
tackCh <- i
}
timeEnd := time.Now().UnixNano()
fmt.Printf("IMY******over %v %v \n", timeEnd-timeStart, (timeEnd-timeStart)/100000000)
os.Exit(1)
}
func worker(taskCh chan int) {
const N = 5
for i := 0; i < N; i++ {
go func(id int) {
for {
<-taskCh
// fmt.Printf("finis task:%d by worker %d\n",task, id)
// time.Sleep(time.Second)
}
}(i)
}
}

Načítá se…
Zrušit
Uložit