用于创建,组织和共享实时丰富数据可视化的灵活工具。支持Python。

  • 概述
  • 概念
  • 设置
  • 用法
  • API
  • 注意事项
  • 贡献

API

要快速了解visdom的功能,请查看example目录,或阅读以下详细信息。

Visdom Arguments(仅限Python)

python visdom客户端有以下几种选择:

  • server:visdom服务器的主机名(默认值:'http://localhost')
  • port:visdom服务器的端口(默认值:8097)
  • base_url:基本visdom服务器url(默认:/)
  • env:没有提供env时要绘制的默认环境(默认是main)
  • raise_exceptions:失败时引发异常,而不是打印它们(默认值:"True"(性能好))
  • log_to_filename:如果不是全部,则将所有绘图和更新事件记录到给定文件中(附加模式),以便以后可以使用replay_log来重放它们(默认值:"None")
  • use_incoming_socket:启用套接字以从Web客户端接收事件,允许用户注册回调(默认值:"True")
  • http_proxy_host:已弃用。使用Proxies参数可获得完整的代理支持。
  • http_proxy_port:已弃用。使用Proxies参数可获得完整的代理支持。
  • username:用于验证的用户名,如果服务器以-enable_login开头(默认值:None)
  • password:用于验证的密码,如果服务器以-enable_login开头(默认:None)
  • proxies:字典映射协议,用于在每个请求上使用的代理URL(例如{http:foo.bar:3128})。(默认值:"无")
  • offline:标记为在脱机模式下运行visdom,在该模式下,所有请求都记录到文件而不是服务器上。需要设置"logtofilename"。在离线模式下,所有不创建或更新绘图的visdom命令都将简单地返回True。(默认值:"False")

其他选项当前未使用(端点,ipv6)或用于内部功能。

基本功能

Visdom提供以下基本的可视化功能:

  • vis.image:图片
  • vis.images:图像列表
  • vis.text:任意HTML
  • vis.properties:属性网格
  • vis.audio:音频
  • vis.video:视频
  • vis.svg:SVG对象
  • vis.matplot:matplotlib图
  • vis.save:序列化状态服务器端

绘图

我们包装了几种常见的绘图类型,以轻松创建基本的可视化效果。这些可视化由Plotly(https://plot.ly/)提供支持。

当前支持以下API:

  • vis.scatter:2D或3D散点图
  • vis.line:线图
  • vis.stem:stem图
  • vis.heatmap:热图
  • vis.bar:条形图
  • vis.histogram:直方图
  • vis.boxplot:箱线图
  • vis.surf:表面图
  • vis.contour:等高线图
  • vis.quiver:颤动图
  • vis.mesh:网格图

通用图

请注意,服务器API遵循"数据"和"布局"对象的Plotly约定,因此你可以产生自己的任意"Plotly"可视化效果:

import visdom
vis = visdom.Visdom()trace = dict(x=[1, 2, 3], y=[4, 5, 6], mode="markers lines", type='custom',marker={'color': 'red', 'symbol': 104, 'size': "10"},text=["one", "two", "three"], name='1st Trace')
layout = dict(title="First Plot", xaxis={'title': 'x1'}, yaxis={'title': 'x2'})vis._send({'data': [trace], 'layout': layout, 'win': 'mywin'})

其他

  • vis.close:按ID关闭窗口
  • vis.deleteenv:通过envid删除环境
  • vis.win_exists:通过ID检查窗口是否已存在
  • vis.getenvlist:获取服务器上所有环境的列表
  • vis.win_hash:获取窗口内容的md5哈希值
  • vis.getwindowdata:获取窗口的当前数据
  • vis.check_connection:检查服务器是否已连接
  • vis.replay_log:从提供的日志文件中重播操作

细节

基础内容

vis.image

该函数绘制一个"img"。它以CxHxW张量的img作为输入

支持以下opts:

  • jpgquality:JPG的质量(number 0-100)。如果已定义,图像将另存为JPG以减小文件大小。如果未定义,图像将另存为PNG。
  • caption:图片的标题
  • store_history:将所有图像存储在同一窗口中,并在底部附加一个滑块,使你可以选择要查看的图像。将新图像发送到具有历史记录的图像时,必须始终提供此选项。

注意你可以在图像窗格上使用alt查看光标的x/y坐标。你也可以按ctrl键滚动缩放,按住alt键滚动可以垂直平移,按住alt键滚动则可以水平平移。在窗格内双击以将图像恢复为默认值。

vis.images

此函数绘制"图像"列表。它需要一个输入"BxCxHxW"张量或一个"图像列表",且大小均相同。它使图像的尺寸为(B/nrow,nrow)。

支持以下参数和opts:

  • nrow:连续的图像数量
  • padding:在图片周围填充,在所有4条边均等填充
  • opts.jpgquality:JPG的质量(number 0-100)。如果已定义,图像将另存为JPG以减小文件大小。如果未定义,图像将另存为PNG。
  • opts.caption:图片的标题
vis.text

此函数在框中打印文本。你可以使用它嵌入任意HTML。它以"text"字符串作为输入。目前不支持特定的opts

vis.properties

此函数在窗格中显示可编辑的属性。属性应该是字典列表,例如:

    properties = [{'type': 'text', 'name': 'Text input', 'value': 'initial'},{'type': 'number', 'name': 'Number input', 'value': '12'},{'type': 'button', 'name': 'Button', 'value': 'Start'},{'type': 'checkbox', 'name': 'Checkbox', 'value': True},{'type': 'select', 'name': 'Select', 'value': 1, 'values': ['Red', 'Green', 'Blue']},]

支持的类型:

  • text:字串
  • number:十进制数字
  • button:标有"值"的按钮
  • checkbox:布尔值呈现为复选框
  • select:多个值选择框
    • value:所选值的ID(从零开始)
    • values:可能值的列表

在属性值更新时调用回调:

  • event_type:"PropertyUpdate"
  • propertyId:在properties列表中的位置
  • value:新值

目前不支持特定的opts

vis.audio

此函数播放音频。它以音频文件名作为输入文件或包含波形的"N"张量("Nx2"矩阵用于立体声音频)。该函数不支持任何特定于绘图的opts

支持以下opts:

  • opts.sample_frequency:采样频率(integer> 0;默认= 44100)

已知问题:Visdom使用scipy将张量输入转换为wave文件。一些已知版本的Chrome不能播放这些wave文件(Firefox和Safari可以正常工作)。

vis.video

此函数播放视频。它以视频的文件名作为输入video或LxHxWxC大小的张量包含视频的所有帧作为输入。函数不支持任何特定于绘图的opts

支持以下opts:

  • opts.fps:视频的FPS(integer> 0;默认= 25)

注意:使用tensor输入要求ffmpeg已安装并工作。你能否播放视频取决于你使用的浏览器:在OGG容器中支持Theano编解码器(Chrome支持此函数)。

vis.svg

该函数绘制一个SVG对象。它以SVG字符串svgstr或SVG文件svgfile的名称。该函数不支持任何特定的opts。

vis.matplot

此函数绘制Matplotlibplot。函数支持一个特定于绘图的选项:"可调整大小"。

注意:设置为"True"时,将使用窗格。你需要安装beautifulsoup4lxml软件包。

注意:matplot的渲染后端与绘图中的绘图不同,效率较低。使用过多的Matplot窗口可能会降低视觉效果。

vis.plotlyplot

该函数绘制一个Plotly图对象。它没有显式地采用选项,因为它假定你已经显式配置了图形的"布局"。

注意你必须安装"plotly"软件包才能使用此函数。通常可以通过运行"pip install plotly"来安装它。

vis.embeddings

此函数使用Barnes-Hut t-SNE算法)可视化一组特征。

该函数接受以下参数:

  • features:张量列表
  • labels:为features提供的张量的相应标签列表
  • data_getter = fn :(可选)一个函数,该函数将要素数组中的索引作为参数并返回张量的摘要表示。如果已设置,则还必须设置"data_type"
  • data_type = str :(可选),当前唯一可接受的值是"html"

目前,我们假设唯一标签的数量不超过10个,将来,我们希望为其他情况提供可选的颜色图。

在用户界面中,你还可以围绕特征子集绘制lasso(套索)。这将在所选子集上重新运行t-SNE可视化。

vis.save

此函数保存在visdom服务器上仍然有效的envs。它需要输入要保存的环境ID列表。

绘图

下面给出了有关绘图函数的更多详细信息。

绘制函数的输入有所不同,尽管大多数函数将包含数据的张量"X"和包含可选数据变量(例如标签或时间戳)的)张量"Y"(可选)作为输入。所有绘图函数均以可选的"win"作为输入,可用于绘制到特定窗口中。每个绘图函数还返回绘图窗口的"win"。还可以指定添加可视化效果的"env"。

vis.scatter

此函数绘制2D或3D散点图。它取一个Nx2或Nx3张量X作为输入,它指定了散点图中N个点的位置。一个包含范围在1到K之间的离散标签的可选的N个张量Y也可以指定,标签将反映在标记的颜色上。

更新可以用来有效地更新现有图的数据。使用'append'来添加数据,使用'replace'来使用新数据,或使用'remove'来删除由name指定的跟踪。如果不存在,使用update ='append'将创建一个图,否则将其追加到现有图上。如果要更新单个跟踪,请使用"name"指定要更新的跟踪的名称。全部为NaN的更新数据将被忽略(可用于屏蔽更新)。

支持以下opts:

  • opts.markersymbol:标记符号(string;默认='dot')
  • opts.markersize:标记大小(number;默认='10')
  • opts.markercolor:每个标记的颜色。(torch.* Tensor;默认=nil)
  • opts.legend:table包含图例名称
  • opts.textlabels:每个点的文本标签(list:默认 =None)
  • opts.layoutopts:图形后端接受布局的任何其他选项的字典。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
  • opts.traceopts:字典将跟踪名称或索引映射到图形后端接受的其他选项的字典。例如traceopts = {'plotly':{'myTrace':{'mode':'markers'}}}
  • opts.webgl:使用WebGL进行绘图("boolean";默认="false")。如果绘图包含太多点,则速度更快。谨慎使用,因为浏览器在单个页面上最多允许两个WebGL上下文。

opts.markercolor是具有整数值的张量。张量的大小可以为"N"或"Nx3"或"K"或"Kx3"。

  • 大小为N的张量:每个数据点的单个强度值。0=黑色,255=红色
  • 大小为"Nx3"的张量:每个数据点的红色,绿色和蓝色强度。0,0,0=黑色,255,255,255=白色
  • "K""Kx3"大小的张量:不是每个数据点都有唯一的颜色,而是为特定标签的所有点共享相同的颜色。
vis.line

此函数绘制线图。它以一个NNxM张量作为输入,"Y"指定"M"行的值(连接"N"个点)绘图。它还需要一个可选的X张量来指定相应的x轴值;X可以是N张量(在这种情况下线将共享相同的x轴值)或具有与"Y"相同的尺寸。

更新可以用来有效地更新现有图的数据。使用'append'附加数据,'replace'使用新数据,或'remove'删除由name指定的跟踪。如果要更新单个跟踪,请使用"名称"指定要更新的跟踪的名称。全部为NaN的更新数据将被忽略(可用于屏蔽更新)。

支持以下opts:

  • opts.fillarea:填充线以下的区域(boolean)
  • opts.markers:显示标记(boolean;默认=false)
  • opts.markersymbol:标记符号(string;默认='dot')
  • opts.markersize:标记大小(number;默认='10')
  • opts.linecolor:线条颜色(np.array;默认=None)
  • opts.dash:每行的行破折号类型(np.array;默认='solid'),为soliddashdashdotdash之一,大小应与画线
  • opts.legend:table包含图例名称
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
  • opts.traceopts:dict将跟踪名称或索引映射到plot.ly接受的其他选项的dict
  • opts.webgl:使用WebGL进行绘图("boolean";默认="false")。如果绘图包含太多点,则速度更快。谨慎使用,因为浏览器在单个页面上最多允许两个WebGL上下文。
vis.stem

此函数绘制stem图。它以一个NNxM张量作为输入X,它指定M时间序列中N点的值。可以指定一个可选的包含时间戳的NNxM张量Y以及如果YN张量,则所有M时间序列都假定为具有相同的时间戳。

支持以下opts:

  • opts.colormap:颜色图(string;默认='Viridis')
  • opts.legend:table包含图例名称
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.heatmap

此函数绘制热图。它以一个NxM张量X为输入,指定热图中每个位置的值。

支持以下opts:

  • opts.colormap:颜色图(string;默认='Viridis')
  • opts.xmin:剪辑最小值(number;默认=X:min())
  • opts.xmax:剪辑最大值(number;默认=X:max())
  • opts.columnnames:table包含X轴标签
  • opts.rownames:包含y轴标签的table
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
  • opts.nancolor:用于绘制NaNs的颜色。如果为"None",则将"NaN"绘制为透明。(string;默认=None)
vis.bar

此函数绘制规则的,堆叠的或分组的条形图。它需要输入一个NNxM张量X来指定每个条形。如果"X"包含"M"列,则对应于每一行的值是堆叠还是分组(取决于"opts.stacked"的方式)。除了X,还可以指定一个(可选的)N张量Y。包含相应的x轴值。

当前支持以下特定于图的opts:

  • opts.rownames:table包含x轴标签
  • opts.stacked:在X中堆叠多列
  • opts.legend:包含图例标签的table
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.histogram

此函数绘制指定数据的直方图。它作为输入一个N张量X来指定要构造其的数据直方图。

当前支持以下特定于图的opts:

  • opts.numbins:箱数(number;默认=30)
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.boxplot

此函数绘制指定数据的箱形图。它作为输入,一个"N""NxM"张量"X",用于指定其中的"N"个数据值来构造"M"箱形图。

当前支持以下特定于图的opts:

  • opts.legend:X中每个列的标签
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.surf

此函数绘制表面图。它以一个NxM张量X为输入。它指定表面图中每个位置的值。

支持以下opts:

  • opts.colormap:颜色图(string;默认='Viridis')
  • opts.xmin:剪辑最小值(number;默认=X:min())
  • opts.xmax:剪辑最大值(number;默认=X:max())
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.contour

此函数绘制轮廓图。它以一个NxM张量X为输入。它指定等高线图中每个位置的值。

支持以下opts:

  • opts.colormap:颜色图(string;默认='Viridis')
  • opts.xmin:剪辑最小值(number;默认=X:min())
  • opts.xmax:剪辑最大值(number;默认=X:max())
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.quiver

该函数绘制一个抖动图,其中箭头的方向和长度由NxM张量Xy决定。可以提供两个可选的NxM张量gridX和gridY,指定箭头的偏移量;默认情况下,箭头将在常规网格上显示。

支持以下opts:

  • opts.normalize:最长箭头的长度(number)
  • opts.arrowheads:显示箭头(boolean;默认=true)
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
可见网格

此函数从一组顶点中定义的一组顶点绘制网格图"Nx2""Nx3"矩阵"X",以及在可选"Mx2""Mx3"矩阵Y。

支持以下opts:

  • opts.color:颜色(string)
  • opts.opacity:多边形的不透明度("number"介于0和1之间)
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
自定义图

绘图功能采用可选的opts表作为输入,可用于更改(通用或特定于绘图的)绘图属性。所有输入参数都在一个表中指定;输入参数根据输入表中的键进行匹配。

下列opts是通用的,因为它们对于所有可视化都是相同的(plot.image,plot.text,plot.video和plot.audio除外):

  • opts.title:图形标题
  • opts.width:图形宽度
  • opts.height:图形高度
  • opts.showlegend:显示图例("true"或"false")
  • opts.xtype:x轴的类型('linear''log')
  • opts.xlabel:x轴的标签
  • opts.xtick:在x轴上显示刻度(boolean)
  • opts.xtickmin:x轴上的第一个刻度(number)
  • opts.xtickmax:x轴上的最后一个刻度(number)
  • opts.xtickvals:x轴上的刻度线位置("number" s的"table"表)
  • opts.xticklabels:勾选x轴上的标签(strings的table)
  • opts.xtickstep:x轴刻度之间的距离(number)
  • opts.xtickfont:x轴标签的字体(字体信息的字典(https://plot.ly/javascript/reference/#layout-font))
  • opts.ytype:y轴的类型('linear''log')
  • opts.ylabel:y轴的标签
  • opts.ytick:在y轴上显示刻度(boolean)
  • opts.ytickmin:y轴上的第一个刻度(number)
  • opts.ytickmax:y轴上的最后一个刻度(number)
  • opts.ytickvals:y轴上的刻度位置(number类型的s的table)
  • opts.yticklabels:在y轴上打勾标签(string类型的s的table)
  • opts.ytickstep:y轴上刻度线之间的距离(number)
  • opts.ytickfont:y轴标签的字体(字体信息的字典(https://plot.ly/javascript/reference/#layout-font))
  • opts.marginleft:左边距(以像素为单位)
  • opts.marginright:右边距(以像素为单位)
  • opts.margintop:上边距(以像素为单位)
  • opts.marginbottom:底边距(以像素为单位)

其他选项是特定于可视化的,并在API手册中进行了描述。

其他

vis.close

此函数关闭特定的窗口。它需要输入窗口ID"win"和环境ID"eid"。使用win作为None关闭环境中的所有窗口。

vis.delete_env

此函数将完全删除指定的环境。它需要env ideid作为输入。

注意:delete_env删除环境中的所有数据,并且是不可撤销的。除非绝对要删除环境,否则请勿使用。

vis.fork_env

此函数派生类似于UI功能的环境。

参数:

  • prev_eid:我们要fork的环境ID。
  • eid:将用fork创建的新环境ID。

注意:fork_env如果不存在的env被fork,则会发生异常。

vis.win_exists

该函数返回一个布尔值,指示服务器上是否已经存在窗口"win"。如果出现问题,则返回None。

可选参数:

  • env:搜索窗口的环境。默认为None
vis.getenvlist

此函数在调用时返回服务器上所有环境的列表。它不带参数。

vis.win_hash

如果服务器上存在窗口"win"的内容,则此函数返回md5哈希值。否则返回None。

可选参数:

  • env:搜索窗口的环境。默认为None
vis.getwindowdata

此函数返回给定窗口的窗口数据。如果win为None,则返回环境中所有窗口的数据。

参数:

  • env:搜索窗口的环境。
  • win:要为其返回数据的窗口。设置为"无"以检索环境中的所有窗口。
vis.check_connection

此函数返回布尔值,指示是否已连接服务器。它接受可选参timeout_seconds数秒以等待服务器启动。

vis.replay_log

此函数获取虚拟日志的内容,并将其重播到当前服务器以恢复状态或处理所有丢失的条目。

参数:

  • log_filename:重播日志文件的内容。

许可

visdom的许可是LICENSE文件中的Creative Commons Attribution-NonCommercial 4.0 International Public许可。

关于Lua Torch支持的注意事项

v0.1.8.4之后,不再支持Lua Torch。如果你想使用Torch支持,则需要下载该版本。你可以在此处按照使用说明进行操作,但不再受正式支持。

贡献

请参阅在CONTRIBUTING.md的贡献

致谢

Visdom受到display之类的工具的启发,并依赖Plotly(https://plot.ly/)作为绘图前端。

欢迎关注磐创博客资源汇总站:http://docs.panchuang.net/

欢迎关注PyTorch官方中文教程站:http://pytorch.panchuang.net/

OpenCV中文官方文档:http://woshicver.com/

Visdom 介绍 | 二相关推荐

  1. visdom介绍(一)

    目录 1.概述 2.安装启动 3.初始化参数 4.是否成功连接 5.判断viz实例是否成功 6.关闭visdoms实例 7.重新初始化 8.使用示例 1.概述 visdom旨在促进(远程)数据的可视化 ...

  2. 蒙特卡罗方法介绍( 二)

    蒙特卡罗方法介绍( 二) 一.蒙特卡罗求解定积分 蒙特卡洛方法求解定积分有两种方法,一种是上一节中讲的投点法,另外一种是期望法(也称平均值法). 1.1 投点法 给出如下曲线f(x)f(x)f(x), ...

  3. Python Pillow(PIL)库的用法介绍(二)

    Python Pillow(PIL)库的用法介绍(二) 在上一篇文章中介绍了Pillow库的一些基本用法,参考:https://blog.csdn.net/weixin_43790276/articl ...

  4. Lucene.Net 2.3.1开发介绍 —— 二、分词(一)

    原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(一) Lucene.Net中,分词是核心库之一,当然,也可以将它独立出来.目前Lucene.Net的分词库很不完善,实际应用价值不高.唯 ...

  5. abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二)

    abp(net core)+easyui+efcore实现仓储管理系统--解决方案介绍(二) 参考文章: (1)abp(net core)+easyui+efcore实现仓储管理系统--解决方案介绍( ...

  6. 尼康d850相机参数测试软件,新功能介绍二:景深合成与自动调焦_尼康 D850_数码影像评测-中关村在线...

    ·新功能介绍二:景深合成与自动调焦 对于D850来说,机身也加入了非常多的新功能,这里还逐一介绍一下.首先我们要说的机身的景深合成功能.什么是景深合成?相信很多朋友都了解,相机在很多环境下,景深太浅是 ...

  7. 企业级360°全方位用户画像:项目介绍[二]

    絮叨两句: 博主是一名软件工程系的在校生,利用博客记录自己所学的知识,也希望能帮助到正在学习的同学们 人的一生中会遇到各种各样的困难和折磨,逃避是解决不了问题的,唯有以乐观的精神去迎接生活的挑战 少年 ...

  8. 《C#零基础入门之百识百例》(五十二)封装介绍 -- 二维多项式求值

    C#零基础入门 面向对象 -- 封装介绍 -- 二维多项式求值 前言 一,封装概念 二,封装属性 三,实例练习 -- 二维多项式求值 3.1 题目描述 3.2 问题分析 3.3 参考代码 前言 本文属 ...

  9. C语言生成midi文件,介绍二个wave 转 midi的开源项目

    //lihaoyxj@gmail.com 在进行音频处理时,往往需要把wav数据转成其它格式,而作为音乐编辑类的软件,更多则是要以midi格式去处理. 在这里简单介绍二款开源的有关音频中和midi相关 ...

最新文章

  1. 无准备,不编程——计算机达人成长之路(15)连载
  2. 英国脱欧但网络安全领域重视未减
  3. web项目部署服务器后无响应,Spring4.1.0 - SpringMVC第一步,Tomcat服务器端正常,客户端无法响应JSP页面问题处理...
  4. css禁止鼠标双击选中文字
  5. 献给开发者的大礼--打造CSDN论坛专用阅读器(电脑报2006年11月6日 第44期)
  6. linux下仅仅有rman备份集的异机不同文件夹恢复
  7. httpclient 手写
  8. 【博客项目】—密码加密( 六)
  9. 【模型5.0】幸福sharp模型:让优势带动劣势
  10. python中shift函数_Pandas Shift函数的基础入门学习笔记
  11. java里面有radix树吗_基数树(radix tree)
  12. STC单片机驱动1.8‘TFT SPI屏幕示例模板(含资料包)
  13. win11安装后黑屏怎么解决
  14. PMPBOK6之项目管理的33个文件
  15. 打开excel,提示 flash play2 错误,解决办法
  16. Linux基础命令-pstree树状显示进程信息
  17. Codeforces Round #704 (Div. 2) A-E题解
  18. 集合—HashMap源码
  19. 论坛系统后端的设计与实现
  20. 20部经典电影的人生哲理

热门文章

  1. 解决在命令行中出现/usr/local/hadoop/libexec/hadoop-functions.sh: 行 1185: dirname: 未找到命令
  2. Airbnb房源信息爬取(一)——获取城市列表
  3. html响应式布局ipad,响应式布局(Responsive design)
  4. 华为海思芯片 网口烧录详解(翻遍全网资料 结合实际成功操作)
  5. Python 编辑器哪个好用
  6. Google 认证之GMS 认证
  7. FilterConfig的作用
  8. 超感猎杀/超感八人组第一季至二季/全集Sense8迅雷下载
  9. 分享143个ASP源码,总有一款适合您
  10. bashne java_bash脚本中 if 语句 和 for 语句使用方法