go的字符串不能简单截取

s := "hello, 世界猫"
fmt.Println(s)
fmt.Println(len(s)) // 13
fmt.Println([]byte(s)) // [72 101 108 108 111 44 32 228 184 150 231 149 140]
fmt.Println(utf8.RuneCountInString(s))
r := []rune(s)
fmt.Println(r)
fmt.Println(len(r))
s = string(r[0:8])
fmt.Println(s)
fmt.Println(len(s))
fmt.Println([]byte(s))
fmt.Println(utf8.RuneCountInString(s))

go的时间time

够浪的时间

var now time.Time
now = time.Now() //获取当前时间
fmt.Printf("时间戳(秒):%v;\n", time.Now().Unix()) //10位
fmt.Printf("时间戳(纳秒):%v;\n", time.Now().UnixNano()) //19位
fmt.Printf("时间戳(毫秒):%v;\n", time.Now().UnixNano()/1e6) //或者秒*1000也可
fmt.Printf("时间戳(纳秒-->秒):%v;\n", time.Now().UnixNano()/1e9)
t2 := now.Add(time.Minute * -1)
//ts := t2.Sub(now).Nanoseconds() / 1000000.0
ts := t2.Sub(now).Seconds()
ts2 := float64(time.Now().Sub(now).Nanoseconds()) / 1000000
fmt.Println(ts2)
s1 := strconv.FormatFloat(ts2, 'f', 6, 64)
fmt.Println(s1)

参考:
https://www.cnblogs.com/feicheninfo/articles/12349660.html

mount: unknown filesystem type 'LVM2_member'

https://www.cnblogs.com/apexchu/p/4245117.html

1、查看物理卷:pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup00 lvm2 a- 279.22G 32.00M

2、查看卷组:vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup00 1 4 0 wz--n- 279.22G 32.00M

3、查看逻辑卷:lvdisplay
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol03
VG Name VolGroup00
LV UUID YhG8Fu-ZGPk-qt8D-AxgC-DzOU-dg1F-z71feI
LV Write Access read/write
LV Status unenable

open 1

LV Size 245.97 GB
Current LE 7871
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 253:2

4、如未激活,需要激活逻辑卷:vgchange -ay /dev/VolGroup00

LV Status available

5、挂载逻辑卷:mount /dev/VolGroup00/LogVol03 /home/lvm

d、在卷组里创建逻辑卷并格式化、挂载使用;

- 阅读剩余部分 -

SSH用户枚举漏洞(CVE-2018-15473)

检查SSH版本ssh -V

OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017

这是ubuntu 18.04.2/3自带的ssh版本,据说7.7及以前版本都有这个问题,需要升级解决

Ubuntu 16.04.2 LTS - OpenSSH_7.2p2 Ubuntu-4ubuntu2.10, OpenSSL 1.0.2g 1 Mar 2016
Ubuntu 20.04 LTS - OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f 31 Mar 2020

尝试解决
sudo apt-get update
sudo ls /var/cache/apt/archives/
sudo apt-get -d install openssh-server
sudo mv /var/cache/apt/archives/*.deb .
没有新版
openssh-server_1%3a7.6p1-4ubuntu0.3_amd64.deb

- 阅读剩余部分 -

让狗啃文件

一步一步来

package main

import (
    "fmt"
    _ "io/ioutil"
)

func main() {
    fmt.Println("start...")
    fmt.Println("end...")
}

遇到多管闲事的狗imported and not used,导入了包,但是没有用到,在go语言中,这是不允许的,球猫说加_果然好用

path := "D:\\temp\\cy_data\\"
rd, _ := ioutil.ReadDir(path)
for _, fi := range rd {
    fmt.Println(fi.Name())
}

文件夹和文件都出来了,得研究一下怎么挑选

path := "D:\\temp\\cy_data\\"
rd, _ := ioutil.ReadDir(path)
for _, fi := range rd {
    if !fi.IsDir() {
        continue;
    }
    fullDir:= filepath.Join(path,fi.Name())
    fmt.Println(fullDir)
    c :=0
    rf, _ := ioutil.ReadDir(fullDir)
    for _, fn := range rf {
        if fn.IsDir() {
            continue;
        }
        c++
    }
    fmt.Println(c)
}

用fi.IsDir()终于快进入正题了
读文件

file, err := os.Open(fn)
if err != nil {
    fmt.Println("文件打开失败 = ", err)
}
defer file.Close()
reader := bufio.NewReader(file)
for {
    str, err := reader.ReadString('\n')
    if err == io.EOF {
        break
    }
    str = strings.Replace(str, "\n", "", -1)
    str = strings.Replace(str, "\r", "", -1)
    s := strings.Split(str, ",")
    fmt.Println(len(s))
}
fmt.Println("文件读取结束...")

写文件

outfile := filepath.Join(path,"gps.txt")
file, err := os.OpenFile(outfile, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
  fmt.Printf("打开文件错误= %v \n", err)
  return
}
defer file.Close()
writer := bufio.NewWriter(file)
writer.WriteString(ss+"\r\n")
writer.Flush()

一些狗笔记

1、可以导入的东西很多,没有用掉的一定要注释掉,变量也不允许存在没用到的
2、全局变量var ht map[string]string
3、字典初始化ht = make(map[string]string)
4、枚举文件夹rd, _ := ioutil.ReadDir(path)
5、类似foreach的for _, fi := range rd
6、文件的属性fi.IsDir()、fi.Name()
7、文件全名构造fullDir:= filepath.Join(path,fi.Name())
8、字典排序var SortString []string for k := range ht { SortString = append(SortString, k) } sort.Strings(SortString)
9、=赋值定义过的,:=定义并赋值,变量的数目和结果相同,不用的_
10、分割s := strings.Split(ht[k], ",")
11、字符串转数字dj, _ := strconv.ParseFloat(s[0], 64)
12、数字转字符串6位小数djStr := strconv.FormatFloat(dj, 'f', 6, 64)
13、输出fmt.Println可以用逗号分割不同类型
14、过程定义无返回值func f2(fn string)
15、替换str = strings.Replace(str, "\n", "", -1)
16、字典v,ok := ht[1] if ok { fmt.Println("再一次确认,已经存在key=",v) }
17、判断操作系统sysType := runtime.GOOS if sysType == "linux"
18、命令行输入 input := bufio.NewScanner(os.Stdin) if input.Scan() { line := input.Text() }