- 博客(26)
- 收藏
- 关注
原创 Ubuntu vim ctags/cscope 迁往 gtags
gtags 使用pip install pygmentssudo apt install libncurses5-dev libncursesw5-devwget http://tamacom.com/global/global-6.6.5.tar.gztar -xzf global-6.6.5.tar.gzcd global-6.6.5/./configure && make && sudo make installcp gtags.vim ~/.vim/
2020-12-01 12:12:28 709
原创 golang 任务超时控制
package mainimport ( "context" "fmt" "time")func main() { ret := TaskWithTimeout(DoSomething, time.Second*3) fmt.Println("ret:", ret) time.Sleep(time.Second * 4) // 等待,若无则看不到最后一行打印}func TaskWithTimeout(task func(), duration
2020-10-22 15:41:36 652
原创 golang mysql 操作
func OpenDB(mysql_conf string) *sql.DB { db, err := sql.Open("mysql", mysql_conf) // user:password@tcp(127.0.0.1:3306)/dbname if err != nil { beego.Error("open mysql fail:", err) return nil } db.SetConnMaxLifetime(time.Minu
2020-10-20 20:14:18 120
原创 beego log 设置
func init() { runMode = "prod" logDirName := "logs" logFileName := "myapp.log" parentDirPath, _ := os.Getwd() // 这边的逻辑是向上层找日志目录,为了解决 go test 时,执行文件在子目录,无日志目录 for { logDirPath := path.Join(parentDirPath, logDirName)
2020-10-20 20:04:14 1160
原创 golang redis cluster 操作
1 创建客户端func NewClient(redis_conf string) *redis.ClusterClient { client := redis.NewClusterClient(&redis.ClusterOptions{ Addrs: ["10.1.11.17:6379", "10.1.11.18:6379"], // master node ip list }) return client}2. 基本命令func Get(rd
2020-10-20 19:55:32 1696
原创 golang 周期性执行
func PeriodicRoutine(period int, f func()) { ticker := time.NewTicker(time.Second * time.Duration(period)) go func() { defer func() { if p := recover(); p != nil { beeg
2020-09-30 15:30:52 912
原创 python rotating logger
按文件大小进行滚动def get_rotating_file_logger(name, log_level_, log_path, log_max_byte, log_backup_count): log_level = log_level_ ch = RotatingFileHandler(log_path, maxBytes=int(log_max_byte), backupCount=int(log_backup_count)) ch.setLevel(log_level.
2020-09-29 10:43:37 226
原创 python 按日期统计折线图
代码from datetime import datetimeimport matplotlib.dates as mdatesimport matplotlib.pyplot as pltdata_map_list = [ {'2020/03/16': [16, 21, 27, 69]}, {'2020/03/17': [19, 11, 37, 65]},]# ...
2020-03-17 10:30:10 3221
原创 docker 安装 ceph 集群
机器10.10.10.10 master10.10.20.20 slave10.10.10.30 slave条件1. 均安装了 docker2. ceph 数据盘挂载在 /home/service/var3. 目录存在 /var/lib/docker/设置 master 通过 ssh 免密登陆 slavesssh-keygenmodify sl...
2020-03-05 19:27:26 695
原创 centos 安装最新稳定版 docker
yum remove \ docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engineyum install -y ...
2020-03-04 20:42:58 175
原创 iozone 安装使用
环境centos 7安装wget http://www.iozone.org/src/current/iozone-3-489.src.rpmrpm -ihv iozone-3-489.src.rpmcd /root/rpmbuild/SOURCEStar -xvf iozone3_489.tarcd iozone3_489/src/current/make linux-ia...
2020-03-04 10:36:35 1370
原创 静态库通过动态库菱形链接共享
菱形可执行程序 test动态库 libcat.so libdog.so静态库 libstatic.alibcat.so 依赖 libstatic.alibdog.so 依赖 libstatic.atest 依赖 libcat.so libdog.so问题:静态库 libstatic.a 中的变量和函数会在 test 中存在两份吗?答案:只会使用一份工程结构···.├...
2019-11-21 20:44:19 303
原创 valgrind 交叉编译 android arm/arm64 平台
源代码目录运行编译脚本#!/usr/bin/env bashexport NDKROOT=~/opt/android-ndk-r14b/export AR=$NDKROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-arexport LD=$NDKROOT/to...
2019-11-05 16:02:58 1138
转载 C++虚函数表结构
原文 C++ 虚函数表解析相同类的不同对象共享同一虚函数表。任何函数指针通过 cout 直接输出为 1,与原文描述有出入,也未找到 linux 每个表的结尾统一表示,待研究。用long 类型指针,应其长度和所在机器指针长度一致。$ g++ test.cpp -o test && ./test==== vitual function table ==== [0] ...
2019-06-10 16:32:18 859
转载 线程安全查找表
// thread_safe_lookup_table.h#ifndef THREAD_SAFE_LOOKUP_TABLE_H#define THREAD_SAFE_LOOKUP_TABLE_H#include <atomic>#include <vector>#include <string>#include <sstream>#i...
2019-06-03 20:45:22 242
转载 线程安全队列
// thread_safe_queue.h#ifndef THREAD_SAFE_QUEUE_H#define THREAD_SAFE_QUEUE_H#include <string>#include <memory>#include <mutex>#include <atomic>#include <sstream>...
2019-05-31 19:39:36 703
转载 CAP 理论
what设计一个大规模可扩展的网络服务时要考虑三个特性:一致性(consistency)、可用性(Availability)、分区容错(partition-tolerance),三者不可能都实现。证明假设两个节点集{G1, G2},由于网络分片导致G1和G2之间所有的通讯都断开了,如果在G1中写,在G2中读刚写的数据, G2中返回的值不可能是G1中写的值。由于A的要求,G2一定要返回这次读请...
2019-04-17 09:14:30 154
原创 python获取文件最后一行
how文件分大小两种情况,大文件从文件末尾逆序获取,为防止文件过大,通过 size_limit 控制返回;小文件直接从头读取。def get_last_line_of_file(file_name, size_limit=-1): file_size = os.path.getsize(file_name) with open(file_name, 'rb') as f:...
2019-04-17 08:00:45 5445
转载 python子线程异常被主线程捕获
WhyThread 中抛出的异常,无法在主线程中通过 try… except… 捕获。class ExceptionThread(Thread): def run(self): self.exc = None try: if hasattr(self, '_Thread__target'): #...
2019-04-17 07:03:35 2168
转载 ardb 类图
@startumlskinparam stereotypeCBackgroundColor YellowGreenclass Runnable { +{abstract} void Run()}class SoftSignalHandler { +{abstract}void OnSoftSignal()}class ChannelService { ...
2019-02-15 19:03:54 200
转载 ardb IO event 处理流程
@startumlactivate EventLoopEventLoop -> Channel: IOEventCallback()activate ChannelChannel -> Channel:OnRead()activate ChannelChannel -> ardb:fire_message_received<Buffer>()ac...
2019-02-15 18:59:07 195
转载 ardb 启动流程图
@startumlactivate mainmain -> Ardb: Ardb()activate Ardbmain <-- Ardb: Ardb()deactivate Ardbmain -> Ardb: init()activate ArdbArdb -> Engine: create_engine()activate EngineArdb ...
2019-02-15 18:53:53 354
转载 计算机系统中延迟时间比较
L1 cache reference ..................................... 0.5 nsBranch mispredict ........................................ 5 nsL2 cache reference ....................................... 7 nsMutex lo...
2019-02-13 08:22:45 632
转载 消息传递框架与完整的ATM示例
消息传递框架与完整的ATM示例How to buildCodeHow to buildg++ -std=c++11 atm.cpp -o atm -lpthreadCode#include &amp;lt;mutex&amp;gt;#include &amp;lt;condition_variable&amp;gt;#include &amp;lt;queue&amp;gt;#i
2019-02-12 19:55:05 553
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人