自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

宁静致远

点滴珍贵,重在积累。

  • 博客(48)
  • 资源 (3)
  • 收藏
  • 关注

原创 spring mvc中应用velocity

VelocityVelocity是一款基于java的模板引擎。相比于jsp而言,它被使用的人可能并不多,但的确也是一款出色的模板引擎。jsp中允许出现java代码,而Velocity不允许,也是为了方便维护模板,严格遵从MVC设计原则。模板只负责页面的规划,渲染页面。当然Velocity的定位不仅仅在web页面的开发上使得前后端开发者可以更明确的职责分离,它还可以应用在其它涉及模板应用的领域,比...

2018-10-14 14:31:08 380

原创 Java版本兼容问题

Java代码编写完成后,通常要经过编译,编译后产生jar再运行。随着Java版本的升级,编译工具与运行环境都有一定的升级,不过官方称这些都是向下兼容的。如何理解向下兼容?向下兼容说的意思是当前版本以及其下所有版本编译的项目都可在当前版本对就的JRE下运行;与其相反是,如果编译版本超越当前JRE版本,则将无法运行,会报错如:Unsupported major.minor version 52.0...

2018-10-05 16:53:03 10976 2

原创 了解Java JNI及动态链接库

提到Java JNI不得不提到动态链接库,在window操作系统中一般为后缀为DLL的文件,在Linux中为.so文件。动态链接库的作用在于为多个应用程序提供相同的函数功能,以此达到节省代码量,节省内存,共享相关数据、系统资源的作用。Java的JNI则是为了对接这种功能的技术。Java中的一个方法申明为native时,是不会直接用java代码去做实现的,因为native方法就是通过JNI去调用...

2018-10-04 22:17:15 319

原创 冒泡排序

原理: 思路:总共需要多少轮冒泡?需要n-1次。 冒泡:每一轮冒泡将会在剩下的(n-i)个元素中产生一个最大或者最少的值, 第一轮i等于0,第二轮i等于1… 而每一轮的冒泡需要比较(n-i-1)次即可确定一个极值,所以(n-i-1)就是一轮冒泡要比较的次数所以具体第一轮参与冒泡的元素个数是与元素总量n有递减关系,并且参数冒泡的次数也是固定的为n-1,这种明显可量化的问题可以用一个很典型...

2018-08-20 22:02:45 4503

原创 了解JSR 303 - Bean Validation

Bean ValidationBean Validation是JSR中的一种规范,提出这个规范的目的在于合理提取数据模型的校验逻辑,使数据校验相关的工作绑定到Java Bean域模型上,从而可以避免相同的校验逻辑重复出现以及重复出现在不同的层上。Bean Validation 中的 constraintBean Validation通过定义相关元数据模型和API来规范校验工作,我们...

2018-08-13 21:43:03 172

原创 Spring Boot整合Mybatis Plus

前面演示了很多整合案例,今天笔录下整合Mybatis Plus的过程,后面文章涉及整合框架组件的文章,会大部分基于Spring Boot来做,因为上一篇文章我们也理解了,Spring Boot已经将整个生态链集成达到了比较规范的程度。Mybatis Plus我们知道Mybatis是一款非常优秀的JDBC持久化框架,利用它我们可以很方便的搭建DAO实现,而Mybatis Plus...

2018-08-04 16:33:24 1527

原创 Spring Boot 自动配置

今天这篇文章不再演示具体代码,只讲些我对Spring Boot自动配置特性的认识,我们首先初步认识它,然后理解它存在的意义、以及实际应用场景。自动配置软件工程的复杂度伴随着需求的复杂日益上升,一个真正的应用运营起来,它涉及到底层硬件、网络基础设施,还涉及到上层应用的架构,维护,部署等。总之现代化的软件分工越来越明细、架构越来越复杂,最终是使各个部件松耦合,方便更好的扩展。然而组件的分是...

2018-08-04 00:25:58 350

原创 Mybatis Starting基于Spring Boot

前面几篇讲了官方方式配置Mybatis、集成Spring方式配置Mybatis、利用Spring JavaConfig配置Mybatis;而今天则学习基于Spring Boot来配置Mybatis。认识Spring BootSpring boot存在的意义: Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 ...

2018-08-02 00:47:09 138

原创 Mybatis Starting基于Spring JavaConfig

今天我们来继续学习使用mybatis-spring来基于spring容器环境的JavaConfig方式配置mybatis。JavaConfig从Spring 3起,JavaConfig功能已经包含在Spring核心模块,它允许开发者将bean定义和在Spring配置XML文件到Java类中。但是,仍然允许使用经典的XML方式来定义bean和配置,JavaConfig是另一种替代解决方案...

2018-07-31 22:58:25 680

原创 Mybatis Starting基于Spring XML

前面讲到了基于mybatis官方的配置mybatis-config.xml对mybatis作配置,今天我们来学习使用mybatis-spring来基于spring容器环境的XML方式配置mybatis。理解mybatis-spring以下是官方说明:MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 使用这个类库中的类, Spring 将...

2018-07-30 21:34:32 171

原创 Mybatis Mysql布尔类型处理

针对mysql数据库作如下测试, 如果数据库存的为非0数字,转换为true,否则为false如果javaType的Boolean类型值为true,存到数据库数字为1,false则为0

2018-07-29 20:18:11 14819 1

原创 Mybatis enum typeHandler

TypeHandler作用mybatis在预处理语句(PreparedStatement)中设置一个参数时,或者从结果集(ResultSet)中取出一个值时,都会用到TypeHandler。 它的作用就是将java类型(javaType)转化为jdbc类型(jdbcType),或者将jdbc类型(jdbcType)转化为java类型(javaType)内置TypeHandler我...

2018-07-29 19:39:05 1046

原创 Mybatis Starting基于XML

入门要想开始使用mybatis,首先得了解mybatis如何作配置,然后mybatis会基于这个配置进行初始化,然后会产生一个SqlSessionFactory。 SqlSessionFactory可以生产SqlSession,利用SqlSession,我们就可以操作数据库。配置MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域...

2018-07-29 16:37:40 109

原创 Gradle配置远程依赖仓库

配置远程依赖仓库添加如下配置:repositories { maven {url 'http://maven.aliyun.com/nexus/content/groups/public/'} //mavenLocal() //mavenCentral()}因为墙的原因,我在这里使用的是aliyun仓库然后就可以添加如下示例依赖:depende...

2018-07-29 15:15:29 6046

原创 git初始配置及关联远程仓库

gitGit是目前世界上最先进的分布式版本控制系统(没有之一)。当下流行的代码托管服务器gitHub gitee coding都是使用git方式来管理。所以我们每个开发都应该学会配置并应用它,今天主要学习用它来做初始安装后的远程仓库关联配置。第1步:创建SSH Key打开Shell(Windows下打开Git Bash),创建SSH Key:$ ssh-keygen -t ...

2018-07-29 13:45:34 1117

原创 Gradle Wrapper初识

Gradle Wrapper存在的意义gradle wrapper在放在每个项目中的,这样如果有开发都下载项目,然后想要执行构建任务,用wrapper方式,gradle wrapper会自动检测本地是否有指定版本的gradle,如果没有它会自动从网络上下载gradle。其实就相当于对原生gradle命令包装了一层,相比于传统的maven,这种wrapper模式显得更智能灵活,其实它的实现就...

2018-07-29 00:17:29 5264

原创 gradle java项目初识总结

gradle当下其实相比于maven正变得越来越流行的一款构建工具,我们每一个开发人员都很有必要了解一下。今天我来剖析下gradle java项目结构。build.gradle这是gradle项目的构建脚本文件settings.gradle这是gradle环境配置文件用gradle来构建JAVA项目在build.gradle中添加如下脚本:plugi...

2018-07-28 23:46:28 913

原创 java wait、nofity实操时的一些感悟

夜深了,我还在学习+操练,为自己近段时间的学习状态点赞,即使操练的时候,我也喜欢多思考,同时体会出更多的一些理论感悟,然后写下来,捋一捋,很爽,因为理解的更透彻了!跟一些大神的思维似乎又接近了些。以下是今天的成果,有兴趣的请细看:package test.wait;import java.text.MessageFormat;/** * 如果一个处理过程被设计为:大部...

2018-07-24 22:26:10 491

原创 java中的wait、notify

最近在学习java多线程的锁相关的知识,通过不断百度别人对wait、notify的理解,我也有了一些的认识。同时之所以写这篇博客,我也是发现网上大多写的是wait、notify的用法、规则、注意事项、描述性比较专业、太技术化。这对于初学都来说容易陷入一脸懵逼的状态,很快可能就想放弃。而我今天描述则重在剖析wait、notify存在的意义,而还是让初学都陷入一种被动接受规则的境地,只有这样才能...

2018-07-24 20:40:47 168

原创 JAVA CAS初识

多线程并发协同通讯一直都是不可避之的话题,尤其是现代多核处理器的发展更推动了关于这方面的研究。在JAVA领域,JDK 5之前是靠synchronized关键字保证同步的,而这会导致产生比较重量级的锁,通常会导致线程阻塞、等待、唤醒。如果线程的这种状态切换比较频繁可能会加重CPU的负担,这样可能会阻碍真正有意义的处理。而CAS这种算法的出现可以避免这些,CAS是从硬件层面作一些变量操作的原子...

2018-07-22 14:45:10 121

原创 谈谈线程与进程及它们之间的通讯

本文主要聊聊线程与进程以及它们之间的通讯。线程与进程的概念我相信我们每个开发者都常常听到,但是我们是否真正理解了它们? 如何应用它们来实现一个并发程序的通讯,如何利用它们合理利用系统资源,都关乎我们是否能实现一个好的应用程序。本文主要是在于温故而知新,主要是用来梳理线程进程的知识。进程 是具有一定独立功能的程序,相对操作系统来说,操作系统分配资源给进程,所以进程作为系统资源分配和...

2018-07-16 21:52:46 1301

原创 借Spring framework简介剖析来告诫大家要追本溯源

任务软件产品都是结合实际应用价值为导向而产生,一个没有实际应用价值的软件产品谈再多的技术都是耍流氓;反过来其实为实现特定的价值也正是驱动技术发展与革新的动力。一个好的软件产品诞生了,必然会有一个对它的简介,简介不需要太冗杂繁多,只需要切入特定领域精简而又不偏离软件的道出真正价值即可。写在上面的话是想告诉大家要追本溯源,如此我们学习了解任务软件产品的才能思想觉醒,而我接触了spring这...

2018-07-12 22:05:10 222

原创 Mybatis插件实战进阶篇

在上一篇文章中我们已经全面的了解了Mybatis插件相关实现原理,以及它在实际开发应用中的作用,用的好的话,可以实现系统松耦合,动态扩展。这一篇废话不多说,我将带你领略插件在处理含嵌套方法场景的接口时实战编写指南,以及那些我踩过的坑。要代理的接口 这里讲的是一种特殊场景,即要代理的接口有A、B两个方法,在实际业务流程上A方法会调用B方法。要实现的特性 希望运用Mybatis插件...

2018-07-09 22:16:48 599

原创 揭开Mybatis插件的神秘面纱

Mybatis插件的作用: Mybatis的插件主要用于拦截Executor、StatementHandler、ParameterHandler、ResultSetHandler这些组件的行为,在行为之前或者之后做拦截处理,进而改变行为执行细节,当然我们也可以完全重写这些行为。好处: 说到好处,先剖析下插件的实现细节。插件实质是对JDK原生Proxy工具类的进一步封装,继承了JDK动态代理...

2018-07-08 17:09:27 151

原创 Mybatis模型组件记录

Mybatis的主要组件:Configuration 用于代表Mybatis的所有配置信息SqlSession 封装了JDBC Connnection对象,Mybatis工作时的顶层API,代表和数据库交互的会话,完成必要的CRUD,SCOPE在一次会话SqlSessionFactory 用于获取SqlSession,SqlSession的工厂,每一次会话的开启都会用它取得一个SqlSe...

2018-07-08 15:58:10 143

原创 HTTP常见请求和响应头

HTTP常见请求头在HTTP/1.1 协议中,所有的请求头,除Host外,都是可选的。If-Modified-Since:把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在

2017-08-16 10:15:25 1928

原创 Java8 Optional剖析

Optional存在的意义在java8出现之前,通常在调用一个对象的方法的时候,难免会判断对象是否为Null,只有不为null才敢去调用对象的方法,这是一种安全措施,如果不注重这个null的情况,会常常出现NullPointException。相信java程序员对这个异常并不陌生。而java8出现之后使用到了Optional这个接口,它用一种更优雅的方式来处理这种问题,并且使得程序可读性更高。

2017-08-16 10:05:55 232

原创 HTTP状态码

HTTP状态码简介通常在上网时有这样一个过程:用户请求网页,服务器接收请求并响应相应页面给浏览器,然后浏览器解析并显示对应网页,响应此网页时,响应消息中包含HTTP状态码-HTTP Status Code。常见的HTTP状态码:200 - 请求成功301 - 资源(网页等)被永久转移到其它URL404 - 请求的资源(网页等)不存在500 - 内部服务器错误状态码组成

2017-08-15 16:00:49 311

原创 HTTP协议理解

HTTP协议简介HTTP协议即超文本传输协议(Hyper Text Transfer Protocol)。它用于浏览器从Internet服务器获取超文本的传送协议。它已经是互联网上应用最为广泛的一种协议,平常上网浏览网页都离开不了它。HTTP基于TCP/IP通信协议来传输数据,这些数据包括HTML , 图片以及其它格式数据等)。HTTP凌驾于TCP/IP之上,是一个专注于应用层来制定相关数据传送标准

2017-08-15 15:36:11 342

原创 java设计模式:适配器模式

定义适配器模式是指把一个类的接口适配为客户所期望的另一种接口。这样一来,Adapter模式使得原本因为接口不兼容而不能在一起工作的类可以在一起工作,所以事实上Adapter在其中起到一种桥梁的作用。解决的实际问题适配器模式是为了解决什么问题? 比如日常生活中的三相插孔适配为二相插孔,中间做这个转换的物件可以称之为适配器,它解决了我们因为插孔不适配而无法使用的问题,诸如此类例子很多,在此不一一列举。

2017-08-11 09:11:20 159

原创 谈谈java设计模式之策略模式

前言java有很多种设计模式,如果能在实际的应用场景中熟练得运用一些恰当的设计模式,有助于我们的 系统在建设过程中实现组件松耦合,增强扩展性和可维护性,同时适当运用一些设计模式也能增强我们代码的可读性,让别人很容易上手我们写的代码,总之设计模式是我们软件工程中一个重要的灵魂,有了它我们才能建设出卓越的系统。呵呵,以上说了不少废话,我想要表达的是后面我会不断写一些关于设计模式的文章,而今天我们主要聊

2017-08-07 00:02:07 409

原创 spring mvc学习

spring mvc是什么spring web mvc:一种基于java的实现了web mvc设计模式的请求驱动类型的轻量级web框架。我想这是对spring web mvc的比较精简准确的描述。那么什么是web mvc设计模式?其实这种架构模式我想做web开发的都有一定的了解,它其实是把web层的职责解耦合,主要分为控制器、模型、视图。它使用请求-响应模型,来触发相应控制器转发请求给相应模型处理,

2017-08-06 13:38:10 287

原创 java8 Stream API之reduce

通过前面那篇文章,我们已经对Stream API有了初步的认识,并对它在集合处理中的增强作用表示了肯定。同时我们上篇中示例了forEach、fiter、sum这些常用的功能,本篇我们只讲reduce。reduce的作用是把stream中的元素给组合起来。至于怎么组合起来:它需要我们首先提供一个起始种子,然后依照某种运算规则使其与stream的第一个元素发生关系产生一个新的种子,这个新的种子再紧接着与

2017-08-04 15:32:43 7450

原创 java8 Stream API初识

聊到了java8,自然很多很多人会想到lambda表达式和函数式接口这两个比较重要的特性。同时Stream API则是基于这个两个重要特性而衍生出的比较重要的工具,它是对java集合操作的增强,它用到了比较精炼表达的lambda表达式,把对集合的相关汇聚操作提取出可读性高的API,并且支持串行和并行两种处理方式,它让我们抛弃传统的迭代循环方式,让我们面向stream的方式进行操作,这是一种替代方案,

2017-08-04 13:52:46 405 1

原创 java8初探

java8已经出来很长时间了,它是自java5以来做了很大的改变的一个版本,增加了很多新的特性,所以这个版本受到了极大的关注,我们应该很有必要去了解下。Lambda这是java8的最重要的一个特性,java8借助这个表达式使其语法有些与以往有些不同,但是表达能力毫无疑问是很强的,它所对应的接口为函数式接口,它实际是用来替代传统的匿名内部类,比以前的匿名内部类的使用更精简理工具强表达性的植入一段过程,

2017-08-02 23:17:15 275 2

原创 gradle初学

ant与maven我早已有所了解,它们大致的原理我要清楚些,但是对于gradle却并没有什么实际的操练经验,印象中它是一个基于groovy的DSL风格的语法特性,而groovy是一门基于JVM的语言,所以gradle做的一些构建的活也应该是需要jvm运行环境。我理解的则是gradle好像在android app的构建中用的比较多,而大部分开源项目似乎还是以主流的maven构建为主,但是实际是grad

2017-08-01 23:35:41 217

原创 字符编码杂谈

引言 作为一个程序员,遇见文本乱码的事情并不少见,而要想解决乱码的问题,其实关键是要知道文件的编码方式,不妨脑补一下字符编码的知识,从网上到处收集资料,发现关于字符编码的知识还是蛮深的,本文就不讲太深,只求能讲的大概懂得我们常用的编码方案utf-8和GBK的区别,正文从一些起源开始讲述,希望大家能有个了解。ASCII码大家都知道计算机存储任何信息,底层统一采用二进制表示,通常说的一字节即8bi

2016-03-04 22:51:04 283

原创 svn使用总结

svn大家都知道是版本控制工具,可以用来管理文件系统的版本,抑或对于程序员来说用来管理代码项目的版本,当然我是一个程序员,用它主要用在代码的管理上,在工作中用过一段时间,其实也没有在网上去刻意查询svn的用法与注意点,下面正文总结下算是自己在工作中的使用细节与经验。如有理解错误欢迎指正。svn版本号svn的版本号从1开始递增,每次提交修改版本号加1。这句话说起来确实蛮简单,但是其中有一些

2016-03-03 20:22:11 1500

原创 项目源码与项目构建产物的版本管理

前言工作中杂事比较多,或许没有哪个公司会去给你专门的写技术博客的时间吧。我想说的是,也许会挤时间的人能够在工作间隙抽空写出自己对技术的感悟,一有某方面看法,立马能够捕捉当时想法记录下来,至少也方便后来的整理成文,而且能够用这种方式说服更多人认可他的观点。而对于我,事实上我没有写博客的习惯,但是我确实想写,记录出来,我只能说自己比较懒吧,可是我对我做的项目,对于我工作中遇到的诸多问题其实都有自己的想法

2016-03-03 16:43:58 791

原创 提点版本控制工具的一个使用建议

svn不像git是一个分布式开发工具,可以本地建分支,提交到本地库,你代码有错了也暂时只会影响本地。svn只是一个集中式开发的版本管理,内网不通,团队就很难协调工作,建议大家在用svn的时候,每完成一个完整的快照再提交。因为svn本来就有这种诟病,每次提交都要求大家更新本地,为的是避免一些冲突。而且希望大家能理解commit不是你保存了一个文件,然后对应去提交这个文件。commit

2015-12-21 15:22:25 326

android本地图片查看APP

android本地图片查看APP, 利用universal-image-loader实现图片的展现 解压后查看 README.md

2014-12-17

修正后的js日历UI

嘿嘿 这一次把日历一些小bugg修正下 还算可以 完美了些

2013-08-02

用js实现的日历界面

嘿嘿,第一次自己用js开发的有用的日历工具,其实还是有些小bugg的啦

2013-08-01

空空如也

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

TA关注的人

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