- 博客(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
McGrawHill_-_Machine_Learning_-Tom_Mitchell课后答案
2016-04-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人