自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WillLiaowh的博客

WillLiaowh的博客

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

原创 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]正常反应双for走起,哈哈哈class Solution { public int[] twoSum

2020-07-13 14:08:34 269

原创 Spring in Action学习笔记九

使用Spring MVC创建REST API以信息为中心的表述性状态转移(Representational State Transfer,REST)已经成为替换传统SOAP Web服务的流行方案。SOAP一般关注行为和处理,而REST关注要处理的数据。REST面向资源,将资源的状态以最适合客户端或者服务端的形式从服务端转移到客户端。创建REST API,HTML并不是合适的数据表达式,资源表述应当首选XML和JSON。Spring中的RESTful特性Spring提供了两种方法将资源的Java表述

2020-06-08 11:14:10 330

原创 Spring in Action学习笔记八

Spring对数据访问的支持Spring自带了一组数据访问框架,集成了多种数据访问技术。能够帮你消除持久化代码中那些单调枯燥的数据访问逻辑,可以依赖Spring来处理底层的数据访问,这样就可以专注于应用程序中的数据的管理。Spring的数据访问哲学将数据访问的功能放到一个或者多个组件中,这些组件被称为DAO或者Repository,为了避免应用与特定的数据访问策略耦合在一起,编写良好的Repository应该以接口的方式暴露。这样的好处是:1.服务对象通过接口访问Respository,使服务对象便

2020-06-08 11:14:05 182

原创 Spring in Action学习笔记七

Spring MVC的高级技术SpringMVC配置的方式1.使用Java类继承AbstractAnnotationConfigDispatcherServletInitialier配置2.使用web.xml配置3.设置web.xml使用基于Java的配置SpringMVC处理文件上传1.处理multipart形式的数据一般表单提交所形成的请求结果是很简单的,就是以&符风格的多个name-value对,但是对于传送二进制数据,如上传图片,就显得力不从心。multipart格式的数据

2020-06-08 11:13:59 163

原创 Spring in Action学习笔记六

渲染Web视图将控制器中的请求处理的逻辑和视图中的渲染实现解耦是SpringMVC的一个重要特性。JSP视图Spring提供两种支持JSP视图的方式:1.JSTL-JSP标准标签库2.两个JSP标签库,Spring的表单绑定标签库和Spring通用标签库使用Apache Tiles视图定义布局定义适用所有页面的通用页面布局使用Thymeleaf通过自定义的命名空间,为标准的HTML标签集合添加Thymeleaf属性...

2020-06-08 11:13:47 289

原创 Spring in Action学习笔记五

构建Spring Web应用程序Spring的Web框架 SpringMVC基于模型-视图-控制器(Model-View-Controller,MVC)模式实现,它能够帮你构建像Spring框架那样灵活和松耦合的Web应用程序。跟踪Spring MVC的请求每当用户在Web浏览器中点击链接或提交表单时,请求就开始工作了。在请求离开浏览器时,会带着用户所请求内容的信息,至少包含请求的URL,但是也有可能带有其他信息,如用户提交的表单信息。1.请求首先来到DispatcherServlet,(与大多数基

2020-06-03 14:34:38 118

原创 Spring in Action学习笔记四

面向切面的Spring系统中的日志,安全和事务管理等散布在系统多处的功能被称为横切关注点,这些横切关注点从概念上是与应用的业务逻辑相分离的,但是往往会直接嵌入到应用的业务逻辑中,把这些横切关注点与业务逻辑相分离是面向切面编程(AOP)所要解决的问题。AOP可以实现横切关注点与它们所影响的对象之前的解耦。横切关注点往往被模块化为通用的模块,如果要重用通用的功能的话,最常见的面向对象技术是继承和委托,但是,如果在整个应用中都使用相同基类,继承往往会导致一个脆弱的对象体系,而使用委托往往需要对委托对象进行复

2020-06-03 14:32:55 134

原创 Spring in Action学习笔记三

高级装配Spring profile解决了Spring bean要跨各种部署环境的通用问题。在运行时,通过将环境相关的bean与当前激活的profile进行匹配,Spring能够让相同a的部署单元跨多种环境运行,而不需要进行重修构建。profile配置与激活1.配置profilea.@Profile,@Conditional(ProfileCondition.class)b.<beans>元素的profile属性2.激活profilespring.profile.active这个属

2020-06-03 14:31:11 129

原创 Spring in Action学习笔记二

装配BeanSpring框架的核心是Spring容器,容器负责创建应用对象并保证它们的依赖关系。Spring创建应用对象之间协作关系的行为称为装配,也是依赖注入的本质。开发人员需要告诉Spring要创建哪些Bean并且如何将其装配在一起,当描述Bean如何进行装配时,Spring提供了三种主要的装配机制:自动化装配Bean(推荐使用,因为显示配置越少越好)1.组件扫描(component scanning)Spring会自动发现应用上下文中所创建的Bean。使用@Component注解这个注解

2020-06-03 14:25:19 152

原创 Spring in Action学习笔记一

Spring之旅Spring最根本的使命:简化Java开发1.基于POJO的轻量级和最小侵入性编程在基于Spring构建的应用中,它的类通常没有任何痕迹表明你使用了Spring。2.通过依赖注入和面向接口实现松耦合如果一个对象只通过接口而不是具体实现或初始化过程来表明依赖关系,那么这种依赖就能够在对象本身毫不知情的情况下,用不同的具体实现进行替换。按照传统做法,每个对象负责管理它所依赖的对象的引用,将导致高度耦合和难以测试的代码。创建应用组件之间的协作的行为通常称为装配,Spring可采用XM

2020-06-03 14:16:12 225

原创 复制粘贴就完事的Linux安装Redis

1.下载redis的tar.gz包,如我下载的redis-3.0.7.tar.gz。2.上传到opt目录下,解压文件tar -zxvf redis-3.0.7.tar.gz3.cd redis-3.0.7文件夹cd redis-3.0.74.执行编译安装命令make && make install5.cd usr/local/bin文件夹可以看到redis已安装cd /usr/local/bin6.备份redis-3.0.7文件夹中默认的redis.conf文件c

2020-05-09 22:31:04 187

原创 复制粘贴就完事的Linux 安装MySQL5.6步骤

1.下载MySQL的tar.gz包,如我下载的mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz2.上传到opt目录下,解压文件tar -zxvf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz3.移动到/usr/local/目录下,并改名mv mysql-5.6.46-linux-glibc2.12-x86_64 ...

2020-05-07 23:39:42 167

原创 复制就能用的SpringBoot日志配置

SpringBoot默认的日志框架是Slf4j + Logback。虽然在创建SpringBoot项目后可以直接使用日志,但是在我们经常会有将日志按日期保存到文件中这样的需求,所以需要自定义日志的配置。下面配置拿来就用哈哈哈:<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPerio...

2020-05-07 23:36:13 132

原创 基于Freemarker模版生成Docx和Pdf文件

产品提了个这样的需求:分别生成一个word文档和pdf文档,里面需要包含数据,这些数据需要有对应的样式比如字体大小,表格,段落等。开始的想法是用Apache POI,但看了那一大段填充值操作的代码发现太过冗长,决定采用Freemarker模版的方案。百度了一圈看上去Spring Boot + FreeMarker制作word模板导出Word表格这种做法像那么一回事,尝试了一波后发现生成的是只能生...

2020-05-07 23:32:27 837

原创 Android 事件分发机制

当用户触摸屏幕的时候,会产生触摸事件(touch事件),这些事件传递到某个View并且处理的过程,就是事件的分发。MotionEventAndroid中的触摸事件(touch事件),被封装成MotionEvent实例来体现。MotionEvent.ACTION_DOWN 按下ViewMotionEvent.ACTION_UP 抬起ViewMotionEvent.ACTION_M...

2018-09-03 22:20:36 181

原创 View的Draw过程

View的Draw过程是对View的绘制,包括背景,内容等。1.View的Draw过程代码 public void draw(Canvas canvas) { ... if (!dirtyOpaque) { // Step 1,绘制View的背景 drawBackground(canvas); ...

2018-07-18 23:15:19 231

原创 View的Layout过程

View的Layout过程的作用是计算View的位置,即Left,top,right和bottom四个顶点的位置。1.View的Layout过程代码 public void layout(int l, int t, int r, int b) { ... boolean changed = isLayoutModeOptical(mParent) ?...

2018-07-17 13:57:17 197

原创 Java泛型

Java泛型

2018-07-05 10:31:24 189

原创 Android 签名与打包

Android系统要求只有签名后的APK文件才可以安装,因此我们还需要对生成的APK文件进行签名。而平时我们通过Android Studio 将程序安装到手机上,是因为AS使用了一个默认的keystore文件帮我们自动进行了签名。Android Studio提供的可视化工具生成带有正式签名的APK文件,还可以通过Gradle生成。...

2018-06-10 22:40:01 276

原创 Android小技巧

1.使用Intent传递对象使用Intent来传递对象通常有两种实现方式:Serializable和Parcelable。Serializable是序列化的意思,标示将一个对象转换成可存储或可传输的状态,序列化后的对象可以在网络上进行传输也可以存储到本地,只需要让一个类去实现Serializable这个接口。可通过getSerialzableExtra()方法来获取通过参数传递过来的序列化对象。P...

2018-06-05 23:05:36 279

原创 Android Material Design

Toolbar新建一个项目,默认都会显示ActionBar,是根据项目中AndroidManifest中指定的主题来显示的。 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent 指定不带ActionBar的主题有两种,Theme.Ap

2018-06-04 22:20:37 148

原创 抽象工厂模式

抽象工厂模式的作用或者优点抽象工厂模式是为了克服工厂模式的缺点,而将工厂模式中仅能生产一种产品的工厂类改写为生产一系列产品的工厂类。UML图步骤1.创建抽象产品类或者接口,定义公共的抽象方法2.创建抽象工厂类或者接口,定义公共的抽象方法3.继承抽象产品类或者实现接口创建具体产品类,实现抽象方法4.继承抽象产品类或者实现接口创建具体工厂类,实现抽象方法5.客户类通过不同工厂类的静态方法,从而获得不同...

2018-05-06 23:04:41 140

原创 工厂方法模式

工厂方法模式的作用或者优点工厂方法模式是为了克服简单工厂模式的缺点,而将简单工厂模式中单一的工厂类改写为一个层次类。UML图步骤1.创建抽象产品类或者接口,定义公共的抽象方法2.创建抽象工厂类或者接口,定义公共的抽象方法3.继承抽象产品类或者实现接口创建具体产品类,实现抽象方法4.继承抽象产品类或者实现接口创建具体工厂类,实现抽象方法5.客户类通过不同工厂类的静态方法,从而获得不同的具体产品实例代...

2018-05-06 22:00:13 151

原创 View的Measure过程

在谈View的Measure过程之前,我们先谈谈MeasureSpec类。我们直接说结论:1.一个View的widthMesureSpec和heightMeasureSpec决定了这个View的宽和高。2.子View的width/heightMeasureSpec值是由父View的width/heightMeasureSpec值和子View的宽/高LayoutParams计算得到,而子View的w...

2018-05-06 21:56:45 258

原创 简单工厂方法模式

简单工厂方法模式的作用或者优点简单工厂方法模式实现了责任分离,即客户类不直接创建产品类的实例,只是作为实例的消费者,客户类委托工厂类创建产品类的实例。UML 图步骤1.创建抽象产品类或者接口,定义公共的抽象方法2.继承抽象产品类或者实现接口创建具体产品类,实现抽象方法3.创建工厂类4.客户类通过工厂类的静态方法,传入不同的参数,从而获得不同的具体产品实例代码例子1.abstract class P...

2018-03-26 23:21:57 168

原创 单例模式

单例模式的作用或者优点单例模式可以保证使用该模式的类在系统中永远只有一个实例,避免多个实例存在引起的逻辑错误。单例模式的六种实现方式按创建单例的时机,又可以分为在类初始化的时候创建和按需延时创建a.在类初始化的时候创建1.饿汉式,线程安全public class Singleton {    //饿汉式    private static Singleton singleton = new Sin...

2018-03-26 23:21:13 134

原创 View的绘制流程,从Activity的启动说起

Activity是通过ActivityThead启动的,首先会走handleLaunchActivity方法,之后会走 performLaunchActivity()方法private void handleLaunchActivity(ActivityClientRecord r, Intent customIntent) { ··· Activity a = perform...

2018-03-26 14:32:23 326

原创 Android 自定义View基础知识

Android中的控件分为两类,要么是继承View类的控件,要么是继承ViewGroup类的控件,而ViewGroup类也继承了ViewGroup类。1.View的四个构造方法自定义View的时候,继承View类,至少需要实现一个构造方法。public class CircleView extends View { //如果View是在Java代码中new的,则调用第一个构造方法 ...

2018-02-23 11:10:41 230

原创 ViewPager + Fragment的使用需注意的几个点

在ViewPager + Fragment 的使用中需注意的几个点。1.FragmentPagerAdapter和FragmentStatePagerAdapter的使用区别两者均通过setOffscreenPageLimit()来控制缓存的Fragment的个数,默认值为1,可看做是当前Fragment左右两边可缓存的Fragment的个数,超出这个数量范围的Fragment的都会被回收

2018-01-31 10:00:43 277

原创 Android Service

一、Service的基本用法1.定义一个Service2.启动和停止Service 3.Activity和Service进行通信二、Service的生命周期前台ServiceIntentService

2017-11-14 17:20:13 222

原创 Android 异步消息处理机制

异步消息处理机制

2017-10-19 14:28:35 269

原创 Android 网络

1.WebView借助WebView,可以在程序中嵌入一个浏览器,展示网页。WebView webView = (WebView)findViewById(R.id.web_view);webView.getSettings().setJavaScriptEnabled(true);webView.setWebViewClient(new WebViewClient());webVi

2017-10-10 08:15:49 310

原创 Android 手机多媒体

1.通知NotificationNotification notification = new NotificationCompat.Builder(this);2.调用摄像头和相册启动摄像头:Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");intent.putExtra(MediaStore.EXTR

2017-10-09 08:23:54 294

原创 Android 权限机制

Android 权限机制

2017-09-25 20:01:16 343

原创 Android 持久化技术

数据持久化就是将内存中瞬时数据保存到存储设备中。Android中主要提供了3种方式用于实现数据持久化,包括文件存储、SharedPreferences存储和数据库存储。一.文件存储二.SharedPreferences存储SharedPreferences使用键值对来存数据。将数据存储到SharedPreferences中,首先要获取SharedPreferences对象,有3

2017-09-13 20:17:28 366

原创 Android Fragment

Android Fragment

2017-08-18 14:32:57 237

原创 Android UI

Android UI

2017-08-17 14:50:00 232

原创 Android Activity

1.配置启动Activity 2.在Activity中使用Menu在res/menu/menu_item.xml下创建菜单项<item android:id="@+id/menu_item" android:icon="@drawable/setting" android:title="@string/menu_item"

2017-08-10 20:11:54 218

原创 Android Tinker的两种接入方式

老大让我把项目里的AndFix改为Tinker,遇到各种问题,网上的文章大同小异不清不楚,折腾了好几天好不容易搞出来了,来为跟我一样的菜鸟们指点迷津。Tinker的接入主要有两种方式,一种是Tinker推荐使用的gradle接入,一种是命令行的接入。一. gradle接入1.project目录下gradle添加buildscript { dependencies {

2017-08-09 14:21:32 1810

原创 Android 简捷地为RecyclerView添加上拉加载

相信我们经常在项目中遇到列表的每一行有n个item的需求,传统的ListView已经不再适用,google也早就为开发者提供了开发利器RecyclerView,但使用RecyclerView总会有这样那样的问题,不能像ListView一样拿来就用。我这里主要解决了两个RecyclerView常见的麻烦的问题:1.HeaderView和FooterView的添加。2.通过删除FooterVi

2017-08-04 10:52:09 329 1

空空如也

空空如也

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

TA关注的人

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