海运的博客

LVM条带化raid0

发布时间:August 7, 2017 // 分类: // No Comments

新建:

pvcreate /dev/vd[b-c]1
vgcreate alivg /dev/vd[b-c]1
lvcreate -l +100%free -i 2 -I 128 alivg -n alilv
mkfs.ext4 /dev/alivg/alilv 
mount /dev/alivg/alilv /data/

查看lv信息:

lvdisplay -m
  --- Segments ---
  Logical extents 0 to 10237:
    Type        striped
    Stripes        2
    Stripe size        512.00 KiB
    Stripe 0:
      Physical volume    /dev/vdb1
      Physical extents    0 to 5118
    Stripe 1:
      Physical volume    /dev/vdc1
      Physical extents    0 to 5118

扩充:

pvcreate /dev/vd[d-e]1
vgextend alivg /dev/vd[d-e]1
lvresize -l +100%free -i 2 -I 128 /dev/alivg/alilv
resize2fs /dev/alivg/alilv

Linux下测试磁盘性能吞吐量/IOPS

发布时间:August 4, 2017 // 分类: // No Comments

使用dd测试吞吐量:

#默认启用写缓存
dd bs=64k count=4k if=/dev/zero of=test;rm -rf test
#最后一次性写入硬盘
dd bs=64k count=4k if=/dev/zero of=test conv=fdatasync;rm -rf test
#每次读取64k马上写入硬盘
dd if=/dev/zero of=test bs=64k count=4k oflag=dsync;rm -rf test

使用测试读吞吐量:

hdparm -Tt /dev/vdc1

使用fio测试iops和吞吐量:

fio --bs=4k --ioengine=libaio --iodepth=1 --direct=1 --rw=read --time_based --runtime=600  --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-read --size=100G --filename=/dev/sdb
block=4k iodepth=1 随机读测试,能反映磁盘的时延性能;
block=128K iodepth=32 能反映峰值吞吐性能 ;
block=4k iodepth=32 能反映峰值IOPS性能。

image.jpg
随机读写iops:
randread.jpg
吞吐量:
bw.jpg
延时:
time.jpg
参考:
https://www.qcloud.com/document/product/362/6741
https://www.qcloud.com/document/product/362/6745

go使用mysql

发布时间:July 30, 2017 // 分类: // No Comments

package main
import (
        "fmt"
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    var sqlt string
    var table string
    db, err := sql.Open("mysql", "root:password@/dbname?charset=utf8")
    //查询
    sqlt = "SELECT tid from " + table + " where id = (SELECT max(id) FROM " + table + ");"
    rows, err = db.Query(sqlt)
    for rows.Next() {
        err = rows.Scan(&tid)
        fmt.Println(tid)
    }

    //插入
    sqlt = "INSERT " + table + " SET tid=?,amount=?,price=?,time=?,type=?,funds=?"
    stmt, _ := db.Prepare(sqlt)
    stmt.Exec(v.Id, v.Volume, v.Price, v.At, v.Side, v.Funds)
    //执行
    db.Exec("delete from table where id = '1'")
}

php使用pdo mysql

发布时间:July 30, 2017 // 分类: // No Comments

$dsn = "mysql:host=localhost;dbname=dbname";
$pdo = new PDO($dsn,"userpassword","password");
//查询
$sql = "SELECT * from tables where id > 1 limit 1";
$row = $pdo->query($sql);
$row = $row->fetchAll(PDO::FETCH_ASSOC);

//插入
$sql = "insert into table(tid,price) values(:tid, :price)";
$stmt = $pdo->prepare($sql);
$stmt->execute(array('35678', '100'));

//删除
$dbh->exec("delete from table where id = '1'");

Go语言解json

发布时间:July 30, 2017 // 分类: // No Comments

package main
import "fmt"
import "encoding/json"

type trade struct {
    Amount float64
    Price  float64
    Tid    uint64
    Date   uint64
    Trade_side string
}

type res struct {
    Status string
    Trades []trade
}

func main() {
    keysBody := []byte(`{"status":"ok","trades":[{"amount":1783.197,"price":11.64,"tid":1334222,"date":1501319002,"side":"sell","trade_side":"ask"},{"amount":1414.198,"price":11.64,"tid":1334223,"date":1501319002,"side":"sell","trade_side":"ask"}]}`)
    //var keys []trade 
    var keys res
    json.Unmarshal(keysBody, &keys)
    fmt.Println(keys)
}

未知结构:

package main

import "fmt"
import "encoding/json"

func main() {
    keysBody := []byte(`{"1":{"id":7,"last":"0.00000052","lowestAsk":"0.00000052","highestBid":"0.00000051","percentChange":"0.06122448","baseVolume":"82.45931512","quoteVolume":"161135661.58285543","isFrozen":"0","high24hr":"0.00000053","low24hr":"0.00000049"},"2":{"id":8,"last":"0.00005285","lowestAsk":"0.00005335","highestBid":"0.00005285","percentChange":"0.02841019","baseVolume":"8.86982292","quoteVolume":"169072.72178908","isFrozen":"0","high24hr":"0.00005453","low24hr":"0.00005051"}}`)
    var n map[string]interface{}
    err := json.Unmarshal(keysBody, &n)
    if err != nil {
        fmt.Println(err)
    }
    for k, v := range n {
        fmt.Println(k, "------", v)
        for k2, v2 := range v.(map[string]interface{}) {
            fmt.Println(k2, "------", v2)
        }
    }
}
分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...
归档