- 博客(93)
- 资源 (3)
- 收藏
- 关注
原创 Android疑难杂症——因内联优化导致9.0机型Native Crash
对于Java程序来说,除了开发者本身对代码优化之外,还有一个“人”也在背后默默的优化我们的代码,这个"人"就是JVM。JVM会帮我们分析出热点代码,优化代码逻辑。其中JVM最常做的优化之一就是:方法内联优化。 什么是方法内联?又可以叫做函数内联,Java中方法可等同于其它语言中的函数。关于方法内联维基百科上面解释是:...
2021-06-20 21:52:38
2232
5
原创 React Native学习笔记 (一)入门基础
作为目前流行的跨平台技术框架之一,React Native是Facebook技术团队于2015年4月在早先的React前端框架基础上开源的一套移动跨平台开发框架,可以同时支持iOS和Android两大移动平台。
2021-05-29 10:52:47
727
4
原创 Gradle进阶计划(三)自定义Gradle Plugin
上一篇文章Gradle进阶计划(二)Gradle Plugin原理分析,我们介绍了 Gradle Plugin 的原理,并且对于主要的 Task 进行了详细的分析。这篇文章我们研究一下如何自己写一个Gradle Plugin。一、自定义Task 在学习自定义 Gradle Plugin 之前,我们先学习一下如何自定义 Task。 相较于自定义 Gradle Plugin,自定义Task实现更加的简单。同时,它又是自定义 Gradle Plugin...
2021-02-13 09:44:07
1064
2
原创 Gradle进阶计划(二)Gradle Plugin原理分析
通过Gradle进阶计划(一)Gradle初探的介绍,我们已经对Gradle有了初步的了解。这篇文章我们更深入研究一下 Gradle Plugin 的原理。一、Gradle 和 Gradle Plugin 首先,我们需要先明确一个概念,就是Gradle和Gradle Plugin是不同的。(一)Gradle 结合上一篇文章,官方已经对Gradle已经有了很详细的定义,这里在重点解释一下。 Gradle 是一个构...
2021-01-31 11:29:02
3900
4
原创 Gradle进阶计划(一)Gradle初探
相信对于任何一位安卓开发工程师来说,Gradle一定不陌生。但是很多人甚至是很多年开发经验的高级工程师对Gradle仍然不甚了解,市面上涉及Gradle的文章大多数讲解的也不是很系统。本专栏旨在系统的梳理下Gradle的相关知识点,希望能对你有所帮助。一、什么是 Gradle“Gradle is an open-source build automation system that builds upon the concepts of Apache Ant and Apac...
2021-01-24 18:03:11
2668
4
原创 Android APP安全策略
在移动互联网时代,APP破解已经成为产业链。APP主要有3大威胁,盗版、数据篡改和山寨。盗版是以反编译为前提通过修改某些资源文件或者是代码文件,之后重新打包二次分发。数据篡改是通过人为地使用某些专业工具来修改正版APP内存中的数据,比如把一个收费的APP变成一个免费的APP。山寨主要是通过相似度来混淆用户。Android系统由于其开源的属性,市场上针对开源代码定制的ROM参差不齐,在系统层面的安全防范和易损性都不一样,Android应用市场对app的审核相对iOS来说也比较宽泛,为很多漏洞提...
2021-01-24 12:09:28
1398
原创 Android UI卡顿优化
一、Android渲染机制(一)两个重要概念 屏幕刷新率:1秒内屏幕刷新次数,取决于硬件性能参数。 帧率:CPU、GPU在1秒内绘制的帧数。(二)为什么是60fps? 目前移动设备上一般使用60HZ的屏幕刷新率,系统为了配合60HZ的刷新频率,把帧率也定为60fps,所以Android的渲染机制是16.67ms绘制一次。 两者最好保持一致,如果屏幕刷新率是 75 hz,帧率是 60 fps,每秒软件渲染60次,你刷新 75 次,...
2021-01-23 16:32:01
778
3
原创 Android ANR详解
一、什么是ANR? ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。一般地,这时往往会弹出一个提示框,告知用户当前xxx未响应,用户可选择继续等待或者Force Close。 那么哪些场景会造成ANR呢?Service Timeout:前台服务在20s内未执行完成; BroadcastQueue Timeo...
2021-01-23 11:33:06
13910
原创 Git常用命令
Git是一个开源的版本控制系统。区别于其它版本控制系统例如SVN等,它是分布式的。 我们使用Git的一般工作流程如下:克隆 Git 资源作为工作目录。 在克隆的资源上添加或修改文件。 如果其他人修改了,你可以更新资源。 在提交前查看修改。 提交修改。 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。 当然,相信很多人都对它的用法非常的熟悉,这不是这篇文章的重点。接下来我主要整理一下Git的一些常用命令,帮助大家在工作中更好地使用GIt...
2020-08-09 21:54:17
188
原创 Learn Git Branching 答案汇总
git reset --hard o/mastergit checkout -b feature C2git push origin feature
2020-08-09 12:11:18
23756
8
原创 LeetCode第178场周赛
1365. 有多少小于当前数字的数字给你一个数组nums,对于其中每个元素nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个nums[i]你必须计算出有效的j的数量,其中 j 满足j != i 且 nums[j] < nums[i]。以数组形式返回答案。示例 1:输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3...
2020-03-08 23:29:25
484
原创 LeetCode第177场周赛
1360. 日期之间隔几天请你编写一个程序来计算两个日期之间隔了多少天。日期以字符串形式给出,格式为YYYY-MM-DD,如示例所示。示例 1:输入:date1 = "2019-06-29", date2 = "2019-06-30"输出:1 这道题偷个懒,利用Java的库函数直接解。。。import java.time.LocalDate;imp...
2020-03-08 22:53:05
204
原创 LeetCode第176场周赛
1352. 最后 K 个数的乘积难度中等17收藏分享切换为英文关注反馈请你实现一个「数字乘积类」ProductOfNumbers,要求支持下述两种方法:1.add(int num)将数字num添加到当前数字列表的最后面。2.getProduct(int k)返回当前数字列表中,最后k个数字的乘积。 你可以假设当前列表中始终至少包含k个数字。题目数据保...
2020-03-08 22:17:04
213
原创 LeetCode第175场周赛
1347. 制造字母异位词的最小步骤数难度中等5收藏分享切换为英文关注反馈给你两个长度相等的字符串s和t。每一个步骤中,你可以选择将t中的任一字符替换为另一个字符。返回使t成为s的字母异位词的最小步骤数。字母异位词指字母相同,但排列不同的字符串。示例 1:输出:s = "bab", t = "aba"输出:1提示:用 'b' 替换...
2020-03-08 18:38:12
337
原创 LeetCode第179场周赛
5352. 生成每种字符都是奇数个的字符串给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。示例 1:输入:n = 4输出:"pppz"解释:"pppz" 是一个满足题目要求的字符串,因为 'p' 出现 3 次,且 'z' 出现 1 次...
2020-03-08 17:23:59
264
原创 LeetCode刷题之设计题(持续更新)
1. LRU缓存机制146. LRU缓存机制运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。 写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容...
2020-03-06 17:46:12
983
原创 LeetCode刷题之数学问题(持续更新)
1. 整数反转7. 整数反转给定一个 32 位有符号整数,将整数中的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21public class Solution { public int reverse(int x) { long z = x; ...
2020-03-06 17:24:09
393
原创 LeetCode刷题之搜索(持续更新)
1. 括号生成22. 括号生成给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]public class Solution { public List<Stri...
2020-03-06 16:33:29
448
原创 LeetCode刷题之排序(持续更新)
1. 排序链表148. 排序链表在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5public class...
2020-03-05 10:14:56
393
原创 LeetCode每日一题(持续更新)
3月1日225. 使用队列实现栈的下列操作:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back, peek/pop from front, size, 和is empty这些操作是合法的。你所使用的语言也许不支持队列。你...
2020-03-03 21:46:00
1903
原创 LeetCode第174场周赛
1337. 方阵中战斗力最弱的 k 行难度简单6收藏分享切换为英文关注反馈给你一个大小为m* n的方阵mat,方阵由若干军人和平民组成,分别用 0 和 1 表示。请你返回方阵中战斗力最弱的k行的索引,按从最弱到最强排序。如果第i行的军人数量少于第j行,或者两行军人数量相同但i小于j,那么我们认为第i行的战斗力比第j行弱。军人总是排在一行中的...
2020-02-22 21:15:21
220
原创 LeetCode第173场周赛
1332. 删除回文子序列给你一个字符串s,它仅由字母'a' 和 'b'组成。每一次删除操作都可以从 s 中删除一个回文 子序列。返回删除给定字符串中所有字符(字符串为空)的最小删除次数。「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是...
2020-02-22 18:26:27
295
原创 LeetCode第172场周赛
1323. 6 和 9 组成的最大数字给你一个仅由数字 6 和 9 组成的正整数num。你最多只能翻转一位数字,将 6 变成9,或者把9 变成6 。请返回你可以得到的最大数字。示例 1:输入:num = 9996输出:9999解释:将最后一位从 6 变到 9,其结果 9999 是最大的数。1324. 竖直打印单词给你一个字符串s。...
2020-02-22 11:31:12
396
原创 轻松学会正则表达式!
对于正则表达式,相信很多人都知道,但是很多人的第一感觉就是难学,觉得完全没有规律可寻,而且全是一堆各种各样的特殊符号,完全不知所云。无论你学习哪一门编程语言,几乎都不可避免的遇到正则表达式。本文就向你详细介绍一下正则表达式的用法,旨在梳理核心知识点,让你轻松学会正则表达式的用法!一、基本概念 正则表达式(regular expression)描述了一种...
2020-02-21 21:57:36
552
原创 Android Jetpack(四)LifeCycle
Lifecycle 是2017年 Google I/O 大会推出来的,它属于 Architecture Compoment 里面的一个组件,是一个生命周期感知组件。一般用来响应Activity、Fragment等组件的生命周期变化,并将变化通知到已注册的观察者。有助于更好地组织代码,让代码逻辑符合生命周期规范,减少内存泄漏,增强稳定性。...
2020-02-17 12:56:57
220
cglib-full.jar
2020-02-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人