自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 ES6代码转为ES5代码的在线转换工具

1.Babel,在线转换地址 2.Traceur,Google公司出品,在线转换地址

2017-05-08 20:51:25 72568 2

原创 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

face++在线识别apk

人脸识别face++的demo版apk,它的sdk分在线版和离线版,这里使用的是在线版的Api。

2016-04-11

Android Studio环境下face++的demo

人脸识别face++,其官网给出的demo是在Eclipse环境下搭建的,这里给出了在Android Studio环境下的demo,导入后可直接运行

2016-04-11

face++ 在线识别版apk

face++ 在线识别版apk

2016-04-08

face++在Android Studio环境下的demo工程

face++在Android Studio环境下的demo工程

2016-04-08

sqlitebrowser-3.5.1.dmg

官网地址为:http://sqlitebrowser.org/,该版本适用于MAC系统。

2015-04-14

MacPorts-2.3.3-10.10-Yosemite.pkg

官网地址是:https://www.macports.org/install.php,该MacPorts是2.3.3版本的,适用于OS X 10.10系统

2015-04-14

Charles3.10破解包

Charles3.10安装包是从官网下载的:http://www.charlesproxy.com/download/ ; 破解包是从CSDN中下载得到的。 下载破解包后,替换掉安装目录下的charles.jar即可。

2015-04-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除