自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

timshinlee的博客

身处黑暗,心向光明

原创 Java+UEditor

首先到UEditor官网下载JSP版本的压缩包,目前是停留在了1.4.3.3版本。 下载完成后解压缩,把ueditor目录放到项目中,例如放到webapp目录下的/static/ueditor,注意要配置静态资源访问路径,保证能够正常访问到里面的文件,例如http://localhost/st...

2019-03-11 10:40:38

阅读数 1264

评论数 2

原创 Java——二维码

使用zxing生成二维码 引入zxing依赖库: <dependency> <groupId>com.google.zxing</groupId> &...

2019-02-20 14:07:49

阅读数 30

评论数 0

原创 Java——Log4j1与Log4j2

1. Log4j 1 引入Log4j: <dependency> <groupId>log4j</groupId> <artifactId>log4j</a...

2019-02-16 14:36:06

阅读数 59

评论数 0

原创 Python正则表达式

123

2018-07-04 15:54:26

阅读数 56

评论数 0

原创 Django(二)——URL分发

Django处理接收到URL的流程: 首先确定使用的URLconf模块,默认情况下使用的是settings.py中ROOT_URLCONF对应的模块。如果接收到的HttpRequest经由middleware配置了urlconf属性的话,就会使用该属性配置的模块。 Django在该模块中查找u...

2018-07-02 11:01:17

阅读数 555

评论数 0

原创 Python虚拟环境

virtualenv Python虚拟环境使用virtualenv进行创建和管理。 安装virtualenv pip install virtualenv 创建虚拟环境 默认创建到当前目录: virtualenv [虚拟环境名] 可以指定各种参数: virtualenv -...

2018-07-02 10:44:43

阅读数 111

评论数 0

原创 正则表达式

正则表达式中,单纯的字符就是准确匹配,即必须完全一样。 常用的匹配模式: \d:digit,匹配单个数字,相当于[0-9]。 \D:non-digit,匹配非数字,相当于[^0-9]。 \w:word,匹配单个数字或字母或下划线,相当于[A-Za-z0-9_]。 \W:non-word,匹配...

2018-04-25 10:29:06

阅读数 52

评论数 0

原创 CSS

Selectors 属性选择器 伪类选择器 伪元素选择器 混合选择器 Selectors 选择器的分类: 简单选择器:使用元素类型、class、id等进行匹配。 属性选择器:使用属性或属性值进行匹配。 伪类选择器:使用元素特定状态或元素特定部分进行匹配,例如鼠标滑过、选中状态...

2018-04-24 18:23:11

阅读数 130

评论数 0

原创 Room使用实例

Room基本使用 Entity Database Dao ViewModel RecyclerView UI Room结合Paging Dao ViewModel RecyclerView.Adapter UI Room基本使用 Entity 首先定义一个User类: ...

2018-04-24 15:36:54

阅读数 1601

评论数 0

原创 Paging

Paging库是用来代替在ListView中查询的CursorAdapter和在RecyclerView中查询的AsyncListUtil的。 Paging库的主要组成: DataSource:定义数据来源,可以根据实际情况继承其子类: PageKeyedDataSource:使用当前Pa...

2018-04-24 14:09:51

阅读数 1134

评论数 0

原创 Cent OS 7安装Tomcat 8.0

安装Tomcat之前需要先安装JDK,可以参考之前的博文CentOS 7 安装 JDK1.8 下载Tomcat wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.0.50/bin/apache-tomcat-8.0.50....

2018-04-12 14:23:35

阅读数 1169

评论数 0

原创 CentOS 7 安装 JDK1.8

下载JDK 使用wget下载JDK的tar.gz,因为JDK下载界面需要同意协议方能下载,所以需要在wget命令中添加--no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-secur...

2018-04-12 13:36:00

阅读数 233

评论数 0

原创 DataBinding(七)tips

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.firstNa...

2018-03-23 16:43:54

阅读数 45

评论数 0

原创 DataBinding(六)数据转换

当一个对象从binding表达式中返回的时候,就会自动去查找默认、重命名或自定义的setter。然后该对象会被转型成为所选setter的参数类型。这时候对于使用ObservableMaps就很方便,返回的值会自动转换为setter的参数类型,不过如果可能产生混淆的话,还是需要手动去转型。 &...

2018-03-23 16:43:26

阅读数 569

评论数 0

原创 DataBinding(五)自动更新

虽然使用普通的Java对象就可以把数据绑定到UI界面,但是当数据变动时,UI却不会及时更新,所以DataBinding提供了observable objects、observable fields、observable collections来达到自动更新的效果。 observable ob...

2018-03-23 16:42:12

阅读数 394

评论数 0

原创 DataBinding(四)属性设置

1. 默认setter 对于设置了DataBinding表达式的XML属性,DataBinding会根据属性表达式的返回值查找该属性的setter方法,比如android:text="@{"str"}"属性是去找setText(String)方法,所以表达...

2018-03-23 16:41:55

阅读数 106

评论数 0

原创 DataBinding(三)事件处理

DataBinding可以在XML中使用事件的回调方法名作为属性名(大部分情况下)来处理View分发的事件。比如说View.OnLongClickListener的回调方法是onLongClick,所以这个事件的属性名称就是android:onLongClick。 事件的处理可以有两种方式: ...

2018-03-23 16:41:04

阅读数 261

评论数 0

原创 DataBinding(二)变量及表达式

1. 概述 在DataBinding的布局文件当中,可以引入各种变量,并在布局文件中使用变量表达式,达到数据绑定的效果。 引入的变量可以使用完整类名,或者使用标签导包。与Java一样,java.lang的包是默认导入的。具体格式及使用方法如下: <?xml version=...

2018-03-23 16:37:36

阅读数 898

评论数 0

原创 DataBinding(一)基础

1. 导入 在module的build.gradle中声明 android { dataBinding { enabled true } } 如果依赖库中使用了DataBinding,则module也要使用DataBinding才行。 Android G...

2018-03-23 16:36:58

阅读数 243

评论数 0

原创 Scroller

了解Scroller之前,需要了解一下scrollBy()和scrollTo()的具体原理,这里是学习了谷哥的小弟关于Scroller的解析。 首先看一下scrollBy()和scrollTo()方法的实现: public void scrollBy(int x, int y) { ...

2018-03-23 16:05:57

阅读数 201

评论数 0

原创 Dagger2

一、简介 二、依赖注入 @Inject提供依赖 @Provides提供依赖 三、依赖特殊情况 @Qualifier @Singleton 四、依赖注入时机 1. 直接注入 2. Lazy注入 3. Provider注入 五、Component依赖 六、Subcomponents 1...

2017-08-29 11:37:29

阅读数 192

评论数 0

原创 Service与AIDL

Service介绍Service是一个没有界面的系统组件,可以在后台进行一些长期的操作。这里的后台并不是指子线程,而是指在离开应用后仍然可以继续运行。Service一般由其他系统组件启动,可以用来实现IPC(Inter-Process Communication)。Service可以分为三种: s...

2017-08-16 14:17:47

阅读数 185

评论数 0

原创 Retrofit2整理

简介 Retrofit的介绍: A type-safe REST client for Android and Java. Retrofit使用注解来描述HTTP请求,默认支持URL参数替换和请求参数。而且还支持自定义header、multipart请求体、文件上传和下载、模拟响应...

2017-08-12 14:46:55

阅读数 293

评论数 0

原创 WebView整理

显示兼容性首先明确一下两个重要概念: 1. 视窗(viewport):视窗就是网页可见的矩形区域,可以指定大小和缩放比例等属性。最重要属性是视窗的宽度,这个宽度是从网页的角度来看水平方向上所有可用的像素总数。 2. 屏幕密度:WebView和大部分Android浏览器会把CSS的像素值转换为d...

2017-08-11 13:03:42

阅读数 104

评论数 0

原创 OkHttp整理

导入compile 'com.squareup.okhttp3:okhttp:3.8.1'混淆:-dontwarn okio.** -dontwarn javax.annotation.Nullable -dontwarn javax.annotation.Parameters...

2017-08-10 10:48:08

阅读数 275

评论数 0

原创 Android动画之属性动画

属性动画可以在以下几个方面对动画进行设置: Duration:动画持续时间,默认是300ms。 Time interpolation:插值器,可以指定属性值如何根据动画当前播放时间进行变换。 Repeat count and behavior:重复次数和重复方式,正向或者逆向重复。 Anima...

2017-08-08 09:55:29

阅读数 174

评论数 0

原创 设计模式之访问者模式

访问者模式(Visitor Pattern):在不改变某对象结构中个元素的前提下,定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统,可以把数据结构和作用于结构上的操作解耦,使操作集合可以相对自由地变化。一种操作就相当于一个访问者。访问者模式将有关操作行为集中到一个访问者对象中。访...

2017-08-07 22:19:06

阅读数 105

评论数 0

原创 设计模式之享元模式

享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象。比如博客或者淘宝店铺,每个博客或者每间店铺之间都有一定的共性和差异,可以为所有的博客都提供一个公共的框架,只是内容可以根据具体博客进行改变,这样可以进行复用节省大量的资源。基本实现Flyweight类,可以接收...

2017-08-07 21:22:04

阅读数 121

评论数 0

原创 设计模式之中介者模式

中介者模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互。中介者使各个对象间不需要显式地互相引用,所以可以使耦合松散,而且可以独立改变对象之间的交互。比如世界上的国家可以看成一系列同类对象,如果让这些国家单独沟通,类就会变得很复杂,此时可以使用一个中介者来封装国家之间的...

2017-08-07 20:04:54

阅读数 100

评论数 0

原创 Dagger2

Dagger2是用来实现Dependency Injection模式的库。依赖注入一方面可以方便测试,另一方面可以创建可复用可更换的模块。Dagger2的具体实现是在编译器生成代码。导入Java Gradle// Add plugin https://plugins.gradle.org/plug...

2017-08-07 13:45:49

阅读数 198

评论数 0

原创 设计模式之职责链模式

职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将多个对象连成一条链,沿着这条链传递请求直到有对象处理它为止。可以定义一个抽象类来表示处理事件的对象,这个类首先有个处理事件的抽象方法,然后提供一个方法设置下一级处...

2017-08-06 23:29:39

阅读数 189

评论数 0

原创 设计模式之命令模式

命令模式:将一个请求封装成一个对象,从而可以使用不同的请求对客户端进行参数化,还可以记录请求日志和撤销请求。当我们发出一个或者多个请求的时候,如果请求的接收者和执行者重合的话,会导致职责过重。如果将请求接收者和请求执行者分开,才能比较好地对请求进行管理和完成。一个典型的例子就是餐厅点餐,服务员负责...

2017-08-06 22:05:09

阅读数 123

评论数 0

原创 设计模式之桥梁模式

Bridge Pattern:将类的抽象部分与实现部分分离,使它们可以独立地变化。当一个类的分类可以有多种方式的时候,比如说手机里的应用,可以先按照手机品牌区分,然后再按照应用种类区分;也可以先按照应用种类来区分,然后再按照手机品牌区分。而且品牌和应用种类都可以随意添加。如果直接使用继承来实现,每...

2017-08-06 21:50:22

阅读数 148

评论数 0

原创 设计模式之组合模式

组合模式可以用在树状结构的组合当中,把上下级对象抽象出一个基类,通过这个基类可以实现带分支的父节点,也可以实现单个末端节点。组合基类,提供添加和删除子分支的方法,尽管末端节点不需要添加分支,但还是把编辑子分支的方法统一放到基类当中省去判断节点种类。每个节点的职责可以直接抽象,或者设置一个默认实现:...

2017-08-05 22:56:07

阅读数 95

评论数 0

原创 设计模式之迭代器模式

迭代器模式:在不暴露一个聚合对象的内部表示的情况下,提供一种方法来按顺序访问该对象中的各个元素。抽象出一个聚合类,该类有个方法返回这个聚合类对应的抽象类:public interface Aggregate<T> { Iterator<T> iterator(); ...

2017-08-05 21:14:08

阅读数 89

评论数 0

原创 设计模式之备忘录模式

核心:在不破坏封装性的前提下,在该对象之外保存这个状态,以便之后可以将该对象恢复到原状态。比如说打游戏保存记录public class Test { public static void main(String[] args) { // 玩家初始状态 Pla...

2017-08-04 21:41:41

阅读数 141

评论数 0

原创 设计模式之适配器模式

接口或方法不兼容的时候,中间添加一个适配器用来间接调用目标方法。假设我们现在有一个Normal类class Normal { public void action() { System.out.println("normal action"); ...

2017-08-04 20:45:25

阅读数 73

评论数 0

原创 设计模式之状态模式

状态模式就是用来把多种条件的判断解耦,消除掉if-else或者switch语句。核心思想是创建基类定义每种条件要实现的抽象方法,然后拓展子类去实现,在子类中如果符合本条件则做出具体操作,如果不符就传递下去。这样添加或者删除分支只需要新建子类,然后至多修改两个上下子类即可。比如一个判断块:publi...

2017-08-04 11:14:53

阅读数 130

评论数 0

原创 设计模式之建造者模式

建造者模式:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。即用一个抽象类规定各种建造条件,再用另一个类规定建造细节。产品类:假设产品由多种部件组成,提供一个方法用来添加组件public class Product { private List<String...

2017-08-02 23:29:44

阅读数 88

评论数 0

原创 设计模式之外观模式

给诸多子功能分组封装调用,隐藏子功能细节。子系统:class SubSystemOne { void subFunctionOne() { System.out.println("subFunctionOne"); } }class SubSys...

2017-08-02 23:01:32

阅读数 124

评论数 0

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