- 博客(85)
- 收藏
- 关注

原创 一篇文章带你搞懂DEX文件的结构
*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布本文地址:一篇文章带你搞懂DEX文件的结构DEX文件就是Android Dalvik虚拟机运行的程序,关于DEX文件的结构的重要性我就不多说了。下面,开练!建议:不要只看,跟着我做。看再多遍不如自己亲自实践一遍来的可靠,别问我为什么知道。泪崩ing.....首先,我们需要自己构造一个dex文件,因为自己构造的比...
2017-02-20 17:25:03
25635
19
原创 Java Mock 哪家强?Mocktio VS JMockit
Mockito 是当前最流行的 Java 单元测试 Mock 框架,JMockit天然支持静态方法和构造函数的 Mock,到底哪个更好用呢?Mock 介绍为什么要使用 mock当我们写单元测试时,我们往往只想验证我们所写函数的功能,而不是它的依赖项。但是有时候它的依赖项并不可控。为了把函数的依赖项剥离,我们就需要为此依赖项提供一个替代品。通过这种方式,我们可以强制依赖项返回特定值,抛出异常,或者将比较耗时的方法减少到固定的值。这种替代品就是 mock,它可以帮我们简化测试编码并减少测试执行时间。
2022-05-22 23:14:34
1630
1
原创 Java 单元测试指北
每个程序员在修改代码的时候都希望有测试,而在写代码时,都不想写测试。为什么要写单元测试首先,只有经过测试的代码,代码质量才会更高。其次,如今早已不是单打独斗的时代,团队中的服务不是你自己一个人在维护,如果你不写测试,别人(可能包括未来的自己)修改你的代码时,可能会影响你的原有逻辑。如果你的代码经过单元测试保证后,别人修改了,测试用例跑不过,他就会进一步检查自己的修改是否正确。因此,编写测试相当于为代码加了一层防护网。可能有些人会说,我只是开发,测试的工作应该交给测试同学,这其实是一种极其不负责任的表
2022-05-22 23:08:03
745
原创 Spring WebClient 使用简介
现在,越来越多的项目都开始使用反应式编程以及异步处理请求了。在 Spring 5中,引入了反应式 WebClient实现作为 WebFlux 框架的一部分。今天,我们就来学习下如何使用 WebClient反应式地请求 REST API。定义 REST API首先,我们先定义一些 REST API(假设我们数据库里保存了一系列的事件,这些事件有id、属性、分类及标签等):/events - 获取所有的事件/events/[id] - 通过 id 获取事件/events/[id]/atrribut
2022-02-13 15:09:12
3654
原创 你的Kubernetes Java应用优雅停机了吗?
假如我们从 kafka 拉取数据然后生成任务处理数据,在服务退出时,如何保证内存中的数据能被正常处理完不丢失呢?假如服务是部署在 Kubernetes 中又该如何处理?Java 应用优雅停机我们首先考虑下,一般在什么场景下数据会丢失呢?升级服务时pod重启时服务器断电时因为服务器断电属于极端情况,我们暂且不考虑。那就只有 Java 退出时我们要保证数据的完整性了。在 Java 中,有一个方法可以实现应用退出时候的优雅停机:shutdown hook。Spring boot把这个东西封装了一
2022-01-16 10:23:49
1957
2
原创 Bootstrap - Modal 插件
有时候我们可能需要在页面弹出一个对话框,或者传统的叫做 Popup Window 的东西。其实 Bootstrap 给我们提供了一个插件,可以非常方便的构造这几种东西,这个插件叫做 Modal。引入 js 文件Bootstrap 的插件有很多都是独立成型的,并不需要依赖 Bootstrap 的所有 js 文件。想要使用 Modal 插件,我们既可以只引用单独的 modal.js 文件,还可以...
2019-09-29 15:30:59
281
原创 Gradle - 构建 Java 应用程序
此教程会演示如何使用 Gradle 的 Build Init 插件创建遵循 Gradle 约定的新 Java 应用程序。你需要准备大约 9 分钟的时间一个文本编辑器一个命令提示符JDK 8 或者更高版本版本为 5.4.1 或者更高的 Gradle 分发版查看用户手册Gradle 默认有一个名为 Build Init 的内置插件,在 Gradle 用户手册 中有记录。该插件提供...
2019-09-29 15:29:51
336
原创 Gson 你真的懂吗?
平时使用 Gson 可能也就使用下基本功能,但是你对 Gson 真的了解吗?对于含有内部类的嵌套类序列化对于静态嵌套类, Gson 可以非常容易地进行序列化。但是对于纯内部类,Gson 不能进行反序列化,因为它们的无参构造函数还要对反序列化时不可用的 Object 进行引用。比如,当反序列化 Hand 时,需要引用 Person,但是此时 Person 不能被引用。public class...
2019-09-29 15:23:58
305
原创 常用 Linux 命令整理 - 账户相关
Linux 是我们在开发工作中必不可少的技能了,部署、维护应用都需要懂一些 Linux 命令,现将自己常用的 Linux 命令整理一下,不定期补充更新,以供用时方便查找。账户相关查看当前机器的账户head -n 4 /etc/passwdcat /etc/passwd/etc/passwd 中存储了用户信息显示如下:root:x:0:0:root:/root:/bin/...
2019-07-17 00:02:41
198
翻译 Gradle - 创建 Gradle 构建
本文地址:Gradle - 创建 Gradle 构建根据此教程,你可以创建一个小型 Gradle 项目,这里面会涉及一些基础的 Gradle 命令,你可以对 Gradle 是如何管理项目的有个深刻的理解。你需要准备大约 11 分钟的时间一个终端工具(Terminal)一个 Java 运行时环境(JRE)或者 Java 开发工具(JDK),Java 版本需要在 1.8 以上。一个 ...
2019-07-03 01:12:15
557
原创 使用 @ConfigurationProperties 在 Spring Boot 中加载配置
本文地址:使用 @ConfigurationProperties 在 Spring Boot 中加载配置使用 Spring Boot 加载配置文件的配置非常便利,我们只需要使用一些注解配置一下就能很方便地加载配置项了。今天我们谈一谈 ConfigurationProperties 注解的使用,ConfigurationProperties可以把配置文件中有相同前缀的配置在一个配置类中直接省去...
2019-06-30 22:42:00
2019
原创 如何才能更好地成长
本文地址:如何才能更好地成长对自己高标准要求德国是一个非常注重质量的国家,尤其是在汽车制造领域,像奔驰,保时捷,奥迪等好多一线品牌的汽车都出自德国。德国的企业对产品标准要求非常高,这也是众多品牌能杀出世界的一个关键因素。在德国一家培训公司中,专门培训锉刀的使用。在这些培训员中,大部分都是那些高中毕业没有去读大学的人。培训过程注重的就是对质量的把控,比如在他们使用锉刀磨铁块后,会用游标卡尺...
2019-06-30 01:17:35
255
原创 使用 Json Schema 定义 API
本文地址:使用 Json Schema 定义 API前面我们介绍了 Json Schema 的基本内容,这篇文章我们结合 jsonschema2pojo 工具深入分析如何使用 Json Schema 生成 API,学习更多关于 Json Schema 的关键字等知识。jsonschema2pojo 该库提供了多种使用Json Schame文件生成 Java 类的方法,比如 Maven插件,...
2019-06-27 00:47:50
2627
原创 Json Schema 是什么?
本文地址:Json Schema 是什么?简单说,Json Schema 其实就是一个标准的 Json 串,它以一个 Json 串来描述我们需要的数据规范,并且支持注释以及验证 Json 文档,即我们可以用 Json Schema 来验证所给的 Json 串是否满足我们需要的数据格式规范。同样能用来表示数据的还有一种格式 XML,为什么 Json Schema 偏偏要用 Json 来进行表...
2019-06-25 23:35:49
1103
原创 如何使用 GitHub Pages 维护自己的博客
目录前置知识实际操作声明本文地址:如何使用 GitHub Pages 维护自己的博客前置知识首先,你应该知道如何用 Hexo 在本地搭建一个博客系统,具体见 Hexo。其次,我们如果想使用 GitHub Pages 搭建自己的博客只需要在 GitHub 创建一个名为***.github.io的 repository,其中***代表你 GitHub 的名字。然后将我们要展示的静态文件放...
2019-06-09 10:27:49
410
原创 Java 各个版本中的新特性
新特性你知道多少?Java 8Lambda 表达式接口增加默认方法等方法引用流 StreamJava 9模块系统交互式工具jshell.of() 创建不可变集合接口支持私有方法更好的 Try-with-resource 体验Java 10局部变量类型推断 varJava 11var 支持 Lambda标准化的 HTTP Client APIJava 8Java 8 中主要的新特性有4个。La...
2019-02-16 15:46:05
2281
原创 Android一句话 | ViewGroup事件分发
ViewGroup中可重写的关于事件分发的事件有dispatchTouchEvent,onTouchEvent,onInterceptTouchEvent和requestDisallowInterceptTouchEvent.点击一个View,它的事件流程是这样的:父亲的dispatchTouchEvent ->父亲的onInterceptTouchEvent ->View的dispatchTou
2016-04-29 20:14:19
520
原创 Android一句话 | View事件分发
View中,无论是down,move,还是up,事件都是这样传递的:由dispatchTouchEvent到onTouch,再到onTouchEvent,click是在onTouchEvent中的。如果在dispatchTouchEvent中将View的down事件返回true,那么View的onTouch和onTouchEvent中的down将不会执行,但是move和up是不受影响的。然而这时V
2016-04-29 20:12:18
418
原创 SnackBar--FloatingActionButton--CoordinatorLayout
SnackBar FloatingActionBarCoordinatorLayout
2016-04-12 13:36:29
560
原创 Android中添加监听回调接口的方法
在Android中,我们经常会添加一些监听回调的接口供别的类来回调,比如自定义一个PopupWindow,需要让new这个PopupWindow的Activity来监听PopupWindow中的一些组件点击后的回调,再比如写一个RecyclerView的适配器时,也需要让相应的类来监听它的条目点击事件。
2016-04-04 09:42:17
11028
转载 Android-ViewPager中调用notifyDataSetChanged失效问题--setItemPosition--POSITION_NONE
最基本的方法:针对于child view比较简单的情况(例如仅有TextView、ImageView等,没有ListView等展示数据的情况),可以在自己的Adapter中加入代码: @Override public int getItemPosition(Object object) { return POSITION_NONE; } 这样既可达到一
2016-04-02 20:17:30
4476
原创 屏幕适配
屏幕适配物理概念 屏幕物理尺寸:屏幕对角线的尺寸屏幕分辨率:确定计算机屏幕上显示多少信息的设置,以水平和垂直像素来衡量 iPhone SE分辨率为1136*640像素 屏幕密度(pixel per inch):每英寸的像素数,简称ppi。 ppi=屏幕对角线的像素总数/屏幕物理尺寸 Android中的dp 设备独立像素(device indepentent pixels
2016-04-02 10:43:23
336
转载 Android EditText不弹出输入法总结,焦点问题的总结
看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的时候默认弹出输入法,可以这样设置这个属相:android:windowSoftInputMode=stateVisible,这样就会默认弹起输入法,当然还有别的办法。 android:configChanges="orientatio
2016-04-01 10:14:00
467
转载 XRecyclerView:实现下拉刷新、滚动到底部加载更多以及添加header功能的RecyclerView
介绍:一个实现了下拉刷新,滚动到底部加载更多以及添加header功能的的RecyclerView。使用方式和RecyclerView完全一致,不需要额外的layout,不需要写特殊的adater。 加载效果内置了AVLoadingIndicatorView上的所有效果,可以根据需要指定。项目地址:https://github.com/jianghejie/XRecycl
2016-03-31 16:30:50
4394
转载 知乎上一个关于Android面试的问题答案
前段时间面试,自己以及小伙伴们简要的汇总的一些面试问题,可以对照的参考一下吧~建议就是在面一家公司之前了解好这个公司的app是以什么为驱动的,例如电商的话肯定要了解hybrid 开发的一些知识点,图像处理的公司要好好复习下bitmap canvas相关的知识点,祝好运!UI:1.View的绘制Android视图绘制流程完全解析,带你一步步深入了解View(二)2) An
2016-03-26 15:01:03
2605
转载 Android Studio上方便使用butterknife注解框架的偷懒插件Android Butterknife Zelezny
首先提下ButterKnifey已经更新到版本7.0.1了,现在注解已经不叫@InjectView了,而叫@Bind,感觉更贴合语义。同时注册的方式也从ButterKnife.inject(this);变成了ButterKnife.bind(this);关于7.0.1的ButterKnife的各种用法和功能,可以参考ButterKnife的github上的主
2016-03-21 10:07:21
503
转载 Android Fragment的使用
可以分为下面的几部分:使用支持库创建一个Fragment创建一个动态UI多个Fragment之间的通信 1、使用支持库如果您的应用需要运行在3.0及以上的版本,可以忽略这部分内容。如果您的应用使用在3.0以下、1.6及以上的版本,需要使用支持库来构建。使用支持库的步骤:使用SDK下的SDK Mana
2016-03-21 09:19:30
437
转载 Android Volley完全解析(三),定制自己的Request
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/17612763经过前面两篇文章的学习,我们已经掌握了Volley各种Request的使用方法,包括StringRequest、JsonRequest、ImageRequest等。其中StringRequest用于请求一条普通的文本数据,JsonRequest(JsonObje
2016-03-18 10:39:36
507
转载 Android Volley完全解析(二),使用Volley加载网络图片
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/17482165在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法。本篇文章中我们即将学习关于Volley更加高级的用法,如何你还没有看过我的上一篇文章的话,建议先去阅读Android Volley完全解析(一),初识Volley的基本用法。在上篇文章中
2016-03-18 10:38:18
377
转载 Android Volley完全解析(一),初识Volley的基本用法
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/174820951. Volley简介我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和Http
2016-03-18 10:32:48
356
转载 Android的Activity屏幕切换动画(一)-左右滑动切换
转自:http://www.oschina.net/question/97118_34343这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下。在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Androi
2016-03-17 15:21:57
778
转载 Android Volley 之自定义Request
转自:http://blog.youkuaiyun.com/lmj623565791/article/details/24589837今天群里一哥们需要自定义Volley的Request的例子,于是产生了这篇博客。关于Volley的介绍就不多说了,网上例子特别多。Volley的所有的请求的超类型是Resuest,类结构如下图,所有我们常用的请求都是这个类的子类,那么我们自定义View肯定也是基
2016-03-17 14:58:25
401
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人