首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

移动web端上如何有效控制包大小

近些年,移动应用爆发式增在,也给移动web端带来了一些新的话题,那就是怎么有效控制移动web端代码膨胀问题,现在一些工具如webpack都确确实实很好用,但是大家有没有发现一个问题,稍稍不注意,webpack...虽然说,在网络环境相对较好发达地域来说,使用pc web访问网站体验可以做得很好,但是,一旦换一个网络环境没那么地方,那就呵呵了,当面面对这样严峻考验,开发者们通常做法是: 压缩代码,目的自然是使得代码变得更小...,加载自然而然更快点; 多地域部署,让网络环境差地方尽可能少减少数据包在互联网上穿梭时间; CDN等措施,缓解网站压力,将一部分流量 如静态图片,js等分流到 CDN上; 但是今天,这里猪脚是如何来做好压缩代码...移动web端个特点,那就是对弱网+静态bundle过大会尤其敏感,反映到用户头上就是打开巨慢,因为无论是吞吐量,解析代码耗时(cpu),可使用内存,耗电等问题都是影响因素。...走到这里,可以这个工具基本上也已经没有什么可以优化工具,做这么一个特性几乎是接近与完美的程度了,其实我们也不妨把这些思路用在自己日常工作处理中。

94050

三个简单规则,助你养成Git和GitHub好习惯

面对这样使用广泛工具,学习自然是个无止境过程,但新手该怎么从一开始就养成好习惯呢?对于这个问题,Microverse创始人Ariel Camus话说。 ?...而如果只是个刚入行新人,你是很难获得这种体验。经验来源于生活,来源于实践Git和GitHub正是你从实际项目中积累实际经验一种途径。...简而言之,Git这个工具允许团队成员以异步方式高效、有效地为同一个项目提交开发代码。人与人之间能更好地协作,团队能解决问题自然也更大更复杂。...规则一:为每个新项目创建一个Git存储 第一条规则很简单,但养成这个习惯不容易。...也许看完上述内容后,你还有些困惑,但是现在你就可以开始慢慢牢记并养成这三个习惯。不要想着自己该“如何”这么做,如果你能始终专注于“做什么”和“为什么”,你会发现整个过程变得无比简单和自然

1.1K43
您找到你想要的搜索结果了吗?
是的
没有找到

微信 Android 模块化架构重构实践(上)

配合gradle编译,以及git多分支并行开发,微信模块工程数量不断增多,支撑了游戏、支付等大功能,可以说这段时间里原有架构起到了很好作用。 然而随着代码继续膨胀,一些问题开始突显出来。...于是我们回过头仔细看之前设计,找找问题究竟是怎么来问题出在哪 先寻找代码膨胀原因。 翻开基础工程代码,我们看到除了符合设计初衷存储、网络等支持组件外,还有相当多业务相关代码。...使用Event作为通信媒介,自然要有定义它地方,让模块之间都能知道Event结构是怎样。...因此可能诞生各种框架和工具来提升这里损失效率。到头来,是不是大家都实现了一套类似RPC这样封装。其实本地通信,能用接口就挺好,不能用时候,再用协议封装也来得及。...避免超量module创建,轻量 pins工程某种程度上能减少一些粒度太小module工程,也一定程度缓解太多module工程时gradle编译性能问题

10.5K169

一年之计:如何构建知识体系?

这就是为什么高考前你做了10套模拟题还不如其他人做一套效果。 知识+逻辑基本等于你能力,知识让你知道那个东西,逻辑让你把东西和问题联系起来。 这里问题可以理解成方案、架构、设计等。...系统化知识哪里来? 知识之间是可以联系起来并且像一颗大树一样自我生长,但是当你都没理解透彻,自然没法产生联系,也就不能够自我生长了。 真正掌握知识点慢慢生长连接最终组成一张大网。...这也就是为什么学霸看两个小时课本比你看两天效果还好,感受下来还觉得别人聪明,是不是智商比我高啊。 所以新进入一个领域时候要去找他大图和抓手。...这也是为什么同样学习、同样问题,他能学会,他能解决,你不可以。 再来看一个解决问题例子 会员系统双11优化这个问题对我来说,我是个外来者,完全不懂这里面的部署架构、业务逻辑。...=15),或者将SSH跳板机->SSH Server过程做成SSH Server一步就可以了(ProxyCommand),进而发现用SSHProxyCommand很容易科学上网了,或者Git问题时候轻而易举地把

22720

一年之计:如何构建知识体系?

这就是为什么高考前你做了10套模拟题还不如其他人做一套效果。 知识+逻辑基本等于你能力,知识让你知道那个东西,逻辑让你把东西和问题联系起来。 这里问题可以理解成方案、架构、设计等。...—2— 系统化知识 知识之间是可以联系起来并且像一颗大树一样自我生长,但是当你都没理解透彻,自然没法产生联系,也就不能够自我生长了。 真正掌握知识点慢慢生长连接最终组成一张大网。...这也就是为什么学霸看两个小时课本比你看两天效果还好,感受下来还觉得别人聪明,是不是智商比我高啊。 所以新进入一个领域时候要去找他大图和抓手。...为什么这样呢?...=15),或者将SSH跳板机->SSH Server过程做成SSH Server一步就可以了(ProxyCommand),进而发现用SSHProxyCommand很容易科学上网了,或者Git问题时候轻而易举地把

26120

PostgreSQL 监控之拨云见日 (公开课)

大家,今天要和大家分享是POSTGRESQL监控问题, 关于监控可能有一些同学觉得监控无非是针对CPU 内存 以及 磁盘进行一些简单监控, 实际上针对数据监控,不仅仅是这些, 那么数据监控到底应该怎么样监控...首先这里一个观点,可能在数据监控中并不时常被提到, 这个点是监控是不是也要有性价比一个观点, 1监控参数是否必要百分之百准确, 个人观点在部分参数和角度上,是没有必要要求监控参数必须不差毫厘准确...监控和性能之间是否必要联系, 获得监控参数难易程度, 从上面看 如果要获得准确当前有多少个和POSTGRESQL 连接 自然是 3 更合适, 但我们可以问自己几个问题, 如果要使用3 号, 是不是要获得数据系统用户名密码..., 是不是要建立和PG数据之间连接, 如果有其他系统也在频繁查询pg_stat_activity是否影响PG系统性能....,如果POSTGRESQL 中一个表任意膨胀. 1会占据大量数据库存储空间 2影响对此表数据查询性能 所以表膨胀一直是对POSTGRESQL 监控中一个点 ?

62510

​从微信后端仓库发展史谈谈单仓和多仓

每一个项目组都有独立编译机,在这个编译机上会有多个编译账户用来管理编译工作区(这个编译账户在后面的统一编译也会用到),了不同编译账户就从编译机上解决了某些代码禁止依赖问题。...1.4 根据领域驱动拆分小仓(微信支付整洁 git) (2020~现在) 在迁移到 git 时引出了另外问题,如何划分工蜂项目组?工蜂项目需要由什么规则来管理呢?...代码仓库一直都是伴随着开发一生绕不开的话题,随着业务膨胀,代码仓库也一天天变巨大,无论大仓还是小仓。...大仓支持者会想当然认为做搜索是不是直接弄一个超大仓做一个类似 Google 搜索页是不是更好呢,这个问题我们就需要回到最初一线开发者愿景(Want)上来分析。...3.2 支付整洁 GIT 实践 支付在 2016 年业务和开发人员规模迅速膨胀,导致 mmtenpay mmpaygateway 两个 svn 依赖混乱,构建复杂,甚至时不时还引入环形依赖导致构建失败

2.2K10

“逃离”单体,GitHub微服务架构实践

如今,我们平台上已经超过 5000 万名开发人员,每年有超过 8000 万个 pull 请求合并,全球各大洲超过 1 亿个代码存储。 如你所见,这个 单体架构 已经带我们走得很远。...对我们来说,这是文化上巨大转变,需要做大量工作。我们得想好,到底要解决什么问题和痛点。...拆分单体第一步是考虑基于特性功能分割代码和数据。这个过程可以在真正在微服务环境中拆分之前在单体中完成。使代码易于管理,通常都是一种良好架构实践。...这是一个共享字段,将一个功能组中所有信息联系在一起。例如,存储模式域(其中包含所有与存储相关数据,如问题、pull 请求、评审意见)使用存储 ID 作为分区键。...GitHub 超过 5000 万用户和 1 亿个存储,在这样规模下,功能组可能变得非常大。这时,分区键就派上用场了。例如,一种简单方法是根据数值范围将不同用户分配到不同数据存储

51720

聊聊clean code

code review 很多大公司会用gitpull request机制来做code review。我们重点应该review什么?是代码格式、业务逻辑还是代码风格?...比如,一段功能是不是应该属于一个类、是不是很多相似的功能可以抽取出来复用、代码太过冗长难懂等等。...这样做好处是,阅读你代码的人,无论读到什么深度,都可以清晰地了解每一层职能,如果不care下一层实现,完全可以跳过不看,并且方法粒度也恰到好处。...解决这个问题方法很简单,一般情况下我们构造paramObject。用一个struct或者一个class来承载数据,一般这种对象是value object,不可变对象。...这时候就体现了service方法价值,如果一个行为,无法明确属于哪个领域对象,牵强地融入领域对象里,显得很不自然。这时候,无状态service可以发挥出它作用。

1.3K40

Git 提交竟然还能这么用?

大家,我是鱼皮。 Git 是主流代码版本控制系统,是团队协作开发中必不可少工具。...Git 提交是指将你代码保存到 Git 本地存储,就像用 Word 写长篇论文时进行保存文件一样。...每次提交都会记录代码状态,包括文件添加、修改和删除;还包括一些提交信息,比如提交时间、描述等。这使得我们可以通过查看所有的历史提交来追溯项目的开发进度和历程,了解每个提交中都发生了什么变化。...推荐新手使用可视化工具而不是 Git 命令进行版本切换和撤销提交,在不了解 Git 工作机制情况下使用命令操作很容易出现问题。...正因如此,很多团队定制自己提交信息规范,比如之前我在鹅厂时候,每次提交都建议带上需求单地址,便于了解这次提交是为了完成什么需求。

21550

收藏|2021年浅谈多任务学习

NLP和CV中经常通过数据增强方式来提升单个模型效果,多任务学习通过引入不同任务数据,自然而言类似的效果。...小小预告一下下一篇内容:各个任务回传梯度如果值大小差距很大、甚至向量距离还很远、是不是什么办法修正修正? 3.3 直接设计更合理辅助任务!...预测要做任务该不该做,句子中词位置对不对,该不该放这里,点击序列中该不该出现这个iterm? 这也是一个有趣方向。 比如文本纠错任务,可不可以先预测一下这个文本是不是错误呢?...其实个人实践中,先过滤掉一些噪声段落,再进行QA大概率都是提升QA效果~~特别是了预训练BERT、Roberta、XLNET这些大规模语言模型之后,把句子、段落是否包含答案作为二分类任务,同时预测答案位置...NLP领域大家都专注于几个数据集,很大程度上这个问题比较小,但推荐系统同学们,这个问题就更常见了,静下心来理解你数据、特征含义、监督信号是不是是不是符合物理含义(比如你去预测视频点击,结果你

1.2K20

学习算法三个阶段

大家,最近在知乎里看到了一个很不错问题,叫做你编程能力从什么时候开始突飞猛进?正好最近很多同学咨询我关于算法方向成长以及突破问题,今天就和大家聊聊这个话题。...我们仔细往下挖还能挖出一大堆问题,为什么说工业界和学术界脱节呢,原因就在这。工业应用一系列限制,非常麻烦。...之后一点不知道往哪里走了,很多人到这时候就想着要么慢慢熬着谋求晋升,要么跳槽获取更好待遇了。这个阶段最大问题就是心态膨胀、根基不稳,实力配不上野心。...还有些人在大公司呆过两年,就以为自己可以指点江山了,但一问细节,全是糊涂账…… 把工作当中手上事情吃透,眼前这个山头占领下来之后,不要膨胀,这只是刚刚开始。...知其所以然 很多老算法经常会挂在嘴上一句话就是理解业务、理解业务、还是TMD理解业务。我之前每次听到时候都很奇怪,业务什么理解,不就是推荐商品给用户么?

63450

美团一面:项目中有 10000 个 if else 如何优化?想了半天,被问懵了!

大家,我是R哥。 最近做 Java 面试辅导,个兄弟面试美团,遇到一个特别有意思问题: 一万个 if else 如何优化,解决方案吗?...很显然,面试官考察不是一般八股文,这个问题可以看作是一道场景题,它考察一个程序员在面对复杂逻辑判断时优化能力,也是在考察一个程序员临场发挥技术能力。...使用策略模式确实可以提升代码优雅性,但也会存在以下问题: 如果是大量 if else 分支,比如这 1 万个,那就会有 1 万个策略类,此时就会造成类膨胀,并且随着时间推移逐渐变得更加庞大而复杂。...这里使用是线程异步执行案例,还可以把要执行逻辑代码存储在其他类、数据中,然后再用反射或者动态编译方式加载进去并执行。...MySQL 索引为什么选用 B+Tree 作为数据结构? MySQL 自增 ID 如果用完了,怎么样? 了多线程,为什么还要消息队列? ......

9310

赢了面子,输了里子,缓存就是个面子

在数据写到 PageCache 中后,它并不是同时就写到磁盘上了,这中间是一个延迟。操作系统可以保证,即使是应用程序意外退出了,操作系统也会把这部分数据同步到磁盘上。...所以综观一下,引入缓存,主要是两方面的理由: 1.缓解CPU压力:把运算结果存储起来,节省CPU算力2.缓解IO压力:把原本对网络、磁盘等慢介质读写访问变为对内存等快介质访问。...但那就更复杂了,简单方案可以几种选择: 1.操作缓存失败,直接回滚数据,返回失败:想想真如果这么干,首先系统可用性大大降低,其次代码是什么样,挑战极大。2.重试:用户无感,系统重试。...类似于解决主从本身问题可以等待slave同步完数据,延迟再删除一次缓存。 只是这个延迟间隔,需要依据master slave同步间隔。...3、Cache-Aside模式可以几乎完美解决单体架构下并发带来问题。 4、在主从数据模式下,Cacahe-Aside模式需要延迟双删方案,解决一致性问题

57820

测试之路------Markov平台环境搭建踩坑记

然后我们去在本地数据去创建下,我们数据,因为我使用mysql5.7版本,所有报错,sql 语句报错 ? 去掉这两个内容应该可以创建我们数据了。...然后会告诉你基于什么算法推荐,然后你可以根据推荐算法用例,查看,然后批量选择进行使用,就可以进行保存 ? 这是我筛选后选择用例 ? 点击智能用例生成。选择测试用例 ?...选择用例后,我们还可以进行用例膨胀操作。 ? 可以选择用例膨胀组合,然后进行后台膨胀, 我们可以根据膨胀产生用例,选择使用保存 ?...保存后用例,我们可以进行执行 ? 执行后测试报告。 上面的只是大概讲述了,我去简单搭建过程中遇到问题,以及搭建过程中一个尝试过程。...后续很多功能,还有待探究,主要搭建过程,简单试用。具体后续使用,我们还要继续探究。 关于智能化内容我们可以查看。里面讲述内部算法实践

92830

在 Kubernetes 之前学习 12 Factor 应用

译者和这个作者心有戚戚焉,确实很想告诉别人,这个很重要,但不好表达,而这个 12 factor 理论说出了我们很多想法。不管使用何种管理工具,12 factor 都可以让云原生之旅更顺畅。...我最初接触容器经历是在一家公司,他们以各种错误方式实现了容器。例如,他们在容器内运行数据,并没有使用外部卷进行存储。...你没看错:他们将数据库存储写入 aufs 文件系统中,这不是为长期存储设计,并且非常缓慢。当我提到这是一个可怕想法,因为我们可能失去所有数据时,答案是:“我们正在做快照备份,所以没问题。...为什么要学习 12 factor 应用 12-factor 应用方法是一组构建容器化应用程序最佳实践。 Heroku 于 2011 年引入了这些实践,此后它们已被全球软件开发团队广泛采用。...内部开发人员平台通常利用容器编排并将服务运营转移给开发人员,这意味着卓越运营对于缓解上述所有问题至关重要。

7710

Java编程常见问题汇总

优秀程序员应该有什么特征 特征 说明 兴趣 也可以说好奇,保持对计算机相关领域兴趣甚至是激动,这是一个程序员原动力 方法 优秀的人一半是因为方法或者习惯,如何学习、反思、总结、归纳 逻辑...是否掌握语言各种高阶特性? 复杂到看不出问题还是简单到明显没有问题? 熟悉git吗?熟悉svn吗?他们原理如何?最佳实践呢?...设想一下:假设你回头15年前,但是你记忆都保留(彩票号码当然你得忘记掉),你对这15年规划是否更加合理? 学科通常都是成体系,对一个学科要认识更深,没有办法,只有认识更全面才可以。...大数据相关技术:存储、挖掘、分析 4. 掌握基础:计算机体系结构、操作系统原理、数据结构与算法、编译原理、计算机网络、数据原理 关于程序员信息来源,也有几个建议: 1....谦虚也可以自信,不要自负就好。 实践 其实这只是变为优秀程序员一个步骤而已,根据我观察,多数人学习编程时死在了这个山头。

64170

对优秀程序员思考

优秀程序员应该有什么特征 特征 说明 兴趣 也可以说好奇,保持对计算机相关领域兴趣甚至是激动,这是一个程序员原动力 方法 优秀的人一半是因为方法或者习惯,如何学习、反思、总结、归纳 逻辑...是否掌握语言各种高阶特性? 复杂到看不出问题还是简单到明显没有问题? 熟悉git吗?熟悉svn吗?他们原理如何?最佳实践呢?...设想一下:假设你回头15年前,但是你记忆都保留(彩票号码当然你得忘记掉),你对这15年规划是否更加合理? 学科通常都是成体系,对一个学科要认识更深,没有办法,只有认识更全面才可以。...大数据相关技术:存储、挖掘、分析 4. 掌握基础:计算机体系结构、操作系统原理、数据结构与算法、编译原理、计算机网络、数据原理 关于程序员信息来源,也有几个建议: 1....谦虚也可以自信,不要自负就好。 实践 其实这只是变为优秀程序员一个步骤而已,根据我观察,多数人学习编程时死在了这个山头。

51410

【开源公告】腾讯织云Metis智能运维学件平台正式开源

:经 API 检测后时间序列(仅异常)入库存储,提供管理功能,分页查询、检索、放缩等 标注打标:提供标注打标的功能,标记/取消标记为正负样本,标记后样本入样本 样本管理:提供样本管理功能,检索、图示...效率提升:基于自然语言处理、机器学习技术,进行智能问答、智能变更、智能决策,可显著提升运维效率。如 Metis 智能咨询机器人、舆情监控、集群智能负载均衡、数据参数调优、容量预测。...本次 Metis 率先开源无阈值智能监控学件,是从无监督+监督学习角度来解决时序数据智能检测问题。...这个过程就摒弃了阈值方式带来问题。 通用模型:智能检测模型由腾讯织云多元化海量业务样本训练而成,比较适合复用在互联网行业时间序列检测中。...规则学习:实践过程中也遇到较个性业务场景,千人千面,不同用户对异常判断标准也不尽一致,因此支持标注反馈功能,用户可根据标注信息进行训练,生成新检测模型,进而掌握新业务规则。

3.7K30

新手学Linux(二)----使用 Vagrant 打造跨平台开发环境(一)

使用这个帐号,开发者可以在一定限度内配置自己开发环境、完成编码、进行测试并完成向开发团队代码代码推送。...小张在自己机器上辛苦完成了一项功能开发,通过了本机上各项测试,高高兴兴向团队代码提交自己工作成果。心想终于可以放松一下了。“是不是可以买一只机械键盘犒劳一下?晚上和伙伴们出去聚会吧!...,老王是QA小组测试负责人,他面色凝重问小张,“咱们就要发布一个新代码版本了。这个时候你代码出问题,可能影响代码发布。要不你赶紧看看?明天上午能修复吗。我们测试报告和测试规范在这里”。...这样,在提交代码之前,开发这就可以在虚拟机上完成”生产环境“验证。自然可以解决上面的问题了。...开发者可以随心所欲决定什么时候想“服务器”端发布程序,什么时候在“服务器”端进行必要测试,而丝毫不用担心影响生产环境服务器稳定运行。

64420
领券