自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (13)
  • 收藏
  • 关注

原创 银行家算法流程图+C++源代码

银行家算法是避免死锁的一种重要方法。 操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程

2012-02-29 11:31:27 41979 3

转载 Linux Yum服务

在讲述YUM前,先来了解下RPM是什么?RPM是RedHat Package Manager的缩写。顾名思义,当初这个软件管理的程序是由Red Hat发展出来的,当然也有很多其它相类似的软件管理程序。不过由于RPM使用上很方便,所以就成为了目前最热门的软件管理程序。RPM是以一种数据库记录的方式来将所需要的软件安装到Linux系统的一套管理程序。其最大的特点就是将要安装的软件先编译过(如果需要

2012-02-24 11:54:51 1004

转载 使用createrepo创建自己的yum源

为什么要使用rpm来管理软件包?相比使用shell脚本,从源码编译安装的方式,排除规模引出的效率因素不讲,脚本的可维护性比起rpm要糟糕一些,当然使用rpm就需要深入了解rpmbuild以及spec文档,似乎也并不简单。但从长远来看,rpm、yum源的可维护性,要比“脚本”可靠一些。在本文中,花开分享了创建yum源的操作步骤,用于管理系统上“定制”的软件包。以下为正文。    创建yum源需要

2012-02-24 11:43:32 1213

原创 rpm与yum(本地yum源的安装)

rpm是Redhat Package  Manager的缩写,是Linux的特有的软件包的管理工具,可以很大程度上方便我们安装软件包。当然现在的大部分包都可以使用yum来方便的安装,但rpm在此之前,确实是一种非常方便的工具,基本上所有使用Redhat  Linux的人都对它相当熟悉。首先我们来回顾一下软件包包含的内容二进制文件   安装路径:/bin,/sbin,(启动必须) /us

2012-02-23 17:57:36 10702

转载 实现本地yum源的配置

前言如果你看到了我这篇文章,也就说明了你对Linux来说不是很熟悉,那么我的困惑我想也同样适合你,我的一个初学者,对于我们初学者来说,理论和实践是很重要的,看了理论后,难免会使用一些工具来校验理论以此来巩固我们所学的知识,做实验是很正常的事情,但人是一个感性的动物,开场不利难免会对我们学习linux的决心造成打击,我就是其中一个,看完理论,然后自己动手去做实验,但连安装一个安装包都安装不成功,

2012-02-23 17:38:58 790

转载 软件工程

去年暑假到现在是一个蜕变的过程!从软件工程到UML到设计模式再到三层架构(其实这些都属于软工的范畴),这是一条充满艰辛,充满曲折的道路,一路走来,感触颇多。进入提高班,再次接触软件工程,让我觉得既熟悉又陌生。造成这种让人纠结的状态只能怪自己当时太无知。没有好好听大学老师讲课。不过也不必太自责,大家也都知道现在中国的教育现状。我想如果我当时好好跟着任课老师学,对软工认识的程度肯定也无法跟

2012-02-23 09:43:44 579 1

转载 Linux下rpm 安装包方式安装

为了方便linux 用户添加和删除软件,Red Hat 公司提出了软件包管理器RPM,由于它的出现使得在linux 中安装、卸载应用程序变得相对简单,默认情况下(即不出现文件依赖问题)用户只需双击rpm 软件包,系统会自动进行安装。  一个rpm包文件是能够让应用软件运行的全部文件的一个集合,它记录了二进制软件的内容、安装的位置、软件包的描述信息、软件包之间的依赖关系等信息。RPM 工具对

2012-02-22 16:09:35 1534

转载 Linux中vi编辑器的用法

实验一: vi编辑器的模式切换1.       实验目标:熟练掌握vi编辑器的三种模式间切换及其特点2.       实验操作步骤:步骤一: 进入vi编辑器即命令模式 进入vi编辑器可以在命令终端中输入vi或者vim步骤二: 切换至末行模式步骤三: 切换至输入模式3.       实验总结:从输入模式切换至末行模式必须先切换至命令模式,其切换方法

2012-02-22 12:01:25 7009 1

转载 Linux的用户和组的管理

Linux的用户和组的管理----------------------------------------------------------------------------------------------------Linux是一个多用户系统,因此必须给每个登录到系统的用户分配帐号、设置密码,并设置相应的权限。这样才能保证系统的安全。一、Linux 的账号与群组管

2012-02-22 10:41:10 1005

转载 linux 下载命令

Wget是一个十分常用命令行下载工具,多数Linux发行版本都默认包含这个工具。如果没有安装可在 http: //www.gnu.org/software/wget/wget.html 下载最新版本,并使用如下命令编译安装:  # tar zxvf wget-1.9.1.tar.gz  # cd wget-1.9.1  # ./configure  # make  # make

2012-02-21 18:06:43 1216

原创 linux中安装yum和rpm详解

一、YUM简介:yum,是Yellow dog Updater, Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke开发团队进行改进,遂有此名。yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用

2012-02-21 15:57:55 24111

转载 Linux Yum安装配置与安装命令应用

Linux Yum安装已被广泛应用但是也在不断的更新,这里介绍Linux Yum安装设置使用,帮助大家安装更新Linux Yum安装系统。Linux本身是这个操作系统的核心部分,也就是操作系统的内核。内核是完成那些最基本操作的程序,它负责其他程序(如文本编辑器程序)的启动与终止、内存申请处理硬盘访问、网络连接管理等方面的工作。Linux Yum命令一. Linux Yum是什么yum =

2012-02-21 14:46:48 1173

转载 http://code.google.com/p/nginxsrp/wiki/NginxCodeReview

概述Nginx  ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多了。Igor 将源代码以类BSD许可证的形式发布。自Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集

2012-02-21 14:24:06 1876

转载 分析linux make命令与Makefile的区别

make的原理是执行一个叫Makefile文件里的指令,make的基本用处是自动根据makefile里的指令来编译源文件。它还可以用来做比如安装软件,卸载软件等事情,但前提是作者在makefile里写了。比如makefile里有这么些内容: ...install : 然后用make install的话,make程序就会按照上面install:后面的指令执行安装,uninstall也是一样的

2012-02-20 15:28:41 957

转载 Linux编程make命令

摘要:在开发一个系统时,一般是将一个系统分成几个模块,这样做提高了系统的可维护性,但由于各个模块间不可避免存在关联,所以当一个模块改动后,其他模块也许会有所更新,当然对小系统来说,手工编译连接是没问题,但是如果是一个大系统,存在很多个模块,那么手工编译的方法就不适用了。为此,在Linux系统中,专门提供了一个make命令来自动维护目标文件,与手工编译和连接相比,make命令的优点在于他只更新修改过

2012-02-20 15:22:42 580

转载 Linux源码安装过程中选项prefix

在linux和unix环境中,源码安装是最常用的软件安装方式,一些软件除了提供源码外,也提供各种发行版的二进制安装包(如基于redhat包管理工具的rpm包),但强烈建议使用源码安装方式。原因是:(1)没有类似rpm那样让人恼火的包依赖关系,(2)源码安装灵活自由,适用于不同的平台,维护也十分方便。  源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(mak

2012-02-20 14:53:43 446

原创 VMware tools的用途及安装

VMware是一个非常好的虚拟机软件,支持很多操作系统,平时用来测试和学习操作系统是非常方便的,在使用VMware的时候会经常有提示说你没有安装Vmware tools,那这个Vmware tools究竟是个什么东西呢?有什么作用?需不需要安装Vmware tools?如何安装Vmware tools?下面我来一一解答。虚拟机VMware tools的用途更新虚拟机中的显卡驱动,

2012-02-20 14:30:31 3174

转载 Linux设备模型(总线、设备、驱动程序和类) (个人认为网上写的层次最清楚的资料)

之一:bus_type   总线是处理器和一个或多个设备之间的通道,在设备模型中,所有的设备都通过总线相连,甚至是内部的虚拟"platform"总线。可以通过ls -l /sys/bus看到系统加载的所有总线。drwxr-xr-x root     root              1970-01-01 00:02 platformdrwxr-xr-x root     root

2012-02-17 11:37:00 1100

转载 Linux设备驱动模型 sysfs

2.6内核增加了一个引人注目的新特性——统一设备模型(device model)。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点:l        代码重复最小化。l        提供诸如引用计数这样的统一机制。l        可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线。l        可以将系统中的全部

2012-02-16 09:52:50 1735

原创 Linux设备模型之tty驱动架构分析

一:前言Tty这个名称源于电传打字节的简称。在linux表示各种终端。终端通常都跟硬件相对应。比如对应于输入设备键盘鼠标。输出设备显示器的控制 终端和串口终端.也有对应于不存在设备的pty驱动。在如此众多的终端模型之中,linux是怎么将它们统一建模的呢?这就是我们今天要讨论的问题.二:tty驱动概貌Tty架构如下所示:如上图所示,用户空间主要是通过设备文件同tty_c

2012-02-15 16:16:15 596

原创 Linux设备模型--总线、驱动、设备、设备类

前面的文章分析设备模型中的最基础部分,下面就要更跨入现实,看看如何在这些基础之上构建整个设备驱动子系统。谈到设备驱动,总会涉及到三个概念:总线、驱动、设备。而在Linux中,为了便于用户管理一些功能不同但是使用方式却很接近的设备,开发者们定义了一个设备类的概念。总线?structbus_type {        constchar

2012-02-15 13:39:55 823

原创 linux 设备模型 补充

Linux设备驱动程序学习笔记系列文章原作者是:Tekkaman Ninja,他博客地址:http://blog.chinaunix.net/u1/34474/showart_404278.html在此向Tekkaman Ninja表示感谢,写出这么好的文章,使我少走了很多弯路。以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但

2012-02-14 14:21:49 920

原创 Linux设备模型第二篇之kobject与kset之间的关系

首先,先看一下kobject与kset的定义:struct kobject {const char *name; //名字struct list_head entry; //作为父对象的链表节点struct kobject *parent; //父对象struct kset *kset; //属于哪个对象集合struct kobj_type *ktype; //对象类型

2012-02-13 16:08:48 3130

转载 关于linux设备模型kobject,kset,ktype

一、sysfs文件系统下的每个目录对应于一个kobj,kset是kobj的封装,内嵌了一个kobj,其代表kset自身,ktype代表属性操作集,但由于通用性,因此把ktype单独剥离出来,kobj,kset,ktype成为了各个驱动模型最底层的关联元素,并由此形成了sys下的各种拓扑结构。二、关于kobject      首先看一下kobject的原型

2012-02-13 16:01:29 1563

转载 再补充一篇 浅谈 Linux 内核开发之 PCI 设备驱动

本文介绍了 PCI 的基本概念,并从 Linux 内核的角度出发,介绍了 PCI 设备的初始化以及配置。PCI 介绍随着计算机应用的不断更新和发展(比如百兆网卡、视屏流等),计算机内数据传输的带宽要求越来越高,传统内部总线带宽已经远远不能满足这些应用的需要,因此人们推出了 PCI 总线标准PCI 是 Peripheral Component Interconnect 的缩写,它因为高性

2012-02-10 09:56:45 908

转载 Linux下PCI设备驱动程序开发

一、PCI总线系统体系结构PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起,同时它还刻画了外围设备在连接时的电气特性和行为规约,并且详细定义了计算机系统中的各个不

2012-02-09 18:08:27 849

转载 Linux 读写自旋锁原理

简介: 读写自旋锁是一种特殊的自旋锁,它将访问共享资源的线程区分为读者和写者,多个读者可以同时持有锁,因而提高 了线程的并发性。本系列由三篇文章组成,本文是系列文章的第一部分,以自动机的观点阐述读写自旋锁的原理。后续两篇文章论述如何设计和实现基于简单共享变 量的读写自旋锁,以及针对大规模多核系统讨论如何提高读写自旋锁的可扩展性。读写自旋锁简介什么是读写自旋锁自旋锁(Spinlock

2012-02-08 15:30:35 3320

原创 信号量的应用场景

1、信号量的定义:struct semaphore {spinlock_t lock;unsigned int count;struct list_head wait_list;};在linux中,信号量用上述结构体表示,我们可以通过该结构体定义一个信号量。2、信号量的初始化:可用void sema_init(struct semaphore *sem, int v

2012-02-07 18:11:41 6249 2

原创 Linux内核的同步机制:completion

在Linux内核中,completion是一种简单的同步机制,标志"thingsmayproceed"。要使用completion,必须在文件中包含,同时创建一个类型为structcompletion的变量。这个变量可以静态地声明和初始化:DECLARE_COMPLETION(my_comp);或者动态初始化:struct completion my_comp;init_compl

2012-02-07 17:23:19 1202

原创 信号量与线程互斥锁的区别

援引CU上一篇帖子的内容:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同

2012-02-07 15:15:09 861

转载 Linux下用信号量实现对共享内存的访问保护(一)

最近一直在研究多进程间通过共享内存来实现通信的事情,以便高效率地实现对同一数据的访问。本文中对共享内存的实现采用了系统V的机制,我们的重点在于通过信号量来完成对不同进程间共享内存资源的一致性访问,共享内存的具体方法请参见相关资料,这里不再赘述。首先我们先实现最简单的共享内存,一个进程对其更新,另一个进程从中读出数据。同时,通过信号量的PV操作来达到对共享内存资源的保护。思路如下:1.s

2012-02-07 11:17:52 7470 1

转载 linux wait queue

在Linux驱动程序中,可以使用等待队列(waitqueue)来实现阻塞进程的唤醒。waitqueue很早就作为一种基本的功能单位出现在Linux内核里了,它以队列位基础数据结构,与进程调度机制紧密结合,能够用于实现内核中异步事件通知机制。等待队列可以用来同步对系统资源的访问。(信号量在内核中也依赖等待队列来实现)。    Linux-2.6提供如下关于等待队列的操作:    (1) 定义

2012-02-07 10:13:57 3719

原创 poll, select & poll—wait底层数据结构

阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移走,直到等待的条件被满足。在Linux驱动程序中,我们可以使用等待队列(wait queue)来实现阻塞操作。wait queue很早就作为一个基本的功能单位出现在Linux内核里了,它以队列为基

2012-02-06 11:55:21 3729

转载 linux设备驱动归纳总结(三):.阻塞型IO实现

linux设备驱动归纳总结(三):5.阻塞型IO实现xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx一、休眠简介:进程休眠,简单的说就是正在运行的进程让出CPU。休眠的进程会被内核搁置在在一边,只有当内核再次把休眠的进程唤醒,进程才会会

2012-02-03 17:18:51 1208

转载 Linux中的工作队列

工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。工作队列是2.6内核开始引入的机制,在2.6.20之后,工作队列的数据结构发生了一些变化,因此本文分成两个部分对2.6.20之前和之后的版本分别做介绍。I、

2012-02-03 11:46:59 491

TensorFlow技术解析与实战 带书签 高清

本章主要介绍了人工智能、机器学习、深度学习的关系,以及深度学习的学习步骤,分析了这个领域的相关人群,以及这个领域的重要赛事。然后,全面介绍了 TensorFlow 的作用、特性,并介绍了国内做人工智能的公司,讲述了目前在产业界进行的探索,和提供给开发者的一些基础平台。

2019-02-20

深度学习框架PyTorch:入门与实践(陈云)

书从多维数组Tensor开始,循序渐进地带领读者了解PyTorch各方面的基础知识,并结合基础知识和前沿研究,带领读者从零开始完成几个经典有趣的深度学习小目,包括GAN 生成动漫头像、AI滤镜、AI 写诗等。本书没有简单机械地介绍各个函数接口的使用,而是尝试分门别类、循序渐进地向读者介绍PyTorch的知识,希望读者对PyTorch有一个完整的认识。本书内容由浅入深,无论是深度学习的初学者,还是第一次接触PyTorch的研究人员,都能在学习本书的过程中快速掌握PyTorch。即使是有一定PyTorch使用经验的用户,也能够从本书中获得对PyTorch 不一样的理解。 [1] 该书由浅入深,利用Jupyter notebook帮助读者快速学习PyTorch,并带领读者从零开始完成Kaggle比赛、GAN生成动漫头像、AI滤镜、RNN写诗、图像描述等深度有趣的应用。

2019-02-19

深度学习原理与应用实践OCR(带有书签)

介绍了行业现状, 以及一些常用网络和算法。 比较好的入门资料。

2019-01-27

深度强化学习原理入门

去年,DeepMind 的 AlphaGo 以 4-1 的比分打败了世界围棋冠军李世乭。超过 2 亿的观众就这样看着强化学习(reinforce learning)走上了世界舞台。几年前,DeepMind 制作了一个可以玩 Atari 游戏的机器人,引发轩然大波。此后这个公司很快被谷歌收购。 很多研究者相信,强化学习是我们创造通用人工智能(Artificial General Intelligence)的最佳手段。这是一个令人兴奋的领域,有着许多未解决的挑战和巨大的潜能。

2019-01-25

spark 源码分析

《Apache Spark源码剖析》以Spark 1.02版本源码为切入点,着力于探寻Spark所要解决的主要问题及其解决办法,通过一系列精心设计的小实验来分析每一步背后的处理逻辑。 《Apache Spark源码剖析》第3~5章详细介绍了Spark Core中作业的提交与执行,对容错处理也进行了详细分析,有助读者深刻把握Spark实现机理。第6~9章对Spark Lib库进行了初步的探索。在对源码有了一定的分析之后,读者可尽快掌握Spark技术。

2019-01-25

深入理解Java虚拟机高清PDF

《深入理解Java虚拟机:JVM高级特性与最佳实践》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。第一部分从宏观的角度介绍了整个Java技术体系、Java和JVM的发展历程、模块化,以及JDK的编译,这对理解本书后面内容有重要帮助。第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因;常见的垃圾收集算法以及垃圾收集器的特点和工作原理;常见虚拟机监

2018-12-18

docker 高清

docker高清教程 。简洁实用

2018-09-13

黑客反汇编

超级无敌黑客反汇编,黑客必备。各种手法。linux window 系统反汇编。

2012-03-27

linux内核驱动编写

极好的 linux 内核驱动 资料 学习linux的同学看啊

2011-10-18

空空如也

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

TA关注的人

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