- 博客(36)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 ArrayList源码分析
ArrayList是一种最常用的集合类,底层数据结构是数组,提供动态扩展数组长度的特性,允许元素的值为null。ArrayList是一种非线程安全的集合类,若要在多线程的环境,需要注意同步问题,也可以使用Collections.synchronizedList()方法保证线程安全问题。继承关系构造方法默认构造方法,创建一个空的数组对象 public ArrayList() { ...
2019-12-06 10:33:56
898
原创 Java SPI
一、简介SPI全称Service Provider Interface,它是JDK内置的一种可以动态发现服务的机制。通过这种方式,可以方便地将服务提供者与第三方实现客户端解耦。它主要包含三个基本组件:服务接口,提供者注册API以及服务访问API。下面是Wikipedia的解释服务是一组众所周知的接口和(通常是抽象的)类。服务提供者是服务的特定实现。提供程序中的类通常实现接口并子类化服务本身...
2019-12-05 10:59:03
938
原创 Spring Boot源码分析-配置文件加载原理
在Spring Boot源码分析-启动过程中我们进行了启动源码的分析,大致了解了整个Spring Boot的启动过程,具体细节这里不再赘述,感兴趣的同学可以自行阅读。今天让我们继续阅读源码,了解配置文件加载原理。基于Spring Boot 2.1.0.RELEASE在开始阅读源码之前,首先准备三个问题。什么时候开始加载配置文件?如何读取相关配置文件内容?如何区分不同环境的配置?...
2019-12-05 10:54:59
1184
原创 Spring Boot源码分析-启动过程
Spring Boot作为目前最流行的Java开发框架,秉承“约定优于配置”原则,大大简化了Spring MVC繁琐的XML文件配置,基本实现零配置启动项目。本文基于Spring Boot 2.1.0.RELEASE版本了解Spring Boot如何启动首先让我们看一下最简单的Spring Boot启动代码@SpringBootApplicationpublic class Dem...
2019-12-05 10:53:43
966
原创 Spring Cloud Alibaba基础教程:Nacos服务发现与配置管理
随着微服务概念的流行,越来越多的公司采用Spring Cloud全家桶构建微服务系统,实现业务的快速迭代。Spring Cloud提供了快速构建分布式微服务常用组件,包括Spring Cloud Eureka、Spring Cloud Ribbon、Spring Cloud Hystrix、Spring Cloud Zuul等等。依赖Spring强大生态环境,其已经成为Java开发人员构建微服务系...
2019-12-01 16:33:06
888
原创 Spring Cloud Alibaba基础教程:Nacos服务发现与配置管理
随着微服务概念的流行,越来越多的公司采用Spring Cloud全家桶构建微服务系统,实现业务的快速迭代。Spring Cloud提供了快速构建分布式微服务常用组件,包括Spring Cloud Eureka、Spring Cloud Ribbon、Spring Cloud Hystrix、Spring Cloud Zuul等等。依赖Spring强大生态环境,其已经成为Java开发人员构建微服务系...
2019-12-01 16:09:17
243
原创 Spring Cloud Alibaba基础教程:Nacos服务发现与配置管理
随着微服务概念的流行,越来越多的公司采用Spring Cloud全家桶构建微服务系统,实现业务的快速迭代。Spring Cloud提供了快速构建分布式微服务常用组件,包括Spring Cloud Eureka、Spring Cloud Ribbon、Spring Cloud Hystrix、Spring Cloud Zuul等等。依赖Spring强大生态环境,其已经成为Java开发人员构建微服务系...
2019-12-01 16:02:58
242
原创 MessageDigest 使用注意,并发问题
说一下最近在开发过程中遇到加密相关的问题,先引用一段MD5的解释。百度百科 MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Securi
2017-01-14 00:21:17
8634
2
原创 对于Fragment“懒加载”问题的一点点见解
1. 问题来源在开发过程中,或多或少会需要捕获与Fragment生命周期相关的一些事件,去做相关的数据初始化等其他操作,而Fragment的生命周期并不完全像Activity那样,两者之间还是有一些区别的。例如,我们想在用户第一次看到该Fragment的时候去加载该Fragment中的数据,并非每次用户看到Fragment都去加载数据,这时候就需要我们非常清楚Fragment的生命周期方法,才能实现
2016-12-27 23:08:56
2553
原创 Android 通讯录导航栏
这几天无意间翻到之前写的一篇关于自定义通讯录导航栏的博客,文章中只是做了一点点简单介绍,写的并不完整。由于这段时间比较空闲,索性把整篇文章重新整理一遍。这样的一个控件实现起来不难,需要对自定义view有一定的基础,也要了解怎么实现一个集合的排序。大体思路很简单。首先完成view的基本绘制以及相关的内部逻辑。其次,就是要对联系人数据进行排序,即姓名首字母按26个英文字母进行排序,说道排序不得不说的
2016-10-21 23:31:23
2265
1
原创 Google Espresso 环境搭建以及简单使用教程
2013 GTAC谷歌介绍了Android平台自动化测试框架“Espresso”(Video, Slides),10月18号谷歌正式开放“Espresso”,使用Espresso可以写出简洁,漂亮并且可靠的Android UI测试。例如:@Testpublic void greeterSaysHello() { onView(withId(R.id.name_field)).perform(t
2016-10-19 14:35:45
2618
原创 TextView实现彩色闪动效果
开头闲扯几句,很长时间没有写博客,也怪自己没有一直保持这个习惯。其实写博客,对个人的提升是非常大的。不管你接触到多少新的知识点,记不住或者不理解,对于你的提升是非常有限的,但是如果你每天将自己新接触的到的东西写下来的话,不仅会让你更加深入的理解知识,还可以锻炼你的语言表达能力。言归正传,TextView作为开发中最常见的UI控件,每个Android开发者都再熟悉不过了,那就直接进入主题。彩色 闪动
2016-10-15 21:58:29
2311
原创 Android Support Library-标题栏(Toolbar)滚动效果
本文主要介绍如何使用CoordinatorLayout,AppBarLayout和Toolbar以及一个可滑动的view实现,指定view滑动时隐藏和显示Toobar,这样不仅可以扩大内容显示区域,还可以保留Toolbar。类似于YouTube Android客户端实现的效果。首先来个效果图 注意事项之前我使用ListView作为滑动view的时候,一直都不成功,后来改用RecyclerView就
2016-07-11 23:08:29
865
原创 Android Support Library-FloatingActionButton
FloatingActionButton FloatingActionButton继承了ImageButton,是一种浮在UI上面的按钮。简单使用 使用起来比较简单,和普通的按钮比起来差别并不是很大,基本使用都差不多,看起来更加炫一点。布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http:
2016-07-10 10:21:06
527
原创 Android Support Library-TextInputLayout
Android Support Library简介 Android Support Library提供了许多向后兼容的新特性和非常有用的UI元素,这些并没有包含在Android Framework中。 如果想要使用此库需要在gradle中添加使用这个库需要在gradle中添加 compile ‘com.android.support:design:22.2.0’TextInputL
2016-07-10 09:11:34
352
原创 Android-Linkify的使用
LinkifyLinkify是一个辅助类,它可以自动地在TextView(或其派生类)中通过RegEx(正则表达式)模式匹配来创建超链接。当TextView中的内容匹配成功并生成超链接之后,TextView内容的下面就会出现下划线,单击则可以触发相应的操作,例如拨号,打开浏览器等。Linkify使用Linkify可以在xml中使用,也可以通过Java代码使用。XML方式 通过给TextVie
2016-07-04 21:59:30
4332
原创 VIM 常用快捷键
u 撤销上一次的操作CTRL-R 重做,回退前一个命令删除x 删除一个字符J 删除当前行与下一行之间的换行符u 撤销上一次操作U 撤销在最后一个编辑的行上的操作o 在当前行的下面插入新行,并进入编辑模式O 在当前行的上面插入新行,并进入编辑模式ZZ 退出并保存移动词移动w 向后移动一个单词b 向前移动一个单词e 移动到后一个单词的词末ge 移动到
2016-06-25 15:29:13
336
原创 Java,MD5
public static String md5(String target) { try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); byte[] bytes = messageDigest.digest(target.getBytes());
2015-12-25 10:56:44
363
原创 Ubuntu搭建Android开发环境
最近一段时间工作环境从windows转到了ubuntu下,虽然说只是做Android应用层开发对于windows或者linux其实都是看个人爱好,在哪个平台下面都是差不多的,但是接触到系统层windows就不行了。其次,本来就也是学计算机的,多接触点东西还是好的,感受下Linus Torvalds的杰作。废话不多说。第一步,下载jdk,这里就不提供链接,可以去官网,或者自行百度下载。 下载好之后,
2015-11-19 15:55:33
493
原创 Android 动画
帧动画 FrameAnimation帧动画其实就是多张图片连续播放实现动画效果在drawable文件夹中定义XML帧动画文件(根节点为animation-list)其中XML文件中的oneshot属性可选值为true或者false,指定是否循环播放,true表示只播放一次,false表示循环播放先上图:帧动画XML文件定义如下:<?xml version="1.0" encoding="ut
2015-11-11 14:38:47
462
原创 Android获取屏幕宽高
在Android开发过程中有时候需要获取屏幕的宽高,所以在这里记录下几种常用的方法。方法一:Display dp = activity.getWindowManger().getDefaultDisplay();int screenWidth = dp.getWidth(); // (api require 13 or above)int screenHeight = dp.getHeight
2015-11-10 23:13:03
470
原创 Android图片相关的操作
Android图片相关的操作这里写代码片/** * Tools for handler picture * * @author Ryan.Tang * */ public final class ImageTools {/** * Transfer drawable to bitmap * * @param drawable * @return */publi
2015-11-09 16:36:50
384
原创 获取Android手机SD卡容量大小
Android系统没有在api文档中提及如何获取sd卡全部容量以及可用容量,但是通过查询源码就可以看到如何获取sd卡容量。方法如下:File path = Environment.getExternalStorageDirectory();StatFs stat = new StatFs(path.getPath());long blockSize = stat.getBlockS
2015-08-17 14:20:07
1062
原创 Linux常用命令
最近在学习Linux系统的使用,很多命令暂时记不住或者记不清,所以记录下来供以后查询还是很有必要的。 查看系统当前运行级别 runlevel 结果前面一个数字代表系统运行的上一个级别 后面一个数字代表系统当前运行级别 退出登录 logout 更新grub update-grub 关机命令 shutdown -h + 时间 halt poweroff
2015-06-09 16:48:50
490
转载 Ubuntu设置开机默认进入字符界面
编辑文件 /etc/init/lightdm.conf,在第12行附近,原句“ and runlevel [!06]” 改为“ and runlevel [!026]”。编辑/etc/default/grub把GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"改成GRUB_CMDLINE_LINUX_DEFAULT="text"其实只要把
2015-06-09 16:46:24
563
原创 Git学习笔记之Git常用命令
查看git版本信息git --version配置当前用户的姓名和邮箱git config --global user.name "YourName"git config --global user.email "YourEmailAddress"配置命令别名git config --global alias.st status在Git命令输出中开
2015-05-29 21:52:24
368
原创 Git学习笔记之git add
git add -- Add file contents to the index. 添加文件内容到索引。Before running the commit command, you must use the add command to add new or modified files to the index.在运行git commit命令之前,必须用git ad
2015-05-29 20:58:56
611
转载 Android下drawable,Bitmap,Canvas与Paint区别
1.概念区别:很多网友刚刚开始学习Android平台,对于Drawable、Bitmap、Canvas和Paint它们之间的概念不是很清楚,其实它们除了Drawable外早在Sun的J2ME中就已经出现了,但是在Android平台中,Bitmap、Canvas相关的都有所变化。首先让我们理解下Android平台中的显示类是View,但是还提供了底层图形类android.graphics,今
2015-05-29 19:30:15
491
转载 Android Studio快捷键
Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动
2015-05-27 23:16:43
534
转载 Java判断十一位字符串是否为纯数字
假如现在有一个字符串,如何快速准确的判断其是否为手机号?public boolean isMobileNO(String mobiles) {Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$");Matcher m = p.matcher(mobiles);re
2015-05-27 16:49:22
3490
原创 PS快捷键
F 切换画布的显示方式 TAB 隐藏工具箱,工具属性栏,悬浮面板 Z 缩放工具 ALT 暂时切换到 CTRL + 0 满画布显示 SPACE 暂时切换到抓手工具(移动画布) H 切换到抓手工具 CTRL + ” 调出网格
2015-05-23 23:20:18
421
原创 Java知识点-断言assert
assert断言 1.在程序运行到assert断言处时,程序的某个变量必须为预期的值,否则程序抛出Exception(java.lang.AssertionError)。2.一般用于测试。3.使用断言时,运行Java程序要加上指定参数(java -ea AssertDemo)。断言表达式,例如:assert i == 10 : "Error" ;
2015-05-16 08:37:44
482
原创 MEIZU MX4连接不上adb
最近写Android的时候,用魅族MX4手机做调试发现adb竟然连接不上MX4。后来找了下官方论坛里说的,在PC的用户目录下,找到.android文件夹,里面有个adb_usb.ini,打开这个文件,写入0x2a45。然后adb就可以连接上手机了。说明下,如果你用的是linux系统,你的用户目录即指的是/home/用户名,如果你用的是windows系统,用户目录一般代表的都是c:\user
2015-05-14 12:01:45
1424
原创 Mysql数据库中文乱码
数据库存储数据的时候经常会出现乱码。导致乱码的原因可能有三种:1. 数据本身与数据库指定的字符集不同,则需要在插入数据之前,将数据的编码格式转换成与数据库指定字符集相同,或者也可以将数据库指定的字符集该为与数据相同的字符集。2. 数据库指定的字符集本身不支持中文,例如latin。3. 如果用代码操作插入数据到数据库,数据库连接的字符集可能也会产生乱码
2015-05-11 19:52:20
288
原创 更改Win7和Ubuntu双系统默认启动顺序
在Windos7下面安装Ubuntu双系统之后,开机默认启动的是Ubuntu系统。有些同学想把Windows7设为默认启动系统。网上有写教程说更改grub.cfg文件的内容,我也试过,但是我自己是没有成功的,而且打开grub.cfg文件,可以看到文件的最上方写着## DO NOT EDIT THIS FILE## It is automatically generated
2014-12-28 19:31:34
936
Android WebView与浏览器表现不同
2016-10-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人