小胖轩


编码生涯的点点滴滴

Java之NoClassDefFoundError错误

Java中的异常(含错误)主要包含Exception 和 Error 两种,这里简单的分析一下NoClassDefFoundError这个异常,JVM的类加载机制的委托行机制,决定了类加载器只加载一次,子类加载器不会再加载父类加载器已经加载过的类,在一些特定条件下,会出现编译时可以加载到类,运行时不可以加载到类,这时候就会出现 NoClassDefFoundError异常;与之相似的两个异常...

Js内置函数之parseInt

前言 将一个字符串转化为数值是很经常的操作,但是你真的了解Js中的 parseInt 吗?先看几个例子: parseInt("123"); // 123 parseInt("12,3"); // 12 parseInt(1/0); // NaN parseInt("123", 8); // 83 parseInt("012"); // 12 parseInt(012); // 10 pa...

Android 7.0+抓包

在Android 7.0+系统上,开发者可以配置不信任用户证书,进而不能进行https的数据包抓取,相关文档可以查看https://developer.android.com/training/articles/security-config 。 怎么才能像6.0-的系统一样,使用Charles等工具抓包呢? 原理 将用户的证书放进系统证书中,不过这一步的操作需要root权限。 准备...

AOSP Mac平台编译

前言 编译Android源码是一个相对容易的事件,有存储空间和合适的编译环境即可。最近想查看一些应用的布局(Layout), 需要修改Android系统的debuggable属性,这个操作需要设备具有root权限,想着自己有一台pixel XL,何不编译个userdebug版本的rom,除了精简的的应用外,debuggable和root属性也是直接含有的,后续有其他地方调整的话,可以直接修...

本机号码一键登录

前言 在移动app使用手机号码登录的场景中,传统模式的步骤如下: 输入手机号码 接收验证码 输入接收到的验证码 点击登陆 最近看到很多应用都采用了一种新的模式—本机号码一键登录 ,这种模式对于用户来说,只需要确认下手机号码是否正确,点击确认登陆即可,即需要操作传统模式的最后一步,方便快捷,抖音、淘宝等应用均已经接入。 那么本机号码一键登录 的原理是什么呢?下...

Json中的key类型

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯...

端口转发

前言 随着移动App的庞大,自动化测试越来越重要,常见的移动端测试框架有很多, Appium 是比较流行的一个 ,在电脑端安装 Appium Server , 将测试手机连接该电脑后,可以通过api/http请求操作手机。最近尝试了下自动化测试,整体结构图如下: 每一台PC连接一些手机,控制中心(Control Center)负责将指令下发给PC上的 Appium Server,最终...

基于ElasticSearch的内容检索系统

前言 gitbook 是目前流行的电子书制作工具,很多文档基于此构建,团队内部文档也是一样的。由于模块比较的多且复杂,各个模块的文档分别对应一个gitbook,职责明确了,但查找起来却麻烦很多,同时gitbook 查看文档的方式相对简单,不能根据文档相关性进行排序。 需求 多个gitbook文档能够提供统一查询入口 全文检索,根据相关性排序 提供文章访问热度 支持文章...

Andorid开发调试之run-as

前言 Android开发中,经常会将一些文件放在内部目录中,即/data/data/pacakge_id中,db文件也在该目录中 ,在非root的手机中,我们无法直接访问 /data/data 下的文件,调试起来非常的不方便,解决的办法有几种: 找一台root的手机,想看什么看什么 断点调试,可以稍微麻烦的看到本应用的目录及文件 r...

Arrays.asList之UnsupportedOperationException

前言 Java中经常会数组转化为List的场景,Java中的Arrays 中提供了一个 asList 方法可以快捷的转化,我们来看下面一段代码: import java.util.Arrays; import java.util.List; public class Test { public static void main(String[] args) { ...

内容共享

背景 工作时有两台主力电脑,一台Mac,一台Ubuntu,之前经常基本上是Mac共享内容给Ubuntu,也有了剪切板同步这篇文章。随着Ubuntu上做的事情越来越多,也需要反向共享,结合日常工作中也需要和很多业务方同学来进行文本、图片的共享,于是决定做一个简单内容共享的Web应用。 目标 多设备间可以访问,共享文本和图片。 支持房间,可以针对特定的共享有单独的区域。 支持...

HashSet.add覆盖问题

背景 假定对象A、B的hash值相同,equals方法也想等,那么向 HashSet 中顺序添加A、B,最后集合中保留的是A或者B或者是A和B呢? 编码 看以下代码,分析下输出: package me.codeboy.test.hash; import java.util.Objects; /** * hash bean * Created by yuedong.li on ...

Andorid AppLink配置

前言 客户端开发中,经常会遇到appA跳转appB的场景,之前Android中使用比较多的是 DeepLink,ios中对应的是 Scheme, 两者基本类似,在用户触发某个操作后,系统提示是否打开对应app,用户选择同意后进入指定app。 DeepLink 一方面流程上稍微长一些,另一方面存在scheme 被别人占用等问题,在Android6.0,有了 AppLink, 可以完美解决上...

Javascript的undefined和null

Javascript中的 undefined 和 null 非常的常见,它们有什么不同呢?首先看几个简单的示例: var a = undefined; var b = null; console.log(a == b); console.log(a === b); console.log(typeof(a) == typeof(b)); console.log(a + 1); consol...

Java源码在线编译执行

在告警平台中,经常会用到规则配置,一些简单的规则配置可以使用基本表达式来完成,对于一些复杂的规则,很难进行表达或者完全覆盖,如果告警规则等由一些具备编程能力的开发同学来完成,是否可以考虑规则直接使用源码来描述,动态执行呢?这样可以在系统不重新部署的情况下加入新的规则配置。 下面我们根据 JDK6 中新增的 JavaCompiler ,来实现源码线上编译,完成简单类的线上运行,并获取对应的结...

Java字符串单字符分割

Java中分割字符串经常会使用到 String.split ,本文中针对单字符分割的场景进行简单讨论,首先看几个例子: "".split("=") //示例1 "=".split("=") //示例2 "==".split("=") //示例3 "=".split("=", 1) //示例4 "=".split("=", 2) //示例5 "=".split("...