快手 订阅
快手是北京快手科技有限公司旗下的产品。快手 [1-2]  的前身,叫“GIF快手”,诞生于2011年3月,最初是一款用来制作、分享GIF图片的手机应用。2012年11月,快手从纯粹的工具应用转型为短视频社区,用于用户记录和分享生产、生活的平台。后来随着智能手机的普及和移动流量成本的下降,快手在2015年以后迎来市场。 [3]  2020年7月14日,快手社区官方账号“快手管理员”发布公告,宣告即日起开展“低俗直播内容”专项治理,公告公布封禁用户名单,其中不乏五六百万粉丝的高粉账号。 [4] 展开全文
快手是北京快手科技有限公司旗下的产品。快手 [1-2]  的前身,叫“GIF快手”,诞生于2011年3月,最初是一款用来制作、分享GIF图片的手机应用。2012年11月,快手从纯粹的工具应用转型为短视频社区,用于用户记录和分享生产、生活的平台。后来随着智能手机的普及和移动流量成本的下降,快手在2015年以后迎来市场。 [3]  2020年7月14日,快手社区官方账号“快手管理员”发布公告,宣告即日起开展“低俗直播内容”专项治理,公告公布封禁用户名单,其中不乏五六百万粉丝的高粉账号。 [4]
信息
安卓版软件大小
63.4MB [2]
软件语言
简体中文
苹果版更新时间
2020年7月16日 [5]
开发商
北京快手科技有限公司
软件授权
北京快手科技有限公司
软件名称
快手
软件版本
iOS(7.6.11) [5]
安卓版更新时间
2020年7月8日 [2]
软件平台
Android iOS
苹果版软件大小
447.2MB [5]
创始人
宿华 [6]
快手发展历程
2013年7月,“GIF快手”从工具转型为短视频社区。由于产品转型,App名称中也去掉了“GIF”,改名为“快手”。 [7]  2015年6月到次年2月,快手用户从1亿涨到3亿。 [8]  2017年1月,MAU突破1.5亿,DAU突破5000万。2017年4月29日,快手注册用户超过5亿 [9]  ,快手日活跃用户6500万、日均上传短视频数百万条。 [10]  2017年11月,快手APP的日活跃用户数已经超过1亿,进入“日活亿级俱乐部”,总注册用户数据已经超过7亿,每天产生超过1000万条新视频内容。 [11-12]  2018年4月13日,快手App首页左上方设置,左侧栏增加了一个有带有儿童图标的“家长控制模式” 。 [13]  2018年6月5日,快手已全资收购Acfun。 [14]  未来,A站将保持独立品牌、维持独立运营、保持原有团队、独立发展。而快手也会在资金、资源、技术等给予A站大力支持。 [15]  2018年6月5日,中文在线与北京快手科技有限公司签署 《转让协议》,拟将公司持有的全部A站权益出售给快手,快手愿意向公司购买该等权益 [16]  2018年9月14日,快手宣布以5亿元流量计划,在未来三年投入价值5亿元的流量资源,助力500多个国家级贫困县优质特产推广和销售,帮助当地农户脱贫。9月21日,快手举办首期幸福乡村说,借由农村短视频网红的特产销售经历,宣传“土味营销学。 [17]  2019年5月29日,快手日活跃用户(DAU)已超过2亿。 [18-19]  2019年10月1日,央视新闻联合快手进行“1+6”国庆阅兵多链路直播。快手官方数据显示,自10月1日早7点正式启用多链路直播间技术,至12点50分阅兵仪式直播结束,央视新闻联合快手“1+6”国庆阅兵多链路直播间总观看人次突破5.13亿,最高同时在线人数突破600万 [20]  2019年11月,快手短视频携手春晚正式签约“品牌强国工程”强国品牌服务项目。快手成为中央广播电视总台2020年《春节联欢晚会》独家互动合作伙伴,开展春晚红包互动。 [21]  2019年11月23日,快手联合QQ音乐、酷狗音乐、酷我音乐和全民K歌,共同发布“音乐燎原计划”,五大平台将整合亿万资源,帮助更多音乐人出圈。同时,发布会现场为获得“快手好声音”新星榜、人气榜和歌王榜前三名的快手音乐人颁发了荣誉奖杯。 [22]  2019年12月25日,中央广播电视总台与快手在北京举办联合发布会,正式宣布快手成为2020年春节联欢晚会独家互动合作伙伴。 [23-24]  2020年5月26日,快手与京东商城就电商直播业务达成战略合作,通过快手直播购买京东自营商品将不需要跳转。 [25]  2020年6月6日上午,快手宣布智能云大数据中心项落地内蒙古乌兰察布市,投资达百亿元,预计2021年投入使用。 [26] 
收起全文
精华内容
下载资源
问答
  • 快手116战报来了

    2021-11-12 15:09:28
    今年116期间,在快手平均每一分钟就有14000+订单产生,官方累计为老铁们补贴了超过12亿元的福利。 本文将为您解读在这场消费者购买需求旺盛,商家优惠补贴给力的购物狂欢中,有哪些快手主播展现了极致信任感的带货...

    今年116期间,在快手平均每一分钟就有14000+订单产生,官方累计为老铁们补贴了超过12亿元的福利。

    本文将为您解读在这场消费者购买需求旺盛,商家优惠补贴给力的购物狂欢中,有哪些快手主播展现了极致信任感的带货实力;有哪些爆款商品预示着新的商业增长点;又有哪些品牌脱颖而出成为行业新标杆?

    数据说明:以下数据来自于快手全场景数据分析平台【飞瓜数据快手版】(ks.feigua.cn)的客观监测,部分数据或受限于监测机制为预估数据,与官方口径不一致,结论仅供参考。数据采集时间(2021年10月20日-11月11日)。

    1、品牌商品独揽半壁江山,美妆护肤品类称霸116

    10月20日、10月31日、11月7日和11月11日是快手116期间的四个销售波峰,分别对应四个购物活动节点。快手116的销售额在双11这一天达到峰值。

    在这里插入图片描述

    △飞瓜快数-快手116期间品牌商品销售额趋势图

    随着快手电商的不断发展,消费者对商品品质的要求也持续提高,品牌商品已经成为快手电商的主流。

    快手116期间,品牌商品的销售额已经占据了大盘销售额的半壁江山。未来快手电商的重心将会进一步集中在品牌商品,大力发展品牌是每一个快手商家都要提上议程的重要战略。

    从快手116期间销售额前十的商品分类来看,美妆护肤品类凭借出色的表现,取代了长期霸榜的服饰鞋靴品类,成为快手116期间销售额最高的品类。

    在这里插入图片描述

    △飞瓜快数-快手116期间销售额前十商品分类

    美妆护肤是快手原生品牌做得很成功的的品类。像黛莱皙、梦泉和春之唤等品牌,通过树立品牌创始人接地气的形象,不断拉近品牌和用户的距离,用主播的信任感培养用户对品牌的信任感。美妆护肤品类通过长期的品牌耕耘,终于在今年116拿下热卖品类冠军。

    在这里插入图片描述

    飞瓜快数-快手116期间前十商品分类数据

    美妆护肤、服饰鞋靴和美食饮品依然是快手电商目前最为成熟的品类,三个类别的直播带货场次和商品数都大幅领先其他品类。

    家居生活品类因为供应链成熟和市场需求旺盛,也常常出现在带货直播间中,但由于商品客单价和品牌化程度低等因素,整体销售额难以和前三热卖品类相比。

    2、蛋蛋勇夺卖货王、腰部主播势头强劲

    随着直播带货越演越烈,快手电商生态不断更新迭代,越来越多的主播借着快手自带的电商优势迅速崛起。

    今年116依旧是以辛选团队为主力,强势横扫带货达人榜前五的位置。而一直以快手带货一哥著称的辛巴,在今年的116格外低调。相反,他的得意弟子蛋蛋凭借自身的努力和辛选的加持,最终成功夺得新一届“卖货王”称号!
    在这里插入图片描述

    △飞瓜快数-「石家庄蕊姐」带货趋势

    垂直类账号芈姐、石家庄蕊姐、徐小米等服饰达人116期间表现也十分可观。值得一提的是,石家庄蕊姐10月6号连续开了5场直播预热,7号开启了持续12小时的直播,最终以日常带货的3倍成绩递交完美答卷。

    与去年的116相比,今年快手的“去中心化”效果明显,头部效应逐步弱化,腰部主播开始乘胜追击。

    靓女名店冰冰粉丝仅95万,凭借长期累积的信任感,在116期间场均成交额比日常增长了近两倍之多,涨粉超10万。同时也是116带货达人榜TOP50中唯一粉丝量不到百万的带货主播。
    在这里插入图片描述

    △飞瓜快数-「靓女名店 冰冰」带货趋势

    116期间靓女名店冰冰共开了26场带货直播,在11月1日之后更是坚持每日开播,相较于之前的每周三场的频率,付出的精力和时间都翻了个倍。
    在这里插入图片描述
    △飞瓜快数-「靓女名店 冰冰」直播预热视频

    11月1日的直播GMV环比增长了240%,登上单日带货达人榜第6名。在当天直播前也连发了20条直播预热内容因为引流。

    从粉丝画像来看,她的粉丝基本以80、70后的中年女性群体为主,这部分群体的价格接受弹性大。
    在这里插入图片描述
    △飞瓜快数-「靓女名店 冰冰」粉丝画像

    值得学习的是,虽然她的粉丝女性群体占比95%以上,但这部分群体在给自己消费的同时,也会为自己的老公和家人消费。

    冰冰正是看中了这一点,116期间在卖女装的同时还引入了多款男装,“兜标羽绒服”、“袖标羽绒服”和“加绒帽卫衣+裤子套装”这三款男装累计销售额超300万,成功入围「靓女名店 冰冰」的热卖商品TOP5。
    在这里插入图片描述

    △飞瓜快数-「靓女名店 冰冰」带货商品

    在如今这个社交消费的时代,高频的互动是取得粉丝信任的第一步,稳定开播是维持粉丝粘度的关键,而深挖粉丝诉求更是撬开变现的金钥匙,这也是「靓女名店 冰冰」能够一次次刷新带货记录的重要原因。

    3、黄金、手机是带货硬通货、健康消费成新流量密码

    快手116热卖商品榜单中,美妆护肤品类成为最大赢家。WHOO的天气丹套装凭借头部主播的带货,成为快手116热卖商品冠军。

    黄金商品和手机作为历次购物节的榜单常客,这次也不例外。最让我们惊喜的是,健康消费类的商品凭借出色的销售表现,进入了116热卖商品榜。
    在这里插入图片描述
    作为健康消费的代表体检套餐,单日带货破亿?

    这是事实,11月2日,初瑞雪的生日带货直播中爱康国宾的749元的体检套餐狂销13万份,创造了破亿的销售额。
    在这里插入图片描述
    △飞瓜快数-「初瑞雪」体检套餐销售数据

    无独有偶,搜索商品“体检套餐”,会发现辛选旗下的主播最近都带货了爱康国宾的体检套餐产品,而且销售成绩都非常不错。时大漂亮和蛋蛋的单场带货成绩分别突破了3000万和2000万。
    在这里插入图片描述

    △飞瓜快数-体检套餐销售数据

    价格并不便宜的体检套餐为什么会走红快手呢?

    CBNData《2020新健康消费趋势报告》数据显示,中国国民的生活水平逐渐提高,人们对健康的重视程度越来越高,为健康投资付费成为大家的共识。这样的大背景,推动着健康产业的高速发展。
    在这里插入图片描述

    △CBNData-2020新健康消费趋势报告

    加上目前疫情状况依然严峻,更加进一步加速了整个社会对健康观念的升级,健康的需求不断细化。
    在这里插入图片描述

    △CBNData-2020新健康消费趋势报告

    在不断增加的健康消费需求下,可灵活定制组合的体检套餐就这样应运而生,加上头部主播的影响力,瞬间形成一条差异化竞争的新赛道,健康消费成为直播电商的新流量密码。

    在健康消费的新赛道里,除了受众较广的体检套餐,还衍生出众多细分领域的产品。比如针对女性群体的HPV九价疫苗套餐。4899元的高价,在蛋蛋直播间卖出近2万件,销售额高达8700万。
    在这里插入图片描述

    △飞瓜快数-HPV九价疫苗销售数据

    还有面向口腔护理的产品,铸瓷牙贴面套餐,在鹿直播间以8800元的价格,单日卖出近千万的销售额。
    在这里插入图片描述

    △飞瓜快数-铸瓷牙贴面套餐销售数据

    目前快手健康消费产品,因为客单价较高,主要还是由头部大主播进行带货销售。但随着消费需求的进一步细分,相信未来会有更多满足多样化用户需求的各价位产品面世,到时会进一步释放消费需求,引爆行业新增长。

    4、品牌自播进入下半场、高端品牌接受度进一步提高

    快手116热卖品牌榜单的竞争也非常激烈,中国黄金和紫金这类珠宝品牌,依靠快手官方的扶持、商品的广泛受众和保值投资属性,占据榜单冠军和季军的位置。

    高端护肤品牌WHOO拿下亚军,再次证明了快手消费者强大的购买实力。朵拉朵尚也凭借出色表现进入前十,展现了快手原生品牌的实力。
    在这里插入图片描述

    今年是快手大力发展品牌的一年,116当然少不了快手品牌活动。今年快手超级品牌日官方联合了包含朵拉朵尚、小米、花西子和回力等11个国货品牌的快手自播号,在10月27日至11月6日期间,每天1个国货品牌,进行了11场24小时不间断带货直播。

    朵拉朵尚在27日这场超品日带货直播收获了完美的开门红,全场商品销量超过60万,销售额成交超过3700万。其中拿下商品销售额冠军的是朵拉朵尚主打的399系列焕肤面膜,单品销售额突破300万。
    在这里插入图片描述

    △飞瓜快数-「朵拉朵尚」商品数据

    朵拉朵尚的商品销售成绩分布十分均匀,销售额前十的商品都超过150万,从侧面也看出朵拉朵尚的选品能力的精准。

    除了热卖爆品,朵拉朵尚直播间自然也少不了福利商品。从数据上看这些1分钱的福利商品销量统统破万,是实打实给快手消费者的福利。

    在这里插入图片描述
    △飞瓜快数-「朵拉朵尚」福利商品数据

    此外,直播吸引到近1800万人数观看,人气峰值达到14万。

    在这里插入图片描述

    △飞瓜快数-「朵拉朵尚」直播人气数据

    作为在快手起家的原生品牌,朵拉朵尚的发展蕴含着深厚的快手基因。为了满足用户消费需求和提高用户覆盖度,朵拉朵尚很早就开始运营多个官方品牌账号,打造了差异化的账号矩阵。
    在这里插入图片描述
    △飞瓜快数-「朵拉朵尚」品牌自播矩阵

    品牌自播进入下半场,像朵拉朵尚这样精细化运营的品牌,未来会非常有想象力。

    除了国货美妆护肤品牌朵拉朵尚外,国际美妆护肤大牌WHOO也在快手风生水起。近一个月,WHOO在快手关联了187个带货主播,出现在了1706场带货直播中,客单价高达830元,卖出50万件商品,创造超过4亿的销售额。
    在这里插入图片描述

    △飞瓜快数-WHOO品牌销售数据

    与朵拉朵尚这类以品牌自播为主的快手原生品牌不同,像WHOO这样的国际品牌在快手的主要推广方式是依靠头部带货主播。

    数据显示,WHOO近30天出现在13位千万主播的直播间,带货销售额近4亿,占到了品牌总销售额的93.34%。

    在这里插入图片描述

    △飞瓜快数-WHOO品牌关联主播数据

    WHOO关联带货主播成绩前5的主播全是粉丝过千万的,最典型的就是辛巴,2场直播带货一款WHOO单品,卖出2.7亿的惊人成绩。
    在这里插入图片描述

    除了头部主播外,很多中小带货主播也在直播间推广WHOO品牌。近30天,WHOO品牌出现在77个10-50万粉丝的主播带货直播中,是所有粉丝量级中最多的,占比达到41.18%。

    中小主播的带货总销售额也达到近千万,其中不乏像「爱护肤的可可」这样32万粉丝的小主播,一个月卖出WHOO商品170万的案例。
    在这里插入图片描述

    △飞瓜快数-「爱护肤的可可」带货数据

    过往WHOO主要出现在头部大主播的直播间,现在各大中小主播直播间也会出现WHOO的身影,而且还卖得相当不错。

    快手消费者对于高端品牌的接受度在逐渐提高,强信任感可以突破粉丝的束缚,小播主也能创造高端品牌的销售奇迹,这在快手平台并不是一件新鲜事。

    前不久,快手高级副总裁马宏彬出席大会,做了《磁力引擎 新市井商业》的主题分享。

    马宏彬会上提出“具有烟火气和人情味的市井与快手社区文化天然相似,而通过大数据、技术以及独特的单双列产品,快手形成了一个更包容、更高效、更具有信任感的新市井商业生态。”

    越来越多的品牌商品在快手新市井商业生态中快速增长,这其中既有原生美妆品牌的逆袭,也有健康消费商品拓展出的新鲜赛道,高端护肤品牌的热卖也验证了快手用户依靠信任感产生的消费潜力。

    从“信任电商”到“新市井商业”,快手会继续作为电商生态中商家、主播、商品和品牌的之间的重要连接,不断探索消费领域的新可能、新价值和新增长点。飞瓜快数和你一起关注和期待快手电商未来的表现。

    展开全文
  • 手写HashMap,快手面试官直呼内行

    万次阅读 多人点赞 2021-11-23 20:47:50
    快手一面,手写HashMap,卒……

    手写HashMap?这么狠,面试都卷到这种程度了?

    第一次见到这个面试题,是在某个不方便透露姓名的Offer收割机大佬的文章:

    手写HashMap,快手一面卒

    这……我当时就麻了,我们都知道HashMap的数据结构是数组+链表+红黑树,这是要手撕红黑树的节奏吗?

    后来,整理了一些面经,发现这道题在快手的面试出现还比较频繁,分析这道题应该在快手的面试题库。那既然频繁出,肯定不能是手撕红黑树——我觉得面试官也多半撕不出来,不撕红黑树,那这道题还有点救,慢慢往下看。

    认识哈希表

    HashMap其实是数据结构中的哈希表在Java里的实现。

    哈希表本质

    哈希表也叫散列表,我们先来看看哈希表的定义:

    哈希表是根据关键码的值而直接进行访问的数据结构。

    就像有人到公司找老三,前台小姐姐拿手一指,那个墙角的工位就是。

    简单说来说,哈希表由两个要素构成:桶数组散列函数

    • 桶数组:一排工位
    • 散列函数:老三在墙角

    桶数组

    我们可能知道,有一类基础的数据结构线性表,而线性表又分两种,数组链表

    哈希表数据结构里,存储元素的数据结构就是数组,数组里的每个单元都可以想象成一个(Bucket)。

    假如给若干个程序员分配工位:蛋蛋熊大牛儿张三,我们观察到,这些名字比较有特色,最后一个字都是数字,我们可以把它提取出来作为关键码,这些一来,就可以把他们分配到对应编号的工位,没分配到的工位就让它先空着。

    元素映射

    那么在这种情况下,我们查找/插入/删除的时间复杂度是多少呢?很明显,都是O(1)

    但咱们也不是葫芦娃,名字不能都叫一二三四五六七之类的,假如来的新人叫南宫大牛,那我们怎么分配他呢?

    这就引入了我们的第二个关键要素——散列函数

    散列函数

    我们需要在元素和桶数组对应位置建立一种映射映射关系,这种映射关系就是散列函数,也可以叫哈希函数。

    例如,我们一堆无规律的名字诸葛钢铁刘华强王司徒张全蛋……我们就需要通过散列函数,算出这些名字应该分配到哪一号工位。

    散列函数

    散列函数构造

    散列函数也叫哈希函数,假如我们数据元素的key是整数或者可以转换为一个整数,可以通过这些常见方法来获取映射地址。

    • 直接定址法

      直接根据key来映射到对应的数组位置,例如1232放到下标1232的位置。

    • 数字分析法

      key的某些数字(例如十位和百位)作为映射的位置

    • 平方取中法

      key平方的中间几位作为映射的位置

    • 折叠法

      key分割成位数相同的几段,然后把它们的叠加和作为映射的位置

    • 除留余数法

      H(key)=key%p(p<=N),关键字除以一个不大于哈希表长度的正整数p,所得余数为哈希地址,这是应用最广泛的散列函数构造方法

    散列函数构造

    在Java里,Object类里提供了一个默认的hashCode()方法,它返回的是一个32位int形整数,其实也就是对象在内存里的存储地址。

    但是,这个整数肯定是要经过处理的,上面几种方法里直接定址法可以排除,因为我们不可能建那么大的桶数组。

    而且我们最后计算出来的散列地址,尽可能要在桶数组长度范围之内,所以我们选择除留取余法

    哈希冲突

    理想的情况,是每个数据元素经过哈希函数的计算,落在它独属的桶数组的位置。

    但是现实通常不如人意,我们的空间是有限的,设计再好的哈希函数也不能完全避免哈希冲突。所谓的哈希冲突,就是不同的key经过哈希函数计算,落到了同一个下标。

    哈希冲突

    既然有了冲突,就得想办法解决冲突,常见的解决哈希冲突的办法有:

    链地址法

    也叫拉链法,看起来,像在桶数组上再拉一个链表出来,把发生哈希冲突的元素放到一个链表里,查找的时候,从前往后遍历链表,找到对应的key就行了。

    链地址法

    开放地址法

    开放地址法,简单来说就是给冲突的元素再在桶数组里找到一个空闲的位置。

    找到空闲位置的方法有很多种:

    • 线行探查法: 从冲突的位置开始,依次判断下一个位置是否空闲,直至找到空闲位置
    • 平方探查法: 从冲突的位置x开始,第一次增加1^2个位置,第二次增加2^2…,直至找到空闲的位置
    • 双散列函数探查法

    ……

    开放地址法

    再哈希法

    构造多个哈希函数,发生冲突时,更换哈希函数,直至找到空闲位置。

    建立公共溢出区

    建立公共溢出区,把发生冲突的数据元素存储到公共溢出区。

    很明显,接下来我们解决冲突,会使用链地址法

    好了,哈希表的介绍就到这,相信你已经对哈希表的本质有了深刻的理解,接下来,进入coding时间。

    HashMap实现

    我们实现的简单的HashMap命名为ThirdHashMap,先确定整体的设计:

    • 散列函数:hashCode()+除留余数法
    • 冲突解决:链地址法

    整体结构如下:

    自定义HashMap整体结构

    内部节点类

    我们需要定义一个节点来作为具体数据的载体,它不仅要承载键值对,同样还得作为单链表的节点:

        /**
         * 节点类
         *
         * @param <K>
         * @param <V>
         */
        class Node<K, V> {
            //键值对
            private K key;
            private V value;
    
            //链表,后继
            private Node<K, V> next;
    
            public Node(K key, V value) {
                this.key = key;
                this.value = value;
            }
    
            public Node(K key, V value, Node<K, V> next) {
                this.key = key;
                this.value = value;
                this.next = next;
            }
        }
    

    成员变量

    主要有四个成员变量,其中桶数组作为装载数据元素的结构:

        //默认容量
        final int DEFAULT_CAPACITY = 16;
        //负载因子
        final float LOAD_FACTOR = 0.75f;
        //HashMap的大小
        private int size;
        //桶数组
        Node<K, V>[] buckets;
    

    构造方法

    构造方法有两个,无参构造方法,桶数组默认容量,有参指定桶数组容量。

        /**
         * 无参构造器,设置桶数组默认容量
         */
        public ThirdHashMap() {
            buckets = new Node[DEFAULT_CAPACITY];
            size = 0;
        }
    
        /**
         * 有参构造器,指定桶数组容量
         *
         * @param capacity
         */
        public ThirdHashMap(int capacity) {
            buckets = new Node[capacity];
            size = 0;
        }
    

    散列函数

    散列函数,就是我们前面说的hashCode()和数组长度取余。

        /**
         * 哈希函数,获取地址
         *
         * @param key
         * @return
         */
        private int getIndex(K key, int length) {
            //获取hash code
            int hashCode = key.hashCode();
            //和桶数组长度取余
            int index = hashCode % length;
            return Math.abs(index);
        }
    

    put方法

    我用了一个putval方法来完成实际的逻辑,这是因为扩容也会用到这个方法。

    大概的逻辑:

    • 获取元素插入位置
    • 当前位置为空,直接插入
    • 位置不为空,发生冲突,遍历链表
    • 如果元素key和节点相同,覆盖,否则新建节点插入链表头部
        /**
         * put方法
         *
         * @param key
         * @param value
         * @return
         */
        public void put(K key, V value) {
            //判断是否需要进行扩容
            if (size >= buckets.length * LOAD_FACTOR) resize();
            putVal(key, value, buckets);
        }
    
        /**
         * 将元素存入指定的node数组
         *
         * @param key
         * @param value
         * @param table
         */
        private void putVal(K key, V value, Node<K, V>[] table) {
            //获取位置
            int index = getIndex(key, table.length);
            Node node = table[index];
            //插入的位置为空
            if (node == null) {
                table[index] = new Node<>(key, value);
                size++;
                return;
            }
            //插入位置不为空,说明发生冲突,使用链地址法,遍历链表
            while (node != null) {
                //如果key相同,就覆盖掉
                if ((node.key.hashCode() == key.hashCode())
                        && (node.key == key || node.key.equals(key))) {
                    node.value = value;
                    return;
                }
                node = node.next;
            }
            //当前key不在链表中,插入链表头部
            Node newNode = new Node(key, value, table[index]);
            table[index] = newNode;
            size++;
        }
    

    扩容方法

    扩容的大概过程:

    • 创建两倍容量的新数组
    • 将当前桶数组的元素重新散列到新的数组
    • 新数组置为map的桶数组
        /**
         * 扩容
         */
        private void resize() {
            //创建一个两倍容量的桶数组
            Node<K, V>[] newBuckets = new Node[buckets.length * 2];
            //将当前元素重新散列到新的桶数组
            rehash(newBuckets);
            buckets = newBuckets;
        }
    
        /**
         * 重新散列当前元素
         *
         * @param newBuckets
         */
        private void rehash(Node<K, V>[] newBuckets) {
            //map大小重新计算
            size = 0;
            //将旧的桶数组的元素全部刷到新的桶数组里
            for (int i = 0; i < buckets.length; i++) {
                //为空,跳过
                if (buckets[i] == null) {
                    continue;
                }
                Node<K, V> node = buckets[i];
                while (node != null) {
                    //将元素放入新数组
                    putVal(node.key, node.value, newBuckets);
                    node = node.next;
                }
            }
        }
    

    get方法

    get方法就比较简单,通过散列函数获取地址,这里我省去了有没有成链表的判断,直接查找链表。

        /**
         * 获取元素
         *
         * @param key
         * @return
         */
        public V get(K key) {
            //获取key对应的地址
            int index = getIndex(key, buckets.length);
            if (buckets[index] == null) return null;
            Node<K, V> node = buckets[index];
            //查找链表
            while (node != null) {
                if ((node.key.hashCode() == key.hashCode())
                        && (node.key == key || node.key.equals(key))) {
                    return node.value;
                }
                node = node.next;
            }
            return null;
        }
    

    完整代码:

    完整代码

    测试

    测试代码如下:

        @Test
        void test0() {
            ThirdHashMap map = new ThirdHashMap();
            for (int i = 0; i < 100; i++) {
                map.put("刘华强" + i, "你这瓜保熟吗?" + i);
            }
            System.out.println(map.size());
            for (int i = 0; i < 100; i++) {
                System.out.println(map.get("刘华强" + i));
            }
        }
    
        @Test
        void test1() {
            ThirdHashMap map = new ThirdHashMap();
            map.put("刘华强1","哥们,你这瓜保熟吗?");
            map.put("刘华强1","你这瓜熟我肯定要啊!");
            System.out.println(map.get("刘华强1"));
        }
    

    大家可以自行跑一下看看结果。

    总结

    好了,到这,我们一个简单的HashMap就实现了,这下,面试快手再也不怕手写HashMap了。

    快手面试官:真的吗?我不信。我就要你手写个红黑树版的……

    瞬间狂暴

    当然了,我们也发现,HashMap的O(1)时间复杂度操作是在冲突比较少的情况下,简单的哈希取余肯定不是最优的散列函数;冲突之后,链表拉的太长,同样影响性能;我们的扩容和put其实也存在线程安全的问题……

    但是,现实里我们不用考虑那么多,因为李老爷已经帮我们写好了,我们只管调用就完了。

    下一篇,会以面试对线的形式来走进李老爷操刀的HashMap!

    点赞关注不迷路,咱们下期见!



    参考:

    [1].《数据结构与算法》

    [2].构造哈希函数方法

    [3].ACM金牌选手讲解LeetCode算法《哈希》



    文章首发,技术交流👇👇👇
    展开全文
  • 快手滑块验证码分析

    万次阅读 多人点赞 2021-10-21 14:52:18
    快手网页版滑块captchaSession分析 文章目录流程分析XHR调试参数搜索模拟生成 流程分析 1、接口分析 通过Application的cookie去删除did,重复多次后触发滑块。滑块出现时响应中出现captcha。 ...2、captchaSession ...

    快手网页版滑块captchaSession分析


    流程分析

    1、接口分析
    通过Application的cookie去删除did,重复多次后触发滑块。滑块出现时响应中出现captcha。
    https://captcha.zt.kuaishou.com/iframe/index.html?captchaSession=

    2、captchaSession 来源

    在请求时如果携带的did失效,则会返回带有captchaSession 的响应内容
    在这里插入图片描述

    3、接口规律

    https://wlog.kuaishou.com/rest/n/log/web/collect?captchaSession=
    页面不刷新,只刷新滑块,captchaSession值不会改变

    4、滑块注册 captchaSn

    https://api.zt.kuaishou.com/rest/zt/captcha/sliding/config
    在这里插入图片描述

    5、iframe验证框

    https://captcha.zt.kuaishou.com/iframe/index.html?
    在这里插入图片描述


    XHR调试

    查看验证流程

    在这里插入图片描述
    往回找
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    xhr中没有加密前的逻辑,所以重新找。


    参数搜索

    检索关键词captchaSn ,在case 0的最后一行进行断点
    在这里插入图片描述

    this[f(“0x97”)] 是 ‘https://api.zt.kuaishou.com/rest/zt/captcha/sliding/verify’

    r[f(“0xff”)](x[“a”]) 是 ‘eF3IOJDevngaCxVcmikS7Q==’

    在这里插入图片描述

    拆分一下,x[“a”] 是function b(n) ,r[f(“0xff”)] 是function(n, e)
    在这里插入图片描述

    s 是一些参数集合,比如验证参数 captchaSn 和 轨迹trajectory
    在这里插入图片描述

    (this、[f(“0x97”)], r[f(“0xff”)](x[“a”], s)) 是 captchaSession

    Object(a[“c”]) 是方法 b(n,t){return v[a(“0x0”)](this,arguments)}

    在这里插入图片描述
    b(n,t)传入的是 verify的地址 和 captchaSession 。

    整体的逻辑已经整理清楚了,先注册滑块拿到captchan,然后通过Js处理后生成captchaSession,最后进行提交。


    模拟生成

    展开全文
  • 快手运营过程中,我们都会有这样的疑问:为什么有的人发布一条短视频就能收获10万个以上的点赞量,一夜之间增加10万粉丝?其实这是有一定的规律的,快手的运营核心是算法驱动模式,快手会根据用户喜好向其推荐短...

    在快手运营过程中,我们都会有这样的疑问:为什么有的人发布一条短视频就能收获10万个以上的点赞量,一夜之间增加10万粉丝?其实这是有一定的规律的,快手的运营核心是算法驱动模式,快手会根据用户喜好向其推荐短视频,因此,我们只要掌握了其中的规律,想要实现粉丝量增长就不是难事了。

    一、快手短视频流量算法解析

    快手的流量算法主要为去中心化的算法方式,主要包括了以下三个方面内容:

    图片快手实现流量增长的方式

    (1)流量分配

    快手的流量池,是指作品因获得不同曝光率而得到的不同流量位置。快手对于任何一个作品,甚至是广告作品,都会分配一个基础的播放量,这个播放量大概为0-200次,而150-200次这个区间的播放量数据非常的重要,因为快手会根据作品的点赞率、评论率及转发率来判定是否要推送到下一个流量池中。

    (2)叠加推荐

    快手新视频分布的时候系统会分配一定的推荐量,随着短视频热度的不断上升,系统会通过加权的方式给予短视频更多的推荐,除此之外,系统还会根据短视频的播完率、点赞数、评论率和转发率得出推荐数,因此,要想获得更高的叠加推荐,我们可以通过短视频的标题引导用户进行评论等。

    图片飞瓜快手-播主视频

    比如:最近很火的快手短视频主播「牛爱芳的小春花」的短视频标题都是很有引导性,能刺激用户进行评价,我们从飞瓜快手-播主视频中可以看出她的视频评论、点赞和浏览量都是非常高的。

    (3)热度加权

    快手热门短视频的播放量一般都是在百万次的播放级别的,他们的点赞数、评论率和转发率也是处于瑶瑶领先的状态的,这是因为这些短视频是经过一层层检验然后才进入快手的推荐内容大流量池,而这些结果显然都是依靠一层层的热度加权所带来的。通常而言,快手各项数据对热度加权影响的重要程度为:转发率>评论率>点赞率。因此,我们在选题的时候可以通过热门话题来吸引用户转发、评论、点赞,以增加短视频的加权热度。

    图片飞瓜快手-热门视频

    蹭快手平台热点我们可以使用飞瓜快手的【热门素材】模块,该功能提供各类最新热门视频、热门音乐、热门标签及快手热榜,帮助用户巧妙借助热点“梗”,融入到内容创作中,增加获取大流量机会。

    二、快手短视频推荐算法解析

    快手平台的内容推荐算法其实很简单,主要分为定义内容和定义人,然后通过人与内容的互动,让你的作品得到更多的展示。

    (1)定义内容

    图片

    比如说,现在放一张“小狗在草地上”的图片,平台会先抓取这个图像内容,打上标签,接下来就会把该作品推给小范围内同样带有相同兴趣标签的用户。当这群用户的打开率到了一定阈值,那么系统就能初步判定这是一个“萌宠”视频。以此类推,层层推荐,依靠判定作品打开率、点赞数、评论数是否满足当前阈值百分比来给予更多的推荐。

    同理,视频上推荐、上热门也是这个原理。也就是当作品被推到小范围用户群中,大家对你的播放完成度你的点赞的评论。

    (2)定义人

    我们需要通过给平台暴露足够多的信息,让他们来定义我们是谁,于是才能匹配到感兴趣的人。

    基本上通过长期特征,中期特征,短期特征来实现。回归到内容上来说,通过足够多的个人标签展示,比如账号主页设置、内容页关键字、音频关键字等,让系统更好地去认识你。

    所以新手刚刚注册好快手号一定要注意进行账号的设置,账号的设置主要包含以下4部分内容:

    a. 名称:直接表示身份;有个性特征;容易传播,无生僻字

    b. 头像:建议使用真人头像;与内容的风格统一

    c. 头图:切忌使用大量含有过密文字的图片

    d. 简介:用最精简的话描述自己,三行内讲完最重要的信息。

    图片

    比如:快手号「叶公子ye」的账号设置就很符合她的人设打造,简介和她的视频内容也很搭配。

    图片飞瓜快手-播主视频

    而通过飞瓜快手-播主视频中也可以直观的看出「叶公子ye」的视频点赞、评论和浏览量都是很高的,其中也离不开她对账号人设的定义打造。

    综上所述,运营者只要遵循系统数据分析模式,合理经营自身账号,引发更多的转发、评论和点赞,就可以获得更多的流量池推荐,上热门赢得用户关注将不再是难事。

    展开全文
  • 7 月 5 日,快手 Y-tech 部门 AI 工程团队的崇洋铭在 GMTC 全球大前端技术大会(北京站)2021,做了题为《端侧 AI SDK 框架,爆款特效批量生产背后的秘密》的演讲。他从一系列酷炫的快手特效分享展开,结合具体落地...
  • 赚钱思路 大家都知道抖音出了个「抖音极速版」,快手也有,看视频有红包,不知道的现在去下一个,看我是不是骗子。 赚钱的法子有了,怎么躺平赚呢? 我们想办法让他自动刷视频不就完了吗? 怎么搞,这就教你。三连...
  • 端着外卖,拿起手机,打开快手看剧,短短几分钟内,剧情不断反转,跌宕起伏,让人直呼过瘾爽快。“我竟然在快手刷短剧?!”这不是开玩笑,这就是现实。 当短视频市场的竞争逐渐红海,与短视频生态息息相关的短剧,...
  • 收集整理一波iOS捷径库(使用方法见文末,支持iOS14),包括了大家最想要的抖音去水印捷径和快手去水印捷径。大家使用过程中如果发现有啥问题或者想实现什么快捷指令,关注微信公众号“云峰小罗”,发送“捷径”找我...
  • 快手极速版”的模拟器多开方法

    万次阅读 多人点赞 2019-11-22 23:14:16
    之前给大家介绍了如何使用电脑模拟器+脚本技术来实现自动刷金币的方法,参考公众号文章《撸“快手”-这次用模拟器来薅》(下文中简称“前文”),很多朋友看了文章后,很有启发,也纷纷成功地用模拟器实现了自动刷...
  • 作为专业快手数据分析平台,飞瓜快数自从推出起就一直深受广大快手从业者和商家品牌方的欢迎。为了打造更好的用户体验,满足大家随时随地查看快手数据的需求,飞瓜快数APP版现已正式上线,支持Android和iOS版本。 ...
  • 珠宝商品在快手直播电商行业是一个香饽饽,这已经是一个不可忽视的事实。 快手6月GMV前100的畅销商品中,珠宝配饰分类的商品创造的GMV最多,高达8.26亿,远远超过其他商品分类。 珠宝商品卖得好,珠宝品牌的贡献...
  • 目录1. 安装Docker CE2. 安装单节点rancher,server和agent在同一台机3. 使用Rancher安装Jenkins4. 1. 安装Docker CE 检查内核版本,cat /etc/centos-release,至少要centos7以上,因Docker要求 ...
  • 快手平台的运营环境是动态变化的,运营者要想更好的做好快手运营工作就要不断调整自己的运营策略,而策略的调整的调整并不是盲目的应以数据为基础不断的优化调整。本文基于作品维度、用户维度及利益维度来介绍如何以...
  • auto.js 快手极速版刷视频简易demo

    万次阅读 2020-02-28 15:08:03
    这是一个无聊做的demo 快手极速版刷视频。 auto.js是基于javascript的自动化脚本,它可以模拟人的操作,功能非常强大,说是外挂但不破坏原程序或者在原程序中注入某些东西。本次开放使用vs code,当然能 auto.js ...
  • 所以我今天特意对抖音无水印下载捷径和快手无水印下载捷径进行了更新,版本:2019年9月30更新,支持iOS13,该快捷指令支持抖音和快手的最新版本,有需要的朋友请关注微信公众号“云峰小罗”,发送关键词“捷径”自取...
  • 飞瓜数据观察到,今年以来快手上越来越多的播主开始带货手表专场、半专场,也有许多主播凭借着手表拿下了不菲的成绩。 手表如何在快手打开市场? 快手开放手表类目 今年1月19日,快手小店正式开放时尚手表类目招商。...
  • 分享快手极速版助手APK和源代码

    千次阅读 2021-08-19 15:56:41
    快手极速版高级的版本已经开启检测autojs,因此最新的快手极速版是无法用autojs脚本刷刷刷的。我这里提供9.2的下载地址,这个可以刷。地址如下: https://wwa.lanzoui.com/icST4rzv4kh 另外我的邀请码如下:...
  • 全面揭秘快手与抖音的内容推荐算法

    万次阅读 多人点赞 2019-04-17 22:02:48
    而在快手,头部用户分到的蛋糕被设了上限(高热度和旧视频曝光机会会大大降低),因此会有更多的人分到蛋糕,这也体现了快手的理念——希望所有用户都能展示自我,任何一位普通用户都有被关注的权利。 对于看官来...
  • 1.实现原理 利用小程序内置组件 swiper+video 来制定逻辑的方向 实现方式 设定swiepr-item数量为4,也就是在swiper里面同时展示4个video,避免过多导致页面卡顿 例: (假设数据请求一次获取6组数据) ...
  • 最近看到朋友圈很多人都在分享快手极速版,研究了一下发现看视频、签到、看广告给金币,金币会自动转成余额可提现,每天最多2000金币,差不多可以兑换2块钱,空闲时间使用autojs写了一个自动脚本用来自动浏览,脚本...
  • 3月26日,快手电商在杭州举办了“2021快手电商引力大会”。大会宣布快手电商开启直播电商2.0时代,并发布“商家全周期红利计划”,这也是快手电商成立以来首次以行业大会形式对外发声。 此次大会主要是通过为商家降...
  • 薅“快手”羊毛的Autojs脚本

    万次阅读 多人点赞 2019-08-17 23:02:35
    最近快手非常火,因为那个东西可以赚钱,一个手机看上那个视频,可以得到3元的收益,而如果邀请拉新,那么收益更高,所以鄙人今天准备免费分享一个薅快手的脚本,帮助大家实现赚取零花钱的目的,本来我们用刷宝的...
  • 快手手机号登陆

    千次阅读 2021-11-15 13:43:20
    手机号验证码登陆: 1. 发送验证码接口 (requestMobileCode): ... 参数: 直接curl生成python代码去测试一下: # -*- coding: utf-8 -*- # @Author : Codeooo # @Time : 2021/10/11 ... 'Connection': '
  • laya 快手

    千次阅读 2021-09-24 11:29:56
    laya 发布快手平台流程需提前准备的事项laya导出小游戏包 需提前准备的事项 下载快手小游戏开发者工具 申请AppId[测试appId为:kwai_game_test_appid ],如需要接入广告,需要再申请广告Id laya导出小游戏包 选择...
  • 快手极速版脚本

    万次阅读 多人点赞 2020-04-02 20:01:36
    最近看到朋友圈有很多分享快手极速版,仔细看了一下,主要还是人头车。刷视频应该也有奖励。于是,我就用Auto.js写了一个自动刷视频的脚本。我设置的是1000个视频,中途中断了2次,让我滑动拼图。应该是监测到异常。...
  • 报名链接:快手「微服务架构」技术交流会 预约报名-快手技术团队活动-活动行
  • 经过昨天的折腾,快手之家后台管理平台可以录入api结构了。整站使用异步实现的,快手api目录结构的录入也不例外,操作起来也格外的方便,不过好几百个目录与文件,通过手工录入,有点对不起程序员的称号了,那就让...
  • 快手为什么能成功?

    千次阅读 2021-06-09 00:14:07
    历经十年长跑,快手从一家独角兽企业成为中国第五大互联网上市公司。(前四依次是腾讯、阿里巴巴、美团、拼多多)在短视频领域弯道超车成为“中国短视频第一股”,开启了新一轮造富神话。今年的2月5日...
  • python爬取快手、抖音视频的评论

    千次阅读 2021-06-02 23:46:49
    但是这种方式的好处是抖音或者快手那边没有限制,比较是模仿人工操作的。代码直接爬取会被限制。 具体演示可以看下面代码demo: 按键精灵版本: 链接:https://pan.baidu.com/s/1hZjlfdPY6piUEwvK0KV2fA 提取码:xt...
  • 自动上滑快手极速版视频脚本代码如下: auto();//判断和等待开启无障碍 let see_count = rawInput(‘请输入滑动次数’,’1000′);//手动输入滑动次数默认是1000次。 app.launchApp(‘快手极速版’);//只有一个快手...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,655
精华内容 10,662
关键字:

快手