自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

倚竹幽篁

心静,成器。[github/ysy950803]

原创 Ubuntu 18.04/16.04安装最新版QQ和微信

最近升级到了18.04,发现之前装的QQ就用不了了,于是重新搞一下。 安装包什么的都是取自这个大神的:https://phpcj.org/wineqq/ 我这里只是简单地阐述一下亲测步骤(16.04应该也同样适用): 1.先下载特制的QQ程序包(其实就是基于Wine容器做了一些封装,程序运行...

2018-05-06 15:40:30

阅读数 34060

评论数 14

原创 亲测UEFI启动模式的电脑安装Win10和Ubuntu双系统

我个人不太喜欢虚拟机下安装系统,一来运行效率不行,二来原生体验不行。原本我的电脑是Windows 10专业版,为了体验和学习Linux,我给本本安装了Ubuntu 16.0.4 LTS(目前官网能下载到的最新版本),于是各种搜安装教程,感觉各种复杂。后来我发现了他们复杂的原因,我仔细看了下这些教程...

2016-09-23 21:42:59

阅读数 118035

评论数 90

原创 快速修改字节码并重打jar包
原力计划

背景 不管是做Android项目还是Java后端Web项目,我们一般都会引用各种三方库。遇到特殊需求时,可能需要修改jar包中的代码。本文以实际示例讲解一些基本方法,方便大家快速入坑。 首先我们都知道直接解压jar包的话,都是class二进制文件,打开后是看不见代码的。之所以可以在开发环境中直接查...

2020-03-25 02:04:01

阅读数 29

评论数 0

原创 Win10也要愉快地使用Bash

对于习惯了Linux和Mac的同学来说,Windows自带的终端确实不太好用。其实我们完全可以用Bash取而代之。 安装Windows Terminal 自从巨硬拥抱开源之后,那是骚操作频频。Windows Terminal是一个开源项目,它本身只是一个终端容器,可以装载系统自带的CMD、Powe...

2020-02-24 18:16:16

阅读数 34

评论数 0

原创 Windows安装repo的真正解决方案

背景 2020真是魔幻的一年,受疫情影响,大家年后一段时间都远程办公了。奈何很多同事在家没有Linux开发环境,想在Windows上通过repo工具下载Android源码简直比登天还难。 网上搜来受去没几个讲透彻的,今天给大家整活。按下面步骤来,保证OK,我们最终以 repo init 执行成功为...

2020-02-05 22:21:22

阅读数 101

评论数 2

原创 源码茶舍之如何由Uri找寻ContentProvider

引子 我们都知道四大组件之一ContentProvider的用处,它给大家提供一种统一的数据访问格式。调用者无需关心数据源于何处(如DB、XML文件和网络等),只需获取到对应的ContentResolver来进行增删查改即可。 自己实现一个Provider的时候,也会在配置文件中声明如下: <...

2020-01-29 19:05:36

阅读数 39

评论数 0

原创 源码茶舍之FLAG_EXCLUDE_STOPPED_PACKAGES与广播唤醒

发现 我们先随便实现一个BroadcastReceiver,静态注册: class TestReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { ...

2020-01-21 15:23:58

阅读数 90

评论数 0

原创 DeepinWine微信等软件如何升级

前言 不管是Ubuntu还是Deepin系统的用户,我相信不少同学是用的Deepin移植的基于Wine容器的QQ和微信等Windows上面的软件。对此我很久前也有一篇引导文章:Ubuntu 18.04/16.04安装最新版QQ和微信 具体安装流程不是本文重点哈,就不介绍了,可以看上述链接。本文主要...

2020-01-19 23:01:32

阅读数 647

评论数 3

原创 RecyclerView中DiffUtil的一些注意事项

节能刷新 移动设备屏幕大小有限(不得不说我是顽固的小屏爱好者,大于5.5寸难以接受,时代已经抛弃我了哈哈),列表(List)可以说是一个出现非常高频的交互设计。大多数情况下我们的列表不仅仅是一次性加载本地数据,而要应付来自网络的各种动态内容,可能是增加、删除等操作。 在Android开发中,一个耳...

2020-01-13 01:55:46

阅读数 83

评论数 0

原创 MTK设备上DuraSpeed导致Service无法启动的问题

没想到联发科还会改framework,有点小惊讶…… 背景 问题的起因是我们的系统应用无法调起与其他部门联动的某个Service组件了。查日志发现有这么一行: 1276-2330/system_process D/ActivityManager: bringUpServiceLocked, su...

2020-01-05 18:14:43

阅读数 43

评论数 0

原创 Win10家庭版如何正确关闭自动更新

背景 Windows10还是很漂亮很好用的,大部分同学购买的品牌机也都会预装正版Win10,不过是家庭版的(个人用户一般也不需要专业版,比如我这种装双系统的只把Win10拿来打游戏),然而,家庭版系统要用常规手段是没法彻底关闭自动更新的。 微软也非常不给面子,各种给你悄悄打开,当你关机时,你会吃...

2019-12-14 20:20:25

阅读数 164

评论数 1

原创 避免Android定制ROM中的EditText出现pop弹窗

问题 可能看到标题的同学一头雾水,这是什么东西,其实类似于你长按文本时出现的复制粘贴pop弹窗。在一些定制ROM中,厂商为了某些方便用户的特殊功能会增加文本输入检测和自定义弹窗,举例: 比如在你输入一些邮箱时,会自动弹出这种pop(并不需要你长按),且这个并非系统应用才有的,而是直接影响了所有E...

2019-12-07 17:03:56

阅读数 38

评论数 0

原创 源码茶舍之PackageManager获取注册Service数量问题

问题 今天有朋友遇到个问题,说bindService失败了,查了几步发现是由于PackageManager获取不到对应的Service组件导致的。具体示例代码如下: val serviceInfos = packageManager.getPackageInfo("com.xxx.xxx...

2019-11-02 13:50:55

阅读数 55

评论数 0

原创 Deepin系统add-apt-repository失败的问题

问题 目前Deepin系统版本为15.11,貌似在15.10时切到了Debain的软件仓库,而不再是Ubuntu了,虽说比较稳定,但还不够新,比如git,版本就没有官方的新。 于是我尝试 git官方的办法: sudo add-apt-repository ppa:git-core/ppa 报错,...

2019-10-28 00:53:46

阅读数 2025

评论数 0

原创 Gradle命令编译失败NoClassDefFoundError和VerifyError

问题 不知道大家在编译gradle项目的时候习惯直接在Android Studio这种IDE里面还是命令行操作。 今天在Deepin系统里面用命令编译: ./gradlew assembleDebug 直接报错: Exception in thread “main” java.lang.NoC...

2019-10-13 15:01:47

阅读数 34

评论数 0

原创 Deepin标题栏太高的解决办法(自定义高度)

Deepin 15.11已经发布一段时间了,前段时间折腾了一下,把我的Ubuntu换成了Deepin(有兴趣可以看看我的另一篇:Deepin15.11初体验及问题解决),总体感觉非常好。 依我个人习惯,目前有两点不是很能接受: 第一就是软件源貌似是debian stable的,所以很多软件版本比...

2019-10-10 22:38:42

阅读数 2525

评论数 0

原创 Deepin15.11初体验及问题解决

Deepin发展也有不少年了,最近还和华为的笔记本合作预装。之前我一直都用Ubuntu做日常开发,现在心血来潮也想折腾一下Deepin哈哈, 本文主要讲从Ubuntu无痛迁移到Deepin的安装过程、N卡显卡驱动等一系列小坑的解决。权当总结吧! 下载和制作启动盘 这个就不讲了哈,直接在官网下就行...

2019-10-03 13:57:53

阅读数 6004

评论数 1

原创 Docker安装Ubuntu镜像并保存且修改IP及Mac地址

本文仅作为一个Docker入坑手札。 主要介绍: 1、Docker在Linux上的安装配置; 2、在Docker容器中安装一个Ubuntu镜像并保存更改; 3、以任意IP地址和Mac地址启动刚才安装的Ubuntu镜像。

2019-09-21 14:43:48

阅读数 614

评论数 1

原创 OkHttp自定义重试拦截器出现IllegalStateException: cannot make a new request……异常

问题 OkHttp自定义重试拦截器常见实现方式: private static class RetryInterceptor implements Interceptor { @Override public okhttp3.Response intercept(Chain cha...

2019-09-20 13:39:21

阅读数 404

评论数 0

原创 Ubuntu安装Source Insight导入Android源码并设置仿IDEA主题Darcula

预览 先来张图给大家感受下效果,然后我再慢慢道来过程,保证你避免每一步的坑。 我们要做什么 1、由于Source Insight(以下简称SI)是Windows应用,所以不能直接安装在Linux上,于是我们要借助wine,所以第一步会介绍wine的安装过程和坑; 2、介绍SI在Linux(以Ub...

2019-08-16 22:50:32

阅读数 192

评论数 0

原创 解决war包部署后找不到本地jar包的问题(ClassNotFoundException、NoClassDefFoundError)

大多数Web项目都会引用一些本地jar包,然后最终以war包的形式部署上线。但实际运行时jar包里面的类根本找不到,出现各种ClassNotFoundException、NoClassDefFoundError等错误。 这里记录一下注意事项和正确的解决方法: 1、先简单说下怎么配置war包部署(如...

2019-08-15 18:25:34

阅读数 388

评论数 0

原创 Kotlin操作符快速获取爸爸的儿子的狗的名字

NPE(NullPointerException)是最低级且也最容易犯的错,也是最喜欢遇到的Bug因为好解。 本文适合Kotlin入门萌新食用,大佬轻喷哈哈哈! 问号N连帮你空处理(?) 假如服务端返回一个json嵌套了各种数据,映射成POJO大概是这样: // 此处为简洁省去getter和se...

2019-08-01 13:37:03

阅读数 59

评论数 0

原创 OkHttp拦截器实现禁止一切网络请求

我们在创建OkHttp客户端时,可以添加各种拦截器,这是我见过最有可玩性的库之一: OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) ...

2019-07-06 00:01:46

阅读数 513

评论数 1

原创 OkHttp拦截器实现无网络时加载缓存,避免Unknown host异常

我们在创建OkHttp客户端时,可以添加接口数据缓存,真的很香: File cacheDir = ... // 缓存目录,可以是内部存储也可以是外部存储的目录 OkHttpClient okHttpClient = new OkHttpClient.Builder() .conne...

2019-07-05 23:52:55

阅读数 399

评论数 0

原创 OkHttp拦截器获取GET/POST请求参数并添加公共参数

我们在创建OkHttp客户端时,可以添加各种拦截器,真的很香: OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .addInte...

2019-07-05 23:36:49

阅读数 2458

评论数 4

原创 Gson混淆配置的一些小坑

Gson就不介绍了,援引一下官方的哈哈: A Java serialization/deserialization library to convert Java Objects into JSON and back 我们在配置Proguard配置文件时,都会用Gson官方文档给出的: ##-...

2019-07-05 23:14:02

阅读数 557

评论数 0

原创 为何点击推送通知打不开Activity?Calling startActivity() from outside……

小米推送Android SDK有这么一个耳熟能详的方法: /** * 接收服务器向客户端发送的通知消息,在用户手动点击通知后触发 */ public void onNotificationMessageClicked(Context context, MiPushMessage message...

2019-07-02 02:01:29

阅读数 494

评论数 0

原创 看看,Jetpack Compose是什么新东西

Google 在 I/O 2019 上宣布 Kotlin 成为 Android 开发首选语言(怎么又宣布了哈哈),并且以后会有新的 Jetpack API 和功能将在 Kotlin 中提供,值得注意的是 Google 当天开源了一个叫 Jetpack Compose 的东西,让我们来看看是什么。 ...

2019-05-09 17:14:23

阅读数 2873

评论数 0

原创 微信小程序任务栈实现原理

背景 之前面试一些校招同学,聊到微信小程序是什么launchMode,其任务栈是如何实现的?很多同学只提到singleInstance,这是不合适的。 今天我们就猜测并解析一下微信主程序与小程序的关系与大致实现,最后给出源码,可以给大家作一个简单参考。 初探 既然要研究微信,那么我们就先打开几个小...

2019-04-27 14:25:07

阅读数 363

评论数 0

原创 NDK开发中为什么除以0程序不崩溃?

我们都知道不管是在Java还是在C++程序中,下面这段代码都会导致程序错误: int x = 10; int y = x / 0; ... 但是我今天发现了一个比较神奇的事情,把这段代码写成Native方法后在Java层调用,竟然没有导致App崩溃,代码是这样子的: #include <j...

2019-04-15 15:25:09

阅读数 346

评论数 0

原创 源码茶舍之android:externalService是什么属性?实现原理?

发现 在AndroidManifest中声明Service时,偶然发现一个布尔类型的属性:android:externalService 示例如下: <service android:externalService="true" ... /> 如果...

2019-04-10 16:55:29

阅读数 265

评论数 0

原创 MyBatis中插入(insert)后返回主键(key)的注解方式

一般我们插入数据后需要知道其自增的主键key是多少,有两种方式: 用@Options注解: 比如这里有个订单(Order)相关的DAO: public interface OrderDao { @Insert("INSERT INTO ...") @Option...

2019-03-17 17:56:12

阅读数 1805

评论数 0

原创 MyBatis直接使用LocalDateTime时间类型以及MySQL时区问题排错

时间类型 Java 8提供了新的时间API,相关介绍大家可以自行搜索或者直接参考这篇Java中的时间与时区,因此大家在写实体类时,可以放弃用以前的Date或者Timestamp类型了,直接用LocalDateTime类就行了,MyBatis从3.4.5版本开始就完全支持这种类型了,根本不用自己再去...

2019-03-15 17:11:17

阅读数 7246

评论数 0

原创 CentOS用yum将MySQL升级到5.7.25

本文操作流程同样适用于MySQL 8.0,但由于我是原本版本是5.6,直接装8.0有各种毛病,后来放弃,还是装了5.7。 如果直接用yum来install mysql的话,你会发现最多只能升级到5.6,搞不懂这些老外怎么想的,MySQL做错了什么,就因为被Oracle收购了吗? 然而,我需要升级...

2019-03-11 12:30:54

阅读数 707

评论数 1

原创 授权后连接MySQL依然被拒绝访问(Access denied for user 'root'@'localhost')

我们在Spring Boot的应用配置中一般都会如下: jdbc:mysql://123.123.123.123:3306/byd?useUnicode=true&amp;amp;amp;amp;amp;characterEncoding=UTF-8&amp;amp;amp;amp...

2019-03-07 14:02:57

阅读数 3285

评论数 0

原创 【开源项目推荐】Android Jetpack 官方文档 中文翻译

Jetpack 是 Android 软件组件的集合,使您可以更轻松地开发出色的 Android 应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。 Google官方极力推荐的开发工具库,然而其官方文档大部分页面还没有中文翻译版本,为了...

2019-03-07 10:57:40

阅读数 414

评论数 0

原创 RxJava2开发小记:或许能帮你解决RxAndroid+Retrofit出现的OOM

情景 前不久项目遇到了偶现的OOM问题,看调用栈发现有RxJava相关,我们项目以RxJava2+RxAndroid+Retrofit2+OkHttp为基础设施的。 上谷歌搜了一转,最终竟踏入了RxAndroid的GitHub issue区,发现有个老外和我情景类似,原帖链接在此:https://...

2019-03-04 23:16:40

阅读数 435

评论数 1

原创 解决新版浏览器autoplay不能自动播放的问题

自己一直有个人小主页,就展示下简历信息啥的,搞得比较花里胡哨,整了个audio标签来自动播放网页背景音乐: &amp;lt;audio autoplay=&quot;autoplay&quot;&amp;gt; &amp;lt;source src=&am...

2019-02-23 16:48:39

阅读数 7867

评论数 2

原创 源码茶舍之由一次简单的ANR分析深入了解Context

ANR是Android的老大难了,关于这方面的基础知识和深入好文都非常多,大家不妨谷歌一下。 最近搭载骁龙855的小米9也发布了,移动平台的设备性能越来越强,许多App大多时候其实都吃不完那么多计算资源。 说得可能不好听一点,很多烂代码要是在很多年前的手机上,本该导致卡顿(甚至是ANR)的,但由于...

2019-02-23 00:19:21

阅读数 221

评论数 0

原创 自定义背景drawable拉伸变形问题

看一个drawable文件,这个在5.0及以上的系统上一切正常。 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;layer-list xmlns:android="http...

2019-02-22 14:12:04

阅读数 442

评论数 0

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