分类目录归档:未分类

覆盖补给-树形dp

已知有一片呈二叉树的道路,我们要在道路上的一些节点设置补给站支援。

补给站可以设置在任意节点上,每个补给站可以使距离自身小于等于 1 个单位的节点获得补给。

若要使道路的所有节点均能获得补给,请返回所需设置的补给站最少数量。

示例 1:

示例 2:


提示:

  • 节点的数量范围为 [1, 1000]
  • 每个节点的值均为 0 。

Android如何优雅的弹出键盘

在很多app中,为了避免ui样式被键盘顶起,从而会把主内容的编辑功能单独摘一个发布器,作为用户的编辑界面,如快手抖音的评论。如下图所示

因此作为发布器必须第一时间弹出输入法,但是过早的调用InputMethodManager.showSoftInput 是无法弹出键盘的,任何的showflag都是一样的,

网上大部分人告诉我们答案,只要将showSoftInput 进行延迟展示即可,更有离谱的告诉你监听draw,监听layout后再调用等

然而这些方法都是不可靠的,监听draw监听layout或者进行delay的话,你会发现换个手机就不生效了,要么就要继续把delay 时间延长保证线上的可靠性,不同手机的延长时间是不一样的。。。。 查看更多

Android 特定情况requestlayout 一直无效分析

问题的发现

在做一次项目重构后,发现偶现ViewPager页面出现滑动到一半停住,继续触摸继续滑动,连续滑动后,ViewPager不会有新的页面创建,所有页面都滑到了屏幕之外。

问题分析

既然问题出现在ViewPager,那么当然是从ViewPager的代码开始分析了,既然Viewpager可以滑动,但是松手的时候一切没有触发新页面的加载,于是我怀疑是Viewpager的populate(int item)方法有问题。

经过断点分析,发现这段逻辑完全正常,松手后,确实完美触发了populate 方法,index同样也是对的,那么为什么没有触发滚动动画和页面加载呢。

重新增加断点到Viewpager adapter里的View创建里,发现正常情况下,创建页面的调用栈是从View的onlayout触发的,而异常情况下,没有触发onLyaout。 查看更多

备忘

查找当前目录下的所有字符串:

grep -n “xxxxxx” -r ./

多个字符串或匹配

grep -n -E “xxxx1|xxxx2” -r ./

一个dexfile解析库

最近同事在研究自定义解释器加壳的的能力,简单的说就是,自己实现解释器来执行加密的字节码,从而让破解的人无法从内存中dump到完整的dex文件或者永远是错误的dex,加大了破解难度。

由于在Github上没找到合适的c/c++实现的 dex解析库,只好徒手从art虚拟机中扒出来。

这个dexfile只是从art 从抽出的代码,可以使用jni调用,没有封装好的jni接口。需要自己参考dumpdex里的代码或者了解dexfile里的实现才能用。

通过这个库可以获得dex file里的method field 以及各个method的opcode和oprand,如果想自己实现dex虚拟机玩玩可以试试

使用的ndk版本的是r21 cmak3.14 查看更多