自定义博客皮肤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的博客

身处黑暗,心向光明

  • 博客(94)
  • 收藏
  • 关注

原创 MyBatis事务管理

是我们能进行实际事务提交和回滚的,所以如果我们要手动控制事务,应该指定事务管理器为。不会进行实际的事务提交和回滚,而是交由外部进行控制,而。可以看出,这两者的主要区别在于。MyBatis的事务管理是由。,这是一个典型的工厂模式。

2024-04-09 10:41:36 267 1

原创 Skywalking

启动Skywalking会同时启动一个控制台和一个监控进程。控制台默认为8080端口,可以在。监控进程默认监听11800端口,对应的值是。的gRPCPort。

2024-03-22 09:59:56 431

原创 nacos开启鉴权+springboot配置用户名密码

nacos鉴权

2024-02-27 15:10:29 1856

原创 MySQL——安装

Linux1.检查MySQL是否安装成功,安装成功可以正常输出[root@host]# mysqladmin --version2.启动MySQLservice mysqld start如果是MariaDBsystemctl start mariadb #启动MariaDBsystemctl stop mariadb #停止MariaDBsystemctl ...

2024-02-27 11:59:38 470 1

原创 SSH连接Linux

2024-02-26 09:06:31 345 1

原创 Java——MyBatis

Mybatis

2022-06-30 09:55:28 724

原创 ImageImagick——CentOS7和Windows平台的安装

CentOS 7(一)编译安装ImageImagick软件:# 1. 下载源码wget https://www.imagemagick.org/download/ImageMagick.tar.gz# 2. 解压缩tar xvzf ImageMagick.tar.gz# 3. 进入解压缩后目录cd ImageMagick-7.0.8# 4. 准备编译到/usr/local/Im...

2020-06-03 10:24:14 551

原创 缓存基础概念

1 缓存穿透缓存穿透指的是用户不断对缓存和数据库中都没有的数据发起请求,例如id为负数或特别大的数,导致数据库压力过大。穿透可以想象成幽灵穿过墙壁一样,什么都没有碰到,就像数据库和缓存都没有命中。一般情况下不会发生缓存穿透,较大可能是有人恶意攻击。解决方案:接口层添加参数校验,对于不合法参数直接拦截,例如id为负数的请求。无法直接判断是否合法的话,如果数据库和缓存都没有命中,则把对应的...

2020-03-11 09:45:41 198

原创 Java+UEditor

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

2019-03-11 10:40:38 3497 2

原创 Java——二维码

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

2019-02-20 14:07:49 125

原创 Java——Log4j1与Log4j2

1. Log4j 1引入Log4j:<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>重点

2019-02-16 14:36:06 809

原创 Python正则表达式

123

2018-07-04 15:54:26 130

原创 Django(二)——URL分发

Django处理接收到URL的流程:首先确定使用的URLconf模块,默认情况下使用的是settings.py中ROOT_URLCONF对应的模块。如果接收到的HttpRequest经由middleware配置了urlconf属性的话,就会使用该属性配置的模块。Django在该模块中查找urlpatterns变量,这个变量必须是django.urls.path()或者django.urls...

2018-07-02 11:01:17 1259

原创 Python虚拟环境

virtualenvPython虚拟环境使用virtualenv进行创建和管理。安装virtualenvpip install virtualenv创建虚拟环境默认创建到当前目录:virtualenv [虚拟环境名]可以指定各种参数:virtualenv --no-site-packages [虚拟环境名] # 不复制原有的第三方库virtualenv ...

2018-07-02 10:44:43 300

原创 正则表达式

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

2018-04-25 10:29:06 156

原创 CSS

Selectors属性选择器伪类选择器伪元素选择器混合选择器Selectors选择器的分类:简单选择器:使用元素类型、class、id等进行匹配。属性选择器:使用属性或属性值进行匹配。伪类选择器:使用元素特定状态或元素特定部分进行匹配,例如鼠标滑过、选中状态、首个子元素等等。伪元素选择器:使用相对于某个元素的特定位置进行匹配,例如每段首字母、某个元素...

2018-04-24 18:23:11 257

原创 Room使用实例

Room基本使用EntityDatabaseDaoViewModelRecyclerViewUIRoom结合PagingDaoViewModelRecyclerView.AdapterUIRoom基本使用Entity首先定义一个User类:// 定义为Entity@Entitypublic class User { // 设置主...

2018-04-24 15:36:54 2853

原创 Paging

Paging库是用来代替在ListView中查询的CursorAdapter和在RecyclerView中查询的AsyncListUtil的。Paging库的主要组成:DataSource:定义数据来源,可以根据实际情况继承其子类: PageKeyedDataSource:使用当前Page保存的前后key来查找数据,例如使用当前保存的nextPage token。ItemKeyedD...

2018-04-24 14:09:51 1534

原创 Cent OS 7安装Tomcat 8.0

安装Tomcat之前需要先安装JDK,可以参考之前的博文CentOS 7 安装 JDK1.8下载Tomcatwget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.0.50/bin/apache-tomcat-8.0.50.tar.gz解压缩并重命名移动到/usr/local/tomcat:tar -zxvf a...

2018-04-12 14:23:35 2819

原创 CentOS 7 安装 JDK1.8

下载JDK使用wget下载JDK的tar.gz,因为JDK下载界面需要同意协议方能下载,所以需要在wget命令中添加--no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"这一串参数才能正常下载:wget --no-check-certificate -...

2018-04-12 13:36:00 500 1

原创 DataBinding(七)tips

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.firstName, default=`I am a placeholder`}"/>使用default属性设置AndroidStudio预览面板中的默认显示内容,...

2018-03-23 16:43:54 120

原创 DataBinding(六)数据转换

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

2018-03-23 16:43:26 2814

原创 DataBinding(五)自动更新

虽然使用普通的Java对象就可以把数据绑定到UI界面,但是当数据变动时,UI却不会及时更新,所以DataBinding提供了observable objects、observable fields、observable collections来达到自动更新的效果。observable objects如果一个类实现了android.databinding.Observable接口,则Da...

2018-03-23 16:42:12 1149

原创 DataBinding(四)属性设置

1. 默认setter对于设置了DataBinding表达式的XML属性,DataBinding会根据属性表达式的返回值查找该属性的setter方法,比如android:text="@{"str"}"属性是去找setText(String)方法,所以表达式的返回值类型是十分重要的,影响着DataBinding查找的具体方法。如果View不提供某个属性的XML属性,但是其实包含了该属性的se...

2018-03-23 16:41:55 614

原创 DataBinding(三)事件处理

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

2018-03-23 16:41:04 1034

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

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

2018-03-23 16:37:36 3396

原创 DataBinding(一)基础

1. 导入在module的build.gradle中声明android { dataBinding { enabled true }}如果依赖库中使用了DataBinding,则module也要使用DataBinding才行。Android Gradle Plugin 3.1.0 canary 6提供了另外一种新的DataBinding编译器V...

2018-03-23 16:36:58 505

原创 Scroller

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

2018-03-23 16:05:57 282

原创 Dagger2

一、简介二、依赖注入@Inject提供依赖@Provides提供依赖三、依赖特殊情况@Qualifier@Singleton四、依赖注入时机1. 直接注入2. Lazy注入3. Provider注入五、Component依赖六、Subcomponents1. 实现步骤2. Subcomponent实现不同Scope3. Subcomponent实现封装...

2017-08-29 11:37:29 309

原创 Service与AIDL

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

2017-08-16 14:17:47 518

原创 Retrofit2整理

简介Retrofit的介绍: A type-safe REST client for Android and Java. Retrofit使用注解来描述HTTP请求,默认支持URL参数替换和请求参数。而且还支持自定义header、multipart请求体、文件上传和下载、模拟响应等等。导入Retrofit2默认以OkHttp为网络层,因此不需要显式依赖OkHttp。

2017-08-12 14:46:55 482

原创 WebView整理

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

2017-08-11 13:03:42 193

原创 OkHttp整理

导入compile 'com.squareup.okhttp3:okhttp:3.8.1'混淆:-dontwarn okio.**-dontwarn javax.annotation.Nullable-dontwarn javax.annotation.ParametersAreNonnullByDefault最新版本请看github使用示例:同步Getresponse.body().strin

2017-08-10 10:48:08 446

原创 Android动画之属性动画

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

2017-08-08 09:55:29 307

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

访问者模式(Visitor Pattern):在不改变某对象结构中个元素的前提下,定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统,可以把数据结构和作用于结构上的操作解耦,使操作集合可以相对自由地变化。一种操作就相当于一个访问者。访问者模式将有关操作行为集中到一个访问者对象中。访问者模式的缺点在于会使数据结构的变化变得困难。比如男人和女人对于不同的事件有不同的反应,如果单纯抽象出P

2017-08-07 22:19:06 183

原创 设计模式之享元模式

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

2017-08-07 21:22:04 188

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

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

2017-08-07 20:04:54 163

原创 Dagger2

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

2017-08-07 13:45:49 296

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

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

2017-08-06 23:29:39 292

原创 设计模式之命令模式

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

2017-08-06 22:05:09 183

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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