自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

花郎徒结的博客

Java后端为主

  • 博客(19)
  • 收藏
  • 关注

原创 如何在MySQL的存储过程中书写批量的用户权限/授权语句

网上单独关于MySQL用户权限或者存储过程的文章有不少,但是关于在存储过程中如何书写用户授权语句,尤其是批量授权的资料却很少。为什么笔者会遇到在存储过程中书写批量用户授权语句的需求,是因为笔者在日常开发中承担了一部分简单的运维职责(笔者还是很赞同开发兼运维的思想),其中就包括在公司内部机器中搭建MySQL服务。搭建MySQL服务有一项内容就是配好用户和权限管理。笔者不是专职的数据库运维,在...

2018-08-06 16:41:44 1807

原创 线上环境JVM问题排查常用指令

线上和测试环境的JVM一般运行在linux服务器上,没有界面,遇到问题时需要用指令工具进行排查。这方面的学问博大精深,而且实战重于理论,这篇文章仅仅当作日常问题排查的笔记,方便自己查阅,各方面的细节网上有很多文章进行过深入探讨。1. Tomcat配置排查问题时不一定只围绕程序日志、linux系统性能指令和JDK工具,有时候看看程序部署的tomcat配置文件,也许会有帮助。把${TOMC...

2018-07-28 20:32:56 1944

原创 避坑必看:很详尽的MyBatis返回自增主键实验(包括插入或更新SQL语句insert on duplicate key update的自增主键返回情况)

目录1. 实验对比维度(1)单纯的insert和insert on duplicate key update(2)selectKey和useGeneratedKeys(3)@Param和parameterType(4)单个和批量(5)keyProperty写法2. 基本概念介绍(1)插入或更新SQL(简称InsertOrUpdate)(2)selectKey和u...

2018-07-20 00:48:44 30776 23

原创 @Validated和@Valid区别:Spring validation验证框架对入参实体进行嵌套验证必须在相应属性(字段)加上@Valid而不是@Validated

Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。其中对于字段的特定验证注解比如@NotNull等网上到处都有,这里不详述在检验Controller的入参是否符合规范时,使用@Va...

2018-04-17 10:57:15 145186 37

原创 Spring Cloud下配置eureka.instance.instance-id使得服务实例在eureka界面增加显示版本号

SpringCloud体系里的,服务实体向eureka注册时,注册名默认是“IP名:应用名:应用端口名”,即${spring.cloud.client.ipAddress}:${spring.application.name}:${spring.application.instance_id:${server.port}}。在eureka界面下显示如图:      有些文章说默认的in

2018-01-27 17:19:17 67070 9

原创 Spring Cloud Zuul 在版本Edgware.RELEASE断路超时配置无法生效问题

搭建Zuul工程时,用的SpringCloud版本为Edgware.RELEASE(没上更高的版本,因为部署环境tomcat和jdk的限制,更高的怕不兼容)。在改网关断路器的超时时间时,试了各种姿势,从zuul本身到ribbon到hystrix配置,均无法生效。试过的配置参数如下:zuul:zuul.retryable=truezuul.ribbon-isolation-strate

2018-01-20 20:08:50 2857 3

转载 (转载一篇对JDK动态代理原理说的很透彻的文章)细说JDK动态代理的实现原理

转载一篇解释JDK动态代理实现原理很清楚的文章。看到很多博文讲JDK动态代理时,只是抓着JDK提供的Proxy类(创建动态代理类)和InvocationHandler(拦截代理方法调用)层面来讲。Proxy和InvocationHandler只是JDK提供给我们的API,只看这两个类根本不会明白什么是动态代理。其实JDK动态代理最关键的还是JVM帮我们做了很多事,包括动态代理类的生成加载,以及生成

2017-12-04 15:08:54 773

原创 (实验)Java一个线程用synchronized嵌套锁多个对象时调用wait()只释放wait函数关联的所对象还是释放所有锁对象

题目起的比较拗口,其实用代码说明起来更简单,如下所示: private static Object lock1 = new Object(); private static Object lock2 = new Object(); private static class Task1 implements Runnable { @Override

2017-11-18 11:28:10 7162 6

原创 堆排序的Java实现(用最大堆实现从小到大排序)

堆排序原理和示意图不多说了,网上各种有。总结下其最核心的思想:(1)自底向上,自右向左遍历建堆。这里的底不是指最后一个节点,而是最后一个非叶子节点。每个非叶子节点与其左儿子与右儿子(假如有的话)相比,如果父节点小,那么将左右儿子中较大的那个与父节点交换,然后递归调整被交换的儿子所在的子树,让其继续满足堆性质。(2)自顶向下调整,使得整个二叉树和其任意子树都满足堆特性。内容和上面建堆中的递归

2017-11-16 12:44:34 2650

转载 一篇对伪共享、缓存行填充和CPU缓存讲的很透彻的文章

转载至http://geek.csdn.net/news/detail/114619看了很多网上讲解java伪共享、缓存行填充和CPU缓存的MESI等等,零零碎碎,目前感觉就这篇文章讲的最清楚,忍不住转载下。原文如下:认识CPU CacheCPU Cache概述随着CPU的频率不断提升,而内存的访问速度

2017-11-09 10:08:36 13231 6

原创 用Intellij+Maven搭建Tomcat源码开发环境步骤

编程的实践性非常强,光看不练事倍功半,就像设计模式,除了看各种书籍记下23种设计模式,还需要在实际工作中非常“刻意”的去运用,才会加深理解,否则根本不知道为何要诞生某一种设计模式。对于成熟的开源框架、容器的学习,除了看源码之外,在实践上似乎无从下手——这些家伙太成熟了,封装的很好,大多时候我们只是用他们的接口和注解,知道怎么配置就可以了;不少的人在工作中也很少对框架进行二次开发和扩展;

2017-10-28 23:13:31 3678 3

原创 Sunday算法的一种Java实现(Leetcode28. Implement strStr())

Leetcode第28题Implement strStr()。即寻找字符串里模式串第一次出现的位置。这类字符串匹配查找的问题,无外乎KMP,BM,Sunday算法。KMP太烧脑,BM和Sunday算法本质上是一样的,但是Sunday算法更取巧,效率更高(天下间的算法要是都有像Sunday算法那样短小精悍的版本,该多好...)。具体原理网上各种有。直接上代码:public c

2017-07-30 23:35:46 890

原创 MySQL left join on 左表连接字段为null的返回结果

写个博客备忘用...MySQL 左连接(右连接类似)查询,例 select * from A left join B on A.id = B.id where...A表是会返回所有符合where条件的记录,B表不满足A.id=B.id的记录则不会返回(同时B也要满足where条件)如果B的连接字段id本身为null,那么视为不满足on的条件,不返回该条记录。那么如果

2017-07-17 16:10:12 51975 9

原创 采用Java阻塞IO对已经到达的socket流实现非阻塞完整读取(一个简单的java http server实现)

最近写服务器时想到一个问题:用Java Bio(即Socket)写服务器,怎么一次性完整读取已经到达的Socket流。对这个需求有很多角度的设定,也有很多解法。我们来一一具化这个需求:(1)解法:依赖http协议的content-length。分析:很直观的想法,可以根据http请求头给定一个固定长度的字节或字符缓存,从中获取content-length,就知道往后要在从流

2017-06-07 14:28:11 7186 1

原创 一种基数排序的Java实现

基数排序 原理不多说了,适用于输入数据量n远大于数据最高位数m的情况。给出一种简单实现,不太想写特别底层的逻辑,中间依赖下TreeMap。package com.jxshen.example.algorithm.sort;import java.util.Collections;import java.util.Iterator;import java.

2017-06-01 18:53:30 379

原创 MyBatis查询无记录时的返回值(备忘用)

在MyBatis 3.4.1下如果Dao的返回值是实体,则select查询无记录时返回null。如果Dao的返回值是List,则select查询无记录是返回的是[],也就是空数组,而不是null。所以这时候判空需要用CollectionUtils.isNotEmpty(),而不是"==null"

2017-05-17 11:18:49 9652

原创 MyBatis批量插入返回主键

用MyBatis进行批量插入时:语句SELECT LAST_INSERT_ID()只适用于单条记录插入时返回主键到实体的id字段上如果想要批量插入后返回所有主键到插入实体的id字段上, 需要在insert上加上useGeneratedKeys和keyProperty,如下所示:而且,这个insert里面不能再加上面的selectKey语句

2017-05-12 19:37:22 1578

原创 windows下vue项目启动步骤

原创,转载请标注引用地址,谢谢~ 前后端分离项目,要做前后端联动测试,没整过前端用vue, nodejs和webpack的开发管理方式。来回折腾终于把已经建好的vue项目启动起来,做个笔记记录下步骤备用,只针对没有任何前端项目启动经验的,可能对别人没有参考意义: os:windows7 (1)git clone已建的vue项目(强迫症患者非要写,废话)(2)装好node...

2017-05-03 14:19:36 55526 8

原创 mysql5.7在windows7下my.ini文件加载路径及数据位置修改

因为要将公司线上数据库传输到本地做测试,捣鼓了半天本地mysql的data位置修改,网上资料也有很多介绍,重复的不赘述,写自己遇到的问题供大家参考。mysql版本:5.7os:windows7(不同的mysql版本在安装路径 data路径和my.ini的启动配置文件路径上可能有差异,不做研究)更改mysql的数据位置,除了网络上资料讲的:(1)关闭mysql

2017-05-03 10:51:03 22260

空空如也

空空如也

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

TA关注的人

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