首页 文章 精选 留言 我的

精选列表

搜索[指标分析],共10000篇文章
优秀的个人博客,低调大师

深入分析 Flink SQL 工作机制

作者 | 伍翀(云邪),阿里巴巴技术专家整理 | 陈婧敏(清樾),阿里巴巴技术专家 摘要:本文整理自 Flink Forward 2020 全球在线会议中文精华版,由 Apache Flink PMC 伍翀(云邪)分享,社区志愿者陈婧敏(清樾)整理。旨在帮助大家更好地理解 Flink SQL 引擎的工作原理。文章主要分为以下四部分: Flink SQL Architecture How Flink SQL Works? Flink SQL Optimizations Summary and Futures Tips:点击下方链接可查看作者分享的原版视频~ https://ververica.cn/developers/flink-forward-virtual-conference/ Apache Flink 社区在最近的两个版本(1.9 &

优秀的个人博客,低调大师

C++ 工厂模式 分析和总结

简介 用一个单独的类来做创建实例的过程,是工厂;用工厂方法代替new操作的一种模式;工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象。 分类 简单工厂模式、工厂方法模式、抽象工厂模式 为什么要使用工厂模式? 程序更规范有条理,当我们创建实例对象时,如果不仅仅做赋值这样简单的事情,而是有一大段逻辑,那这个时候我们要将所有的初始化逻辑都写在构造函数中吗?显然,这样使得代码很难看; 降低耦合度,提高可阅读性。面向对象的基本思想封装告诉我们,我们尽量将长的代码进行"切割",再将每一个小逻辑都"封装"起来,这样可以降低耦合度,修改的时候也可以直奔错误段落。 1)简单工厂模式 简介简单工厂模式是属于创建型模式,又叫做静态工厂方法(static Factory Method)模式,简单工厂模式是由一个工厂对象决定创建出来哪一种产品类的实例。 特点是由一个工厂类根据传入的参数,动态决定应该创建哪一类产品类(这些产品类继承自一个父类或接口)的实例;需要在工厂类中作出判断,在创建产品的时候,指定响应产品创造。 举个例子:假设有一个工厂,他能生产出A、B两种产品。当客户需要产品的时候一定要告诉共产是哪种产品,是A还是B。当新增加一种新产品的时候,那么就要去修改工厂的类。 应用说明:一个工厂,多个产品。产品需要有一个虚基类。通过传入参数,生成具体产品对象,并利用基类指针指向此对象。 程序案例: #include "stdafx.h" #include <iostream> using namespace std; //类方法—生产的产品 class Product { public: virtual void show()=0; } class Product_A :public Product //产品A { public: void show() { cout<<"Product_A"<<endl; } }; class Product_B : public Product //产品B { public: void show() { cout<<"Product_B"<<endl; } }; //工厂 class Factory //只有一家工厂,可以生产不同的产品 { public: Product* Create(int i) { switch(i) { case 1: //生产产品A return new Prodent_A; break; case 2: //生产产品B return new Product_B; break; default: break; } } }; int main() { Factory *factoty = new Factory(); //实例化--工厂对象 factoty->Create(1)->show(); //指定生产A产品 factoty->Create(2)->show(); //指定生产B产品 system("pause"); return 0; } 缺点:每次新增一个类时,都需要改变工厂函数,破坏了封装性;(如果生产厂家需要新增一个产品,那么工厂函数Factory就需要跟着改变,所以上面的工厂模式违背了开放封闭原则;) 补:开放封闭原则:软件实体(类、模块、函数)可以扩展,但是不可修改。 2)工厂方法模式 简介多个工厂,多个产品,每个产品对应于一个工厂。此时工厂和产品都是通过虚基类的方式构建。 特点定义一个用于创建对象的接口,让子类决定实例化哪一个类。当增加一个新产品时,同时增加一个新工厂。增加新工厂属于扩展,不会修改以前工厂类和产品类的任何代码。可以看过多个独立的简单工厂模式构成了工厂方法模式。 举个例子:假设现在有A、B两种产品,那么久开两个工厂。工厂A负责生产A产品,工厂B负责生产B种产品。这时候客户不需要告诉共产生产哪种产品了,只需要告诉共产生产就可以了。 应用说明:把简单工厂模式中的工厂类抽象出一个接口,这个接口只有一个方法,就是创建抽象产品的工厂方法。 程序案例: #include "stdafx.h" #include<iostream> using namespace std; //类方法—生产的产品 class Product { public: virtual void show() = 0; }; class Product_A : public Product //产品A { public: void show() { cout << "Product_A" << endl; } }; class Product_B : public Product //产品B { public: void show() { cout << "Product_B" << endl; } }; class Factory //工厂 { public: virtual Product* create() = 0; }; class Factory_A : public Factory //工厂A 只有一个函数方法(产品) { public: Product* create() { return new Product_A; } }; class Factory_B : public Factory //工厂B 只有一个函数方法(产品) { public: Product* create() { return new Product_B; } }; int main() { Factory_A* productA = new Factory_A(); //实例化--工厂对象A Factory_B* productB = new Factory_B(); //实例化--工厂对象B productA->create()->show(); //工厂A 调用函数(生产产品) productB->create()->show(); //工厂B 调用函数(生产产品) system("pause"); return 0; } 缺点:每增加一个新的产品,就需要增加一个新的工厂 3)抽象工厂模式 简介多个工厂,多个产品,并且每个产品可以包含多个型号。此时工厂和产品都是通过虚基类的方式构建。每一个工厂类可以生产同一个产品的多个型号。 特点提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 举个例子:例1)假如我们A产品中有A1和A2两种型号的厂品,B产品中有B1和B2两种型号的厂品,那怎么办,上面两种工厂模式就不能解决了。这个时候抽象工厂模式就登场了。还是开设两家工厂,工厂A负责生产A1 、A2型号产品,B工厂负责生产B1、B2型号的产品。 例2)假设一种情况,在的家中,某一个衣柜(具体工厂)只能存放某一种这样的衣服(成套,一系列具体产品),每次拿这种成套的衣服时也自然要从这个衣柜中取出了。用 OOP 的思想去理解,所有的衣柜(具体工厂)都是衣柜类的(抽象工厂)某一个,而每一件成套的衣服又包括具体的上衣(某一具体产品),裤子(某一具体产品),这些具体的上衣其实也都是上衣(抽象产品),具体的裤子也都是裤子(另一个抽象产品)。 优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。缺点:产品族扩展非常困难,要增加一个系列的某一产品,既要在抽象的 Creator 里加代码,又要在具体的里面加代码。 应用说明: #include <iostream> using namespace std; //定义抽象类 class product1 { public: virtual void show() = 0; }; //定义具体类 class product_A1 :public product1 { public: void show(){ cout << "product A1" << endl; } }; class product_B1 :public product1 { public: void show(){ cout << "product B1" << endl; } }; //定义抽象类 class product2 { public: virtual void show() = 0; }; //定义具体类 class product_A2 :public product2 { public: void show(){ cout << "product A2" << endl; } }; class product_B2 :public product2 { public: void show(){ cout << "product B2" << endl; } }; class Factory //工厂 { public: virtual product1 *creat1() = 0; virtual product2 *creat2() = 0; }; class FactoryA //工厂A 可以有多个函数方法(产品) { public: product1 *creat1(){ return new product_A1(); } product2 *creat2(){ return new product_A2(); } }; class FactoryB //工厂B 可以有多个函数方法(产品) { public: product1 *creat1(){ return new product_B1(); } product2 *creat2(){ return new product_B2(); } }; int main() { FactoryA *factoryA = new FactoryA(); //实例化--工厂对象A factoryA->creat1()->show(); //工厂A 调用函数(生产产品1) factoryA->creat2()->show(); //工厂A 调用函数(生产产品2) FactoryB *factoryB = new FactoryB(); //实例化--工厂对象B factoryB->creat1()->show(); //工厂B 调用函数(生产产品1) factoryB->creat2()->show(); //工厂B 调用函数(生产产品2) return 0; } 优点:易于交换产品系列,由于具体工厂类在一个应用中只需要在初始化的时候出现一次,这样就使得改变一个应用的具体工厂变得非常容易,只需要改变具体工厂即可使用不同的产品配置。让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂实现分离,不会出现在客户代码中。 缺点:增加新的产品时需要改动多处代码。 希望你对有帮助;如发现有错误的,欢迎指正。

优秀的个人博客,低调大师

苹果iPhone产业链分析(上篇)

直播:近二十载从业老兵谈金融科技赋能的探索与实践 作为全世界最成功的科技公司,苹果公司凭借强大的创新基因和卓越的供应链管理,苹果公司引领了智能手机行业的发展。可以说, iPhone手机的影响力早已超越了产品本身,而成为行业发展的标准以及行业未来的趋势。 iPhone对3C制造业拥有巨大影响力 智能手机是3C行业的重要组成部分,其规模和成长性占据行业主导地位。而iPhone作为智能手机的开创者,对上游3C制造业拥有巨大影响力。 iPhone对3C制造业的影响力,主要体现在两个方面: 1)作为全球最赚钱的手机,iPhone为上游3C制造业带来大量设备订单。根据IDC数据, 2017Q4iPhone手机ASP(Average Selling Price,平均销售价格)达到618美元,是全球智能手机平均ASP的一倍以上。毛利率方面,2016年苹果公司实现毛利率30%,远远高于行业平均水平。目前,苹果手机凭借 17.2%的市占率占据了全球智能手机行业 95%的利润。 由此可见,iPhone强大的盈利能力保证了上游设备企业的订单数量维持在较高水平。 2)iPhone手机产品更新周期短,新的技术和工艺催生大量设备更新需求。根据历史数据, iPhone 手机的产品迭代周期为一年,产品更新过程中产生大量新的技术和工艺突破,例如,苹果率先把高清摄像头、金属机身、指纹识别等技术运用到智能手机上,新的技术和工艺带动上游CNC机床、平面显示模组、SMT生产线等机械设备的迅速普及。 3C制造业进入存量竞争时代,自动化渗透率有望持续提升 3C 产品是计算机(Computer)、通讯( Conmunication)、消费类电子产品( Consumer Electronics)三者的统称。传统的3C产品包括电脑、平板电脑、手机、数码相机、电视机、 影音播放设备等硬件;新兴的3C产品包括智能可穿戴设备、VR/AR设备终端、消费级无人机、娱乐机器人等。 国内3C制造业大而不强,自动化设备助力行业转型升级 3C行业的巨大市场空间带动了上游制造业的繁荣。过去几年,凭借广阔的消费市场、成熟的制造能力以及廉价的生产要素,中国已成为世界消费电子制造中心。 虽然我国3C产能居世界首位,但在产业链上主要集中在中下游环节,以代工组装为主,附加值低。根据我们测算,我国3C制造业毛利率在10%左右,净利率不到5%。3C 产业链中高端环节基本被国际巨头垄断,在芯片、传感器、CPU、大容量储存芯片等核心零部件主要依赖国外进口。国内3C制造业仍然处于劳动密集型的生产制造和加工组装环节,成本管理能力成为企业的核心竞争力。 iPhone相关产业链 3D玻璃异军突起,拉动玻璃产业链景气度上升 目前市面流行的手机后盖材质有铝合金、不锈钢、塑料、玻璃、陶瓷五种。金属材质凭借良好的质感和耐磨性一度成为许多手机厂商的选择,然而金属机身的封闭性很强,对信号有较大的屏蔽。这一缺陷严重制约了无线充电技术和5G通讯在智能手机中的运用,玻璃后盖具备精美的视觉体验、良好的信号接收能力、突出的透光性能等突出优势,有望成为未来机身材质的第一选择。2017年,苹果公司向全球玻璃制造巨头康宁投资2亿美元,支持康宁的研发、 设备需求以及先进的玻璃制造工艺。 柔性OLED技术成熟3D玻璃异军突起 盖板玻璃作为手机屏幕的最外层保护层,是手机触控解决方案中不可或缺的组成部分。早期, 以iPhone 4为代表,2D玻璃在手机屏幕上得到大量应用;之后,为了提升屏幕和机身整体的视觉体验,2.5D 的弧面玻璃开始被各大手机厂商采用,苹果从 iPhone6 起,开始选择配�Z2.5D弧面玻璃。目前,随着良品率的不断攀升和工艺的日益成熟,柔性OLED取代LCD 成为手机屏幕的主流解决方案已成为大势所趋。随着曲面屏的强势崛起,与之配套的3D玻璃将成为盖板玻璃未来的发展方向,目前,三星Galaxy S7 Edge、小米Note2等机型开始采用曲面OLED屏+3D盖板玻璃的配�Z,市场反响热烈。 2D-2.5D-3D是盖板玻璃演化趋势,预计3D玻璃出货量即将破亿。2D玻璃就是我们熟悉的平面玻璃,玻璃表面没有任何的弯曲弧度;2.5D玻璃在2D玻璃的基础上,对玻璃边缘进行了弧度处理,手握一块 2.5D 玻璃屏幕能够使手机表面外观就如同盈而不溢的水滴,更具视觉张力,因而又将2.5D玻璃屏幕称为水滴屏;3D 玻璃无论在玻璃中间还是边缘均采用了弧度设计,使整块玻璃具有一定弧度。3D玻璃是玻璃制造工艺的一次重大突破,也是目前唯一能与柔性OLED配套使用的盖板玻璃,随着OLED技术的日趋成熟,必然带动3D玻璃在3C领域的渗透率。据IHS估计,2016年3D玻璃的出货量达到0.49亿片,IHS 预测2017年出货量将飞涨到1亿片。目前,三星、LG、Vivo、小米等主流厂商纷纷采用3D曲面玻璃, 受到消费者的热捧。今年,iPhone 8 也将携3D玻璃重磅来袭,3D玻璃将迎来历史机遇。 从3D玻璃产业链角度看好玻璃精雕机、热弯机等设备投资机会 从产业链的角度看,手机盖板玻璃产业可按照上中下游分为上游玻璃基板、辅助材料、加工 设备提供商,中游玻璃盖板加工厂,下游触控模组组装厂。玻璃盖板加工厂购买玻璃基板、 辅助材料、加工设备,进行切割、热弯等一系列加工工序,再交付给触控模组组装厂,完成盖板玻璃与显示屏幕的贴合。 从上游原材料供应来看,上游的玻璃盖板基板产业进入壁垒高,利润率高,市场被几大国际巨头垄断,如美国康宁公司的“大猩猩”玻璃盖板毛利润达到80%以上。目前市场上性能最好的产品是利用溢流法工艺生产的高铝玻璃,只有4家厂商掌握了核心技术。 从中游玻璃加工来看,2D玻璃的制造工艺比较简单,技术也最为成熟,主要包括数控开料、 CNC雕刻、研磨抛光、强化处理、镀膜、清洗、检测等工序,所需主要设备包括玻璃精雕机、 玻璃平磨机、抛光机、光学检测设备等;2.5D工艺流程与2D 玻璃相似,边缘曲面主要通过 直接抛光打磨而成;3D 玻璃制造增加了热弯工艺,需要引入热弯机对玻璃进行曲面成型, 同时需要对玻璃基板反复研磨抛光,工序更加复杂,制造成本也更高。根据我们调研数据显示,目前一条3kk/月产能的3D玻璃生产线大约需要100台热弯机,整条生产线的设备总投资为3-4亿元。 玻璃加工设备市场空间近80亿元,促进设备厂商进入新的景气周期 根据IDC 数据,2016年全球智能手机出货量达到14.7亿台,到2020年智能手机出货量有 望达到 17.7 亿台。不同类型的玻璃加工效率有所不同,据估算,到 2020 年,2D、2.5D、 3D玻璃在前盖板的市场渗透率将分别为10%、50%、40%,在后盖板的渗透率分别达到5%、 25%、20%,玻璃精雕机平均单价为 30 万/台,2D 玻璃产能 80 万片/年,2.5D 玻璃产能为 50 万片/年;玻璃热弯机平均单价为 120 万/台,产量为 25 万片/年,则到 2020 年,玻璃精 雕机和玻璃热弯机在智能手机中的市场规模将分别达到26.42亿元和50亿元。 2020年精雕机市场规模将达到26.42亿元 2020年热弯机市场规模有望达到50亿元 精雕机基本实现国产化,热弯机进口替代规模逐年扩大。目前,国内精雕机技术比较成熟, 设备基本实现了国产化,国内主流玻璃精雕机供应商包括大宇精雕、北京精雕、奥瑞德、创 世纪、远洋翔瑞等。热弯机是3D玻璃成型过程中使用到的重要加工设备,需求量会随着3D 玻璃出货量的增加而增加。韩国和中国台湾地区企业布局较早,主要的企业包括韩国的DTK 和台湾盟立。近年来,以智慧松德、劲胜智能为代表的国内厂商经过多年努力,现已具备提 供高端热弯机解决方案能力,正逐步扩大在中高端市场的进口替代规模。 OLED屏替代提速,引领设备制造潮流 OLED引领新一代平板显示技术创新 OLED,即有机发光二极管(OrganicLight-EmittingDiode),是一种由有机分子薄片组成的 固态设备,施加电力之后就能发光,具有不需背光源、对比度高、厚度薄、视角广、反应速 度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异特性。根据驱动电路 与基板的关系可以分为无源驱动(PMOLED)和有源驱动(AMOLED),目前市场上OLED 产品主要以 AMOLED 为主。OLED 的基本结构包括基层、阳极、有机层、导电层、发射层和阴极。 OLED是通过载流子注入和复合导致发光的现象,其原理是用ITO透明电极和金属电极分别 作为器件的阴极和阳极,在一定电压驱动下,电子和空穴分别从阴极和阳极注入到电子和空 穴传输层,电子和空穴分别经过电子和空穴传输层迁移到发光层,并在发光层中相遇,形成 激子并使发光分子激发,后者经过辐射而发出可见光。OLED基本原理过程是电流通过有机 层从阴极流到阳极,将电子从导电层带到发射层;导电层失去电子会产生空洞,这些空洞需 要用发射层中的电子来填充;空洞跃到发射层后再次与电子结合,电子进入空洞时,会以光的形式释放出多余的能量,即形成了可见光子。 OLED发光过程图 OLED制造成本下降,加速替代LCD步伐 OLED比LCD性能更加优越。TFT-LCD是利用液晶的光电效应,两片平行的玻璃当中放�Z 液态晶体,通过薄膜晶体管(TFT)电路控制液晶单元的透射率及反射率,从而产生不同灰 阶的一种平板显示技术。由于液晶材料本身并不发光,因此 TFT-LCD 需要背光源。OLED 为有机发光二极管,可自发光,不需要背光源,通过TFT基板控制电流大小,即可控制RGB 有机膜层的发光亮暗,从而混合出需要的颜色。由于这种自发光的特质,OLED具有较轻薄、 高对比度、高亮度、低能耗、广视角的优势,响应时间也只有LCD 的千分之一。由于AMOLED 的发光器件是固态的OLED,其显示构成均为固态,因此可以方便的做成柔性显示,柔性使 得 OLED 应用不仅局限于传统 3C,在可穿戴设备、车载显示器、家用电器及虚拟现实(VR) 等领域业也适用。然而,由于其在长时间的电应力下会存在漂移或空间的不匹配,显示不均, 不够稳定,所以其在大尺寸的平板电脑和电视等领域的应用上仍然存在技术难题。 OLED 理论成本低于 LCD,替代优势明显。目前,LCD 依然是成本最低的显示方式,由于 OLED主要由固体材料构成,材料涂布必须在液态、溶解态或汽化状态下完成,生产工艺难点尚未突破,成本较高。例如,LG在中国投资的LCD广州8.5代液晶面板线,投资金额40 亿美元,同等规模的OLED生产线投资额为50亿美元以上。但OLED的理论成本却低于LCD,由于OLED自发光的特质,其结构较为简单,材料及组装程序较少,一旦大规模应用将会体现出成本优势;另一方面,OLED生产线可由LCD改造而来,一条8.5代LCD生产线转OLED投资在20亿美元左右,远低于新的LCD生产线的投资。根据测算,刚性AMOLED的理论成本为14.3美元,低于LTPS-LCD的理论成本。OLED成本随着良率的升高而降低,随着技术的发展,良率的提高以及OLED的大规模应用,其成本将低于LCD,替代优势增强。 根据UBI数据显示,到2020年,OLED在智能手机中的渗透率将达到62%,超越LCD,成为最主流的平面显示方式。 OLED市场需求放量,市场规模有望达到670亿美元 凭借出色的视觉体验和低能耗性能等优势,OLED引领了新一波3C产品显示革命。目前AMOLED在以智能手机为代表的小尺寸屏幕上开始大量使用。三星是该领域的绝对霸主, 市场份额排名全球第一。此外,部分国产手机厂商开始尝试搭载 AMOLED 屏幕,如华为、 Vivo、OPPO都选择在其旗舰机上采用AMOLED屏幕。 2016年,OLED屏在智能手机中的渗透率达到20%,市场规模为150亿美元。根据市场预期,新一代iPhone8大概率使用OLED屏,考虑到iPhone的行业影响力,OLED屏的应用市场将完全打开,未来需求空间非常广阔。根据UNI Research数据显示,2020年OLED 屏在智能手机中的渗透率有望攀升至65%,市场规模达到670亿美元。 此外,OLED屏的应用市场不仅局限于智能手机,凭借其轻薄、柔性、高对比度、低能耗等特点,OLED 还广泛应用于电视面板、智能可穿戴设备、平板电脑、AR/VR、车载面板等领 域。根据中国产业发展研究网数据,到2020年,全球OLED出货量将达到9亿片,是2015年出货量的2.5倍,年复合增长率为20%。 OLED产业链梳理 OLED产业链按上中下游分为上游材料及设备提供商,中游面板制造及模组组装,下游OLED 应用。目前,上游材料、元器件等供应被美国、日本等国家垄断,其他国家切入难度较大。 以京东方、深天马等为代表的国内企业在中游面板制造领域深耕多年,逐渐积累起竞争优势。 2016年,京东方以17.1%的市场份额占据全球第二大面板提供商的地位。 OLED 屏上游原材料包括 ITO 玻璃基板、TFT(柔性基板)、 驱动 IC、有机材料、偏光板、 封装胶等,目前市场供应被美国、日本等厂商垄断,国内厂商在偏光片供应上占有一席之地。 显示面板生产工序按顺序分为Array制程、Cell制程和Module制程。OLED依赖电流驱动 实现发光,Array制程采用LTPS(低温多硅晶技术), 包括镀膜、晶化、曝光、显影、蚀刻、 剥离等步骤;Cell 制程包括蒸镀、封装等;Module 制程主要对模组进行组装、包括 COG、 FOG、清洗、检测等。 Array、Cell制程所用设备包括蒸镀机、封装机、曝光机、激光加工设备等。前中道设备技术 含量高、价格昂贵,如一台曝光机设备的价格在 1000 万美元以上,设备建设周期约为 3 个 月。目前前中道制程设备基本被国外厂商垄断,日本厂商 Tokki 和 Ulvac 在蒸镀设备领域绝 对领先,市场份额超90%,美国3M、SEIKO、SUSS等公司在显影、测试设备方面优势明 显。但是由于OLED大规模采用LTPS 技术,引入晶化、剥离等工艺环节,其中涉及激光加 工处理,这为国内相关厂商打开应用市场,如国内激光设备龙头大族激光凭借多年产品积累 和技术优势,开始逐渐切入。 Module 制程设备包括自动偏光贴合机、COG 邦定机、FOG 邦定机、检测设备等,国内厂 商已掌握成熟的技术,性价比优势开始显现,进口替代规模有望进一步扩大。自动偏光贴合 机主要在OLED 端子表面完成偏光片的贴合工作;COG即Chip On Glass,其主要工序是 将芯片邦定到玻璃基板上;FOG即FPC On Glass,其主要工序是将FPC(柔性电路板)邦 定到玻璃基板上;检测设备主要完成面板组装后的检测工作。 OLED量产提速,模组设备迎来发展契机 根据产业链调研显示,我国目前 OLED 面板厂综合良率在 50%左右,距离 60%良率的盈亏 平衡点还需 12-18 个月左右时间。预计到 2017 年的第四季度,国内面板厂将整体完成良率爬坡阶段,待达到盈亏平衡后很快进入规模扩产阶段,从而实现国内OLED面板的良性发展。 OLED 产线建设如火如荼,国内厂商奋起直追。随着工艺日益成熟、成本逐渐下降,OLED 屏需求迎来快速增长期,今年苹果将推出 OLED 屏幕手机,已向三星订购 1 亿多片 OLED 屏。现有的产能已无法满足旺盛的需求,以三星、LG 为代表的国际巨头纷纷加快 OLED 产 线投资速度。国内面板厂商也不甘示弱,积极加大投资力度,武汉天马、成都京东方6代柔 性AMOLED产线相继点亮,华星光电6代柔性LTPS-AMOLED产线也于6月13日打桩开 建。据不完全统计,全球目前在建及规划中的OLED产线有15条,其中有11 条设在中国大 陆,产线投资金额达到4000亿元。根据台湾研究机构Digitimes Research的报告显示,中 国面板厂商总产能将由 2016 年的 27.2 万平方米增长到 2020 年的 786.4 万平方米,5 年 CAGR达131.9%,显著高于国际整体增速。 我们认为,国内显示模组组装设备厂商技术成熟,进口替代需求强烈,将成为率先受益的企 业,根据草根调研显示,一条OLED产线大约需要150台邦定设备、200台贴合设备、100 台检测设备,邦定机和贴合机的售价在200万左右,检测设备单件为50万左右,以此测算, 一条OLED产线的模组设备投资约为10亿元。与国外产品相比,国产设备主要有以下两大 优势:(1)国产设备技术性能逐渐跟上,价格优势开始显现。(2)中国承接海外产能,国产设 备免去运输成本。 每年500亿设备需求,显示模组组装设备率先受益 未来三年,OLED产线将迎来投资建设高峰,在面板企业大规模资本性支出刺激下,设备厂 商有望获得批量订单,据DSCC数据显示,2017Q1全球OLED设备投资达45亿美元,同 比大涨90%,印证行业火爆行情。国内面板厂商投入产线建设的金额超过3000亿元,其中 约50%用于设备采购,每年将孕育500亿的设备市场空间,我们认为国产模组组装设备技术 成熟,进口替代需求强烈,将成为率先受益的板块。未来三年,COG 设备的市场容量为 58 -87亿元,年均19-29亿元;FOG市场容量为23-34亿元,年均8-11 亿元;AOI设备 的市场容量为57-87亿元,年均19-29亿元;贴合设备的市场容量为47-70亿元,年均 16-23亿元。我们梳理国内外主要的设备提供商,包括智云股份、精测电子、大族激光等。 OLED打开全面屏应用空间,异形切割设备有望大规模放量 全面屏指的是手机正面配备一整块屏幕,屏幕比例从 16:9 升级为 18:9,拥有超窄边框和更 高屏占比。如小米的Mix屏幕,屏占比高达91.3%。小米之后LG和联想也分别推出了全面 屏手机LG G6和ZUK Edge,屏占比高达78.3%和86.4%。今年3月,三星 S8系列全球销 量突破千万台,成为迄今为止最成功的全面屏手机。随着 iPhone 加入全面屏阵营,全面屏 有望迎来大规模应用的的黄金时代。 全面屏是手机外观极致美感的巅峰之作,超高的屏占比不仅可以带来更好的视觉体检,同时 还能使外观显得简洁漂亮。传统LTPS-LCD是incell触控,应用全面屏时面临四重困难:1) 需重回 driver+touch 两颗独立芯片;2)驱动芯片需改成 COF 封装;3)需要设计超窄背光 模组,结构和膜材都要改进;4)面板切割良率很低。而 OLED 技术由于没有背光源、具有 柔性特点,可以完美的解决制约全面屏普及的技术瓶颈。随着OLED量产提速,全面屏的大 规模普及已成为确定性趋势。 全面屏量产,首看异形切割设备。全面屏对边框宽度提出了更高的要求,传统的切割多数采 用直线切割,切割难度低。但由于全面屏边框窄,手机面板的元器件和整机布线都要重新安 排,这就需要异形切割实现高密度排线布局。异形切割按直线切割方向,而是切割成不规则 形状或圆角矩阵,可实现L角切割、R角切割和U型槽切割。 目前主流的切割方案包括刀轮切割和激光切割。刀轮切割属于机械加工,不会产生高温问题, 加工相对便宜,但加工精度有限,良率低;激光切割利用高能激光束照射到被切割材料,利 用瞬间热量使玻璃沿着切割路径裂开,激光加工可以有效降低玻璃边缘的毛边现象,加工良 率高,但加工成本相对较高。 由于良率更高,主流手机厂商多数采用激光切割。激光切割按脉冲宽度时间又可分为纳秒(10 的负 9 次方秒)、皮秒(10 的负 12 次方秒)和飞秒(10 的负 15 次方秒)激光设备。皮秒 激光脉冲宽度时间为皮秒级,其依靠自身极高的峰值功率,瞬间气化材料,热效应微乎其微, 加工边缘整齐,且加工成本比飞秒激光低,成为目前全面屏最理想的激光切割方案。 大族激光是国内激光加工设备的绝对龙头,公司小功率激光加工设备广泛运用 3C 产业,据 公司 16 年报,近几年,智能手机产业链累计采购公司激光设备超 100 亿元。公司自主研发 的Draco系列皮秒激光器可广泛运用于全面屏的异形切割,产品技术达到国际一流水平,可 以实现进口替代。截止2016年底,Draco皮秒激光器累计销量4859台,2016销量达1200 台,创历史新高。随着全面屏普及加速,公司设备将持续放量。 由于篇幅所限,先和大家分享本报告上篇。

优秀的个人博客,低调大师

量化分析1-特征工程

1.1、财务数据——总市值和PE from jqdatasdk import * import seaborn as sns import math import datetime from tqdm import tqdm import pandas as pd import matplotlib.pyplot as plt import numpy as np df = get_fundamentals(query(valuation,indicator)) raw_data = [] for index in range(len(df['code'])): raw_data_item = { 'code' :df['code'][index], 'market_cap':df['market_cap'][index], 'pe_ratio' :df['pe_ratio'][index] } raw_data.append(raw_data_item) # # 按照财务信息中的总市值降序排序 # raw_data = sorted(raw_data,key = lambda item:item['market_cap'], reverse=True) # # 剔除总市值排名最小的10%的股票 # fitered_market_cap = raw_data[:int(len(raw_data) * 0.9)] # # 剔除PE TTM 小于0或大于100 # filtered_pe = [] # for stock in fitered_market_cap: # if stock['pe_ratio'] == None or math.isnan(stock['pe_ratio']) or float(stock['pe_ratio']) < 0 or float(stock['pe_ratio']) > 100: # continue # filtered_pe.append(stock['code']) #PE数据集 df_pe=pd.DataFrame(raw_data) df_name=get_all_securities().reset_index().rename(columns={'index':'code'}) df_pe=pd.merge(df_pe,df_name,on='code',how='left') df_pe=df_pe[['code','market_cap','pe_ratio','display_name']] 1.2、行情数据——25日涨跌幅 current_dt=datetime.datetime.now().strftime('%Y-%m-%d') CHANGE_PCT_DAY_NUMBER=25 def load_change_pct_data(current_dt,codes): change_pct_dict_list = [] # 计算涨跌幅需要用到前一日收盘价,所以需要多加载一天的数据, # 而这里在第二日的开盘前运行,计算前一个交易日收盘后的数据,所以需要再多加载一天 # 使用固定的25个交易日,而非25个bar计算涨跌幅 count = CHANGE_PCT_DAY_NUMBER + 1 # 获取25个交易日的日期 pre_25_dates = get_trade_days(start_date=None, end_date=current_dt, count=count) pre_25_date = pre_25_dates[0] pre_1_date = pre_25_dates[-1] for code in codes: pre_25_data = get_price(code, start_date=None, end_date=pre_25_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1) pre_1_data = get_price(code, start_date=None, end_date=pre_1_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1) pre_25_close = None pre_1_close = None if str(pre_25_date) == str(pre_25_data.index[0])[:10]: pre_25_close = pre_25_data['close'][0] if str(pre_1_date) == str(pre_1_data.index[0])[:10]: pre_1_close = pre_1_data['close'][0] if pre_25_close != None and pre_1_close != None and not math.isnan(pre_25_close) and not math.isnan(pre_1_close): change_pct = (pre_1_close - pre_25_close) / pre_25_close item = {'code':code, 'change_pct': change_pct} change_pct_dict_list.append(item) return change_pct_dict_list def load_change_pct_data_1(current_dt,code): change_pct_dict_list = [] # 计算涨跌幅需要用到前一日收盘价,所以需要多加载一天的数据, # 而这里在第二日的开盘前运行,计算前一个交易日收盘后的数据,所以需要再多加载一天 # 使用固定的25个交易日,而非25个bar计算涨跌幅 count = CHANGE_PCT_DAY_NUMBER + 1 # 获取25个交易日的日期 pre_25_dates = get_trade_days(start_date=None, end_date=current_dt, count=count) pre_25_date = pre_25_dates[0] pre_1_date = pre_25_dates[-1] pre_25_data = get_price(code, start_date=None, end_date=pre_25_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1) pre_1_data = get_price(code, start_date=None, end_date=pre_1_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1) pre_25_close = None pre_1_close = None if str(pre_25_date) == str(pre_25_data.index[0])[:10]: pre_25_close = pre_25_data['close'][0] if str(pre_1_date) == str(pre_1_data.index[0])[:10]: pre_1_close = pre_1_data['close'][0] if pre_25_close != None and pre_1_close != None and not math.isnan(pre_25_close) and not math.isnan(pre_1_close): change_pct = (pre_1_close - pre_25_close) / pre_25_close item = {'code':code, 'change_pct': change_pct} change_pct_dict_list.append(item) return change_pct_dict_list # # 加载标的的涨跌幅信息 # change_pct_dict_list = load_change_pct_data(current_dt,filtered_pe) # # 按照涨跌幅升序排序 # change_pct_dict_list = sorted(change_pct_dict_list,key = lambda item:item['change_pct'], reverse=False) # # 取跌幅前10%的股票 # change_pct_dict_list = change_pct_dict_list[0:(int(len(change_pct_dict_list)*0.1))] change_pct_dict_list=[] for i in tqdm(df_pe['code']): change_pct_dict_list.append(load_change_pct_data_1(current_dt,i)) df_stocks_industry_1=pd.DataFrame(list(df_stocks_industry.items())) df_stocks_industry_1.columns=['code','industry_name'] 现在是否ST df_stoacks_is_st=get_extras('is_st',list(df_stocks_industry_1['code']),start_date='2020-03-06', end_date='2020-03-06') df_stoacks_is_st=df_stoacks_is_st.T.reset_index().rename(columns={'index':'code','2020-03-06 00:00:00':'is_st'}) df_stoacks_is_st.columns=['code','is_st'] 特征合并 # df_pe df_stocks_industry=pd.merge(df_pe,df_stocks_industry_1,on='code',how='left') #25日涨跌幅 change_pct_dict_df df_stocks_industry_change=pd.merge(df_stocks_industry,change_pct_dict_df,on='code',how='left') #合并资产负债率特征 df_stocks_feature=pd.merge(df_stocks_industry_change,df_liability_vs_assets,on='code',how='left') #合并流动比率特征 df_current df_stocks_feature=pd.merge(df_stocks_feature,df_current,on='code',how='left') #总资产周转率、存货周转率、平均在库天数 df_stocks_feature=pd.merge(df_stocks_feature,df_turnover,on='code',how='left') #是否st标签 df_stocks_feature=pd.merge(df_stocks_feature,df_stoacks_is_st,on='code',how='left') df_stocks_feature code market_cap pe_ratio display_name industry_name change_pct company_name end_date ratio_liability_vs_assets current_ratio ratio_assets_turnover ratio_inventory_turnover ratio_turnover_days is_st 0 000017.XSHE 24.0939 -989.3035 深中华A 铁路、船舶、航空航天和其他运输设备制造业 0.092166 深圳中华自行车(集团)股份有限公司 2018-12-31 0.768163 1.187177 1.637112 51.207251 7.030254 False 1 600766.XSHG 18.9023 -757.5206 园城黄金 有色金属矿采选业 0.125750 烟台园城黄金股份有限公司 2018-12-31 0.676292 1.002743 0.075966 0.109334 3292.668440 False 2 000586.XSHE 21.0463 407.0524 汇源通信 计算机、通信和其他电子设备制造业 0.084702 四川汇源光通信股份有限公司 2018-12-31 0.564357 1.599535 0.711899 4.401857 81.783661 False 3 000985.XSHE 20.4701 33.7868 大庆华科 化学原料和化学制品制造业 0.039648 大庆华科股份有限公司 2019-03-31 0.228049 2.237382 0.764512 7.787478 46.228062 False 4 600556.XSHG 226.6887 -208.8825 ST慧球 软件和信息技术服务业 0.024939 广西慧金科技股份有限公司 2019-03-31 0.681672 1.534540 0.053902 60.376379 5.962597 True 5 600608.XSHG 14.7001 2378.2588 ST沪科 黑色金属冶炼和压延加工业 -0.028260 上海宽频科技股份有限公司 2018-12-31 0.646161 1.614730 5.816101 13.893497 25.911403 True 6 600071.XSHG 29.2555 -99.2737 凤凰光学 仪器仪表制造业 -0.047739 凤凰光学股份有限公司 2019-03-31 0.472790 1.169294 0.148451 1.246763 288.747797 False 7 601890.XSHG 54.6858 90.6697 亚星锚链 铁路、船舶、航空航天和其他运输设备制造业 -0.015461 NaN NaN NaN NaN NaN NaN NaN False 8 000004.XSHE 69.1570 -250.3860 国农科技 医药制造业 0.836099 深圳中国农大科技股份有限公司 2019-03-31 0.163786 4.535662 0.662938 NaN NaN False 9 601718.XSHG 222.2164 -114.2454 际华集团 纺织服装、服饰业 0.375921 际华集团股份有限公司 2019-03-31 0.420433 2.738613 0.141555 0.744656 483.444716 False 10 603778.XSHG 19.7500 -165.6433 乾景园林 土木工程建筑业 0.018018 NaN NaN NaN NaN NaN NaN NaN False 11 600836.XSHG 30.2878 -43.7923 界龙实业 印刷和记录媒介复制业 0.080347 上海界龙实业集团股份有限公司 2018-12-31 0.730876 0.913507 0.397119 0.921334 390.737769 False 12 600421.XSHG 21.2226 -222.6517 *ST仰帆 通用设备制造业 0.193696 湖北仰帆控股股份有限公司 2019-03-31 0.785138 0.347653 0.034771 7.173724 50.183138 True 13 002058.XSHE 30.1241 -215.5228 威尔泰 仪器仪表制造业 -0.003383 上海威尔泰工业自动化股份有限公司 2018-12-31 0.131286 7.009828 0.533314 2.205086 163.258914 False 14 000518.XSHE 62.0822 -587.3756 四环生物 医药制造业 0.098329 江苏四环生物股份有限公司 2018-12-31 0.305737 2.700395 0.427178 0.733750 490.630291 False 15 002423.XSHE 212.4385 -141.7885 中粮资本 其他金融业 0.036464 NaN NaN NaN NaN NaN NaN NaN False 16 603300.XSHG 53.7946 40.7219 华铁应急 租赁业 -0.036395 浙江华铁建筑安全科技股份有限公司 2019-03-31 0.308076 1.136618 0.037371 15.748571 22.859217 False 17 000045.XSHE 42.4279 -231.1387 深纺织A 计算机、通信和其他电子设备制造业 0.139252 NaN NaN NaN NaN NaN NaN NaN False 18 600671.XSHG 14.6987 -99.4585 天目药业 医药制造业 -0.032914 NaN NaN NaN NaN NaN NaN NaN False 19 600975.XSHG 57.8271 -169.4713 新五丰 畜牧业 0.237536 湖南新五丰股份有限公司 2018-12-31 0.271259 2.714286 1.280378 4.496826 80.056468 False 20 600446.XSHG 178.3693 -145.2521 金证股份 软件和信息技术服务业 0.009726 深圳市金证科技股份有限公司 2018-12-31 0.525015 1.598019 1.272702 5.953736 60.466232 False 21 002428.XSHE 71.8432 -124.1955 云南锗业 有色金属冶炼和压延加工业 -0.001887 云南临沧鑫圆锗业股份有限公司 2018-12-31 0.194244 1.475745 0.243317 1.955290 184.115951 False 22 300086.XSHE 27.9900 -123.8907 康芝药业 医药制造业 0.198819 NaN NaN NaN NaN NaN NaN NaN False 23 600538.XSHG 26.6566 -121.4423 国发股份 批发业 0.261571 北海国发海洋生物产业股份有限公司 2018-12-31 0.164816 4.197737 0.294117 5.835953 61.686578 False 24 002590.XSHE 37.9401 -45.6561 万安科技 汽车制造业 0.036458 浙江万安科技股份有限公司 2019-03-31 0.467353 1.419771 0.141765 0.939937 383.004207 False 25 600890.XSHG 49.1736 -160.5955 中房股份 房地产业 0.200878 NaN NaN NaN NaN NaN NaN NaN False 26 600385.XSHG 11.6857 -103.1429 *ST金泰 医药制造业 0.025779 山东金泰集团股份有限公司 2019-03-31 0.711436 1.297288 0.005816 NaN NaN True 27 600234.XSHG 19.4955 -364.8226 *ST山水 计算机、通信和其他电子设备制造业 0.007114 山西广和山水文化传播股份有限公司 2019-03-31 0.857826 0.162083 0.060775 NaN NaN True 28 600864.XSHG 160.4120 23.1630 哈投股份 资本市场服务 0.079827 哈尔滨哈投投资股份有限公司 2019-03-31 0.681170 1.873903 0.020583 6.927726 51.965101 False 29 300713.XSHE 20.5403 -110.9402 英可瑞 电气机械和器材制造业 0.023784 深圳市英可瑞科技股份有限公司 2018-12-31 0.233626 3.626136 0.311969 3.147327 114.382781 False ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3665 002679.XSHE 38.8054 840.2719 福建金森 林业 0.034921 福建金森林业股份有限公司 2019-03-31 0.546533 4.024858 0.005973 0.017424 20661.260075 False 3666 603318.XSHG 37.4011 -51.5528 派思股份 专用设备制造业 -0.079042 大连派思燃气系统股份有限公司 2018-12-31 0.518041 1.212190 0.199222 2.569598 140.099752 False 3667 000020.XSHE 28.9391 468.7081 深华发A 计算机、通信和其他电子设备制造业 0.000000 NaN NaN NaN NaN NaN NaN NaN False 3668 002341.XSHE 95.6338 926.3431 新纶科技 化学原料和化学制品制造业 0.296811 深圳市新纶科技股份有限公司 2019-03-31 0.472343 1.188651 0.064893 0.965029 373.045625 False 3669 600149.XSHG 19.1981 212.6978 ST坊展 综合 -0.013459 NaN NaN NaN NaN NaN NaN NaN True 3670 601212.XSHG 242.8766 86.8249 白银有色 有色金属冶炼和压延加工业 -0.012012 NaN NaN NaN NaN NaN NaN NaN False 3671 300648.XSHE 24.4668 950.7939 星云股份 仪器仪表制造业 0.180574 福建星云电子股份有限公司 2018-12-31 0.244180 3.014654 0.430049 2.305498 156.148494 False 3672 601069.XSHG 99.0888 116.9250 西部黄金 有色金属矿采选业 0.061611 西部黄金股份有限公司 2018-12-31 0.371280 0.999096 0.374644 2.417007 148.944530 False 3673 603501.XSHG 1489.9034 5630.9863 韦尔股份 计算机、通信和其他电子设备制造业 -0.070294 上海韦尔半导体股份有限公司 2019-03-31 0.690727 0.709313 0.129665 0.735590 489.403136 False 3674 601808.XSHG 769.1806 31.1875 中海油服 开采辅助活动 -0.020756 中海油田服务股份有限公司 2018-12-31 0.535697 1.276167 0.293838 15.244639 23.614859 False 3675 000700.XSHE 124.5300 134.4473 模塑科技 汽车制造业 0.112294 NaN NaN NaN NaN NaN NaN NaN False 3676 000893.XSHE 45.5656 116.7959 东凌国际 农副食品加工业 -0.032411 NaN NaN NaN NaN NaN NaN NaN False 3677 601008.XSHG 41.4560 -4044.8789 连云港 水上运输业 0.003205 江苏连云港港口股份有限公司 2019-03-31 0.583972 0.447947 0.037784 15.933937 22.593287 False 3678 688321.XSHG 233.9050 1201.6450 微芯生物 医药制造业 -0.105799 NaN NaN NaN NaN NaN NaN NaN False 3679 300548.XSHE 95.0418 1230.1967 博创科技 计算机、通信和其他电子设备制造业 0.472850 博创科技股份有限公司 2019-03-31 0.154593 4.588279 0.115826 0.867302 415.080159 False 3680 000554.XSHE 24.2320 1048.5831 泰山石油 批发业 0.058741 中国石化山东泰山石油股份有限公司 2018-12-31 0.287817 0.770372 2.425697 20.886699 17.235849 False 3681 300318.XSHE 40.8450 1296.5431 博晖创新 专用设备制造业 0.149126 北京博晖创新生物技术股份有限公司 2018-12-31 0.541381 0.884793 0.229357 1.028200 350.126446 False 3682 600476.XSHG 22.9525 -203.3730 湘邮科技 软件和信息技术服务业 0.016884 湖南湘邮科技股份有限公司 2018-12-31 0.567464 1.467393 0.579482 4.256108 84.584326 False 3683 002156.XSHE 286.6956 1416.6488 通富微电 计算机、通信和其他电子设备制造业 0.006943 通富微电子股份有限公司 2018-12-31 0.534477 0.946655 0.517087 4.990624 72.135262 False 3684 300101.XSHE 65.9405 1435.1690 振芯科技 计算机、通信和其他电子设备制造业 0.066807 成都振芯科技股份有限公司 2019-03-31 0.251711 4.909851 0.068638 0.452855 794.957054 False 3685 600730.XSHG 29.5088 -879.3200 中国高科 教育 0.088836 中国高科集团股份有限公司 2019-03-31 0.348047 20.871838 0.010003 1.499104 240.143423 False 3686 300618.XSHE 181.7682 1724.7690 寒锐钴业 有色金属冶炼和压延加工业 -0.174808 南京寒锐钴业股份有限公司 2019-03-31 0.408432 4.241162 0.169358 0.551533 652.726177 False 3687 002015.XSHE 98.0534 65.0332 协鑫能科 电力、热力生产和供应业 0.214300 江苏霞客环保色纺股份有限公司 2019-03-31 0.036410 22.912878 0.252404 1.690099 213.005285 False 3688 002213.XSHE 31.3120 1911.4472 特尔佳 汽车制造业 0.243665 深圳市特尔佳科技股份有限公司 2019-03-31 0.105138 7.575821 0.041269 0.624240 576.701078 False 3689 600517.XSHG 443.5174 231.8448 置信电气 电气机械和器材制造业 0.136052 上海置信电气股份有限公司 2018-12-31 0.597835 1.390691 0.553528 6.785512 53.054216 False 3690 600745.XSHG 1471.1353 193.3398 闻泰科技 计算机、通信和其他电子设备制造业 0.047068 闻泰科技股份有限公司 2018-12-31 0.779784 0.900466 1.023192 10.202054 35.287011 False 3691 000677.XSHE 33.5223 1266.4793 恒天海龙 化学纤维制造业 0.114908 恒天海龙股份有限公司 2019-03-31 0.255158 1.711874 0.225964 2.159967 166.669243 False 3692 600844.XSHG 52.0460 -23.0732 丹化科技 化学原料和化学制品制造业 0.105656 丹化化工科技股份有限公司 2018-12-31 0.187176 0.816353 0.422517 9.051410 39.772807 False 3693 000613.XSHE 22.4286 -6582.2614 大东海A 住宿业 -0.022198 海南大东海旅游中心股份有限公司 2019-03-31 0.107946 2.518450 0.104460 38.551491 9.338160 False 3694 002459.XSHE 224.7306 -467.8555 晶澳科技 电气机械和器材制造业 0.193011 秦皇岛天业通联重工股份有限公司 2018-12-31 0.143955 3.788168 0.238043 2.383663 151.028068 False 3695 rows × 14 columns

优秀的个人博客,低调大师

HTTPS原理分析 带着疑问层层深入

HTTPS 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA证书等,但对于以下灵魂三拷问可能就答不上了: 为什么用了 HTTPS 就是安全的? HTTPS 的底层原理如何实现? 用了 HTTPS 就一定安全吗? 本文将层层深入,从原理上把 HTTPS 的安全性讲透。 HTTPS 的实现原理 大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实,HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。 HTTPS的整体过程分为证书验证和数据传输阶段,具体的交互过程如下: ① 证书验证阶段 浏览器发起 HTTPS 请求 服务端返回 HTTPS 证书 客户端验证证书是否合法,如果不合法则提示告警 ② 数据传输阶段 当证书验证合法后,在本地生成随机数 通过公钥加密随机数,并把加密后的随机数传输到服务端 服务端通过私钥对随机数进行解密 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输 为什么数据传输是用对称加密? 首先,非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的; 另外,在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。 为什么需要 CA 认证机构颁发证书? HTTP 协议被认为不安全是因为传输过程容易被监听者勾线监听、伪造服务器,而 HTTPS 协议主要解决的便是网络传输的安全性问题。 首先我们假设不存在认证机构,任何人都可以制作证书,这带来的安全风险便是经典的“中间人攻击”问题。 “中间人攻击”的具体过程如下: 过程原理: 本地请求被劫持(如DNS劫持等),所有请求均发送到中间人的服务器 中间人服务器返回中间人自己的证书 客户端创建随机数,通过中间人证书的公钥对随机数加密后传送给中间人,然后凭随机数构造对称加密对传输内容进行加密传输 中间人因为拥有客户端的随机数,可以通过对称加密算法进行内容解密 中间人以客户端的请求内容再向正规网站发起请求 因为中间人与服务器的通信过程是合法的,正规网站通过建立的安全通道返回加密后的数据 中间人凭借与正规网站建立的对称加密算法对内容进行解密 中间人通过与客户端建立的对称加密算法对正规内容返回的数据进行加密传输 客户端通过与中间人建立的对称加密算法对返回结果数据进行解密 由于缺少对证书的验证,所以客户端虽然发起的是 HTTPS 请求,但客户端完全不知道自己的网络已被拦截,传输内容被中间人全部窃取。 浏览器是如何确保 CA 证书的合法性? 1. 证书包含什么信息? 颁发机构信息 公钥 公司信息 域名 有效期 指纹 ...... 2. 证书的合法性依据是什么? 首先,权威机构是要有认证的,不是随便一个机构都有资格颁发证书,不然也不叫做权威机构。另外,证书的可信性基于信任制,权威机构需要对其颁发的证书进行信用背书,只要是权威机构生成的证书,我们就认为是合法的。所以权威机构会对申请者的信息进行审核,不同等级的权威机构对审核的要求也不一样,于是证书也分为免费的、便宜的和贵的。 3. 浏览器如何验证证书的合法性? 浏览器发起 HTTPS 请求时,服务器会返回网站的 SSL 证书,浏览器需要对证书做以下验证: 验证域名、有效期等信息是否正确。证书上都有包含这些信息,比较容易完成验证; 判断证书来源是否合法。每份签发证书都可以根据验证链查找到对应的根证书,操作系统、浏览器会在本地存储权威机构的根证书,利用本地根证书可以对对应机构签发证书完成来源验证; 判断证书是否被篡改。需要与 CA 服务器进行校验; 判断证书是否已吊销。通过CRL(Certificate Revocation List 证书注销列表)和 OCSP(Online Certificate Status Protocol 在线证书状态协议)实现,其中 OCSP 可用于第3步中以减少与 CA 服务器的交互,提高验证效率 以上任意一步都满足的情况下浏览器才认为证书是合法的。 这里插一个我想了很久的但其实答案很简单的问题: 既然证书是公开的,如果要发起中间人攻击,我在官网上下载一份证书作为我的服务器证书,那客户端肯定会认同这个证书是合法的,如何避免这种证书冒用的情况? 其实这就是非加密对称中公私钥的用处,虽然中间人可以得到证书,但私钥是无法获取的,一份公钥是不可能推算出其对应的私钥,中间人即使拿到证书也无法伪装成合法服务端,因为无法对客户端传入的加密数据进行解密。 4. 只有认证机构可以生成证书吗? 如果需要浏览器不提示安全风险,那只能使用认证机构签发的证书。但浏览器通常只是提示安全风险,并不限制网站不能访问,所以从技术上谁都可以生成证书,只要有证书就可以完成网站的 HTTPS 传输。例如早期的 12306 采用的便是手动安装私有证书的形式实现 HTTPS 访问。 本地随机数被窃取怎么办? 证书验证是采用非对称加密实现,但是传输过程是采用对称加密,而其中对称加密算法中重要的随机数是由本地生成并且存储于本地的,HTTPS 如何保证随机数不会被窃取? 其实 HTTPS 并不包含对随机数的安全保证,HTTPS 保证的只是传输过程安全,而随机数存储于本地,本地的安全属于另一安全范畴,应对的措施有安装杀毒软件、反木马、浏览器升级修复漏洞等。 用了 HTTPS 会被抓包吗? HTTPS 的数据是加密的,常规下抓包工具代理请求后抓到的包内容是加密状态,无法直接查看。 但是,正如前文所说,浏览器只会提示安全风险,如果用户授权仍然可以继续访问网站,完成请求。因此,只要客户端是我们自己的终端,我们授权的情况下,便可以组建中间人网络,而抓包工具便是作为中间人的代理。通常 HTTPS 抓包工具的使用方法是会生成一个证书,用户需要手动把证书安装到客户端中,然后终端发起的所有请求通过该证书完成与抓包工具的交互,然后抓包工具再转发请求到服务器,最后把服务器返回的结果在控制台输出后再返回给终端,从而完成整个请求的闭环。 既然 HTTPS 不能防抓包,那 HTTPS 有什么意义? HTTPS 可以防止用户在不知情的情况下通信链路被监听,对于主动授信的抓包操作是不提供防护的,因为这个场景用户是已经对风险知情。要防止被抓包,需要采用应用级的安全防护,例如采用私有的对称加密,同时做好移动端的防反编译加固,防止本地算法被破解。 总结 以下用简短的Q&A形式进行全文总结: Q: HTTPS 为什么安全? A: 因为 HTTPS 保证了传输安全,防止传输过程被监听、防止数据被窃取,可以确认网站的真实性。 Q: HTTPS 的传输过程是怎样的? A: 客户端发起 HTTPS 请求,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。 Q: 为什么需要证书? A: 防止”中间人“攻击,同时可以为网站提供身份证明。 Q: 使用 HTTPS 会被抓包吗? A: 会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。 顺手 po 一张学习的过程图,

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册