- 博客(30)
- 资源 (1)
- 收藏
- 关注
原创 如何断点调试第三方 Gradle Plugin
按照下面这个视频我们已经可以连接到 Gradle 进程去 debug 了,但是这个视频里还是没有解答我一直以来的一个疑惑,就是我怎么去调试一个第三方的 Gradle 插件: 如何单步调试 Gradle 脚本? 在上一步中我们已经可以断点了,但是无法跳转到第三方的 plugin 源码当中,那么我们只要把源码导入就好了。以我们常用的 kotlin-android 这个 plugin 为例,
2021-08-17 20:26:31
899
原创 jadx-gui 重命名功能
jad-gui 是大家常用的一款反编译工具,其中有些小使用技巧可以帮助大家更快的“学习”知识。安装方法参考项目GitHub主页重命名最新的 1.2.0 版本支持了方法、类、字段的重命名,这是一个非常有用的功能,之前反编译出来的都是混淆后的名字,非常让人难以理解,虽然也有自动重命名的功能,但结果同样缺少可读性。新版本中的重命名支持单独自己命名,使用十分方便,下面看看怎么使用吧:...
2021-07-19 20:46:59
839
原创 重新造轮子之仿手势下拉关闭图片效果
现在很多 App 上查看图片时都有手势下拉关闭图片的效果,个人非常非常喜欢这种交互,就想也仿制一个。 在 GitHub 上找到一个现成的 repo:MNImageBrowser 已经实现了相应的效果,这个库设计的挺不错的,也有很丰富的定制 API,不过仔细看过代码以后发现一个问题,图片切换用的是 ViewPager,ViewPager 在展示大量图片时有发生 OOM 的风险,虽然也是有对应解...
2018-08-18 17:03:11
2013
原创 Handler 中的 sendMessageDelayed
一个Handler的消息队列中只有两条消息,第一条是一个延时100ms的消息,第二条是普通消息,这时候取消息的流程是怎么样的?
2018-01-03 22:22:43
5391
原创 TaskRecord、ActivityRecord 和 ActivityStack的关系
分析 TaskRecord、ActivityRecord 和 ActivityStack的关系
2017-06-25 16:59:31
2352
原创 repo和Git的关系
任何一个学习Android开发的开发者如果想要深入学习Android,一定要看Android源码,网上关于下载Android源码的教程有很多,如果你已经翻墙了,你可以直接参考Google官网的教程或者老罗最新出的教程,如果你还没有翻墙,你可以用清华大学的Android源码镜像。我一开始没有用他们所推荐的Ubuntu下载,而是在听闻Windows 10专业版里内置了一个Ubuntu子系统以后,我尝试用
2017-02-26 21:41:19
43696
7
原创 Android 避免2个相互关联的 EditText 死循环
起因最近在做一个汇率转换的App练手,界面上会有两个相关联的的EditText,改变其中一个的值,另一个也会随之改变。对于这个问题最简单的思路就是为每个EditText附上addTextChangedListener,并实现TextWatcher,在afterTextChanged中去修改另一个EditText的值,但这种实现方式会造成死循环。仔细想想,更改EditText A的时候会触发TextC
2017-02-25 21:47:35
2218
原创 Android MediaProvider详解(基础篇)
我们都知道Android有四大组件,Activity、Service、BroadcastReceiver、ContentProvider。MediaProvider就是Android系统中的一个数据库,类似的还有TelephonyProvider、CalendarProvider、ContactsProvider,这些数据库的源码都在/packages/providers/目录下。其中MediaPr
2017-02-25 21:46:26
15589
2
原创 线性表之多项式乘法
多项式乘法 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte总提交 : 298 测试通过 : 131 描述 线性表是一种最简单、最基本,也是最常用的数据结构,其用途十分广泛,例如,用带表头结点的单链表求解一元整系数多项式加法和乘法运算。现给两个一元整系数多项式,请求解两者的
2014-11-23 21:22:13
1665
原创 Python写的汉诺塔问题
汉诺塔 (http://baike.baidu.com/view/191666.htm) 的移动也可以看做是递归函数。我们对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为:如果a只有一个圆盘,可以直接移动到c;如果a有N个圆盘,可以看成a有1个圆盘(底盘) + (N-1)个圆盘,首先需要把 (N-1) 个圆盘移动到 b,然后,将 a的最后一个圆盘移动到c,再将b的
2014-11-13 21:18:17
4869
原创 参赛选手身高问题II
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:485 测试通过:51描述2013“华为杯”南京邮电大学大学生团体歌唱大赛即将在南邮举行,本次大赛由南京邮电大学大学生就业与创业指导中心主办,南京邮电大学华为俱乐部(Huawei Club)和南京邮电大学学生职业发展协会(SCDA)联合承办,华为
2014-06-21 16:31:04
1017
原创 比赛现场气氛营造问题II
时间限制(普通/Java):5000MS/15000MS 运行内存限制:65536KByte总提交:178 测试通过:53描述在2013“华为杯”南京邮电大学大学生团体歌唱大赛组织工作中,为了营造比赛现场活跃气氛,大赛组委会原计划为每位观众发放相同件数的OLED多彩荧光棒,但经过这几天的调研发现,上述计划方案缺点较多,所以现在决定购买普通的L
2014-06-21 11:09:01
1592
原创 华为上机题,循环报数
题目我有点记不清了,就是先输入一串这样的字符串,每个字符之间以空格隔开:3 a b c d e f g h i第一个数字m,后面的字符每数m个,就输出,输出后从序列中删除,然后循环输出:c f i d h e b g a。题目有个提示是运用循环链表。#include #include #include using namespace std;typedef s
2014-03-24 21:19:10
1556
原创 判断两数是否互质
#include using namespace std; int is(int a,int b){//辗转相除法求出最大公约数 int temp=0; while(b!=0){ temp=b; b=a%b; a=temp; } if(a==1) return 1;//如果最大公约数是1,那么两数互质 else return 0;}int main(){
2013-05-12 21:12:32
8290
原创 String类的应用之统计特定字符个数
#include #include using namespace std;int main(){ int i=0,n,sum_s=0,sum_t=0; cin>>n; string str; for(i=0;i<=n;i++){ getline(cin,str);//关键点,取整行字符,包括空格 int j=0; while(str[j]!='\0'){ i
2013-05-10 22:25:39
1048
转载 使用C++编写的查找字符子串并替换
#include #includeusing namespace std;char* replace(const char* str,const char* sub1,const char* sub2,char* output){ char* pOutput=NULL; const char* pStr=NULL; int lenSub1 = strlen(sub1); int
2013-05-08 20:37:03
1262
转载 字符串反转
#include #include #include #include using namespace std;const char* reverse(const char* s1,const char* token){ stackstack1; const char* ptoken=token,*head=s1,*rear=s1; assert(s1 && token);//
2013-05-08 20:35:01
574
转载 判断素数
#include#includeusing namespace std;int test(int t){ int i; if(t<=2) return t==2; if(t%2==0) return 0; for(i=3;i<=sqrt(t);i+=2){ if(t%i==0) return 0; } return 1;}int main(){ int i=0,n,
2013-05-02 16:40:06
482
原创 单链表应用之多项式加法
#include #include #define MALLOC(s) (struct polyNode *)malloc(sizeof(*s))struct polyNode{ int xs; int zs; struct polyNode *link;};int xs,zs;int tag=1;void output(struct polyNode *root){ /
2013-05-01 21:52:03
802
原创 c编写的大数计算
以下程序是为了计算1000位以内的正整数加法,我们都知道,即使是float或者double也到不了1000位的正整数,所以我们就不能使用传统的数据类型的简单相加,我使用了字符串来计算和表示。#include #include #include int main(void){ char a[1000],b[1000],c[1001]; int i,sum,n=0,len,len_a,
2013-04-29 10:02:31
638
原创 使用sizeof计算类对象所占空间大小
第一段代码:#include using namespace std;class s{ char c1; char c2; int a;};int main(){ cout<<"sizeof(s):"<<sizeof(s)<<endl; system("pause"); return 0;}第二段代码#include using name
2013-04-20 15:19:10
1270
转载 如何链接宏参数
代码如下:#include #define STR(s) #s#define CONS(a,b) (int)(a##e##b)int main(){ printf(STR(vck)); printf("\n"); printf("%d\n",CONS(2,3)); return 0;}解析:在本程序中,使用#把宏参数变成一个字符串,用##把两个宏参数贴合在一
2013-04-16 13:49:52
1103
转载 C语言控制台的数字时钟
转自:http://hi.baidu.com/csxwczj/item/68cd6e0f056da6eaf55ba67f/*TC2.0编译*/#include #include #include #include #include void time_box(int start_x,int start_y) //时间框体
2013-04-07 22:04:50
4015
转载 堆栈实现迷宫出路(C语言)
#include #include #define TRUE 1#define FALSE 0#define step 54#define EXIT_ROW 8#define EXIT_COL 5struct element { short int row; short int col; short int dir;};typedef struct element el
2013-04-06 13:10:48
1623
转载 稀疏矩阵的转置操作及其乘法操作
代码如下:#include #include #define MAX_COL 20#define MAX_TERMS 50#define EXIT_FALLURE -1struct term{ //稀疏矩阵的单个元素 int row; //该元素所在行 int col; //该元素所在列 int v
2013-03-26 13:23:10
1123
转载 递归实现排列组合
(置换)给定n大于等于1个元素的集合,打印这个集合所有可能的置换。我们通过观察集合{a,b,c,d},得到生成所有置换的简单算法,以下是算法的构造过程:(1) a跟在(b,c,d)的所有置换之后。(2) b跟在(a,c,d)的所有置换之后。(3) c跟在(a,b,d)的所有置换之后。(4) d跟在(a,b,c)的所有置换之后。
2013-03-18 20:10:19
717
vhdl编写的电子钟
2011-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人