- 博客(52)
- 收藏
- 关注
原创 Springboot--高并发状况下使用Guava RateLimiter进行限流(对不同的API接口定制限流)
限流是应对高并发的策略之一,而使用Guava的RateLimiter能够方便快捷的实现API接口访问的限流。RateLimiter特点:使用了令牌桶算法,也就是说规定了产生令牌的速率,以及令牌桶的容量,也就是说在指定时间内对请求的响应数量。RateLimiter 允许某次请求拿走超出剩余令牌数的令牌,但是下一次请求将为此付出代价,一直等到令牌亏空补上,并且桶中有足够本次请求使用的令牌为止。使用:首先引入依赖 <dependency> <grou
2020-06-17 17:48:59 1440
原创 Mysql--对varchar字段用int数值来查询的问题
在工作中遇到的一个问题。就是mysql的一个表中的一个字段是varchar类型的,这个字段用来存储身份证,身份证正好是18位的。但是在根据身份证号来查询用户的时候,忘了给这个查询条件的身份证号加上’’,然后就产生了问题。先来看表结构:SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------...
2020-05-08 14:01:45 3472 2
原创 Mybatis--collection或association嵌套查询(三层或三层以上)
在用mybatis查询时若遇到一对一或者一对多的关系,都会用到association或collection。在这要讲的是多层联表嵌套查询的时候怎么使用association和collection这里有4个表 ,分别为视频,视频关联题目表,题目表,答案表。关联关系如上图所示这里表的关系是:视频表----题目表(多对多),题目表----答案表(一对多) videopop是视频表和题目表关联的中间...
2020-01-02 16:59:11 9462 3
原创 Springboot--定义Rest风格接口统一返回的数据结构
在前后端分离的开发中,开发后端返回的数据往往是在controller层中返回的,一般都是在controller写Restful风格的接口来返回数据。这时候返回的数据格式一般都是json格式,而且返回一般都有一个统一的数据结构形式 即:{“code”:…(请求接口返回的码)“msg”:…(请求接口返回的信息)“data”:…(一般返回数据,若是不返回就不显示)}所以在springboot...
2019-12-31 15:24:31 2206
原创 CentOS7使用yum安装MySQL——指定版本
在CentOS中使用yum安装指定版本的MySQL1、进入MySQL官网获取MySQL的yum源,顺序如下:点击DownLoad ——> 点击下面的MySQL Community (GPL) Downloads ——> 点击MySQL Yum Repository ——> 根据自己CentOS的版本选择下载rpm包2、将下载好后的rpm包放到CentOS服务器上(如:/opt/mysql下),之后安装rpm包 rpm -Uvh /opt/mysql/mysql80-co.
2022-04-21 15:27:02 6862
原创 Maven引用外部jar包,打包时将system作用范围一起打包
在Maven中引入外部的jar包的时候,由于这时候的jar包并不在maven的本地仓库或者云仓库,所以maven不能识别jar包。这时候需要将本地jar包引入,并且打包的时候一起将外部的jar包一并打包。主要有以下三种方法:1、将外部的jar包安装到maven 的本地仓库或者私有仓库。具体操作如下:使用maven执行如下命令:mvm install:install-file -Dfile=E:\ChromeDownloads\xx-xx-sdk-1.2.0.jar -Dgro.
2022-04-07 17:27:07 13152 3
原创 Synchronized底层——Monitor(监视器、管程)
其中Synchronized涉及到重量级的锁,重量级的锁就和Monitor有关。前置知识,JAVA的对象头组成JAVA对象头在32位虚拟机中一个JAVA对象的对象头组成如下所示:普通对象(总共8个字节,Mark Word占4个字节,Klass Word 占4个字节,Klass Word就是对对象信息的描述):|-----------------------------------------------------------|| Object Hea
2022-03-16 17:02:54 2012 2
原创 Springboot+RabbitMq整合使用(含配置详解等)
1、引入springboot整合amqp的依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>2、application.yml 配置server: port: 8111spring: rabbitmq:
2021-03-04 17:08:07 23778 3
原创 Docker安装(CentOS 7)
1、先登录root用户su root2、检查更新yum是否是最新的sudo yum update3、卸载旧版本的dockersudo yum remove docker docker-common docker-selinux docker-engine4、安装Docker需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的安装软件包$ sudo yum install -y yum-utils device-m
2020-10-24 22:37:18 127 1
原创 JAVA--递归遍历树级菜单结构(多层嵌套菜单)
数据库存储的菜单结果:parentid为0的都是根节点,也就是一级菜单,后面的子菜单的parentid为父菜单的ID。MenumDTO类(菜单类)的结构:public class MenumDTO { private Integer id; private String content; private Integer parentid; private Date createtime; private Integer num; pr
2020-08-18 15:16:51 3801 7
原创 Springboot--使用POI,根据word模板导出word文件
需求:根据一个word模板,在程序中替换模板中的参数,然后根据这个模板导出word文件。引入POI对word操作的依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version>
2020-08-14 14:36:09 3254 17
原创 Mybatis--@Param注解
作用: @Param注解的作用是给参数命名,参数命名后在Sql语句中就能根据参数的名字获得这个参数的值。参数不加@Param注解的情况: 在接口方法中参数不加@Param注解的时候,Sql语句中使用参数只能用#使用参数,不能用$,而且不能直接用参数名来使用参数,而是得按接口方法中的参数列表顺序来使用。如下例例子:接口代码: List<Map<String,Object>&
2020-07-16 17:50:43 390
原创 JAVA--基本数据类型和引用类型区别
基本数据类型和引用类型简介:JAVA中基本数据类型只有八种:byte,short,char,int,long,float,double,boolean。除了这八种之外的类型,都称为引用类型。比较常见的引用类型有类、数组、接口等。两者的主要区别在于创建时存储的不同:基本数据类型:基本数据类型在被创建的时候,只会在栈中为这个基本数据类型的变量开辟一个内存空间,而且开辟的这个内存空间栈中直接存储这个基本数据类型的值。所以我们在用“==”比较符来比较基本数据类型的时候,比较的就是该基本数据类型
2020-07-15 17:42:02 1326
原创 Linux--VMware14虚拟机中配置网络网卡
在使用VMware14安装了一台CentOS8系统的虚拟机,在安装完成后需要配置系统的网络网卡,确保与外网通网。1.先找到网卡的配置文件输入命令 cd /etc/sysconfig/network-scripts进入到network-scripts文件中,找到相应的网卡配置文件,我这里是ifcfg-ens33(具体名字可能因系统不同而各异,如eth0、eth33…)2.编辑网卡配置文件输入命令vi ifcfg-ens33,进入到配置文件的中,然后按i或者Ins键进入编辑模式。查看自己windows
2020-06-28 16:22:36 425
原创 SpringMvc--日期类型参数不能接收问题
因为在SpringMvc中,参数被接收到时都变为了String,然后再根据每个参数的类型把String转换成对应的参数类型,但是String不能直接转换成Date,所以会出错。解决方法1.使用@DateTimeFormat注解在字段或者参数前加上@DateTimeFormat(pattern=“yyyy-MM-dd hh:mm:ss”),表明可以接收yyy-MM-dd hh:mm:ss日期格式的数据。如下:实体类接收参数时,实体类中Date类型字段加上该注解即可 @DateTimeForma
2020-06-05 17:42:55 2072
原创 SpirngMvc--@DateTimeFormat和@JsonFormat的区别详解
1.@DateTimeFormat注解@DateTimeFormat注解在SpringMvc中一般是用在前端传时间格式字符串,然后后端用Date参数类型直接接收的场景。一般是在SpringMvc的Controller层中参数前加上@RequestParam或者不加注解使用。@DateTimeFormat一般用在实体类的字段上,或者是在Controller方法中的某个Date类型的参数前直接加。一般使用patten属性,表示接收的时间字符串格式。例子1(注:以下例子使用的Content-type都是
2020-06-05 17:23:02 1302
原创 SpringMvc--@RequestBody和@RequestParam注解以及不加注解接收参数的区别
1.@RequestParam主要用来接收GET请求拼接在URL后的参数,或者是POST传递,且Content-type为x-www-form-urlencoded方式。因为不管是GET方式还是用x-www-form-urlencoded方式传递,参数都是以键值对方式拼接的,然后经过URLencoded编码,传递给服务端。@RequestParam只能接收简单参数类型2.@RequestBody使用@RequestBody该注解,前端请求只能为POST,因为该注解是从请求体中获得对象的。且请求头中
2020-06-04 15:25:27 4927
原创 SpringMVC--接收前端传递参数的几种方式
以下示例讲解皆是在Springboot项目下进行1.@RequestParam注解接收参数@RequestParam注解的4个属性:value:请求的参数名,如果不设置,默认为注解后的形参名。name:由于在源码中,name的别名是value,value的别名是name,所以name等同于value。required :表示该参数是否为必须,默认值为true,若请求的参数没有该参数,那么就会抛出异常。defaultValue:表示参数的默认值,如果设置了默认值后,required就直接为f.
2020-06-04 11:55:04 3616
原创 Mybatis--调用存储过程、接收存储过程返回的多结果集以及出参参数接收
有时候在程序开发中,需要用到存储过程,这里讲解了在Springboot的项目下,Mybatis如何调用存储过程,以及接收存储过程返回的多个结果集 Exam表结构SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for exam-- ----------------------------DROP TABLE IF EXISTS `exam`
2020-06-03 14:51:45 5799 10
原创 GET和POST请求发送和服务端接收如何解析
GET请求请求端:GET发送请求的时候,是把要传递的参数直接以键值对的方式用?拼接在URL后面,参数和参数之间用&来拼接。如:localhost:8080/test?a=1&b=2,就是把a和b这两个参数显式的拼接在了URL后面。发送请求的时候,浏览器会对后面拼接的参数部分进行URLencode编码,一般是使用浏览器默认的编码方式(ISO8859-1或UTF-8)。服务端:服务端接收GET请求的时候,Tomcat会采取默认的解码方式(一般为ISO8859-1或UTF-8)来进行URLd
2020-05-28 16:55:29 3297
原创 Springboot--使用Swagger时,实现文档中接口的排序
在Springboot整合Swagger时,想要使用官方的swagger-ui来实现文档中的接口排序并没有找到方法。所以使用了swagger-bootstrap-ui来实现该功能,swagger-bootstrap-ui能够实现Swagger-UI的增强。其中就有实现文档中接口排序的功能。其他功能请看swagger-bootstrap-ui开发指南下面介绍实现步骤:先引入swagger和swag
2020-05-15 14:53:52 3244
原创 Springboot--swagger2.9.2版本出现的NumberFormatException报错
在Springboot中整合Swagger 版本2.9.2 的话会出现报错:java.lang.NumberFormatException: For input string: “”。 出现该报错的原因是因为 2.9.2中默认使用的是 swagger-models-1.5.20 版本,该版本中的example只判断了值是否为空,但是并没有判断值是否是空串,所以在这是一个BUG,映射上就会报 NumberFormatException 异常 比如在实体类中使用注解 @Ap
2020-05-15 13:48:17 612
原创 Java--介绍JDK动态代理
JDK动态代理创建目标类接口和目标类。创建一个代理类的方法调用处理类,这个处理类要实现Invoc0ationHandler接口。实现了invoke()方法。这个方法调用处理类要和代理类关联,在代理类调用方法的时候,这个方法调用被编码分派到调用处理程序的invoke方法。创建代理类的实例对象。创建的话要传3个参数(目标类的的类加载器,目标类实现的一系列接口,和这个代理类关联的方法调用处理类 ...
2020-04-30 17:13:09 122
原创 joda-time 的一些常用方法
joda-time 的一些常用方法// 得到当前时间 Date currentDate = new Date(); DateTime dateTime = new DateTime(); // DateTime.now() System.out.println(currentDate.getTime()); System.out.println(dateTime.getM...
2020-04-23 10:07:04 396
原创 JAVA--工厂设计模式详细说明
1.简单工厂模式简单工厂模式步骤如下:简单工厂模式要创建某一个种族类的接口(在这里用的例子是水果这一个大种族),接口里面要规定后面的产品需要用到的方法创建产品类 , 产品类要实现这个产品接口的方法。创建产品的工厂类,在这里用的是传入指定数字 可以拿到相应的产品类,这里传入的参数事先规定好简单工厂模式所设计的对象:抽象的产品(在本帖中用的是水果这个抽象产品)具体的产品实现类(本帖...
2020-04-23 10:01:21 169
原创 Java-- RSA加密解密工具类
Base64编码解码用的是org.apache.commons.codec.binary.Base64这个包里的public class RSAUtil { private static Map<Integer, String> keyMap = new HashMap<Integer, String>(); //用于封装随机产生的公钥与私钥 publi...
2020-04-17 16:04:20 1327
原创 JAVA--反射机制介绍
反射的基本概念什么是反射?JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法,这种动态获取、调用对象方法的功能称为java语言的反射机制。在我们一般创建类对象的时候,一般是通过其类中的构造方法来创建对象,也就是通过关键字new,这种通过new关键字创建的对象叫做静态加载,在程序编译期间会对其进行检查,而不是在运行期间。...
2020-04-09 16:25:19 111
原创 JAVA--Class类介绍
Class类介绍Class类是存在于JDK中的java.lang包下的类。Class是一个保存着运行时类所有信息的类,即在程序运行时跟踪类且掌握着类的全部信息,故其也被称为反射的源头。Class类没有公共的构造方法,Class对象是在类加载的时候由JVM通过调用类加载器中的 defineClass 方法自动构造的,也就是说只有JVM能创建Class对象,我们自己的Java程序是无法创建Class...
2020-04-08 16:33:18 732
转载 Mysql--索引事项
mysql中建立索引的一些原则1、先存数据,再建索引有索引的好处是搜索比较快但是在有索引的前提下进行插入、更新操作会很慢2、不要对规模小的数据表建立索引,数据量超过300的表应该有索引;对于规模小的数据表建立索引 不仅不会提高功能,相反使用索引查找可能比简单的全表扫描还要嫚而且建索引还会占用一部分的存储空间3、当对表的查询操作比更新操作频率更高时,对该表建立索引4、在不同值较少的字段上...
2020-04-07 16:04:41 98
原创 Mysql--instr函数的介绍及使用
在mysql中进行模糊查询的时候可以使用instr()函数。instr函数介绍instr(表字段,字符串),这个函数返回字符串在表字段中的位置,若是找不到则返回0,找到则返回字符串所在位置。(返回位置从1开始)instr函数使用SELECT * FROM user WHERE INSTR(username,'2')>0 上述sql语句表示从user表中查询username字段中包...
2020-04-07 15:47:09 4425 2
原创 Mybatis--foreach标签属性介绍及使用
foreach属性介绍foreach用来迭代传过来的参数。foreach标签的主要属性有item,index,collection,open,separator,close。collection:表示传入过来的参数的数据类型。该参数为必选。要做 foreach 的对象,作为入参时,List 对象默认用 list 代替作为键,数组对象有 array 代替作为键,Map 对象没有默认的键。当然...
2020-04-07 14:35:57 8015
原创 JAVA--基础(JDK,JRE,JVM三者简述,修改JAVA版本,环境变量问题)
JDK,JRE,JVM三者关系简述JDK,JRE,JVM三者的关系和区别在这里只简单说明,不作详细说明,baidu一下会有一堆详细说明。JDK:是JAVA开发程序包,在JDK中有一个私有的JRE,这里的私有JRE方便程序员在开发完后,运行JAVA程序。私有JRE中也有JVM。JRE:JAVA程序的运行环境,JRE中有JVM(java虚拟机),可以运行JAVA程序,还有JAVA的类库lib。在...
2020-04-03 16:06:38 339
原创 Springboot--使用cxf创建soap webservice接口
引入依赖 <!-- cxf依赖 --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-spring-boot-starter-jaxws</artifactId> ...
2020-04-01 15:31:17 706
原创 Springboot--设置全局常量使用
创建一个资源文件 properties。这里创建一个content.propertiescontent.size=10content.name=test然后创建一个相应的实体类,在实体类的属性中直接用 @Value 注解获取content.properties配置文件中的常量Content.java//注册到Spring容器@Component//指定常量资源路径@Propert...
2020-03-31 17:25:52 5171
原创 Springboot--对整合了Mybatis框架进行SQL语句打印
1.使用application.properties 文件配置# 打印Mybatis的sqllogging.level.com.work.study.dao=debug2.使用application.yml文件配置# 打印Mybatis的sqllogging: level: com.work.study.dao : debug #上面这是dao层所在的位置...
2020-03-31 17:01:42 137
原创 微信开发中获取到用户信息nickname附带emoji表情存储Mysql异常的处理方法
存储从微信获得的用户信息用的数据库是Mysql数据库,在存储带有emoji字段的时候,Mysql的utf8编码不是一种真正的UTF-8编码,所以最多只能存3个字节,而大部分emoji表情或者特殊字符的编码是4个字节。所以修改Mysql 相应要存储的字段为4个编码字节即可。方法1:在数据库相应的字段设置utf8编码为4个字节#设置表plat_user 中nickname为utf8编码支持4个...
2020-03-30 11:27:13 709
原创 Springboot--配置返回时间数据的格式
配置返回时间数据格式为时间戳:spring jackson: serialization: write-dates-as-timestamps: true配置返回时间数据格式为特定的格式spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8指定某...
2020-03-25 16:46:44 1591
原创 Springboot--WebMvcConfigurationSupport详解
WebMvcConfigurationSupport是webmvc的配置类,如果在springboot项目中,有配置类继承了WebMvcConfigurationSupport,那么webmvc的自动配置类WebMvcAutoConfiguration就会失效。继承WebMvcConfigurationSupport类导致webmvc自动配置失效的原因看一下自动配置类WebMvcAutoCon...
2020-03-23 14:36:00 11888 1
原创 JAVA--创建二维码
使用谷歌的zxing 来创建二维码引入依赖 <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.3&l...
2020-03-23 13:39:20 137
原创 JAVA--HttpUtil工具类
添加依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.10</ver...
2020-03-23 11:39:21 4801
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人