linux标准输入/输出/错误及重定向

标准输入/输出/错误

linux下每个进程在运行的过程中都会打开一系列的文件,可以通过lsof -p $pid来查看进程号为pid打开的文件,在/proc/pid/fd/下是该进程打开的文件的链接。其中有三个比较特殊的文件是每个进程都会打开,其文件描述符分为0,1,2,默认分别链接到标准输入(STDIN_FILENO)设备(/dev/stdin)、标准输出(STDOUT_FILENO)设备(/dev/stdout)、标准错误(STDERR_FILENO)(/dev/stderr)设备。

进程在运行的过程中默认情况下产生的输出会写到stdout文件,产生的错误信息写到stderr文件,默认这两个文件会链接到屏幕设备,许多进程从标准输入stdin获取输入,默认链接为键盘设备。如果更改这几个文件的链接位置,就可以实现对其他文件的输入输出。

更换标准输入/输出/错误

NetworkManager 管理网卡设备

linux将物理网络设备抽象为interface,屏蔽了物理网络设备的多样性,通过驱动程序检测固件信息在linux内核中登记,在数据包收发时通过interface进行交互。网络管理工具包括network服务,NetworkManager服务,ipconfig服务、netstat服务等。在REHL8/centos8中弃用了之前版本中网络管理的network服务,使用NetworkManager服务替代。

NetworkManager主要管理两类对象:connection(网卡连接配置)和device(网卡设备),device对应的是interface,而connection是供设备使用的配置,二者是多对一的关系,但同时只有一个connection对象生效,其中配置文件依然默认存放在/etc/sysconfig/network-scripts/下,配置方式有两种:

  1. 通过nmcli connection add命令配置,会自动生成配置文件;
  2. 手动配置ifcfg文件,通过nmcli connection reload来使其生效;
  3. 阅读全文 »

n-gram

n-gram

基本原理

N-gram是一种简单的语言模型,在一些NLP任务中,我们需要判断一句话出现的概率是多少,即这句话是不是符合人的说话习惯,这时就可以利用到N-gram。例如在搜索引擎中输入一个词语,下面会出现多个扩展词条,这种功能其实就可以通过N-gram实现。

N-gram的数据模型很简单,就一条数学表达式:

p(s)=p(w1,w2,...,wT)=p(w1)p(w2w1)p(w3w1,w2)...p(wtw1,w2,...,w(T1))p(s) = p(w_1, w_2, ..., w_T) = p(w_1)p(w_2|w_1)p(w_3|w_1,w_2)...p(w_t|w_1,w_2,...,w_(T-1))

阅读全文 »

TF-IDF/BM25

TF-IDF

TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

TF-IDF的主要思想是:如果某个单词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类

TF(Term Frequency)

词频(TF):表示词条(关键字)在文本中出现的频率,这个数字通常会被归一化(一般是词频除以文章总词数), 以防止它偏向长的文件。

阅读全文 »

向量引擎vearch

vearch基于Faiss实现,但 Faiss 本身只是一个能够单机运行的支持各种向量检索模型的机器学习算法基础库,不支持分布式、实时索引和检索,同时也不支持标量字段的存储和索引等等。

主要应用场景:

  1. 图像/视频/音频检索和去重;
  2. 安防领域视频智能监控;
  3. 阅读全文 »

【Pytorch】使用笔记

1. Pytorch环境

Pytorch的官方教程很详细,https://pytorch.org/,直接按照自己的环境安装对应的环境即可。

安装GPU版本的需要安装CUDA,https://developer.nvidia.cn/cuda-toolkit-archive这里可以下载以前的版本,不要装最新的,因为pytorch可能还没有对应的最新的版本。

2. tensor

阅读全文 »

【python】logging库

日志等级

日志等级(level):DEBUG/INFO/WARNING/ERROR/CRITICAL

开发和部署时可以使用DEBUG或INFO级别的日志获取尽可能详细的日志信息来进行开发和部署调试;应用上线或部署生产环境,应该使用更高级别的日志来降低机器的I/O压力。

使用方式

    阅读全文 »

【go】channel原理

channel实现原理

协程A在执行过程中创建了子协程A1,A2... An,然后等待子协程执行完后退出,那么可以通过以下方式完成对子协程的控制:

  1. 使用channel控制子协程
  2. waitGroup信号量机制控制子协程
  3. 阅读全文 »