关于色温,色调与色彩的学习

  categories:资料  author:

色温是热力学从另一个角度对光源进行标注分类,是为光源而设的。我们这里不去考查,为什么用色温来对光源进行分类。我们要弄清楚的是色温反映光源的什么特征。

在这个图中,我们要记住的是红,绿,蓝,三色和他们的波长的相对关系,红色波长较长,蓝色波长较短,而绿色波长在红蓝两色之间。因为电磁辐射的速度是一样的,波长较长的频率就低,波长较短的频率就高。
二,黑体
聊色温都会提到“黑体”,我们无法去考证黑体具体是什么东西,但教材中对它的理物特性的描述确是很到位的。我的理解是;
“黑体”就是一个色温可变的可见光谱标准电磁辐射源,也就是色温可变的标准全色光源,作为实际光源的标准。
在不同的色温下,黑体光源包含的色彩成份保持不变,但光源中的各色光的辐射功率,都会发生相应的变化。
三,黑体色温与辐射功率的关系
见下右图

现在来认识一下这个图,这实际也是一个统计图,其横坐标排列的是可见光谱,按照波长递增,从左到右依次排列,右端是红色左端是紫色蓝色,各色温曲线的交点550纳米是绿色。纵坐标反映的是,在同一色温下,将绿色辐射功率设为一百时,不同波长的辐射功率相对绿色的辐射功率的比例关系,所以纵坐标叫相对功率波谱,同一条曲线反映的是同一色温下,各波长的相对辐射功率的强弱的连线。
黑体色温高的时候总辐射功率就大,色温低时总的辐射功率就小,这一点与我们常见的黑色金属在加温的过程中,随着温度的不断升高,金属会由暗红到发出刺眼的白光现象,极为相似,所以有些相关资料,常用黑色金属来类比黑体。因为黑体在不同的色温下,同一波长的辐射源辐射功率相差会很远,无法在同一坐标中反映出来,用相对功率波谱就很好地解决了这个问题,也便于更直观的动态地反映黑体色温变化与辐射功率变化的关系。
这张图,清楚地告诉我们,黑体在同一色温下,各波长的辐射功率有联动效应,其相邻波长的辐射功率基本相近,当色温发生变化时辐射功率也跟着变动,而且互相牵联,有规律的变动。
三,色温变动的跷跷板效应
聊色温的变化与辐射功率的变化规律。还是以5500k为参考点,当色温从5500k降低时,大于550nm波长的辐射源相对辐射功率都增加,波长越长,增加的幅度越大。小于550nm的辐射源,其相对辐射功率都减小,波长越短,减少的幅度越大。色温降得越多,上述变化越强烈
以5500k为参考点,当色温从5500k升高时,大于550nm的辐射源相对辐射功率都减少,波长越长,减少的幅度越大。小于550nm的辐射源,其相对辐射功率都增加,波长越短,增加的幅度越大。色温升得越多,上述变化越强烈。
从形象上便于记忆,可归纳为,随色温的变化,色温凡大于5500k的曲线右低,左高,色温小于5500k的曲线右高左低,高者辐射功率大,低者辐射功率小。辐射功率曲线围绕绿色交点作跷跷板式的变化,这一点是我们今后对照片调色的一个重要依据,这就是色温要告诉我们的核心内容。
四,常见光源色温的定义
热力学怎样定义常见实际光源色温呢,就是看这个实际光源中各辐射源的辐射功率之间的相对关系,与黑体在某色温下,各辐射源的辐射功率相对关系相近,那么黑体的这个色温就是这个实际的光源的色温。
如在色温2854k(开尔文)时,波长600nm至700nm红色区间辐射源的辐射功率就大大超过了波长400nm至500nm蓝色区间的辐射源的辐射强度,其整个光源的能量大多集中在红区.左边标准光源的光谱图中的标准光源A的曲线与黑体辐射光谱2874K的功率分布其本一致,标准光A的色温就是2854k.而这个A光源就是我们常见的充气钨丝白炽灯。
标准光源B为中午直射的太阳光其色温为4874K。
标准光源C为阴天的阳光,色温为6774k
标准光源D65相当直射太阳与散射天空光的混合,其色温为6504K。
标准光源E,其色温为5500k,这是色度学中采用的一种假想的等能白光(E白),等能就是光源中各波长辐射功率相等,才谓之标准白光。
五,光源色温的分类
聊色温分类,光源都有了色温标签后,还可进一步分类,这要先从黑体色温为5500k说起。
这个5500k在黑体的色温中可谓分水岭,凡大于5500k的为一类。凡小于5500k的为一类。凡大于5500k的色温的其总辐射功率多集中在蓝色范围,所以这时黑体的辐射光多偏蓝色,色温越大蓝色辐射能量越大。凡小于5500k的色温其总辐射功率多集中在红色范围,色温越小红色辐射能量越大。
唯独色温5500k的光源自成一类,而且是很重要的一类,说到这里,大家也都心中有数了,他就是白平衡的理论依据
六,实际光源的色温
现在我们能知道的实际光源都已标上了色温的标签。见下表
自然光光色温变化参数表
自然光源 色温(开尔文/K)
日出时的阳光 1850-2000
日出半小时后的阳光 2380-3000
日出1小时后的阳光 3500
日出1个半小时的阳光 … 阅读全文

两个线程进行数据交换的Exchanger

  categories:资料  author:

简介

Exchanger(交换者)是一个用于线程间协作的工具类。Exchanger用于进行线程间的数据交换。它提供一个同步点,在这个同步点两个线程可以交换彼此的数据。这两个线程通过exchange方法交换数据,

Exchanger(交换者)是一个用于线程间协作的工具类。Exchanger用于进行线程间的数据交换。它提供一个同步点,在这个同步点两个线程可以交换彼此的数据。这两个线程通过exchange方法交换数据, 如果第一个线程先执行exchange方法,它会一直等待第二个线程也执行exchange,当两个线程都到达同步点时,这两个线程就可以交换数据,将本线程生产出来的数据传递给对方。因此使用Exchanger的重点是成对的线程使用exchange()方法,当有一对线程达到了同步点,就会进行交换数据。因此该工具类的线程对象是成对的。

Exchanger类提供了两个方法,String exchange(V x):用于交换,启动交换并等待另一个线程调用exchange;String exchange(V x,long timeout,TimeUnit unit):用于交换,启动交换并等待另一个线程调用exchange,并且设置最大等待时间,当等待时间超过timeout便停止等待。

Exchanger的应用场景

Exchanger可以用于遗传算法,遗传算法里需要选出两个人作为交配对象,这时候会交换两人的数据,并使用交叉规则得出2个交配结果。
Exchanger也可以用于校对工作。比如我们需要将纸制银流通过人工的方式录入成电子银行流水,为了避免错误,采用AB岗两人进行录入,录入到Excel之后,系统需要加载这两个Excel,并对这两个Excel数据进行校对,看看是否录入的一致。代码如下:

package cn.iigrowing.threads.study.Exchanger;

import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ExchangerTest {
 private static final Exchanger<String> exgr = new Exchanger<String>();

 private static ExecutorService threadPool = Executors.newFixedThreadPool(2);

 
阅读全文

HTTP代理协议 HTTP/1.1的CONNECT方法

  categories:资料  author:

我们平时使用HTTP协议无非就是GET、POST这些方法,但是HTTP的内容远不止那些。今天就来说说HTTP代理使用的CONNECT。这个不是在网页开发上用的,如果没兴趣就跳过吧。

  APACHE只是作为网页的服务器被使用的,不会支持这个方法。如果要使用它必须在服务器上安装相应的软件。这样的软件很多,百度一下HTTP代理服务器就可以找到一大把。
CONNECT这个方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户。这样用户就可以访问到一些只有服务器上才能访问到的网站了,这就是HTTP代理。说到代理,我想各位在党的旗帜下成长的同学都不会陌生吧。我们使用的网络被称为天朝局域网,它离Internet还有很长的一段路要走。所以,我们就必须越过重重坎坷去摸一摸这个世界本来的样子。哎呀,不小心又扯了一下蛋。下面来说说这个CONNECT方法的用法。
CONNECT方法是需要使用TCP直接去连接的,所以不适合在网页开发中使用,不过网页开发中也用不到这玩意儿。要是使用CONNECT方法,首先要让服务器监听一个端口来接收CONNECT方法的请求。这个是服务器软件做的事情,我们只要配置好它就可以了,除非你闲着无聊想自己实现一个这样的服务器。在服务器监听了端口以后就是客户端的请求,我们必须告诉代理服务器我们想要访问哪个Internet服务器。假如我想通过代理访问这个博客(www.web-tinker.com),我就需要建立一个TCP连接,连接到服务器监听的那个端口,然后给服务器发送一个HTTP头。下面就是这个HTTP头的内容: CONNECT www.web-tinker.com:80 HTTP/1.1
Host: www.web-tinker.com:80
Proxy-Connection: Keep-Alive
Proxy-Authorization: Basic *
Content-Length: 0
 

所有的HTTP头都是类似的,第一行是方法名、主要参数、HTTP版本。接着一行一个参数,最后用两个换行来结束。这个HTTP头其实也没什么好介绍的,唯一一个重点的地方就是星号的部分,这个地方应该填写验证的用户名和密码。而且,用户名和密码也是有固定格式的。要把用户名和密码用冒号连接起来,再经过BASE64的编码后才可以使用。假如用户名是abc密码是123,那么星号的地方就应该换上YWJjOjEyMw==,也就是abc:123经过BASE64编码的结果。
发送完这个请求之后,就是服务器端响应请求了。如果用户名和密码验证通过,就会返回一个状态码为200的响应信息。虽然状态码是200,但是这个状态描述不是OK,而是Connection Established。 HTTP/1.1 200 Connection Established 

如果用户名和密码验证不通过。会返回一个407的状态码,状态表述是Unauthorized。表示没有权限访问代理服务器。 HTTP/1.1 407 Unauthorized 

验证失败的情况有时候还会带上一堆HTML,这是有些服务器为了让网页上在连接失败是显示用的,如果不是通过浏览器来连接的话无视就好了。无论验证成功还是验证失败,这些服务器返回的信息在不同的服务器软件上会有一些差异。比如有些服务器软件返回这些代码会使用HTTP/1.0,有些则会在后面加上个代表服务器版本的字段。这些信息都无所谓,对于服务器返回的数据,我们关键是看状态码。
验证通过之后,我们就可以做普通的HTTP操作了。完全可以把现在的代理服务器看作是请求连接的Internet服务器,也就是说可以像直接访问普通的服务器一样,使用GET、POST等方法来请求Internet服务器上的页面了。我们在发送CONNECT请求的时候就已经告诉了服务器我们需要访问的Internet服务器,上面我用了这个博客的网址。现在我们要访问这个博客的主页就可以发送一个简单的GET请求。 GET / HTTP/1.1
Host: www.web-tinker.com
Content-Length: 0
 

阅读全文

理解OAuth 2.0

  categories:资料  tags:  author:

OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。

本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。

OAuth Logo

简单介绍

OAuth 简介

OAuth 是由 Blaine Cook、Chris Messina、Larry Halff 及 David Recordon 共同发起的,目的在于为 API 访问授权提供一个安全、开放的标准。

基于 OAuth 认证授权具有以下特点:

  • 安全。OAuth 与别的授权方式不同之处在于:OAuth 的授权不会使消费方(Consumer)触及到用户的帐号信息(如用户名与密码),也是是说,消费方无需使用用户的用户名与密码就可以申请获得该用户资源的授权。
  • 开放。任何消费方都可以使用 OAuth 认证服务,任何服务提供方 (Service Provider) 都可以实现自身的 OAuth 认证服务。
  • 简单。不管是消费方还是服务提供方,都很容易于理解与使用。

OAuth 的解决方案如下图所示。

图 1. OAuth Solution
阅读全文

30个不可不知的容器技术工具和资源

  categories:资料  tags:,   author:

软件容器技术影响着从开发人员、测试人员、运维人员到分析人员的IT团队中的每一个人,它不像虚拟化一样只是系统管理员的工具。容器包的大小和完整性使得团队成员能够在几秒钟内部署完整的环境。

容器是一个很好的工具,同时带来了一系列下游决策,包括使用何种标准、如何存储旧版本和部署镜像、如何在生产中管理这些镜像等等。

但是,该如何正确的组装产品和服务,才能在环境中有效地构建、运行和管理容器?为了回答这个问题,我们调查了各种容器技术产品和服务,以便您可以衡量对比各种容器架构、集群管理和部署、存储、安全、操作系统、部署等方案的优劣。

容器运行

尽管Docker的高人气让其成为了一个事实标准,但市场上的轻量级Linux虚拟化工具众多,Docker也只是众多竞争者中的一个。你有很多选择,包括:

Docker

Docker的同名开源容器化引擎适用于大多数后续产品以及许多开源工具。

Commercially Supported Docker Engine(CSDE)

Docker公司拥有扩展Docker的所有权。CSDE支持在Windows服务器上运行docker实例。

Rkt

rkt的发音为“rocket”,它是由CoreOS开发的。rkt是Docker容器的主要竞争对手。

Solaris Containers

Solaris容器架构比Docker更早出现。想必那些已经在Solaris上标准化的IT企业会继续研究它。

Microsoft容器

作为Linux的竞争对手,Microsoft Containers可以在非常特定的情况下支持Windows容器。

集群管理和部署

创建镜像、将它们从开发传递到测试并回传,都是容易的事情,但要在生产环境中支持它们就不那么简单了。因为那意味着要注册工件,要将它们作为系统部署到生产中,还要管理服务器和服务器集合,包括云中的服务器集合(即“集群”)。集群管理工具管理工作负载,包括将实例从一个虚拟主机转移到另一个基于负载的虚拟主机上。集群管理工具还负责分配资源,如CPU和内存。

Kubernetes

虽然没有集群管理的标准,但Google的开源产品Kubernetes是最受欢迎的。有Amazon的AWS、Google云引擎(GCE)和Microsoft的Azure容器服务的支持,Kubernetes是相对可移植的,这有助于防止供应商锁定,Kubernetes甚至可以在私有云(如OpenStack)上运行。Microsoft、Amazon和Google都提供运行Kubernetes的容器服务,并提供商业支持。

Apache Mesos

一个用于抽象计算资源的工具,Apache Mesos可以在同一个集群中同时运行Docker和rkt镜像。DC/OS是在Mesos上构建的平台,用作数据中心操作系统。

Docker Swarm

Docker是用于集群管理的免费产品,Swarm从命令行运行,并与Docker 1.12及更高版本捆绑在一起。现在它只用于Docker的原生编排。

Docker Data Center

基于Web的dashboard提供对Docker的全部管理,包括控制面板、注册表、监视、日志记录和持续集成,Docker Data Center通过运行Docker … 阅读全文



快乐成长 每天进步一点点      京ICP备18032580号-1