自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring boot 2.0 jpa多数据源配置

spring boot 1.x内多数据源配置方式参考Spring Boot多数据源配置与使用,但升级到2后该配置无效,以下是自测可行的配置方式(spring boot版本2.0.6.RELEASE)。1. application.properties配置#数据源1spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/te...

2018-11-07 13:26:43 1245 1

原创 spring boot 2.0 h2配置

h2是一种内存数据库,可以方便的整合进spring-boot项目内。1. application.properties#配置数据库连接地址spring.datasource.primary.jdbc-url=jdbc:h2:file:./h2/code-generator;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE#配置数据库驱动spring.data...

2018-11-07 13:25:43 1947

原创 代码生成器

在规模较小的公司里,大部分的项目规模不是特别大,技术实现难度不是很高,关注点更多是在业务功能的开发及保证业务流程的正确性上。当有一个新的项目来时,通常会找一个项目进行copy,删除不用的包和类,然后以此为基础,进行后续的开发,开发某个模块,就copy出一份controller、service、serviceImpl、dao、daoImpl、model、jsp,然后改变类名。 项目内40%以上的代码

2017-10-29 20:48:38 736

原创 spring boot实战之本地jar包引用

部分情况下无法通过maven仓库直接下载需要的jar包,只能讲jar包下载至本地来使用,spring boot框架内通过maven加载第三方jar包可以通过以下方式来实现(本地jar放在lib/目录下),项目会打包为jar包来运行。1、添加maven依赖<dependency> <groupId>org.ansj</groupId> <artifactId>ansj_seg</art

2017-10-17 18:22:35 4847

原创 spring boot实战之JSP

前后端分离的架构有其优势,但具体情况具体分析,并不是任何时候使用前后端分离架构都是合适的。我最近就体会到其中的坑,因为部门属性的问题,前端项目占比较低,所以公司前端基本上都是新手,结果就是后端接口完成了一个多月,前端还在加班加点的赶。前后端人员的能力和人数与工作量是匹配的,前后端都能hold住时建议使用前后端分离架构,如果前端能力有限或人员较少,那就最好不要采用,这样才能保证项目进度可控。 Spr

2017-10-09 18:23:43 405

原创 spring boot项目实战之公共代码抽取

在一个web项目内,会有很多重复性的代码,如果将共性代码进行提取并规范使用,对后续运维和开发是很有帮助的。下面我们来看一下在一个web项目内有那些部分会出现诸多重复性的代码: 1. model内:id、标记删除、创建时间、创建人、修改时间、修改人等字段 2. service内:根据id查询、新增&修改、删除、分页查询等方法 3. dao内: 根据id查询、新增&修改、删除、分页查询等方法mod

2017-10-09 16:21:16 5980 1

原创 spring boot项目实战之工具篇(ognl)

当解析复杂的json结构时,ognl是一个很方便的工具,实现基于图对属性的访问,类似于以(user.name | user.depart[0])的方式获取json内的嵌套对象字段值。请看以下示例,你将对ognl的作用有一个更清晰的理解:String json = "{\"user\":{\"name\":\"123\",\"depart\":[1,2]}}";Map<?, ?> map = Jac

2017-10-07 20:59:23 4176

原创 spring boot项目实战之工具篇(json)

对象转json、json转对象是我们开发过程中经常遇到的,提取一套高效、易用的工具类会让开发过程舒爽不少,下面提供一个基于jackson包的常用json工具方法。1、添加maven依赖<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId>

2017-10-07 19:38:19 3299

原创 spring boot项目实战-集合操作

集合操作在web应用开发中也是很常见的,目前也有一些比较方便的工具如java.util.Collections、org.apache.commons.collections.CollectionUtils等,但是根据自己公司项目开发中的具体情况提取一套更何用的集合操作工具类也是很有帮助的。1、获取在集合A而不在集合B内的元素(差集)/** * 获取在first集合内而不在second集合内的元素

2017-10-07 17:49:13 1228

原创 spring boot实战之日期处理

web开发中经常需要对日期进行操作,如字符串日期转long,long型转字符串,日期计算等,提取一个日期处理工具类,提供常见的日期操作可以让开发更轻松一些。毫秒(long)转字符串日期对long型时间进行格式化在web开发中是很经常出现的一个操作,这里主要使用joda-time包内的DateTime来实现,joda-time是时间操作很好的一个工具包。 public final static St

2017-10-06 20:09:47 9085

原创 spring boot实战之CSRF(跨站请求伪造)

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。攻击通过在授权用户访问的页面中包含链接或者脚本的方式工作。例如:一个网站用户Bob可能正在浏览聊天论坛,而同时另一个用户Alice也在此论坛中,并且后者刚刚发布了一个具有Bob银行链接的图片

2017-10-06 17:03:03 20436 3

原创 spring boot实战之XSS过滤

XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。你可以自己做个简单尝试: 1. 在任何一个表单内,你输入一段简单的js代码:<script>for(var i=0;i<1000;i++){aler

2017-10-06 12:43:55 19246 17

原创 spring boot实战之shiro session过期时间

在spring boot内,设置session过期时间只需在application.properties内添加server.session.timeout配置即可。在整合shiro时发现,server.session.timeout设置为7200,但未到2小时就需要重新登录,后来发现是shiro的session已经过期了,shiro的session过期时间并不和server.session.time

2017-10-06 08:26:46 18588

原创 spring boot项目实战:分布式锁

在部分情况下,要保证操作在整个集群内是同步的,以操作库存为例,多个减操作需要同步,常见的有两种方式: 1. 采用类CAS的方式,先查询库存,然后使用update xxx set num=num-1 where num=:num;这样可保证库在本次修改之前未被修改; 2. 使用分布式锁,保证同时只有一个地方在修改库存。 这里向大家展示一个基于redis的分布式锁。主要涉及三个类: 1. Dis

2017-10-04 19:35:32 4121

原创 spring boot项目实战:JPA

公司的项目中很大一部分属于内部平台,所以对性能的要求没有那么高,开发速度反而更重要,因此在搭建基础框架时选择使用JPA,没有使用mybitis,当然其中也有一部分原因是之前一直使用hibernate,对mybitis不太熟悉^_^。一、配置JPA1、添加maven依赖<!-- jpa --><dependency> <groupId>mysql</groupId> <artifac

2017-10-03 21:42:57 1697

原创 spring-boot实战:shiro

有很长一段时间都觉得自己添加个filter,基于RBAC模型,就能很轻松的实现权限控制,没必要引入shiro,spring-security这样的框架增加系统的复杂度。事实上也的确这样,如果你的需求仅仅是控制用户能否访问某个url,使用框架和自己实现filter效果基本一致,区别在于使用shiro和spring-security能够提供更多的扩展,集成了很多实用的功能,整体结构更加规范。 shir

2017-10-02 15:43:03 1284

原创 spring-boot实战:共享session

在工作中会遇到以下几个场景: 1. 发布新功能或修复bug,服务重启,用户需要重新登录 2. 当集群内某个节点失效时,用户明明刚登录,仍被提示需要重新登录 那如何做到服务发布、集群节点失效对用户无感知呢?有以下几种方式: 1. 使用cookie保存用户状态信息 2. session同步法(多个web-server之间相互同步session) 3. 后端统一存储(如:redis)关于这几种

2017-10-01 18:43:58 998

原创 spring boot项目实战:redis

《spring boot项目实战》之redis使用,本人搭建好的spring boot web后端开发框架已上传至GitHub,欢迎吐槽! https://github.com/q7322068/rest-base1、 添加maven依赖<!-- redis --><dependency> <groupId>org.springframework.boot</groupId> <

2017-09-30 18:26:16 817

原创 spring boot项目实战:事务

事务在项目里也是不可或缺的一部分,建议形成一个统一的事务管理规范,不要出现让程序员根据业务自行添加,团队成员能力有高有低,很容易就出现需要事务时没添加事务,这种问题又很难测试出来,运行时却会不定时出现数据的不一致。 想实现类似原spring项目里通过aop方式配置事务的效果,各种尝试,目前还未找到十分可行的方式。测试可用的事务配置方式有两种:在service上添加@Transactional注解

2017-09-30 14:58:58 459

原创 spring boot项目实战:异常处理

异常处理是一个比较基础而又重要的技能点,在团队内最好形成一个统一的规则,避免团队成员不断掉进前辈已经爬出来的坑中。1、全局异常处理spring boot支持配置全局异常处理,记录未捕获的全局异常,这样方便在问题发生时快速定位问题,配置方式如下:@ControllerAdvicepublic class GlobalDefaultExceptionHandler { private stat

2017-09-30 13:17:55 431

原创 spring boot项目实战:swagger2在线文档

对于接口服务来说接口文档极其重要,在团队配合和后续维护中占据重要角色。在工作中,使用过excel,wiki来进行接口文档的维护: wiki:缺点是维护起来工作量较大,费时较长,优点是体验较好、检索方便、支持多人协作、支持历史版本查看; excel:初始整理时还好,但在后续多人协作新增功能或调整接口时,维护接口文档就变得极不方便 然后了解到swagger2,可以以编程的方式方便的生成在线文

2017-09-27 17:41:13 329

原创 sprign boot项目实战:日志

日志是运维、排错的一个重要助手,很多人应该都维护过没有日志的项目,知道排查问题是什么感觉。所以搭建基础项目框架时,自然不能少了日志。日志组件选择从网上各种搜索对比,在log4j2和logback之间选择了log4j2,综合各处评价,log4j2在性能方法有一定优势。但是在一个项目内使用后就发现,spring boot内log4j2不支持spring profile机制,也就是在本地环境、测试环境、预

2017-09-26 18:18:10 1066

原创 详情页返回列表内容缓存及定位实现

实现目标当前浏览到第N页,点击某一个新闻,进入新闻详情页,点击返回时,列表数据不重新加载,焦点仍定位在进入详情页之前的位置。思路缓存列表内已展示的数据;进入详情页时在缓存内添加该新闻的ID(键为articleId);返回时在js内判断缓存内是否包含articleId,如果存在,则通过缓存的列表数据进行页面渲染;通过articleId定位元素,滚动窗口值该元素处;缓存不能始终存在。根据当前

2017-09-26 13:43:42 2894

原创 spring boot项目实战:跨域问题解决

背景前后端分离架构,前端anglerjs,后端spring boot,使用shiro作为权限控制,已配置通用跨域请求支持。 前端调用接口时部分情况正常,部分情况出现跨域请求不支持情况,错误信息如下:Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' hea

2017-09-26 13:42:09 2430

原创 Junit几个实用功能

Junit有不少实用的功能,如组合(SuiteClasses)、分类(Category)、排序(FixMethodOrder),可以通过使用这些功能,灵活的组合单元测试,按照自己的需求批量、分类、有序的进行执行,下面来看下具体的用法。以下示例是在spring-boot的基础上跑的,源码地址rest-base.一、Junit依赖要使用上述全部功能,版本建议选择4.12(spring 2.5.6确定不能

2017-11-20 13:22:21 800

原创 Java I/O回顾

最近在学习netty,其中有对比bio、nio、netty使用上的不同,也趁此机会回顾了相关知识,加深下理解,主要涉及的有FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、FileChannel、MappedByteBuffer等知识点。一、FileIn(Out)putStream(单字节)public

2017-11-10 23:18:20 281

原创 Java开发手册(五):安全规约与单元测试

一、安全规约1. 操作权限隶属于用户个人的页面或者功能必须进行权限控制校验。防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信 内容、修改他人的订单。2. XSS跨站脚本攻击(Cross Site Scripting),可以对用户录入内容进行白名单过滤,去除非法信息。禁止向 HTML 页面输出未经安全过滤或未正确转义的用户数据。3. CSRFCSRF(Cross-site

2017-11-07 10:14:44 863

原创 Java开发手册(四):注释与异常处理

一、注释1. 项目项目建议提供注释,说明项目的作用,核心逻辑或需要注意的特别事项,方便其他人快速对项目形成整体了解。添加方式有两种: 1. 在根目录下创建README.md或README.txt 2. 在根目录下创建doc文件夹,在其创建README.md或README.txt,还可以在该目录下存储一些初始化语句、索引创建语句等内容2. 包说明该包的核心作用,注释可在package-info.j

2017-11-07 10:12:57 1784

原创 Java开发手册(三):代码风格与日志

一、代码风格代码风格实际上就是合理使用缩进、空格、换行,目的是让代码可读性更强。大家记忆时记清楚用什么样的缩进,哪些时候使用空格,哪些时候使用换行,单行代码不要太长就可以,这部分内容通过两三次的回顾很容易养成习惯,因为是编码中最长用到的。 可参考以下代码:public static void main(String[] args) { // 缩进 4 个空格 String say

2017-11-07 10:12:23 903

原创 Java开发手册(二):命名

从开发中涉及命名的各个点出发,描述其命名建议,方便读者更系统的记忆相关内容。通用约束 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 杜绝完全不规范的缩写,避免望文不知义。反例:AbstractClass“缩写”命名成 AbsClass。 为了达到代码自解释的目标,任何自定义编程元素在命名时

2017-11-07 10:11:50 381

原创 Java开发手册(一):环境准备

又一次阅读阿里编程规范,发现有不少条目又给忘了,离上次阅读大概一个多月。我的阅读习惯应该还不错,每次看书籍之类的不会只看一遍,因为之前的经验发现,只看一遍的内容,会特别快的遗忘,在脑子里只会留下淡淡的印象,知道看过哪块的内容,但详细的内容就模糊了,面试时经历过这样尴尬的场面… 现在我看书,通常是第一遍通读,了解大概;第二遍细度核心知识点,强化理解核心内容;然后在脑中回思书中的核心内容,有不明白的

2017-11-07 10:11:11 290

原创 阿里Java开发手册(自我总结版一)

又一次阅读阿里编程规范,发现有不少条目又给忘了,离上次阅读大概一个多月。我的阅读习惯应该还不错,每次看书籍之类的不会只看一遍,因为之前的经验发现,只看一遍的内容,会特别快的遗忘,在脑子里只会留下淡淡的印象,知道看过哪块的内容,但详细的内容就模糊了,面试时经历过这样尴尬的场面… 现在我看书,通常是第一遍通读,了解大概;第二遍细度核心知识点,强化理解核心内容;然后在脑中回思书中的核心内容,有不明白的

2017-11-06 22:13:34 883

转载 年底啦,java后台面试题整理

年底啦,java后台面试题整理根据@会发光的二极管的建议,所有问题均已整理到github地址 : https://github.com/wgd12389/java-server-interview-questions欢迎各位吧自己遇到的问题进行总结,提pr原文地址:http://www.jianshu.com/p/f5dee1306d0djava基础

2017-10-21 12:50:32 1226

转载 高并发Java(5):JDK并发包1

原文出处: Hosee原文地址:http://www.importnew.com/21288.html在高并发Java(2):多线程基础中,我们已经初步提到了基本的线程同步操作。这次要提到的是在并发包中的同步控制工具。1. 各种同步控制工具的使用1.1 ReentrantLockReentrantLock感觉上是synchronized的增强版,synchr

2017-10-21 12:46:42 262

转载 阿里巴巴Java开发规约插件全球首发

造福Java程序猿的事必须顶,大家赶紧玩起来经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!插件全球首发仪式,大牛云集阿里巴巴大牛天团倾力助阵:毕玄、玄难、索尼、叶渡,淘宝代码第一人多隆、代码规约作者孤尽携手

2017-10-21 12:43:09 329

转载 MySQL索引背后的数据结构及算法原理

MySQL索引背后的数据结构及算法原理原文链接:http://blog.codinglabs.org/articles/theory-of-mysql-index.html作者 张洋 | 发布于 2011-10-18MySQL 索引 B树 优化摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对

2017-10-12 21:27:37 283

转载 Java并发之AQS详解

Java并发之AQS详解一、概述  谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronized(AQS)!  类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDown

2017-10-11 20:52:59 554

原创 java线程池

​ 最近在看“阿里java编程规范”,看到关于线程池使用的一个建议,发现自己对这块貌似理解的有点模糊,特意看了下相关实现,顺便来写一篇笔记,梳理下自己的思路。 线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。说明:Executors 返回的线程池对象的弊端如下: 1

2017-10-09 06:43:38 221

原创 Failed to load IMAP envelope解决办法

javax.mail.MessagingException: Failed to load IMAP envelope

2017-03-21 14:33:10 5686 2

原创 数据库范式解读

就不列官方的描述了,以自己的理解来描述下,正规的解释百度一下一大把。 一、第一范式 每一列都是第一属性,这个没啥说的,别一列里面放两个属性就行。二、第二范式 实际上就是一张表是组合主键(A和B)类型的,那不要把单独和A或B相关的属性加进这种表,常见的场景就是多对多(学生、老师)的关系表中,不要把学生和老师的非id属性放进关系表。 三、第三范式 我的理解就是

2017-02-14 10:35:00 267

空空如也

空空如也

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

TA关注的人

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