- 博客(36)
- 资源 (29)
- 收藏
- 关注

原创 动态生成CSS轮播动画
1. 实现轮播动效,每个展位显示3s,然后0.5s滚动到下一个展位,依次循环播放。2. 展位个数是服务端下发的任意数量。本文尝试一步一个脚印给你呈现如何干得漂亮。
2022-10-23 03:35:15
619

原创 Android事件分发机制抽象--钓钩模型
如果你对上图的问题没有把握,那这篇文章会告诉你答案。本文尝试从“问题驱动理解” 角度将错综复杂的事件分发机制一言以蔽之–钓钩模型,像钓鱼钩那样迎刃解决各种事件分发机制疑难杂症。内含大量有深度有趣味的图片,给枯燥的原理分析加点甜。用户体验小姐姐巧妙地利用有限的手机屏幕空间,完美地设计出简单实用的交互功能,如果多问一句 “怎么做到的” ?答案必须是从事件分发机制的高超运用说起。在我 Android 应用业务开发职业生涯中,接触到最多的也正是如何运用事件分发机制和自定义控件,堆砌出一幅幅可交互的精致业务功能画面
2020-12-19 21:54:01
277
2

原创 进击ReactNative-徐如林-React源码解析
目录定目标传道(攻坚方法论)授业(懂算法)解惑(考考你)组件生命周期数据结构Virtual DOMDiff算法原理追过程学习运行(Playground)源码迷航微光大海航术用户态(浅水区)组件API生命周期内核态(深水区)初始渲染时间线用户点击渲染时间线小结简约伪代码方法调用图拿结果QA高性能实践问题定位利器方法钩子长歌结语参考有的人可能会不理解,大前端平台化的战火为谁而燃,吾辈何以为战?专注于移动互联网大前端致富,一直是我们最崇高的理想,而ReactNative是横亘在中间的桥头堡。纵观行业风向,有作
2020-11-15 21:35:32
1489
2

原创 进击ReactNative-FlatList源码解析
FlatList的性能高在哪里?☞阅读原文考考你问:在数据项高度不确定情况下,js侧不具备直接计算组件大小的能力,是怎么知道首屏展示几个数据项?答:js侧首屏几个不是直接计算出来的,而是先通过设置的属性估算出几个数据项,同时设置数据项和列表的布局监听回调onLayout,回调中修正数据项个数(如果还有数据项并且屏幕还有空间,则继续添加数据项)。问:FlatList只展示屏幕中的个数,那怎...
2019-07-17 20:12:05
651

原创 进击ReactNative-疾如风
情境(Situation) 约法三章 三问 三看 向后看 向外看 向前看 三思 思危 思退 思变 三愿 冲突(Complication) 疑问(Question) 5W2H分析法 答案(Answer) 三原则 有理 有利 有节 庖丁解牛 磨刀霍霍 一刀两断 吞刀吐火 Ja...
2019-01-12 20:38:30
804
6

原创 Android事件分发-来龙去脉
关键词:Android、事件分发、源码剖析情境(Situation)1. 专注于移动互联网数年,作为高P的我【鼓掌】竟然对事件分发机制见招拆招,似懂非懂。不专业,没法忍。2. View树的递归嵌套逻辑让广大一线同行云里雾里,手足无措。冲突(Complication)1. 网上好多相关主题的博客,描述信息点非常多(但是ACTION_CANCEL描述很少),看完后不明觉厉。2. 事件分发主...
2019-01-12 12:12:09
344

原创 如何设置浏览器启动默认网页
最近发现自己的浏览器启动后进入一个xxx网页,怀疑是中病毒了。找了好长时间也没有解决,设置主页也不行。后来上网查答案时无意右击浏览器图标查看属性,发现快捷方式后面的带了参数。只要把参数改为自己想要的url,就能做到打开浏览器启动该url。
2014-04-10 09:56:13
2265
1

原创 Android Logcat和Debug的使用
摘要:1.使用Logcat跟踪查看Activity的生命周期。2.使用Logcat跟踪查看Class的加载顺序。3.使用Debug调试,跟踪代码。内容:1.Activity的生命周期。详情参考http://developer.android.com/guide/components/activities.html2.创建一个Android工程,在MainAc
2014-03-30 13:20:46
2069

原创 原型模式(Prototype Pattern)案例解析
原型模式(Prototype Pattern)定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类图:案例描述:克隆对象案例源码:{优快云:CODE:126750}运行结果:Prototype1Prototype1false
2013-12-24 21:19:48
190

原创 单例模式(Singleton Pattern)案例解析
单例模式(Singleton Pattern)案例解析案例描述:公司里面的所有员工共用一台打印机打印文件。打印机是全局唯一资源,可以用单例描述。
2013-12-24 20:57:44
1036

原创 字符串逆转
逆序输出一段话,如输入"I want to change the world",则输出"world the change to want I"。将数组的后面若干位换到前面,如将0123456789变为6789012345。
2013-12-24 20:36:16
1002

原创 建造者模式(Builder Pattern)案例解析
建造者模式(Builder Pattern)案例描述:有一个作战平台,上面可以安装满足其规格的任意一种武器,但仅限于一种,所以作战平台可以根据需要替换不同武器。对于作战平台来说,当需要攻击一个目标时,他只需要向当前武器下达aim和fire两条命令即可将目标摧毁(对作战平台来说,不同的武器对他并没有区别),而真正完成aim和fire的操作由当前武器自己完成,这也是作战平台上安装的武器需要的规格,即可以自己在接受到aim和fire命令后完成摧毁目标的操作。
2013-12-24 18:57:17
1411

原创 观察者模式(Observer Pattern)案例解析
观察者模式(Observer Pattern)案例解析案例描述:有一个雷达负责扫描目标,一旦发现目标,就会通知攻击序列对目标进行摧毁,攻击序列中的所有武器会向目标发动攻击。现有的武器可以加入攻击序列,也可以退出攻击序列。雷达扮演Subject,大炮和导弹扮演Observer,大炮和导弹通过attach加入到雷达的攻击序列,一旦雷达发现目标,启动攻击序列摧毁目标。
2013-12-24 12:46:44
1093

原创 插入、删除、修改指向下一节点和下下一节点链表
操作一个链表,链表中的节点有两个指针,一个指向下一个节点, 一个指向下下一个节点,如果下一个节点或者下下一个节点为空,则为null。操作为插入,删除,修改。
2013-12-21 14:09:18
1560

原创 寻找数组中的值
一个长度为100的数组,开始乱序存放了1到100共100个数, 将其中一个位置上面的数字赋值为-1,请问该位置赋值之前是多少?一个长度为100的数组,开始乱序存放了1到100共100个数, 将其中两个位置上面的数字赋值为-1,请问这两个位置赋值之前分别是多少?给出一个递增数组array和由array中两个数的和n,求出这两个数?求两个递增数组的最小距离,即在两个数组中各取一个数,使得这两个数的差最小?
2013-12-18 21:20:28
1034

原创 栈和队列操作:栈实现、队列实现、双栈实现队列、双队列实现栈、栈实现O(n)求当前栈最大值
栈实现队列实现双栈实现队列双队列实现栈栈实现O(n)求当前栈最大值
2013-12-18 17:16:45
1423

原创 过滤连续空格
输入一句话,里面含有多个空格,一次遍历将多个连续空格变成一个空格。/* * shsheng */public class FilterSpaces { public static void main(String[] args) { test(); }/* * 输入一句话,里面含有多个空格,将多个连续空格变成一个空格。 */
2013-12-18 15:12:53
779

原创 卡特兰数(Catalan)应用:输出所有N对合法括号序列和输出所有已知进栈序列的合法出栈序列
Catalan应用输出所有N对合法括号序列输出所有已知进栈序列的合法出栈序列/* * shsheng */public class Catalan { // Catalan数可以用来描述以下问题,有2*n个人排队买票,票5元一张, // 2*n个人中n个人拿着5元钱买票,另外n个人拿着10元钱, // 售票员没有带钱,问2*n个人有几种排队方法,
2013-12-18 14:40:27
1458

原创 构成回文序列最少要增加多少字符
构成回文序列最少要增加多少字符方法一:为递归比较数组的头和尾:如果头尾对应相同,则回文序列求解递归求解去头尾的回文序列(X...X => ...);如果头尾对应不同,则有两种情况,一种是在尾部后面添加头(X...Y => X...YX => ...Y),一种是在头部前面添加尾(X...Y => YX...Y => X...),解法为递归求解两种情况,取情况小的那种。
2013-12-17 22:35:55
1136

原创 二叉树转换为双向链表
二叉树转换为双向链表通过随机创建二叉排序树测试二叉树转换为双向链表是否正确import java.util.Random;/* * shsheng */public class BinTreeToDoubleLinkedList { public static void main(String[] args) { try {
2013-12-17 21:33:32
1025

原创 二叉树递归和非递归遍历以及层次构建节点数为n的二叉树
目录:二叉树深度二叉树前序遍历递归实现二种非递归实现二叉树中序遍历:递归实现非递归实现二叉树后序遍历:递归实现非递归实现二叉树层次遍历二叉树层次创建,创建方法遵循卡特兰数import java.util.Queue;import java.util.Stack; /* * ssuchange */pub
2013-12-17 17:56:29
1589

原创 蛇形矩阵求解
蛇形矩阵求解Java代码: public class SnakeMatrix { /** * @param args */ public static void main(String[] args) { snakeMatrix(2,4);
2013-12-16 10:09:53
946

原创 求解最大子序列、最长递增子序列、最长公共子串、最长公共子序列
求解最大子序列、最长递增子序列(Longest Increasing Subsequence)、最长公共子串LCS 、最长公共子序列最大子序列:找出由数组成的一维数组中和最大的连续子序列。最长递增子序列(Longest Increasing Subsequence):设L=是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=akm>,其中k1akm。求最大的m值。
2013-12-16 00:26:49
1893

原创 输出n的全排列
输出n的全排列,有两种方法:1. 采用递归插入的方法,如果知道n-1的全排列,n的全排列为将数值n插入的n-1的全排列之间的空隙和两头共n个位置。2. 采用递归标记填充的方法,查看标记数组,将未标记的数值依次填充当前位置,然后更新标记数组并递归下一位置。Java代码:public class Factorial { /** * @para
2013-12-13 20:27:48
1937

原创 青蛙上台阶,可以一下跳1步,也可以一下跳2步,n层台阶所有跳法?
青蛙上台阶,可以一下跳1步,也可以一下跳2步,n层台阶所有跳法?问题分析:1. 该问题为斐波那契数列问题,问题的求解方法是对子问题的递归求解。f(n)=f(n-1)+f(n-2)n>2,f(1)=1,f(2)=2.2. 求解出所有解法,则需要用栈记录递归中的解法。Java代码:public class JavaTest { in
2013-12-12 22:49:36
1717

原创 快速排序
快速排序描述:通过若干次划分的方法完成待排序序列的排序。划分是通过一次遍历用基准数将待排序序列分成两个部分,在基准数左边的部分都小于等于该基准数,在基准数右边的都大于等于该基准数。经过一次划分后,待排序序列划分成两个独立的序列,然后分别将划分过后的两个独立序列当做待排序序列再进行划分。Java代码: // 划分方法返回基准位置, // 基准位置左边的所有
2013-12-12 22:15:45
638

原创 二分查找
二分查找普通二分查找描述:求解递增序列array的sta位置到end位置中间满足等于val值的位置。适用范围:有序序列。优势:如果数组长度为n,其算法复杂度为o(log(n)),每次查找能够将数组范围缩小到数组当前长度的一半。求解:1. 判断sta位置是否在end位置后面。l stal sta>end,找不到满足等于val值的位置,退出循环,返回-1,表示没有
2013-12-12 00:13:27
693

原创 简单工厂-工厂方法-抽象工厂对比,给出理解思路和Java参考案例源码
1. 简单工厂l 一个具体工厂通过条件语句创建多个产品,产品的创建逻辑集中与一个工厂类。l 客户端通过传不同的参数给工厂,实现创建不同产品的目的l 增加新产品时,需要修改工厂类、增加产品类,不符合OCP原则人去吃食物(酒,肉),店只有一家,需要指定要什么。由Factory根据出入的参数直接创建出ConcreteFood。
2013-10-24 17:12:45
914

原创 android 文件夹浏览器编码实现
思路:获取当前目录下的文件列表,然后显示到listview上面,当点击某个文件夹,则重新加载listview的内容为该文件夹下的文件列表,如果点击文件,则选择打开文件方式打开文件。步骤一:获取目录下的文件列表:// 获取路径path下的所有文件信息public ArrayList> getFilesList(File file) {if (file == null) {
2013-08-19 10:15:48
833

原创 Android文本翻页编码实现
Android文本翻页编码实现步骤一:读取文本并且把文本转换成图片。1.用MappedByteBuffer读取文本,MappedByteBuffer将文件直接映射到内存(这里的内存指的是虚拟内存,并不是物理内存,后面说证明这一点)。通常,可以映射整个文件,如果文件比较大的话可以分段进行映射,只要指定文件的那个部分就可以。具体可参照(http://blog.sina.com.cn/s/b
2013-08-06 08:07:42
1751
插入、删除、修改指向下一节点和下下一节点链表
2013-12-21
寻找数组中的值
2013-12-18
栈和队列操作:栈实现、队列实现、双栈实现队列、双队列实现栈、栈实现O(n)求当前栈最大值
2013-12-18
卡特兰数(Catalan)应用:输出所有N对合法括号序列和输出所有已知进栈序列的合法出栈序列
2013-12-18
构成回文序列最少要增加多少字符
2013-12-17
二叉树转换为双向链表
2013-12-17
二叉树递归和非递归遍历以及层次构建节点数为n的二叉树
2013-12-17
打印蛇形矩阵
2013-12-16
求解最大子序列、最长递增子序列、最长公共子串、最长公共子序列
2013-12-16
n全排列输出
2013-12-13
二分查找扩展
2013-12-12
android文件夹浏览器实现
2013-08-19
Android文本翻页编码实现
2013-08-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人