英伟达被“压制”的25年
十九世纪中叶的美国西部,掀起了一场轰轰烈烈的淘金热,但最终赚到钱的,并不是拿命去赌的淘金者。一个名叫萨姆·布瑞南的商人,通过向淘金者出售铲子,成了加州历史上第一位百万富翁。
每一次风口出现时,总有企业想要扮演“卖铲人”的角色。特别是在元宇宙和人工智能的浪潮中,一些企业直接把“卖铲人”的身份写在了PPT上,生怕外界看不懂他们的定位。
可直到目前,真正称得上“卖铲人”的,似乎只有英伟达一家。
6月18日,英伟达市值达到3.34万亿美元,正式超过微软成为全球市值最高的公司。罗森布拉特证券公司分析师Hans Mosesmann甚至大胆预测:英伟达将在未来一年继续上涨,市值有望达到近5万亿美元。
翻看英伟达的市值增长历程,这家创办于1993年的“卖铲人”,直到2017年以后,市值才开始呈现出飙涨的趋势,而当下支撑英伟达市值的主流技术,均源自2017年以前。
在此之前的25年里,英伟达为何平平无奇?
01 选对了图形赛道,却差点输给“路线错误”
时间回到1993年初,30岁的黄仁勋辞掉了LSI Logi的工作,创办了自己的第一家公司——英伟达,选择的赛道是图形处理器。
那时候,市场上已经有20多家企业,既有IBM、HP、索尼、富士通、东芝等大公司,也有很多和英伟达一样的创业者。凭借在半导体市场的人脉和经验,黄仁勋和英伟达还是拿到了入场券。
1995年5月,英伟达推出了第一款产品NV1。当时还没有显卡的概念,这款产品被称作多媒体加速器,在技术上整合了2D和3D图形处理,并具备视频处理、音频波表处理、游戏端口等功能。
NV1发布的第二个月,英伟达获得了红杉资本和西瑞雅风险投资的首轮融资;因为NV1将声卡和手柄控制单元集成到了芯片中,英伟达还成功吸引了游戏主机厂商世嘉的注意,争取到了土星下一代主机里图形处理部分的订单,以及700万美元的开发定金。
原以为英伟达会在游戏市场高歌猛进,开启在图形处理器市场的崛起之路,但微软的出现,直接改写了英伟达的轨迹。
当时图形加速技术方兴未艾,业内并没有统一的标准,不少公司采用的规范是“三角形绘图”,英伟达选择的是“四边形绘图”。1996年,微软发布了Direct 3D标准,宣布图形软件将只支持“三角形绘图”。可英伟达并未在第一时间意识到外部环境的变化,依然执着于“四边形绘图”的路线。
面对产业标准已定的大形势,英伟达被迫为自己的“错误”买单——耗时两年研发的NV1很快无人问津,为世嘉研发的NV2以失败告终,英伟达走向破产边缘。而顺应了历史规律的3Dfx,凭借其首款产品Voodoo,在一年时间里占据了80%的市场,并从英伟达手中撬走了世嘉的订单。
痛定思痛的黄仁勋认识到,“想要继续生存,就必须作出改变”。
在人事方面,黄仁勋任命主机游戏厂商水晶动力的首席技术官David Kirk作为英伟达的“首席科学家”;在研发方面,英伟达转投主流市场,对标掀起3D技术革命的3Dfx;同时确定了为期六个月的内部周期目标,就算某一产品失败,也不会威胁到公司的生存,因为下一代的代替产品随时可用。
1997年4月,英伟达推出了第三代产品NV3,即后来被外界熟知的RIVA 128。尽管在图像质量上不敌3dfx的Voodoo,但100M/秒的像素填充率、对Open GL的兼容性以及价格优势,让RIVA 128赢得了OEM厂商的青睐,不到一年出货量就超过100万片,硬生生让英伟达从“死亡边缘”拉了回来。
接下来的一年多时间里,英伟达先后推出了Riva TNT、Riva TNT2等产品,通过一套加强组合拳不断扩大市场份额。曾短暂统治市场的3dfx节节败退,英伟达在1998年的营收超过1.5亿美元,如愿在纳斯达克挂牌上市。
1999年是英伟达历史上的重要时间点,除了上市的高光时刻,还在这年8月推出了第一款以GeForce命名的产品——GeForce 256,首次提出了GPU的概念,而后戴尔、Gateway、康柏、NEC、IBM等纷纷宣布预装英伟达的GPU。差点“中道崩殂”的英伟达,一跃成为媒体眼中的“硅谷新秀”。
02 日后封神的CUDA,制造了第三次危机
一个有趣的插曲是,因为微软Direct 3D标准陷入困境的英伟达,不久后就狠狠“坑”了微软一把。
英伟达GPU的畅销,加速了DirectX标准的普及,也让微软对这家初创企业大加赞赏,不仅让英伟达参与到DirectX标准的制定中,还让英伟达拿到了创办以来的最大订单——初代Xbox的显示芯片。
为了让英伟达全力为Xbox开发GPU,微软直接支付了2亿美元定金,合同金额更是达到5亿美元,后来还将Xbox的媒体传送处理器(MCP)交给了英伟达研发,双方的关系可以用“蜜月期”来形容。
2001年11月15日,Xbox率先在美国发售,定价299美元。当时,英伟达GeForce 3的起售价是329美元,Xbox搭载的X-Chip芯片相当于是GeForce 3的改良版。当时就有分析师称,微软每卖出一台Xbox,就要亏损125美元。微软想要降低Xbox的零部件成本,英伟达是无法绕开的一环。
在微软向英伟达提出降价请求时,得到的却是黄仁勋的一口回绝。而后双方的矛盾迅速爆发,并最终诉诸于仲裁。和微软“分手”的消息传出后,英伟达的市值从2002年初的110亿美元缩水到10亿美元,代价不可谓不惨烈。
在微软猛烈的炮火下,黄仁勋不得不低头认怂,在2003年2月与微软正式达成和解,但未能挽回微软的“真爱”。受伤的微软向英伟达的对手ATI抛出了橄榄枝,由后者作为下一代Xbox 360的GPU供应商。
在微软的扶持下,英伟达和ATI在接下来的多年里都处于缠斗的状态。不单单是产品上的较量,市场份额也出现了拉锯的一幕。以2004年第三季度为例,在独立显卡市场中,ATI的市场占有率在59%,英伟达只有37%。
直到2006年7月,AMD以54亿美元收购ATI,天平才开始往英伟达倾斜。为了收购ATI,AMD几乎用光了账面现金,并产生了25亿美元的债务。因为债务危机,二者的合并没能出现1+1大于2的“合力”,反倒让英伟达侥幸捡到了“天上掉下来的馅饼”。
在此之前,英伟达几乎被锁死在了GPU赛道,无力进行横向扩张。在此之后,英伟达加速了突围步伐,其中代表性的动作正是CUDA。
2007年,英伟达举办了第一届CUDA技术大会,全称是Compute Unified Device Architecture,一种并行计算平台和编程模型,能够让开发人员使用C语言、C++、Fortran等编程语言来编写GPU加速的应用程序。
没有CUDA,GPU只是一个负责在屏幕上绘制图像的“图形处理单元”;有了CUDA,GPU拥有了解决复杂计算问题的能力,可以帮助客户为不同的任务对处理器进行编程。
GPU的主要使用场景,不再局限于游戏。
后面的故事,不少人都很熟悉。2012年开始走红的深度学习,以及2022年爆火的ChatGPT,最终让CUDA封神。GPU被广泛应用于图像识别、脸部识别、语音识别等场景中,价值甚至超过了CPU。
但在2008年的语境里,英伟达每年砸到CUDA上的研发成本约5亿美元,占到了整体营收的六分之一,却几乎看不到商业价值。折射到财报上,英伟达在2008年以后的净利和毛利大幅走低,一度出现亏损的局面。
期间,黄仁勋多次苦口婆心地阐述CUDA的价值,但华尔街的分析师们并不买账,英伟达的市值长期在100亿美元上下徘徊。
03 冲击移动市场失利,深度学习“叫好不叫座”
管理着3万亿美元的英伟达,黄仁勋的每一句话都可以被夸赞成“高瞻远瞩”,每一个行为都有可能成为名场面。但管理100亿美元的英伟达,黄仁勋要想方设法提升股价,重拾分析师的信心。
所以在CUDA不被看好时,英伟达必须去追风口。
PC市场在2008年后呈现出了下滑态势,以GPU为主营业务的英伟达冷暖自知。正是在这一年,英伟达针对移动市场推出了Tegra系列芯片组,采用了ARM架构,内置基于GeForce 的图形处理器,并且有着清晰的思路:只要人们对手机游戏有需求,Tegra就能在移动市场中一席之地。
单从时间上看,英伟达的入局时间并不晚。
高通推出骁龙S1的时间是2007年,但2008年第四季度才开始投产;苹果在2010年才推出首款自研芯片A4;联发科进入智能手机市场的时间是2011年;三星的首款Exynos 芯片,也是在2011年……何况英伟达已经有十几年的芯片研发经验,和台积电的关系也相当亲密。
只是结果远不如预想中那般。
囿于移动方面的经验不足,第一款Tegra芯片发布时,英伟达选择和微软合作,搭载于一款名为Zune HD的产品上,并未像iPhone一样家喻户晓。到了Tegra 2系列推出时,已经可以兼容Android系统,并因此获得了摩托罗拉、 LG等品牌的力挺。
Tegra 3系列算是闯出了名气,被用于HTC One X、Nexus7等旗舰产品上,但问题也随之暴露出来。自研的移动GPU,提供了强大的图形计算性能,代价则是高功耗和发热,直接拖累了相关产品的口碑。
于是有了国内网友们熟悉的场景:2013年的小米3发布会上,黄仁勋作为特邀嘉宾来到现场,“熬夜”学习中文,高呼“小米威武”。当时的小米刚刚起步,却是Tegra 3为数不多的终端客户。
这一次,英伟达不再被“上帝眷顾”,赌错了技术路线的Tegra没有等到“重来”的机会,在高通和三星的夹攻下,Tegra系列芯片迅速被冷落,原本信心满满的英伟达,遗憾和万亿移动市场擦肩而过。
英伟达在移动市场显露败绩的2012年,多伦多大学的研究员Alex Krizhevsky用两张GTX 580 显卡训练神经网络AlexNet,只花了一个星期就在ImageNet 挑战赛上以显著优势夺魁。
这场意外惊喜带动了使用GPU进行深度学习模型训练的浪潮,同时也为英伟达打开了AI新世界的大门:深度学习和GPU的暴力计算“一拍即合”,开启了拼数据和堆硬件的竞速游戏。
大约是从2014年的GTC大会开始,黄仁勋正式将AI作为英伟达最关键的业务,几乎每年都会唱衰摩尔定律,高谈GPU加速计算爆发式崛起。2016年的时候,英伟达推出为AI设计的Pascal架构GPU,黄仁勋亲自向一家名为OpenAI的初创企业,送去了世界上第一台DGX-1超级计算机。
英伟达对人工智能的前景抱以厚望,可市场并不感冒。
2016年以前,英伟达的市值仍然稳定在150亿美元上下,2016财年的营收只有50.1亿美元,不及英特尔的十分之一。所谓的深度学习浪潮,可以说是典型的“雷声大、雨点小”。
在那段漫长的日子里,微软、谷歌才是科技行业的巨无霸,英特尔、高通才是半导体行业的领袖,英伟达不过是游戏这个细分市场的领跑者,一家随着游戏市场兴衰而起伏的“小芯片企业”。
04 加速向“数据中心”转型,但市场“没看明白”
英伟达的故事始于1993年的,但真正意义上的走进大众视野,却是在2018年,中间隔了长达25年的时光。
正如黄仁勋后来的形容:2018年是“近乎完美的一年,以一个动荡的方式结束”。这一年的10月份,英伟达的市值达到了上市以来的巅峰,达到2189亿美元。只是在不久后,英伟达的市值便腰斩式下跌。
现在回顾那段历史,不少人习惯性聚焦于英伟达在2017年的转向:2017年的GTC大会上,黄仁勋发布了面向AI的Tesla V100 GPU,并将其称作“世界上最昂贵的计算能力项目”,研发预算高达30亿美元。同时也标志着,数据中心业务被定义为英伟达的第二曲线,当天市值就冲到了714亿美元。
时间再一次印证了英伟达的正确性。
数据中心业务的营收在2020年夏天超过游戏业务,成为英伟达第一大收入来源。正是英伟达提供的澎湃算力,OpenAI训练出了举世瞩目的ChatGPT,拉开了生成式AI的大幕,英伟达的市值迅速迈过1万亿美元的关卡,直冲3万亿美元,一度成为全球市值最高的企业。
可回到当时的语境里,比起“数据中心”这个略显生涩的词汇,和英伟达捆绑最深的,其实是“挖矿”。
挖比特币需要“矿机”,“矿机”运行哈希算法需要算力,而算力的来源正是英伟达的GPU。“挖矿”在2016年逐渐走红,并在2018年初到达高潮,期间GPU的需求不断增长。英伟达GTX 1080的零售价为550美元,在市场上被炒到了1000美元以上,以至于英伟达不得不出台“限购政策”,将显卡优先销售给游戏玩家,而非矿工。
然而,比特币的价格从2017年底逐步下滑,加上新币开采成本的不断提升,“矿潮”加速衰退。矿商不断抛售显卡,市场的秩序被打乱,为“挖矿”准备的显卡成堆地摆放在仓库中,英伟达的渠道库存也出现过剩。市场最终被负面情绪裹挟,英伟达的股价随即下跌,直到2020年初才回到高位。
不同于黄仁勋对计算价值的信仰,市场往往是短视的,习惯通过表象来看问题,而非现象背后的底层逻辑。
数字货币、元宇宙、生成式AI等风口,一次次刺激了英伟达的增长,给了外界十足的信心。而当泡沫破灭或者风口走弱的时候,英伟达也难免被裹挟其中。没有人会深究为了支撑起新的风口,英伟达苦熬了多少年的寒窗,坐了多少年的冷板凳,以及在错误的路线上进行了多少次尝试。
这也是所有“卖铲人”的宿命,淘金热不存在了,铲子还卖给谁呢?
即使英伟达已经是一家市值超过3万亿美元的巨无霸,仍然有不少分析师在质疑其价值。比如“木头姐”发出的警告:英伟达会不会是下一个思科呢?毕竟从市值上涨的曲线来看,今天的英伟达和2000年前后的思科不可谓不相似,在互联网泡沫达到顶峰时,思科的股价上涨了71倍,又在接下来的几年内暴跌了90%,之后再也没有回到高点。
恐怕黄仁勋也无法回答上述的问题。亚马逊、微软等云服务商在过去几个季度里购买了英伟达约一半的GPU,英伟达的命运仍然掌握在别人手中。和2018年的情形相比,英伟达并没有太大的变化,不过是外界对英伟达的期待发生了变化而已。
怎么丈量英伟达的价值呢?我们在这里给大家提供一个新视角,即黄仁勋在2018年提出的黄氏定律:GPU的性能每两年将增加一倍以上。英伟达过去5年的股价和GPU性能的增长出奇的一致,当“黄氏定律”不再奏效的时候,也许就是英伟达市值触顶的时间。
05 结语
和世界上的大多数公司相比,英伟达是个十足的幸运儿。
简单做个换算的话:约90%以上的企业倒在了初创阶段,原因可能仅仅是选错了巨头押注的技术路线;熬过初创阶段的企业,又有90%可能陷入长期不盈利的陷阱,几乎没有资本和股东允许在不盈利的业务上长期投入;第三阶段往往是很多中大型企业的现状,比如英特尔,屡屡错过新的机会窗口,被迫在老赛道中苦苦挣扎。
核心业务价值尚未完全验证,却凭借一次次外部红利推高市值的企业,目前只有英伟达一家。
同时又不得不承认,英伟达是一家很纯粹的公司,每一次“转危为安”的背后,都是靠技术和产品才打了胜仗。黄仁勋还是一个身段柔软的管理者,坦然进行自我反思,愿意向微软低头,讨好小米换取宣传机会,哪怕是刚成立的OpenAI,也给予了足够的尊重……将以柔克刚之道玩到了极致。
正如黄仁勋在在台大毕业典礼上的演讲:坦然面对失败,勇敢寻求帮助,在承受痛苦时坚持实现梦想,同时专注于自己的真正优势,敢于战略性地撤退、放弃。并不失风度地为自己鼓气:跑吧!无论是为了食物而奔跑,或不被他人当做食物而奔跑。
一个知己所长、目标明确、谦虚谨慎、不骄不躁的英伟达,即使被“压制”了25年,也能够一次次从低谷爬上来,在正确的时机大放异彩。
相关文章:

英伟达被“压制”的25年
十九世纪中叶的美国西部,掀起了一场轰轰烈烈的淘金热,但最终赚到钱的,并不是拿命去赌的淘金者。一个名叫萨姆布瑞南的商人,通过向淘金者出售铲子,成了加州历史上第一位百万富翁。 每一次风口出现时,总有企…...

windows安装Gitblit还是Bonobo Git Server
Gitblit 和 Bonobo Git Server 都是用于托管Git仓库的工具,但它们是基于不同平台的不同软件。 Gitblit 是一个纯 Java 写的服务器,支持托管 Git,Mercurial 和 SVN 仓库。它需要 Java 运行环境,适合在 Windows、Linux 和 Mac 平台…...

仪器校准的概念与定义,计量校准是什么?
仪器校准的定义,在之前所颁布的《国际计量学词汇 基础和通用概念及相关术语》文件中,已经有了明确说明,而该文件做了修改以后,在后续新的定义中,仪器校准具体被分为两部分,第一步是将被计量仪器和计量校准的…...

Vue3+Pinia
1.单纯调接口(安装pinia及引入如下第一张图) 1.npm install pinia2.在main.js里引入即可import { createPinia } from piniaapp.use(createPinia()) 1.stores建立你文件的ts、内容如下:1-1 import { defineStore } from pinia1-2 import { findPageJobSet } from …...

label studio数据标注平台的自动化标注使用
(作者:陈玓玏) 开源项目,欢迎star哦,https://github.com/data-infra/cube-studio 做图文音项目过程中,我们通常会需要进行数据标注。label studio是一个比较好上手的标注平台,可以直接搜索…...

高并发场景下的热点key问题探析与应对策略
目录 一、问题描述 二、发现机制 三、解决策略分析 (一)解决策略一:多级缓存策略 客户端本地缓存 代理节点本地缓存 (二)解决策略二:多副本策略 (三)解决策略三:热点…...

学习一下C++中的枚举的定义
目录 普通枚举 强类型枚举 普通枚举 枚举类型在C中是通过关键字enum来定义的。下面是一个简单的例子: enum Color { RED, GREEN, BLUE }; 在这个例子中,我们定义了一个名为Color的枚举类型,它包含了三个枚举值:RED、GRE…...

开发一套java语言的智能导诊需要什么技术?java+ springboot+ mysql+ IDEA互联网智能3D导诊系统源码
开发一套java语言的智能导诊需要什么技术?java springboot mysql IDEA互联网智能3D导诊系统源码 医院导诊系统是一种基于互联网和3D人体的智能化服务系统,旨在为患者提供精准、便捷的医院就诊咨询服务。该系统整合了医院的各种医疗服务资;智慧…...

C++| STL之string
前言:最近在做LeetCode算法题,C字符串通常都是string作为输入,所以补充一下STL里面string。在介绍的具体使用的时候,会补充char字符串相关的进行对比。 string 创建大小和容量遍历字符串比较插入字符拼接字符串分配内存查找截取分…...

[数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式4599张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4599 标注数量(xml文件个数):4599 标注数量(txt文件个数):4599 标注…...

JAVA实现麦克风说话同声传译
一、能力与场景说明 同声传译,又称同步口译或同声翻译,是一种专业的口译形式,指的是在讲话者发言时,口译员几乎同时将讲话内容翻译成目标语言。这种翻译方式通常用于国际会议、高级别政治或商业会谈、研讨会和其他需要即时多语言…...

LabVIEW与PLC通讯方式及比较
LabVIEW与PLC之间的通讯方式多样,包括使用MODBUS协议、OPC(OLE for Process Control)、Ethernet/IP以及串口通讯等。这些通讯方式各有特点,选择合适的通讯方式可以提高系统的效率和稳定性。以下将详细介绍每种通讯方式的特点、优点…...

2024/6/30 英语每日一段
Years of economic and political turbulence have brought stagnation.“In a world where there is more risk and uncertainty, people become reluctant to voluntarily move jobs and find better jobs,” says Manning. At the same time, businesses have cut back on i…...

Postman接口测试工具的原理及应用详解(五)
本系列文章简介: 在当今软件开发的世界中,接口测试作为保证软件质量的重要一环,其重要性不言而喻。随着前后端分离开发模式的普及,接口测试已成为连接前后端开发的桥梁,确保前后端之间的数据交互准确无误。在这样的背景…...

208.贪心算法:买卖股票的最佳时机||(力扣)
代码解决 class Solution { public:int maxProfit(vector<int>& prices) {int result 0; // 初始化结果为0,表示初始利润为0// 从第二天开始遍历价格数组for (int i 1; i < prices.size(); i) {// 如果当天价格比前一天价格高,则将差价加…...

【论文阅读】伸缩密度比估计:Telescoping Density-Ratio Estimation
文章目录 一、文章概览(一)问题提出(二)文章工作 二、判别比估计和密度鸿沟问题三、伸缩密度比估计(一)核心思想(二)路标创建(三)桥梁构建(四&…...

MongoDB数据库 MQL (MongoDB Query Language)语句大全
基本命令 连接到 MongoDB mongo显示所有数据库 show dbs选择(或创建)数据库 db集合操作 显示当前数据库中的所有集合 show collections创建集合 db.createCollection("myCollection")删除集合 db.myCollection.drop()文档操作 插入文…...

Java代码基础算法练习-计算平均身高-2024.07.02
任务描述: n个同学站成一排,求它们的平均身高 解决思路: 输入的学生人数为 for 循环次数,循环中每输入一个值就添加在总数中,循环结束总数除以对应的学生人数得到平均身高 代码示例: package a4_2024_07;…...

BIOS设置与系统分区
📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 目录 一BIOS 1破解密码的前提 2B…...

linux的安装程序 与 文件 相关的命令
软件安装卸载命令 软件包介绍软件包命名格式dpkg命令apt-get命令apt-get命令 压缩和解压命令 压缩文件后缀 压缩命令打包和解包命令 tar命令 文件分割命令 split命令 文件操作相关命令 cat命令head命令tail命令more命令less命令管道命令wc 命令grep 命令find 命令cut 命令sort …...

SAP_ABAP相关日语单词
基本概念 1. プログラミング言語 (プログラミングげんご, Puroguramingu gengo) - 编程语言 2. 開発 (かいはつ, Kaihatsu) - 开发 3. システム (システム, Shisutemu) - 系统 4. モジュール (モジュール, Mojūru) - 模块 5. トランザクションコード (トランザクションコード,…...

Python中的除法操作详解
在Python编程中,除法是一个基础但极其重要的算术操作。Python提供了多种除法运算方式,以适应不同的计算需求。以下是对Python中除法操作的全面介绍,包括示例代码。 1. 普通除法 / 普通除法使用/运算符,它返回一个浮点数结果&…...

第1章 人工智能的基础概念与应用导论
亲爱的读者朋友们,你们好!欢迎来到这个充满神奇与奥秘的人工智能世界。我知道,对于很多人来说,人工智能(AI)可能是个既神秘又高大上的词汇,仿佛遥不可及,只存在于科幻电影或者顶级科…...

jenkins api部署时,一直提示pending-Finished waiting
问题: 调用jenkins api部署时,一直提示pending-Finished waiting 解决方案: 这个问题困扰了很久,一直没有思路,后面看到调用jenkinsAPI本身会出现一段提示,pending in the quiet period,通过搜…...

AI在创造还是毁掉音乐之论文
AI在创造还是毁掉音乐? 简介:最近一个月,轮番上线的音乐大模型,一举将素人生产音乐的门槛降到了最低,并掀起了音乐圈会不会被AI彻底颠覆的讨论。短暂的兴奋后,AI产品的版权归属于谁,创意产业要…...

C++ STL容器:序列式容器-数组string,vector,array,bitset
摘要: CC STL(Standard Template Library,标准模板库)在C编程中的重要性不容忽视,STL提供了一系列容器、迭代器、算法和函数对象,这些组件极大地提高了C程序的开发效率和代码质量。 STL 容器 分为 2 大类 …...

ElementUI样式优化:el-input修改样式、el-table 修改表头样式、斑马格样式、修改滚动条样式、
效果图: 1、改变日期时间组件的字体颜色背景 .form-class ::v-deep .el-date-editor { border: 1px solid #326AFF; background: #04308D !important; } .form-class ::v-deep .el-date-editor.el-input__wrapper { box-shadow: 0 0 0 0px #326AFF inset; } // 输入…...

大数据面试题之Spark(6)
Spark输出文件的个数,如何合并小文件? Spark的driver是怎么驱动作业流程的? Spark SQL的劣势? 介绍下Spark Streaming和Structed Streaming Spark为什么比Hadoop速度快? DAG划分Spark源码实现? Spark Streaming的双流join的过程,怎么做的? …...

SpringSecurity中文文档(Servlet Anonymous Authentication)
Anonymous Authentication Overview 通常认为采用“默认拒绝”立场是良好的安全实践,您明确指定允许的内容并拒绝其他所有内容。定义未经身份验证的用户可以访问的内容是类似的情况,特别是对于 Web 应用程序。许多网站要求用户必须经过身份验证才能访问…...

【Spring Boot 事务管理】
Spring Boot 事务管理 一、Spring Boot中的事务管理1.声明式事务管理Transactional注解基本使用配置选项 2.编程式事务管理TransactionTemplatePlatformTransactionManager 二、Transactional注解深入1.基本使用基本属性 2.传播行为3.隔离级别4.事务超时设置5.回滚规则 三、事务…...