docker基础命令 镜像相关docker search 搜索镜像查找自己想要的镜像。使用方法:➜ ~ docker search --helpUsage: docker search [OPTIONS] TERMSearch the Docker Hub for imagesOptions: -f, --filter filter Filter output based on conditions provided --format string Pretty-print sea
python 使用matplotlib保存图片不清晰 在使用python中的matplotlib保存图片时,一般保存为jpg/png等格式,然而这几种格式中的图插入到Word里面后,放大看还是会变模糊,即使调高dpi也没啥用。对于写论文来说,还是插入emf比较好。但是matplotlib又不能保存emf格式,这该咋办?先使用matplotlib将图片存为svg格式,然后使用在线svg转emf工具将其转换为emf即可。但是我发现使用这个工具转换后的图片,色调与原来不太一样,比如我原图中设置的alpha=0.8,但是转换后的图片感觉更像是alpha=1时画出来的
TensorFlow Keras安装 首先按照Anaconda这里安装Anaconda3 64bit创建TensorFlow2.2的环境打开Anaconda Prompt,输入:conda create -n TF2.2 python=3.7提示选择y/n?选择y输入下面的命令进入TF2.2的环境conda activate TF2.2安装cudatoolkit10.1conda install cudatoolkit=10.1安装cudnn7.6conda install cudnn=7.6如果安装cud
sublime text3设置vim,如何在sublime中使用vim的命令 vim的插入模式感觉不太好用,如果能把sublime和vim结合一下就好了,有没有办法实现呢?有!打开sublime->Preferences->Settings将Preferences.sublime-settings–User设置里面的Vintage删除,然后保存就可以了。回到sublime,按下ESC,可以发现左下角出现:COMMAND MODE然后就可以用vim的操作了~...
FUNcube卫星数据爬取 爬取页面:FUNcube-1 (AO-73) Realtime Data先看网页的源代码:<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <title>FUNcube-1 · AMSAT-UK Data Warehouse</title> <meta charset="utf-8"> <meta name="view
leetcode多线程合集 1114. 按序打印与1116题类似,使用condition_variable.class Foo {public: Foo() { } mutex mtx; atomic<int> g{1}; condition_variable cv; void first(function<void()> printFirst) { unique_lock<mutex> lck(mtx);
wget批量下载 学习linux内核完全注释,需要下载源码,位于网站linux-0.12源码。使用wget命令批量下载所有的源代码:wget -x -r -l0 --no-parent http://www.oldlinux.org/Book-Lite/linux-0.12/-x 表示强制建立目录;-r 表示递归下载;最大递归深度 (inf 或 0 代表无限制,即全部下载)。-l0 表示递归的等级,0表示递归到所有子目录;--no-parent 表示不追溯至父目录,即不下载父目录中的文件;另外:-nd,
《剑指Offer》字符流中第一个不重复的字符 实现下面两个函数,Insert函数插入一个字符,FirstAppearingOnce函数返回数据流中第一个出现的字符。class Solution{public: //Insert one char from stringstream void Insert(char ch) { } //return the first appearence once char in current stringstream char FirstAppear.
LeetCode716:最大栈 这是一道被锁住的题,需要LeetCode会员才能做。还好lintcode上也有。最大栈分析:前4个操作比较简单,最难处理的是第5个操作。思路:1.可以使用两个栈,但是这样的复杂度为O(n),不太好。2.使用list+map,list中存放数据,map中存放值以及值对应的所有迭代器的集合,迭代器的集合使用vector存储,vector尾部的迭代器为当前值对应的最靠近栈顶的迭代器,那么我们在删除栈中最靠近栈顶的最大元素时,只需要获得最大值对应vector的最后一个元素(迭代器),然后在list和ve
groupcache源码分析一:LRU 1.LRU简介LRU(Least Recently Used)是一种缓存淘汰策略.受内存大小的限制,不能将所有的数据都缓存在内存中,当缓存超过规定的容量时,再往里面加数据就要考虑将谁先换出去,即淘汰掉.LRU的做法是:淘汰最近最少使用的数据.LRU可以通过哈希表+双向链表实现,双向链表的每个结点中存储{key,value},哈希表中存储{key,key所在的结点}.具体实现可参考:leetcode146——LRU 缓存机制内存结构示意图LRU最主要的两个操作为get和put(或add),其中g
go中的list 1.结点Element1.1 结点结构// Element is an element of a linked list.type Element struct { // Next and previous pointers in the doubly-linked list of elements. // To simplify the implementation, internally a list l is implemented // as a ring, such that &
C++的构造函数和赋值运算符们/移动构造函数 C++都有哪些构造函数?普通的构造函数、拷贝构造函数、移动构造函数、委托构造函数。#include <iostream>using namespace std;class A{public: int x, y; //默认构造函数 A() {} //带参数的构造函数 A(int x) : x(x) { cout << "constructor" &l...
shared_ptr的实现 自己实现一个shared_ptr,比较简洁,只是有个样子罢了。template<typename T>class shared_ptr{private: T* _ptr; int* _pcnt;public: shared_ptr(T* p) : _ptr(p), _pcnt(new int(1)) {} //拷贝构造函数 shared_ptr(co...
redis源码注释七:数据库db.c 0. 本文要点主要讲和Redis 数据库的构造和实现。1)数据库如何存储对象?redisDb数据库结构体2)数据库中键的操作3)键的过期时间4)过期键的处理5)过期键与AOF和RDB1. 数据库结构体typedef struct redisDb { dict *dict; /* The keyspace for this DB */ //数据...
redis源码注释六:对象系统 1. 对象类型和内部编码我们之前分析了几种redis底层的数据结构,包括简单字符串、双端链表、字典、跳表、整数集合、压缩列表等,这些还不是redis的对象类型,redis的对象类型总共包含5种,分别是字符串、列表、集合、有序集合、哈希,在server.h中定义。/* The actual Redis Object */#define OBJ_STRING 0 /* String obj...
redis源码注释五:整数集合intset.c intset.h 0. 源码注释位置1. 何为整数集合整数集合,顾名思义,是整数的集合,用于实现redis中的set,redis中的set也可以通过哈希表实现,为什么要有整数集合呢?这里考虑的是省内存,整数集合在数据量较小的情况下会占用更少的内存。内存映射数据结构是一系列经过特殊编码的字节序列,创建它们所消耗的内存通常比作用类似的内部数据结构要少得多,如果使用得当,内存映射数据结构可以为用户节省大量的内存...
redis源码注释四:跳表 0. 跳表0.1 简介跳跃表(skiplist)是一种随机化的数据,由William Pugh 在论文《Skip lists: a probabilisticalternative to balanced trees》中提出,这种数据结构以有序的方式在层次化的链表中保存元素,它的效率可以和平衡树媲美——查找、删除、添加等操作都可以在对数期望时间下完成,并且比起平衡树来说,跳跃表的实现要...
redis源码注释三:字典dict.c dict.h 1. dict简介redis的字典是使用哈希表实现的,存储key-value,每个字典有两个哈希表,0号哈希表(ht[0])是字典主要使用的哈希表,而1号哈希表(ht[1])则只有在程序对0号哈希表进行rehash时才使用。哈希表采用拉链式,当链比较长(或者比较短)的时候就要进行rehash,尽量使得大小和保存的结点数比例维持在1:1左右。如果不满足就要进行rehash,即哈希表的扩容和缩容。...
redis源码注释二:简单字符串sds.c sds.h 1. sds(Simple Dynamic String)简介sds(Simple Dynamic String)简单动态字符串。redis没有直接用char*,而是使用sds替代char*。为什么不用char*呢,只要有以下考虑:因为char* 类型的功能单一,抽象层次低,并且不能高效地支持一些Redis 常用的操作(比如追加操作和长度计算操作),所以在Redis 程序内部,绝大部分情况...