自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

爱吃rabbit的mq

你知道的越多,你不知道的越多。

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

原创 mysql数据库查询排名

注:这里的(SELECT @rk:= 0) a 的作用是:在同一个select语句中给变量@rk赋初始值。在MySQL中,不存在类似于SQL Server或Orcal等中的rank()函数来得到排名;所以我们需要手动地写这个rank功能。sql语句中,使用:=来给变量赋值,:@rank:=123,则变量rank的值为123。@rank:= if(2>1,100,200)的结果是,rank的值为100。sql语句中,使用@来定义一个变量。case情况一(CASE 后面不带表达式)

2022-12-20 11:12:22 863 1

原创 递归查询demo

【代码】递归查询demo。

2022-08-29 09:10:39 175

原创 exsyexcel合并单元格

若业务需求要求在同一个sheet中写多个表,就需要用到WriteTable了。只定义一个WriteSheet,有几个表就定义几个WriteTable。打开输出的excel文件后如下,可以看到单元格没有合并。现在打算将第一列字符串标题相同的合并。打开输出的excel文件后如下,可以看到第一列有相同值的单元格已经合并了,成功实现。同理若要合并第三列的数据,则可以在注册一个sheet写处理器,代码如下。1.3 写多个sheet。1.自定义合并单元格。1.1 不合并单元格。...

2022-08-04 13:36:02 1316

原创 list集合根据某字段进行排序

list集合根据某字段进行排序。

2022-07-27 17:45:48 19945 1

原创 Spring Boot中如何读取resources目录下的文件

在Java编码过程中,我们常常希望读取项目内的配置文件,按照Maven的习惯,这些文件一般放在项目的src/main/resources下。因此,我们把合同的PDF模板存放于resources/template/test.pdf,以作测试用例,下面提供两种读取方式,它们分别在windows和Linux环境(linux下jar包)都可以正常运行。...

2022-07-25 11:31:08 2396

原创 nginx 常用配置

#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; defau.

2022-04-24 13:36:50 113 1

原创 一对多查询,将结果集按照特定规则合并为一个字段

举例:一个产品对应多个型号,把多个型号查询出来显示在一个字段下面。显示出一条数据。思路:先写出不含产品型号的查询语句,然后将一个产品对应的多个成分合并成一个字段,将合成的字段插入到一个语句中SELECT p.id AS '产品id', p.product_name AS '产品名字', p.type AS '产品类型',(SELECT group_concat(pm .model) FROM product_model pm WHERE pm.product_id=p.id) AS '产

2022-04-19 14:41:40 571

原创 TCP的三次握手与四次挥手

首先说一下tcp请求三次握手的过程,假如您是服务端,我是客户端,您是处于一直监听的状态,我现在发送一个请求,您接受到我发起的连接请求后,返回报文给我表示您已收到我发送的连接请求,我再次向您(服务端)发送确认收到允许链接的请求,总共三次(我→你,我←你,我→你),经过三次握手请求建立成功。接下来再说一下为什么需要三次握手,其实是为了防止服务端开启过多连接,造成资源浪费,如果说我发送请求的过程中网络迟滞了,很长时间才到达您那边,这时候我认为之前的请求发送失败了,我会重新发送请求,然而之前我发送的请求经过很长时

2021-10-11 10:58:55 101

原创 基于序列化实现对象深拷贝(工具类)

被拷贝对象一定要实现Serializable接口public class DeepCloneUtil { public static Object deepClone(Object obj){ Object copyObj=null; try { //对象序列化 ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOu

2021-09-29 10:57:57 107

转载 java深拷贝和浅拷贝

关于Java的深拷贝和浅拷贝,简单来说就是创建一个和已知对象一模一样的对象。可能日常编码过程中用的不多,但是这是一个面试经常会问的问题,而且了解深拷贝和浅拷贝的原理,对于Java中的所谓值传递或者引用传递将会有更深的理解。创建对象的5种方式①、通过 new 关键字这是最常用的一种方式,通过 new 关键字调用类的有参或无参构造方法来创建对象。比如 Object obj = new Object();②、通过 Class 类的 newInstance() 方法这种默认是调用类的无参构造方法创建对象。

2021-06-28 15:31:44 192

转载 为什么说Java中只有值传递

在开始深入讲解之前,有必要纠正一下大家以前的那些错误看法了。如果你有以下想法,那么你有必要好好阅读本文。错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。如果是个引用,就是引用传递。错误理解二:Java是引用传递。错误理解三:传递的参数如果是普通类型,那就是值传递,如果是对象,那就是引用传递。实参与形参我们都知道,在Java中定义方法的时候是可以定义参数的。比如Java中的main方法:public static void main(String[] args)这

2021-06-24 11:22:47 327

转载 MySQL数据库主从复制

MYSQL主从同步是目前使用比较广泛的数据库架构,技术比较成熟,配置也不复杂,特别是对于负载比较大的网站,主从同步能够有效缓解数据库读写的压力。MySQL主从同步的机制MYSQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态),Slave MySQL上通过一个I/O线程从Master MySQL上读取binlog,然后传输到Slave MySQL的中继日志中,然后Slave MySQL的

2021-06-23 11:48:41 102

转载 centos 安装mysql5.7

下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads解压tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar 再移动并重命名一下mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql创建mysql用户组和用户并修改权限groupadd mysqluseradd -r -g mysql mysql创建数据目录并赋予权限

2021-06-23 09:26:40 92

原创 数据库连接池大概执行原理

package com.example.demo.Util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.LinkedList;/** * @author Glr * @version V1.0 * @date 2021/6/22 0022 16:54 */public class DbConnectionPool {

2021-06-22 17:27:25 73

原创 java静态内部类的作用

需要了解2个概念:内部类和静态修饰符static1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。2)静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。并且它可以直接被用 外部类名+内部类名 获得。以下举例说明怎

2021-05-17 14:18:33 2978 1

转载 Java中hashCode的作用

关于HashCode的官方文档定义:hashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。hashCode 的常规协定是:在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。如果根据 equals(Object) 方法,两个对象是相等的,

2021-05-11 11:07:55 146

原创 centos 7查看防火墙状态及永久关闭防火墙

查看防火墙状态systemctl status firewalld.service关闭防火墙systemctl stop firewalld.service永久关闭防火墙systemctl disable firewalld.service

2021-04-21 16:54:18 227

原创 springboot 自定义starter

1.导入pom依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.o

2021-04-06 16:35:06 112

原创 centos7安装Elasticsearch7.12.0

1.在安装之前先安装好jdk以及环境变量配置查看jdk安装步骤请点击2.下载es安装包并解压访问 Elasticsearch 官网 https://www.elastic.co/cn/downloads/elasticsearch 下载安装包:tar -zxvf elasticsearch-7.1.0-darwin-x86_64.tar.gz3.运行es,切换到bin目录下执行(注意不要用root)./elasticsearch运行成功如下4.有可能遇到的问题在启动时提示无权限访问e

2021-04-02 17:05:59 1087

原创 Mybatis二级缓存

1.缓存介绍缓存是为了减小数据库的压力,且从缓存中查询数据,有助于提升查询效率。mybatis的缓存分为一级缓存及二级缓存**1.一级缓存:**默认是开启一级缓存的,一级缓存的作用域为sqlsession级别,sqlsession第一次查询时将数据结果缓存值一级缓存中(底层数据结构是Hashmap),第二次请求查询时,如果当前sqlsession未close或未commit,会从一级缓存中去查询数据。如果发生增、删、改操作,将刷新一级缓存中的内容,下次查询时重新从数据库中读取,防止有脏数据。2.

2021-03-18 17:59:52 93

原创 基于spring注解整合pagehelper以及pagehelper的基本使用

1.引入pagehelper依赖<!--pagehelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.0</version> </dependency>2.通过纯注解的方式整合pagehelper@Co

2021-03-18 09:55:41 1410 2

原创 mybatis中#{} 与${}的区别理解

假如数据库中存在这样的表table user(id varchar(20) PRIMARY KEY , name varchar(20) ,age varchar(20) );然后使用jdbc做查询操作Connection conn = getConn();//获得连接String sql = "select name from user where id=" + userId;PreparedStatement pstmt = conn.prep

2021-03-17 16:53:51 134

原创 springmvc执行流程

用户发起请求,WEB容器将请求交给前端控制器来处理,前端控制器接受到请求后,将请求交给处理器映射器来处理处理器映射器根据用去请求的url找对应的handler,并将handler返还给前端控制器前端控制器再请求处理器适配器,让处理器适配去去调用具体的handlerhandler调用业务层,可以在handler中通过modelAndView对数据以及视图进行封装,最后返回modelAndView给前端控制器前端控制器拿到viewAndView后调用事物解析器获取具体的视图,前端处理器对视图进行渲..

2021-03-03 17:34:57 74 1

原创 如何优雅的干掉web.xml,并在启动tomcat时初始化基于注解的spring容器

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { protected Class<?>[] getRootConfigClasses() { return new Class<?>[] {ApplicationConfig.class}; } protected Class<?>[] getServ

2021-03-02 17:54:08 112

原创 Spring中的事物属性

事物的特征原子性:要么全部执行,要不全部不执行一致性:数据库从一个一致性状态变成另一个一致性状态隔离性:事物间不能互相干扰持久性:一旦事物提交,将永远持久化到数据库存储事物的属性隔离属性传播属性只读属性超时属性异常属性隔离属性:解决高并发场景下容易发生的脏读、幻读、不可重复无问题。脏读:两个事物,t1,t2;t1对工资进行了修改,由原来的5000调整为8000,但还未提交,此时t2对工资进行了查询,得到的结果是8000,此时t1要进行事物提交,但是发生了异常,数据回滚到了5

2021-02-25 11:26:26 169

原创 使用redis实现分布式session共享

基于springboot,整合redis,同时使用redis实现分布式sessio共享引入redis依赖引入data-redis依赖<!--redis依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency&g.

2020-12-30 16:12:55 324

原创 centos7搭建rabbitmq集群

一、下载的安装包我已放入百度软盘,需要的小伙伴自行下载链接:https://pan.baidu.com/s/1scMv1dhiqEC-yW4-Xl_kCw提取码:oqmu二、安装步骤1.安装 Erlang 依赖包rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm2.安装 RabbitMQ 安装包(需要联网)yum install -y rabbitmq-server-3.7.18-1.el7.noarch.rpm3.复制配置文件默认安装完成后配置文件模板在

2020-12-25 15:17:12 195

原创 Centos7为yum设置代理

vim /etc/yum.confproxy=http://@10.2.10.250:808/

2020-12-25 11:42:23 549

原创 springboot整合rabbitmq,并简单举例各种消息模型在生产者与消费者之间的使用

需要代码的可自行下载https://gitee.com/glrno1/springboot_rabbitmq

2020-12-25 10:52:00 208

原创 利用Threadlocal解决类成员变量线程不安全问题

@controlerpublic class UserHandler extends BaseControler{ //这种方式引用全局变量Person,将会导致某一个线程对person进行修改时,其他线程获取person时会获取上一个线程修改后的person对象 Person person=new Person(); //解决方案,使用threadlocal private static ThreadLocal<Person> threadLocal=new ThreadLoc

2020-12-09 11:24:07 445 1

原创 java redisUtil常用工具类

package com.citydo.utils;import org.springframework.data.redis.connection.DataType;import org.springframework.data.redis.core.Cursor;import org.springframework.data.redis.core.ScanOptions;import org.springframework.data.redis.core.StringRedisTemplate;

2020-12-08 09:38:12 285

原创 java8 对hashmap底层实现原理的理解

在java8中hashmap的底层数据结构是Node数组,Node数组的数据结构是链表,当链表达到一定长度(8)将转为红黑树,这也是为什么说java8中hashmap是由数组+链表+红黑树组成。

2020-12-04 16:26:52 559

原创 解决浏览器不支持es6 map

重新mapfunction Map() { this.elements = new Array(); // 获取Map元素个数 this.size = function() { return this.elements.length; }, // 判断Map是否为空 this.isEmpty = function() { return (this.elements.length < 1); },

2020-11-04 14:59:41 788

原创 Vue 中使用 less 报错 Module build failed: TypeError: loaderContext.getResolve is not a function

一、less的报错1重述一下使用步骤1、安装 npm install less less-loader --save2、配置,在webpack.base.conf.js 的 rules 节点下新增:{test: /.less$/,loader: “style-loader!css-loader!less-loader”}3、使用,在 style 标签中使用 lang=“less”4、编译运行,此时可能会报错:Module build failed: TypeError: loaderCo

2020-06-12 11:05:20 1366 2

原创 NodeJs 使用 multer 实现文件上传

Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据使用方法:安装 Multernpm install multer --save安装 uuid (生成唯一标识,作为文件名)npm install uuid --save保存图片var express = require('express')var path = req

2020-05-14 16:44:32 306

原创 [ERR] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci

可能是mysql中高版本的数据库备份后导入低版本的mysql数据库产生的报错报错原因:生成转储文件的数据库版本为8.0,要导入sql文件的数据库版本为5.6,因为是高版本导入到低版本,引起1273错误解决方法:打开sql文件,将文件中的所有utf8mb4_0900_ai_ci 替换为 utf8_general_ciutf8mb4 替换为utf8保存后再次运行sql文件,运行成功...

2020-03-25 10:25:05 588

原创 Linux系统下安装jdk

1.去Oracle官网下载需要安装的jdk版本,我这里用的是jdk-8u181-linux-x64.tar.gz2.将该压缩包放到/usr/local/jdk目录下,jdk目录需要自己手动创建,也可以叫java,名字自己随意取(见名知意),然后解压该压缩包,输入如下指令:tar -xvf jdk-8u161-linux-x64.tar解压成功后如下图所示:3.接下来就该配置环境变量了,...

2020-03-24 09:34:10 315

原创 集合(List)中按照泛型的某一个属性进行排序的两种方法

集合中按照泛型的某一个属性进行排序,可以自定义Collecions.sort方法泛型(自定义的类)需要实现Comparable接口,并重写compareTo方法实现代码如下自定义的Person类public class Person implements Comparable<Person>{ private String name; private int a...

2020-03-19 14:30:27 672

原创 json-excel导出表格,数字字符串转为科学计数法的问题

在vue项目中使用vue-json-excel导出表格时,出现如下问题:将要导出的数据中如果有较长的数字字符串(如“2415746843132487”),导出excel之后,excel会自动的将过长的数字串转换成科学计数法。解决办法:修改vue-json-excel源码,在td标签里添加 style=“mso-number-format:’@’;” 就可以解决解决后的效果:转载于:...

2019-12-09 09:47:59 740

原创 nrm安装与配置

1.nrmnrm(npm registry manager )是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在 npm 源间切换2.安装nrm在命令行执行命令,npm install -g nrm,全局安装nrm。3.使用执行命令nrm ls查看可选的源。nrm ls*npm ---- https://registry.npmjs.org/c...

2019-12-03 21:54:13 297

空空如也

空空如也

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

TA关注的人

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