技术文章

4982亿背后的前端技术—2020天猫双11前端体系大揭秘

久未见 提交于 2021-02-17 13:54:59
简介: 整体介绍一下淘系前端在今年双11的思考和沉淀。 今年双11的整体节奏从之前的“光棍节”变为“双节棍”,具体业务上也有很多变化和调整,应了阿里的土话“唯一不变的是变化”。面对这些变化,是挑战也是机会,我们要做的就是,“既要”高效支撑保障业务先赢,“又要”确保体验和稳定性带给用户极致体验,“还要”追求创新让前端持续演进。为了实现“既要、又要、还要”,包括技术方案、流程机制、人员组织等各方面都进行了大量的设计和保障。最终第一次双峰的双11圆满结束,淘系前端也实现了自己的目标,包括应用大量优化手段和创新方案带来业务转化提升;将FaaS、PHA、ESR等技术应用在更多场景,分别向服务端、客户端、CDN节点进一步拓展了前端的能力和边界;应用视觉还原、一体化研发等提升研发效率,大幅缓解资源瓶颈等等。下面会整体介绍一下淘系前端在今年双11的思考和沉淀,希望对大家有所助益。后续也会有各个专项的系列文章,希望大家持续关注。 变化 & 挑战 今年的双11,首先感受到的就是源源不断的变化。 单峰变双峰:双11从之前的一个波段变成今年的两个波段,大促的三个阶段预售、预热、正式也都对应的翻倍。首先带来的是研发工作量的大幅增加,在时间排期不变、工作量增加、人员不变的情况高效的完成需求研发是第一重挑战;其次面对6个阶段的状态变化,如何保持准确切换、稳定运行、体验流畅是在双峰期间要重点保障的内容

mybatis 枚举typeHandler

こ雲淡風輕ζ 提交于 2021-02-17 13:54:40
枚举typeHandler 在绝大多数情况下,typeHandler因为枚举而使用,MyBatis已经定义了两个类作为枚举类型的支持,这两个类分别是:   •EnumOrdinalTypeHandler。   •EnumTypeHandler。 因为它们的作用不大,所以在大部分情况下,我们都不用它们,不过我们还是要稍微了解一下它们的用法。 EnumOrdinalTypeHandler EnumOrdinalTypeHandler是按MyBatis根据枚举数组下标索引的方式进行匹配的,也是枚举类型的默认转换类,它要求数据库返回一个整数作为其下标,它会根据下标找到对应的枚举类型 EnumTypeHandler EnumTypeHandler会把使用的名称转化为对应的枚举,比如它会根据数据库返回的字符串“MALE”,进行Enum.val-ueOf(SexEnum.class,"MALE");转换 自定义枚举typeHandler 代码清单4-23:SexEnumTypeHandler package com.xc.util.typehandler; import com.xc.enumerate.SexEnum; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedJdbcTypes;

Hive几种导出数据方式

被刻印的时光 ゝ 提交于 2021-02-17 13:54:17
1.拷贝文件 如果数据文件恰好是用户需要的格式,那么只需要拷贝文件或文件夹就可以。 hadoop fs –cp source_path target_path 2.导出到本地文件系统 --不能使用insert into local directory来导出数据,会报错 --只能使用insert overwrite local directory来导出数据 --hive0.11版本之前,只能使用默认分隔符^A(ascii码是\00001) insert overwrite local directory '/home/sopdm/wrk' select id,name,tel,age from sopdm.wyp; --hive0.11版本之后,可以指定分隔符 insert overwrite local directory '/home/sopdm/wrk' row format delimited fields terminated by ',' select id,name,tel,age from sopdm.wyp; --导出数据到多个输出文件夹 from employees se insert overwrite local directory ‘/tmp/or_employees’ select * se where se.cty=’US’ and se.st=’OR’

WPF 内存泄漏优化经历

半城伤御伤魂 提交于 2021-02-17 13:53:52
最近公司有个CS客户端程序,有个登录界面,有个程序的主界面,程序支持注销功能,但是在注销后,客户端的内存一直以40M-50M的速度递增,因此猜测,应该是WPF程序出现了内存泄漏。下面主要记录优化内存泄漏的整个历程: 1.使用VS2013的性能和诊断找到问题点 在VS2013菜单分析-》性能和诊断,打开的界面如下,并勾选内存使用率选项。 单击开始,启动程序,界面如下所示: 登录后,等待程序资源全部获取后,单击VS2013中拍摄快照 注销后,再次单击拍摄快照按钮 重复上述两个步骤若干次后,关闭软件,内存分析工具会自动进行分析,分析后的结果如下图所示: 选择快照报告数据查看依据,托管堆和堆,我写的程序中是在堆中发现快照2比快照会有40多M内存的上升,上面的图片是优化后的。点击上升的内存,可以进入快照1和快照2内存的对比的表格: 从这个前后内存的对比中,找到是由于主界面的在注销时关闭,再次登录后,主界面重新创建显示,里面ocx的内存发生泄漏。 来源: oschina 链接: https://my.oschina.net/u/4349840/blog/3278083

八大常用基础电路保护器件作用

爷,独闯天下 提交于 2021-02-17 13:52:53
电路保护元器件应用领域广泛,只要有电的地方就有安装电路保护元器件的必要,如各类家用电器、家庭视听及数码产品、个人护理等消费类电子产品、计算机及其周边、手机及其周边、照明、医疗电子、汽车电子、电力、工业设备等,涵盖人们生产生活的方方面面。 电路保护主要有两种形式:过压保护和过流保护。选择适当的电路保护器件是实现高效、可靠电路保护设计的关键,涉及到电路保护器件的选型,我们就必须要知道各电路保护器件的作用。在选择电路保护器件的时候我们要知道保护电路不应干扰受保护电路的正常行为,此外,其还必须防止任何电压瞬态造成整个系统的重复性或非重复性的不稳定行为。 防雷过压器件分为钳位型过压器件和开关型过压器件,开关型过压器件就是我们熟知的防雷器件:陶瓷气体放电管、半导体放电管和玻璃放电管;钳位型过压器件有瞬态抑制二极管、压敏电阻、贴片压敏电阻和ESD放电二极管;过流器件则以PTC元件自恢复保险丝为主,以下是其具体作用: 1.放电管的作用:放电管常用于多级保护电路中的第一级或前两级,起泄放雷电暂态过电流和限制过电压作用,放电管是通过将电压限制在较低的水平,从而起到保护作用。硕凯电子的放电管又分为气体放电管和固体放电管,气体放电管主要以陶瓷气体放电管和玻璃气体放电管为主,具体应用中放电管类别和型号的选择则需要工程师根据产品应用端口的防护等级以及相关选型参数来确定。 2.瞬态抑制二极管的作用

佳能MG2580S清零

白昼怎懂夜的黑 提交于 2021-02-17 13:52:09
注意佳能系列一体机的清零方法差不多都是一样的。 1、先按住【停止/重置】键,然后按【电源】键开机(别松开) 2、按【电源】键 不放手的同时,松开【停止/重置】键(此时电源键还是按住不放的状态) 3、然后在按5下【停止/重置】键,按最后一下的時候按住不放,此时【电源】键与【停止/重置】键都处于按住不放的状态) 4、同时松开 【电源】键和【停止/重置】键键,等打印机启动运行完毕后,打印机会显示为”0″,即进入打印机维修模式。 5、电脑提示找到新硬件并提示安装驱动,不用管它,如果没有找到新硬件,建议重启电脑或更换电脑试试。(如果电脑找不到新硬件,清零软件是无法使用的) 6、运行佳能mp280清零软件,单击“清除墨水计数器 ”中的设置和“墨水收集计数器”中的设置,然后等待提升完成。 7、清零完成后重启打印机即可。 佳能的打开打印首选项→维护→查看打印机状态 2、佳能打印机清零提示: “废墨收集器已将满或提示5B00或5B01 或P07 P08” 是需要清零了 佳能mg系列无法清零 要么换主板要么重写rom 这个机器不支持单墨盒 你必须安装两个墨盒(黑色和彩色),你给墨盒拿下来用橡皮用力搽搽 芯片 接触点的地方,要做到每个接触点都要搽到(也就是墨盒前面很多黄色星星点点哪里),然后再安装到 打印机 上试试。希望能帮到你,在一个这种原装墨盒使用过的空墨盒可以改装成 易加墨墨盒

18207118谌星java第一阶段总结

半世苍凉 提交于 2021-02-17 13:51:33
作业要求: 1.作业过程总结 1) 总结三次作业之间的知识迭代关系 2) 如何通过作业逐步从面向过程过度到面向对象 3) 作业过程中遇到的问题及解决方案 4) 每次作业花费的时间比例 5) 对变成过程的严谨性的认识和教训 1. 答: 1) 这三次作业应该是层层递进的关系,难度由简到难。第一次作业中的问题比较简单,只涉及到了一些 for循环和if语句,与C语言内容无差别。第二次作业就在第一题的基础上增加了一些难度,比如有一些浮点数的输入输出,还加入了函数的应用。第三次作业中则引入了了‘类’,这与前两次面向过程的思路发生了较大改变,第三次主要都是面向对象的思路方法,而且第三次作业就是用面向对象的思维解决第一次和第二次的作业。 2) 第一次和第二次几乎没用有关面向对象的内容,而老师在课堂上已经讲了有关面向对象的内容,于是尝试自己创建类的方法解决第一次和第二次的作业。而且第三次就是用面向对象的思维解决第一次和第二次的作业,然后这样慢慢过渡。 3) 第一次作业比较简单,只是重复输入繁琐的数据。 第二次作业就出现一些问题,比如不知道用 ‘1e-6’代替零,还有不知道取n位小数,后来通过百度解决了这些问题。 ;还有一个问题就是取小数点后四位小数这个问题,这个涉及到 ‘format’,这个也是通过百度解决的。 第三次作业就麻烦较多,比如再求下 n天的日期时,没有将重新得到的值放到类里面里

物联网DDOS攻击,新基建下的物联网安全问题

空扰寡人 提交于 2021-02-17 13:51:10
终于等到你,欢迎关注安全分析与研究,安全一路同行 2016年10月21日,美国东海岸地区遭受大面积网络瘫痪,其原因为美国域名解析服务提供商Dyn公司当天受到强力的DDoS攻击所致,涉及到的网站包括twitter、paypal、github等,经过调查发现这是一起黑客通过控制多台物联网设备发起的DDOS网络攻击行为,通过分析确认攻击流量来源于感染了Mirai僵尸网络程序的设备,其中主要感染的设备有CCTV摄像头、DVRs以及路由器,其实早在2016年9月30日黑客Anna-senpai就公开发布了Mirai僵尸网络程序源码,其公布源码的目的主要是为了掩人耳目,隐藏自己的踪迹,同时也是为了嘲笑MalwareMustDie的安全分析人员,因为在2016年8月31日,MalwareMustDie的安全分析人员在其博客上公布了Mirai僵尸网络程序的详细逆向分析报告,正是这个举动惹怒了黑客,于是就公布了Mirai的源代码,好让更多的黑客组织利用它来改装成更多的基于Mirai的物联网僵尸网络,事实上也正如他们所料,在随后的三年多时间里,各种基于Mirai的变种样本横行,通过感染大量的物联网设备发起DDOS网络攻击行为,在公布源码之后三名黑客被抓,在美国阿拉斯加法庭上,三名美国年轻人向法庭供述了Mirai僵尸网络工具的开发细节,同时他们通过建立僵尸网络获取100枚比特币

什么是测试驱动开发及其重要性

你。 提交于 2021-02-17 13:50:45
顾翔老师的《软件测试技术实战设计、工具及管理》网上购买地址: https://item.jd.com/34295655089.html 《基于Django的电子商务网站》网上购买地址: https://item.jd.com/12082665.html 店铺二维码: 来源: https://www.maiyewang.com/ 测试是任何软件开发项目中最重要的步骤之一。如果跳过此过程,则结果可能是灾难性的-对项目和公司而言。但是什么时候应该对软件进行测试?在项目完成后进行测试似乎是合乎逻辑的。但是,经典测试过程的功能是有限的。如果您先编写代码,然后再测试实现,则可能会遇到一些问题,即过度研发,设计偏离,可测试性问题。幸运的是,有一种方法可以应对这些挑战,它被称为–测试驱动开发。 什么是TDD或测试驱动开发? TDD是测试驱动开发的缩写,它指的是设计范例,其中软件组件测试用于指导整个开发过程。要了解TDD的工作原理,首先,最好定义其重要概念之一-单元测试。 什么是软件单元测试?   单元测试 是一种将代码分解成小的独立单元的方法。 单元测试的主要目的是独立评估每个组件的行为,以验证它们是否正常运行。 单元测试通常由开发人员执行,但也可以由质量经理执行。 一些软件开发人员认为单元测试是浪费时间,但是实践表明情况恰恰相反。   在系统测试, 集成测试 和Beta测试阶段,

Hive SQL查询效率提升之Analyze方案的实施

风格不统一 提交于 2021-02-17 13:50:16
0.简介 Analyze,分析表(也称为计算统计信息)是一种内置的Hive操作,可以执行该操作来收集表上的元数据信息。这可以极大的改善表上的查询时间,因为它收集构成表中数据的行计数,文件计数和文件大小(字节),并在执行之前将其提供给查询计划程序。 <!-- more --> 1.如何分析表? 基础分析语句 ANALYZE TABLE my_database_name.my_table_name COMPUTE STATISTICS; 这是一个基础分析语句,不限制是否存在表分区,如果你是分区表更应该定期执行。 分析特定分区 ANALYZE TABLE my_database_name.my_table_name PARTITION (YEAR=2019, MONTH=5, DAY=12) COMPUTE STATISTICS; 这是一个细粒度的分析语句。它收集指定的分区上的元数据,并将该信息存储在Hive Metastore中已进行查询优化。该信息包括每列,不同值的数量,NULL值的数量,列的平均大小,平均值或列中所有值的总和(如果类型为数字)和值的百分数。 分析列 ANALYZE TABLE my_database_name.my_table_name COMPUTE STATISTICS FOR column1, column2, column3; 它收集指定列上的元数据