自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TH_NUM的博客

有问题知乎私信我哈~~

  • 博客(761)
  • 资源 (10)
  • 收藏
  • 关注

原创 从零构建包含mysql、redis、python、go等基础软件的Ubuntu Docker镜像

构建包含mysql、redis、python、go等基础软件的Docker镜像的DockerfileFROM ubuntu as builderWORKDIR /code# 修改ubuntu 为国内下载源RUN echo "deb [trusted=yes] http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse" > /etc/apt/sources.listRUN e

2022-02-20 23:43:08 1014

原创 apt-get update “the following signatures couldn’t be verified because the public key is not avail

Fix apt-get update “the following signatures couldn’t be verified because the public key is not available”将系统的镜像环境切换成清华大学镜像源ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror执行命令apt-get update报错。解决办法:apt-key adv --keys..

2022-02-08 10:50:52 1698

原创 修改docker 默认存储路径

Docker 默认安装的情况下,会使用 /var/lib/docker/ 目录作为存储目录,用以存放拉取的镜像和创建的容器等。不过由于此目录一般都位于系统盘,遇到系统盘比较小,而镜像和容器多了后就容易尴尬,这里说明一下如何修改 Docker 的存储目录。docker info这里我的机器的docker存储目录已经被我修改了,默认的应该是/var/lib/docker官方文档的修改办法是编辑 /etc/docker/daemon.json 文件:vi /etc/docker/daemon.json

2022-01-22 12:50:54 1225

原创 hive 安装

https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+StartedSpark InstallationFollow instructions to install Spark:YARN Mode: http://spark.apache.org/docs/latest/running-on-yarn.htmlStandalone Mode: https://spark.apache.org/docs/la

2022-01-19 01:04:08 1540

原创 kerberos 安装配置

https://www.jianshu.com/p/e01a01eedd30https://ieevee.com/tech/2016/06/07/kerberos-1.html

2022-01-19 01:00:54 150

转载 docker容期间通信方法

Docker容器间的通信方式根据媒介可以分为:volume共享通信、网络通信等;根据通信范围也可以分为:同主机通信和跨主机通信等。而本文主要针对容器间的网络通信方法进行讨论。Docker的网络驱动模型Docker的网络驱动模型分类:bridge:Docker中默认的网络驱动模型,在启动容器时如果不指定则默认为此驱动类型;host:打破Docker容器与宿主机之间的网络隔离,直接使用宿主机的网络环境,该模型仅适用于Docker17.6及以上版本;overlay:可以连接多个docker守护进程

2022-01-19 00:52:03 1258

原创 docker启动container

拉取镜像docker pull ubuntu:latest启动 containerdocker run -idt --net host --name container1 --privileged=true -v /data1:/data1 ubuntu:latest /bin/bash

2022-01-19 00:33:39 2728

原创 docker 配置加速镜像站

DaoCloud提供Docker Hub Mirror服务。用户可以进入Docker Hub Mirror注册入口注册。在进入控制台页面后直接点击 启动你的加速器后,您即可得到一个Mirror的地址,将该地址配置在Docker Daemon的启动脚本中,重启Docker Daemon即可使得Docker Hub Mirror配置生效。下文分四种不同的操作系统,来详细阐述如歌配置Docker Hub Mirror地址。Ubuntu安装或升级DockerDocker 1.3.2版本以上才支持Docker

2022-01-19 00:24:20 318

原创 docker 创建用户组、将用户加入docker用户组

cat /etc/passwd 可以查看所有用户的列表w 可以查看当前活跃的用户列表cat /etc/group 查看用户组在/etc/group 中的每条记录分四个字段:第一字段:用户组名称;第二字段:用户组密码;第三字段:GID第四字段:用户列表,每个用户之间用逗号(,)号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名;Docker daemon 绑定的是 Unix socket,这就导致 docker 需要 root 权限才能使用,但这十分麻烦,因为其他用户

2022-01-19 00:04:43 3885

原创 tensorflow XLA 笔记

笔记特定op关闭 XLA特定op关闭 XLAfrom tensorflow.python.compiler.xla import jit with jit.experimental_jit_scope(compile_ops=False): a = tf.add(1, 2)

2021-12-27 22:55:38 1045

原创 vscode 第三方python库自动提示

“command + shift + P“ 按键打开第一个 settings.json在settings.json 里面增加下面一行, xxx 替换成具体的python包的路径,如果不知道python包的路径,可以通过 下面的命令拿到python -c 'import site; print(site.getsitepackages())'settings.json 增加 "python.autoComplete.extraPaths": [ "/xxxx/python3.6/

2021-12-26 12:01:56 1551

原创 protobuf int类型变长存储 varint32 和 varint64

VarInt32 编码VarInt32 (vary int 32),即:长度可变的 32 为整型类型。一般来说,int 类型的长度固定为 32 字节。但 VarInt32 类型的数据长度是不固定的,VarInt32 中每个字节的最高位有特殊的含义。如果最高位为 1 代表下一个字节也是该数字的一部分。因此,表示一个整型数字最少用 1 个字节,最多用 5 个字节表示。如果某个系统中大部分数字需要 >= 4 字节才能表示,那其实并不适合用 VarInt32 来编码。下面以一个例子解释 VarInt32

2021-12-17 01:58:05 1758

原创 c++ RVO

RVO,是Return Value Optimization。这是在函数返回返回值的时候编译器所做出的优化,是C++11标准的一部分,C++11称之为copy elision。在第一次编写的函数里面,编译器明确知道函数会返回哪一个局部对象,那么编译器会把存储这个局部对象的地址和存储返回值临时对象的地址进行复用,也就是说避免了从局部对象到临时对象的拷贝操作。这就是RVO。实验实验1#include <iostream>struct Foo { Foo() { ..

2021-11-26 00:38:26 1081

原创 homebrew 切换回国内的源头

国外常用仓库慢的经典解决办法,自然是临时将该仓库临时源设置为国内的镜像。一般使用中科大的:## 更新 homebrew-caskcd "$(brew --repo)"/Library/Taps/homebrew/homebrew-cask# 更换源git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git# 更新,由于已经 cd 到相应文件夹了,因此不需要通过 -C 指定路径了git fetch --un

2021-11-13 20:00:13 708

原创 paramiko 远程连接ssh

ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)。有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。由于paramiko属于第三方库,所以需要使用如下命令先行安装。pip install paramikoparamiko包含两个核心组件:SSHClient和SFTPClient。SSHClient的作

2021-10-17 20:15:52 2601

原创 c++ allocator_traits

#include <cstddef>#include <iostream>#include <memory>#include <vector>// g++ allocator_traits_test.cpp -std=c++11 -fPIC -Ofast -D_GLIBCXX_USE_CXX11_ABI=0 -o allocator_traits_testtemplate <class T>struct custom_alloca

2021-10-12 23:21:21 690

原创 ubuntu手动下载安装软件包

对于不同的系统版本可以通过查看:cat /etc/issue本地下载软件包通过https://ubuntu.pkgs.org/20.04/ubuntu-main-amd64 或者https://ubuntu.pkgs.org/18.04/ubuntu-main-amd64进行下载安装。上面的两个链接分别是针对 amd架构的ubuntu20 和ubuntu18 对于arm架构需要进行安装貸定的包。下面介绍安装的软件主要是针对amd架构。安装libibverbs-devwget http://arc

2021-10-10 16:20:29 3259

原创 c++ dlopen、dlsym

// 加载动态库Status LoadLibrary(const char* library_filename, void** handle) { *handle = dlopen(library_filename, RTLD_NOW | RTLD_LOCAL); if (!*handle) { return errors::NotFound(dlerror()); } return Status::OK();}// 加载symbolStatus GetSymbolFromL

2021-09-03 11:21:30 681

原创 Register注册工厂

注册工厂class FileSystemRegistry { public: typedef std::function<FileSystem*()> Factory; virtual ~FileSystemRegistry(); virtual Status Register(const string& scheme, Factory factory) = 0; virtual FileSystem* Lookup(const string& scheme

2021-09-03 10:51:52 296

原创 扩展docker 容器内存大小

容器挂载的内存都在宿主机的/dev/mapper/ 目录下面, 在docker 内部可以通过df -h查看。然后在宿主机上可以看到挂载点ls -l /dev/mapper/docker-*-*0f177925583b0e79dc1*输出:lrwxrwxrwx 1 root root 7 6月 7 16:45 /dev/mapper/docker-8:2-1040189149-654e02512ffedb0be99406f19def387b574a5f685742db05d97897c2b8

2021-07-25 22:33:14 1515 1

原创 cuda-gdb 基本功能

官方文档kernel之间切换查看当前所在的kernel(cuda-gdb) cuda device sm warp lane block threadblock (0,0,0), thread (0,0,0), device 0, sm 0, warp 0, lane 0 (cuda-gdb) cuda kernel block threadkernel 1, block (0,0,0), ...

2021-07-04 15:52:01 568

原创 cuda-gdb

官方文档kernel之间切换查看当前所在的kernel(cuda-gdb) cuda device sm warp lane block threadblock (0,0,0), thread (0,0,0), device 0, sm 0, warp 0, lane 0 (cuda-gdb) cuda kernel block threadkernel 1, block (0,0,0), thread (0,0,0)(cuda-gdb) cuda kernelkernel 1切换

2021-07-04 15:34:33 526

原创 系统IO负载 排查步骤

iotop列出io占用较高的程序iostat能监控到每块磁盘的读写iostat -d -x -k 1 1 (-d表示显示I/O性能指标,-x表示显示扩展统计(即所有I/O指标))使用df 命令,找到磁盘的挂载点 或者 lsblklsof -p <pid>找到进程打开的文件每隔一段时间统计某一个文件占用的物理内存# count.shn=0pid=$1while (($n<10)) do cat /proc/${pid}/smaps | gre

2021-06-07 00:37:49 402 1

原创 SIMD and Avx2

SIMD 一条指令可以执行多个数据group的计算和输出。对于SIMD相对应的SISD.intel SSE2 , AVX2, AVX-512假设有一个任务是统计字符串中每一个字符出现的次数,我们可以用128bit 的SISD指令进行统计。每8个bit代表一个字符,所以只需要两个SIMD指令(move mask、pop count)。详细测试:#include <stdio.h>#include <thread>#define INC_TO 1000000 // o

2021-06-07 00:09:29 422

原创 char 与 unsigned char的本质区别

在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255,8个bit,最多256种情况,因此无论如何都能表示256个数字。主要是符号位,但是在普通的赋值,读写文件和网络字节流都没什么区别,反正就是一个字节,不管最高位是什么,最终的读取结果都一样,只是你怎么理解最高位而已,在屏幕上面的显示可能不一样。但是我们却发现在表示byte时,都用unsigned

2021-06-06 12:29:05 564

原创 c++ atomic 详细讲解

1. 什么样的type 可以转化成atomic?任何 trivially copyable 的数据可以被转换成atomic.#include <iostream>#include <type_traits> struct A { int m;}; struct B { B(B const&) {}}; struct C { virtual void foo();}; struct D { int m; D

2021-05-22 22:19:57 11294 9

原创 atomic 原子操作

1. 什么样的type 可以转化成atomic?任何 trivially copyable 的数据可以被转换成atomic.#include <iostream>#include <type_traits> struct A { int m;}; struct B { B(B const&) {}}; struct C { ...

2021-05-22 22:19:12 524

原创 vmstat 机器CPU和进程性能监控

vmstat 使用(Sm使得输出对齐)vmstat 2 -Sm例子里命令行的 2 表示每隔 2 秒钟显示一次procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in c...

2021-05-09 18:56:44 220

原创 vmstat CPU和进程的性能监控

vmstat 使用(Sm使得输出对齐)vmstat 2 -Sm例子里命令行的 2 表示每隔 2 秒钟显示一次procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 60321892 15646228 3557

2021-05-09 18:47:02 217

原创 python class 装饰器

import sysimport osimport functoolsimport inspectfrom collections import defaultdictimport jsondef evaluate(filename): with open(filename, "r") as evaluate_file: return evaluate_file.read()class Params(object): DEFAULT = object() def _

2021-05-06 13:28:35 503

原创 python subprocess 定时任务式例

import subprocessimport threadingimport signalimport timefrom threading import Timerimport sysimport subprocessproecess = subprocess.Popen("echo 'hello' && sleep 5", shell=True, stdou...

2021-04-29 01:43:14 441

原创 python 控制函数运行时间

版本1from contextlib import contextmanager@contextmanagerdef timeout(duration): def timeout_handler(signum, frame): raise Exception('block timedout after {duration} seconds') signal.signal(signal.SIGALRM, timeout_handler) signal.alarm

2021-04-28 23:21:58 711

原创 手动安装python2.7和python3.6

wget http://python.org/ftp/python/2.7.14/Python-2.7.14.tar.xztar xf Python-2.7.14.tar.xzcd Python-2.7.14./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"make && make altinstall# Strip th

2021-04-28 23:18:19 209

原创 python定时任务式例

import subprocessimport threadingimport signalimport timefrom threading import Timerimport sysimport subprocessproecess = subprocess.Popen("echo 'hello' && sleep 5", shell=True, stdout=sys.stdout)import osimport functoolsdef func(p):

2021-04-28 23:14:35 151

原创 xihuan

c++ 并行编程 memory_order一.如果只是简单地解决在多线程中对共享资源的读写并发问题,只需要用C++以下内容: 线程类 thread, 原子数据类模板 atomic t, 互斥 mutex, 锁 lock, 条件变量 condition_variables.二.在此基础上,如果想在并行编程中获得更好的性能,尤其当使用的是一些弱内存顺序的平台(比如PowerPC)的话,设定原子操作间的...

2021-04-27 18:43:01 112

原创 python2 UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in ordinal not in

python2 控制台报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)解决办法import sysreload(sys)sys.setdefaultencoding("utf8")sys.stdout.encodingsys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

2021-04-25 00:35:48 305

原创 python单例模式

class Singleton(type): def __init__(self, *args, **kwargs): self.__instance = None super(Singleton, self).__init__(*args, **kwargs) def __call__(self, *args, **kwargs): if self.__instance is None: self.__instance = super(Singleton, s

2021-04-16 15:28:06 98

原创 python协程

协程,又称微线程,纤程。英文名Coroutine。协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用。子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。所以子程序调用是通过栈实现的,一个线程就是执行一个子程序。子程序调用总是一个入口,一次返回,调用顺序是明确的。而协程的调用和子程序不同。协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回

2021-04-15 22:08:51 104

原创 python with 语法糖通过contexlib实现

#coding=UTF-8import loggingfrom tensorflow.python.framework import deviceimport functoolsimport siximport abcclass Test(object): def __init__(self): print("hello") def __enter__(self): print("enter") def __exit__(self, exc_type, exc_

2021-04-15 21:48:46 206

原创 Makefile $<、$@、$^

详细参考:https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.htmlTARGET = pgOBJS = main.oCC = gccCFLAGS = -Wall -D_GNU_SOURCELDFLAGS = -pthreadall: $(TARGET)$(TARGET): $(OBJS) $(CC) $(OBJS) $(LDFLAGS) -o $(TARGET)%.o: %.c $(

2021-04-15 21:32:36 159

wu-video-js-5.20.1 2.zip

video-js js RTMP video-js js RTMP video-js js RTMP

2019-11-22

ViewWizard

获取窗口的类名和Title.可以使用ViewWizard获取窗口的类名和Title.

2018-10-22

jperf 流量带宽监测

java 实现的perf 流量带宽监测,有图形界面,方便操作。

2017-12-04

PIL win64 for python2.7

python的图形库PIL的windows 64 版本的库,本应该是免费的,但是好像没有免费的选项上传。

2017-12-01

PILwin32 For python 2.7

PILwin32 For python 2.7这是PIl 的32位版本下载。同样的还有64位版本的下载,清参考博客的另一个资源。

2017-12-01

McGrawHill_-_Machine_Learning_-Tom_Mitchell课后答案

McGrawHill Machine Learning Tom_Mitchell 课后完整版答案

2016-04-25

最快搜索kd树

一种最快的搜索kds树的实现,时间搜索的效率更高

2014-12-25

线段树的一种实现

一种简单的线段树的实现 ,基础功能比较完善

2014-12-25

全面的kd搜索树

一种功能实现全面的kd搜索树,简单灵活,容易使用

2014-12-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除