工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.51099.com 注册 | 登陆
浏览模式: 标准 | 列表2013年04月的文章

什么是计算机线程?进程和线程两者有什么区别?

进程:

对应用程序来说,进程就像一个大容器。在应用程序被运行后,就相当于将应用程序装进容器里了,你可以往容器里加其他东西(如:应用程序在运行时所需的变量数据、需要引用的DLL文件等),当应用程序被运行两次时,容器里的东西并不会被倒掉,系统会找一个新的进程容器来容纳它。

  进程是由进程控制块、程序段、数据段三部分组成。一个进程可以包含若干线程(Thread),线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程序被运行后中,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根据需要自行添加或删除相关的线程。
是可并发执行的程序。在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位,也是称活动、路径或任务,它有两方面性质:活动性、并发性。进程可以划分为运行、阻塞、就绪三种状态,并随一定条件而相互转化:就绪--运行,运行--阻塞,阻塞--就绪。

  进程为应用程序的运行实例,是应用程序的一次动态执行。看似高深,我们可以简单地理解为:它是操作系统当前运行的执行程序。在系统当前运行的执行程序里包括:系统管理计算机个体和完成各种操作所必需的程序;用户开启、执行的额外程序,当然也包括用户不知道,而自动运行的非法程序(它们就有可能是病毒程序)。
  危害较大的可执行病毒同样以“进程”形式出现在系统内部(一些病毒可能并不被进程列表显示,如“宏病毒”),那么及时查看并准确杀掉非法进程对于手工杀毒有起着关键性的作用。

进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是

死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种

功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;用户进程就是所有由你启动的进程。进程是操作系统进行资源分配的单位。

在Windows下,进程又被细化为线程,也就是一个进程下有多个能独立运行的更小的单位。
1.进程的引入:
多道程序在执行时,需要共享系统资源,从而导致各程序在执行过程中出现相互制约的关系,程序的执行表现出间断性的特征。这些特征都是在程序的执行过程中发生的,是动态的过程,而传统的程序本身是一组指令的集合,是一个静态的概念,无法描述程序在内存中的执行情况,即我们无法从程序的字面上看出它何时执行,何时停顿,也无法看出它与其它执行程序的关系,因此,程序这个静态概念已不能如实反映程序并发执行过程的特征。为了深刻描述程序动态执行过程的性质,人们引入“进程(Process)”概念。
2.进程的概念:
进程的概念是60年代初首先由麻省理工学院的MULTICS系统和IBM公司的CTSS/360系统引入的。
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
操作系统引入进程的概念的原因:
从理论角度看,是对正在运行的程序过程的抽象;
从实现角度看,是一种数据结构,目的在于清晰地刻划动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。
3.进程的特征
动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。
4.进程与程序的关系
程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。
进程更能真实地描述并发,而程序不能;进程是由程序和数据两部分组成的。
进程具有创建其他进程的功能,而程序没有。
同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程。也就是说同一程序可以对应多个进程。
在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单元都是进程。

Windows XP 常见的进程列表
[编辑本段]

1、最基本的系统进程
这些进程是系统运行的基本条件,有了这些进程,系统才能正常运行。

smss.exe Session Manager
csrss.exe 子系统服务器进程
winlogon.exe 管理用户登录
services.exe 包含很多系统服务
lsass.exe
管理IP安全策略以及启动ISAKMP/Oakley(IKE)和IP安全驱动程序。(系统服务)
产生会话密钥以及授予用于交互式客户/服务器验证的服务凭据(ticket)。(系统服务)
svchost.exe 包含很多系统服务
SPOOLSV.EXE 将文件加载到内存中以便迟后打印。(系统服务)
explorer.exe 资源管理器
internat.exe 托盘区的拼音图标

2、附加的系统进程
这些进程不是必要的,你可以根据需要通过服务管理器来增加或减少
mstask.exe 允许程序在指定时间运行。(系统服务)
regsvc.exe 允许远程注册表操作。(系统服务)
winmgmt.exe 提供系统管理信息(系统服务)。
inetinfo.exe
通过 Internet 信息服务的管理单元提供 FTP 连接和管理。(系统服务)
tlntsvr.exe
允许远程用户登录到系统并且使用命令行运行控制台程序。(系统服务)
允许通过Internet信息服务的管理单元管理 Web 和 FTP 服务。(系统服务)

tftpd.exe
实现TFTP Internet标准。该标准不要求用户名和密码。远程安装服务
的一部分。(系统服务)
termsrv.exe
提供多会话环境允许客户端设备访问虚拟的Windows 2000 Professional 桌面会话以及运行在服务器上的基于Windows的程序。(系统服务)
dns.exe 应答对域名系统(DNS)名称的查询和更新请求。(系统服务)

3、不常用服务
以下服务很少会用到,上面的服务都对安全有害,如果不是必要的应该关掉
tcpsvcs.exe 提供在PXE可远程启动客户计算机上远程安装 Windows 2000
Professional 的能力。(系统服务)
支持以下 TCP/IP 服务Character Generator,Daytime,Discard,Echo,以及Quote of the Day。(系统服务)
ismserv.exe
允许在Windows Advanced Server站点间发送和接收消息。(系统服务)
ups.exe
管理连接到计算机的不间断电源(UPS)。(系统服务)
wins.exe
为注册和解析NetBIOS型名称的TCP/IP客户提供NetBIOS名称服务。(系统服务)
llssrv.exe License Logging Service(system service)
ntfrs.exe 在多个服务器间维护文件目录内容的文件同步。(系统服务)
RsSub.exe 控制用来远程储存数据的媒体。(系统服务)
locator.exe 管理 RPC 名称服务数据库。(系统服务)
lserver.exe 注册客户端许可证。(系统服务)
dfssvc.exe 管理分布于局域网或广域网的逻辑卷。(系统服务)
clipsrv.exe
支持“剪贴簿查看器”,以便可以从远程剪贴簿查阅剪贴页面。(系统服务)
msdtc.exe
并列事务,是分布于两个以上的数据库,消息队列,文件系统,或其它事务保护资源管理器。(系统服务)
faxsvc.exe 帮助您发送和接收传真。(系统服务)
cisvc.exe Indexing Service(system service)
dmadmin.exe 磁盘管理请求的系统管理服务。(系统服务)
mnmsrvc.exe
允许有权限的用户使用NetMeeting远程访问Windows桌面。(系统服务)
netdde.exe
提供动态数据交换(DDE)的网络传输和安全特性。(系统服务)
smlogsvc.exe 配置性能日志和警报。(系统服务)
rsvp.exe
为依赖质量服务(QoS)的程序和控制应用程序提供网络信号和本地通信控制
安装功能。(系统服务)
RsEng.exe
协调用来储存不常用数据的服务和管理工具。(系统服务)
RsFsa.exe 管理远程储存的文件的操作。(系统服务)
grovel.exe
扫描零备份存储(SIS)卷上的重复文件,并且将重复文件指向一个数据存
储点,以节省磁盘空间。(系统服务)
SCardSvr.exe
对插入在计算机智能卡阅读器中的智能卡进行管理和访问控制。(系统服务)
snmp.exe
包含代理程序可以监视网络设备的活动并且向网络控制台工作站汇报。(系
统服务)
snmptrap.exe
接收由本地或远程SNMP代理程序产生的陷阱消息,然后将消息传递到运行在这台计算机上SNMP管理程序。(系统服务)
UtilMan.exe 从一个窗口中启动和配置辅助工具。(系统服务)
msiexec.exe
依据.MSI文件中包含的命令来安装、修复以及删除软件。(系统服务)

线程:
线程
开放分类: 编程、CPU、计算机软件

是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU
线程的周期
新建 就绪 运行 阻塞 死亡
线程调度与优先级
有线程进入了就绪状态,需要有线程调度程序来决定何时执行,根据优先级来调度.
线程组
每个线程都是一个线程组的一个成员,线程组把多个线程集成一个对象,通过线程组可以同时对其中的多个线程进行操作.在生成线程时必须将线程放在指定的线程组,也可以放在缺省的线程组中,缺省的就是生成该线程的线程所在的线程组.一旦一个线程加入了某个线程组,不能被移出这个组.
守护线程
是特殊的线程,一般用于在后台为其他线程提供服务


------------
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:

简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
参考资料:http://zhidao.baidu.com/question/6157299.html


------------------
说法一:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行

说法二:进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:

简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

线程的划分尺度小于进程,使得多线程程序的并发性高。

另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

说法三:多线程共存于应用程序中是现代操作系统中的基本特征和重要标志。用过UNIX操作系统的读者知道进程,在UNIX操作系统中,每个应用程序的执行都在操作系统内核中登记一个进程标志,操作系统根据分配的标志对应用程序的执行进行调度和系统资源分配,但进程和线程有什么区别呢?

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:

线程的划分尺度小于进程,使得多线程程序的并发性搞。

另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

进程(Process)是最初定义在Unix等多用户、多任务操作系统环境下用于表示应用程序在内存环境中基本执行单元的概念。以Unix操作系统为例,进程是Unix操作系统环境中的基本成分、是系统资源分配的基本单位。Unix操作系统中完成的几乎所有用户管理和资源分配等工作都是通过操作系统对应用程序进程的控制来实现的。

C、C++、Java等语言编写的源程序经相应的编译器编译成可执行文件后,提交给计算机处理器运行。这时,处在可执行状态中的应用程序称为进程。从用户角度来看,进程是应用程序的一个执行过程。从操作系统核心角度来看,进程代表的是操作系统分配的内存、CPU时间片等资源的基本单位,是为正在运行的程序提供的运行环境。进程与应用程序的区别在于应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中,而进程则是处于动态条件下由操作系统维护的系统资源管理实体。多任务环境下应用程序进程的主要特点包括:

●进程在执行过程中有内存单元的初始入口点,并且进程存活过程中始终拥有独立的内存地址空间;

●进程的生存期状态包括创建、就绪、运行、阻塞和死亡等类型;

●从应用程序进程在执行过程中向CPU发出的运行指令形式不同,可以将进程的状态分为用户态和核心态。处于用户态下的进程执行的是应用程序指令、处于核心态下的应用程序进程执行的是操作系统指令。

在Unix操作系统启动过程中,系统自动创建swapper、init等系统进程,用于管理内存资源以及对用户进程进行调度等。在Unix环境下无论是由操作系统创建的进程还要由应用程序执行创建的进程,均拥有唯一的进程标识(PID)。

说法四:应用程序在执行过程中存在一个内存空间的初始入口点地址、一个程序执行过程中的代码执行序列以及用于标识进程结束的内存出口点地址,在进程执行过程中的每一时间点均有唯一的处理器指令与内存单元地址相对应。

Java语言中定义的线程(Thread)同样包括一个内存入口点地址、一个出口点地址以及能够顺序执行的代码序列。但是进程与线程的重要区别在于线程不能够单独执行,它必须运行在处于活动状态的应用程序进程中,因此可以定义线程是程序内部的具有并发性的顺序代码流。

Unix操作系统和Microsoft Windows操作系统支持多用户、多进程的并发执行,而Java语言支持应用程序进程内部的多个执行线程的并发执行。多线程的意义在于一个应用程序的多个逻辑单元可以并发地执行。但是多线程并不意味着多个用户进程在执行,操作系统也不把每个线程作为独立的进程来分配独立的系统资源。进程可以创建其子进程,子进程与父进程拥有不同的可执行代码和数据内存空间。而在用于代表应用程序的进程中多个线程共享数据内存空间,但保持每个线程拥有独立的执行堆栈和程序执行上下文(Context)。

基于上述区别,线程也可以称为轻型进程 (Light Weight Process,LWP)。不同线程间允许任务协作和数据交换,使得在计算机系统资源消耗等方面非常廉价。

线程需要操作系统的支持,不是所有类型的计算机都支持多线程应用程序。Java程序设计语言将线程支持与语言运行环境结合在一起,提供了多任务并发执行的能力。这就好比一个人在处理家务的过程中,将衣服放到洗衣机中自动洗涤后将大米放在电饭锅里,然后开始做菜。等菜做好了,饭熟了同时衣服也洗好了。

需要注意的是:在应用程序中使用多线程不会增加 CPU 的数据处理能力。只有在多CPU 的计算机或者在网络计算体系结构下,将Java程序划分为多个并发执行线程后,同时启动多个线程运行,使不同的线程运行在基于不同处理器的Java虚拟机中,才能提高应用程序的执行效率。

计算机必知必会:进程process与线程thread

进程和线程这对概念的理解也是很难的,至今网络上可查的资料对其的理解出入都挺大,在不同的操作系统中,如linux和windows中,其概念和实现都是有出入的。因此,我在这里结合我自己的理解谈下这两个概念,讲的都是一般性的概念,并且主要是基以WINDOWS的。

一般将进程定义为一个正在运行的程序的实例。我们在任务管理器重所看到的每一项,就可以理解为一个进程,每个进程都有一个地址空间,这个地址空间里有可执行文件的代码和数据,以及线程堆栈等。一个程序至少有一个进程。进程可以创建子进程,创建的子进程可以和父进程一起工作,也可以独立运行。

而线程是隶属于进程的,也就是说,线程是不能单独存在的,线程存在于进程中。每个进程至少有一个主线程,进程里的线程就负责执行进程里的代码,这也叫做进程的“惰性”。线程所使用的资源是它所属的进程的资源。线程也有自己的资源,主要组成部分就是一些必要的计数器和线程栈,占用的资源很少。我们可以理解为进程就是个容器,而线程才是真正干活的。线程可以在内核空间实现,也可以在用户空间实现。

这里特别提一下linux,在linux中,每一个进程都必须有一个父进程(如果没有父进程,则把PID=1的根进程作为其父进程)。进程退出了,就成了僵尸进程,等待父进程的退出信号,如果父进程没有给他发信号,得给他找一个父进程,或者等待内核自动销毁。Linux内核只提供了轻量进程的支持,限制了更高效的线程模型的实现,但Linux着重优化了进程的调度开销,使得linux进程切换开销较小。所以linux系统没有真正意义上的线程机制。linux中,Linux线程是通过进程来实现,进程和线程是同一个层次的。(我这里提到的是基于linux 2.6 内核的,在最新的LINUX中,对线程的实现做了优化,但是还是基于进程的。有些linux实现了新的线程机制,但主流还是和我描述的一样)

进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这也是进程和线程的重要区别。

比如,windows中的explorer就是资源管理器进程,我们每打开一个窗口,这个进程就会创建一个线程。有上面的描述,我们可以知道,进程有独立的地址空间,多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。

在第一节中,我提到过,“并发!=多线程“,是的。如Unix操作系统和Windows操作系统支持多用户、多进程的并发执行,而Java这样的语言支持应用程序进程内部的多个执行线程的并发执行。我们知道,php在语法上是没有多线程这个概念的,那java/NET的多线程是怎么实现的。实际上,java只是通过native方法调用操作系统API来创建多线程而已。另外,我们经常说某个网站并发是多少多少,nginx是高并发服务器了。这里的并发和我前面的并发概念是不同的。要想做到高并发,除了多线程等的实现,还需要各种好的IO机制,不然线程再多也没用,资源利用跟不上来。高并发又跟同步、异步等IO复用机制有了牵连。

下面列举一下进程和线程中的一些概念。

进程:创建,销毁,创建子进程(fork),优先级。
线程:创建,挂起,恢复,销毁,切换,协作,睡眠,唤醒,等待,同步,锁,优先级。
从上面的描述,基本可以理清进程和线程的关系了。最后总结下:

linux没有内核上的多线程实现,但是不能说linux没有多线程。WINDOWS有内核的多线程实现。
进程开销大,线程开销小,但是linux的进程和线程开销差异不明显。
并行的实现离不开多线程。
再留个悬念,多线程的实现和运行还会涉及到同步异步,原子性等概念。这些概念是相互交叉的,这里先不做深入。

tcpdump

tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings|egrep -i "^GET|^Host|^x-forwarded-for"

传统企业的互联网之伤

经济观察报 周航

最近和朋友聊天,谈的话题比较集中在互联网与传统产业的关系上。

他们中好几位的企业都已是各自行业里的翘楚,做得非常成功。尽管最大的互联网企业仍然比自己小很多,然而面对整个世界都奔向互联网的趋势,大家都很茫然。

他们模模糊糊地认为,不管是主动拥抱还是被动等待,自己的行业可能最终都会跟互联网发生关系,但到底是什么样的关系,该如何应对,可以说完全没有概念。

一位国内数一数二的家电制造品牌老总对我说,“小米们”的崛起给他的心理带来了非常大的震撼,或者说惶恐。自己苦苦拼了几十年,冰箱、洗衣机、 厨房电器,几十种品类,又从国内拼到国外,勉强过了1000亿元的营业额;一个小米才两年,就那么一个产品,已经卖了100多亿,这个刺激太大了。

他无法理解这样迅速的成功,而只能从一些表层的东西去解读:小米很会炒作,很会利用社交媒体,领导者很有个人魅力,等等。

两个小时里,我只能尽量向他解释做传统企业的人和互联网人的区别。那就是后者的思维起点永远是用户,其一切行动的出发点都是用户。但传统企业离真正的终端用户非常远。

拿中国的家电制造产业来说,它的逻辑是,世界上有了什么新产品、新技术,跑过去了解甚至干脆copy一下,加进一些所谓的符合中国用户使用习惯的改造,产品出来后,还要经过非常长的销售链条——区域代理、省级代理、市县级代理,才能到最终用户手上。

所以,他每天考虑的都是渠道如何管控,用户怎么想他根本不知道。做品牌也是传统的方式,广告预算出来,电视多大比例,纸媒多大比例,互联网广告投放得非常少,即使有也只是尝试尝试,属于补充。

我不敢说完全看懂了互联网,但我曾经有一只脚在传统行业里,里面的人的心态,受到哪些束缚,我深有体会。

我问这位家电品牌老总,你有没有想过5年以后的家居行业是什么样子?你们有没有这样一个实验室,里面模拟的是未来的人居生活?他说完全没有。行业竞争这么激烈、利润超低、渠道难管理,还哪有闲暇去思考这些“遥远”的事情。

所以,他们看互联网,正如当年我做音响企业时看互联网。个性使然,我对创新和变化一直很热衷。对于渐渐热门起来的网络,我会想,是不是也去搞个网站、去阿里巴巴上做个推广,换作在时下,我肯定会想是不是也去做个App。

这就是搞互联网吗?显然不是。因为对互联网的认识非常表象,你所做的任何努力注定都不得法。尝试了一下没什么效果,回报和投入的精力和人员都不成正比,就很容易得出结论:互联网跟我做的事情、跟我的行业的关系不大。

对于互联网,我们就是旁观者,在舞台下面,是观众。

然后你就会和温水里的青蛙一样,开始时可能还感受不到压力和紧迫,但当真正的互联网侵袭到你的领地时,你可能瞬间就束手就擒。

然而,即使你看懂了,就能成功拥抱互联网吗?

我并不是没有尝试过,但和绝大多数传统企业经营者一样,我每天都忙于处理一些眼前的事情,这个月的收入多少,利润多少,这个产品的市场反应怎么样,价格和渠道怎么样……不知不觉就随波逐流了,根本跳不出来,那是一种身不由己。

所以我才决定,算了,不折腾老行业了,既然我那么看好互联网,还背着传统行业的包袱,包括好几百号人,怎么转啊。你可以说你们坐在船上就行了,我来转,但是会很累,另外船上的人又会说,头晕,你的动作太大。总之是阻力太大了。

企业越大、越成功,越不容易改变,因为身上的包袱太重了。它的潜意识总是希望去证明自己过去做的所拥有的是可以延续的。微软做surface不 太容易成功,或者说必然不会成功,为什么?因为它在PC上太成功了。尽管认识到了移动是未来,但它总想找到一个中间状态,既能延续在PC上的成功,又能够 拥抱变化,但是很显然,这个过渡的中间产物是你的需求,不是用户的需求。

如果你的出发点是利用互联网让过去的业务和公司活得更好,那么,不管你做多大的努力,宿命都是必死无疑。但是人总是能用一个看似合理的理由,自圆其说。企业也一样,微软如此,国美、苏宁也是如此。

10年之前,所有的企业还都很迷恋《基业长青》这本书。可是,哪有什么基业长青可言啊?企业渴望基业长青,就像人渴望长生不老,炼丹、锻炼,无非让寿命延长。然而,这跟大自然的规律是相悖的。企业就像人要死一样,要么被新的力量破坏、重构,要么就是消亡。

所以,对于那些老朋友,我的结论听起来会很残忍:没有办法,别抱幻想,你转不了。怎么办,要么推翻一切旧有思维,完全跳出来,从头开始;要么等待着新的互联网企业来重新去整合你的行业。只有这两条路。

历史一直如此。在一个正常的经济社会中,创新永远都是破坏性的,如果你秉着中庸之道,不想破坏原有,试图从增量上去创新,这是自欺欺人。

工业革命的蒸汽机、汽车淘汰了马车业;如今的亚马逊、eBay、淘宝逼得沃尔玛、百思买这样的大连锁企业关店,不管你有3000家还是5000家门店,到了今天都不是资源了,变成了成本。

当然,实体的东西并不会完全消失,至少在现阶段,线下的体验和展示,互联网还做不到。但人们的标准动作已经变成:到国美、苏宁,看半天摸半天,把图片一拍,回家上淘宝下单。

租车行业同样,赫兹在美国做了60年,100万台车、8000个门店,不得了了吧?但你想想跟美国整个汽车保有量上亿台相比,100万台算什么呢?这样的公司不一定会消失,但不再会是主流了。

自信者会振振有词,我们这个行业有互联网取代不了的地方,没错,但是互联网和传统行业的关系不是取代关系,而是谁主谁次、谁是枢纽谁是附属的关系。我们从小受到的革命教育就是这样,除了取代和打倒就没有别的,可互联网它是慢慢地渗透,然后颠覆原有的产业结构。

淘宝网存在了10年了,中国互联网购物目前也仅过1万亿,占整个社会的零售总值的比例不到10%,如果从这个数字来看,我们依然会觉得传统商业是主,互联网是新增。但如果看成长曲线,看趋势,那你得出的结论一定是相反的。

关于租车行业,想再多说几句。赫兹的规模化逻辑在中国还有机会,因为中国的社会目前处于一种时代的多层叠加形态,大家都有机会,但它的成长速度和空间是有限的。

这个行业未来的理想状态就是没有租车行业,汽车应该全民共享。生活中汽车已经这么多了,为什么不可以提高效率让大家来共享汽车呢?真正的互联网 为什么有这么大的威力?就是释放了最小的经济单位的活力——个人。释放越多的经济单位,越有爆炸性,而且它有自我组织性和社区性。这都是传统产业不能望其 项背的。

apache自动停止

日志里有如下

[Fri Mar 15 21:47:47 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:48 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:49 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:50 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:51 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:52 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:53 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:54 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:55 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:56 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:57 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:58 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:47:59 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:48:00 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:48:01 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858
[Fri Mar 15 21:48:02 2013] [warn] (101)Network is unreachable: connect to listener on [::]:5858

iframe全屏自适应

<html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>iframe全屏测试</title>
<mce:style><!--
body { margin: 0px;  }
iframe {border: 0px;}
--></mce:style><style mce_bogus="1">body { margin: 0px;  }
iframe {border: 0px;}</style>
</head>
<mce:script type="text/javascript"><!--
  function resize(){
   document.getElementById('frame3d').style.height = document.body.clientHeight - 84+"px";
  }
  window.onresize = resize;
  
// --></mce:script>
<body scroll="no">
<img border="0" width="100%" height="84" src="./images/logo.png" mce_src="images/logo.png">
<iframe id="frame3d" name="frame3d" frameborder="0" width="100%" scrolling="auto"
 style="margin-top: -4px;" onload="this.style.height=document.body.clientHeight-84"
 height="100%" src="./map.jsp" mce_src="map.jsp"></iframe>
</body>
</html>

 

http://www.cnblogs.com/whisht/archive/2011/04/18/2251817.html

bind-dlz反向解析

2.实现DNS的反向解析
 
实现DNS的反向解析其实和正向解析的原理是一样的,只要对DNS、DLZ、ACL和VIEW的原理深刻理解一下就可以类比互通,以和正向解析的同样的方式来实现反向解析。
 
插入SOA记录
 
INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`, `ttl`,`mx_priority`,
 
`refresh`, `retry`, `expire`, `minimum`, `serial`, `resp_person`, `primary_ns`,`second_ns`,
 
`data_count`) VALUES
 
('201.16.172.in-addr.arpa', '@', 'SOA', 'ns1.vtest.org.', 10, NULL, 600, 3600, 86400,
 
10, 2011061200, 'vtest.org.', 'ns1.vtest.org.','ns2.vtest.org.',0);
 
插入@和NS记录
 
INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`) VALUES
 
('vtest.org', '@', 'NS', 'ns1.vtest.org.'),
 
('vtest.org', '@', 'NS', 'ns2.vtest.org.');
 
插入NS和A记录
 
INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`) VALUES
 
('201.16.172.in-addr.arpa', '204', 'PTR', 'www1.vtest.org.'),
 
('201.16.172.in-addr.arpa', '205', 'PTR', 'www2.vtest.org.');
 
总之设置方面一句话,只要明白zone记录的写法一切就OK了!思路方面:多类比,多尝试,遇到问题不要急于找资料,先理顺思路、分析透彻,一切慢慢来

 

http://itsecureadmin.com/2010/09/bind-dlz-with-mysql/

Linux Netcat 命令——网络工具中的瑞士军刀

netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。

netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。

下面是一些使用netcat的例子.

[A(172.31.100.7) B(172.31.100.23)]

fangjun105
fangjun105
翻译于 昨天(11:19)

2人顶

 

 翻译的不错哦!

Linux netcat 命令实例:

1,端口扫描

端口扫描经常被系统管理员和黑客用来发现在一些机器上开放的端口,帮助他们识别系统中的漏洞。

$nc -z -v -n 172.31.100.7 21-25
可以运行在TCP或者UDP模式,默认是TCP,-u参数调整为udp.

z 参数告诉netcat使用0 IO,指的是一旦连接关闭,不进行数据交换(译者注:这里翻译不准,如有其它更好的,请指出)

v 参数指使用冗余选项(译者注:即详细输出)

n 参数告诉netcat 不要使用DNS反向查询IP地址的域名

这个命令会打印21到25 所有开放的端口。Banner是一个文本,Banner是一个你连接的服务发送给你的文本信息。当你试图鉴别漏洞或者服务的类型和版本的时候,Banner信息是非常有用的。但是,并不是所有的服务都会发送banner。

一旦你发现开放的端口,你可以容易的使用netcat 连接服务抓取他们的banner。

$ nc -v 172.31.100.7 21
netcat 命令会连接开放端口21并且打印运行在这个端口上服务的banner信息。
葱油拌面
葱油拌面
翻译于 昨天(12:48)

1人顶

 

 翻译的不错哦!

Chat Server

假如你想和你的朋友聊聊,有很多的软件和信息服务可以供你使用。但是,如果你没有这么奢侈的配置,比如你在计算机实验室,所有的对外的连接都是被限制的,你怎样和整天坐在隔壁房间的朋友沟通那?不要郁闷了,netcat提供了这样一种方法,你只需要创建一个Chat服务器,一个预先确定好的端口,这样子他就可以联系到你了。

Server

$nc -l 1567

netcat 命令在1567端口启动了一个tcp 服务器,所有的标准输出和输入会输出到该端口。输出和输入都在此shell中展示。

Client

$nc 172.31.100.7 1567
不管你在机器B上键入什么都会出现在机器A上。
葱油拌面
葱油拌面
翻译于 昨天(13:03)

1人顶

 

 翻译的不错哦!

其它翻译版本(1)

3,文件传输

大部分时间中,我们都在试图通过网络或者其他工具传输文件。有很多种方法,比如FTP,SCP,SMB等等,但是当你只是需要临时或者一次传输文件,真的值得浪费时间来安装配置一个软件到你的机器上嘛。假设,你想要传一个文件file.txt 从A 到B。A或者B都可以作为服务器或者客户端,以下,让A作为服务器,B为客户端。

Server

$nc -l 1567 < file.txt
Client
$nc -n 172.31.100.7 1567 > file.txt
这里我们创建了一个服务器在A上并且重定向netcat的输入为文件file.txt,那么当任何成功连接到该端口,netcat会发送file的文件内容。

在客户端我们重定向输出到file.txt,当B连接到A,A发送文件内容,B保存文件内容到file.txt.

没有必要创建文件源作为Server,我们也可以相反的方法使用。像下面的我们发送文件从B到A,但是服务器创建在A上,这次我们仅需要重定向netcat的输出并且重定向B的输入文件。

B作为Server

Server

$nc -l 1567 > file.txt

Client

nc 172.31.100.23 1567 < file.txt
葱油拌面
葱油拌面
翻译于 昨天(13:25)

1人顶

 

 翻译的不错哦!

4,目录传输

发送一个文件很简单,但是如果我们想要发送多个文件,或者整个目录,一样很简单,只需要使用压缩工具tar,压缩后发送压缩包。

如果你想要通过网络传输一个目录从A到B。

Server

$tar -cvf – dir_name | nc -l 1567

Client

 

$nc -n 172.31.100.7 1567 | tar -xvf -
这里在A服务器上,我们创建一个tar归档包并且通过-在控制台重定向它,然后使用管道,重定向给netcat,netcat可以通过网络发送它。

在客户端我们下载该压缩包通过netcat 管道然后打开文件。

如果想要节省带宽传输压缩包,我们可以使用bzip2或者其他工具压缩。

Server

 

$tar -cvf – dir_name| bzip2 -z | nc -l 1567

通过bzip2压缩

Client

 

$nc -n 172.31.100.7 1567 | bzip2 -d |tar -xvf -
使用bzip2解压
葱油拌面
葱油拌面
翻译于 昨天(13:38)

1人顶

 

 翻译的不错哦!

5. 加密你通过网络发送的数据

如果你担心你在网络上发送数据的安全,你可以在发送你的数据之前用如mcrypt的工具加密。

服务端

$nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > file.txt
使用mcrypt工具加密数据。

客户端

$mcrypt –flush –bare -F -q -m ecb < file.txt | nc -l 1567
使用mcrypt工具解密数据。

以上两个命令会提示需要密码,确保两端使用相同的密码。

这里我们是使用mcrypt用来加密,使用其它任意加密工具都可以。

showme
showme
翻译于 昨天(17:57)

1人顶

 

 翻译的不错哦!

6. 流视频

虽然不是生成流视频的最好方法,但如果服务器上没有特定的工具,使用netcat,我们仍然有希望做成这件事。

服务端

$cat video.avi | nc -l 1567
这里我们只是从一个视频文件中读入并重定向输出到netcat客户端
$nc 172.31.100.7 1567 | mplayer -vo x11 -cache 3000 -

这里我们从socket中读入数据并重定向到mplayer。

showme
showme
翻译于 昨天(13:14)

1人顶

 

 翻译的不错哦!

7,克隆一个设备

如果你已经安装配置一台Linux机器并且需要重复同样的操作对其他的机器,而你不想在重复配置一遍。不在需要重复配置安装的过程,只启动另一台机器的一些引导可以随身碟和克隆你的机器。

克隆Linux PC很简单,假如你的系统在磁盘/dev/sda上

Server

$dd if=/dev/sda | nc -l 1567
Client
$nc -n 172.31.100.7 1567 | dd of=/dev/sda
dd是一个从磁盘读取原始数据的工具,我通过netcat服务器重定向它的输出流到其他机器并且写入到磁盘中,它会随着分区表拷贝所有的信息。但是如果我们已经做过分区并且只需要克隆root分区,我们可以根据我们系统root分区的位置,更改sda 为sda1,sda2.等等。
葱油拌面
葱油拌面
翻译于 昨天(19:35)

1人顶

 

 翻译的不错哦!

8,打开一个shell

我们已经用过远程shell-使用telnet和ssh,但是如果这两个命令没有安装并且我们没有权限安装他们,我们也可以使用netcat创建远程shell。

假设你的netcat支持 -c -e 参数(默认 netcat)

Server

$nc -l 1567 -e /bin/bash -i
Client
$nc 172.31.100.7 1567
这里我们已经创建了一个netcat服务器并且表示当它连接成功时执行/bin/bash

假如netcat 不支持-c 或者 -e 参数(openbsd netcat),我们仍然能够创建远程shell

Server

$mkfifo /tmp/tmp_fifo $cat /tmp/tmp_fifo | /bin/sh -i 2>&1 | nc -l 1567 > /tmp/tmp_fifo
这里我们创建了一个fifo文件,然后使用管道命令把这个fifo文件内容定向到shell 2>&1中。是用来重定向标准错误输出和标准输出,然后管道到netcat 运行的端口1567上。至此,我们已经把netcat的输出重定向到fifo文件中。

说明:

从网络收到的输入写到fifo文件中

cat 命令读取fifo文件并且其内容发送给sh命令

sh命令进程受到输入并把它写回到netcat。

netcat 通过网络发送输出到client

至于为什么会成功是因为管道使命令平行执行,fifo文件用来替代正常文件,因为fifo使读取等待而如果是一个普通文件,cat命令会尽快结束并开始读取空文件。

在客户端仅仅简单连接到服务器

Client

$nc -n 172.31.100.7 1567
你会得到一个shell提示符在客户端
葱油拌面
葱油拌面
翻译于 昨天(20:05)

1人顶

 

 翻译的不错哦!

其它翻译版本(1)

反向shell

反向shell是人曾经在客户端打开的shell。反向shell这样命名是因为不同于其他配置,这里服务器使用的是由客户提供的服务。

服务端

$nc -l 1567
在客户端,简单地告诉netcat在连接完成后,执行shell。

客户端

$nc 172.31.100.7 1567 -e /bin/bash
现在,什么是反向shell的特别之处呢 
反向shell经常被用来绕过防火墙的限制,如阻止入站连接。例如,我有一个专用IP地址为172.31.100.7,我使用代理服务器连接到外部网络。如果我想从网络外部访问 这台机器如1.2.3.4的shell,那么我会用反向外壳用于这一目的。 
showme
showme
翻译于 昨天(17:49)

1人顶

 

 翻译的不错哦!

10. 指定源端口

假设你的防火墙过滤除25端口外其它所有端口,你需要使用-p选项指定源端口。

服务器端

$nc -l 1567

客户端

$nc 172.31.100.7 1567 -p 25

使用1024以内的端口需要root权限。

该命令将在客户端开启25端口用于通讯,否则将使用随机端口。

Lax
Lax
翻译于 昨天(14:46)

1人顶

 

 翻译的不错哦!

11. 指定源地址

假设你的机器有多个地址,希望明确指定使用哪个地址用于外部数据通讯。我们可以在netcat中使用-s选项指定ip地址。

服务器端

$nc -u -l 1567 < file.txt

客户端

$nc -u 172.31.100.7 1567 -s 172.31.100.5 > file.txt

该命令将绑定地址172.31.100.5。

这仅仅是使用netcat的一些示例。

其它用途有:

  •     使用-t选项模拟Telnet客户端,
  •     HTTP客户端用于下载文件,
  •     连接到邮件服务器,使用SMTP协议检查邮件,
  •     使用ffmpeg截取屏幕并通过流式传输分享,等等。其它更多用途。

简单来说,只要你了解协议就可以使用netcat作为网络通讯媒介,实现各种客户端。

参考文档

Netcat手册

Records:1212