- 博客(203)
- 资源 (6)
- 收藏
- 关注
原创 Android Studio 编辑卡顿
google官方https://developer.android.com/studio/intro/studio-config.html#low_memory
2021-12-21 17:31:36 1622
原创 开发的过程中注意下自己的代码质量
背景大多数项目中,存在着或多或少的“屎山”代码,这些代码臭不可闻,又无法进行变更,让人每次看到都不仅眉头紧皱,直呼What’s up! 为了不让别人在接手自己代码时一边厚礼蟹,一边优美的中国话,所以在开发的过程中也要关注自己的代码质量问题。本文仅从Android开发角度阐述。魔法值代码中遗留魔法值,比如1000,0, 10, 1.0,这些值单独出现在某一处代码,会让人摸不着头脑,且如果涉及到传参协议的地方,如果用魔法值为key,很可能在解析数据的地方会出现错误的解析。这些既不美观,也存在风险。if
2021-10-22 17:51:06 270
原创 oppo手机一直开启usb调试
别问,问就是拨号输入*#8011#, 在此跪求oppo ui开发者请不要搞这个调试了,同是开发者,何必相互为难
2019-08-14 10:48:57 3903 2
原创 Android优化小技巧
本篇文章只是简单的总结下一些android的优化小技巧,欢迎有其他方式的同学联系我补充!im.noclay@gmail.comcell的预载对于一些列表,我们希望cell中的图片在出现在屏幕中的时候就是已经加载完毕的,或者是其他的需求。我们可以通过以下方式进行设置:拓展LayoutManager示例代码:LinearLayoutManager linearLayoutManager = ...
2019-05-16 19:50:17 225
原创 软件加速,潜在的掉帧攻击者
问题的暴露与探索使用universal图片库过程中发生了页面掉帧1. 迁移的图片库的用法导致问题,根据uc侧图片库用法进行了对图片适配器做了修改。2. 容器问题: 2.1 单独使用原生RecyclerView的页面 2.2 使用原生ImageView的页面 2.3 使用原生RecyclerView、ImageView页面 2.4 使用原生ListVie...
2019-02-27 20:29:58 294
原创 Demo安装后无图标但可以运行排查
自己写得测试应用安装后发现找不到应用图标,但是可以运行。可以尝试进行调试三部曲:1、AndroidManifest中application元素属性设置问题属性设置错误<application android:icon="@drawable/icon" android:label="@string/app_name">设置图标为icon,而上面的icon资源文件不存在解决方法...
2019-01-25 16:49:17 197
原创 记一个Android Studio的坑
写在前面Android Studio的错误提示是个非常好的东西,在我们编程错误的时候都会给出提示,但是凡事都有例外,下面介绍一个例子LinearLayout例如LinearLayout内部如果包含了多个子View的时候,会提示我们设置android:orientation="vertical"或者是horizontal。也就是设置子View的布局次序。比如如下代码: ...
2018-04-20 10:12:23 357
原创 简单工厂模式
简单工厂接口接口是一种特殊的抽象类,跟一般的抽象类相比,接口里的所有方法都是抽象方法,接口里的所有属性都是常量。也就是说接口里面只有方法定义没有任何方法实现。接口的思想是”封装隔离”简单工厂示例代码:https://github.com/GeniusVJR/DesignMode_Java/tree/master/SimpleFactory客户端在调用的时候,不但知道...
2018-02-20 16:32:06 197
原创 原型模式
原型模式模式介绍模式的定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。模式的使用场景类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗;通过 new 产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式;一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多...
2018-02-08 20:27:26 160
原创 Builder模式
Builder模式模式介绍模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。简单来讲: 当设计一个类的时候,如果它包含复杂的内部成员,那么就推荐使用Builder模式,否则整个构造函数就会过于臃肿,扩展性降低。模式的使用场景相同的方法,不同的执行顺序,产生不同的事件结果时;多个部件或零件,都可以装配到一个对象中,但...
2018-02-08 20:11:42 181
原创 单例模式
单例模式关键点构造函数不对外开放,一般为private通过一个静态方法或者枚举返回单例类的对象确保单例类的对象有且仅有一个,尤其是在多线程的环境下确保单例类的对象在反序列化时不会重新创建对象懒汉模式public class Singleton { private static Singleton instance = null; private
2018-02-06 20:49:05 236
原创 面向对象六大原则
面向对象六大原则1. 单一职责原则(Single Responsibility Principle)一个类而言,应该仅有一个引起它变化的原因。一个类中应该是一组相关性很高的函数、数据的封装。简单来讲: 一个类的功能职责应该是单一的,举个栗子,如果要编写一个图片加载器的功能,那么图片加载,和图片缓存等功能点应该分离开,比如专门写一个类负责图片的本地缓存,这样可以降低程序的耦合
2018-02-06 20:33:09 165
原创 Java写文件的方式-二进制文件
前言当大家面临需要持久化的数据的时候,可能会面临很多选择,比如数据库,文件等。博主这里有一个需求,有很多组数据,0-4096的整型,很显然如果使用数据库,每一组数据作为一条记录,总是感觉浪费,而且这些数据,单一值的价值并不大,通常需要几百组放到一起才有价值。所以如果将几百组数据汇聚到一个cache文件中,那就可以解决这个问题了,但是考虑到整型,如果我们可以直接利用整型进行存储,那是不是可以达到最高的
2017-12-08 11:08:45 24649 1
原创 如何看待Handler使用中的警告
如何看待Handler使用中的警告相信很多时候,我们都可以看到自己在使用Handler的过程中,好像得到了一个warning,虽然只是一个警告,但这总是让强迫症的我们有那么一丝丝不爽。那么应该如何解决这样的警告呢?如图可见:可以看到提示信息:This Handler class should be static or leaks might occur[这个Handler类应该是静态的,否则可能会发
2017-11-25 20:46:01 436
转载 夜间模式的切换的实现方式
声明整理自http://www.jb51.net/article/93852.htm本文中给出三种切换日间/夜间模式的方案用 setTheme 的方法让 Activity 重新设置主题;设置 Android Support Library 中的 UiMode 来支持日间/夜间模式的切换;通过资源 id 映射,回调自定义 ThemeChangeListener 接口来处理日间/夜间模式的切换。
2017-10-17 18:06:17 1451
原创 LeetCode日常刷题(3)
7. Reverse IntegerReverse digits of an integer.Example1: x = 123, return 321 Example2: x = -123, return -321click to show spoilers.Note: The input is assumed to be a 32-bit signed integer. Your funct
2017-09-25 17:31:17 324
原创 LeetCode日常刷题(2)
4. Median of Two Sorted ArraysThere are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).E
2017-09-24 20:52:15 427
原创 LeetCode日常刷题(1)
1. Two SumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use th
2017-09-23 13:58:31 299
原创 APK的安全(二)--如何防御
如何防御1.代码混淆原理:“用不能直接猜出含义的通用变量名和函数名a,b,c等”替换编译后程序包中“具有明显语义信息的变量名和函数名”。这样,通过逆向工程得到的只是 难以理解 的代码。从混淆的原理可以得出以下两点信息:重命名变量名可能会导致程序异常。因为程序是需要跟平台交互的,平台只会以固定类名来调用我们的app,这就涉及到需要屏蔽不能重命名的函数及类 proguard.cfg文件就是起这个作用的
2017-09-18 16:38:24 2481
原创 APK的安全性(一)--如何攻击
APK的安全性可以通过修改客户端文件篡改客户端行为。攻击者可以让客户端显示自己制作的钓鱼网站,偷取用户信息以下攻击部分摘自知乎:https://www.zhihu.com/question/41368839/answer/112182560防御部分摘自如下博文:http://blog.csdn.net/jiangwei0910410003/article/details/48415225http:/
2017-09-18 16:35:58 2572
原创 字符串压缩算法
字符串压缩算法前言说起压缩算法,记得曾经有一个故事,说有一个外星人来地球研究人类,得到了不可思议级别的数据量,所以需要对数据进行压缩,首先它将所有的数据排列起来得到一个字符串,然后将字符串转换为一个数串,如果将整个数串看作一个大数,那么就压缩为了一个不可思议的数字,那么问题来了,如果这个外星人有一个十分精确的刻录方式,将整个飞船的长度看作1,取一个数值的倒数,那么在那个位置标记一个点,于是整个数据就
2017-09-12 12:39:31 34689 1
原创 京东Android第二题:神奇数
题目描述 给出一个区间[a, b],计算区间内“神奇数”的个数。 神奇数的定义:如果一个数的数字组合可以分成两部分A,B,如果A部分之和等于B部分之和,则这个数是一个神奇数。 比如:242,存在[2,2]和[4],2 + 2 = 4,则242是神奇数。输入描述: 输入为两个整数a和b,代表[a, b]区间 输出描述: 输出为一个整数,表示区间内满足条件的整数个数
2017-09-08 21:25:49 719
翻译 初识OkHttp(一)
OKHttpAndroid为我们提供了两种HTTP交互的方式:HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接池,已足够满足我们各种HTTP请求的需求。但更高效的使用HTTP可以让您的应用运行更快、更节省流量。而OkHttp库就是为此而生。OkHttp是一个高效的HTTP库: 支持 SPDY ,
2017-09-04 17:44:35 733
原创 初识TCP(一)
一、TCP协议的作用互联网由一整套协议构成。TCP只是其中的一层,有着自己的分工。(图片说明:TCP是以太网协议和 IP协议的上层协议,也是应用层协议的下层协议。)最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包(packet),解决了子网内部的点对点通信。(图片说明:以太网协议解决了局域网的点对点通信。)但是,以太网协议不能解决多个局域网如何互通,这由 IP协议解决。(图片说明:
2017-09-04 10:22:36 272
原创 图片加载库对比
图片加载库原理为什么要使用三级缓存如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响特别是,当我们想要重复浏览一些图片时,如果每一次浏览都需要通过网络获取,流量的浪费可想而知所以提出三级缓存策略,
2017-08-30 17:45:07 476
原创 关于Crash和ANR以及应用保活
如何记录应用crash首先,引起应用crash的可能是我们对于NullPointer等未进行合理的处理导致的,所以这些抛出的异常没有被很好的处理,那么如果我们的应用发生了这样的crash,应该怎么去监听呢?解决办法:设置默认的未处理异常处理机制,例如:public class CrashHandler implements Thread.UncaughtExceptionHandler {
2017-08-30 17:11:45 1742
原创 阿里测评题目:跑得快
阿里测评题目:跑得快题目描述单牌:一张一张的出牌,大小顺序是2>A>K>Q>J>10>9>8>7>6>5>4>3。 顺子:5张以上连续的单牌,最大JQKA2,最小A2345 对子:成双出牌,大小顺序:2对>A对>K对>Q对>J对>10对>9对>8对>7对>6对>5对>4对>3对。 连对:两个及以上相连的对子比如:2233 778899 其中2233也可以连,但是是最小的连队,AA2233是最小的三连
2017-08-29 17:41:13 2181
转载 响应式编程
响应式的由来我们先来聊一聊响应式的由来,对于它的由来,我们可能需要先从一段常见的代码片段看起int a=1;int b=a+1;System.out.print(“b=”+b) // b=2a=10;System.out.print(“b=”+b) // b=2上面是一段很常见的代码,简单的赋值打印语句,但是这种代码有一个缺陷,那就是如果我们想表达的并不是一个赋值动作,而是b
2017-08-29 17:18:08 824
原创 热修复初识
热修复技术APP提早发出去的包,如果出现客户端的问题,实在是干着急,覆水难收。因此线上修复方案迫在眉睫。概述基于Xposed中的思想,通过修改c层的Method实例描述,来实现更改与之对应的java方法的行为,从而达到修复的目的。阿里的基于C/C++层操控method指针的Dexposed,AndFix,以及QQ空间的基于dex分包的HotFix,后者和前者的热修复方案在原理上截然不同,可以说各有千
2017-08-29 16:24:10 511
原创 RxJava笔记2
背压问题背压是指在异步场景中,被观察者发送事件速度远快于观察者的处理速度的情况下,一种告诉上游的被观察者降低发送速度的策略简而言之,背压是流速控制的一种策略。需要强调两点:背压策略的一个前提是异步环境,也就是说,被观察者和观察者处在不同的线程环境中。背压(Backpressure)并不是一个像flatMap一样可以在程序中直接使用的操作符,他只是一种控制事件流速的策略。响应式拉取(reacti
2017-08-29 14:49:15 305
原创 RxJava笔记1
RxJava为什么要使用RxJava,因为RxJava能够简化逻辑,虽然代码量可能变多,但带来的是更好的逻辑体现。RxJava的异步实现它的实现方式是通过一种扩展的观察者模式来实现的。上面一根水管为事件产生的水管,叫它上游吧,下面一根水管为事件接收的水管叫它下游吧。两根水管通过一定的方式连接起来,使得上游每产生一个事件,下游就能收到该事件。注意这里和官网的事件图是反过来的, 这里的事件发送的顺序是先
2017-08-29 14:48:34 298
转载 Java线程与内核线程
整理自:https://my.oschina.net/u/1859679/blog/1517807http://gityuan.com/2016/09/24/android-thread/线程的实现线程是比进程更轻量级的调度执行单位,在linux里面,线程和进程没有什么区别,唯一的就是在地址空间,线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。目前主流的操作系统都提供的线程实现,java则
2017-08-28 17:49:50 6788
转载 十道海量数据处理面试题
转载自:http://www.cnblogs.com/shipengzhi/archive/2011/10/26/2224631.html第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法, 比如模1000,
2017-08-28 14:23:07 240
原创 Bluetooth
这是一个折线图的自定义View,用户可以自定义添加线的条数,具体使用方法如下。 项目地址:https://github.com/NoClay/UtilsDemoBluetooth这个SDK,封装了蓝牙通信相关的模块,使用了装饰者,单例,策略等设计模式,进行了抽象,蓝牙操作均通过Bluetooth进行,在UtilsDemo中利用SDK,实现了一个蓝牙聊天的功能,个人使用中,可以自由拓展。涉及权限蓝
2017-08-25 14:51:45 526
转载 Typora的使用
Typora是一个功能强大的Markdown编辑器,使用GFM风格(即大名鼎鼎的github flavored markdown),Typora目前支持Mac OS和Windows,Linux版本尚未发布。Typora可以插入数学表达式,插入表情,表格,支持标准的Markdown语法,可以使用标注….,功能强悍!!!还可以导出PDF文件和HTLM文件。实时预览!!!非常牛逼!Typora界面数学表达
2017-08-25 14:47:11 8526 4
转载 ContentProvider的详解
转载自:http://blog.sina.com.cn/s/blog_49f62c350101hhhl.html一.Android四大组件Android四大组件是Activity, Service, Content Provider, Broadcast Receiver。Activity作为程序界面,直接与用户交互Service运行在后台,没有界面,完成特定的功能ContentProvider维护
2017-08-23 18:17:54 422
转载 杀进程场景
转载自:http://gityuan.com/2016/04/23/kill_process_case/一. 杀进程场景理解杀进程的实现原理, 介绍了杀进程的过程, 接下来本文介绍系统framework层, ActivityManagerService在哪些场景会调用ProcessRecord.java中的kill()方法来杀进程.void kill(String reason, boolean n
2017-08-23 17:12:04 5086
转载 高性能编码优化
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43376527在前面几篇文章当中,我们学习了如何通过合理管理内存,以及高性能编码技巧的方式来提升应用程序的性能。然而实际上界面布局也会对应用程序的性能产生比较大的影响,如果布局写得糟糕的话,那么程序加载UI的速度就会非常慢,从而造成不好的用户体验。那么本篇文章我们就来学习一下,如何通过
2017-08-17 11:56:11 718
头像的选择截取、上传和下载Demo
2016-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人