使用 RAGFlow 搭建一套 AI 客服知识库
网上一直有一种声音,叫做AI抢了大部分人的饭碗,同时也提供了大量的新的工作岗位。随着部署使用这次的 RAGFlow,就更加感受到了这一点。
网上一直有一种声音,叫做AI抢了大部分人的饭碗,同时也提供了大量的新的工作岗位。随着部署使用这次的 RAGFlow,就更加感受到了这一点。
体验了一下 Coze 的开源版本,相比商业版差太多了,准备放弃的时候刚好发现 RAGFlow 不需要 GPU 也可以跑,还只支持 x86,这不就是给我 NAS 空闲资源准备的吗
TheRouter 鸿蒙版是货拉拉基于HMRouter深度定制的开源路由框架,提供了 Android、iOS、Harmony 三端高一致性使用,在支持平台化应用实现组件化、跨模块调用、动态化等功能的集成等功能基础上,支持动态路由下发、编译时安全检查、路由Path一对多等高度动态能力。
文章围绕 TheRouter 的 AGP8 编译提速展开,指出 toTransform()方法编译慢且无法增量编译,提出多种解决思路,包括结合 AsmClassVisitorFactory 等,最终通过 toGet()方法、内存缓存及对比等优化,实现增量编译和保障产物结果。
最近新买了一个NAS,装个黑群晖,感觉可玩的还挺多。
这篇文章是我在 2022【GIAC 全球互联网架构大会】分享时所讲内容的文字版本,修改删减了演讲时的冗余言语,现开放给大家阅读,希望能给买不到票参加分享的 开源实验室 读者带来帮助。
路由是现如今移动端开发中必不可少的功能,尤其是企业级APP,可以用于将Intent页面跳转的强依赖关系解耦,同时减少跨团队开发的互相依赖问题。 TheRouter 是一整套完全面向模块化开发的解决方案,不仅能支持常规的模块依赖解耦、页面跳转,同时提供了模块化过程中常见问题的解决办法。
路由是现如今移动端开发中必不可少的功能,尤其是企业级APP,可以用于将Intent页面跳转的强依赖关系解耦,同时减少跨团队开发的互相依赖问题。 TheRouter 是一整套完全面向模块化开发的解决方案,不仅能支持常规的模块依赖解耦、页面跳转,同时提供了模块化过程中常见问题的解决办法。
5月开头,这周其实有两件大事:一件是俄罗斯胜利日大阅兵,大家关心的是普京会说些什么。西方觉得普京会对乌克兰宣战。因为这关系到三件事:这仗会不会打出乌克兰国界外;这仗会打到什么程度;这仗会打多久。 但事实证明,它们的格局太低了。普京的演讲,表明了俄罗斯的态度:要终结西方自从大航海时代以来500年的海洋霸权,尤其是近200年来的盎格鲁撒克逊人的霸权。 之前俄罗斯方面就这么宣称过,但红场阅兵不一样:在俄罗斯,它的收视率达到50%以上,这等于普京向全国人民正式宣布了。
蒙古成吉思汗这个大BUG,说大半个世界被他一锅端都不过分,当时突厥的古尔王朝还有一点残余势力,他们以印度河恒河流域的枢纽,从德里这个城邦为中心建立了一个伊斯兰化的邦国叫德里苏丹国。 但问题是这个国家它其实不算是个国家,因为他本身的就是四十几个阿富汗突厥贵族为了利益组成的一种诸侯联邦状态。这个状态就有点像我们的战国时期,各个诸侯表面上都说自己是周天子的子民,但实际上都自立为王。当时的德里苏丹国也是这样,内部矛盾很多,要不是印度土著擅长躺平,估计早就像陈胜吴广一样揭竿而起,干翻这个王国了。
凡是在朋友圈问我这个问题的,我基本上都是一句话:互联网没有增量了,多学点历史没坏处的。因为手机上解释的多了,我打字累,再加上别人也不一定愿意听,可能纯粹就是随便问一句。
于是大约在公元前800-600年,相当于中国的春秋时期。这时期印度内部各种各样的种族斗争,被称为列国时代,跟我们的战国时期很像。加上后面的波斯入侵,希腊入侵,孔雀王朝崛起,精彩程度丝毫不亚于我们的战国时期。
大约公元前800年-公元前100年,当时的印度有十六国,正处于列国时代,学术流派百家争鸣。耆那教并不是当时唯一反对婆罗门教的宗教。除了耆那教外,还有佛教、顺世派、不可知论派等等许多思想流派,它们被统称为沙门思潮。
前段时间在研究阿富汗的时候,特意了解了一下中东地区几个国家的历史,看着看着反倒觉得印度是个神奇的存在,因为整个印度的历史基本上就是印度的屈辱史,被各种民族各种国家入侵,然后关键他到现在还能活着。所以特意写一系列文章讲一讲。
最近一直在苦苦思考这个问题:会不会我们所说的某一天,永远都不会到来?
在Android 上,Kotlin 用灵活的语法封装出语言层面的协程(coroutine)新颖地解决了异步编程编码复杂的问题。本次分享将带领听众从一个小例子开始,更加深入,自顶向下的理解协程是什么,协程的本质与工作机制,动手设计出一个真正运行时的协程库
昨天把 gradle 升级到 6.0 以后,发现这傻逼的 google 又直接干 API,以前上报的全部脚本都没法用了。我们原先上报一个 aar,是直接引入。
在繁杂的项目中,日志打印必不可少。但是编写打印的工作,有时候是无趣的、繁琐的、浪费精力的。 如何能够快速、方便的编写打印;如何清晰、准确的定位;如何简单并优雅的实现;最后才能让我们摆脱这样枯燥的、重复的工作? 网上有很多强大的日志类工具,我也都使用过一些,有时候也并没有理想中的方便。今天我想分享给大家的一套我自己的解决方案。
奉劝大家一句:千万不要想不开跑去小公司,尤其是在大厂已经做到高P的,即便小公司给你的许诺更好。因为在小公司呆久了你会发现只可能有两种变化,要么脾气会变的越来越暴躁,要么整个人变得越来越佛系。
最近定了一些团队标准的东西,刚好聊到了 Git Flow 这个事,可以拿出来分享一下。
共有两种实现比较简单的方式。 第一种比较好理解,将一个控件的透明度设置成0,打到隐藏的目的。第二种办法是使用 SDK 自带的 Offstage 控件包裹。
Flutter 线性布局:Column 和 Row 的常用属性
开源一个批量压缩图片的脚本,支持文件夹递归,可选质量压缩和宽高比压缩,可选设置最大宽高和大小,纯shell脚本实现。
用一句话概括,本文讲的就是:怎样通过自己的专业深度,帮助公司和团队预测未来。 很多时候,之所以能够做到预测未来,无非是你掌握的信息比别人要多而已。
继我成功预言了 Kotlin 、Flutter 技术会火起来之后,我相信,下一个会火起来的技术是区块链。 1. 别抬杠,我 14 年开始玩 Kotlin,16 年开始玩 Flutter (虽然看了看实现原理觉得没啥屁用就放弃了)的时候,可能你还不知道这俩名词呢。 2. 别抬杠,我说的火起来的区块链技术是私链+合约(我不想提那俩字,我觉得智障更合适)。 3. 抬杠吧,反正我从来没玩过数字货币,我也不怕被割韭菜。
这篇文章是我在 2019【极光开发者大会】技术分享时所讲内容的文字版本,修改删减了演讲时的冗余言语,现免费开放给大家阅读, 希望能给买不到票参加大会的开源实验室读者带来帮助。
应用的构建速度会直接影响开发效率,本文将带您通过改造一个 Android 应用: “Google 追踪圣诞老人 (Google Santa Tracker)” 来为大家提供十个小技巧,帮助提升应用的 Gradle 构建速度,当我们应用了所有的小技巧之后,该演示应用的构建速度快了三倍以上。
再过几周,Android Q 正式版就要与大家见面啦!目前,Android 团队正在对平台进行最后的优化与调试。同时今天向各位开发者发布最后一个 Beta 测试版: Android Q Beta 6。
上周五,国外新闻网站 ZDNet 发表了一篇报道 GitHub与跟世界贸易摩擦国的程序员关系的文章 —— GitHub starts blocking developers in countries facing US trade sanctions(GitHub 开始阻止被制裁国的开发者使用)。
近日一名国外开发者(Balazs Saros,下简称 Balazs)在个人博客发表了一篇看似是在声讨中国开发者的文章,标题起得有点唬人 —— Chinese repos are ruining the Github trending page(中国的开源项目正在破坏 GitHub 榜单页)。
用一句话概括,本文讲的就是:怎样打造一个开发团队。
Libra的使命是建立一个简单的全球货币和金融基础设施,为数十亿人提供支持。 互联网和移动宽带的出现使全球数十亿人能够获得世界的知识和信息,高保真通信以及各种低成本,更便捷的服务。这些服务现在可以使用来自世界上几乎任何地方的40美元智能手机进行访问.1这种连接通过让更多人能够访问金融生态系统来推动经济赋权。通过合作,技术公司和金融机构也找到了有助于提高全球经济能力的解决方案。尽管取得了这一进展,但仍有大量世界人口落后 - 全球仍有17亿成年人不在金融体系之内,无法使用传统银行,即使10亿人拥有移动电话,近5亿人拥有互联网接入。
这其实是前几天看到 B 站代码被开源后的一个感想,为什么要冒这么大风险去做这事,活着不好吗?到底是 996 让你疯狂?还是不给涨薪还克扣工资?或者黑了你的蔡徐坤?鬼知道为什么会有这想法。 然后脑子里就冒出了一个更奇怪的想法,如果我要在代码里下毒,要怎么做?
最近在做 Server 开发,需要将一个内网的服务暴露出去,使其在家也能访问到。
从 Kotlin 1.3 开始,协程将进入稳定状态。此后不再会被标注为`experimental`,官方也会提供相应的工具帮助开发者完成迁移工作。 Ktor,这个库的 API 已经完善,期待大家的使用体验和反馈。Ktor 是一个基于协程的框架,使用它我们可以优雅的构建 Web 应用、Http 服务、移动应用和网页。
在一个新点子冒出来的时候,我们首先要甄别这个是什么级别的思考。如果只是把事情从 9 分变成 9.5 分,这就是花很大力气去做小数点后面的事,没有太大的用处。可是,现在大多数公司都在努力做小数点以后的事。
今天碰上公司 Nexus 网络服务挂了,结果 aar 没办法 upload 。而偏偏遇上工程遗留问题,不支持 aar 直接依赖,只能想办法导出 jar 包依赖。所幸,操作还比较简单,但是这种方法只适合于每月资源引用的代码,而且还不支持传递依赖。
版本帝最近更新的频率变低了,自从 2018 年 Google I/O 大会 Android Studio 宣布更新后,Google 精炼和完善了 20 多项新功能,并集中力量提升 Android Studio 3.2 稳定版的质量。
这篇文章是我在【2018安卓巴士开发者大会】技术分享时所讲内容的文字版本,修改删减了演讲时的冗余言语。 独家发布在小专栏平台,希望能给我专栏订阅读者里买不到票参加大会的朋友带来帮助。
IPv6 地址大小为 128 位。首选 IPv6 地址表示法为 x:x:x:x:x:x:x:x,其中每个 x 是地址的 8 个 16 位部分的十六进制值。IPv6 地址范围从 0000:0000:0000:0000:0000:0000:0000:0000 至 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff。
当一个视图树绘制时调用`OnDrawListener`的`onDraw()`函数。但是这个方法在 `Android8.0` 之前有个坑:`View` 在 `attach` 到 `window` 之前调用 `getViewTreeObserver().addOnDrawListener()` 将不会进入回调。因为`ViewTreeObserver`的`merge()`方法中没有处理`OnDrawListener`详见源码
「技术主管」是开发团队中的某位程序员需要对一起创建系统的整个开发团队负责时所承担的角色。通常他既要对最终交付的软件系统负责,另外也会像一个程序员一样去开发实现系统。 一个技术主管的 60% ~ 70% 的时间可能花在了开发任务分解分配、开发实践、技术架构评审、代码审核和风险识别上,而余下的 30% ~ 40% 的时间则花在为了保障系统按时交付所需的各种计划、协作、沟通、管理上。和团队管理者不同的是,技术主管的大部分管理工作都是针对具体研发任务和技术事务的。
`dex2oat`是 `ART` 虚拟机必备的一个组件,主要用来把安装的 `apk` 和动态加载的 `dex` 等文件转换成 `oat` 文件.主要是由于从一开始, `dex2oat` 就被设计为系统内部使用的编译部署工具.所以在高版本上生成格式发生了变化.所以再去用 `BaseDexClassLoader`或者是`DexClassLoader`、`PathClassLoader`等加载的时候就会出错.
Android 正则判断手机号, 2018年最新, 包含网络运营商
想要升级Mac上自带的Ruby环境,需要使用到RVM。
开发中经常会需要判断当前是否连接网络, WiFi 或 移动数据连接判断的需求。
自从 AndroidStudio 到 2.3 了以后,新建一个 Activity,默认的布局就从以前的 `LinearLayout` 变成了 Google 强推的 `ConstraintLayout`,但其实这个布局是可以被修改的。
在 Android 平台上,Native Crash 一直是比较麻烦的问题,因为捕获麻烦,获取到了内容又不全,内容全了信息又不对,信息对了又不好处理。比 Java Crash 不知道麻烦多少倍。本篇核心讲解了自己实现一个 Android Native Crash 收集的方案步骤,重点问题的解决办法。
Android APT 的新玩法,生成类的特殊加载方式。在 Android 多 module 工程中使用 APT,会出现类冲突问题,如果你也碰上这种问题,希望本文对你有所帮助。
网上一直有一种声音,叫做AI抢了大部分人的饭碗,同时也提供了大量的新的工作岗位。随着部署使用这次的 RAGFlow,就更加感受到了这一点。
体验了一下 Coze 的开源版本,相比商业版差太多了,准备放弃的时候刚好发现 RAGFlow 不需要 GPU 也可以跑,还只支持 x86,这不就是给我 NAS 空闲资源准备的吗
TheRouter 鸿蒙版是货拉拉基于HMRouter深度定制的开源路由框架,提供了 Android、iOS、Harmony 三端高一致性使用,在支持平台化应用实现组件化、跨模块调用、动态化等功能的集成等功能基础上,支持动态路由下发、编译时安全检查、路由Path一对多等高度动态能力。
文章围绕 TheRouter 的 AGP8 编译提速展开,指出 toTransform()方法编译慢且无法增量编译,提出多种解决思路,包括结合 AsmClassVisitorFactory 等,最终通过 toGet()方法、内存缓存及对比等优化,实现增量编译和保障产物结果。
最近新买了一个NAS,装个黑群晖,感觉可玩的还挺多。
这篇文章是我在 2022【GIAC 全球互联网架构大会】分享时所讲内容的文字版本,修改删减了演讲时的冗余言语,现开放给大家阅读,希望能给买不到票参加分享的 开源实验室 读者带来帮助。
路由是现如今移动端开发中必不可少的功能,尤其是企业级APP,可以用于将Intent页面跳转的强依赖关系解耦,同时减少跨团队开发的互相依赖问题。 TheRouter 是一整套完全面向模块化开发的解决方案,不仅能支持常规的模块依赖解耦、页面跳转,同时提供了模块化过程中常见问题的解决办法。
路由是现如今移动端开发中必不可少的功能,尤其是企业级APP,可以用于将Intent页面跳转的强依赖关系解耦,同时减少跨团队开发的互相依赖问题。 TheRouter 是一整套完全面向模块化开发的解决方案,不仅能支持常规的模块依赖解耦、页面跳转,同时提供了模块化过程中常见问题的解决办法。
5月开头,这周其实有两件大事:一件是俄罗斯胜利日大阅兵,大家关心的是普京会说些什么。西方觉得普京会对乌克兰宣战。因为这关系到三件事:这仗会不会打出乌克兰国界外;这仗会打到什么程度;这仗会打多久。 但事实证明,它们的格局太低了。普京的演讲,表明了俄罗斯的态度:要终结西方自从大航海时代以来500年的海洋霸权,尤其是近200年来的盎格鲁撒克逊人的霸权。 之前俄罗斯方面就这么宣称过,但红场阅兵不一样:在俄罗斯,它的收视率达到50%以上,这等于普京向全国人民正式宣布了。
蒙古成吉思汗这个大BUG,说大半个世界被他一锅端都不过分,当时突厥的古尔王朝还有一点残余势力,他们以印度河恒河流域的枢纽,从德里这个城邦为中心建立了一个伊斯兰化的邦国叫德里苏丹国。 但问题是这个国家它其实不算是个国家,因为他本身的就是四十几个阿富汗突厥贵族为了利益组成的一种诸侯联邦状态。这个状态就有点像我们的战国时期,各个诸侯表面上都说自己是周天子的子民,但实际上都自立为王。当时的德里苏丹国也是这样,内部矛盾很多,要不是印度土著擅长躺平,估计早就像陈胜吴广一样揭竿而起,干翻这个王国了。
凡是在朋友圈问我这个问题的,我基本上都是一句话:互联网没有增量了,多学点历史没坏处的。因为手机上解释的多了,我打字累,再加上别人也不一定愿意听,可能纯粹就是随便问一句。
于是大约在公元前800-600年,相当于中国的春秋时期。这时期印度内部各种各样的种族斗争,被称为列国时代,跟我们的战国时期很像。加上后面的波斯入侵,希腊入侵,孔雀王朝崛起,精彩程度丝毫不亚于我们的战国时期。
大约公元前800年-公元前100年,当时的印度有十六国,正处于列国时代,学术流派百家争鸣。耆那教并不是当时唯一反对婆罗门教的宗教。除了耆那教外,还有佛教、顺世派、不可知论派等等许多思想流派,它们被统称为沙门思潮。
前段时间在研究阿富汗的时候,特意了解了一下中东地区几个国家的历史,看着看着反倒觉得印度是个神奇的存在,因为整个印度的历史基本上就是印度的屈辱史,被各种民族各种国家入侵,然后关键他到现在还能活着。所以特意写一系列文章讲一讲。
最近一直在苦苦思考这个问题:会不会我们所说的某一天,永远都不会到来?
在Android 上,Kotlin 用灵活的语法封装出语言层面的协程(coroutine)新颖地解决了异步编程编码复杂的问题。本次分享将带领听众从一个小例子开始,更加深入,自顶向下的理解协程是什么,协程的本质与工作机制,动手设计出一个真正运行时的协程库
昨天把 gradle 升级到 6.0 以后,发现这傻逼的 google 又直接干 API,以前上报的全部脚本都没法用了。我们原先上报一个 aar,是直接引入。
在繁杂的项目中,日志打印必不可少。但是编写打印的工作,有时候是无趣的、繁琐的、浪费精力的。 如何能够快速、方便的编写打印;如何清晰、准确的定位;如何简单并优雅的实现;最后才能让我们摆脱这样枯燥的、重复的工作? 网上有很多强大的日志类工具,我也都使用过一些,有时候也并没有理想中的方便。今天我想分享给大家的一套我自己的解决方案。
奉劝大家一句:千万不要想不开跑去小公司,尤其是在大厂已经做到高P的,即便小公司给你的许诺更好。因为在小公司呆久了你会发现只可能有两种变化,要么脾气会变的越来越暴躁,要么整个人变得越来越佛系。
最近定了一些团队标准的东西,刚好聊到了 Git Flow 这个事,可以拿出来分享一下。
共有两种实现比较简单的方式。 第一种比较好理解,将一个控件的透明度设置成0,打到隐藏的目的。第二种办法是使用 SDK 自带的 Offstage 控件包裹。
Flutter 线性布局:Column 和 Row 的常用属性
开源一个批量压缩图片的脚本,支持文件夹递归,可选质量压缩和宽高比压缩,可选设置最大宽高和大小,纯shell脚本实现。
用一句话概括,本文讲的就是:怎样通过自己的专业深度,帮助公司和团队预测未来。 很多时候,之所以能够做到预测未来,无非是你掌握的信息比别人要多而已。
继我成功预言了 Kotlin 、Flutter 技术会火起来之后,我相信,下一个会火起来的技术是区块链。 1. 别抬杠,我 14 年开始玩 Kotlin,16 年开始玩 Flutter (虽然看了看实现原理觉得没啥屁用就放弃了)的时候,可能你还不知道这俩名词呢。 2. 别抬杠,我说的火起来的区块链技术是私链+合约(我不想提那俩字,我觉得智障更合适)。 3. 抬杠吧,反正我从来没玩过数字货币,我也不怕被割韭菜。
这篇文章是我在 2019【极光开发者大会】技术分享时所讲内容的文字版本,修改删减了演讲时的冗余言语,现免费开放给大家阅读, 希望能给买不到票参加大会的开源实验室读者带来帮助。
应用的构建速度会直接影响开发效率,本文将带您通过改造一个 Android 应用: “Google 追踪圣诞老人 (Google Santa Tracker)” 来为大家提供十个小技巧,帮助提升应用的 Gradle 构建速度,当我们应用了所有的小技巧之后,该演示应用的构建速度快了三倍以上。
再过几周,Android Q 正式版就要与大家见面啦!目前,Android 团队正在对平台进行最后的优化与调试。同时今天向各位开发者发布最后一个 Beta 测试版: Android Q Beta 6。
上周五,国外新闻网站 ZDNet 发表了一篇报道 GitHub与跟世界贸易摩擦国的程序员关系的文章 —— GitHub starts blocking developers in countries facing US trade sanctions(GitHub 开始阻止被制裁国的开发者使用)。
近日一名国外开发者(Balazs Saros,下简称 Balazs)在个人博客发表了一篇看似是在声讨中国开发者的文章,标题起得有点唬人 —— Chinese repos are ruining the Github trending page(中国的开源项目正在破坏 GitHub 榜单页)。
用一句话概括,本文讲的就是:怎样打造一个开发团队。
Libra的使命是建立一个简单的全球货币和金融基础设施,为数十亿人提供支持。 互联网和移动宽带的出现使全球数十亿人能够获得世界的知识和信息,高保真通信以及各种低成本,更便捷的服务。这些服务现在可以使用来自世界上几乎任何地方的40美元智能手机进行访问.1这种连接通过让更多人能够访问金融生态系统来推动经济赋权。通过合作,技术公司和金融机构也找到了有助于提高全球经济能力的解决方案。尽管取得了这一进展,但仍有大量世界人口落后 - 全球仍有17亿成年人不在金融体系之内,无法使用传统银行,即使10亿人拥有移动电话,近5亿人拥有互联网接入。
这其实是前几天看到 B 站代码被开源后的一个感想,为什么要冒这么大风险去做这事,活着不好吗?到底是 996 让你疯狂?还是不给涨薪还克扣工资?或者黑了你的蔡徐坤?鬼知道为什么会有这想法。 然后脑子里就冒出了一个更奇怪的想法,如果我要在代码里下毒,要怎么做?
最近在做 Server 开发,需要将一个内网的服务暴露出去,使其在家也能访问到。
从 Kotlin 1.3 开始,协程将进入稳定状态。此后不再会被标注为`experimental`,官方也会提供相应的工具帮助开发者完成迁移工作。 Ktor,这个库的 API 已经完善,期待大家的使用体验和反馈。Ktor 是一个基于协程的框架,使用它我们可以优雅的构建 Web 应用、Http 服务、移动应用和网页。
在一个新点子冒出来的时候,我们首先要甄别这个是什么级别的思考。如果只是把事情从 9 分变成 9.5 分,这就是花很大力气去做小数点后面的事,没有太大的用处。可是,现在大多数公司都在努力做小数点以后的事。
今天碰上公司 Nexus 网络服务挂了,结果 aar 没办法 upload 。而偏偏遇上工程遗留问题,不支持 aar 直接依赖,只能想办法导出 jar 包依赖。所幸,操作还比较简单,但是这种方法只适合于每月资源引用的代码,而且还不支持传递依赖。
版本帝最近更新的频率变低了,自从 2018 年 Google I/O 大会 Android Studio 宣布更新后,Google 精炼和完善了 20 多项新功能,并集中力量提升 Android Studio 3.2 稳定版的质量。
这篇文章是我在【2018安卓巴士开发者大会】技术分享时所讲内容的文字版本,修改删减了演讲时的冗余言语。 独家发布在小专栏平台,希望能给我专栏订阅读者里买不到票参加大会的朋友带来帮助。
IPv6 地址大小为 128 位。首选 IPv6 地址表示法为 x:x:x:x:x:x:x:x,其中每个 x 是地址的 8 个 16 位部分的十六进制值。IPv6 地址范围从 0000:0000:0000:0000:0000:0000:0000:0000 至 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff。
当一个视图树绘制时调用`OnDrawListener`的`onDraw()`函数。但是这个方法在 `Android8.0` 之前有个坑:`View` 在 `attach` 到 `window` 之前调用 `getViewTreeObserver().addOnDrawListener()` 将不会进入回调。因为`ViewTreeObserver`的`merge()`方法中没有处理`OnDrawListener`详见源码
「技术主管」是开发团队中的某位程序员需要对一起创建系统的整个开发团队负责时所承担的角色。通常他既要对最终交付的软件系统负责,另外也会像一个程序员一样去开发实现系统。 一个技术主管的 60% ~ 70% 的时间可能花在了开发任务分解分配、开发实践、技术架构评审、代码审核和风险识别上,而余下的 30% ~ 40% 的时间则花在为了保障系统按时交付所需的各种计划、协作、沟通、管理上。和团队管理者不同的是,技术主管的大部分管理工作都是针对具体研发任务和技术事务的。
`dex2oat`是 `ART` 虚拟机必备的一个组件,主要用来把安装的 `apk` 和动态加载的 `dex` 等文件转换成 `oat` 文件.主要是由于从一开始, `dex2oat` 就被设计为系统内部使用的编译部署工具.所以在高版本上生成格式发生了变化.所以再去用 `BaseDexClassLoader`或者是`DexClassLoader`、`PathClassLoader`等加载的时候就会出错.
Android 正则判断手机号, 2018年最新, 包含网络运营商
想要升级Mac上自带的Ruby环境,需要使用到RVM。
开发中经常会需要判断当前是否连接网络, WiFi 或 移动数据连接判断的需求。
自从 AndroidStudio 到 2.3 了以后,新建一个 Activity,默认的布局就从以前的 `LinearLayout` 变成了 Google 强推的 `ConstraintLayout`,但其实这个布局是可以被修改的。
在 Android 平台上,Native Crash 一直是比较麻烦的问题,因为捕获麻烦,获取到了内容又不全,内容全了信息又不对,信息对了又不好处理。比 Java Crash 不知道麻烦多少倍。本篇核心讲解了自己实现一个 Android Native Crash 收集的方案步骤,重点问题的解决办法。
Android APT 的新玩法,生成类的特殊加载方式。在 Android 多 module 工程中使用 APT,会出现类冲突问题,如果你也碰上这种问题,希望本文对你有所帮助。