自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (7)
  • 问答 (10)
  • 收藏
  • 关注

原创 JDK1.8的新得认知

# 简介我们通常所说的接口的作用是用于定义一套标准、约束、规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现。在JDK1.8中打破了这样的认识,接口中的方法可以有方法体,但需要关键字static或者default来修饰,使用static来修饰的称之为静态方法,静态方法通过接口名来调用,使用default来修饰的称之为默认方法,默认方法通过实例对象来调用。静态方法和默认方法的作用:静态方法和默认方法都有自己的方法体,用于提供一套默认的实现,这样子类对于该方法就

2020-07-30 08:55:38 97

原创 SSO单点登录原理与简单实现

一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览器请求,响应合法请求,忽略非法请求;要鉴别浏览器请求,必须清楚浏览器请求状态。既然http协议无状态,那就让服

2020-07-30 08:44:57 160

原创 mysql时间格式之间转换

当前时间戳SELECT UNIX_TIMESTAMP();当前时间SELECT SYSDATE() from dual;当前时间格式化SELECT DATE_FORMAT(SYSDATE(),'%Y-%m-%d %H:%i:%s') from dual;字符串转换为dateSELECT STR_TO_DATE('2016-12-15 16:48:40','%Y-%m-%d %H:%i:%S')date_format( ) 转换格式 :格式 描述%a 缩写星期名%

2020-07-29 16:15:57 168

原创 switch返回值实现

switch 用return 返回值,return返回for循环结束for(int i=0;i< 10;i++){ switch (i) { case 0 int absolutePressure_VALUE = (int) statusData.getStatusValue(); return absolutePressure_VALUE; case 1 .

2020-07-27 20:34:28 6511

原创 AOP来实现REST接口简易的安全认证

本文将通过AOP的方式实现一个相对更加简易灵活的API安全认证服务。我们先看实现,然后介绍和分析AOP基本原理和常用术语。# Authorized实现1、定义注解package com.demo.common;import java.lang.annotation.*;/* * 安全认证 * */@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Docume

2020-07-24 22:36:22 258

原创 Mybatis中批量插入的两种方式

MyBatis简介MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。一、mybiats foreach标签foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有

2020-07-23 23:08:52 217

原创 IDEA中使用Java热部署插件JRebel

在 Java Web 开发中, 一般更新了 Java 文件后要手动重启 Tomcat 服务器, 才能生效, 浪费不少生命啊, 自从有了 JRebel 这神器的出现, 不论是更新 class 类还是更新 Spring 配置文件都能做到立马生效,大大提高开发效率。# JRebel 安装JRebel 的安装方法有两种, 一种是直接在 Tomcat 启动参数上面加上 JRebel 的参数, 另外一种是以插件的形式装到 IntelliJ IDEA 上, 比较推荐后者。第一种安装方法:在 Tomcat 启动

2020-07-23 20:47:51 201

原创 10w行级别数据的导入Excel优化记录

需求说明项目中有一个 Excel 导入的需求:缴费记录导入由实施 / 用户 将别的系统的数据填入我们系统中的 Excel 模板,应用将文件内容读取、校对、转换之后产生欠费数据、票据、票据详情并存储到数据库中。在我接手之前可能由于之前导入的数据量并不多没有对效率有过高的追求。但是到了 4.0 版本,我预估导入时Excel 行数会是 10w+ 级别,而往数据库插入的数据量是大于 3n 的,也就是说 10w 行的 Excel,则至少向数据库插入 30w 行数据。因此优化原来的导入代码是势在必行的。

2020-07-22 08:44:24 762

原创 Apache BeanUtils和Spring BeanUtils对比

# 前言在我们实际项目开发过程中,我们经常需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信息,比如DTO数据传输对象和数据对象DO,我们需要将DO对象进行属性复制到DTO,但是对象格式又不一样,所以我们需要编写映射代码将对象中的属性值从一种类型转换成另一种类型。# 对象拷贝在具体介绍两种 BeanUtils 之前,先来补充一些基础知识。它们两种工具本质上就是对象拷贝工具,而对象拷贝又分为深拷贝和浅拷贝,下面进行详细解释。# 什么是浅拷贝和深拷

2020-07-19 22:05:23 1796

原创 设置定时任务为每天凌晨2点执行和每小时执行一次

每天凌晨2点 0 0 2 * * ?和每天隔一小时 0 * */1 * * ?例1:每隔5秒执行一次:*/5 * * * * ?例2:每隔5分执行一次:0 */5 * * * ?在26分、29分、33分执行一次:0 26,29,33 * * * ?例3:每天半夜12点30分执行一次:0 30 0 * * ? (注意日期域为0不是24)每天凌晨1点执行一次:0 0 1 * * ?每天上午10:15执行一次: 0 15 10 ? * * 或 0 15 10 * * ? 或 0 15 1.

2020-07-16 09:23:16 4102

原创 OOM排查的实战案例

一、经历概要程序里有个跑数据的job,这个job的主要功能是往数据库写假数据。既需要跑历史数据(传给job的日期是过去的时间),也需要能够上线后,实时跑(十秒钟触发一次,传入触发时的当前时间)。其中一个job比较奇葩点,要写入的数据比较难以随机生成,是产品的同事从互联网上找的数据,比如当前网络上的热门话题,然后导入到数据库中。所以,我这边随机的时候,不能乱造。因此我的策略是,从数据库将已经存在的那几条真实数据查询出来,然后job中根据随机数,选择其中一条来仿造一条新的,随机生成新记录的其

2020-07-16 08:51:54 217

原创 MySQL的InnoDB的幻读问题

MySQL InnoDB事务的隔离级别有四级,默认是“可重复读”(REPEATABLE READ)。 未提交读(READ UNCOMMITTED)。另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)。 提交读(READ COMMITTED)。本事务读取到的是最新的数据(其他事务提交后的)。问题是,在同一个事务里,前后两次相同的SELECT会读到不同的结果(不重复读)。 可重复读(REPEATABLE READ)。在同一个事务里,SELECT的

2020-07-15 08:47:48 145

原创 如何高并发的优化

一、项目简要情况概述该项目为基于SSM架构的商城类单体架构项目,其中有一个秒杀重磅模块,如下为当前线上环境的简要架构部署图,大致描述一下:(1)项目为SSM架构(2)服务器类别:1台负载均衡服务器(F5),3台运用程序服务器,1台计时器服务器,1台redis服务器,1台图片服服务器和1台基于Pass架构的Mysql主从服务器(微软云)(3)调用逻辑:下图为简要调用逻辑二、何为单体架构项目从架构发展角度,软件项目经历了如下阶段的发展:1.单体架构:可理解为传统的前后端未分.

2020-07-14 08:41:12 433

原创 如何把项目中的2100个if-else改掉

设计更好的软件,替换If-Else的5种方法。入门到高级示例让我直接说这句话:If-Else通常是一个糟糕的选择。它导致设计复杂,代码可读性差,并且可能导致重构困难。但是,If-Else已成为事实上的代码分支解决方案,这确实是有道理的。这是向所有有抱负的开发人员讲授的第一件事。不幸的是,许多开发人员从来没有前进到更合适的分支策略。有些人的口头禅是:If-Else是一把锤子,一切都是钉子。无法区分何时使用更合适的方法是区分大三学生和大三学生的原因之一。我将向您展示一些技巧和模式,这些技

2020-07-12 21:23:52 123

原创 面试MySQL索引

# 什么是索引?当我们使用汉语字典查找某个字时,我们会先通过拼音目录查到那个字所在的页码,然后直接翻到字典的那一页,找到我们要查的字,通过拼音目录查找比我们拿起字典从头一页一页翻找要快的多,数据库索引也一样,索引就像书的目录,通过索引能极大提高数据查询的效率。# 索引的实现方式在数据库中,常见的索引实现方式有哈希表、有序数组、搜索树 哈希表 哈希表是通过键值对(key-value)存储数据的索引实现方式,可以将哈希表想象成是一个数组,将索引通过哈希函数计算得到该行数据在数组中的位置,然

2020-07-12 20:50:49 86

原创 SpringBoot整合SpringSecurity示例实现前后分离权限注解和JWT登录认证

一.说明SpringSecurity是一个用于Java 企业级应用程序的安全框架,主要包含用户认证和用户授权两个方面.相比较Shiro而言,Security功能更加的强大,它可以很容易地扩展以满足更多安全控制方面的需求,但也相对它的学习成本会更高,两种框架各有利弊.实际开发中还是要根据业务和项目的需求来决定使用哪一种.JWT是在Web应用中安全传递信息的规范,从本质上来说是Token的演变,是一种生成加密用户身份信息的Token,特别适用于分布式单点登陆的场景,无需在服务端保存用户的认证信息,而是直

2020-07-10 15:24:19 434 1

原创 Mysql如何开启慢查询

1.参数说明slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)long_query_time 查询超过多少秒才记录查看慢查询相关参数mysql> show variables like ‘slow_query%’;mysql> show variables like ‘long_query_time’;2.设置方法方法一:全局变量设置

2020-07-10 10:59:46 236

原创 SQL常见错误用法总结

1SQL常见错误用法总结1,LIMIT语句分页查询是最常用的场景之一,但也通常通常也是最容易出问题的地方。针对下面简单的语句,一般DBA认为的方法是在类型,名称,create_time上下上加组合索引。这样的条件排序都能有效的利用到索引,性能迅速提升。SELECT * FROM operation WHERE type = 'SQLStats' AND name = 'SlowLog' ORDER BY create_time LIMIT 1000, 10;好吧,.

2020-07-09 21:35:52 246

原创 GIT用户名的查看和修改

1.查看用户名和邮箱地址$ git config user.name$ git config user.email2.修改全局用户名和邮箱地址:$ git config --global user.name "username" $ git config --global user.email "email" 3.修改局部用户名和邮箱地址:$ cd ~/you project $ git config u...

2020-07-09 21:23:50 115

原创 数据量很大,分页查询很慢,有什么优化方案

准备工作 一般分页查询 使用子查询优化 使用 id 限定优化 使用临时表优化 关于数据表的id说明 当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。准备工作为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明。 表名:order_history 描述:某个业务的订..

2020-07-08 21:05:23 194

原创 Java 8 中 Map 操作 merge() 的用法

Java 8 最大的特性无异于更多地面向函数,比如引入了lambda等,可以更好地进行函数式编程。前段时间无意间发现了map.merge()方法,感觉还是很好用的,此文简单做一些相关介绍。首先我们先看一个例子。# merge()怎么用?假设我们有这么一段业务逻辑,我有一个学生成绩对象的列表,对象包含学生姓名、科目、科目分数三个属性,要求求得每个学生的总成绩。加入列表如下:private List<StudentScore> buildATestList() { ...

2020-07-06 21:27:23 645

原创 mysql数据库时间类型datetime、bigint、timestamp的查询效率对比

前期数据准备通过程序往数据库插入 50w 数据 数据表: CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time_date` datetime NOT NULL, `time_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `time_long` bigint(20) NOT N

2020-07-01 11:37:44 251

jcrop实现剪切上传图片

jcrop实现剪切上传图片,获取剪切图片的坐标和宽高度,还有一些操作例子。

2017-02-15

html5 websocket 建立连接通讯

html5 websocket 建立连接通讯

2017-01-03

仿淘宝城市选择

仿淘宝城市选择

2017-01-03

jquery 仿携程选择地区

jquery 仿携程选择地区

2017-01-03

jquery 仿携程选择地区,修改选择按照字母分类选择快递

jquery 仿携程选择地区,修改选择按照字母分类选择快递

2017-01-03

微信公众平台实例

微信公众平台接入Java实例,结合BAE http://www.2cto.com/kf/201405/299487.html 在百度BAE2.0 JAVA环境下搭建属于自己的微信公众平台接口 http://my.oschina.net/using/blog/167805 ,http://www.cnblogs.com/ixxonline/p/3659434.html 微信公众平台java开发详解(工程代码+解析) http://blog.csdn.net/pamchen/article/details/38718947 微信公众帐号开发教程 http://blog.csdn.net/lyq8479/article/details/8937622 微信公众平台开发教程(五)自定义菜单 http://www.cnblogs.com/yank/p/3418194.html

2016-08-04

iscroll5上拉下拉实例demo

iscroll5上拉下拉实例demo

2016-08-04

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

TA关注的人

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