精华内容
下载资源
问答
  • Micro:bit全称为BBC Micro:bit,是一款英国广播公司(BBC)推出的,用于青少年编程教育的ARM开发版。它主要由板载蓝牙,加速度计,电子罗盘,三个按钮,5 x 5 LED点阵组成,主要用于青少年的编程教育,文档内附Micro:...
  • jre1.8.0 64bit

    2018-08-20 15:51:29
    JRE1.8.0(Java Runtime Environment)——Java运行环境Windows64bit
  • Visual C++Redistributable 2015 这个组件是运行Visual Studio 2015所建立的C++应用的必要组件,安装一次即可解决在安装程序时缺少组件 dll 的环境问题,那么下载安装程序,这两个程序都安装一遍重启电脑即可解决。
  • 支持Bitbucket5.x,包括最新的5.11.1版本,亲测5.11.1有效,包含两个破解文件,覆盖后重启应用服务即可破解!
  • 谷歌商店下载来的,国内不好下载,作为备份上传,提供其他micro:bit开发者下载。
  • win7 intel cpu x64 环境,部署tomcat ,提示 Can't load IA 32-bit .dll on a AMD 64-bit platform 解决方法: 替换 \bin 目录下的tcnative-1.dll 为64位的版本
  • Anaconda Python3.6 的安装程序(for Windows),含有32bit 和 64bit。 下载了很久,整理出来,方便入门学习python的同学节省时间安装方便
  • 把原来的swt.jar替换成这个就能解决 Cannot load 32-bit SWT libraries on 64-bit JVM问题
  • 关于Vivado安装、生成bit文件以及烧录FPGA的简要流程说明
  • 64-bit ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy for Windows x64 [Released January 14, 2014] Download ODAC112040Xcopy_64bit.zip - 54.7 MB (57,388,125 bytes) Installation Instructions are ...
  • PLSQL Developer 64bit 12.0.4.1826官方最新版本,亲测可用(需搭配64bit Oracle客户端使用) 序列号: Product code:ljjt68k39tlbd7epj2343fqll8zcf4qzusny Serial number:982156 Password:xs374ca
  • MATLAB_R2014b_Crack(x86 32bit xp)

    千次下载 热门讨论 2015-03-04 09:55:40
    1.此方法在windows xp sp3(x86 32bit)上测试成功。 (32位的win7没有测试——因为安装一次的时间太长了,但是觉得应该能够行,如果有人试过不行的话,评论时请告知,以方便别人,谢谢) 2.请注意!该方法不适用x...
  • plsqldeveloper12(64bit)中文汉化破解版
  • Visio_Pro_2013_64Bit

    热门讨论 2017-11-15 17:50:02
    Visio_Pro_2013_64Bit 破解版,直接安装即可。 64位系统。
  • Git-2.12.0-64-bit.exe下载

    热门讨论 2017-02-27 15:12:41
    git官方最新版(2017.2.24)windows安装包
  • GCC的一个完整的编译/运行时环境(A complete runtime environment for gcc) 支持Windows 64位和32位操作系统
  • git最新版下载(Git-2.14.1-64-bit.exe)

    千次下载 热门讨论 2017-08-11 17:29:47
    git下载,上传百度云吧
  • adb interface usb driver(adb驱动 32bit&64bit) 绿色版

    万次下载 热门讨论 2014-12-25 14:37:16
    适用于插上usb线,手机adb连接不上,找不到adb interface驱动的情况.
  • Git-2.11.0-64-bit 官方下载 绿色版

    千次下载 热门讨论 2016-12-02 16:02:37
    Git-2.11.0-64-bit.exe
  • Git-2.10.2-64-bit (windows版)

    千次下载 热门讨论 2016-11-04 12:43:40
    Windows Git 2.10.2 64-bit
  • 10bit为什么比8bit节省带宽

    千次阅读 2020-09-02 23:13:51
    在编码10bit视频时用10bit进行编码会比8bit编码获得更好的质量,这个比较容易理解:使用8bit编码需要首先对原始信号进行缩放,编码后还需要缩放,缩放就会造成更多的失真。换句话说,压缩会比直接缩放带来更小的失真...

    引言

    在编码10bit视频时用10bit进行编码会比8bit编码获得更好的质量,这个比较容易理解:使用8bit编码需要首先对原始信号进行缩放,编码后还需要缩放,缩放就会造成更多的失真。换句话说,压缩会比直接缩放带来更小的失真。因此使用10bit编码器压缩10bit视频会节省带宽。
    压缩10bit视频

    然而,实际上,即使是8bit视频,采用10bit进行编码依然会比8bit编码节省带宽。即10bit始终比8bit节省带宽,与原始像素的bitdepth无关。
    压缩8bit视频

    具体原因

    接下来从以下五点进行解释:

    什么是节省带宽

    节省带宽意味着同样的视频质量,需要的bitrate更低,可以通过BD-rate来体现

    什么是较好的视频质量

    视频质量好即解码图像与原始图像之间的相似性高,误差小。

    这一点值得注意,8bit中的1位误差与10bit中的3位误差具相同的相对误差。

    可以想象,像素值为0-255时,像素值由1编为2,与像素值为0-1023时,像素值由1编为5,是不是感觉差不多的。相当于人眼的精度只能分辨1/256的变化(假设)。

    更直接的方法可以用psnr的计算公式来证明:

    8bit时, p s n r _ 8 b i t = 10 l o g 10 ( 255 ∗ 255 / m s e _ 8 b i t ) psnr\_8bit=10log10(255*255/mse\_8bit) psnr_8bit=10log10(255255/mse_8bit)

    而10bit10, p s n r _ 10 b i t = 10 l o g 10 ( 1023 ∗ 1023 / m s e _ 10 b i t ) psnr\_10bit=10log10(1023*1023/mse\_10bit) psnr_10bit=10log10(10231023/mse_10bit)

    令, p s n r _ 8 b i t = p s n r _ 10 b i t psnr\_8bit=psnr\_10bit psnr_8bit=psnr_10bit

    得, 16 ∗ m s e _ 8 b i t = m s e _ 10 b i t 16*mse\_8bit=mse\_10bit 16mse_8bit=mse_10bit

    假设只有一个像素,原始像素值为 p _ s r c p\_src p_src,重建像素值为 p _ d e c p\_dec p_dec

    则有4 * (p_dec_8bit - p_src) = p_dec_10bit - p_src

    所以懂了吧,10bit的误差可以是8bit的4倍,但是可以获得相同的PSNR

    压缩过程中的失真是如何产生的

    视频压缩过程中,主要产生失真的过程是量化。

    量化可以简单理解为变换系数除以量化步长。

    量化后的值再经过反量化得到的变换系数就与量化前的系数产生了误差。

    因为量化是多对一的过程,多个变换系数会被量化成一个值,而反量化是一对一的过程,因此没办法完全恢复,所以就有了失真。

    编码器如何编码10bit视频

    上面说过,因为失真是相对的,所以10bit可以用4倍于8bit的量化步长而获得同样的相对失真,即PSNR。

    而由于10bit用的量化步长是8bit的4倍,他们最终的量化等级数就都是一样的,也就是最终的比特数都是一样的。

    比如8bit的量化步长如果是8的话,那0-255会被量化成32个等级,而10bit的量化步长就可以用32,最终也是32个量化等级。

    相当于量化系数都是0-31,再熵编码是不是比特数也一样了呢。

    照这样说,那10bit的编码结果应该和8bit完全一样呀,为什么会更好呢,我们接着往下说.

    为什么10bit编码器要优于8bit编码器

    当编码器使用10bit编码时,相比8bit有更少的阶段误差,尤其是运动补偿阶段,因此会增加压缩效率。

    总的来说就是会在某些地方比8bit更好,所以最终才会节省带宽。

    展开全文
  • Bit----组件管理工具

    千次阅读 2020-04-16 16:22:33
    1 $ bit remove ./ --remote Bit Server Bit Server 就是 bit.dev 的代替工具了,且是超低配版,它能提供的功能只有作为“远程仓库”来存储组件,本地通过 SSH 来与 Bit Server 通信,发布和导入组件就相当于 Bit ...

    前言

    现在几乎每个前端都可以在嘴边挂着组件化、模块化,但是真正做到组件化、模块化开发的项目寥寥无几。比如我们接触的每个 Vue 项目中几乎都有 components 目录,但是其中的 Vue 组件都和这个项目有着不可切割的关系,如果某天要把这个所谓的公共组件用于其它项目上,就会发现——压根儿拔不动、抽不出。

    究其根本,造成这个不理想的结果原因很多。代码层面上,不同项目中的 UI 设计风格不同、组件中包含特定项目的依赖(如各种 UI 框架)、组件之间存在复杂的相互依赖关系,都导致组件难以抽离;人为层面上,开发人员在组件化开发概念上不够深入、组件的拆分上做的并不合理,也让组件化的发展停滞不前,而更重要的一个原因在于没有一个合适的用来管理组件的工具,组件化很关键的一个因素在于组件的管理,包括组件的发布、修改、详细使用文档、demo 展示等,而现有的代码管理工具如 Git、NPM 却很难在组件的层面上有效管理代码。

    Bit 来了

    Bit 是一个强大的组件协作平台,它能跨项目、跨存储库地隔离并管理组件,可在众多框架及工具中使用,如 React、Vue、Angular、Node.js、MochaJest 等。

    “ Bit loves Git ”—— yep,这是 Bit 官方文档的原话。Git 大家再熟悉不过了,世界上最先进的 DVCS[1],「近朱者赤」,大概这就是 Bit 喜欢 Git 的原因了吧 hhhh~😆

    Just joking ,其实是因为 Bit 的工作流和 Git 很相似,我们通常用 Git 来管理源文件、源代码,而 Bit 也是用来管理代码的,但不同的是 Git 不管你代码的语义结构,一股脑儿来进行管理。而 Bit 则是将代码分组件管理的,换句话说—— Bit 用来管理组件

    [2]bit:workflow.svguploading.4e448015.gif转存失败重新上传取消workflow.png◎ Bit workflow

    Bit 的工作流和 Git 怎么个类似法呢?

    1. 首先,安装 Bit 后可以将本地的代码分组件发布到 Bit Server 中的 Collection 中,类比 Git 将本地仓库代码推送到远程仓库。

    2. 在远程的 Bit Server 中可以预览、管理发布的组件,类比在 GitHub、GitLab 等代码管理工具上查看、管理远程仓库中的文件。

    3. 可以在别的代码区安装并引入发布的组件,可跨机器使用、跨项目使用,甚至跨语言使用已发布的组件,这点和 NPM 的方式倒很类似,继续往下看你会发现 Bit 和 NPM 确是有着千丝万缕的关系。

    安装

    使用 NPM/Yarn 安装:

     

    1
    2
    
    $ npm install bit-bin -g
    $ yarn global add bit-bin
    

    MacOS 也可使用 Homebrew 安装:

     

    1
    
    $ brew install bit
    

    使用 Bit 管理 Vue 组件

    组件,简单点说就是可重复使用的代码段,包含但不限于:

    • React、Vue、Angular 组件
    • 公共样式文件,如 CSS、SCSS 文件
    • 重复使用的函数、方法

    当 Bit 存储一个组件时会存储这段代码的三个元素:

    1. 源代码

    源代码是组件内容的根本,Bit 将源代码映射到组件并指定一个 main 文件作为组件的入口。

    2. 依赖关系图

    这是 Bit 的一个强大特性,当源代码保存为 Bit 组件时,Bit 会分析其中包含的所有依赖项(即代码中的 import 和 require 语句),然后创建一个组件的依赖关系图,这样,即使组件被抽离,它也是独立的,因为所有的依赖项都会被记录追踪。


    **两点说明**

    1⃣️ Bit 可追踪的依赖项只包含使用 NPM 安装的依赖和安装/使用的 Bit 组件,就是说项目中直接通过绝对/相对路径引入的本地组件不被包含在依赖项内,如 import Utils from './utils.js',那如果组件在另一个项目中使用不就找不到引入的文件了吗🤔️?当然,Bit 从根本上避免了这种情况的产生——需要将引入的本地组件与主组件同步追踪才可发布👍。

    2⃣️ 如果要发布的组件中使用了第三方 UI 框架(如 Vuetify 中特有的标签 v-card 等),Bit 并不会自动分析出它依赖了这个 UI 框架,而是可以直接发布,但在使用此组件的项目中需要安装对应的 UI 框架才能正确显示 Bit 组件。


    3. 工具与配置

    Bit 还会将组件特有的工具和配置保存下来,比如组件使用的编译器和测试工具等。

    发布组件

    1. 初始化项目

     

    1
    
    $ bit init
    

    当运行 init 命令时,Bit 会在项目中创建三个资源:

    • bit config:位于 (package.json ? package.json : bit.json) 中,Bit 工作区配置文件,包括导入组件默认保存的文件夹、包管理工具等配置项
    • .bit 目录:Bit 的工作区,之后创建和导入的组件信息都位于此目录中。
    • .bitmap:Bit 组件图,描述了组件和组成组件的文件之间的链接关系。

    导入指使用 bit import 命令将远程的组件添加到工作区,而使用 NPM/Yarn 安装的 Bit 组件只是常规的包,两者有着很大的区别,详询 Imported Components

    2. 跟踪组件

    跟踪操作将本地项目中的一个或多个文件转换为了 Bit 组件,然后会保存上面提到的三个元素。如:$ bit add src/components/HelloWorld.vue --id my-hello

     

    1
    
    $ bit add <file_path> --id <component_id>
    

    如果一个文件内通过 require 或 import 引入了另一个文件,只需将它们一同跟踪,Bit 会自动分析他们之间的依赖关系:

     

    1
    
    $ bit add src/components/father.vue src/components/son.vue --id father-son
    

    也可直接跟踪一个目录下的所有组件:

     

    1
    
    $ bit add src/components/* --namespace hello
    

    添加 --namespace hello 选项意为使用 hello 作为 src/components/ 目录下所有跟踪组件的父级目录,即生成的组件名为 hello/filename1hello/filename2

    3. 设置组件版本

     

    1
    
    $ bit tag --<component_id> <version>
    

    执行此操作后 Bit 会锁定该组件的依赖项版本,运行编译并测试该组件(可使用 --verbose 选项查看组件测试结果),如果编译测试通过则会设置组件的版本并自动标记依赖于该组件的组件。如:$ bit tag --my-hello 1.0.0

    使用 $ bit untag <component_id> <version> 命令可取消设置的版本号。

    4. 导出组件

    导出组件即把组件上传到远程仓库中,远程仓库分两种,一种是 Bit 提供的组件中心 bit.dev,在组件中心中可以预览托管组织发布的组件,功能强大;还有一种是自己搭建的 Bit Server,下文会详细讲述。先来看如何导出到可以白嫖的 bit.dev 中:

    1. 在 bit.dev 中申请账号

    2. 创建一个公共的或私有的集合,用以存储组件

    3. 在项目中使用 $ bit login 登录,Bit 会自动打开浏览器进行身份验证😎

    4. 发布组件:

      1
      
      $ bit export <user_name>.<collection_name>
      

    查看、管理组件

    始言之,「组件化一个很关键的因素在于组件的管理」,Bit 在这点上的优势就在于——bit.dev,在平台上可以浏览、使用所有公开的组件,有点像 Codepen。也可以管理自己已发布的组件,包括编辑组件文档,查看各个版本组件的代码、参数、依赖关系、安装命令等等,还可以在 Playground 中实时编辑、预览组件效果(这点太棒了,但是中文在缩略图上显示异常😡):

    但是,可惜的是 bit.dev 的目标是成为用来托管组件的 SaaS[3],也就是说它是用来赚钱的。普通用户只可创建三个私有集合,要想一刀999级就要付费了,而且价格还不低——$200/month……

    安装并使用组件

    1. 安装组件

    如果将组件发布至 bit.dev,那么使用 NPM 或者 Yarn 是在其它项目中最方便快捷安装使用 Bit 组件的方式,安装组件的命令位于 bit.dev 中组件页面的右上角。

    第一步需要在 NPM 注册表中配置 @bit

     

    1
    
    $ npm config set @bit:registry https://node.bit.dev
    

    然后就可以像 NPM/Yarn 安装第三方包一样安装 Bit 组件了:

     

    1
    2
    
    $ npm i @bit/zander.hello.my-hello
    $ yarn add @bit/zander.hello.my-hello
    

    使用也是同样简单:

     

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    <template>
      <v-app>
        <top-bar />
        <v-content text-center>
          <v-row class="text-center mt-10">
            <v-col cols="12">
              <my-hello msg="使用组件😉" />
              <father-test />
              <vuetify />
            </v-col>
          </v-row>
        </v-content>
      </v-app>
    </template>
    
    <script>
    import TopBar from "@bit/zander.hello.top-bar";
    import MyHello from "@bit/zander.hello.my-hello";
    import FatherSon from "@bit/zander.hello.father-son";
    import Vuetify from "@bit/zander.hello.vuetify";
    
    export default {
      name: "App",
      components: {
        TopBar,
        MyHello,
        FatherSon,
        Vuetify
      }
    };
    </script>
    

    ◎ 页面成功显示组件内容

    2. 导入组件

    导入组件指将远程组件的所有信息下载到本地,包括组件的源代码、依赖项等,导入的文件位于配置文件 package.json 中 componentsDefaultDirectory 项定义的目录中。

    在其它项目中要想使用发布在 Bit Server 中的组件只能导入组件,而不能使用 NPM or Yarn 的方式。如果是在新项目中第一次导入 Bit 组件需先运行 $ bit init 命令。

     

    1
    
    $ bit import <user_name>.<collection_name>/<component_id>
    

    可加入组件固定版本,如 $ bit import zander.hello/my-hello@1.0.1,不加则默认导入最新版本。

    同样的,使用组件的方式还是引入再使用,不过不能直接引入组件的路径,引入组件的全名即可(package.json 中的名字):

     

    1
    
    import myHello from "@bit/zander.hello.my-hello";
    

    更新组件

    更新组件有两个角度,一种是远程的组件更新了,使用该组件的项目需要同步更新;另一种是在使用组件的项目中需要对导入的组件进行更改并上传至远程。

    1. 更新本地组件

    本地的组件要想同步远程的更新直接使用导入命令即可,组件的最新版本会被自动导入:

     

    1
    
    $ bit import <component_id>
    

    2. 修改组件并更新至远程

    项目中如果修改了通过 $ bit import 导入的组件就需要将组件更新至远程,这样其它使用者才可同步此修改。

    当修改组件后运行 $ bit status 命令会提示 modified components 的相关信息,此时可为组件设置新的版本:

     

    1
    
    $ bit tag <component_id> <new_version>
    

    然后将其重新导出到远程集合中:

     

    1
    
    $ bit export <user_name>.<collection_name>
    

    弃用或删除组件

    当不使用一个组件的时候有两种选择:

    1. 弃用组件

    弃用组件意味着 Bit 会将其标记为“已过时”,但不会影响组件正常使用。

     

    1
    
    $ bit bit deprecate <user_name>.<collection>/<component_id> --remote
    

    2. 删除组件

    删除一个组件需要考虑是否有其它组件依赖此组件,所以一定要慎重操作。

     

    1
    
    $ bit remove <user_name>.<collection>/<component_id> --remote
    

    Bit Server

    Bit Server 就是 bit.dev 的代替工具了,且是超低配版,它能提供的功能只有作为“远程仓库”来存储组件,本地通过 SSH 来与 Bit Server 通信,发布和导入组件就相当于 Bit Server 的存和取操作了。相对的,功能不健全但成本也相对较低,要使用 Bit Server 只需要一个服务器就够了。

    常用命令

    CommandFunctionOptions
    bit init初始化 Bit 环境--package-manager:设置包管理工具
    bit login登录到远程 
    bit logout注销已登录账号 
    bit list显示远程和本地所有组件 
    bit status查看工作区中被跟踪组件的状态 
    bit add <file_path> --id <component_id>追踪组件--id:指定组件 ID
    --namespace:设置命名空间
    --exclude:排除文件
    bit untrack <component_id>取消追踪组件 
    bit show <component_id>查看组件的依赖关系 
    bit diff <component_id>比较更改前后组件的变化 
    bit log <component_id>查看组件各版本信息 
    bit tag <component_id> <version>设置组件版本号--message:版本描述
    --all:为所有新增和修改的组件设置
    bit untag <component_id> <version>取消设置的版本号--all:取消设置的所有组件的版本号
    bit export <user_name>.<collection_name>导出到远程--eject:导出后将本地代码替换成该组件
    --all:导出所有
    bit import <user_name>.<collection_name>/<component_id>导入组件 
    bit deprecate <component_id>弃用组件--remote:同时从远程弃用
    bit remove <component_id>删除组件--remote:同时从远程删除

    总结

    首先,Bit 的确是为前端组件化、代码片段管理提供了一套不错的解决方案,如果组件都能跨项目地去使用,而且只需要一行 Bit 命令就可以解决,既保证了开发的高效性,也能保证组件的整体质量及可复用性。

    如果前端的工作方式都切换到 Bit 模式上,那么从发布方式、规范化、标准化等方面来说就没得挑,因为你发布的组件别人要用得上、可以用、用得爽啊!所以,从这里来看 Bit 的确可以规范前端组件标准,有效解耦前端代码

    但是,以 Bit 目前的知名度和普及度来看,它还有很长的路要走,这也不是没有原因的:

    1. bit.dev 不开源,自行搭建的 Bit Server 功能实在是太有限了,这点真的是太失望了🙍‍♂️……

    2. Bit 没有像 GitHub、GitLab 这样的可以以项目为单位管理组织代码的机制,以至于看起来像是 Codepen 这样的交流社区。

    3. 权限管理功能欠缺。


    1. 分布式版本控制系统,Distributed Version Control Systems。 

    2. 图源:https://docs.bit.dev/docs/quick-start 

    3. Software-as-a-Service,软件即服务,一种软件应用模式。 

    展开全文
  • 文章目录 文件格式的角度 图片深度 深度 像素值 像素值范围 8位 16位 24位 32位 单个原始颜色 图片存储 8bit 24bit 32bit 16位 色彩 16.7M 文件格式的角度 从文件格式角度看,一张图片可以保存为很多种不同的格式,...

    文件格式的角度

    从文件格式角度看,一张图片可以保存为很多种不同的格式,比如bmp/png/jpeg/gif等等。

    图片深度

    从图片深度来看,图片可以分为8位, 16位, 24位, 32位等。

    深度

    右键单击图片属性->详细信息,即可查看图片位深度:

    像素值

    说的直白一些,图片可以看成是一个2维数组组成的矩形结构。每个格子里存放的是图片在此坐标处的像素的取值,即这一点的颜色值。

    像素值范围
    8位

    2 8 2^8 28= 2 2 ( B ) ∗ 2 3 ( G ) ∗ 2 3 ( R ) = 256 ( 色 ) 2^2(B) * 2^3(G)* 2^3(R) = 256(色) 22(B)23(G)23(R)=256()
    总共显示256种颜色
    取值范围:0~255

    16位

    2 16 = 2 5 ( B ) ∗ 2 6 ( G ) ∗ 2 5 ( R ) = 65536 ( 色 ) 2^{16} = 2^5(B)*2^6(G)* 2^5(R) = 65536(色) 216=25(B)26(G)25(R)=65536()
    总共显示65536种颜色
    取值范围:0~65535

    24位

    2 24 = 2 8 ( B ) ∗ 2 8 ( G ) ∗ 2 8 ( R ) = 16777216 ( 色 ) 2^{24} = 2^8(B) *2^8(G) *2^8(R) = 16777216(色) 224=28(B)28(G)28(R)=16777216()
    总共显示16777216种颜色
    取值范围:0~16777215

    32位

    32位:Alpha透明度 + 24位

    单个原始颜色
    • 当8/16位深度时,单个原始颜色 (R/G/B)最大只能表示为 ( 0 − 2 3 ) / ( 0 − 2 6 ) (0 -2^3 )/(0-2^6) (023)/(026), 无法满足(0~0xff)的范围,所以显示的颜色范围有限。
    • 当24位深度时,使用24bit显示一个像素点, 由8bit Red 8bit Green 8bit Blue组合颜色而成,每一个原始颜色(R/G/B)都可以完全显示(0~0xff),所以24位及以上,我们就叫做真彩色。

    图片存储

    首先需要知道计算机中的数据都是使用0,1表示出来的。即计算机中1位只能取值0或者1。

    电脑磁盘空间 ,资源管理器内存占用都是B,以字节为单位,即分配内存块时以字节为单位进行分配。一个字节(Byte)占用8位(bit)。

    计算机常见数据存储单位换算:
    1GB=1024MB
    1MB=1024KB
    1KB=1024Byte(字节)
    1Byte(字节)=8bit(位)

    8bit

    如果一个图片支持256种颜色(如GIF格式),那么就需要256=2^8 个不同的值来表示不同的颜色。也就是从0到255,用二进制表示就是从00000000到11111111,总共需要8位二进制数,所以颜色深度是8 Bit。

    • 存储一个像素值需要1B的内存。
    24bit

    如果是BMP格式,每个像素可以支持RGB各8bit,即R8,G8,B8,不同的红绿蓝组合可以构成 25 6 3 256^3 2563种颜色,就需要3个8位的2进制数,总共24位,所以颜色深度是24 Bit。

    • 存储一个像素值需要3B的内存。
    32bit

    还有PNG格式,这种格式除了支持24位的颜色外,还支持alpha通道(就是控制透明度用的),总共是32位,所以颜色深度是32 Bit。颜色深度越大,图片占的空间越大。

    • 存储一个像素值需要4B的内存。
    16位

    较上面的比较复杂,每像素用16位表示,RGB分别为5bitR,6bitG,5bitB的组合。

    • 存储一个像素值需要2B的内存。

    色彩 16.7M

    色彩16.7M意思是支持显示最大色彩数量为1670万,即可以显示1670万种不同的颜色。“M”是百万的意思,是英文million的缩写。16.7M=16.7百万=1670万。

    显示器一般用二进制来表示颜色。16位色的发色总数是65536色,也就是2的16次方;24位色被称为“真彩色”,它可以达到人眼分辨的极限,发色数是1677万多色,也就是2的24次方。一般所有显示器或液晶电视都会标注这个值。

    显示器的像素由RGB三基色组成低端的显示器各个基色只能表现6位色,即2的6次方=64种颜色,可以计算出每个独立像素可以表现的最大颜色数是64×64×64=262144种颜色

    中高端液晶显示器利用FRC技术使得每个基色则可以表现8位色,即2的8次方=256种颜色,则像素能表现的最大颜色数为256×256×256=16777216种颜色,这种显示板显示的画面色彩丰富,层次感好。高端显示器的分辨率较中端显示器要更高。

    除了16位色、24位色之外,现在越来越多的显示器采用32位色。32位色并非是2的32次方的发色数,它其实也是1677万多色,不过它增加了256阶颜色的灰度,为了方便称呼,就规定它为32位色。色彩过渡更自然,色彩表现力更好,屏幕更细腻。

    在同样大小的屏幕分辨率越高就显示得越清楚,所以,如果同样大小的屏幕分辨率低的话就算显示1600万色也没有分辨率高的26万好。例如:同样材质制作的2.4英寸的TFT屏幕、240×320的分辨率,那么1600万色要好于26万色和6.5万色。

    学习:色彩16.7M

    展开全文
  • 3dsmax9_sp2_64bit

    2015-05-30 23:47:24
    在WIN7安装MAX2009,升级所使用的软件
  • Microsoft Visual C++ 2005 32bit Redistributable Package Microsoft Visual C++ 2005 64bit Redistributable Package Microsoft Visual C++ 2008 32bit Redistributable Package Microsoft Visual C++ 2008 64bit ...
  • Oracle 11g client 64bit下载

    千次下载 热门讨论 2015-10-06 09:21:38
    Oracle 11g client 64bit part2.
  • JDK 32bit与64bit的区别

    千次阅读 2017-06-21 10:09:32
    在进行Minecraft也就是所谓的我的世界游戏的时候,在对局域网进行开放的时候,我的是64bit的JDK,而我同学的是32bit的JDK,所以在进行局域网链接的时候就会出现Internal Exception:java.lang.NullPointerException ...
    • Big-Man一次偶然分析的机会
      • 在进行Minecraft也就是所谓的我的世界游戏的时候,在对局域网进行开放的时候,我的是64bit的JDK,而我同学的是32bit的JDK,所以在进行局域网链接的时候就会出现Internal Exception:java.lang.NullPointerException , 在此我就先来分析一下为什么会产生这样的异常?

    • 解析错误

      • 首先肯定是网络异常:java空指针,但是在处理和检查完网络没有错误的前提下,再次尝试之后发现依然是这样的问题,查看了是使用32bit的JDK的时候,而自己的操作系统是64bit并且我的是64bit的时候, 尝试换一下JDK的操作位数(也就是从32bit更换到64bit)。更换完成之后,发现异常解决,所以觉得需要分析一下JDK的使用位数的影响,以此去找到答案。

    • 32bit64bit系统在计算机领域中常常提及,但是还是会存在这种情况,很多人不知道它们之间的差异。所以在分析32bit64bit的时候, 需要从处理器操作系统以及JVM出发。Big-man接下来会逐步地进行较为详细的解答。

    • 处理器(IA(Intel Architecture))
      • 提及IA,市场上用到的最多的也就是莫过于Intel, 所以在这里讲解一下Intel处理器的32bit64bit的处理器之分。
      • Intel:Intel
      • 通常采用Intel(英特尔)处理器的服务器称之为IA(Intel Architecture)架构服务器,又称CISC(Complex Instruction Set Computer复杂指令集)架构服务器,由于IA架构服务器是基于PC端的x86处理器体系结构的,所以又把IA架构的服务器称为PC服务器或者x86服务器。
      • 虽然IA架构服务器始于PC,但经过不断的发展,IA架构服务器已经远远超出了PC的范畴。
      • IA根据官方的需求,分为一下三类:
        • 1、IA-32
        • 2、Intel@64;
        • 3、IA-64.

    • 历史
      • x86的服务器架构,始于1978年推出的Intel 8086中央处理器的首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在此过后三年成为IBM PC所选用,之后x86便成为了个人电脑的标准平台,成为有史以来最成功的CPU架构。
      • 其他公司也有制造x86架构的处理器,比例有Cyrix(现为VIA所收购),NEC集团 , IBM,IDT以及Transmeta。Intel以外最成功的制造商是AMD。Big-man所知道也就是Intel和AMD了。
      • 8086是16位处理器;直到1985年32位的80386的开发,这个架构都维持是16位。
      • Intel 80386 32位处理器推出后,也许是目前为止x86最大跃进。Linux , 386BSD , Windows NT 和 Windows 95都是一开始为386所发展的,这种系列的386架构成为未来开发的所有x86系列的基础。
      • 现实中把x86-32称为IA-32,全称为”Intel Architecture, 32-bit”。

    • 发展
      • 随后的IA服务器经历了486系统,PentiumPro系统,PII系统,PIII系统,XEON系统等几个阶段。处理器系统的处理能力也在大幅度地提高,而服务器系统的总线结构始终是IA-32总线体系。
      • IA-32服务器发展到8路XEON服务器以后,体系结构已经开始成为制约服务器性能提高的瓶颈了。
      • 因此,hp和Intel自1994年就开始合作开发IA-64架构的处理器,那一年Big-man还没有出生了,真的是没赶上趟啊。IA-64结构既不是Intel的32位x86结构的扩充,也不是完全采用hp公司64位PA-RISC结构,而是一种全新的设计样式。目前正式宣布支持IA-64平台的有Monterey, Linux64, hp-UX, Solaris, Win2000, Windows XP等操作系统。
      • IA-64的代表产品就是Itanium(安腾)处理器,是专门用在高端企业级64-bit计算环境中竞争的,对抗基于IBM Power4/5HP PA-RISCSun UltraSparc-IIIDEC Alpha的高端企业级处理器。这些前面是公司,后面是对应的产品。
      • 但由于它不能很好地解决与以前32位应用程序的兼容,所以应用受到较大的限制,而AMD在IA-32上新增了64位寄存器,并兼容早期的16位和32位软件,形成AMD64版本。尽管目前Intel采取了各种软、硬方法来弥补这一不足,但随着AMD64处理器的全面投入,Intel的IA-64架构的这两款处理器前景不容乐观。所以Big-man在现在市场上还可以看见AMD的存在。
        AMD

    • EM64T:
      • 为x86系统而设的应用软件实在太庞大,Intel眼见使用AMD64的OpteronAthlon 64取得成功,便需要对竞争者的威胁作出迎击,也开发了兼容早期16位和32的64位处理器,Intel将之命名为"IA-32E",意即IA-32的延伸,在数星期后才改称为EM64T
      • 虽然该处理器的内核与AMD64几乎相同,但是在以往Intel的营销中,Intel总把AMD的产品贬为自家技术的仿制品,Intel为了自身的面子,定不会承认使用了对手AMD的技术,因此Intel把该技术以EM64T这个名字来推出,后来Intel索性将此技术正式命名为Intel 64。两家自主研发的公司都分别为了自己的旗帜而开始了如火如荼的竞争,Big-man觉得技术就是在竞争中得到革新的和进步的。
      • Intel 64指令集被应用于Pentium 4Pentium DPentium Extreme EditionCeleron DXeonIntel Core 2Intel Core i7处理器上。
      • 由于AMD64Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇来表明它们对两种架构的同时兼容。出于这个目的,AMD对这种CPU架构的原始称呼——"x86-64"被不时地使用,还有变体"x86_64"。其他公司如微软和太阳计算机系统公司在营销资料中使用”x64”作为对”x86-64”的缩写。

    • EM64T技术详解:

      • Intel官方是给EM64T这样定义地:EM64T全称Extended Memory 64 Technology,即64位内存扩展技术,他是Intel IA-32架构(Intel Architectur-32 extension)地一个扩展,且兼容原来地架构。通过增加CPU地运算位宽扩展增加cpu和内存之间地位宽,从而让系统支持更大容量地内存(32bit处理器最多只能支持内存容量只有4GB,而64bit地最高则达64GB)。在理论上,虽然EM64T架构最高能够很好的运行在64 bit内存寻址,但由于设计和制造工艺等方面地因素,并非所有EM64T地处理器都能达到理论地上限。
      • Intel为支持EM64T技术地处理器可分为两大类:传统IA-32模式和IA-32e扩展模式,两大类下具体又可分为多种运行模式
        运行模式
      • 传统IA-32模式下,与IA-32工作模式一样,我们可以安装windows xp 32bit,安装32位硬件硬件驱动,安装32位应用程序。目前大部分人的处理器是Intel 64,安装了windows xp 32,上面的程序运行情况良好,包括16bit和32bit程序。
      • 兼容模式下,操作系统和硬件驱动程序都是64bit,计算机允许在64bit操作系统下不需要预编译就可以运行大多数传统32bit应用程序,这和传统IA-32模式下基本相同,32位应用程序仍然只能访问4G内存,但此限制只在进程级,而不在系统级
      • 由于兼容模式下,要求硬件驱动程序都是64bit,所以导致了64位Windows最大的一个劣势就是兼容性,而兼容性方面最突出的就是各种硬件设备的驱动程序。如果你所用的硬件设备的开发商还没有开发出针对64位Windows XP的驱动程序,可能该设备在64位Windows XP下无法使用,也有可能使用操作系统自带的通用驱动勉强使用,但是性能和功能都会受到影响
      • 至于其他软件程序则一般没有什么大问题。在64位Windows XP中,只有16位应用程序是完全无法使用的,而32位应用程序则可以继续使用。不过在安装这些应用程序的时候也要注意,有些应用程序,虽然和硬件扯不上关系,但是为了实现软件的某些特殊功能,安装软件的时候同时还会向系统中装入驱动程序,这种程序在没有发布64位版之前是无法在64位Windows下使用的。
      • 如著名的截图软件SnagIt,该软件使用默认安装的时候会向系统中安装一个虚拟的打印机,该打印机可以将文档输出为图形格式。因为安装了虚拟设备,因而该程序还没有提供64位的版本,因此在64位Windows XP下使用默认选项安装的时候就会出错,除非我们自定义安装选项,不安装这个虚拟打印机。

      • 但是对于服务器来说,服务器不需要什么外设,硬件的兼容性差对服务器的影响较小。

      • 64bit模式下,必须要有64bit地操作系统、驱动程序和应用程序三者合作,这时操作系统无法运行32位程序,兼容性最差,但充分发挥64位架构的优势。


    • 下面就要进入的是操作系统32 bit和操作系统64 bit
      • 64bit计算主要有两大优点:可以进行更大范围的整数运算可以支持更大的内存
      • 64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。
      • 但是我们不能因为数字上的变化,而简单的认为64bit处理器的性能是 32bit处理器性能的两倍。实际上在32bit应用程序下,32bit处理器的性能甚至会更强,即使是64bit处理器,目前情况下也是在32bit应用下性能更强。所以要认清64bit处理器的优势,但不可迷信64bit。

    • 那什么情况下,我们需要升级到64bit操作系统呢?

      • 这要取决于应用的类型。以下的例子是从64位处理得到的好处:
      • 加密程序:大多数加密算法基于大量的整型数据,适合在64位通用寄存器和运算器处理。
      • 科学计算:整型数据的科学计算将从64位处理中受益,浮点运算不会从中受益,因为即便是32位处理器,浮点寄存器也已经达到了80位到128位。这在Big-man的数学章节里面会进行换算的。
      • 需求超过4G的应用程序:如数据库服务器, 图形处理和视频压缩相关应用
    • 64位虚拟内存空间理论上最高可以支持直接访问2EB,不过当前的所谓64位处理器并不能真正做到,原因很简单,目前还没有机器支持那么大的物理内存。EM64T提供40位寻址能力,最大支持到1TB内存。


    • 在接下来Big-man分析:JVM 32 bit和JVM 64 bit
      JVM
      • JVM是Java开发人员必不可少的工具,而JVM也有32 bit和64 bit之分。这个问题的重要性讨论我就不在这里赘述了,Big-man相信每一个进行Java开发的程序猿/媛都会存在这样的意识的。

    • 那实际上32位和64位JDK有什么区别呢?

      • JVM 32bit 和JVM 64bit的区别如下:
      • 1、目前只有server VM支持64bit JVM,client不支持32bit JVM。

      • 2 、The Java Plug-in,AWT Robot and Java Web Start这些组件目前不支持64bit JVM

      • 3、本地代码的影响:对JNI(Java Native Interface)的编程接口没有影响,但是针对32-bit VM写的代码必须重新编译才能在64-bit VM工作。

      • 4、32-bit JVM堆大小最大是4G, 64-bit VMs 上, Java堆的大小受限于物理内存操作系统提供的虚拟内存。(这里的堆并不严谨,Big-man这里地不眼睛指的是不像数据结构中的堆是一种存储数据的结构。)

      • 5、线程的默认堆栈大小:在windows上32位JVM, 默认堆栈最大是320k,而在64-bit JVM是1024K

      • 6、性能影响:

        • (1)、64bit JVM相比32bit JVM, 在大量的内存访问的情况下,其性能损失更少,AMD64EM64T平台在64位模式下运行时,Java虚拟机得到了一些额外的寄存器,它可以用来生成更有效的原生指令序列。
        • (2)、性能上,在SPARC 处理器上,当一个java应用程序从32bit 平台移植到64bit平台的64bit JVM会用大约 10-20%的性能损失,而在AMD64和 EM64T平台上,其性能损失的范围在0-15%。所以JVM的性能还和Big-man这样的程序猿手中的电脑配置的好坏有关了。
    • 如果你还想更清楚地了解一下的话可以去它的官网看看,但是你的English需要一定的功底:Java-Sun


    • JVM 性能分析:

      • Sun的官网上写着, 当一个java应用程序从32bit 平台移植到64bit平台的64bit JVM上, 应用会有性能损失,相信很多人都会不解,比如Big-man。 Su公司是一个伟大的公司。
        Sun

      • 从数字上看,我们一般会认为64位JDK比32位JDK好,但是上文说过”实际上在32bit应用程序下,32bit处理器的性能甚至会更强,即使是64bit处理器,目前情况下也是在32bit应用下性能更强”。

      • 许多在大同世界里很简单的道理包括越多大越好,移到计算机领域里就不是那么回事了。当处理多重CPU时,你会觉得那些多核所多出来的处理单元很有用,但如果你的工作仅仅是单线程的,那你要做的却是让其他核一边歇着。

      • 32位与64位的比较则更加细微。x86-64 架构不仅在x86架构的基础上增大了寄存器,而且还增加了寄存器的数量。从基本上说这会带来更好的性能(因为更多的寄存器可以让编译器创建更好的机器代码)。然而很不幸,至今把Java从32位移到64位带来的只是性能的下降。

      • Java虚拟机(JVM)是一个软件规范,其32位与64位版本性能有所不同,但它们都包括JIT编译器垃圾回收功能(GC),其性能关键在JIT编译器和垃圾回收功能的执行效率上。


    • JIT编译器:
      • JIT编译器实现了程序执行之前Java字节码到硬件机器码的动态翻译,其背后的思想在于,相比Java源代码,字节码更小也更容易编译,但付出的代价是需要在Java字节码编译为机器码时花上一点时间,但与直接把Java源代码编译为机器码相比,时间还是少得多的。在32位与64位的JVM中,相应的JIT在把Java字节码编译为最终的机器码时,所花的时间稍微有所不同,但还能进行一些优化;另外,在IBM与Sun这两个版本的客户端与服务端程序上,总体性能也会有所不同。

    • 垃圾回收功能(GC):
      • 垃圾回收会收回对象不再需要使用的内存,它必须被经常执行以释放对象不再访问的Java堆。由于在32位与64位平台上,Java堆中的数据大小会有所变化,所以会因为32位与64位JVM的性能差异,然而指针越大越GC管理越困难,导致相应垃圾回收的性能也会有所不同。

    • 64bit JVM的测试性能—–马力更大并不总代表性能更强
      • 接下来主要涉及两个现在广泛应用的64位平台——AMD64PowerPC64,并分别使用IBM与Sun Microsystems这两个Java语言巨头提供的Java虚拟机(JVM),通过SPECjvm98SPECjbb2000的测试,来评价32位与64位中JVM的性能。使用了以下项目测试客户端性能。 2_201_compress,一个流行的压缩程序。 2 _202_jess,一个Java版的NASA CLIPS基于规则的专家系统。 2 _209_db,数据管理基准测试软件。 2_213_javacJDK Java编译器2 _222_mpegaudio,一个MPEG-3音频解码器。 2 _227_mtrt,一个对图像文件进行处理的双线程程序。 2 _228_jack,一个分析程序生成器。

    • 该测试的测试结果总结:
      • 1、基于运行Linux操作系统的PowerPC64平台的测试结果,表明如果在此平台上使用IBM的JVM,那么,那些不需要64位特性的程序,还是让它们运行在32位JVM中,因为在此平台的所有测试结果中,64位JVM的性能都比32位平台低。
      • 2、基于运行Linux操作系统的AMD64平台的测试结果,表明不管是Sun还是IBM的JVM,32位与64位的性能都在伯仲之间,要注意的是,性能的差异是依赖于具体的应用程序与JVM的,如果需要最佳性能,就必须在某个特定的执行环境中测试某个特定的程序,以评价转换到64位所带来的潜在性能提升。
      • 考虑篇幅大小,这里不一一列出详细的测试报告,详细的测试报告请参考Sun-JDK

    • 这里以我们熟知的AMD64为例列出部分测试报告。
      JDK

    • 上图是在AMD64平台上,Linux版本的Sun Java 2 Standard Edition Development Kit 5.0 (J2SE 1.5.0)的性能测试报告,结果表明只有三项测试客户端——_201_compress、_222_mpegaudio、 _228_jack,在64位版本的JVM上比32位表现出更佳的性能。
      JDK

    • 上图是在 AMD64平台上,Linux版本的IBM Developer Kit for Linux、Java 2 Technology Edition Version 1.4.2 GA的性能测试报告,测试结果表明只有三项测试客户端——_209_db、_213_javac、_228_jack,在64位环境下表现出了更佳的性能。

    • 如何选择JVM 32bit和JVM 64bit:

      • 网上有选择JVM32bit和JVM 64bit的建议:
      • 1、你的应用程序是否需要超过2GB的Java Heap来获取更优的性能呢? Yes = 64-Bit No = 32-Bit 如何判断你的应用需要多大的Java Heap呢?可以通过计算平均的Heap使用情况来确定。对于这个问题,Big-man的意思就是清楚自己的目的和所开发的意义是什么?

      • 2、你的应用程序是否需要高精度的科学计算进行统计、安全、加密等等? Yes = 64-Bit No = 32-Bit 3、你的应用程序只需要小于2GB的Java Heap?(与第1点类似) Yes = 32-Bit on 64Bit OS No = 64-Bit 4、你的应用程序并不需要64位的特性,但是却是部署在64位的操作系统上? Yes = 32-Bit No = 64-Bit 5、最重要的一点是,其他情况下那就在32位的OS上用32位的JDK


    • 总结
      • 本文介绍了32 bit系统和64bit 系统,主要是介绍我们常用的JVM 32bit和JVM 64bit,并进行比较分析,64bit系统虽然能访问更多的内存,操作更大的文件和磁盘管理,但是很多情况下性能其实未必比32bit系统好,尤其是JVM
      • 所以Big-man想要给出一些建议和认识:
        • 在项目实施中,数据库服务器可以选择部署在64bit操作系统上;
        • 而对于应用服务器,就不能一概而论了,如果要获得应用的最佳性能,就要在应用的部署环境中进行测试,以评价转换到64位所带来的潜在性能提升,再决定是部署在JVM 32bit还是JVM 64bit。
        • 但一般情况下,除非应用需要较大的内存,并超过了2G,并且对应的服务器物理内存超过了4G,否则应该以JVM 32bit优先。

    JackDan9 Thinking

    展开全文
  • yuv 10bit 8bit

    千次阅读 2019-02-18 20:02:50
    我们知道为了获得更好的动态范围,除了常见的8bit yuv外,还有10bit,16bit这样的yuv数据。8bit的yuv数据还好理解,每一个像素8bit,在内存中自然也就是一个字节一个字节的存储咯,16bit的也类似,每一个像素对应两...
  • STM32103读取 DHT11时 对 DHT11_Read_Bit() 的理解 DHT11的时序是: 原子的库函数DHT11里面,关于读取bit的函数有40us的延时不是很理解,依据DHT11的数据对时间的要求,读取2个连续的0bit时有可能出错,于是修改...
  • SQLyog 11.24 (64-Bit & 32-Bit)

    热门讨论 2013-09-10 09:00:50
    看着有的人叫着四分五分的售卖,觉得很坑爹!本来国外网站上到处都可以免费下得到的!免费给大家发放!压缩包内包含32位和64位两个版本了,内含KEY

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,176,139
精华内容 470,455
关键字:

bit