- 博客(116)
- 资源 (7)
- 收藏
- 关注
转载 MAC上Chrome关闭黑暗模式
方法:1、打开 Chrome,或基于 Chromium 的浏览器;2、在URL处输入 chrome://flags/#enable-force-dark确保Force Dark Mode for Web Contents 和 Web Platform Controls Dark Mode选项都是Disabled状态。亲测管用。来源:https://blog.csdn.net/weixin_50680634/article/details/113681106...
2021-08-17 12:33:00 3608
原创 Fragment must be a public static class to be properly recreated from instance state.
最近在调试一个老库时,遇到一个崩溃: Caused by: java.lang.IllegalStateException: Fragment com.lianjia.common.ui.gallery.ui.PermissionNotGrantedFragment must be a public static class to be properly recreated from instance state. at android.app.BackStackRecord.d
2020-07-01 12:51:25 1696
原创 Mongodb常见查询语句用法总结
我们公司内部针对APP端做了一个网络监控平台,用来监控APP端的网络性能。其中的原始数据是用mongdb存储的。经常会有业务同学找来,说要查看采集的原始数据。在后端RD忙不过来的时候,就需要端上同学自己上手查。这里把经常使用的查询语句总结出来,方便大家参考。一、统计数据量 count()方法实例:查找2020.05.30日某个APP(app_id为2)某个域名的网络请求总条数涉及的表为:req_base_info_20200530表中每条数据样式为:{ "_id" : ObjectId("
2020-06-02 20:08:42 472
原创 Boolean.valueOf("1")与Boolean.parseBoolean("1")的取值
Boolean.valueOf(“1”)与Boolean.parseBoolean(“1”)的取值 boolean r1 = Boolean.valueOf("1"); boolean r2 = Boolean.parseBoolean("1"); boolean r3 = Boolean.parseBoolean("TRUE"); boolean r4 = Boo...
2020-03-23 22:38:17 1790
原创 Expected a com.google.gson.JsonObject but was com.google.gson.JsonNull
发现调试日志中有如下异常日志:com.google.gson.JsonSyntaxException: Expected a com.google.gson.JsonObject but was com.google.gson.JsonNull查看对应代码: if (!TextUtils.isEmpty(refString)) { try { digPos...
2020-02-04 23:23:03 8738 1
原创 Replugin插件化框架核心原理
插件化技术随着360公司2016年DroidPlugin、2017年RePlugin的相继公布和开源,达到了顶峰。随后这几年进入了普及和落地期,到今天已不再新鲜和热门。但对于以插件化框架为基础架构进行业务开发的同学而言,熟悉其原理和具体实现,不仅是工作本身需要,也能增进Android内功的修炼。相信了解过Replugin的同学都知道,Replugin的最大特点是坑位和唯一Hook点。那么问题来...
2019-12-29 01:59:23 989
原创 海神平台网络监控SDK(Android)开发经验总结
海神平台是我们自主研发的一个移动端质量监控平台,从去年7月份开始至今,已陆续上线了Crash监控、ANR监控、网络监控、自定义错误等功能,目前已接入了公司内10余款APP。针对Crash我们之前在《海神平台Crash监控SDK(Android)开发经验总结》一文中有专门介绍,本文会着重讲一下Android端在开发网络监控SDK过程中的一些实践和经验。希望大家能有所收获。一 完整网络请求的流程一...
2019-08-16 00:07:27 1308
原创 获取Android应用名称的方法
如何获取APP的名称?网上找到的方法是: public static String getAppName(Context context) { if (context == null) { return null; } try { PackageManager packageManager = context.getPackageManager(...
2019-08-05 18:04:37 9485
原创 海神平台Crash监控SDK(Android)开发经验总结
海神平台是我们自主研发的一个移动端质量监控平台,从去年7月份开始至今,已陆续上线了Crash监控、ANR监控、网络监控、自定义错误等功能,目前已接入了公司内近10款APP(不区分Android和iOS平台)。本文将主要分享Android端在开发Crash监控SDK过程中的一些实践和经验。希望大家能有所收获。一、Java层异常捕获系统提供了一个钩子:Thread.setDefaultUncau...
2019-07-09 16:02:17 1492
原创 如何解析没有Body体的Response
在开发过程中遇到一个问题:后端API返回的Response里没有Body,API成功与否是根据HTTP的status来表示的。那么APP端如何处理呢?如果使用的是Retrofit网络库,则将返回体置为“Void”即可。同步和异步的方法声明示例如下: @POST Call<Void> syncApi(@Url String url, @HeaderMap Map<...
2019-07-09 15:57:11 1487
原创 Linux环境下jenkins插件Gerrit Trigger配置--"/var/lib/jenkins/.ssh/id_rsa" does not exist.
Gerrit可以实现在线代码Review的功能,与GitLab的merge request功能相当。目前想在Gerrit的基础上增加静态代码扫描的功能,以进一步提升代码质量。网上搜到的技术方案是:Gerrit + Jenkins + Gerrit Trigger。一句话概括就是:在Jenkins上创建一个代码检查的工程,通过pom文件方式配置号第三方的静态代码扫描工具;Jenkins通过Gerri...
2018-07-13 16:30:41 6921 4
原创 小米手机上微信双开-初窥
在小米手机上,通过在设置页面,输入“应用双开”,可以进入APP分身的列表页面。列表中出现的是手机支持分身的APP,切换开关,即可开始分身。 选中微信进行分身后,桌面上出现了第二个有角标的微信。点开后使用,与本尊APP无差别。 但是通过adb命令调用微信的页面,发现打开的都是本尊微信,分身的微信无法被调用。 使用cmd命令查看,发现如下差别:shell@rolex:/ $ ps |gr...
2018-05-15 11:37:20 3176 1
原创 uiautomator使用总结
uiautomator是Android提供的一个UI自动化测试框架,一般与AndroidJUnit4单元测试框架配合使用。一、首先我们来编写一个demo:1.目录结构使用Android Studio创建新的project时,在app/src/目录下会自动创建三个子目录: androidTest、main、test。 如上图所示,我们将在androidTest目录下编写测...
2018-04-03 15:26:08 4604
原创 [Java基础]关于String的一些基础
参考: 1.几张图轻松理解String.intern() 2.Java技术——你真的了解String类的intern()方法吗关于String,会有这么几个经常提起的概念:==关系符,+号、new、intern,final,字面量、static,方法参数。 String是一种特殊的Java对象。注意,它归根结底还是一种对象。 首先要知道: new的含义是:在堆上创建一个新对象。 使...
2018-03-22 20:40:21 263
原创 [Java基础]ArrayList的contains方法,你用对了吗?
最近在代码Review中发现,有同学错用了数组的contains方法。示例如下:public class ListItem { private int id; private String name; public ListItem(int id, String name) { this.id = id; this.name =...
2018-03-22 17:22:47 52554 3
原创 Java 下载解析Excel文件 报错:jxl.read.biff.BiffException: Unable to recognize OLE stream
项目开发需要先下载excel文件,然后解析出内容,最后将内容分批次下发给APP端。 在创建Excel的解析实例Workbook时,发现构造函数的入参是InputStream,心中窃喜。public static Workbook getWorkbook(InputStream is)随即就将从HttpURLConnection处得到的InputStream内存流传给了Workbook...
2018-03-13 12:20:16 2533
原创 Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named
在学习python的过程中会遇到如下错误:>>> import mytestTraceback (most recent call last): File "", line 1, in module>ImportError: No module named py>>>问题排查: 1.首先请在Python的模块默认目录中查看是否有“mytest.py”脚本;Windows下,
2018-01-31 19:44:25 239299 10
原创 APP版微信机器人技术方案详解
GitHub上有很多关于微信机器人的实现版本,这里讲一下如何在安卓手机上实现一个微信聊天机器人。思路大致都是一样的,突破口都是调用微信的网页版的接口,进行网页登录,进而获取到微信里的聊天内容,然后调用聊天发送接口将内容发送给微信。一、网页版的接口大致分为五类: 1.登录相关;接口jslogin、qrcode、webwxnewloginpage、webwxlogout 2.初始化相关;接口:web
2018-01-03 21:33:55 11077 1
原创 算法-数组元素循环右移
题目:有整数数组a,求其循环右移k位后的值,要求最小空间复杂度。 例如: int[] a = {1,2,3,4,5,6,7};循环右移5位后, 值为:{3,4,5,6,7,1,2}。 最基本的实现: public void toRightMove(int[] nums, int k) { if (k == 0 || k == nums.length) {
2017-12-07 12:00:37 1208
原创 算法 - 合并两个有序数组为一个有序数组
题目:有ListaList和ListbList两个有序数组,将其合并为ListcList。 如:ListaList = {1,3,5,7,9}; ListbList = {2,4,6,8,10}; 合并之后,cList为{1,2,3,4,5,6,7,8,9,10}.背景:这是算法面试中常见的题目,笔者经历中快手和昆仑万维,都出的是这个题。算法实现如下: private List<Inte
2017-11-30 10:35:53 5340
原创 快速排列
参考:搜狗百科 快速排序特点:基于分治法,选取某一个元素作为主元,将原集合分为三部分:左边集合的元素都小于等于主元,主元,右边集合的元素都大于等于主元。 然后利用递归思想,对左右两边的集合分别进行快速排序。快速排序在一般情况下是最实用的排序方法之一。算法在最坏的情况下运行时间为O(n^2),平均时间复杂度为O(nlogn)。。空间复杂度为S(1),即常数级空间。但需要注意递归栈上需要花费最少log
2017-11-14 12:45:54 292
原创 android中通过代码实现文件权限修改
前提:1.手机被root; 2.该app已经取得了root权限。目的:试图获得系统文件夹下的文件的读写权限。实现:我们要使用的命令是:chmod -R 0777 xxx/xxx等系统目录或文件命令解读:在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读、写、运行设定权限。 读、写、运行三项权限可以用数字表示,就是r=4,w=2,x=1。所以,rw-r–r–用数字表示成
2017-11-13 17:06:02 3127
原创 字符串-组合
题目:给定一个字符集合,求其元素拆解后的所有组合。 如:给定集合{a,b,c},其元素拆解后的所有组合为:I/System.out: cI/System.out: bI/System.out: bcI/System.out: aI/System.out: acI/System.out: abI/System.out: abc参考:Java实现全排列、组合算法Java代码实现:
2017-11-13 16:31:34 214
原创 字符串-放回全排列
题目:求一个字符集合的放回全排列。 如:{a,b,c},输出结果为27种:I/System.out: aaaI/System.out: aabI/System.out: aacI/System.out: abaI/System.out: abbI/System.out: abcI/System.out: acaI/System.out: acbI/System.out: accI
2017-11-13 16:11:23 410
原创 字符串-全排列
题目:输入一串字符,然后对字符进行全排列并打印。 如“abc”,全排列结果为:”abc”,”acb”,”bac”,”bca”,”cab”,”cba”。 这是笔者经历的阿里一面的笔试题,折戟在此,是以为记。参考:Java实现全排列、组合算法分析: 1、从字符串中选择一个作为第一个字符,然后对剩下的字符串进行全排列; 2、核心内容就是置换; 3、打印放在递归的出口处进行; 4、要考虑去重。J
2017-11-13 15:34:29 425
原创 也来分析下Java 线程池(ThreadPoolExecutor)的原理
先提几个问题: 1.线程池的工作原理是啥? 2.核心线程池是一开始时就创建够吗?空闲时核心线程池也一直维持不变吗? 3.线程池是如何被停止的?如果你都能非常自信地回答出来,那后面的内容可以不用看了。参考文章: 《Java 线程池(ThreadPoolExecutor)原理分析与使用》一、线程池的使用1.创建线程池:通过new创建,构造函数为: public ThreadPoolExecut
2017-10-19 20:34:08 470
原创 TCP基础知识整理
一、一些常见的网络命令(Windows平台): 1.查看IP地址的命令:ipconfig -a2.DNS的正向解析命令:nslookup www.baidu.com3.反向解析命令:nslookup -qt=ptr IP地址4.ARP表:arp -a5.查看路由控制表:netstat -anetstat -rnetstat -rn6.traceout:充分利用ICMP超时消息的一款应用:tra
2017-10-11 17:53:37 792
原创 2017.09.28 头条面试一面基础知识题
有幸去头条参加了面试,不幸的是一面就折戟而归了,下面是回想到的面试问题,有需者可以拿走。 1.HashMap的实现原理,hash值冲突怎么办?是线程安全的吗?线程安全是怎么实现的 2.apk解压后的文件组成,资源放在哪里,.so库放在哪里 3.handler,looper,message关系 4.handler中的内存泄漏是怎么造成的 5.leakcanary的实现原理 6.java中异
2017-09-30 10:09:06 587
原创 Linux常用命令
最近在慕课网上看了《Linux达人养成计划1》的免费课程,课件讲得非常好,通俗易懂,简明扼要。现总结如下: 一、命令基本格式 [root@localhost ~]# 其中: root:当前登录用户 localhost:主机名,localhost是Linux的默认主机名 ~:当前所在的家目录,即用户的初始登录位置。对于管理员用户来说,家目录是根下的一级目录:/root;对于普通用户(例如u
2017-09-14 20:22:46 682
原创 HTTP基础知识总结
历时两个月,读完了《图解HTTP》和《图解TCP/IP》,上周在组内给大家分享了关于HTTP的基础知识《HTTP基础知识知多少》。准备课件的过程中是忐忑和焦虑的,分享的过程中是略微紧张的,但是分享之后的感觉是爽歪歪的。建议大家坚持分享,坚持写作。关于HTTP,主要有以下知识点: 1.弄清楚概念之间的关系:HTTP、HTTPS、HTTP2、SPDY、SSL/TLS 2.HTTP Header的作
2017-08-29 10:55:35 507
原创 微信mars学习笔记
微信的Mars网络框架是2016年12月28号开源的。 前一段时间开始对其进行了连续的学习和了解。 一、主要的学习资料如下: 1. 微信公众号的文章: 2017.01.10 微信Mars——移动互联网下的高质量网络连接探索(周志杰) http://www.infoq.com/cn/presentations/wechat-mars-high-quality-network-con
2017-07-18 11:50:32 10713 5
原创 使用百度地图SDK进行地址搜索、定位的工作小结
近期因为需求开发的原因,使用了百度地图SDK,现总结如下: 一、地址搜索页面 很多同学一上来就会想到使用SuggestionSearch类来实现,但是SuggestionSearch的本身含义是搜索联想词,即热词。在其侦听方法setOnGetSuggestionResultListener的回调里: @Override public void onGetSuggestionRe
2017-06-24 17:55:17 9171
原创 使用ListView时的注意事项有哪些
以下是从平时工作中总结出来的,不知道这些”小坑”,你遇到过没有: 一、setAdapter与addHeaderView语句的调用顺序有啥要求吗? 答:有要求。要求先addHeaderView然后才能setAdapter。否则在sdk 4.2版本的机器上就会崩掉。出现如下错误:java.lang.IllegalStateException:Cannot add header view to lis
2017-06-24 16:11:30 371
原创 Android中常用的正则表达式(持续补充中)
参考:Android中的正则表达式语法 项目实践: 1.高亮文本中数字部分 例如要展示:附近有200+个工作机会 如果红色部分的数字是可变的,但是在页面中没有其他用途,那么在与Server端制定接口协议时,这句话就可以当做一个字段返回,红色效果由APP这边来实现。代码如下: tv_near = (TextView)findViewById(R.id.tv_near);
2017-06-16 12:00:07 438
原创 Android的UI主线程是ActivityThread吗?
Android的UI主线程是ActivityThread吗?这是个从来没反思过的问题。 总结一下,回答应该是:严格来说,不是的。ActivityThread类是Android APP进程的初始类,它的main函数是这个APP进程的入口。APP进程中UI事件的执行代码段都是由ActivityThread提供的。也就是说,Main Thread实例是存在的,只是创建它的代码我们不可见。Activity
2017-04-21 20:01:16 2149
原创 实例跟读ListView复用原理
关于ListView复用机制的,现总结如下: 1.ListView的复用是通过内部类RecycleBin来实现的; 2.RecycleBin会为每种ItemType最多保留一屏幕的View,本文中的例子,是11个,慢慢滑动时会是12个。这取决于ItemView的高度、ListView的最大高度,以及数据源的条数。 3.RecycleBin中复用机制只在同一种ItemType中进行。负责复用存储
2017-04-20 15:50:51 411
原创 图解Google官方示例的各种android框架
Goolge官方的Android框架源码见:GitHub工程; 毋庸置疑,官方给出的框架示例应该是最标准也最具有普适性的。本文根据工程中的示例,画出了各个框架的架构图,以方便快速学习和了解。 1。常见的MVC框架如下图所示:框架-mvc 2.常见的MVP框架如下图所示:框架-mvp 3.在MVP框架基础上,通过LoaderManager实现异步获取数据的框架:框架-mvp-loade
2017-04-05 18:04:26 4437
原创 [笔记]对于关键字volatile的理解
关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制。 在《深入理解Java虚拟机》第2版(周志明著)一书中,作者认为volatile有两个语义/特性: 一是:保证此变量对于所有线程的可见性; 二是:禁止指令重排序优化。 下面将分别来解读。 这里的大背景是Java内存模型。 “内存模型”可以理解为在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。不同架构的
2017-03-17 16:31:28 346
原创 [笔记]Java语言的“重载”和“重写”
在《深入理解Java虚拟机》第2版(周志明著)一书中,作者总结到: 今天(直至还未发布的Java1.8)的Java语言是一门静态多分派、动态单分派的语言。这里主要有4个概念: Java语言层面:重载、重写; 虚拟机层面:静态分派、动态分派 预先说说前置概念:Human man = new Man();语句中,“Human”是变量man的静态类型(Static Type),或者叫做外观类型
2017-03-17 13:38:10 401
Android Studio环境下face++的demo
2016-04-11
MacPorts-2.3.3-10.10-Yosemite.pkg
2015-04-14
Charles3.10破解包
2015-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人