
程序优化
培金
目前从事android软件开发工作。承接android应用开发。合作请邮件:lingbjecit@163.com
展开
-
KMP算法
KMP 算法详解转载 2021-10-29 13:19:37 · 187 阅读 · 0 评论 -
关于MVP架构的项目实战总结
前言前段时间做了一个项目,好朋友搭好了MVP框架,现在项目结束了,我想总结一下其中的关键点,方便以后自己搭建架构。MVP介绍什么是MVP架构呢,以我本人的理解,项目代码模块分为模型、视图和展现层。视图层不能直接和模型层直接关联或调用。他们直接需要通过展现层来交互。MVP的前身是MVC,视图《= =》展现《==》模型...原创 2019-10-31 10:14:16 · 654 阅读 · 0 评论 -
总结项目中 retrofit 的架构
前言项目中用到了retrofit框架,retrofit在项目中框架的作用非常重要,所以想总结一下,方便以后自己搭框架时,能有更好的使用。类结构其中Api类是对外提供统一访问接口,其亦是单例类public class Api { private String baseUrl = "https://api.littleox.com/";//替换自己项目服务器端的地址 ...原创 2019-10-21 12:17:44 · 279 阅读 · 0 评论 -
PagedListAdapter 删除最后一条数据数组越界
前言老板说我写的程序崩溃,在删除最后一条数据时。听到这个消息,我很紧张,立马去分析。日志日志错误信息如下: --------- beginning of crash2019-10-18 18:13:19.670 19042-19042/com.meichuang.meipian E/AndroidRuntime: FATAL EXCEPTION: main Process: ...原创 2019-10-18 18:24:03 · 536 阅读 · 0 评论 -
Leetcode 118. 杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]解题1.首先,们知道必须要一个numRows的循环。其次是内层循环。本题的时间复杂度O(n^2)。空间复杂度亦同。...原创 2019-03-18 18:16:00 · 236 阅读 · 0 评论 -
Leetcode 1012. 十进制整数的反码
题目每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 “101”,11 可以用二进制 “1011” 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 “101” 的二进制反码为 “010”。给定十进制数 N,返回其二进制表示的反码所对应的十进制整数。示例 1:输入:5输...原创 2019-03-23 13:27:25 · 426 阅读 · 0 评论 -
炒鸡全面 android 总结
进程通信默认情况下,同一个应用所有组件在相同的进程线程中运行,即如果应用已经启动,则后续组件启动也在已有进程中进程默认情况下所有组件在相同的进程中运行。但是可以在清单文件中进行配置,即添加属性android:process=""(不同于android:sharedUserId ="",此是应用进程)android系统根据需要会在内存较低的情况下销毁进程进程生命周期进程的5个重要等级...原创 2019-03-29 09:12:54 · 167 阅读 · 0 评论 -
Android Handler post( runnable r) 后发生了什么?
Handler 调用MessageQueue将Runnable对象封装到Message中。 public final boolean post(Runnable r) { return sendMessageDelayed(getPostMessage(r), 0); }将延迟时间统一到未来时间点 public final boolea...原创 2019-04-15 17:15:45 · 171 阅读 · 0 评论 -
二叉查找平衡树---再平衡旋转
public class AvlTree { public AvlTree() { } public static class AvlNode { int val; AvlNode left; AvlNode right; int height; AvlNode(int e) { val = e; } AvlNode(int e, AvlNode ...原创 2019-04-03 15:45:38 · 187 阅读 · 0 评论 -
Handler 知识总结
官方介绍A Handler allows you to send and process Message and Runnable objects associated with a thread’s MessageQueue. Each Handler instance is associated with a single thread and that thread’s message ...原创 2019-04-12 18:08:48 · 177 阅读 · 0 评论 -
多线程并发demo代码
import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.WeakHashMap;import java.util.concurrent.atomic.AtomicInteger;public class MultiThread { //使用原子整数,对数的自增是线程安...原创 2019-04-09 16:44:23 · 321 阅读 · 0 评论 -
Leetcode 617. 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1...原创 2019-04-09 17:46:31 · 120 阅读 · 0 评论 -
Leetcode 107. 二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]解法代码/** * Definition...原创 2019-04-24 20:07:27 · 131 阅读 · 0 评论 -
短信列表滑动慢、卡顿---性能优化总结
前提以前面试中,面试官问到我优化了那些点。我当时紧张,只回答了说一个日期格式化的优化。所以从这个经历来说,我个人对自己做过的优化没有总结,优化的方法没有仔细地考虑原因,以及这个优化会有什么其他的副作用。今天特意来总结,因为最近学习了JVM内存布局、并发、锁等方面的知识,通过这些知识来更好的理解当初的优化方法。当初优化通过工具分析到卡顿点,找出了优化方法,而没有分析为什么这样优化会达到效果。短信...原创 2019-06-06 16:46:42 · 663 阅读 · 3 评论 -
箭头代码示例---某著名支付平台sdk源码
偶然看到某知名支付里面的源码,感觉写得非常的蛋疼,所以就贴出来,并且我想改进一下这个代码。 public boolean checkArgs() { if (this.appId != null && this.appId.length() != 0) { if (this.partnerId != null && this...原创 2019-08-22 15:28:14 · 1711 阅读 · 3 评论 -
汉明重量
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:0000000000000000000000001000000...原创 2019-11-04 09:48:55 · 713 阅读 · 0 评论 -
补码知识
在计算机二进制系统中,正数&负数的区别在最高位,最高位0表示正数,为1表示负数。计算机做加减乘除运算时,最终是转化为加法运算。比如 3-8 = 3+(-8);正数的补码是本身。负数的补码是将其对应的正数位按位取反再加1.-8:0001000->1110111->1111000->111110003-8:11111000+00000011->1111101...原创 2019-03-21 10:37:16 · 801 阅读 · 0 评论 -
Leetcode 204. 计数质数
题目统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。解法&思路题目内容很简单,但是里面要掌握的知识点非常多。最优解法非常的巧妙。何谓质数。一个数除了1和它本身能够整除它,其它数都不能够整除它。这个可以肯定,大于它的数更加不能整除它。那么我们可以据何谓整除;假设2个正整数M...原创 2019-03-20 17:58:31 · 245 阅读 · 0 评论 -
关于短信第一次进入慢的问题分析
问题是这样的,测试机器中,单个联系人(10068)有180条短信记录,然后每次点击进入延迟2-5秒钟。 在测试人员提供的日志中分析得出,activity显示出来耗时800ms,而list列表显示数据消耗4秒:01-09 16:53:57.280 844 891 I Activi...原创 2018-01-09 19:51:31 · 407 阅读 · 0 评论 -
解读图片圆角代码
引言以前需要做一个图片圆角的功能,在网上搜索代码,然后直接用到项目中。今天又看到这段代码,感觉很陌生。而作为一名不合格的程序员,这种事情是不能不刨根问底的。所以就分析,以便和其他人的理解做对比。代码代码如下(stack overflow): public static Bitmap toRoundCornerImage(Bitmap bitmap, int pixels...原创 2018-04-24 15:13:21 · 851 阅读 · 0 评论 -
删除repo中大文件
平常使用repo拉代码,repo sync 后发现 .repo文件非常大,一般有150G,而项目的全代码也不会超过40G,所以有必要去减少.repo文件的大小。 通过一番查找,下面这个文件比较大:.repo/project-objects/而这些文件下面,pack文件是最大的文件.一般都是1-6G。.repo/project-objects/***.git/objects/p...原创 2018-04-25 18:45:44 · 3880 阅读 · 1 评论 -
反射机制会破坏单例模式嘛
现在已经标准的实现了单例模式(单检查锁,双检查锁,枚举),如果我们通过反射机制调用,是否会产生多个实例,即破坏了单例模式。原创 2018-06-29 12:23:19 · 1690 阅读 · 0 评论 -
关于cocos下编译报错问题
前言本文是关于初学者折腾COCOS 2D X遇到的一个编译错误,错误详情如下:workspace/MyGame/MyGame/proj.android/app/jni/../../../Classes/HelloWorldScene.cpp:180: error: undefined reference to 'MenuScene::createScene()'这个错误说 类Men...原创 2018-06-11 10:02:07 · 1412 阅读 · 0 评论 -
关于CopyOnWriteArrayList的技术理解
前言项目源代码中使用了CopyOnWriteArrayList类,出于好奇就研究它,看它里面有那些优点,作者设计基于什么考虑,能带来那些好处。原注释如下/** * A thread-safe variant of {@link java.util.ArrayList} in which all mutative * operations ({@code add}, {@code...原创 2018-08-01 15:46:21 · 419 阅读 · 0 评论 -
DAGGER2 学习总结
Dagger解决android中的依赖注入问题,即实现控制反转(IoC)技术,Ioc的主要目的是一个类应该重外部获取自身的依赖。Dagger1 含2个缺点:1,因为反射,使得自己变慢;2,使用运行时依赖解决方案,会导致异常崩溃。依赖注入的优点:提高类的重用性和能够独立于其他类来测试他们。注入模式:1.构造器注入:注入方法参数。2.字段注入:注入成员变量。3.方法注入:注入方法参数。依...原创 2018-10-12 14:42:53 · 277 阅读 · 0 评论 -
app 开发遇到一个错误
前言自己在做一个项目,互联网app。app的数据是在服务器上,我已经搭建。手机端是android程序app。现在访问服务器数据出现错误,标记一下,以后解决11-02 18:53:47.729 16511-16511/? I/HomePagePresenter: query items com.androidnetworking.error.ANError: java.net.C...原创 2018-11-02 19:09:04 · 657 阅读 · 0 评论 -
设计模式
装饰着模式代理模式简单工厂模式策略模式原创 2019-01-15 19:55:15 · 147 阅读 · 0 评论 -
dmtracedump 使用方法实战
dmtracedump介绍dmtracedump命令在Sdk包中,路径是android-sdk/platform-tools/,也即是在adb的同级目录下。其中 dm以我的理解应该是 diagram method的首字母简写。dmtracedump主要用途是将我们在代码中添加Debug.startMethodTracing dump的trace文件转换为图表形式。能够帮助我们进行分析程序方法的调...原创 2019-02-23 17:44:13 · 3054 阅读 · 0 评论 -
leetcode 83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3解法代码示例/** * Definition for singly-linked原创 2019-03-14 18:44:20 · 126 阅读 · 0 评论 -
Leetcode 66. 加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。重点...原创 2019-03-14 18:57:19 · 141 阅读 · 0 评论 -
Leetcode 38. 报数
题目报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。给定一个正整数 n(1 ≤ n ...原创 2019-03-15 17:53:50 · 141 阅读 · 0 评论 -
Leetcode 112. 路径总和
题目给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 ...原创 2019-03-15 19:27:55 · 212 阅读 · 0 评论 -
有限状态机(StateMachine)学习总结
状态机定义有限状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 状态机他解决的问题是,在一个系统(比如电梯),系统运行时有多个状态,在状态、事件间切换。 另外一个方面是状态之间的层级关系,如果电梯上行,必须先检查是否关门,如果没有,那么发送关门信息。 下图是短信发送状态机的结构图: 在这个图中,默认原创 2018-01-18 12:22:17 · 2281 阅读 · 0 评论