刘望舒

其他

图解 Git 工作原理

如下所示)和另一个提交(33104)以及他们的共同祖父节点(b325c)进行一次三方合并[4]。结果是先保存当前目录和索引,然后和父节点33104一起做一次新提交。Cherry
2023年3月30日
其他

京东三面:怎么给详情页做性能优化的?

原文地址:https://toutiao.io/posts/0kwkbbt一、背景针对老项目,去年做了许多降本增效的事情,其中发现最多的就是接口耗时过长的问题,就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。二、接口优化方案总结1.批处理批量思想:批量操作数据库,这个很好理解,我们在循环插入场景的接口中,可以在批处理执行完成后一次性插入或更新数据库,避免多次IO。//批量入库batchInsert();2.异步处理异步思想:针对耗时比较长且不是结果必须的逻辑,我们可以考虑放到异步执行,这样能降低接口耗时。例如一个理财的申购接口,入账和写入申购文件是同步执行的,因为是T+1交易,后面这两个逻辑其实不是结果必须的,我们并不需要关注它的实时结果,所以我们考虑把入账和写入申购文件改为异步处理。如图所示:至于异步的实现方式,可以用线程池,也可以用消息队列,还可以用一些调度任务框架。3.空间换时间一个很好理解的空间换时间的例子是合理使用缓存,针对一些频繁使用且不频繁变更的数据,可以提前缓存起来,需要时直接查缓存,避免频繁地查询数据库或者重复计算。需要注意的事,这里用了合理二字,因为空间换时间也是一把双刃剑,需要综合考虑你的使用场景,毕竟缓存带来的数据一致性问题也挺令人头疼。这里的缓存可以是R2M,也可以是本地缓存、memcached,或者Map。举一个股票工具的查询例子:因为策略轮动的调仓信息,每周只更新一次,所以原来的调接口就去查库的逻辑并不合理,而且拿到调仓信息后,需要经过复杂计算,最终得出回测收益和跑赢沪深指数这些我们想要的结果。如果我们把查库操作和计算结果放入缓存,可以节省很多的执行时间。如图:4.预处理也就是预取思想,就是提前要把查询的数据,提前计算好,放入缓存或者表中的某个字段,用的时候会大幅提高接口性能。跟上面那个例子很像,但是关注点不同。举个简单的例子:理财产品,会有根据净值计算年化收益率的数据展示需求,利用净值去套用年化收益率计算公式计算的逻辑我们可以采用预处理,这样每一次接口调用直接取对应字段就可以了。5.池化思想我们都用过数据库连接池,线程池等,这就是池思想的体现,它们解决的问题就是避免重复创建对象或创建连接,可以重复利用,避免不必要的损耗,毕竟创建销毁也会占用时间。池化思想包含但并不局限于以上两种,总的来说池化思想的本质是预分配与循环使用,明白这个原理后,我们即使是在做一些业务场景的需求时,也可以利用起来。比如:对象池6.串行改并行串行就是,当前执行逻辑必须等上一个执行逻辑结束之后才执行,并行就是两个执行逻辑互不干扰,所以并行相对来说就比较节省时间,当然是建立在没有结果参数依赖的前提下。比如,理财的持仓信息展示接口,我们既需要查询用户的账户信息,也需要查询商品信息和banner位信息等等来渲染持仓页,如果是串行,基本上接口耗时就是累加的。如果是并行,接口耗时将大大降低。如图:7.索引加索引能大大提高数据查询效率,这个在接口设计之出也会考虑到,这里不再多赘述,随着需求的迭代,我们重点整理一下索引不生效的一些场景,希望对小伙伴们有所帮助。具体不生效场景不再一一举例,后面有时间的话,单独整理一下。8.避免大事务所谓大事务问题,就是运行时间较长的事务,由于事务一致不提交,会导致数据库连接被占用,影响到别的请求访问数据库,影响别的接口性能。举个例子:
2023年3月6日
其他

厉害,最优雅的Android列表项可见性检测!

编程。另外判定可见的方式是通过对比面积,这样就避免了对横竖列表的分类讨论,简化了实现复杂度。最后该扩展方法除了向上层回调表项可见之外,还回调了不可见,以丰富上层的使用场景。上述方案会有一个例外
2023年3月6日
其他

面试官:实现异步的8种方式,你知道几个?

来源:juejin.cn/post/7165147306688249870一、🌈前言❝异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:「发送短信、邮件、异步更新等」,这些都是典型的可以通过异步实现的场景。❞二、异步的八种实现方式线程ThreadFuture异步框架CompletableFutureSpring注解@AsyncSpring
2023年3月3日
其他

Android Framework 一学就"废"!

很多开发者都对目前内卷到飞起的环境叫苦连天,在突破内卷这件事儿上,有一些开发者把目光对准了车企:智能座舱、车载系统,看起来貌似是不错的方向。那么想要成功转型,最需要掌握的技术有什么呢:很明显转型到车企需要熟悉Framework层,我们再来看看App开发的招聘需求:想不到吧!不管你是继续在App开发中一卷到底,还是想转型到车企,都逃不过Framework相关知识点。很多人搞了多年的App开发,技术仍旧停留在应用层,不断的重复画界面,只研究界面相关的技术,殊不知安卓开发的核心实际上是Framework。目前皇叔开了个训练营,里面就有很多Framework的知识点,大部分内容都是中大厂经常问到的面试题,帮助大家快速提升的同时,还能找到满意的工作。在我佛系的推广下,也有不少同学加入了,有来自华为、阿里等大厂的同学,也有来自复旦大学计算机相关专业的在读研究生。感谢大家的支持,我会尽力把这个训练营办好。下面我以问答的形式总结了一些高频提问,有疑惑或者还在犹豫的同学可以通过这篇文章更好的了解训练营的课程以及优势。1.
2023年3月3日
其他

厉害了,Kotlin 协程能完全取代 RxJava?

回调的需要。我们可以像在普通代码中那样捕获错误或设置协程异常处理程序。并且,考虑到当挂起函数完成时,协程继续按顺序执行,我们可以在下一行继续编写我们的“完成逻辑”。值得注意的是,当我们进行调用
2023年2月23日
其他

我,985毕业,40岁码农,还在荷兰写低级代码,不敢回国…

万赞了!每篇文章图文并茂,附有源码。还有电子书合集如果你想获得完整PDF可以通过以下方式获得资料获取方法扫描下方二维码关注即可领取在后台回复关键词002明天见(。・ω・。)
2023年2月23日
其他

第 3 次面腾讯,竟然栽倒在幂等性上

次栽倒在腾讯面试上了,也许就是没有缘分吧。大家都知道,如果面试仅仅是20分钟,那基本就说明挂了,面试官给20分钟只是在凑时间,给面试者面子,免得留下敷衍的印象。那么,究竟什么是幂等性?
2023年2月22日
其他

在两个商业App中使用MVI后,我......

}}例子较为简单,在实际项目中,如果遇到复杂页面,则可以分块进行处理。注意:实际情况中,并没有必要将每一个子数据源拆分到一个View级别的控件,那样过于啰嗦,例子因非常简单而无法丰满起来。e.g.
2023年2月22日
其他

动态可监控线程池,你还没用起来吗?

做一些扩展增强,主要实现以下目标」1.实现对运行中线程池参数的动态修改,实时生效2.实时监控线程池的运行状态,触发设置的报警策略时报警,报警信息推送办公平台3.定时采集线程池指标数据,配合像
2023年2月16日
其他

Android阴影实现的几种方案,你知道几种?

自定义圆角ViewGroup中加入阴影之前我们已经定义好了自定义圆角的ViewGroup容器,我们是通过Paint自己绘制的。这不是巧了吗!我们通过另一个阴影的Paint去添加
2023年2月16日
其他

ULID - 一种比UUID更好的方案

1))根据现有的随机数创建一个新的ULID。支持随机值类型有int,float,str,bytes,bytearray,memoryview,Randomness,和ULID。>>>
2022年12月30日
其他

年末热点技术大盘点,2023年移动开发之路新走势!

随着Android的发展,有些人对Android未来感到茫然,不少人可能会产生这样的疑惑:“从事Android是不是没有前途,Android开发还有什么值得学?“这类话题一直让大家争论不休,它并没有一个确切、唯一的标准答案,你认为自己的答案是对的,那它就是对的,每个人所处的环境和项目需求不同,每个人给出的答案也一定是有切身原因的。但是从Android发展至今的趋势来看,2023年移动开发下列内容一定是被高频列举出的答案:Flutter为跨平台开发而生的集大成者,从0到Flutter3.3,堪称最美UI跨平台应用框架,如果想成为多端开发的全能武士,那么Flutter一定是你的必修课。Kotlin开发语言的更新换代,都是为了更好地提高生产力,Kotlin也是如此,Kotlin+协程已经让我们在网络编程中体会到了它的过人之处,是安卓开发必须要掌握的开发语言。Compose声明式UI的典型代表,告别繁冗的代码,重新定义了Android
2022年12月30日
自由知乎 自由微博
其他

Linux 最常用命令:能解决 95% 以上的问题

命令打开文件后,则进入命令模式,用户可以输入命令来执行各种功能。输入模式如果用户要对文件做修改,则可以使用下面几种命令,进入输入模式,用户进入输入模式之后,可以任意修改文件,除了
2022年12月29日
其他

Flutter 在字节跳动的探索与实践

技术在图片业务的总结精彩看点业务开发人员能够了解图片业务的哪些问题是可以解决的引擎开发人员能够了解某些优化的方向和技术讲师信息曾锦和
2022年12月29日
其他

换掉 VMware?轻量级虚拟机,横空出世!

https://releases.leanapp.cn/leancloud/lean-cli/releases/download/v0.21.0/lean-cli-x64.deb
2022年12月28日
其他

谈一谈在两个商业项目中使用MVI架构后的感悟!

}}例子较为简单,在实际项目中,如果遇到复杂页面,则可以分块进行处理。注意:实际情况中,并没有必要将每一个子数据源拆分到一个View级别的控件,那样过于啰嗦,例子因非常简单而无法丰满起来。e.g.
2022年12月28日
其他

微软 GitHub 低调发布:Windows 11 支持最新的 Android 13

平台。不过对于微软的步步兼容,也让不少人对它的“野心”产生了怀疑。有网友称,“这看起来确实像是微软在尝试创建一个统一的平台来统治其他系统,或许微软的长期目标是让不同派系都能够运行在
2022年12月27日
其他

Android中一直存在、一直被忽略的功能!

ids)sendBroadcast(updateIntent)这种方式的本质就是发送更新的广播,除此之外,还可以使用AppWidgetManager来直接对Widget进行更新,代码如下。val
2022年12月27日
其他

是时候了解Hook技术了!

App,下载后按照提示傻瓜式安装(前提是root手机)。其实它的安装过程是这个样子的:首先探测手机型号,然后按照手机版本下载不同的刷机包,最后把Xposed刷机包刷入手机重启就好。刷机包下载
2022年12月14日
其他

Android 子线程 UI 操作真的不可以?(建议收藏)

安卓进阶涨薪训练营,让一部分人先进大厂大家好,我是皇叔,最近开了一个安卓进阶涨薪训练营,可以帮助大家突破技术&职场瓶颈,从而度过难关,进入心仪的公司。详情见文章:没错!皇叔开了个训练营作者:vivo
2022年12月14日
其他

字节一面,面试官拿 System.out.println() 考了我半个小时?我懵逼了...

万赞了!每篇文章图文并茂,附有源码。还有电子书合集如果你想获得完整PDF可以通过以下方式获得资料获取方法扫描下方二维码关注即可领取在后台回复关键词002明天见(。・ω・。)
2022年12月12日
其他

厉害了!仿QQ拖拽效果

}}这段代码很简单,都是一些基础api的调用,辅助圆的作用:当大圆超出辅助圆范围的时候,大圆得“爆炸”,如果大圆未超出辅助圆内的话,大圆得回弹回去~主要就是起到这样的作用.大圆动起来override
2022年12月12日
其他

这些重要的 Fragment API 均已废弃,尽早替换起来吧~

requestPermission.launch(permission.BLUETOOTH)}request_multiple_permission.setOnClickListener
2022年12月7日
其他

面试官:在 Java 中 new 一个对象的流程是怎样的?

来源:blog.csdn.net/qq_16887951/article/details/115872678对象怎么创建,这个太熟悉了,new一下(其实还有很多途径,比如反射、反序列化、clone等,这里拿最简单的new来讲):Dog
2022年12月7日
其他

为什么各大厂自研的内存泄漏检测框架都要参考 LeakCanary?因为它是真的强!

"/storage/emulated/0/Download/leakcanary-com.pengxr.helloleakcanary/2022-08-22_18-47-28_674.hprof"
2022年11月16日
其他

从阿里跳槽来的工程师,写个try catch的方式都这么优雅!

作者:巨人大哥链接:cnblogs.com/jurendage/p/11255197.html背景软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try
2022年11月15日
其他

Android 打造炫酷的桌面小部件!

bitmap才是像素真正的载体,Canvas只是一个光栅画布,我们花里胡哨的操作都最终会储存在bitmap上并设置到视图部件上。于是我们先绘制一条线?感受一波是否可行。private
2022年11月15日
其他

vivo客户端:全机型UI适配方案!

全机型适配成本高在哪上面的案例其实只是表面的问题之一,作为开发人员,需要考虑的因素有很多,首先要想到这些机型有什么特点:然后才是需要解决的问题:三、寻找全机型适配方案之旅3.1
2022年11月14日
其他

CTO说: 谁再用 Calendar 处理时间,一律领盒饭

万赞了!每篇文章图文并茂,附有源码。还有电子书合集如果你想获得完整PDF可以通过以下方式获得资料获取方法扫描下方二维码关注即可领取在后台回复关键词002明天见(。・ω・。)
2022年11月14日
其他

ping 命令还能这么玩?

说实话,我以为ping就仅仅用来判断网络通不通,哈哈哈哈~作者:Pheenet菲尼特https://www.toutiao.com/a6783191796659782148有朋友反映,能不能讲下
2022年11月11日
其他

车载开发是风口?Android开发的下一站是这里吗

2022年以来,疫情冲击、地缘政治冲突两大不利因素叠加,导致今年互联网行业就业形势不太理想,“开源节流”的事情时有发生,Android开发者的就业形势也不算乐观。从去年开始有一些Android应用开发者跳转新赛道进入车载行业,却发现Android应用开发者在车载行业的处境并非那么简单,车载开发是否是风口?今天就分享一位Android应用开发工程师”跳入“车载行业,并成功拿到年薪60W+Offer的大佬访谈,带你深入了解。以下就是我们这位主人公马哥(化名),让我们了解下他加入车载行业的原因:很明显转型到车企需要熟悉Framework层,包括核心的服务、IPC机制、BInder原理、Native层等等。很多同学看到这里,可能打了退堂鼓,要不还是继续卷App开发算了,那我们再看看App开发的要求:想不到吧!不管你是继续在App开发中一卷到底,还是想转型到车企,都逃不过Framework相关知识点。很多人搞了多年的App开发,技术仍旧停留在应用层,不断的重复画界面,只研究界面相关的技术,殊不知安卓开发的核心实际上是Framework。目前皇叔刚开了个训练营,里面就有很多Framework的知识点,大部分内容都是中大厂经常问到的面试题,帮助大家快速提升的同时,还能找到满意的工作。在我佛系的推广下,也有不少同学加入了,有来自华为、阿里等大厂的同学,也有来自复旦大学计算机相关专业的在读研究生。感谢大家的支持,我会尽力把这个训练营办好。另外今天刚好是双十一,训练营自然是有一波优惠,这应该是今年最后一波比较大的优惠了。下面我以问答的形式总结了一些高频提问,有疑惑或者还在犹豫的同学可以通过这篇文章更好的了解训练营的课程以及优势。1.
2022年11月11日
其他

替代try catch处理异常的优雅方式

万赞了!每篇文章图文并茂,附有源码。还有电子书合集如果你想获得完整PDF可以通过以下方式获得资料获取方法扫描下方二维码关注即可领取在后台回复关键词002明天见(。・ω・。)
2022年10月28日
其他

面试官:正向代理与反向代理的区别是啥?又是一脸黑人问号

则直接由缓冲区中取出信息,传给用户,以提高访问速度。)过滤内容(可以通过代理服务器统一过滤一些危险的指令/统一加密一些内容、防御代理服务器两端的一些攻击性行为)三、反向代理3.1
2022年10月27日
其他

厉害了,一个解决滑动冲突的新思路,无缝嵌套滑动!

实现的嵌套滑动不够连贯,需要两次滑动操作。而真正的嵌套滑动应该是下面这样的效果,只需要一次滑动操作,滑动在父控件与子控件之间无缝的切换,一气呵成。要实现这样的效果,利用的是自
2022年10月27日
其他

细数 List 的10个坑,保证你一定遇到过!

前言今天我们主要来说一说List操作在实际使用中有哪些坑,以及面对这些坑的时候我们要怎么解决。Arrays.asList转换基本类型数组的坑在实际的业务开发中,我们通常会进行数组转List的操作,通常我们会使用Arrays.asList来进行转换但是在转换基本类型的数组的时候,却出现转换的结果和我们想象的不一致。上代码int[]
2022年10月19日
其他

别滥用FileProvider了,Android中FileProvider的各种场景应用 !

是标记我们这个ContentProvider的唯一标识,是一个用于认证的暗号,我们一般默认使用包名+fileprovider来定义。(能不能使用别的,可以,abcd都行,但是没必要)name
2022年10月13日
其他

Android 页面异步加载优化的几种方案

}完美实现了秒进复杂页面的功能。当然有同学说了,自己写的行不行哦,会不会太Low,好吧,其实官方自己也出了一个异步加载布局框架,一起来看看。二、AsyncLayoutInflater部分源码如下:
2022年10月10日
其他

别再写 main 方法测试了,太 Low!这才是专业 Java 测试方法!

测试项目构建JMH是内置Java9及之后的版本。这里是以Java8进行说明。为了方便,这里直接介绍使用maven构建JMH测试项目的方式。第一种是使用命令行构建,在指定目录下执行以下命令:$
2022年9月22日
其他

今年的金九银十好像消失了!

“投简历投到怀疑人生,面试面到崩溃”,最近有不少Android开发者吐槽今年的“金九银十”简直是一反常态,本该是人才市场最热闹的时间,今年却似乎很冷清,甚至屡屡有“大厂裁员”的消息冲上热搜。很多人吐槽说,今年的求职路漫漫,不仅难,而且卷。但难道“金九银十”真的消失了吗?于是我看了下招聘网站,之前高薪招人的岗位还在招,并且薪资更高了虽说现在市场较饱和,需求不多,又正值裁员,供需严重失衡,但Andorid
2022年9月22日
其他

面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!

由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。时间片多任务系统往往需要同时执行多道作业。作业数往往大于机器的CPU数,然而一颗CPU同时只能执行一项任务,如何让用户感觉这些任务正在同时进行呢?
2022年9月21日
其他

分享一个 Kotlin 高端玩法:DSL!

this.addTextChangedListener(listener)}扩展函数与原函数同名可以方便使用者调用,无需记忆其他函数名,如果担心混淆,可以在函数名后加上
2022年9月21日
其他

从 JDK 8 到 JDK 18,Java 垃圾回收的十次进化

GC。一般来说,每次发布都会包含一些改进,减小垃圾回收在执行同样操作时的暂停时长。这样就会自然地改善吞吐量。还有许多可以写在本文中的改进,接下来我们在讨论延迟改进时会提到一些。与Parallel
2022年9月20日
其他

Android 13 返回导航大变更!

安卓进阶涨薪训练营,让一部分人先进大厂大家好,我是皇叔,最近开了一个安卓进阶涨薪训练营,可以帮助大家突破技术&职场瓶颈,从而度过难关,进入心仪的公司。详情见文章:没错!皇叔开了个训练营Android
2022年9月20日
其他

try catch真的会影响性能?居然被骗了好几年...

javac,它的优化更偏向于代码结构上的优化,它主要是为了提高程序员的编码效率,不怎么关注执行效率优化;例如,数据流和控制流分析、解语法糖等等。后端编译与优化:后端编译包括
2022年9月15日
其他

货拉拉 Android H5离线包原理与实践!

效能优化离线包和URL映射配置化image.png配置格式如下:主要通过url中的host、path、Fragment配置命中规则。根据接入方是否需要传入,不需要可以不传递。//匹配规则相关
2022年9月15日
其他

7款颜值yyds的 Linux 操作系统 !

Linux是一项稍微复杂的工作,但Manjaro却提供了更轻松,更流畅的Arch体验。它提供了多种桌面环境版本,供用户下载时选择。无论选择什么,用户仍然可以获得足够的选项来自定义外观和布局。KDE
2022年9月9日
其他

聊聊我认为的 "Kotlinic"

User.age至此本文差不多结束了,林林总总写了我一个多星期,感觉也是一个挺奇妙的过程。最后,如果你觉得我的内容还不错的话,欢迎点个赞,这对我帮助很大!为了防止失联,欢迎关注我防备的小号
2022年9月9日
其他

还在用 SimpleDateFormat 做时间格式化?小心项目崩掉!

万赞了!每篇文章图文并茂,附有源码。还有电子书合集如果你想获得完整PDF可以通过以下方式获得资料获取方法扫描下方二维码关注即可领取在后台回复关键词002明天见(。・ω・。)
2022年6月24日
其他

阿里强制 boolean 类型不能用 is 开头?

背景平时工作中大家经常使用到boolean以及Boolean类型的数据,前者是基本数据类型,后者是包装类,为什么不推荐使用isXXX来命名呢?到底是用基本类型的数据好呢还是用包装类好呢?例子1.其他非boolean类型
2022年6月21日