top

Linux 常用命令

陌路散爱 提交于 2019-12-12 06:06:01
Linux系统查看硬件信息命令总结 lscpu lscpu命令能够查看 CPU 和处理单元的信息,该命令没有任何其他选项或者别的功能。 lspci lspci可以用来列出所有的 PCI 总线,还有与 PCI 总线相连的设备的详细信息,比如 VGA 适配器、显卡、网络适配器、usb 端口、SATA 控制器等。 lspci 可以通过运行下面的命令来过滤出特定设备的信息,例如关于显卡信息: lspci -v | grep "VGA" -A 12 lshw lshw是一个通用的工具,可以列出多种硬件单元的详细或者概要的信息,比如 CPU、内存、usb 控制器、硬盘等。lshw能够从各个“/proc”文件中提取出相关的信息。 lshw -short lsscsi 通过运行下面的命令可以列出像硬盘和光驱等 scsi/sata 设备的信息: lsusb lsusb命令能够列出 USB 控制器和与 USB 控制器相连的设备的详细信息。默认情况下,lsusb命令只打印出概要信息,可以通过使用-v参数打印每一个usb端口的详细信息。 inxi inxi是一个 bash 脚本,能够从系统的多个来源和命令获取硬件信息,并打印出一个非技术人员也能看懂的友好的报告。 默认情况下,Ubuntu 上没有安装inxi。可以通过运行下面命令来安装Inxi: sudo apt-get install inxi

线上Web应用故障排查之高CPU占用

匆匆过客 提交于 2019-12-10 16:38:20
故障描述 Web服务启动之后,服务器CPU使用率瞬间飙升到90%。此时接口服务频繁超时。 故障处理 由于短时间无法定位和修复问题,以免影响终端用户操作体验,采取了回滚操作。 故障问题分析 一般一个应用CPU使用率很高,通常都是由于程序中的死循环引起的。 故障问题定位过程 ####1、使用 top 命令查看占用 CPU 较高的进程 可以看到 PID 为 26484 这个进程的 CPU 占用率最高。 ####2、定位具体进程 使用 'ps aux | grep 26484' 或 'ps -ef | grep 26484' 命令,定位到具体的进程 ####3、查看进程下的线程 CPU 占用情况 使用 'ps -mp 26484 -o THREAD,tid,time | sort -rn' 命令打印出该进程下的线程占用 CPU 情况 可以看到 TID 为 26762 的这个线程占用 CPU 最高 ####4、线程 ID 转换为 16 进制格式 使用 'printf "%x\n" 26762' 命令将线程 ID 转换为 16 进制格式, 以方便下一步查询线程堆栈信息 ####5、查看线程堆栈信息 使用 'jstack 26484 |grep 688a -A 30' 命令打印出高 CPU 占用的线程 26762 的堆栈信息, 如下: 从上面的输出结果就可以定位到具体出问题的代码,

Linux top命令详解

白昼怎懂夜的黑 提交于 2019-12-10 16:20:14
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 第一行,任务队列信息,同 uptime 命令的执行结果 系统时间:07:27:05 运行时间:up 1:57 min, 当前登录用户: 3 user 负载均衡(uptime) load average: 0.00, 0.00, 0.00 average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了 第二行,Tasks — 任务(进程) 总进程:150 total, 运行:1 running, 休眠:149 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie 第三行,cpu状态信息 0.0%us【user space】— 用户空间占用CPU的百分比。 0.3%sy【sysctl】— 内核空间占用CPU的百分比。 0.0%ni【】— 改变过优先级的进程占用CPU的百分比 99.7%id【idolt】— 空闲CPU百分比 0.0%wa【wait】— IO等待占用CPU的百分比 0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比 0.0%si

旧街凉风 提交于 2019-12-09 17:10:47
栈概念 栈是一个有用的数据结构,它就像摞在一起的盘子。 可以放一个新盘子到顶部 从顶部移除一个盘子 如果放盘子到底部,必须首先移除所有盘子,这种方法叫做Last In First Out,最后放的盘子要首先移除。 在编程中的栈 在编程中,放一个元素叫做push,移除一个元素叫做pop。 尽管2最后放进去,但是首先移除,遵循LIFO原则。 尽管可以使用C,C++,Java,Python,C#实现栈,但是原理都是相同的。 栈操作 栈是一个对象或者是一个抽象数据结构(ADT),允许下面的操作: push:添加元素到栈 pop:从栈中移除元素 IsEmpty:检查栈是否为空 IsFull:检查栈是否满 Peek:得到栈的顶部元素,但是不移除 栈工作原理 一个TOP的指针指向栈的顶部元素 当初始化栈时,设置TOP的值为-1,检测栈是否为空(TOP == -1) 当添加元素后,我们增加TOP的值,TOP指向新元素的位置 当移除元素时,返回TOP指向元素的值,并减少TOP的值 在push之前,首先检测栈是否满 在pop之前,首先检测栈是否空 实现栈 大部分栈使用arrays实现,但是也可以使用lists实现。 C语言实现 #include<stdio.h> #include<conio.h> #include<stdlib.h> #define MAX 10 struct stack { int

海量数据——TopK问题

为君一笑 提交于 2019-12-08 18:33:45
TopK 问题是一个经典的海量数据处理问题,比如微博热搜每隔10分钟都会更新出排行前10的热门搜索信息,再或者通过大数据找出一个地区最爱吃的水果等,都可以使用TopK问题来解决,其核心思想就是最小堆的引入。 TopK问题分析 在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常被称为TopK问题。 下面我们通过一个简单的例子来说明:假如面试官给你100W个数据,请找出其最大的前K个数,而且现在只有1M的空间? 在32位操作系统中,默认一个字节为4个字节,则有下列运算: NeedSize = 100W * 4 / 1024 /1024 = 4M 计算结果大约等于4M,很显然1M的空间根本不够。也就是说,即使用最复杂的方法你也无法找到一个合适的空间来存储,因此引入了最小堆数据结构。 下面我只说实现的核心思路,对此有不理解的请查看最大堆和最小堆的相关性质。思路如下: (1)定义两个数组,arr用于存储海量数据,top用于存储最小堆(底层可以借助vector) (2)将海量数据的前K个元素先填满top堆 (3)调整top堆为最小堆结构 (4)通过遍历将新数据与堆顶元素(此时堆顶元素是堆里最小的数据)进行比较,大于堆顶就入堆,并向下调整堆结构 (5)遍历结束,则堆中的元素即n个数中最大的前K个 //TopK.h #pragma once #include

HTML5 移动端 实现九宫格碰撞

怎甘沉沦 提交于 2019-12-08 02:15:25
九宫格碰撞 getClientRects()方法 返回值是一个 DOMRect 对象,这个对象是由该元素的 getClientRects() 方法返回的一组矩形的集合, 即:是与该元素相关的CSS 边框集合 。DOMRect 对象包含了一组用于描述边框的只读属性——left、top、right和bottom,单位为像素。除了 width 和 height 外的属性都是相对于视口的左上角位置而言的。 相关代码: <!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < title > </ title > < style type = "text/css" > * { margin : 0 ; padding : 0 ; } #box { position : absolute ; width : 100 px ; height : 100 px ; background-color : yellowgreen ; z-index : 2 ; } #wrap { position : absolute ; top : 200 px ; left : 400 px ; width : 300 px ; height : 200 px ; background-image : url(img/b.jpg) ;

HTML5 移动端 实现滚动条

谁说我不能喝 提交于 2019-12-08 02:14:47
实现滚动条 相关代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } html,body{ height: 100%; overflow: hidden; } #wrap{ position: absolute; top: 0; right: 0; width: 20px; height: 100%; background-color: #9ACD32; } #inner{ position: absolute; top: 0; left: 0; width: 100%; background-color: chocolate; } #content{ position: absolute; } </style> </head> <body> <div id="content"></div> <div id="wrap"> <div id="inner"></div> </div> </body> <script type="text/javascript"> var inner=document.getElementById('inner'); var content=document

Docker registry

二次信任 提交于 2019-12-07 12:53:24
公司自己的项目肯定少不了搭建私有的docker镜像管理平台,这里记录一下registry搭建过程。 一、简单搭建 1、docker 运行 registry mkdir -p /data/registry #创建文件夹docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry --restart=always --name registry registry:2 2、上传 docker pull nginx #拉取nginx docker tag nginx localhost:5000/nginx:v1.0 #标记nginx docker push localhost:5000/nginx:v1.0 #发布到Registry中 3、查看Registry中的镜像 curl http://localhost:5000/v2/_catalog 4、拉取和使用 docker images #查询docker中所有镜像 docker rmi localhost:5000/nginx:v1.0 nginx #删除镜像 docker pull localhost:5000/nginx:v1.0 #拉取刚刚上传的镜像 docker run -d --name myNginx -p 8081:80 localhost:5000

【BZOJ1095】【ZJOI2007】捉迷藏

邮差的信 提交于 2019-12-07 11:25:47
前言 好恶心的一道题,代码写了2.5h,调试调了5h+,局部重构了n遍。 题意 一棵树上的节点有黑白两色,初始为黑,支持修改颜色,查询最远黑点对。$n<=10^5,m<=5*10^5$ 题解 ver 1 先考虑查询,可以在每个点保存一个堆s1存储子树内到这个点的路径。 再维护一个全局堆,把每个点的【最大和次大的值的和】放入堆内。 查询时直接取出堆顶。 ver 2 然后你发现你遇到了这种情况(1-2的路径被重复走了) 于是在每个点再开一个新的堆s2储存它的子数内到父亲的路径。 每个点的s1从儿子的s2.top()中取得。 这样每个点只会对父亲做一次贡献(这好像是一个常见的套路) 要修改的话就从这个点开始一直往父亲走,在走的时候顺便更新(具体看代码中的on和off) ver 3 然后你发现你的代码时空复杂度都是$O(n^2)$的 于是用点分治重构树,这样树高就是$O(logn)$,空间复杂度均摊就是$O(n*logn)$的了。 这样求距离就要用lca了,时间复杂度$O(n*logn^2)$。 注意一定要用堆,平衡树会超时 (我在这调了2h+) 这里用到了一个小技巧:可删除任意元素的堆。 具体就是对于每个堆再维护一个堆用于存储要删除的节点。 在取top的时候看看top是否与删除堆的top相等,如相等,则删除这个top。 代码 //#pragma comment(linker, "

pycharm的快捷操作

帅比萌擦擦* 提交于 2019-12-06 12:23:20
Top #1重构一切:Ctrl+Shift+Alt+T Top #1自我修复:Alt+Enter Top #1智能补全:Ctrl+Shift+Space 太难割舍,前三名并列吧! Top #4创造万物:Alt+Insert Top #5自动完成:Ctrl+Shift+Enter Top #6无处藏身:Shift+Shift Top #7发号施令:Ctrl+Shift+A Top #8代码生成:Template/Postfix +Tab Top #9选你所想:Ctrl+W Top #10切来切去:Ctrl+Tab 参考学习:http://yangfangs.github.io/wiki/pycharm-Shortcut-key/ 参考学习:https://blog.csdn.net/weixin_41059146/article/details/78826163 来源: https://www.cnblogs.com/carey9420/p/11983431.html