自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KjfureOne的专栏

linux之路

  • 博客(120)
  • 收藏
  • 关注

转载 监控某个进程的线程状态

问题: 我的程序在其内部创建并执行了多个线程,我怎样才能在该程序创建线程后监控其中单个线程?我想要看到带有它们名称的单个线程详细情况(如,CPU/内存使用率)。线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享 特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的IPC(进

2017-10-09 10:41:43 3614

原创 linux设备插拔

热插拔系统启动后插入的设备成为热插拔,内核检测到插拔事件后通过netlink(socket) 发送给守护进程udevd。冷插拔系统启动前插入的设备系统启动时,内核为所在的设备sys下创建uevent文件,并记录设备链信息,当udevd启动后,去读取设备链接信息,创建设备。

2017-08-31 20:00:05 8540

原创 构建Docker1

去docker hub注册REPOSITORY:仓库TAG      :镜像标签IMAGE ID  : 标识镜像 我的docker账号id:  kjfureemail: [email protected]构建1.查看$sudo docker imags$sudo docker imags ubuntu 2.从仓库拉取镜像$s

2017-08-26 17:28:32 482

转载 Docker 最初的2小时(Docker从入门到入门)

最初的2小时,你会爱上Docker,对原理和使用流程有个最基本的理解,避免满世界无头苍蝇式找资料。本人反对暴风骤雨式多管齐下狂轰滥炸的学习方式,提倡迭代学习法,就是先知道怎么玩,有个感性认识,再深入学习高级用法,深层原理,一轮轮迭代。坚决反对一上来就搞几百页厚的东西把人脑子弄乱。Docker是什么?KVM, Virtualbox, Vmware是虚拟出机器,让每个实例看

2017-08-25 17:56:24 727

转载 linux 查看文件命令od

从“读取二进制文件”出发,到od命令的使用在桃村实习期间,一直努力做毕业设计,我的毕业设计中有一个内容就是读取SEGY文件。在读取文件时,经常遇到的问题时你要读取浮点型数据,这时你就必须考虑你所使用的计算机CPU使用的是什么类型的浮点类型了?我遇到的是符点类型转换是IBM32浮点类型和IEEE浮点类型的转换问题,因为不知道我的CPU支持什么类型的float,所以打算做个测试。测试方法就

2017-08-25 10:17:50 763

原创 docker daemon

1.启动$sudo docker run--name mydocker1 -d ubuntu:14.10 /bin/bash -c "while true;do echo hellodocker;sleep 1;done" 2.查看log$sudo docker logs-t mydocker1$sudo docker logs--tail 10 -t mydocker1 

2017-08-19 16:03:08 478

原创 进入docker(2)

1.查看docker 运行状态 $sudo docker ps -adocker ps 2.添加一个名字$sudo docker run--name mydocker1 -it ubuntu:14.10 /bin/bash 3.启动docer$sudo docker startmydocer 4.进入docker$sudo dockerattach mydo

2017-08-18 16:00:17 284

原创 第一次进入docker

1.确认安装好docker$sudo docker info Containers: 0Images: 0Storage Driver: aufs RootDir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 0 Dirperm1 Supported: trueExecution Driver:

2017-08-17 17:46:09 478

原创 docker安装

安装记录 24  ls -l /sys/class/misc/device-mapper   25  sudo sh -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.li                                             st.d/docker.list"

2017-08-17 16:02:47 336

转载 linux内核中断

尽管有些设备仅通过它们的I/O寄存器就可以得到控制,但现实中的大部分设备却比这复杂一些。设备需要与外部世界打交道,如旋转的磁盘,绕卷的磁带,远距离连接的电缆等。这些设备的许多工作通常是在与处理器完全不同的时间周期内完成的,并且总是要比处理器慢。这种让处理器等待外部事件的情况总是不能令人满意,所以必须有一种方法可以让设备在产生某个事件时通知处理器,这种方法就是中断。在大多数情况下,一个驱动程序只需要

2017-08-14 11:59:49 455

转载 什么是docker

编者按:7月3日的“CSDN在线培训:Docker之道”,同时在线人数达到了历史新高,但是最后的QA环节,笔者发现大家的问题还是很初级的,Docker技术还处在Gartner技术曲线的萌芽期。刚好前几天看到了一篇非常通俗易懂的文章《Docker是什么?》,看完后马上就对Docker有了一个清楚的认识,在这里分享给读者。欢迎加入CSDN Docker技术交流群,群号:303806405 

2017-08-11 10:47:01 360

转载 linux notifier

Linux庞大系统中,各个模块是相对独立的,那么模块间通信该如何做呢?当然你也可以使用全局资源,如果这样的话系统缺少独立性,会带来稳定性问题的。如果你说,使用共享内存,进程通信等,那么你曲解我的意思了,因为你说的大多是user space的,而我说的是内核模块级别的。notifier_chain,对就是它,实质上这个机制就是一个回调函数链表的操作,回调函数的注册,注销,调用。源系统处(比如A子

2017-08-07 19:36:06 597

转载 linux workqueue

1. 什么是workqueueLinux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程.工作队列(workqueue)是另外一种将工作推后执行的形式.工

2017-08-07 12:17:09 383

转载 使用Valgrind Memcheck检查内存

使用Valgrind Memcheckmemcheck工具的使用方式如下:valgrind --tool=memcheck ./a.out从上面的命令可以清楚的看到, 主要的命令是valgrind,而我们想使用的工具是通过'-tool'选项来指定的. 上面的‘a.out’指的是我们想使用memcheck运行的可执行文件.该工具可以检测下列与内存相关的问题 :·       未释

2017-08-05 16:38:53 583

转载 HZ 与 jiffies

jiffies在内核中是一个全局变量,它用来统计系统启动以来系统中产生的总节拍数,这个变量定义在include/Linux/jiffies.h中,定义形式如下。unsigned long volatile jiffies;想要理解jiffies的含义,我们需要首先理解时钟  节拍率  节拍的概念。一、时钟时钟应用于处理器的定时信号,它使得处理器在时钟中运行,依靠信号

2017-08-01 11:23:27 762

转载 音频重采样

ffmepg音频重采样标签: ffmpeg音频处理 音频重采样cc++2016-07-28 21:37 1481人阅读 评论(0) 收藏 举报 分类:ffmepg(1) 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[-]概述基本概念1通道数2采样率3比特率bps或kbps4帧5样本

2017-07-05 11:21:02 669

原创 linux信号量

API#include int sem_init(sem_t *sem, int pshared, unsigned int value);int sem_destroy(sem_t *sem);int sem_wait(sem_t *sem);int sem_trywait(sem_t *sem);int sem_timedwait(sem_t *sem, const

2017-06-16 17:05:13 399

转载 linux Mutex

一、互斥锁1. 初始化:在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init. 对于动态分配的互斥量, 在申请内存(malloc)之后, 通过pthread_mutex_init进行初始

2017-06-07 10:16:44 1092

转载 c++:explicit 抑制构造函数隐式转换

按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”

2017-06-01 12:03:35 742

原创 Python:pandans

安装padascmd>pip3 install padas使用>>> from pandas import Series #一位数组加索引>>> from pandas import DataFrame #表>>> obj=Series([1,2,3,4,10])>>> obj0 11 22 33 44 10dtype: int64>>> t

2017-05-31 17:36:12 1119

原创 Python numpy

Python数据计算numpy>>> import numpy as np>>> #array>>> data=[1,3,4,5]>>> type(data)<class 'list'>#array()产生矩阵对象>>> arr=np.array(data)>>> arrarray([1, 3, 4, 5])>>> type(arr)<class 'numpy.ndarray'>

2017-05-27 15:06:41 974

转载 双线性插值

双线性插值,这个名字咋一听很高大上的样纸,再在维基百科上一查(见文末,我去,一堆的公式吓死人),像俺这种半文盲,看到公式脑子就懵的类型,真心给跪。虽然看着好复杂,但仔细一看道理再简单不过了,所以还是自己梳理一下好。双线性插值,顾名思义就是两个方向的线性插值加起来(这解释过于简单粗暴,哈哈)。所以只要了解什么是线性插值,分别在x轴和y轴都做一遍,就是双线性插值了。线性插值的概念也非常

2017-05-27 11:18:02 292

转载 Larange插值

Larange插值使用Python仿真 理论:略import matplotlib.pyplot as mplimport matplotlib.pyplot as pltimport numpy as npdef Larange(x,y,a): sum=0.0 for i in range(len(y)): t=y[i] for j in ra

2017-05-25 18:04:42 614

转载 步进电机的失步与过冲

失步应该就是漏掉了脉冲没有运动到指定的位置。过冲应该就是和失步相反,运动到超过了指定的位置。    在一些控制简单或要求低成本的运动控制系统中,常会用步进电机。最大的优势是:以开环的方式来控制位置和速度。但正因为是开环控制,负载位置对控制回路没有反馈,步进电机就必须正确响应每次励磁变化。如果励磁频率选择不当,步进电机就不能够移动到新的位置。负载实际的位置相对于控制器所期待的位置出现永久误差,即

2017-05-24 19:23:27 1689

转载 USB标准请求传输下的linux驱动

1.设备请求(装载)在枚举过程中,USB主机会向USB设备请求参数,用于读取描述符信息,为USB设备分配设备地址等等。USB设备通过默认控制管道响应这些请求,这些请求参数在SETUP数据包中,长度为8个字节。Linux对于请求参数结构体定义如下:146 struct usb_ctrlrequest {147         __u8 bRequestType;148

2017-05-10 12:09:12 415

原创 Python 绘制函数图形

1安装依赖库pip3 install numpypip3 install matplotlib2.实验一个例子import numpy as npimport pylab as plx=list(range(0,6))y=[]for index in x:y.append(x[index]*x[index])pl.plot(x,y)pl.titl

2017-04-22 16:06:18 11252

转载 齐次坐标

问题:两条平行线可以相交于一点在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景。然而,在透视空间里面,两条平行线可以相交,例如:火车轨道随着我们的视线越来越窄,最后两条平行线在无穷远处交于一点。欧氏空间(或者笛卡尔空间)描述2D/3D几何非常适合,但是这种方法却不适合处理透视空间的问题(实际上,欧氏几何是透视几何的一个子集合),2维笛卡尔坐标可以表示为(x,y

2017-04-19 19:33:27 423

原创 Python 打包exe

今天需要将Python编写的工具打包放在win下运行,在网上看了一些资料1.安装pyinstallerpip install pyinstaller2.在cmd下进入sci.py目录pyinstaller  -F -w sci.py遇到问题:Failed to execute script pyi_rth_qt5plugins在网上找解决方案

2017-04-19 16:13:46 934

转载 Python 异常

[python] view plain copy print?x = 'abc'  def fetcher(obj, index):      return obj[index]    fetcher(x, 4)  输出:[plain] view plain copy print? 

2017-04-19 14:46:52 309

原创 python str byte hex

最近遇到的问题     网络传输socket 需要字节流byte,而UI对话框输入hexstr串,在晚上搜索了一下,做如下记录ByteToHex的转换def ByteToHex( bins ): """ Convert a byte string to it's hex string representation e.g. for output. """

2017-04-19 11:31:53 2676

转载 python strcut

循环解析出一个二进制索引文件中的内容,只要知道存储的数据结构就可以解析出来,例如:import structfd=file(u"h:/xxxx.index",'rb')while fd:    buf=fd.read(20)    if len(buf) == 0:        break;    print struct.unpack('5I',buf[0:20

2017-04-18 11:11:23 449

原创 OPENGL基本图形绘制

数据类型1.数据类型以GL开头,后跟对应的c数据类型,如GLint,GLubyte,GLfloat等2.常量以GL开头,并大写函数名命名如 glColor3f对于向量包含后缀 ‘v’GLfloat color[]={0,0,0}glColor3fv(color)OPENGL是一种状态机设置状态后保持知道再次设置改变另外一种状态glEnab

2017-04-17 12:26:31 799

原创 Python搭建PyQt5

软件环境搭建的问题使用的python3.5PyQt5官方网站https://riverbankcomputing.com/software/pyqt/download5      Binary Packages      Wheels are provided for Python v3.5 and later for 64-bit Linux, OS X and

2017-04-17 11:11:59 2688

转载 OPENGL渲染管线理论

学习着色器,并理解着色器的工作机制,就要对OpenGL的固定功能管线有深入的了解。首先要知道几个OpenGL的术语渲染(rendering):计算机根据模型(model)创建图像的过程。模型(model):根据几何图元创建的物体(object)。几何图元:包括点、直线和多边形等,它是通过顶点(vertex)指定的。最终完成了渲染的图像是由在屏幕上绘制的像素组成的。在内存中,

2017-04-05 16:46:53 351

原创 OpenGL版本

版本获取api:glGetString(GL_VERSION);会返回一个表示版本的字符串,字符串的格式为X.X.X,就是三个整数,用小数点隔开,第一个数表示OpenGL主版本号,第二个数表示OpenGL次版本号,第三个数表示厂商发行代号const char* version = (const char*)glGetString(GL_VERSION);printf("Op

2017-04-01 11:54:58 2907

转载 OPENGL 工作流

首先OPengl是一个状态机OpenGL是一个状态机,它保持自身的状态,除非用户输入一条命令让它改变状态。颜色、纹理坐标、源因子和目标因子、光源的各种参数,等等,这些都是状态,所以这一句话就包含了上面叙述的所有内容。此外,“是否启用了光照”、“是否启用了纹理”、“是否启用了混合”、“是否启用了深度测试”等等,这些也都是状态,也符合上面的描述:OpenGL会保持状态,除非我们调用

2017-03-27 17:13:09 505

原创 OPENGL纹理基础

//对于vbo道理是一样的 1. 纹理坐标 在绘制一条线段时,我们设置其中一个端点为红色,另一个端点为绿色,则OpenGL会自动计算线段中其它各像素的颜色,如果是使用glShadeMode(GL_SMOOTH);,则最终会形成一种渐变的效果(例如线段中点,就是红色和绿色的中间色)。类似的,在绘制一条线段时,我们设置其中一个端点使用“纹理图象中最左下角的颜色”作为它的颜色,另一个端点使用

2017-03-27 15:44:23 315

原创 OPENGL颜色混合

1.颜色混合混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。假设我们需要绘制这样一个场景:透过红色的玻璃去看绿色的物体,那么可以先绘制绿色的物体,再绘制红色玻璃。在绘制红色玻璃的时候,利用“混合”功能,把将要绘制上去的红色和原来的绿色进行混合,于是得到一种新的颜色,看上去就好像玻璃是半透明的。2.OPENGL实

2017-03-25 11:50:47 732

转载 HDMI EDID

1.何为EDID现在的显示设备比如显示器,电视等都HDMI接口,那通常每个HDMI接口都保留有一份EDID数据,这个数据可以存在程序里面由系统启动过程中来初始化,更常见的做法是每个HDMI口会有一个EEPROM来保存这份数据,这个EEPROM也只是有256bytes大小。外接设备如DVD播放器在HDMI热插拔的时候就会通过HDMI的DDC通道来读取EDID数据。EDID里面主要是定义了这显示设

2017-03-24 17:38:48 919

原创 垂直同步

1.显示器固有刷新率低的问题显示器的刷新率是比较有限的,一般为60~120Hz,也就是一秒钟刷新60~120次。但如果叫计算机绘制一个简单的画面,例如只有一个三角形,则一秒钟可以绘制成千上万次。因此,如果最大限度的利用计算机的处理能力,绘制很多幅画面,但显示器的刷新速度却跟不上,这不仅造成性能的浪费,还可能带来一些负面影响(例如,显示器只刷新到一半时,需要绘制的内容却变化了,由于显示器是逐行刷

2017-03-21 17:55:35 1483

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除