公司:搜狐
搜狐,是一家互联网中文门户网站。1995年,搜狐创始人张朝阳利用风险投资创建了爱特信信息技术有限公司,1998年正式推出搜狐网。2000年,搜狐在美国纳斯达克证券市场上市。
搜狐开发的产品有搜狗拼音输入法、搜狗五笔输入法、搜狗音乐盒、搜狗浏览器、搜狐视频、独立的搜索引擎搜狗和网游门户畅游。
搜狐是2008年北京奥林匹克运动会唯一的互联网赞助商,也是奥林匹克运动会历史上第一个互联网内容的赞助商。
尽管搜狐在首页标题声称自己是中国最大的门户网站,但其Alexa排名却低于同类门户网站腾讯网和新浪。在2018年其在Alexa的中国排名于第5位,在门户网站中仅次于腾讯。现时为中国五大视频网(优酷、爱奇艺、腾讯视频、芒果TV)之一。
客户端动态降级系统
本文字数:4576字预计阅读时间:20分钟
视频秒播优化实践
本文字数:2259字预计阅读时间:10分钟
真机 ARM64 架构转模拟器 ARM64 架构
本文字数:2051字预计阅读时间:15分钟
Sentry(Android)源码解析
本文字数:16030字预计阅读时间:40分钟
基于openresty构建运维工具链实践
本文字数:4591字预计阅读时间:25s
搜狐新闻Hybrid AI引擎端侧离线大语言模型探索
本文字数:3027字预计阅读时间:20分钟
Simhash在内容去重中的应用
信息流个性化推荐场景中依赖爬虫抓取的海量新闻库,这些新闻中不乏互相抄袭的新闻,这些内容相似的文章,会造成内容的同质化并加重数据库的存储负担,更糟糕的是降低了信息流内容的体验。所以需要一种准确高效的文本去重算法。而最朴素的做法就是将所有文本进行两两比较,简单易理解,最符合人类的直觉,这种做法对于少量文本来说,实现起来很方便,但是对于海量文本来说是行不通的,所以应在尽可能保证准确性的同时,降低算法的时间复杂度。事实上,传统比较两个文本相似性的方法,大多是将文本分词之后,转化为特征向量距离的度量,比如常见的欧氏距离、海明距离或者余弦角度等等。下面以余弦相似度和simhash算法为例做简单介绍。
探秘DWARF文件
DWARF全名是Debugging With Attribute Record Formats,是一种调试信息的存放格式。DWARF是一种通用的标准格式,很多编译器对其都有支持,并且DWARF支持C、OC、go等多种语言。
初始mach-o文件及在项目中应用
了解mach-o的结构可以帮助认识系统加载二进制文件的动态链接和静态链接。应用层面,使用initialize的c++函数计算启动时间耗时也需要以mach-o的结构知识为铺垫。还可以用在使用clang自注册启动任务上。
搜狐新闻客户端使用Kotlin之后对JSON解析框架的探索
自2017年Google发布Kotlin语言之后,Android开发由原来的Java开始向Kotlin 过度,目前绝大部分Android开发岗位基本要求就是熟练使用Kotlin。事实上,很多有着多年历史的项目一开始是Java开发的,在Kotlin日渐趋于Android开发主流的过程中,混合开发成为许多项目的首选。我们的项目也是采用混合开发,面对拥有沉重历史包袱的代码,想用Kotlin重构却不得不考虑时间成本和人力成本,但又不想放弃Kotlin开发的优势,所以新业务均采用Kotlin开发。
Json就不过多介绍了,大家耳熟能详,相信很多伙伴项目中的Json解析依旧在使用FastJson或者Gson等第三方框架进行数据解析,当我们混合开发之后,你会发现Kotlin的数据类写起来很方便,但是将Json解析为数据类对象时出现的问题会让你很头大,尤其是开启混淆之后,各种各样的问题甚至程序崩溃随之出现,随着程序的崩溃,你的内心渐渐开始崩溃,不禁发出疑问,数据类不好用吗?
Flutter-Web从0到部署上线(实践+埋坑)
Flutter 的诞生虽然来自 Google 的 Chrome 团队,但大家都知道 Flutter 最先支持的平台是 Android 和 iOS,至今最核心的维护平台依然是 Android 和 iOS。由于 dart 语言的学习成本不高,Flutter 的响应式UI与 ComposeUI 和 SwiftUI 都有极大的相似之处,整体的架构思路也更偏向于客户端的模式,再加上为了实现很多硬件或 Native 相关的基础功能也需要专业的客户端开发知识,所以 Flutter 更多的是被客户端开发同学认可并使用(在我们的团队中,Flutter 已经是客户端开发同学的必备基本技能)。 在此背景下,Flutter 最初并不在 web 端上发力。不过由于 Flutter 本身就是携带了 web 的基因,在 Flutter2 发布的同时也发布了 web 的稳定版。那么它有什么优势和劣势呢?
UICollection Compositional Layout全详解
UICollectionView在iOS中是构建复杂布局的强大工具。iOS13中引入的 UICollectionViewCompositionalLayout为创建自定义布局提供了全新的可能性。本文将深入探讨Compositional Layout的工作原理,以及如何利用它创建复杂的分组、嵌套布局和增强视图。无论您是刚开始学习Compositional Layout,还是想掌握它的高级用法,本文都将是您的完美指南。
香色闺阁、微信IPA重签名实战
文章介绍了重签名APP的方法,特别是重签名微信的步骤。首先,获取微信的ipa文件并解压获取WeChat.app。然后,新建一个自定义bundleID的APP,并替换待签名ipa中的bundleID、证书和描述文件。最后,修改WeChat.app中的info.plist文件中的bundleIdentifier为自定义的bundleID。通过这种方法,可以成功重签名微信并安装。
Android编译优化之Jetifier优化
通过运行checkJetifier任务,我们可以得知需要使用Jetifier进行AndroidX迁移的库有:com.github.bumptech.glide:okhttp3-integration:4.8.0。根据输出信息,我们可以看到原先引用的android.support.annotation等类被映射到了对应的androidx.annotation类。为了完成迁移,可以采取不同的方法,例如直接升级到支持AndroidX的新版本、使用源码编译新版本或使用jetifier-standalone命令行工具转换aar/jar文件。
深度解读 JS 构造函数、原型、类与继承
本文介绍了JavaScript中构造函数和this关键字的使用,以及构造函数中return的影响。构造函数不需要使用return语句,this关键字会自动指向新创建的对象。然而,如果构造函数中使用了return语句,返回的是基本类型,则该返回值会被忽略;如果返回的是一个对象,则最终返回的新对象将是返回的对象,原本的this指向的对象会被抛弃。此外,通过new关键字创建对象时,应该使用规范的命名方式。
多文件并行上传方案设计
抖音、快手等短视频 APP 都有本地编辑视频并上传的功能,这里的上传指的就是上传视频文件,其实无论是上传视频还是其他文件,技术原理都是相同的。
搜狐视频 APP 的文件上传除了基础的上传功能外,还支持多个视频文件的上传处理,以串行的形式进行上传。并且,在单个视频文件的上传中,为了保证充分利用带宽,还设计了并行上传的逻辑。整体方案如下。