- 博客(203)
- 资源 (5)
- 收藏
- 关注
原创 股票最大利润
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)
2022-02-24 09:33:15 355
原创 啤酒与饮料
啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。
2022-02-24 09:27:28 147
原创 给你一个长度为n的数组,其中有一个数字出现的次数至少为一半,找出这个数字
给你一个长度为n的数组,其中有一个数字出现的次数至少为一半,找出这个数字
2022-02-17 15:13:28 510
原创 求整型数组中所有子数组的和的最大值
输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)
2022-02-17 15:10:41 442
原创 输入一个递增排序的数组和一个数字s,在数组中查找两个数,得它们的和正好是s。如果有多对数字的和等于s,输出任意一对
输入一个递增排序的数组和一个数字s,在数组中查找两个数,得它们的和正好是s。如果有多对数字的和等于s,输出任意一对
2022-02-15 10:39:01 1099 2
原创 LeakCanary2.7源码分析
文章目录简介1、LeakCanary的启动及初始化源码查看1.1 leakcanary-object-watcher-android AndroidManifest.xml中定义contentProvider1.2 AppWatcherInstaller.kt 中onCreate()2、内存泄漏检测怎么实现的2.1 ActivityWatcher2.2 FragmentAndViewModelWatcher2.3 RootViewWatcher2.4 ServiceWatcher3、流程图参考:简介本
2021-10-27 16:02:47 552
原创 LeakCanary 使用及原理分析
一、基础1、添加依赖dependencies { // debugImplementation because LeakCanary should only run in debug builds. debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'}2、基本原理2.1 什么是内存泄漏在基于Java的runtime状态下,内存泄漏是一种变成错误,导致应用保留对无用对象引用,从而引起内存无法回收,导致O
2021-10-20 14:18:46 1455
原创 ViewModel源码分析
Activity中ViewModel实例的获取private val mViewModel: DataTestViewModel by viewModels()可见viewModel的获取是通过viewModels代理类实现的,我们继续跟进通过代码查看,我们看到viewModels实际上是ComponentActivity的一个内联扩展方法@MainThreadinline fun <reified VM : ViewModel> ComponentActivity.viewMo
2021-09-30 16:50:53 371
原创 LiveData核心源码解析
1、setValue()在主线程调用用于为LiveData设置数据,同时向活跃的observers发送状态变更通知 /** * Sets the value. If there are active observers, the value will be dispatched to them. * <p> * This method must be called from the main thread. If you need set a value fr
2021-09-14 15:57:00 220
原创 LiveData与ViewModel基础使用篇
一、基本概念1、LiveData1.1 LiveData 简介LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。2、LiveData 优势确保界面符合数据状态LiveData 遵循观察者模式。当底层数据发生变化时,LiveData 会通知 Observer 对象。可以整合代码以在这些 Observer 对象来更新界面。这样一来,无需在
2021-09-08 17:52:09 1968
原创 ConnectInterceptor 连接拦截器源码解析
源码查看/** * Opens a connection to the target server and proceeds to the next interceptor. The network might * be used for the returned response, or to validate a cached response with a conditional GET. */object ConnectInterceptor : Interceptor { @Thro
2021-08-24 18:25:17 237
原创 OkHttp4.9.0源码分析
通过前面的学习,我们已经对OKHttp有了简单的认识,并对使用有了详细的了解,下面我们将以一个同步Get请求为例进行OKHttp源码分析。一、基础同步Get请求 private val mUrl = "https://www.baidu.com" // 1、createClient private val mClient = OkHttpClient()// createClientTwoprivate val mClient2 = OkHttpClient.Builder().buil.
2021-08-09 11:02:35 828
原创 OkHttp日常使用实战篇
由于示例中使用的代码段都比较简单,详细的代码段以及响应日志都已经贴出,细节不再赘述。一、初始化1、初始化OkHttpClientval mClient = getOkClient()private fun getOkClient(): OkHttpClient { return OkHttpClient.Builder().addInterceptor(LogInterceptor()).build()}2、初始化Request private var mUrl2
2021-07-19 19:36:53 3066
原创 OkHttp中interceptors拦截器
OkHttp拦截器是一种强大的机制,可以监视、重写和重试调用1、LogInterceptor 示例代码class LogInterceptor:Interceptor { override fun intercept(chain: Interceptor.Chain): Response { val mRequest=chain.request() // startTime val startTime=System.currentTimeMi.
2021-07-13 16:05:19 633
原创 OkHttp中https处理
一、Https处理1、简介OkHttp试图平衡两个互相竞争的问题1)连接数 支持连接基于BoringSSL和OpenSSL尽可能多的host地址2)安全性 支持证书验证和数据传输加密在进行HTTPS服务器的连接时,OkHttp 需要知道要提供哪些TLS 版本和加密组件。想要实现最大化连接的客户端,会使用过时的 TLS 版本和弱性能加密组件。想要最大限度提高安全性的客户端将仅限于最新的 TLS 版本和性能最强的加密组件BoringSSLBoringSSL 是谷歌创建的
2021-07-13 15:57:35 2240
原创 OkHttp Events事件
1、EventsEvents允许捕获应用程序的HTTP调用的指标,可以使用事件来监控以下参数:应用发起的HTTP请求大小及频率请求在底层网络上的性能2、EventListener在没有经过重定向和重试的网络请求数据流程图:EventListener使用示例代码class OkEventListener : EventListener() { private val TAG = "tag" private var callStartTime: Long = 0
2021-07-07 14:09:36 1635
《重构 改善既有代码的设计》pdf版
2019-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人