学习 Git 玩转 GitHub 一、基本了解1.1 什么是版本控制系统版本控制系统是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。1.2 什么是 GitGit是一个免费、开源的版本控制软件1.3 什么是 GithubGithub是全球最大的社交编程及代码托管网站1.4 Git 和 GitHub 的关系Git是版本控制软件Github是项目代码托管的平台,借助git来管理项目代码1.5 什么要学习 GitH...
MySQL 实现主从复制 一、前言随着应用业务数据不断的增大,应用的响应速度不断下降,在检测过程中我们不难发现大多数的请求都是查询操作。此时,我们可以将数据库扩展成主从复制模式,将读操作和写操作分离开来,多台数据库分摊请求,从而减少单库的访问压力,进而应用得到优化。本次测试使用两个虚拟机:ip:192.168.2.21(主)ip:192.168.2.22(从)二、主从复制原理同步操作通过 3 个线程实现,其基本步骤如下:1...
MySQL 5.7 安全操作 一、前言笔者之前写过《MySQL 性能优化技巧》文章,但没有涉及到 MySQL 安全方面的知识。虽说这是 DBA 需要学习的内容与后端开发人员关系不大,但俗话说技多不压身,即便不深入学习,也需要对其相关内容有所了解。测试环境 MySQL 5.7.20以下便是笔者浅学后的内容总结。二、用户相关创建新用户并合理地设置权限是安全的保障。2.1 新建用户1mysql> create user 用户名...
MySQL 性能优化技巧 一、背景最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久。原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 MySQL 在执行 SQL 语句时索引失效,进行全表扫描。原本负责优化的同事有事请假回家,因此优化查询数据的问题落在笔者手中。笔者在查阅网上 SQL 优化的资料后成功解决了问题,在此从全局角度记录和总结 MySQL 查询优化相关技巧...
jQuery 性能优化技巧 一、使用最新版本 jQuery 类库二、合理使用选择器1234567891011121314# 推荐使用$("#id") # 可以使用$("p"),$("span") # 可以使用$(".class") # 尽量避免$("[attribute=value]") # 尽量避免$(":hidden")三、使用缓存对象场景:修改某个按钮的文本和颜色12345# 不好的写法$("#bt
Spring Session 实现 Tomcat 集群的 Session 共享 一、背景笔者在讨论组中看到网友提到的 Session 共享问题,因此私下查阅文档,最终锁定使用 Spring Session 解决问题并在此记录。二、介绍Spring Session 提供了一套 API 来管理用户的会话信息。使用 Spring Session 可以替换项目容器中 HttpSession 的实现。此外, Spring Session 还提供如下功能:1) Session 集群:Sp...
Spring Boot 入门之消息中间件篇(五) 一、前言在消息中间件中有 2 个重要的概念:消息代理和目的地。当消息发送者发送消息后,消息就被消息代理接管,消息代理保证消息传递到指定目的地。我们常用的消息代理有 JMS 和 AMQP 规范。对应地,它们常见的实现分别是 ActiveMQ 和 RabbitMQ。上篇文章《Spring Boot 入门之缓存和 NoSQL 篇(四)》。二、整合 ActiveMQ2.1 添加依赖12345678910&...
Spring AOP 实现读写分离 一、前言上一篇《MySQL 实现主从复制》 文章中介绍了 MySQL 主从复制的搭建,为了在项目上契合数据库的主从架构,本篇将介绍在应用层实现对数据库的读写分离。二、原理配置主从数据源,当接收请求时,执行具体方法之前(拦截),判断请求具体操作(读或写),最终确定从哪个数据源获取连接访问数据库。在 JavaWeb 开发中,有 3 种方式可以对请求进行拦截:123filter:拦截所有请求interc...
Spring Boot 入门之缓存和 NoSQL 篇(四) 一、前言当系统的访问量增大时,相应的数据库的性能就逐渐下降。但是,大多数请求都是在重复的获取相同的数据,如果使用缓存,将结果数据放入其中可以很大程度上减轻数据库的负担,提升系统的响应速度。本篇将介绍 Spring Boot 中缓存和 NoSQL 的使用。上篇文章《Spring Boot 入门之持久层篇(三)》。二、整合缓存Spring Boot 针对不同的缓存技术实现了不同的封装,本篇主要介绍 E...
Shiro 实现 Tomcat 集群的 Session 共享 一、背景Session 共享有多种方案,之前写过《Spring Session 实现 Tomcat 集群的 Session 共享》 文章,功能实现起来非常简单和方便。最近在学习 Shiro 框架,Shiro 也提供了会话管理的功能。如果项目中选用 Shiro 作为权限控制的方案,同时项目又需要集群,那么可以自定义 sessionDAO 来实现 Session 共享。二、实现JDK:1.8容器:To...
Shiro 基础教程 一、前言Apache Shiro 是 Java 的一个安全框架。功能强大,使用简单的Java安全框架,它为开发人员提供一个直观而全面的认证,授权,加密及会话管理的解决方案。二、介绍2.1 功能特点Shiro 包含 10 个内容,如下图:1) Authentication:身份认证/登录,验证用户是不是拥有相应的身份。2) Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某...
使用 Ant 实现远程部署 Tomcat 项目 一、背景笔者用 Hexo 搭建此博客系统,搭建过程非常方便。但是,有个麻烦的操作就是每次发布文章都需要重新 clean 和 generate。由于笔者使用的是云服务器,使用 Tomcat 运行博客系统,因此每次还得需要挑选新博文相关的文件远程上传到服务器上。为此,笔者通过 ant 实现自动部署项目。二、编码2.1 搭建环境1) 安装 jdk 和 ant,并配置环境变量。2) 下载 catalina...
Maven 插件实现 Tomcat 热部署 一、前言传统的部署项目方式:关闭 web 容器,将项目放入到 web 容器,启动 web 容器这个三个步骤。步骤不多,但是需要手动完成,频繁的操作总会让人心累。为了“解放双手”,实现自动化部署,本篇介绍通过使用 Maven 实现 Tomcat 的热部署。二、准备本次测试使用一台ip为 192.168.2.25 的虚拟机,系统为 centos 7.2,tomcat 使用 8.5 版本。2.1 配置 ...
Spring Boot 入门之持久层篇(三) 一、前言上一篇《Spring Boot 入门之 Web 篇(二)》介绍了 Spring Boot 的 Web 开发相关的内容,项目的开发离不开数据,因此本篇开始介绍持久层相关的知识。二、整合 JdbcTemplate2.1 添加依赖12345678910<dependency> <groupId>org.springframework.boot</groupId...
Spring Boot 入门之 Web 篇(二) 一、前言上一篇《Spring Boot 入门之基础篇(一)》介绍了 Spring Boot 的环境搭建以及项目启动打包等基础内容,本篇继续深入介绍 Spring Boot 与 Web 开发相关的知识。二、整合模板引擎由于 jsp 不被 SpringBoot 推荐使用,所以模板引擎主要介绍 Freemarker 和 Thymeleaf。2.1 整合 Freemarker2.1.1 添加 Freema...
Spring Boot 入门之基础篇(一) 一、前言Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。本系列以快速入门为主,可当作工具小手册阅读二、环境搭建创建一个 maven 工程,目录结构如下图:2.1 添加依赖创建 maven 工程,在 pom.xml 文件中添加如下依赖:1234...
spring4.0整合了validation验证功能 Bean Validation 1.1当前实现是hibernate validator 5,且spring4才支持。接下来我们从以下几个方法讲解Bean Validation 1.1,当然不一定是新特性: 集成Bean Validation 1.1到SpringMVC 分组验证、分组顺序及级联验证 消息中使用EL表达式 方法参数/返回值验证 自定义验证规则 类级别验证器 脚本验证器 cro
五种方式让你在java中读取properties文件内容不再是难题 一、背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题。就借此机会把Spring+SpringMVC+Mybatis整合开发的项目中通过java程序读取properties文件内容的方式进行了梳理和分析,先和大家共享。二、项目环境介绍 Spring 4.2.6.REL
用maven创建多模块项目 Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。 项目结构如下: test-hd-parent (父级) ---pom.xml ---test-hd-api
log4j详细配置 来自: http://www.blogjava.net/zJun/archive/2006/06/28/55511.htmlLog4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1. 配置文件Log4J配置文件的基本格式如下: