- 博客(22)
- 收藏
- 关注
原创 终于找到响应速度最快的云服务DeepSeek了!
DeepSeek确实炸裂,但是用了官方总是用几论对话就限流了,总是提示服务器繁忙,不太舒服。于是作为程序员,肯定要找替代品,提高速度,经过我几天的摸索,我发现几乎所有主流云服务器都集成了deepseek大模型,只需要申请个账号和api-key就可以使用了,现在各大云服务商都有一定的免费额度。怎么用?其实很简单,使用开源chatbox 对话软件,他支持配置openAI通用格式的第三方大模型服务。
2025-02-22 21:12:45
1295
原创 AI大模型DeepSeek总是服务器繁忙?一文教你使用Ollama本地部署DeepSeek并流畅使用
一文教你本地使用Ollama本地部署AI大模型DeepSeek,可离线流畅使用!!!
2025-02-10 00:42:59
776
原创 android stuido的gradle的Dependencies任务源码在哪里?
2、搜索DependencyInsight 任务名可以定位到源码目录,可以知道对应的DependencyReportTask。3、源码阅读依赖是怎么构建出来的,由抽象类AbstractDependencyReportTask完成解析配置构建出依赖树。如图所示,Dependencies任务点一下执行就会输出整个APP的依赖树,那么,他的源码在哪里呢?1、首先,你要导入gradle相关的所有源码到工程依赖里面,见我的前一篇文章。
2024-10-27 11:27:39
362
原创 android studio如何查看gradle编译框架的源码
把所有jar包拷贝出来,包括plugins目录下的jar包,一起复制到app/src/lib目录下面,注意要放到一级目录libs下,不要有文件夹。sync一下gradle,就可以看gradle包括android插件的所有项目源码了。二、把 gradle版本的工程jar包导入到app/src/libs目录下。就可以愉快地查看源码了,索引基本都在,都可以索引到打开。写在app/build.gradle的依赖里面。去找到gradle框架主库的缓存,我的是在路径。gradle相关的依赖就导入了项目中。
2024-10-25 14:28:23
365
原创 Android Gralde本地缓存依赖导入maven本地仓库
1、android 项目的使用的gradle构建系统,下载的依赖通常在保存在C:\Users\Administrator\.gradle\caches\modules-2\files-2.1。2、在app/build.gradle添加一个copy任务,去掉随机字符串的父目录,拷贝到maven本地仓库目录下。但是这种形式的依赖文件通常都是放在一个随机字符串的父目录上,aar、pom、source、jar包都是。3、sync同步,左边会有个绿色三角箭头,点击运行,选择第一个,执行这个任务即可。
2024-10-23 10:34:44
491
原创 解决webview TOP崩溃Render process (7110)‘s crash wasn‘t handled by all associated webviews, triggering
反编译APK发现,有很多第三方SDK的webview也有这个问题,特别是广告SDK,那么想要彻底解决此问题,需要重写全部第三方SDK的代码,重写他们的webviewClient子类的。可以知道,谷歌提供了一个方法回调onRenderProcessGone来处理渲染进程退出,默认是false,坑啊,false是会杀app进程退出。分析:此问题是webview渲染崩溃引起,如果发生了webview渲染崩溃,则会触发进程崩溃。上线结果,APP崩溃率下降了70%,还是会崩溃上报。参考谷歌 issure。
2024-10-18 11:16:28
2998
原创 深入源码分析 kotlin的CoroutineExceptionHandler机制
启动一个协程,然后内部启动子协程,那么最内层如果发生异常,是怎么传递异常的?反编译源码可得以下代码,看一下是怎么传递的。
2024-09-30 00:23:05
1290
原创 Kotlin的CoroutineExceptionHandler 使用的大坑
kotlin协程的异常传播体系具有独特性复杂性,本人写代码调试验证,传播规则如下。
2024-09-29 18:22:23
479
1
原创 解决新版本android studio断点调试debug卡慢问题
卡顿原因是debug默认模式是整个APP包括dual(java+native) ,调试native会导致非常严重的卡顿,这个是android studio高版本的bug,目前没看到解决。因此我们平时开发只需要用java,没必要调试native,所以我们需要修改配置。3.1 从默认的app修改为use default settings。3.2 再选择debugType,选择 java only。最终配置如下,这样最终解决问题。
2024-09-25 09:50:58
2199
原创 SwipeBackLayout递归崩溃分析ViewGroup.resetResolvedLayoutDirection
这里我们就明白了,出现递归的原因是如果添加的是自己,这里会获取到自己View child,又调回ViewGroup.resetResolvedLayoutDirection,在这个方法无限递归,直到 Fatal Exception: java.lang.StackOverflowError。关注,表示布局如果是继承的,则重置rtl 属性,主要是处理左右布局方向。阿拉伯国家是从右到左布局,跟我们是反的,所以谷歌引进了这个rtl属性进行管理布局方向。解决办法:在添加view的时候,检查,禁止添加自己。
2024-09-09 12:02:46
1019
原创 suspendCoroutineUninterceptedOrReturn函数的实现原理
kotlin编译器如下方法,在编译时会把contract契约声明解析成生成 block.invoke(continuation) 字节码调用,内联插入调用的地方。比原有的方法多了一个Continuation $completion参数,这玩意就是编译器干的活,根据上面的契约声明,把block函数内联调用优化到一个函数去。比较弯弯绕绕,需要kotlin反编译去看,以及结合编译器,有兴趣可以去了解kotlin的编译器,都是开源的。
2024-09-05 00:09:41
432
原创 RxJava源码简单分析
source就是我们传递进来的实现ObservableOnSubscribe的逻辑,然后由我们调用Emitter的.next,这里就是 CreateEmitter.next,最后调用到LambdaObserver.next方法,执行回调函数。LambdaObserver代理了onNext, onError, onComplete, onSubscribe四个基本函数接口实现。核心启动方法 subscribeActual(observer);他实现了 subscribeActual方法。
2024-08-19 15:12:45
238
原创 kotlin启动协程源码分析
IntrinsicsKt.createCoroutineUnintercepted 创建一个不拦截执行的Continuation,基中$this$startCoroutineCancellable是编译期生成的代码function2传入的。由上面可知传进来的是 CoroutineStart.DEFAULT,内部有个invoke方法,CoroutineStart是个枚举值,这里的值是1,会执行。//3&2 = 0011 & 0010 = 0010 = 2 不为0,则为RESUMED 支持恢复执行。
2024-08-11 15:34:18
1044
原创 谷歌Android增量文件系统incfs(Incremental File System )
Incremental FS(IncFS)是谷歌在2019年提出的一个计划用于Android应用下载更新的文件系统[2]。IncFS不允许直接写入文件,并且追加写后的内容也永不改变。它允许在大型Android应用程序的二进制文件和资源没有完全加载到Android设备上之前运行。如果应用读取的内容尚未加载,它需要等待数据块被提取,但是在大多数情况下是热块可以预先加载,并且应用程序几乎可以立即流畅运行。
2024-07-29 22:26:59
1117
原创 Window 10 使用WSL2下载编译Android 10 系统源码,并用sourceInsight 4 看系统源码
一、Window 10 安装WSL2安装教程来自微软官网:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10步骤 1 - 启用适用于 Linux 的 Windows 子系统需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。以管理员身份打开 PowerShell 并运行:PowerShell复制dism.exe /online /ena.
2021-07-25 17:52:58
5645
5
原创 低端机Arouter初始化耗时分析与优化
Android 项目中用到了阿里开源路由框架 https://github.com/alibaba/ARouter但是低端机首次安装启动发现耗时比较长,那么我们分析一下原因,read thd fuck source code初始化逻辑:ARouter.init方法 /** * Init, it must be call before used router. */ public static void init(Application application)...
2021-06-29 01:41:49
1929
原创 Activity配置android:multiprocess=“true“ 作用?
最近看腾讯开源的插件化框架shadow,发现宿主的Activity容器配置了android:multiprocess="true" 这个属性有什么作用? <activity android:name="com.tencent.shadow.sample.plugin.runtime.PluginDefaultProxyActivity" android:configChanges="mcc|mnc|locale|touc...
2021-06-27 17:10:12
2656
1
原创 tag requires a 'drawable' attribute or child tag defining a drawable 错误解决
开发过程中出现错误 android.view.InflateException: Binary XML file line #48: Binary XML file line #48: Error inflating class TextView
2017-10-11 15:30:54
951
原创 学习Java 泛型 Type体系
最近在看retrofit2源码,框架的大致原理就是在okhttp的基础上利用注解和动态代理自动生成okhttp的request,抽象地理解就是利用注解表示请求体。在源码中看到里面有很多Java泛型,通过反射去获取泛型信息。如果说要看懂反射的泛型代码,那必须对泛型有足够的了解,其中Java 泛型 Type体系可是重中之重。Type体系中Type接口是最顶层接口,用于表示JAVA的类型,包括 raw t
2017-07-14 15:30:10
573
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人