精华内容
下载资源
问答
  • 深入理解Windows概念

    万次阅读 多人点赞 2015-12-16 12:18:11
    在说域这个概念之前,我们先来回忆一下工作组.  首先,工作组中,每一台计算机都独立维护自己的资源,不能集中管理所有网络资源.  其次,每一台计算机都在本地存储用户的帐户  第三,一个账户只能登陆到一台计算机...

    原文地址:http://angerfire.blog.51cto.com/198455/43217

    在说域这个概念之前,我们先来回忆一下工作组. 

    首先,工作组中,每一台计算机都独立维护自己的资源,不能集中管理所有网络资源. 
    其次,每一台计算机都在本地存储用户的帐户 
    第三,一个账户只能登陆到一台计算机 
    第四,工作组中计算机都是平等的,对于其他计算机来说即是服务器,也是客户机. 
    第五,工作组的网络规模一般少于10台计算机. 

    记得以前有个小弟弟(某企业网络管理员),刚开始全单位8台计算机,他用的是工作组管理模式 
    网络配置很轻松,几乎不用管理.哪台机器有问题 就去哪来机器上解决.工作强度也不是很大. 
    不到3个月时间.随着企业信息化的需要,公司的计算机台数增加到了50台.这个小弟弟采用同样的管理方式. 
    每天都很忙碌,从早上到公司到晚上离开,一直在解决网络中用户的计算机故障问题,病毒\IE首页篡改\甚至出现了公司内部恶意攻击的事件,经常晚上加班,通宵达旦的工作.但问题总是解决不了. 
    一个月后,他被辞退了. 
    为什么会这样呢?有没有更简单方便的管理方式呢? 

    下面我们来看这么个例子: 
    如果我们把工作组看成是原始社会,各服务器(人)各自为政 
    再想想刚刚的例子,小张公司的8台电脑最开始都是各自为政的, 
    所以就不存在管理的概念, 
    小张只能充当一个哪里出问题就去哪解决的故障排除机器般的被动角色. 
    那么在网络日益应用广泛,结构越来越复杂的今天,我们可不可以,让我们的计算机网络世界也进化一下呢? 
    比如在计算机中通过网络成立一个国家,在公司的一定范围内实现集中管理,中央集权!! 
    (微软替我们想到了这一点,也做到了这一点,从微软的NT时代就提出的域的概念,演化到现在也就是我们的单域环境.)
    一个国家可以管理的范围只在一个国家内(适合一些规模小,地域范围跨度小的公司),想做更复杂 范围更广阔的管理,需要什么样的体制呢? 

    感谢地球,因为我们有联合国,欧盟. 
    实现多个基本管理范围(国家,域)的联合管理.减少这些基本管理范围内的重复管理工作. 
    方便相互之间资源调用.(也就是现在域森林 多域的网络环境为当今的跨地域性企业提供了高效适合管理的网络管理方式.

    那么我们继续刚刚的例子,来看看活动目录域的定义 

    首先 谁能加入联合国(活动目录中能放哪些对象
    其次 共同遵守的设定和规则(通用性设定
    第三 不干涉别国内政(各域数据原则上由该数据所在的域进行管理

    我们何以把活动目录当作一个联合国,其中包括了所有的成员国信息,大家遵守统一的规则,每个成员国各自管理自己的国家. 

    那么每个成员国以及每个国家中的人(域和域中的计算机)如何去其他国家呢,走什么样的路线呢?国家与国家之间又怎样联系彼此呢? 

    DNS这个具有全球定位系统服务的管理机构,也就是我们的联合国管理委员会,帮助我们解决了这个问题. 
    准确的定位各个国家的位置,并为各个国民提供了方便的查询服务. 
    我们想要去某个国家,想在某个国家内享受一个国民的基本权利,比如取得这个国家提供的最低生活保证金(访问域中的网络资源:如共享文件,打印),就连想要加入某个国家国籍(加入域)都必须通过DNS这个机构为我们指引. 


    有的人容易把域林 域树 子域的概念搞混 

    那么在这里提出来再解释一下 

    结构关系:域林和树 可以看成我们的联合国和成员国(国家内的省,省内的县市,县市内的村子) 这种管理结构关系 
    称呼名词:而子域这个名称是相对的,可以看作一个相对某个成员国中的某一个省或者相对某个省的某一个县. 

    这里有牵扯到一个名词:DC(域控制器) 
    我们可以把它看成一个国家的首都(也就是一台物理服务器上安装了AD活动目录). 
    我们的所有的国民的户籍信息都存储在这里. 

    =============================================================================

    来说说加入域的问题。
    有人加入域时很顺利,几分钟甚至几秒的功夫,完毕。
    有人加入域时很恼火,折腾了一天甚至几天始终丈二和尚莫不找头脑。
     
          有个学生,很勤奋,喜欢动手,拿着实验要求迅速动手就开始做了。dcpromo完成后,马上开始加入域,但一直提示无法联系到域控制器。他也很好问,马上就举手问了:老师,我加不进去域? 反问:为什么加不进去?学生回答:不知道。继续:检查一下,看看系统提示。学生继续:提示联系不到域控制器。继续引导:那么回忆一下,用什么工具或者命令检测通讯问题?学生:ping。(ping完DC 显示ping通)通着呢啊,怎么加不进去?引导:我们在创建域的时候,说域的概念的时候,提到一个全球卫星定位系统,说加入域的时候必须靠他来。。。?学生回答:定位DC!(运行中敲入NSLOOKUP 域名 后果然解析不了。检查客户机DNS,空白。)填写正确DNS后,问题解决,成功加入域。引导后反问:这下找到问题了?有排查问题的思路了没?学生:有了,谢谢老师。
     
         通过上面的例子,可以发现勤奋和好问是各位新手朋友本身就有的精神,而且思路是晋级更高层次的通行证。有了思路,我们就可以在工作和学习中,不断了深入浅出的研究各种题材的实验,从而让自己飞得更高。
         回归正题:DNS,域名解析系统,并不是一项单纯的服务,而且广泛意义上的全球的域名解析系统,由若干台DNS服务器以及DNS成员机组成的这么一个计算机组织。
                            在域环境中DNS的作用:
                            1、以DNS标准命名(域的命名
                            2、支持DC(创建DC时,要有相应的DNS的支持
                            3、定位DC(加入域时,帮助地球人找到DC
        有了以上的知识准备,我们来看看加入域需要注意的几点:
                             1、联系问题:a.ping通DC、DNS服务器(确保可以和DC、DNS服务器通信,要加入对方的国际你就必须和对方的政府“DC”以及大使馆“最近的DNS服务器”联系) b.DNS解析DC(通过dns得知DC的所在“大使馆告诉你如何找到相关的人事部门,当然就会告诉你DC的地址了”),【可以使用nslookup 命令+域名 来检测客户机DNS是否正确设置】
                             2、权限问题:加入域的时候,会提示输入相应有加入域权限的用户名密码。这里有很多人有误区,认为只有administrator才能通过加入域的验证,所以一直用administrator来验证加入域。其实用一个普通的domain user也是可以的,新建的域用户可以为非域成员机验证加入域。域,就象一个国家,是需要发展的,能够吸纳的有识之士越多,这个国家就越壮大,所以每一位国民,都有权利一传十十传百的。
                            3、登陆问题:加入域后不是万事大吉了,很多朋友直接拿administrator登陆了。殊不知,此举还是登陆了本地计算机。需要大家在登录时点击选项,在登录到中选择所加入的域。
                          
     
     *特殊问题:
                         a.  sid问题,如果加入域的计算机中系统是GHOST安装并没有重新封装过的话,就需要重新封装了,封装办法,及sid说明见微软级DNA手术-新SID的诞生之系统封装 》      
                         b.dns服务器故障,如果客户端dns填写正确(当前网络环境中的DNS【内网DNS】)   ,但是同样无法联系到DC,并且可以ping通DNS 和DC的话,那么十有八九是你的DNS服务器出故障了,定位信息记录在dns服务的srv资源记录中。可能是相关的SRV资源记录没有生效或者不存在,那么如何是好呢?记住这个办法:在服务管理器(运行中输入:services.msc)中重启net logon服务,当然这项操作要去DNS服务器上解决哦。别找错了 地方。
     
     总结:今天跟大家分享了加入域的几个问题。并拓展出几个系统概念。在这里总结一下。
              1、DNS(概念、作用、故障排除、检测工具)
              2、sid(加入域时两台系统sid相同的计算机没办法同时加入域,产生现象的原因时GHOST克隆系统)
              3、权限问题(验证计算机加入域的用户不一定非要administrator)

    展开全文
  • Windows 7下通过anaconda安装tensorflow

    万次阅读 2017-08-11 17:02:26
    本贴解决目的:Windows 7下通过anaconda安装tensorflow今天说一下通过Anaconda安装tensorflow,并安装运行spyder编译器。网上很多教程不全,官网的也没有详细讲解,通过我的不断试错和寻找解决方案,给大家一个正确...

    本贴解决目的:Windows 7下通过anaconda安装tensorflow

    今天说一下通过Anaconda安装tensorflow,并安装运行spyder编译器。网上很多教程不全,官网的也没有详细讲解,通过我的不断试错和寻找解决方案,给大家一个正确完整最新的教程。

    先介绍下Anaconda和TensorFlow:

    什么是 Anaconda?

    Anaconda is the leading open data science platform powered by Python.
    Anaconda 是一个由 Python 语言编写领先的开放数据科学平台

    什么是 TensorFlow?

    TensorFlow is an open source software library for numerical computation using data flow graphs.
    TensorFlow是一个开源软件库,用于使用数据流图进行数值计算。

    TensorFlow r0.12 及以后版本添加了对 windows 系统的支持,自此实现了三大平台,一套代码多平台运行。安装 TensorFlow 方式有很多种,下面使用 Anaconda 在 windows10 安装 TensorFlow (CPU版)。

    1.下载 Anaconda

    在 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 寻找你与你电脑系统对应的版本,我这里使用 Anaconda3-4.2.0-Windows-x86_64.exe

    https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-4.2.0-Windows-x86_64.exe

    下载并安装完成后,打开 CMD, 输入 'conda --version', 如果输出如下信息

    conda 4.2.0

    Anaconda 安装成功。

    接下来需要设置 Anaconda 仓库镜像,因为默认连接的是国外镜像地址,下载速度比较慢,我们把镜像地址改为清华大学开源软件镜像站,打开 Anaconda Prompt, 输入:

    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --set show_channel_urls yes

    总的来说,Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。

    这里先解释下conda、anaconda这些概念的差别。conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。其实还有Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择[1]。

    2.安装 TensorFlow

    在 Anaconda Prompt 窗口或者cmd下输入以下命令,去创建tensorflow的conda环境

    conda create -n tensorflow python=3.5

    按回车。

    表示创建 TensorFlow 依赖环境,TensorFlow 目前不支持Python3.6,这里我们使用Python3.5。

    注意如果你上一步安装的是Anaconda2-4.x.x-Windows-x86_64.exe的anaconda,这里就不要通过命令:condacreate -n tensorflow python=3.5 去创建python3.0以上的环境了,亲身实测安装后会打不开anaconda navigator,而且使用spyder测试时老出错。可能是由于Anaconda2只支持python2.7的版本,对python3.0以上的支持不好,在这种情况下升级python3.0+的版本,可能会发生冲突。但Anaconda3本身就是支持python3.0+的版本的,所以可以放心的通过命令:condacreate -n tensorflow python=3.5 去创建对tensorflow支持良好的稳定的python3.5开发环境。如果打不开spyder或者Ipython,可以参考https://www.zhihu.com/question/48724738尝试修改,但最好还是安装Anaconda3。

    继续看控制台输出:

    Fetching package metadata ...............
    Solving package specifications: .
    
    Package plan for installation in environment D:\Program Files\anaconda\envs\tensorflow:
    
    The following NEW packages will be INSTALLED:
    
        pip:            9.0.1-py35_1  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
        python:         3.5.3-0       https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
        setuptools:     27.2.0-py35_1 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
        vs2015_runtime: 14.0.25123-0  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
        wheel:          0.29.0-py35_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
    
    Proceed ([y]/n)? y

    提示我们安装哪些依赖软件,输入‘y’,回车。

    控制台继续输出:

    python-3.5.3-0 100% |###############################| Time: 0:00:42 754.91 kB/s
    setuptools-27. 100% |###############################| Time: 0:00:00   1.92 MB/s
    wheel-0.29.0-p 100% |###############################| Time: 0:00:00   2.68 MB/s
    pip-9.0.1-py35 100% |###############################| Time: 0:00:00   2.31 MB/s
    #
    # To activate this environment, use:
    # > activate tensorflow
    #
    # To deactivate this environment, use:
    # > deactivate tensorflow
    #
    # * for power-users using bash, you must source
    #

    开始下载安装依赖软件,注意以下通过pip安装tensorflow的过程需要在tensorflow环境下,需要通过如下命令激活tensorflow环境

    然后继续输入命令激活tensorflow这个环境:

    [java] view plain copy
    1. activate tensorflow  
    接下来你可以选择安装CPU版本tensorflow,也可以安装GPU版本tensorflow。

    先说CPU版本的tensorflow。输入以下命令:

    pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.1.0-cp35-cp35m-win_amd64.whl 

    GPU版本输入以下命令:

    pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.1.0-cp35-cp35m-win_amd64.whl 

    pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.1.0-cp35-cp35m-win_amd64.whl  

    由于国外的镜像下载比较慢,所以我在这里使用的是清华大学镜像仓库,下载速度会比较快。

    安装 CPU 版本:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ https://mirrors.tuna.tsinghua.edu.cn/tensorflow/windows/cpu/tensorflow-1.1.0-cp35-cp35m-win_amd64.whl

    安装GPU版本:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple https://mirrors.tuna.tsinghua.edu.cn/tensorflow/windows/gpu/tensorflow_gpu-1.1.0-cp35-cp35m-win_amd64.whl

    注意上面两条命令的输入都是在conda 的tensorflow环境下输入的,如何区分?就是窗口的命令前缀有个类似于: copy

    (tensorflow)E:>  
    这样的前缀的就可以了,这样我们后面的spyder等也将会在这个环境下安装运行。

    如果控制台最终输出 如下信息表示安装成功。
    你也可以打开 https://mirrors.tuna.tsinghua.edu.cn/tensorflow/ 选择合适的 whl 文件地址进行安装;或者打开https://mirrors.tuna.tsinghua.edu.cn/help/tensorflow/ 可视化选择 whl 版本。

    Successfully installed numpy-1.12.1 protobuf-3.3.0 six-1.10.0 tensorflow-1.1.0 werkzeug-0.12.2

    激活 TensorFlow 虚拟环境后,当不使用 TensorFlow 时,使用 deactivate tensorflow 关闭。

    如果想安装其他版本Python(如python3.5.2)可以输入:

    [java] view plain copy
    1. conda install python=3.5.2   

    3.测试验证是否可以使用。

    输入:Python,进入Python编程环境。然后输入:

    [java] view plain copy
    1. >>> import tensorflow as tf  
    2. >>> hello = tf.constant('Hello, TensorFlow!')  
    3. >>> sess = tf.Session()  
    4. >>> print(sess.run(hello))  
    正确的话,会输出:

    [java] view plain copy
    1. Hello, TensorFlow!  
    更多用法学习,进入https://www.tensorflow.org/get_started/

    4.接下来我们安装和运行Spyder编译器。

    默认情况下Anaconda已经安装了个Spyder,但是这个是在Anaconda下的,不是在TensorFlow环境下的版本,所以会导致无法引用tensorflow模块。

    那么我们接下来进入到Anaconda Navigator下,去安装tensorflow下的Spyder。



    默认这个tensorflow环境里是没有spyder的,我们可以在上面搜索spyder,然后安装即可。

    我们搜索后,这里就有两个Spyder了。默认的Anaconda环境下是Spyder3,Tensorflow环境下的是Spyder2。

    5.那我们可以直接点击运行,或者输入命令运行Spyder。




    输入代码测试:

    import tensorflow as tf
    a= tf.constant(10)
    b= tf.constant(26)
    sess = tf.Session()
    sess.run(a+b)

    没有报错,正确在console输出:

    [java] view plain copy
    1. 36
    那么,我们通过Anaconda在Windows下安装TensorFlow及Spyder编译器就成功了。

    如果你想使用PyCharm,那么在PyCharm中设置解释器即Project Interpreter为虚拟env下的python.exe。即类似:E:\Anaconda\envs\tensorflow\python.exe


    另外,如果在安装GPU版本的tensorflow时出现了问题,可以参考http://blog.csdn.net/sb19931201/article/details/53648615这篇文章。亲测,我遇到的问题,按照这篇博文的方式已经解决。

    当我安装完成tensorflow-gpu和cuda,cudnn时,激活tensorflow-gpu环境,在命令行下输入python进入环境,输入import tensorflow as tf 就出现了一大堆错误。在安装cuda时也花费了点时间,一路上下载各种软件和补丁,又是允许加入环境变量,又是允许注册、更改的,以为在安装cuda时出错了呢。所以就查资料,了解到:TensorFlow 是一个编程系统, 使用图来表示计算任务,图必须在Session(会话)里被启动。Session将图的op(操作)分发到诸如CPU或GPU之类的设备上运行。所以,这个时候你运行python然后import tensorflow as tf一般是不会报错的(我的在这里就报错了,但按照下面的步骤操作后成功运行起来gpu了),但是当你要执行tf.Session()的时候可能就有问题了。这个时候将会调用cuda,我在这里遇到的问题是各种lib,dll加载不了。经过一番检查,定位到问题,cuda安装完成后默认的环境变量配置不对,CUDA_PATH是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0,但是这样不能直接访问到bin和lib\x64下的程序包,在path中加上这两个路径即可。

    再发一波车,结果还有问题…还有一个库加载不了,就是上面的cuDnn库了,很简单,解压刚才下下来的安装包,将这三个文件夹(bin,include,lib)下的文件拷到CUDA对应的文件夹(bin,include,lib)下面即可。 

    这样就大功告成了。

    TensorFlow-gpu测试

    (1).代码测试:

    import tensorflow as tf

    hello = tf.constant('Hello, TensorFlow!')
    sess = tf.Session()
    

    (2).官方教程代码测试:

    The TensorFlow implement 
    ation translates the graph definition into executable operations distributed across available compute resources, such as the CPU or one of your computer’s GPU cards. In general you do not have to specify CPUs or GPUs explicitly. TensorFlow uses your first GPU, if you have one, for as many operations as possible.

    #Creates a graph.
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)
    #Creates a session with log_device_placement set to True.
    sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
    #Runs the op.
    print sess.run(c)
    

    输出:

    Device mapping:
    /job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Tesla K40c, pci bus
    id: 0000:05:00.0
    b: /job:localhost/replica:0/task:0/gpu:0
    a: /job:localhost/replica:0/task:0/gpu:0
    MatMul: /job:localhost/replica:0/task:0/gpu:0
    [[ 22.  28.]
     [ 49.  64.]]
    

     

    (2).example 测试

    下载github上的tensorflow源码,里面有很多示例代码

    run example:

    python mnist_with_summaries.py
    ..............................
    

    结果刚发车就熄火了…couldn't open CUDA library cupti64_80.dll

    I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cupti64_80.dll
    

    查了一下,这个dll在NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\CUPTI\libx64,因为这个也没添加到系统变量,简单的处理方式,把这里面的文件也拷到环境变量的bin文件夹下。

    再次启动,终于愉快的run起来了。

    最后想看看gpu情况,搜到了这个:NVIDIA System Management Interface 
    其实在安装路径下已经有了C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi 
    具体怎么操作,还在探索中…


    参考文献:

    [1]Anaconda使用总结[OL].2016.http://www.jianshu.com/p/2f3be7781451

    [2]Installing TensorFlow on Windows[OL].2016.https://www.tensorflow.org/install/install_windows

    展开全文
  • 关于Windows

    千次阅读 2010-06-24 00:34:00
    关于Windows 关于WINDOWS核心编程》这本书,看了许多次了。有些地方看了许多遍,总的来说是全拉通了一次。但感觉收获不多。于是决定从头开始,一边看一边实践,进一步打牢自己的基础。 有些...

    关于Windows

         

          关于《WINDOWS核心编程》这本书,看了许多次了。有些地方看了许多遍,总的来说是全拉通了一次。但感觉收获不多。于是决定从头开始,一边看一边实践,进一步打牢自己的基础。 有些东西工作中是用不上了,所以只好自己回家练习。 不管如何,重在坚持。打算系统地过一遍WINDOWS编程的相关知识,没有一个稳固的系统的知识体系是完全不行的。

    打算就此开始吧。

    从前言开始吧。。。

          不得不说,我们太依赖微软了,特别是在PC平台上做开发的朋友们。甚至许多开发出来的产品也是针对WINDOWS平台而言的,这就不得不促使我们对这个系统有一个良好的把握。其实我也不想,但无奈也是“寄人篱下”。并且,多了解了解总没有坏处吧。 反正不会遇到

    有人对我说“你知道得太多了”。

          笔者介绍了3种不同的操作系统内核,WINDOWS 2000,WINDOWS 98,WINDOWS CE。 其实东西都是差不多,只是对于与平台接触的地方,都经过了专门的优化,以使之适应某种特定的计算机环境。MS声称每种平台都提供了相同的API,以便吸引软件开发人员使用WINDOWS。 但是,话又说回来。真正用于开发的,并不是API的使用,而是对整个系统的内存、资源等等的管理有一个深刻的理解才行。而不同的平台之前总是有差异的。有些差异不足为道,但有一些却很致命。 对于高级API,比如GUI方面的,我们大可做到不用理会平台相关性。但对于某些特定的事物,如内存操作、线程调度等。就不得不使我们要更加关注系统底层,了解其管理方法。才能够编写出正确而高效的程序。 正如    《WINDOWS核心编程》的作者所说“本书讲述了如何使用WIN API来编写应用程序,因此本书中学习的任何知识,理论上都适用于所有的内核。实际上,各个内核是有差异的,操作系统的功能是用不同的方法来实现的。这意味着不同的内核的基本概念相同,但是它们的具体细节不同”。

    WINDOWS 2000内核

          Windows 2000内核是MS推出的高端操作系统。它具有很多特性,下面是它的部分特性:

           1、它可以作为工作站、服务器和数据中心来运行。

           2、该系统非常健壮,它能避免编写得不够出色的应用程序导致系统的崩溃。

           3、该系统非常安全,它能防止未经授权的人访问系统管理的资源(如文件和打印机)。

           4、它拥有着非常丰富的工具和实用程序,可供机构中的管理人员管理操作系统。

           5、内核大多是用C/C++编写,因此该系统可以很容易移植到其它CPU结构中去。

           6、该系统本身就能支持Unicode,因此,用其他国家的语言进行系统的本地化和运行是非常容易的。

           7、它的内存管理特性提供了极其丰富的功能,效率很高。

           8、运用结构化异常处理(SHE)特性,可以非常方便地处理错误和恢复。

           9、动态链接库DLL使得系统的可扩展非常方便。

         10、多线程和对多处理器的支持,使得系统具备很好的伸缩性,便于性能的改进。

         11、文件系统的出色特性可以用来很好地跟踪用户是如何处理他们的计算机上的数据的。

    哇哈哈,一看就这么多特性,首先不说他们的真实性。突然发现要了解的东西挺多的。如SHE,DLL,内存管理机制,多处理器支持等等东西。有些东西不能总是停留在表面,需要深入,并动手实践。另外,这个系统非常安全的特性个人觉得很搞笑。。。

    WINDOWS 98内核

          看名字就比较早了,但放到WIN 2000后面说,是因为先说新的再提旧的比较好。这个系统也是MS公司面向消费者推出的操作系统内核。和2000一样,拥有许多特性,但是不够健壮(一个程序有可能导致系统的崩溃,至于为什么,书中也给出了很好的解释)。不够安全(从来就没有安全过,不是吗?),只支持单核处理器(也就是说,不能将同一个进程的多个线程分发到不同的处理器同时处理,这限制了他在硬件上的伸缩性,毕竟现在是多核时代,还好2000中有对它的补救)。同时对于Unicode的支持不如2000好。

          MS公司的目标是要取代WIN 98内核。就是因为前面的原因,不健壮,不支持多核。并且在98上修改也是很费事的,毕竟操作系统很庞大。但WIN 98的确还是存在着,那是因为WIN 98的用户友好性比较好。(当然这是作者所处的年代,目前的WIN 2000界面已相当友好了。)

    WINDOWS CE内核

         哈哈,这不必多说了吧,这是一款微型操作系统,我同事的手机就用的这个。魅族也是用的WIN CE系统。 当然,不仅是手机,许多小型硬件设备,如手提式计算机,汽车用PC,智能终端,电烤箱,微波炉,自动售货机等。由于硬件限制,使用WIN 2000和98都显得不太现实,于是MS出了这款操作系统,可谓量身定做。它的规模比2000 98都要小。

        话说,麻雀虽小,五脏具全,WIN CE的功能依然是非常强大,由于多半用于个人使用的小型计算机,所以它的内核不需要许多对管理和伸缩性的支持。显然,简单的东西不容易出错。。。   只是。。。我真的没用过~~~

    文中还提到了64位的WIN 2000,嗯,是的,已经来了,不过VISTA和WIN7我也没用过。

    书中的例子我还是打算手写,原因是当拿到源码的时候,动力立马减半。还是照着需求描述和代码片段自己搞定,较有成就感。

         

    posted @ 2010-06-24 00:34 麒麟子(Alex) 阅读(...) 评论(...) 编辑 收藏
    展开全文
  • Windows Azure 基本概念浅析

    千次阅读 2011-04-14 20:09:00
    现在,全球各地都有各种公司在搞所谓的云计算,小的就不说了,比较大的几个比如Amazon EC2, Windows Azure,Google App Engine,还有那个对Amazon非常有竞争力的Rackspace,各家都有自己的特点。大致上,我简单的...

    Windows Azure Platform不断在变化,所以它的概念什么的也不断在变动。考虑到将来童鞋们要用到这些东西,所以我基于MSDN2010年11月22日的文档以及The Windows Azure Programing Model 1.0整理了这篇文章。

     

    一、关于Windows Azure的基本概念

     

    Windows Azure 和Windows Azure 平台不是一个东西,平台指的是微软在其全球几个数据中心搭建的云服务平台,平台里包括了Windows Azure 操作系统和一些列的各种服务,比如SQL Azure等等。

     

    正如所有云计算服务一样Windows Azure 平台简化了维护技术设施和软件的工作,同时基于按需使用的原则提供了弹性的支付方案,这样一来不仅保障了基础设施的高可用性和可伸缩性,同时也保证了相比自己购买服务器和基础设施所需的覆盖长期需求的成本。

     

    Windows Azure操作系统作为Windows Azure平台的开发、运行时以及控制环境。 它内置了负载均衡以及资源的自动管理。

     

    目前,要进行Windows Azure的编程工作需要使用到以下服务和工具:

     

     

    Windows Azure Compute Services Windows Azure Storage Services Windows Azure Platform Management Portal Windows Azure Development Environment Windows Azure Tools for Visual Studio

     

     


     

    Windows Azure 计算服务

    Windows Azure提供了一套基于整个英特网级别,建立在多个分布于全球不同地区的数据中心的主机环境,用户可以使用这个环境来执行托管的代码。

    关于计算服务中的几个概念的关系如下:

     

    Windows Azure Compute Service

    --Deployment

    -- Role

    -- Role

    --Depolyment

    -- Role

    注意的是,这个Deployment Azure是不管的,每个Deployment是用VS编译出来的包,其中有几个role部署上去就用几个role

     

    目前, Windows Azure 的roles有三种:

    • Web Role :专门为Web程序配置的环境,支持IIS7和ASP.NET,它实际运行于IIS7.0之上。通常,把它用来处理外部的HTTP请求,这里还支持WCF、PHP和Java等技术
    • Worker Role: 适用于通用的程序,它可能作为Web Role的后台处理程序
    • Virtual Machine Role(VM Role)提供一个用户自定义的镜像来把现有的Windows Server 程序迁移到Windows azure 环境

    一个Services可以混合使用多种role。

    Role可能需要和运行时环境有所交互,这样就必须使用Windows Azure Managed API 。

     

     


     

    Windows Azure 存储服务

    Windows Azure Storage Servies 提供了一种在云端存储持久化数据的功能。 其主要包括以下几种基础的服务:

    • Blob服务, 用来存储文本和二进制数据
    • Queue 服务,用来存储服务局通信用的可靠的持久化消息
    • Table 服务,用来存储可以被查询的结构化数据

    Windows Azure SDK提供了REST API托管的API以用来访问存储服务。它们支持任何形式的通过HTTP/s访问

     

     


    Windows Azure 平台管理门户

     

    管理门户是用来管理用户的Windows Azure 服务的部署和监控的工具。

     

    在管理门户里面,我们会看到一些概念:

    • Deployment Health, 表示部署的项目的状态
    • Affinity Groups, 它允许用户基于地理区域组织托管的服务和存储以优化性能
    • Management Certificates, 用来允许客户端访问用户的订阅的资源
    • Reporting, 允许用户签入基于云端的SQL Azure 数据库报告服务
    • Service Bus Access,访问 AppFabric 服务门户
    • Virtual Network, 访问 Windows Azure Microsoft Connect 服务

     


     

     

    二、Windows Azure的编程模型

     

    Windows Azure虽然有VM Role,但是,它更多的是希望做到PaaS(平台即服务)层次的抽象,因此它没有完全复制旧的面向Windows Server的编程模型,而是建立了一套新的模型以期在以下三点有所提升:

    1. 管理能力:作为一个PaaS应用,平台本身负责处理掉大量的管理型事务,如系统的升级、更新、打补丁等,这样一来,让用户可以不必自己去管理程序运行的环境——这是一种非常棒的省去麻烦的做法。
    2. 可用性:避免在升级、打补丁、硬件错误或者其他原因引起的服务下线。Azure通过云平台提供的冗余措施来避免这些问题,所以Azure的编程模型本身即是以保证服务可以持续运行而设计的。
    3. 可伸缩:Azure提供的是整个互联网级别的可伸缩性。同时也允许更加弹性化的资源使用。

    Windows Azure 编程模型的三条基本规则

      想要充分利用Windows Azure平台所提供的这些好处,面向Azure开发的云端程序必须要遵守以下三条规则:

    • 一个Windows Azure程序包括一个或多个Roles(可以混合多种role)
    • 一个Windows Azure程序中的每个Roles都运行于多个Instances
    • 一个Windows Azure程序在任何一个role instance出错的时候都可以正确工作

      只有完全遵守着3条规则而开发的程序才可以让你的程序完全享受到云计算带来的好处。

     

      正如前文所说的,Azure中的Role包括三种,Web Role, Worker Role和VM Role,

    规则1:Windows Azure程序是有一个或多个role组成

      举例来说,一个程序可以使用Web Role来处理来自用户的HTTP请求然后把请求传递给Work Role来处理。这样一种方式使得整个程序具备了良好的伸缩性。

     

      对于任何一个Windows Azure程序来说,对于它的每一个role都应该至少运行两个隔离的实例。每个实例都运行于它自己的VM之上。

    下图是上面那张图的实际运行的实例的情况,可以看到,程序的每一个role都运行了多个实例,并且在不同的VM之上。开发者应该告诉Windows Azure它需要给每个Role运行多少个实例。每个Role的特定实例都运行着一模一样的代码,所以这些实例都是可以互相替换的,这样一来,Azure就可以自动的处理负载均衡和容错等问题了。但是需要注意的一点是,Azure不保证对于同一个用户的请求都能被同一个实例处理。

     

      对于上面这个程序,当它的任何一个Role的实例挂了之后,系统还能保证正常工作(除非全部Instance都挂掉,当然,这个概率比一个挂掉的概率小得多)

     

    当Web Role和Work Role的实例各挂了一个的时候

      接下来,涉及到稍微技术细节一点的东西,让我们来看看Windows Azure编程模型的细节

     

    Windows Azure 编程模型的一些工作原理

    Fabric Controller

      Windows Azure 运行在大型的数据中心中,而每一个程序的不同实例都会被部署到不同的服务器上,Fabric Controller管理数据中心里的计算机。我们部署一个云端程序的时候实际上是上传我们的服务配置文件和程序包。配置文件告诉fabric controller使用不同的主机来运行role的实例。而一旦部署成功,fabric controller会继续监控这些程序的运行,当其中某个实例挂掉了,它会启动一个新的实例。

     

      正因为有了Fabric controller,Azure才能够有如此良好的管理能力,它自动对程序和底层的系统环境进行维护和更新。这样一来,整个系统具备了良好的抵抗硬件错误带来的停机时间,

      事实上,在服务器硬件的选取上,Fabric controller不是随机的,它把一个role的不同实例配置到不同的fault domain(故障域,包括了一系列的硬件,如计算机,交换机等等——显然,它们是处于一个故障点中的)中,因此,硬件的错误不会波及到整个程序的运行。

       而在软件上,当程序的一个实例挂了,fabric controller会重启程序或者重启程序运行的VM。那么,Azure又是如何做到让程序无停机的升级的呢?类似上面的fault domain,在Azure里,role的不同实例位于不同的update domain(更新域,和fault domain 不同)。当程序的新版部署了以后,fabric controller将关闭一个更新域的实力,升级之,然后启动它。之后才对其他更新域的实例挨个处理。这样就实现了所谓的不下线升级。

      从伸缩性上看,Azure不仅允许用户指定某个role要运行多少个实例,同时也允许那些负载变化比较大的程序通过Web门户或者自己开发的程序来实时调整实例的数量。

      技术带来的这些好处看起来如此的美妙,不过,要谨记的是,Windows Azure是按每个运行的实例来收费的,所以要是用户为了节约成本而仅使用一个instance的话那他就违背了编程模型的三大原则,这样,也就无法享受到上面说的好处了。

    一些更复杂的问题

    Windows Azure编程模型所带来的不只是前面说的那三个原则,从程序的角度看,我们还必须看到的是,这个模型给我们的开发环境带来了一些新的问题,我们可以将之主要归纳为以下3个方面:

    • instances如何和OS交互
    • instances如何和持久性存储交互
    • instances之间如何交互

      首先,从操作系统的角度来看,传统的服务器系统是由运维团队来管理的,而在Azure里面,则是由Fabric Controller来控制,虽然用程序控制自动化程度高,但是我们也会遇到一些问题,比如如何让程序运行在管理员模式下,此外更加严重的问题是,instance所允许的物理服务器总是在不同的机器上,所以程序写入本地系统的信息肯定是无法保证可靠性的。虽然现在Work Role和Web Role可以运行在管理员模式下,但是,上面的问题还是没有解决的。这也就引出了第二个问题:既然程序写入本地系统的信息是没有保障的,我们编程的时候就必须知道它是非持久性的,而且为了不同的实例都能访问到数据所以数据应该被存储于role instances之外。

      同样的,存储也必须要有冗余,也必须能够处理大量的数据。对于超大型的数据,传统的关系型系统不是最好的选择,所以也就有了前文提到的blobs这样的数据结构。

    此实例中,Azure存储服务为每个实例复制了一份blob和tables数据

      在这个图例里,程序使用了两个Blob和一个Table,但是Azure storage在底层为每个实例都维护了一个数据镜像,同样也是跨物理系统的,跨故障域的,这样即使有某些镜像挂掉了,还是可以用的。不过必须注意的是,Windows Azure的这个机制使得这些数据每次只能被一个实例操作(读写)

       最后我们再来看看instances间的交互,这可是一个复杂的问题(想想进程同步问题)。。

    实例间的交互

      通常我们设计程序的时候都会分层(逻辑上的分layer或者物理上的分tier)或者分模块,这些部分通常都需要相互交互的,然而,在Azure中,这样的交互和传统程序略有不同。还记得前面提到的特定的一个role的每个实例都是等价可替换的吗?这意味着一个Web role传了一个请求给Worker Role,但是它不应该去管具体worker role的哪个实例来处理这个请求的,甚至,web role都不应该依赖于比如IP地址这样的依实例而变的星系来进行通信。我们需要一个更加通用的机制。

     

      在Azure平台上,我们的程序可以使用最通用的Windows azure queues来进行通信,它的原理如下图:

      这个例子里,一个Web role的某个instance获得了一个请求1)这个instance创建了一条包含这个请求所需的工作的信息,并把它写入Windows Azure queue(记得最上面提到的基本的3中数据结构之一,所以queue和blob一样基于相同的原理——每个实例copy一份) 2),接下来,Worker role从queue中读取消息,注意的是它并不管是那个web role写入的。在处理完工作后从queue中删除这条消息,没错,你看到的确实是Dequeue后处理完工作再删除,这和我们理解的普通队列有所不同,举例来说,在Microsoft Message Queuing技术里,一个程序可读取队列里的消息是一条原子操作,如果读取消息的程序出错,那么,这个读事务就会还原,也就是原来的消息会重现,这样就保证了MSMQ队列里的每一条消息都能按照发送的顺序被正确的提交。但是Windows Azure又有些不同,它不支持事务读操作,所以它无法保证精确的按需递交,在Azure里,一个消息可以被读并处理多次。加入某个worker role的实例读了消息,并且处理完工作了,但是在还没删除之前就挂掉了,那么这条被读取的消息在超时之后就会自动重现。Azure这样的设计机制据说是在速度和可伸缩性和上面提到的那种可靠性上的取舍——选择了速度。

      当然,除了队列之外,Azure还可以通过API来让某个实例发现其他的特定的实例,然后直接发送请求给对方。

     

     

    总结

      这篇文章先简要的介绍了一下Winows Azure Platform上的一些基本概念,然后说明了一下Windows Azure的编程模型的一些原则,并且稍微试探了一下运行在Windows Azure上的程序所需要考虑的事情。总之,在目前看来,Windows Azure相对来说还是比较易于使用的,当然,它还远不完美,让我们期待它更加的成熟吧。

    展开全文
  • windows域与工作组概念

    千次阅读 2013-03-31 10:11:32
    局域网上的资源需要管理,“域”和“工作组”就是两种不同的网络资源管理...为了解决这一问题,Windows 9x/NT/2000就引用了“工作组”这个概念,将不同的电脑一般按功能分别列入不同的组中,如财务部的电脑都列入“财务
  • 关于如何获取 Windows 系统版本号的话题,网上已经有了太多的帖子。但个人觉得总结的都不尽全面,或者没有给出比较稳定的解决方案。 众所周知,获取 Windows 系统版本的 API 是 GetVersion 和 GetVersionEx。这...
  • 正确地理解Window窗口概念

    千次阅读 2017-03-12 22:46:21
    正确的Window窗口概念应该是:通过图像的形式响应用于操作的界面。 因此,理解Window窗口就需要解答两个问题: 1、Window窗口获取用户输入的流程是怎样的? 2、Window窗口绘制图像的流程是怎样的? 首先...
  • 正确使用Windows Azure 中的VM Role

    千次阅读 2011-01-06 13:02:00
    <br />在2010 PDC大会上,我们介绍了Windows Azure中一个新增的Computational Role- VM Role 。这一特性极大的提高了我们对于应用的掌控性,但是可能会和我们Windows Hyper-V中的全基础设施方案有所混淆...
  • 为了解决这一问题,Windows98操作系统之后就引用了“工作组”这个概念,将不同的电脑按功能分别列入不同的组中,如软件部的电脑都列入“软件部”工作组中,网络部的电脑都列入“网络部”工作组中。你要访问某个部门...
  • 【计算机基础】02Windows7操作系统

    万次阅读 2020-05-05 16:41:48
    第2章 中文Windows 7操作系统 2.1 操作系统概述 2.1.1 操作系统的基本概念 计算机的大脑。告诉计算机做什么及如何做。 1. 操作系统的作用: 1)操作系统是计算机系统应用平台的组成部分 系统软件或应用软件...
  • Microsoft Windows 环境中NLS_LANG的正确设置 (文档 ID 1577370.1) 适用于: Oracle Database - Enterprise Edition - 版本 8.0.3.0 和更高版本 Oracle Database - Personal Edition - 版本 8.0.3.0 和更高版本 ...
  • Windows PowerShell是我在研究win7新特性的时候发现的新工具,起初没有对它产生太大的兴趣,只是简单看看了有关它的介绍、简单使用了一下,感觉上它和cmd.exe没有本质区别。对它产生兴趣是一个纯粹的偶然, 有一次一...
  • 通过输入输出重定向和windows批处理文件比较刷OJ题目时的程序输出和正确输出 前言 在刷OJ题目或者进行编程考试或比赛时,经常需要对编写好的程序进行测试,即运行编写好的程序,输入样例输入或者自己编写的输入数据...
  • Windows 7中引入了全新的多点触摸的概念。多点触摸又称多点触控,简而言之可以理解为一个屏幕多点操作。多点触摸不但是两个点或者几个点同时应用到屏幕上这么一点点便利,由于是多点触摸,所以他能感应到手指滑动...
  • 0911期即将上市:Windows 7: 再现辉煌

    千次阅读 2009-10-26 10:26:00
    本期封面报道: Windows 7: 再现辉煌酝酿已久的Windows 7终于在2009年10月发布了。虽然有Vista的阴影,但Windows 7的表现却得到了业界很大程度上的认可。结束8年时间的等待之后,我们终于迎来了一款值得期待的...
  • 1.本文编写目的 本文是为了帮助一些人弄清一些关于Windows API, C运行时程序库(CRT), 和标准C++库(STL)的基本概念。有很多人甚至是有经验的程序员在这些概念上是含糊不清的甚至是有错误观点。如果你想知道他们是在...
  • 64位windows7使用debug的方法

    千次阅读 2014-11-21 17:42:44
    建议直接下载emu 8086 v4.08。 (1)下载dos模拟器dosbox。...(2)下载Windows 7 32位的debug程序。 下载地址:http://u.115.com/file/b3mmegwu,可以下载,也可以到安装了32位windows7的计算机上进行拷贝。 注
  • 前言: 1、本教程针对于UEFI启动来叙述的,...Windows Boot Manager --------安装完Windows系统后而出现的启动选项(相关的信息存储在NVRAM),可以删除和建立和bcdboot.exe有关 Bootmgfw.efi --------引导Windo
  • [作者]猪头三个人网站:http://www.x86asm.com/[序言]从事Windows系统下的软件研发,已走过差不多9年的时光,在这段时间里认识不少朋友...那么这篇文章我将会详细的介绍正确的方式。[本内容适用领域]1> 基于x86-64Bit Wi
  • 【转自mos中文文章】Microsoft Windows 环境中NLS_LANG的正确设置 ] Microsoft Windows 环境中NLS_LANG的正确设置 (Doc ID 1577370.1)   文档内容   用途   适用范围 ...
  • 写在前面:这里所指 Windows域环境,统指Windows 2000/2003/2008环境。 Windows AD域环境中五大主机角色 在Windows域多主机复制环境中,任何域控制器理论上都可以更改Active Directory中的任何对象...
  • Microsoft Windows 环境中NLS_LANG的正确设置 (Doc ID 1577370.1)
  • Windows7下Maven环境搭建及其使用

    万次阅读 2016-10-21 15:02:56
    1.软件下载 1.下载JDK 下载地址: ... 下载的安装包为jdk-8u101-windows-x64.exe 2.下载Maven 下载地址:http://maven.apac
  • 触控游戏的设计—Windows Phone 7游戏开发

    万次阅读 多人点赞 2013-01-15 09:05:56
    使用.NET、XNA和Windows Phone 7开发游戏的魅力之一就在于,编写一次游戏后只需要改变很少的代码就可以在多个平台上运行。这在理论上是可以实现的,但在实践中会有些不同。 以下各节将讨论制作游戏时需要牢记的一些...
  • windows7联想OEM光盘中提取OEM证书

    千次阅读 2009-11-20 15:11:00
    虽然,工作上还没必要进入Win7时代,但对于家庭里的娱乐或游戏为主的用户,Win7却是不二的选择。而所有软件厂商向Win7的靠拢势必会迎来一个新的时代。     Win7安装手记 查看自己的电脑的BIOS信息,如果SLIC...
  • 最近爱折腾的毛病又犯了,开始折腾起Emacs,在自定义Emacs的配置文件存放位置时遇到一点问题,不过,在GNU的Emacs站点,看到这么一段话: ...On Windows, the .emacs file may be called _emacs
  • Silverlight/Windows8/WPF/WP7/HTML5周学习导读(7月16日-7月22日)本周Silverlight学习资源更新Silverlight DataGrid用法 模板列黑眼圈之家Silverlight 上传文件小顽童168Silverlight中ExcelHelper2小顽童168...
  • windows中的GPT:支持大于2TB的分区 关于 GPT 1. 什么是 GPT 磁盘? GUID 分区表 (GPT) 是作为 Extensible Firmware Interface (EFI) 计划的一部分引入的。相对于以往 PC 普遍使用的主引导记录 (MBR) 分区方案,...
  • 0 DirectShow简介  DirectShow概念  DirectShow(有时缩写如DS或DShow),开发代号Quartz,是一种由微软公司开发的能够让软件开发者对媒体文件执行各种不同处理的应用程序设计接口。基于微软公司Windows组件
  • 自然用户界面是一系列技术的合计,他包括:语音识别,多点触控以及类似Kinect的动感交互界面,他和Windows和Macs操作系统中鼠标和键盘交互这种很常见图形交互界面不同。就像图像交互界面和之前的命名行交互界面不同...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,238
精华内容 55,295
关键字:

关于windows7概念正确的是