自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(176)
  • 收藏
  • 关注

转载 springboot:如何优雅的使用mybatis

这两天启动了一个新项目因为项目组成员一直都使用的是mybatis,虽然个人比较喜欢jpa这种极简的模式,但是为了项目保持统一性技术选型还是定了 mybatis。到网上找了一下关于spring boot和mybatis组合的相关资料,各种各样的形式都有,看的人心累,结合了mybatis的官方demo和文档终于找到了最简的两种模式,花了一天时间总结后分享出来。orm框架的本质是简化编程中操作数据库

2017-12-13 18:02:39 894

转载 最全Java日志框架详解

在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此对于一个项目而言,日志记录是一个非常重要的问题。因此,如何选择一个合适的日志记录框架也非常重要。在Java开发中,常用的日志记录框架有JDKLog、Log4J、LogBack、SLF4J、SLF4J。这些日志记录框架各有各的特点,各有各的应用场景。了解这些框架的特点及应用场景,

2017-12-05 11:26:06 3442

原创 Google Kaptcha生成图形验证码

google captcha 是google生成验证码的一个工具类,其原理是将随机生成字符串保存到session中,同时以图片的形式返回给页面,之后前台页面提交到后台进行对比。依赖库可以去maven repository查看:但是我没有下载下来,然后选择了把jar包下载之后放到项目的lib下面,在通过gradle脚步编译。compile fileTree("$rootDir/l

2017-11-22 15:17:18 9599 1

原创 Tomcat开放远程调试端口结合intellij idea进行debug以及tomcat在不同操作系统下catalina配置区别

项目的部署方式有在本地搭建服务器进行启动或是debug,或是将项目在远程服务器上面部署。一般如果在本地搭建服务器的时候,可以直接选择启动或是直接debug,但是如果项目部署在远程的服务器上面的时候, 我们该如何进行调试呢?而一些大公司的项目是不需要在本地搭建应用服务器的,为了环境统一,应用服务器都是在远程服务器上面,这时我们就需要用远程debug,通过远程服务器的ip地址和远程开启的deb

2017-11-07 15:48:27 1739

原创 testng集成spring

1、Spring的org.springframework.test.context.testng包为基于TestNG的测试用例提供了支持类:AbstractTestNGSpringContextTests对集成了Spring TestContext Framework与TestNG环境中的ApplicationContext测试支持的基础测试类进行了抽象。当你继承AbstractTestNGS

2017-09-30 16:58:09 1094

原创 浅谈Oracle select for update

1、问题是:如果多线程之下同时查询一条数据查不到,则去插入,插入的时候也是多线程插入。所以想到用select for update来控制不允许多线程插入(其实这种方式并没有解决问题)2、先来了解几个名词:statement: 一个SQL语句。 session: 一个由ORACLE用户产生的连接,一个用户能产生多个SESSION ,但相互之间是独立的。 transacti

2017-09-30 15:12:05 13965 1

原创 在windows下使用Charles对移动终端抓包(https请求)

1、简介Charles是目前最强大最流行的http抓包调试工具,Mac、Unix、Windows各个平台都支持。特别是做APP开发,调试与服务端的通信,Charles是必备工具。Charles本质是就是一个http抓包分析工具,在工作的时候需要先把charles设置成代理服务器,这样所有的网络请求都会经过charles了。官方下载地址:https://www.charlesprox

2017-09-12 18:22:04 25724

原创 intellij idea导入极验验证码官方demo以及在Tomcat中部署

1、官方下载源码http://docs.geetest.com/install/server/java/2、导入项目找到项目目录3、选择Create project from existing sources4、删除out文件夹(如果存在先删除)5、找到Project Structure6、删除lib7、删除Web8、构建Artifacts9、部署到Tomcat取个名称添加Artifact添加成功...

2017-09-05 12:52:37 1431

原创 mysql-5.7.19-winx64压缩包安装踩坑记

第一步:区MySQL官网:https://dev.mysql.com/downloads/mysql/下载压缩包第二步:解压到需要安装的目录下(我的是在:D:\software)目录结构如下:第三步:如上图我已创建一个data的空文件夹和一个my.ini文件创建my.ini内容如下[mysql]# 设置mysql客户端默认字符集default-char

2017-08-25 18:31:21 3662 2

原创 spring security4学习(二)spring-boot结合spring security实现http basic Authentication

HTTP Basic Authentication基本认证机制HTTP为认证提供了一种原生工具。尽管我们可以在HTTP的认证形式和cookie的基础上运行自己的认证工具,但在很多情况下,HTTP的原生认证功能就可以很好的满足要求HTTP的质询/响应认证框架简化的质询/响应认证框架:分为四步-请求、质询、认证、成功  认证协议与首部认证协议是在HTTP认证首部中指定的。

2017-06-26 11:00:07 2450

原创 CAS实现单点登录(SSO)过程浅析

一、何谓单点登录单点登录(Single Sign On),简称为 SSO,简单理解就是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 二、何谓CASCAS(Central Authentication Service)是耶鲁大学的一个开源项目,旨在为web应用系统提供一种可靠的单点登录解决方案。采用CAS最大的是从安全性角度来考虑的,用户在C

2017-06-06 13:39:03 2423

转载 使用 CXF 开发 REST 服务

REST 全称是 Representational State Transfer(表述性状态转移),它是 Roy Fielding 博士在 2000 年写的一篇关于软件架构风格的论文,此文一出,威震四方!许多知名互联网公司开始采用这种轻量级 Web 服务,大家习惯将其称为 RESTful Web Services,或简称 REST 服务。那么 REST 到底是什么呢?REST 本质上是

2017-06-05 16:48:04 991

原创 spring-boot-swagger整合springmvc学习

在日常开发过程中,我们往往改了源代码忘了更新文档,或者说没有及时更新wiki,导致我们下游的开发人员不知道接口发生改动,swagger就是为了解决这些问题而产生的。首先上图一张,这是我用gradle构建的一个项目。加入一些依赖,gradle配置文件如下:group 'org.test'version '1.0-SNAPSHOT'buildscript { rep

2017-06-02 15:13:27 925

原创 spring boot 学习(一)

本文参考spring boot官方的文档:https://spring.io/guides/gs/spring-boot/使用的是gradle构建项目,配置如下:buildscript { repositories { mavenCentral() } dependencies { classpath("org.springframe

2017-06-01 17:00:03 659

原创 lombok在idea中安装以及使用

一、lombok简介一个标准的java bean需要有getter和setter方法,有时候些代码很冗余,而lombok可以简化我们的代码,在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法,这只是lombok其中的一个功能。二、idea中安装lombok1、给 Idea 安装 lombok插件,Setting-->Plugin

2017-05-26 20:21:21 12205 1

原创 intellij idea在运行web项目时部署的位置(tomcat)

在idea中运行tomcat,把项目部署运行起来,然后我去tomcat目录下去看,找不到我部署的项目 那我的项目是怎么运行起来的?webapps下面文件夹都翻了一遍,都没有发现部署的项目。去work文件夹下也看了一遍,是空的。后来发现,在idea中配置的tomcat,在运行时idea不会把项目放到自己的webapps路径下,而是复制三份文件到 ${user.home}/

2017-05-24 17:33:56 43882 10

原创 spring security4学习(一)

本文将分别介绍注解和xml的方式来使用spring security ,通过一个人简单的demo来演示对url访问进行验证。因为我用的是gradle来构建项目,先看一下gradle依赖项。第一步:创建Spring Security Java 配置类。@Configuration@EnableWebSecuritypublic class SecurityConfig e

2017-05-24 11:09:46 645

原创 spring-ldap学习(二)

上一篇介绍了搭建ldap服务,通过GUI风格的ldapsoft ldap admin tool去连接ldap服务端以及介绍了spring-ldap的增删改查,本文将介绍spring data 式的风格去编码,使代码更加简洁,之前也写过一篇spring data mongodb,点击这里查看 spring data mongodb学习以及为repository提供可扩展的自定义方法首先我们通过l

2017-05-20 15:06:13 2676

原创 spring-ldap学习(一)

1、搭建ldap服务,我用的系统是Ubuntu14.04,具体可以参考这篇文章:ubuntu14.04搭建ldap服务,按照步骤来没什么问题。  安装之后访问地址为:http://10.8.12.147/phpldapadmin/ name: cn=admin,dc=dianrong,dc=com password: 1234562、安装ldapsoft ldap admin tool,官

2017-05-18 15:39:36 3826 1

原创 ubuntu14.04下安装zookeeper3.4.9

本文介绍的是伪集群安装,即在一台机器上模拟3个zookeeper server的集群安装。1、下载解压将下载下来的zookeeper解压重命名,如zk1,zk2,zk3,并且我是放在/opt/zookeeper/路径下的。2、逐个编辑每个zk的conf/zoo.cfg配置文件/opt/zookeeper/zk1/conf/zoo.cfg内容如下:# The number

2017-05-12 10:35:26 898

原创 mariadb-10.1.19在Ubuntu14.04下安装与配置

网上有很多文章介绍mariadb安装,本文介绍的是二进制包文件安装。数据库软件:mariadb-galera-10.0.16-linux-x86_64.tar.gz,将下载后的文件解压,放在目录/opt下。1、配置数据库:cd /opt/mariadb-10.1.19/cp support-files/my-large.cnf my.cnfvi my.cnf(注意:同时复制my

2017-05-11 20:50:27 811

原创 点融网面试经验(Java开发工程师)

3月份经历了上海点融网的面试,地点是成都研发部,在这里和大家分享一下面试感受。电话面:一面(数据组资深开发工程师):1、首先上来让我作自我介绍2、问我项目问题(简历上面的一个数据修复和同步的报表项目)主要介绍了这个项目的大体是干嘛的,以及遇到的一些问题3、谈谈对spring有哪些了解,说了一下AOP、IOC、SpringMvc和Spring事务管理(事务传播机制)4、谈谈对

2017-04-26 17:23:23 4102 1

转载 快速理解JavaScript中apply()和call()的用法和用途

在学习apply()之前,我们必须对this的作用和使用方法有所了解,可以参考我前一篇文章《快速理解JavaScript中this的用法与陷阱》。当然如果你已经熟悉this的相关知识,那么请直接往下看。call()和apply()的作用十分相似,只是参数类型上的差别,以适应不同的使用场景。它们都是为了改变函数运行时的 context(上下文)而存在的,再说的直白一点,就是为了改变函数内

2016-12-21 16:21:25 691

转载 快速理解JavaScript中this的用法与陷阱

this是 JS 这门语言的魅力之一——灵活方便又难以捉摸,即使是有经验的程序员,如果不仔细也有可能搞错,关于this的用法也成为许多公司的经典面试题。如果你写过 Java ,你可能接触过this——一般指向当前对象,实际上,这时候this的含义已经确定了,因为Java属于编译期绑定,而JS属于运行期绑定,所以导致this的含义在运行过程中可能有多种变化。进一步说,this和它声明环境

2016-12-21 15:30:32 491

转载 JavaScript易错知识点整理

本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES6的知识点。1.变量作用域var a = 1;function test() { var a = 2; console.log(a); // 2}test();

2016-12-20 19:55:13 363

原创 CSS布局居中问题

1. 把margin设为auto具体来说就是把要居中的元素的margin-left和margin-right都设为auto,此方法只能进行水平的居中,且对浮动元素或绝对定位元素无效。2、使用 text-align:center这个没什么好说的,只能对图片,按钮,文字等行内元素(display为inline或inline-block等)进行水平居中。但要说明的是在IE6、7这两个奇葩的浏

2016-12-02 18:16:22 583

原创 JS中计算可视距离高度问题

export default { getElementLeft(element) { let actualLeft = element.offsetLeft let current = element.offsetParent while (current !== null) { actualLeft += curr

2016-11-28 18:35:23 941

原创 react子组件与父组件之间方法调用

1、子组件调用父组件方法1)子组件2)父组件2、父组件调用子组件方法1)父组件2)子组件

2016-11-28 11:26:46 9249

原创 js中的类型判断typeof、instanceof、constructor和prototype

如何判断js中的类型呢,先举几个例子:var a = "json";var b = 123;var c = true;var d = [1,2,3];var e = new Date();var f = function(){    alert('jason');};一、最常见的判断方法:typeof    typeof是一个一元运算符,它返回的结果始终是一

2016-11-25 18:36:31 2121

原创 CSS中的position定位

先看下position各个属性值的定义:1、static:默认值。没有定位,元素出现在正常的流中(忽略top,bottom,left,right或者z-index声明)。2、relative:生成相对定位的元素,通过top,bottom,left,right的设置相对于其正常位置进行定位。可通过z-index进行层次分级。3、absolute:生成绝对定位的元素,相对于static定位

2016-11-25 17:43:18 619

原创 react生命周期

React Life Cycle .btn { position: relative; display: block; margin-bottom: 10px; font-size: 18px; text-align: center; text-decoration: none;

2016-11-25 17:00:12 602

原创 block,inline和inlinke-block区别

1、display:blockblock元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。block元素可以设置margin和padding属性。2、display:inlineinline元素不会独占一行,多个相邻的行内元素会排列在同

2016-11-25 16:07:04 708

原创 word-wrap、word-break和white-space

1、先要明确一点,不加word-wrap或word-break的时候,就是浏览器默认的时候,如果有一个单词很长,导致一行中剩下的空间已经放不下它时,则浏览器会把这个单词挪到下一行去:2、这个长单词还不算变态的,因为至少它没有长到超过包裹它的元素的长度,但是如果超过了的话,就会出现下面的情况,它会溢出它的父容器外,因为这时它是不允许被截断的。3、这个时候word-wrap

2016-11-25 15:43:20 933

原创 Git的常用撤销技巧

撤销git add操作git reset HEAD # 取消add操作并保留修改git checkout -- #若继续该命令,则会删除掉刚刚的修改内容撤销git commit操作git reset --soft #可以回退到某个commit并保存之前的修改 从git log中取,取前7位即可git reset --hard #回退到某个commit不保留之前的

2016-09-29 15:13:30 549

原创 Spring BeanUtils.copyProperties和apache commons-beanutils

业务系统中经常需要两个对象进行属性的拷贝,不能否认逐个的对象拷贝是最快速最安全的做法,但是当数据对象的属性字段数量超过程序员的容忍的程度,代码因此变得臃肿不堪,使用一些方便的对象拷贝工具类将是很好的选择。性能对比: BeanCopier > PropertyUtils > BeanUtils. 其中BeanCopier的性能高出另外两个100数量级。目前流行的较为公用认可的工具类:

2016-09-06 16:20:28 6876 3

原创 浅谈数据库连接池

数据库连接池技术带来的优势:1. 资源重用由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。2. 更快的系统响应速度数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接

2016-09-04 20:56:16 603

原创 c3p0数据库连接池死锁问题和mysql重连,连接丢失

最近项目中用的C3P0连接池出现各种bug,现在记录一下。1、经常报连接池死锁2016-08-31 15:24:00 [ WARN] - [com.mchange.v2.async.ThreadPoolAsynchronousRunner|run] - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@74

2016-08-31 21:37:53 12213 1

原创 Iterable接口和Iterator迭代器

iterator接口定义如下public interface Iterator { boolean hasNext(); E next(); void remove();}该接口仅仅包含了三个函数,hasNext()和next()方法在我们常用的集合遍历中出现。 三个函数的作用:使用next()获得序列中的下一个元素。使用hasNext()检查序列中是否

2016-08-31 10:40:51 736

原创 作业调度框架 Quartz

调度器核心代码:import nd.sdp.lcreporting.schedule.model.Schedule;import nd.sdp.lcreporting.schedule.service.ScheduleService;import org.quartz.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;i

2016-08-29 19:02:23 822

原创 获取用户star的所有项目信息(支持分页和关键字检索)

之前做的一个项目,现在做个小结。query 关键字 可选type 项目所属类型检索条件 可选sub_type 项目所属子类型检索条件 可选language 编程语言检索条件 可选tag 标签索引条件 可选direction 排序顺序desc,asc,默认desc 可选sort created默认(按star时间)updated(按项目更新时间)stars(按stars数

2016-08-28 21:32:40 1951

空空如也

空空如也

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

TA关注的人

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