qq_43750656的博客

私信 关注
DanceDonkey
码龄2年
  • 18,077
    被访问量
  • 109
    原创文章
  • 87,331
    作者排名
  • 37
    粉丝数量
  • 于 2018-11-20 加入CSDN
获得成就
  • 获得76次点赞
  • 内容获得23次评论
  • 获得53次收藏
荣誉勋章
兴趣领域
  • #后端
    #Java
TA的专栏
  • 前端
    10篇
  • 权限
    1篇
  • 数据库
    11篇
  • web
    2篇
  • 消息中间件
    3篇
  • Java
    21篇
  • 搜索引擎
    4篇
  • 运维
    4篇
  • 异常
    3篇
  • 版本控制
    3篇
  • 开发工具
    4篇
  • 容器虚拟化
    8篇
  • spring
    6篇
  • Mysql
    9篇
  • vue
    1篇
  • 网络通信
    5篇
  • springsecurity
    4篇
  • springboot
    9篇
  • 事务控制
    1篇
  • Linux
    5篇
  • 设计模式
    4篇
  • 微服务
    4篇
  • 爬虫
    3篇
  • 多线程
    4篇
  • 定时任务
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

vue3中的reactive函数声明数组

vue3中reacitve函数如何声明一个响应式数组,如以下案例<template> <div> <div v-for="item in arr" :key="item"> {{item}} </div> <button @click="change">change</button> </div></template><scr
原创
86阅读
0评论
0点赞
发布博客于 10 天前

vue3数据回显与双向绑定

vue3版本中是实现数据绑定为通过新的ref与reactive函数实现<template> <div> <a-button type="primary" @click="getData"> 点击查询下一个 </a-button> <br /> <a-button type="primary" @click="print"> 打印表单数据 </a-button> <a-form-m
原创
17阅读
0评论
0点赞
发布博客于 25 天前

SecurityContextHolder登录认证成功后获取不到用户信息

SpringSecurity的授权过滤器,该filter在用户每次请求前拦截然后查询权限,将UserDetails对象放入Security的上下文中所以这里的Authentication必须为一个线程下的认证才能获取到认证对象,否则获取不到。如以下方式 new Thread(()->{ Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
原创
96阅读
0评论
0点赞
发布博客于 28 天前

webpack使用示例

一、初始化一个node项目npm init -y
原创
11阅读
0评论
0点赞
发布博客于 2 月前

CommonJS与ES6模块化规范

CommonJS规范1. 暴露单个 关键字 exports.xxx = xxxconst sum = (a,b) => { return a + b}exports.sum = sum2. 导入单个 require()const util = require("./a")console.log(util.sum(20,50))导入单个时,util对象相当于exports对象,exports.sum = sum,相当于给exports这个对象添加了一个函数,函数名为sum,当导
原创
20阅读
0评论
0点赞
发布博客于 2 月前

babel简单使用

全局安装babelnpm install -g babel-cli初始化一个node项目node init -y项目安装es2015的语法转换规则npm install --save-dev babel-preset-es2015创建babel配置文件 .babelrc{ "presets":["es2015"], "plugins":[]}转换单个文件babel 源文件目录/源文件 -o 打包目录/转换后的文件如果目录不存在要先创建打包整个目录.
原创
24阅读
0评论
0点赞
发布博客于 2 月前

axios的实例创建与应用

一、使用axios发送Ajax请求<!--引入axios,就好比引入jquery一样--><script src="https://cdn.bootcdn.net/ajax/libs/axios/0.20.0/axios.js"></script> //使用axios发送一个简单的http请求 axios.get(url) .then(response => { //ajax请求执
原创
61阅读
0评论
0点赞
发布博客于 2 月前

解决Java向mysql插入数据时的乱码和时区问题

解决乱码和时区问题需要在jdbc的链接url上添加参数jdbc:mysql://mysql-server:3306/coin-exchange?useSSL=false&useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/ShanghaicharacterEncoding
原创
26阅读
0评论
0点赞
发布博客于 2 月前

ResponseEntity作为的返回值的应用

通常如果后端想响应json数据,我们需要在方法体上添加@Response注解,标注这个注解的方法的返回值会被spingmvc转为json形式并写入到响应体中。但ResponseEntity则不会被springmvc转换,可以使用这个类定义响应头,状态码,响应体等。@Controllerpublic class ResponseBodyTest { @ResponseBody @GetMapping("b1") public R b1(){ //将方法的返回值转为
原创
45阅读
0评论
0点赞
发布博客于 2 月前

Access denied for user ‘root‘@‘192.168.137.1‘

Java链接远程mysql经常出现root账号拒绝访问,需要给root账号开设远程授权grant all privileges on *.* to 'root'@"%" identified by "root";flush PRIVILEGES;
原创
27阅读
0评论
0点赞
发布博客于 2 月前

MQ消息可靠抵达

发送者设置回调设置消息抵达消息服务器的回调#开启消息服务器接收回调spring.rabbitmq.publisher-confirm-type=correlated注意:此回调无论是否抵达消息服务器都会回调 //消息成功抵达消息服务器或者未抵达服务器的回调,不是消息进入队列时的回调 //TODO 注意此方法无论是否抵达消息服务器均回调,可通过 boolean ack 判断是否成功抵达 rabbitTemplate.setConfirmCallback(ne
原创
17阅读
0评论
0点赞
发布博客于 2 月前

Java8获取今天至未来某天的日期范围及格式化

今天至未来某天的日期范围 /** * 返回今天的日期最小值 */ public static LocalDateTime minDate(){ LocalDate localDate = LocalDate.now(); LocalTime localTime = LocalTime.MIN; LocalDateTime localDateTime = LocalDateTime.of(localDate, localTim
原创
31阅读
0评论
0点赞
发布博客于 2 月前

详解全文检索的boolQuery复杂检索

基本查询先来熟QueryBuilders这个类封装的基本查询QueryBuilders.matchQuery() 会根据分词器进行分词,分词之后去查询QueryBuilders.termQuery() 不会进行分词,且完全等于才会匹配QueryBuilders.termsQuery() 一个字段匹配多个值,where name = ‘A’ or name = ‘B’QueryBuilders.multiMatchQuery() 会分词 一个值对应多个字段 where username = ‘zs
原创
31阅读
0评论
0点赞
发布博客于 2 月前

全文检索同时高亮多个字段

之前一值用单字段高亮,今天研究了一下RestHighLevelClient的高亮API构建一个HighLightBuilder对象,这个对象有一个field方法,通过多次调用这个方法传入要高亮的字段就可以根据指定的前后缀进行高亮。这个field又调用了this.field方法再继续调用发现最后是存放了一个List集合中。但前后缀就不是了前后缀只有一种高亮规则,并不是一个数组。查看高亮结果和文档值...
原创
54阅读
0评论
0点赞
发布博客于 2 月前

Elasticsearch定时备份索引数据与恢复

定时备份脚本Linux定时任务功能使用cron服务来进行编写定时任务的cron表达式crontab -e #进入cron定时任务编辑定时任务*/1 * * * * /opt/scheduler/es_bk.sh >> /opt/scheduler/bk_log.txt 2>&1每隔1分钟定时执行 /opt/scheduler/目录下的es_bk.sh脚本,将数据内容写入到 /opt/scheduler目录下的bk.log.txt文件中查看一下es_bk.
原创
69阅读
0评论
0点赞
发布博客于 2 月前

Linux系统启动ES无法访问题

修改es的配置文件指定好ip和端口,并设置默认的节点。此外还需要给es单独设置个用户,否则会启动失败。
原创
42阅读
0评论
0点赞
发布博客于 2 月前

UEditor对象的htmlParse()方法

引入UEditor并测试htmlparse方法。写入测试以下的html文本 var uNode = UE.htmlparser("1111<p>Hello <span>world</span></p><p>HHHH</p><p>&nbsp;&nbsp; asdasd <br/></p><p><span style=\"font-size: 36px;\">B
原创
18阅读
0评论
0点赞
发布博客于 2 月前

MySQL字段关键字报错

后来将SQL语句粘贴到客户端执行才发现desc是个关键字,被高亮显示了。SELECT id,desc,create_time,update_time FROM graduate_status WHERE id=?加两个 飘号转义一下或者修改字段名即可。
原创
34阅读
0评论
0点赞
发布博客于 2 月前

EasyExcel使用模板文件填充数据

单组数据填充可以填充一个对象或一个Map,单组数据填充时模板为{ xxx } ,xxx为对象的属性名或Map的key测试代码: /** * 使用模板单组数据填充 */ @Test public void test01(){ //准备模板 String template = "fill_data_template1.xlsx"; ExcelWriterBuilder builder = EasyExcel..
原创
807阅读
4评论
0点赞
发布博客于 2 月前

EasyExcel实现文件的上传和下载

实体类@Data@AllArgsConstructor@NoArgsConstructor@ContentRowHeight(20) //内容的行高@HeadRowHeight(30) //表头的行高public class Student { @ExcelProperty(value = "ID") @ColumnWidth(30) private String id; @ExcelProperty(value = "姓名") private S.
原创
69阅读
0评论
0点赞
发布博客于 2 月前

git中.gitingore文件以及分支的使用

.gitingore通常存放于在git根目录下,该文件控制此项目哪些资源会被git管理,哪些不会被git管理。常用的有xxx/ 忽略该文件夹下的根目录下的的xxx文件夹,但如果有某个子目录中有xxx文件夹则不会忽略/xxx/ 忽略所有xxx文件夹,/在前面表示递归忽略*.xxx 忽略所有的.xxx文件 例如 *.txtx! 以!开头表示不忽略这个文件xxx/**/*.xxx 递归忽略某个目录下的文件如:#当前目录下的idea目录下的文件不会被提交,但如果有个子目录下有个文件夹是.i.
原创
16阅读
0评论
0点赞
发布博客于 2 月前

SpringMVC下载图片,计算出图片的大小

@GetMapping("/pic") public void pic(HttpServletResponse response) throws IOException { int total = 0; response.setContentType("image/jpeg");//设置输出流内容格式为图片格式 response.setCharacterEncoding("utf-8");//response的响应的编码方式为utf-8 .
原创
9阅读
0评论
0点赞
发布博客于 2 月前

HttpServletResponse对象的输出流问题

HttpServletResponse对象的两个流response.getWriter().write @ResponseBody @GetMapping("/write") public User write(){ return new User(1,"zs"); }先来看这段代码,@ResponseBody注解的作用是将方法的返回值以JSON的形式写入到响应体中。也就是以上的代码可换成如下形式,其作用是等价的。 @GetMapping("
原创
134阅读
0评论
0点赞
发布博客于 2 月前

解决报错Cannot delete or update a parent row: a foreign key constraint fails

报错截图如果A表是主表(tbdept),B表是从表(tbemploy),在删除tbdept表中的数据时,如果tbemploy表有引用要删除的数据就会报这个错误,删除失败。解决可手动判断要删除的这个数据的值在子表中有没有记录,有的话就不执行删除操作先删除子表引用的数据,再删除主表的数据删除主表与子表的外键关系show create table tbemployCREATE TABLE `tbemploy` ( `SGUID` varchar(36) NOT NULL,
原创
29阅读
0评论
0点赞
发布博客于 3 月前

ElasticSearch安装IK分词插件以及自定义分词

一、ES安装IK分词插件基于docker容器的方式启动ES实例启动脚本如下:docker run -d -p9200:9200 -p9300:9300 -e "discovery.type=single-node" -v /opt/docker/es/plugins:/usr/share/elasticsearch/plugins/ -e ES_JAVA_OPTS="-Xms120m -Xmx120m" --name es01 elasticsearch:7.7.0将容器的/usr/share
原创
25阅读
0评论
0点赞
发布博客于 3 月前

基于数据库方式和Redis方法实现乐观锁

一、乐观锁意义乐观锁是相对于悲观锁而言的,悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁,关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以
原创
30阅读
0评论
0点赞
发布博客于 3 月前

Spring注解@Autowired使用

@Autowired注解自动装配原理@Data@Servicepublic class BookService { @Qualifier("bookDao3") @Autowired(required = false) private BookDao bookDao; } /** * 当容器中同时有多个BookDao对象时,在进行自动装配时,优先装配标注了@Primary注解的bean * @return */ @Primary.
原创
10阅读
0评论
0点赞
发布博客于 3 月前

Spring注解@Conditional和@Import使用

在使用注解驱动开发时,@Bean注解是非常常用的,通常标注于方法上,被@Bean标注的方法的返回值会加入到容器中,id默认是方法名。但有时,我们在给容器中添加bean时需要动态判断一下,满足了一定条件以后才将这个bean加入到容器中,这就要用到@Conditional注解了。@Conditional作用在方法上@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documen..
原创
18阅读
0评论
0点赞
发布博客于 3 月前

子查询的使用(where、select、from、exists)

一、子查询含义、分类含义:出现在其他语句中的select语句,称为子查询或内查询。嵌套这个select语句的查询称为主查询或外查询。分类:按子查询出现的位置select后的子查询from后的子查询where后的子查询exists后的子查询按子查询结果集的行列标量子查询(结果集只有一行一列)列子查询(结果集只有一行多列)行子查询(结果集只有一列多行)表子查询(结果集有多行多列)...
原创
32阅读
0评论
0点赞
发布博客于 3 月前

详解SQL99语法各类查询使用

一、多表查询分类内连接 (inner join)等值链接非等值链接自连接外链接左外链接 (left join)右外链接 (right join)全连接 (full join)交叉连接 (cross join)语法:对join链接查询的详解可参考这里 https://blog.csdn.net/qq_43750656/article/details/106770806select [查询列表]from [表1] [别名] [链接类型] join[表2] [别名]
原创
10阅读
0评论
0点赞
发布博客于 3 月前

详解SQL聚合函数、分组查询

SQL共有五个聚合函数,分别是 sum,avg,max,min,count,下面来一一介绍执行下面的sql脚本/*SQLyog Ultimate v10.00 Beta1MySQL - 5.5.15 : Database - myemployees**********************************************************************//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE='
原创
214阅读
0评论
0点赞
发布博客于 3 月前

SQL常用函数

一、字符串相关函数CONCAT(字符串拼接)SUBSTR(截取字符串)LENGTH(返回字符串长度)INSTR(返回某个字符在字符串中第一次出现的下标,注意:mysql中的下标从1开始)LPAD(以指定的字符在字符串左边填充至指定长度)RPAD(以指定的字符在字符串右边填充至指定长度)TRIM(删除字符串起始位置的字符)REPLACE(根据指定的字符,替换字符串中的字符)使用示例#concat需要三个或二个参数,将第一个参数和第三个参数使用第二个参数拼接select concat
原创
21阅读
0评论
0点赞
发布博客于 3 月前

开源项目renren-fast的验证码以及登录认证流程分析

一、验证码的获取查看其项目源码,在跳转到登录页面后,调用created钩子函数,而调用的这个getCaptcha(),方法就是请求获取验证码的方法。而且注意,在其请求验证码的时候,携带了uuid参数,并且将这个uuid参数赋值给了this.dataForm.uuid。此时vue对象的data属性上的dataForm登录表单对象就有了这个uuid值,这个参数怎么用下面再说。 created () { this.getCaptcha() }, getCaptcha () {
原创
177阅读
0评论
0点赞
发布博客于 3 月前

docker下载出现异常Error response from daemon: dial tcp: lookup index.docker.io: no such host

在使用 docker search xxx 或者 docker pull xxx 搜索或者拉取一个镜像时出现了这个异常,主要原因是docker找不到 index.docker.io这个域名对应的ip,但是这个域名是真实存在的。此时有两个解决办法修改DNSvim /etc/systemd/resolved.conf重启网络服务/etc/init.d/networking force-reload/etc/init.d/networking restart重启Ubuntu虚拟机修改/
原创
126阅读
0评论
0点赞
发布博客于 3 月前

maven常用插件

1.资源编译插件maven项目在打包时默认只打包resources目录下的资源文件,如果某些资源文件放在了java目录下,不会将其打包。在项目的pom.xml文件下添加如下内容 <resources> <!--将src/main/resources目录下的所有资源文件打包--> <resource> <directory>src/main/resources</directory> <includes>
原创
45阅读
0评论
0点赞
发布博客于 3 月前

git的版本回退,分支以及不同仓库的版本合并

git切换版本初始化一个git仓库,创建Demo1.txt,提交至本地仓库,创建Demo2.txt,提交至本地仓库。查看历史版本 git reflog切换历史版本 git reset --hard 【版本索引】此时我们回退到了第一个版本,第一个版本是不存在Demo2.txt文件的,我们查看,发现确实没有Demo2.txt文件。创建分支、合并分支、解决分支冲突查看分支信息 git branch -v代表目前该仓库有两个分支,master前面的 * 表示当前正位于master分
原创
129阅读
0评论
0点赞
发布博客于 3 月前

RabbitMQ延时队列的使用

延时队列概述通过给一个普通的队列设置一些参数,死信交换机,死信路由,以及队列过期时间,注意,这个队列不能让任何消费者监听,然后我们将消息统一发往这个队列,当这个队列中的消息过期后,就会根据我们指定的死信交换机和死信路由去往新的队列,我们的程序可以监听这个队列,一旦这个队列监听到消息了,则一定是延时队列中过期的消息。流程图如下延时队列测试使用引入AMQP的依赖 <dependency> <groupId>org.springframewo
原创
63阅读
0评论
0点赞
发布博客于 4 月前

多线程实现双人聊天

这个demo模拟了老师和学生的对话聊天功能。使用网络编程和多线程方式实现。实现模拟老师和学生聊天的关键点就是 学生端既可以是发送方,也可以是接收方老师端同样既可以是发送方,也可以是接收方这样的话学生端需要同时开启接收和发送程序,老师端也要同时开启接收和发送程序学生端的发送程序端口对应老师端的接收程序端口,老师端的发送程序端口对应学生端的接收程序端口。接收方public class TalkReceive implements Runnable { private String sen
原创
716阅读
2评论
3点赞
发布博客于 4 月前

前后端分离模式下的登录认证授权

项目地址:https://gitee.com/kaidilake118/springsecurity-rbac/认证授权流程这里需要重写两个重要的过滤器UsernamePasswordAuthenticationFilter重写该过滤器的认证、成功回调和失败回调的方法。BasicAuthenticationFilter重写该过滤器的授权方法。在该方法中我们执行了UsernamePasswordAuthenticationToken authenticationToken =
原创
272阅读
0评论
0点赞
发布博客于 4 月前

基于数据库认证方式的SpringSecurity示例

项目gitee地址:https://gitee.com/kaidilake118/springsecurity项目结构说明SQL脚本/*Navicat MySQL Data TransferSource Server : mysqldbSource Server Version : 50562Source Host : localhost:3308Source Database : acldbTarget Server Type
原创
40阅读
0评论
0点赞
发布博客于 4 月前

微服务打包Docker镜像时的数据库链接问题

如果微服务项目中需要链接数据库,那么在打包docker镜像后要将数据库的链接地址修改。先启动一个mysql容器并映射端口这里我将容器内部的3306端口映射为3002修改微服务的url将数据库链接地址设置为动态变量,默认为localhost。编写DockerfileFROM java:8ADD *.jar /blog.jarEXPOSE 8081ENTRYPOINT ["java","-jar","/blog.jar"]构建docker镜像docker bui
原创
73阅读
0评论
0点赞
发布博客于 4 月前

使用Redis和lua脚本的方式实现接口限流

注解使用说明@Limit注解我们自己自定义的限流方式思想为自定义一个注解,在写个注解中配置限流的一些信息,然后在接口方法上标注@Limit注解,通过对该注解的AOP功能可达到限流目的。@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface Limit { // 资源名称,用于描述接口功能 String name() default ""; // 资源 key
原创
92阅读
0评论
0点赞
发布博客于 4 月前

自定义annotation注解并对其做切面

编写一个注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documented@RequestMapping(method = RequestMethod.GET)public @interface RequestGet { /** * Alias for {@link RequestMapping#name}. */ @AliasFor(annotation = RequestM
原创
72阅读
0评论
0点赞
发布博客于 4 月前

SpringSecurity的登录界请求无限循环重定向。

如果自定义了springsecurity的登录界面后出现以下异常,大概率是因为没有给登录页面授权解决
原创
228阅读
0评论
0点赞
发布博客于 4 月前

BIO与NIO简单示例

BIO模型同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。示意图:在BIO模型中,每一个客户端与服务器的链接都会创建一个线程,无论客户端是否向服务器发送数据。代码验证public class BIOServer { public static void main(String[] args) throws IOException { //创建一个线程池
原创
26阅读
0评论
0点赞
发布博客于 4 月前

详解IP地址的子网划分、DNS配置

一、IP的相关概念1.什么是Ip?2.Ip的分类3.私有Ip有哪些?1.什么是Ip?2.Ip的分类3.私有Ip有哪些?
原创
113阅读
0评论
2点赞
发布博客于 4 月前

OSI网络模型

OSI网络模型示意图OSI网络模型每一层都会使用不同的协议来对发送的数据做一些封装,其中物理层是将要发送的数据转为二进制流。在这七层模型中,下层通过接口给上层提供服务。上层可以接收到来自下层以及下下层的服务。应用层应用层就是直接面对用户使用的网络软件,不同的软件也遵循不同的协议,典型的应用层服务有:表示层主要作用 * 数据格式变换,如接收方会将二进制流转换为图片,音频等。 * 数据加密解密 * 数据压缩和恢复会话层建立两个设备之间的链接,并在链接上有效的传输数据。不同的网络会话
原创
26阅读
0评论
1点赞
发布博客于 4 月前

Error attempting to get column ‘xxx‘ column ‘1‘ is outside valid range for the datatype INTEGER

数据库的字段channel_id为bigint型,返回的结果写成了Set,将返回结果该为Set 即可
原创
53阅读
0评论
1点赞
发布博客于 4 月前

解决Vue中@Click事件无效

实现的效果为当点击某个搜索的历史记录后,input框中就会有选中的文在给一个span绑定click事件时无效,原因是当这个input框失去焦点后,v-show就成为了false,如果这个为false的话,搜索历史记录栏就不会显示,这样其上面的span也没有了,我们可以将v-show置换为true,然后在点击事件中置换为false...
原创
504阅读
0评论
1点赞
发布博客于 4 月前

IEDA同步git代码到本地,以及解决代码冲突

在创建项目时选择填写项目地址以及本地地址将我们项目的maven环境配置好后就拉取成功了新增文件提交此时原来的项目也新增了一个文件要提交此时发现被拒绝了原因是我们提价的不是最新版本的代码,在我们提交之前,clone的项目已经对代码修改并提交过了拉取最新的代码此时的项目已经同步了clone项目的代码再次推送,即可推送成功同样,clone项目也可以拉取刚才另一个项目添加的service代码冲突问题如果clone项目修改了Hello.
原创
26阅读
0评论
0点赞
发布博客于 4 月前

docker-compose启动springboot应用

编写DockerfileFROM java:8COPY *.jar /app.jarCMD ["--server.port=8081"]EXPOSE 8081ENTRYPOINT ["java","-jar","/app.jar"]编写docker-compose.ymlversion: "3.7"services: netblog: build: . image: netblog depends_on: - mysq.
原创
48阅读
0评论
0点赞
发布博客于 4 月前

SpringBoot微服务打包docker镜像

创建一个boot工程<?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 https://maven.apache.org/xsd/maven-4.
原创
37阅读
0评论
0点赞
发布博客于 4 月前

制作一个带tomcat和jdk的centos镜像并发布到docker.hub或者阿里云镜像

DockerFile编写在/home目录下创建一个目录 mycentos,并将tomcat的压缩包和jdk的压缩包拷贝到该目录下编写生成镜像的dockerfile文件FROM centos #设置作者信息MAINTAINER lhb<1234567@qq.com>#将宿主机的 readme.txt 文件拷贝到容器的 /usr/local/readme.txt 目录下COPY readme.txt /usr/local/readme.txt#给这个容器添加一些压缩
原创
21阅读
0评论
0点赞
发布博客于 4 月前

使用DockerFile构建docker镜像挂载目录,数据卷同步

docker镜像是一层一层的,在用dockerFile编写脚本时,也要遵循层级关系。使用dockerFile构建一个简单的docker镜像使用docker 命令执行该文件‘docker build -f dockerFile -t dftomcat:1.0 .3.验证第二步 是否挂载成功docker run -d -P --name tomcat006 dftomcat:1.0挂载成功!使用dockerFile挂载镜像就可以省去在docker run -v时的挂载。...
原创
396阅读
0评论
0点赞
发布博客于 4 月前

详解docker提交镜像以及数据卷的使用

提交镜像当下载一个新容器以后,我们可以在这个新容器基础上对它做一些修改,当我们修改为自己想要的容器时,我们可以基于这个容器生成一个镜像docker commit -a="作者名" -m="本次提交的描述" 容器的ID 镜像名:版本例如:docker commit -a="zhangwuji" -m="create my tomcat" 4d mytomcat:1.0使用数据卷直接使用命令来挂载docker run -d -it -v 主机目录:容器内目录 -p 主机端口:容器端口 --n
原创
25阅读
0评论
0点赞
发布博客于 4 月前

portainer可视化工具操作docker

使用docker下载portainerdocker run -d -p9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer访问 虚拟机IP:9000初始密码,创建用户链接本地仓库左侧就是菜单栏,可以查看镜像以及容器信息还可以进入容器的控制台...
原创
7阅读
0评论
0点赞
发布博客于 4 月前

docker常用命令,使用docker部署es+kibana详解

搜索镜像docker search 镜像名拉取镜像docker pull 镜像名【:版本】运行一个容器docker run -d -it -p映射端口:容器端口 --name 容器名 镜像名查看容器运行日志docker logs -tf --tail [行数] 容器ID进入容器bin/bashdocker exec -it 容器ID /bin/bash拷贝容器内部的文件到外部磁盘docker cp 容器ID:文件在容器内部的路径 磁盘路径注意:文件.
原创
153阅读
0评论
0点赞
发布博客于 4 月前

一文搞懂布隆过滤器以及如何解决Redis的缓存穿透问题

1.什么是缓存穿透?正常的查询数据库流程应该是先查缓存,如果缓存没有,再去查询数据库。当在数据库中查询完成后将查询的结果放入到缓存,这样下次请求的话就可以在缓存中获取到。那么缓存穿透就是类似于一种恶意攻击,例如数据库中存在id为1,2,3,4,5一共5条数据,如果一个请求查询id为6的数据,很明显这个数据缓存中没有,那么就会去查询数据库,但是数据库中也没有,那这样就造成了缓存穿透。如果这个请求一直在向服务器发送查询,则会给数据库带来很大的压力。2.什么是布隆过滤器?布隆过滤器(Bloom Filte
原创
68阅读
0评论
1点赞
发布博客于 4 月前

Ubuntu部署springboot并设置后台运行和日志监控

查看防火墙是否开启ufw status如下表示未开启如果开启需要 ufw disable 关闭创建一个日志文件touch applog.log启动应用nohup java -jar xxx.jar > applog.log 2>&1 &这样可以后台启动并将日志信息输出到指定文件中...
原创
63阅读
0评论
0点赞
发布博客于 4 月前

Linux下进程管理命令

进程查看命令ps (process status,只显示应用级别的进程)linux系统中所有命令如cd、ps、cp等都是以可执行文件存在的,当执行这些命令的时候,相当于也执行了一个进程,所以也会有PID。ps -e (显示所有进程)ps -ef (显示所有进程的详细信息)UID:开启该进程的用户PID:进程的IdPPID:进程的父进程IdC: CPU占用率STIME: 开始时间TTY : 开始此进程的TTY----终端设备TIME: 此进程运行的总时间CM
原创
12阅读
0评论
0点赞
发布博客于 4 月前

JVM内存调优

首先运行以下代码,查看JVM运行时的初始内存以及最大内存public class HeapTest { public static void main(String[] args) { long maxMemory = Runtime.getRuntime().maxMemory(); //最大内存(字节) long totalMemory = Runtime.getRuntime().totalMemory(); //初始内存 System.ou
原创
13阅读
0评论
0点赞
发布博客于 4 月前

JVM与JMM

JVM系统结构图从图中可以看出在运行时数据区可分为三个部分,分别为方法区、堆以及栈。下面将对这三部分区域进行分析。方法区方法区主要存放的东西:也就是在运行时,静态常量,类信息(也就是class文件以及引进的一些第三方的jar包)这些类模板都存放在方法区,但是注意:实例变量存放在堆内存中。栈区对于栈这种数据结构的定义一般都是先进后出,后进先出。那联想到我们方法的调用过程,如下代码所示:public class StackTest { public static void test0
原创
15阅读
0评论
2点赞
发布博客于 4 月前

Vue中的ref引用不存在问题

问题描述当我们在一个vue文件中引入了另一个vue组件,但如果不想让其显示,我们通常会v-if=“”false“”但是当使用这个组件的时候发现报错了解决将v-if改为v-show即可
原创
93阅读
0评论
0点赞
发布博客于 5 月前

SpringSession解决分布式session以及自定义域名

使用Redis方式存储session引入SpringSession依赖 <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>spring.session.store-
原创
64阅读
0评论
0点赞
发布博客于 5 月前

使用HttpClient封装的Get和Post请求

使用HttpClient封装的Get和Post请求,并可以将结果转为JSON对象返回导入HttpClient的依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version
原创
38阅读
0评论
0点赞
发布博客于 5 月前

WebStorm常用快捷键以及自定义模板快捷键

WebStorm常用快捷键Ctrl+D复制一行Ctrl+Y删除一行Ctrl+X 剪切Ctrl+Z 撤销Ctrl+A 全选Ctrl+Shift+Z 反撤销Ctrl+F查找关键字Shift+Alt+Up 向上移动行Shift+Alt+Down 向下移动行Ctrl+Alt+L 格式化当前文件代码Ctrl+E 查找最后一次打开的文件Ctrl+Shift+Alt+鼠标点击 同时操作多行WebStorm自定义模板快捷键如下图所示:我们在学习JS的过程中经常需要写for循环,那这样就很
原创
242阅读
1评论
2点赞
发布博客于 5 月前

BCryptPasswordEncoder的matches方法返回false

用BCryptPasswordEncoder 做加密,在判断时要用该对象的matches方法,第一个参数为明文!!!,第二个参数才是密文 !!! public static void main(String[] args) { BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); String encode = passwordEncoder.encode("123");
原创
672阅读
0评论
1点赞
发布博客于 5 月前

RabbitMQ可靠消息机制

发送端确认在配置文件中配置以下内容#开启发送端确认机制spring.rabbitmq.publisher-confirms=true编写发送消息到达服务器后的回调setConfirmCallback注意,这个回调只能说明消息到达了服务器,而不能说明消息发送到了队列@Configurationpublic class MyRabbitConfig { @Autowired public RabbitTemplate rabbitTemplate; /**
原创
14阅读
0评论
1点赞
发布博客于 5 月前

CompletableFuture异步编排

CompletableFuture是JDK8新引入的异步编排方式,并可结合线程池来使用首先声明一个线程池private static ExecutorService executors = Executors.newFixedThreadPool(10);有返回结果的异步调用 supplyAsync CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
原创
12阅读
0评论
0点赞
发布博客于 5 月前

Redisson读写锁

读写锁一次只有一个线程可以占有写模式的读写锁, 但是可以有多个线程同时占有读模式的读写锁. 正是因为这个特性,当读写锁是写加锁状态时, 在这个锁被解锁之前, 所有试图对这个锁加锁的线程都会被阻塞.当读写锁在读加锁状态时, 所有试图以读模式对它进行加锁的线程都可以得到访问权, 但是如果线程希望以写模式对此锁进行加锁, 它必须直到所有的线程释放锁.通常, 当读写锁处于读模式锁住状态时, 如果有另外线程试图以写模式加锁, 读写锁通常会阻塞随后的读模式锁请求, 这样可以避免读模式锁长期占用, 而等待的写模式
原创
277阅读
0评论
0点赞
发布博客于 5 月前

org.springframework.beans.factory.BeanDefinitionStoreException:xxx conflicts with existing

具体原因org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.wk.itknowledage.article.AppArticle]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-spe
原创
53阅读
0评论
1点赞
发布博客于 5 月前

详解 策略模式+工厂模式解决if else 冗余问题

首先来看一下这段代码 String name = "李四"; @Test public void noDesign(){ if ("张三".equals(name)){ System.out.println("张三执行业务"); }else if ("李四".equals(name)){ System.out.println("李四执行业务"); }else if ("王五".equals(n
原创
41阅读
0评论
1点赞
发布博客于 5 月前

WebMagic及其组件的使用流

WebMagic概述WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。特性:简单的API,可快速上手模块化的结构,可轻松扩展提供多线程和分布式支持执行流示意图...
原创
33阅读
0评论
2点赞
发布博客于 5 月前

分布式事务之可靠消息最终一致性

RocketMQ配置分布式事务之可靠消息最终一致性通常使用rocketmq的事务消息机制来实现。其大致流程如下1、Producer 发送事务消息Producer (MQ发送方)发送事务消息至MQ Server,MQ Server将消息状态标记为Prepared(预备状态),注意此时这条消息消费者(MQ订阅方)是无法消费到的。本例中,Producer 发送 ”增加积分消息“ 到MQ Server。2、MQ Server回应消息发送成功MQ Server接收到Producer 发送给的消息则回
原创
60阅读
0评论
1点赞
发布博客于 5 月前

@Async注解失效问题

@Async注解失效的原因主要有两个1.主启动类没有加@EnableAsync注解2.异步方法不要和调用异步方法的方法在同一个类中例如@RestControllerpublic class AsyncController { @GetMapping("/index") public String index(){ doTask(); System.out.println("index"); return "success";
原创
318阅读
2评论
1点赞
发布博客于 5 月前

基于Redis和Redisson的分布式锁的实现

一、环境搭建在redis服务器存储了一个key,值为100Java业务代码,业务逻辑为如果redis中的key值大于0,则减1并更新@GetMapping("reduce/stock") public String reduceStock(){ String stock = redisTemplate.opsForValue().get("stock"); if (!StringUtils.isEmpty(stock)){ Intege
原创
29阅读
0评论
0点赞
发布博客于 5 月前

JMeter创建线程以及线程组

一、添加线程组设置相关配置二、创建Http请求设置接口路径三、添加聚合报告四、执行请求,查看聚合报告
原创
115阅读
0评论
0点赞
发布博客于 5 月前

IDEA中设置可运行的Boot程序入口

一、点击编辑选项二、添加新的boot入口三、编辑Main Class 选择启动类四、选择对应的模块,JDK,以及输入命名此时的引导类添加成功
原创
88阅读
0评论
1点赞
发布博客于 6 月前

Mycat全局序列生成以及Redis自增主键

一、创建MyCat全局序列函数以及表在已配好的数据节点DataNode上执行建表SQLCREATE TABLE MYCAT_SEQUENCE (NAME VARCHAR(50) NOT NULL,current_value INT NOTNULL,increment INT NOT NULL DEFAULT 100, PRIMARY KEY(NAME)) ENGINE=INNODB;在已配好的数据节点DataNode上创建以下函数DELIMITER $$CREATE FUNCTION myca
原创
87阅读
0评论
0点赞
发布博客于 6 月前

Quartz任务调度以及在Job类中无法Autowired其他类问题

一、Quartz概述Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.3.2。Quartz是一个完全由java编写的开源作业调度框架。不要让作业调度这个术语吓着你。尽管Quartz框架整合了许多额外功能, 但就其简易形式看,你会发现
原创
108阅读
0评论
1点赞
发布博客于 6 月前

SpringCloud-GateWay基于注解和配置文件方式配置跨域

基于注解的方式gateway依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>需要在网关服务中给容器注入一个Bean@Configurationpubli
原创
436阅读
0评论
1点赞
发布博客于 8 月前

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates

springboot项目启动报错查看项目是否有web依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>添加上依赖后可以正常运行...
原创
228阅读
0评论
2点赞
发布博客于 8 月前

HashMap的存储以及源码分析

HashMap的存储HashMap的存储结构示意图在JDK1.8以后,在执行HashMap的第一个put方法时会初始化一个长度为16的Node数组。而数组中又是保存了一个链表的地址,当某一个key经过hash算法得到其hashCode,再对数组的长度取模运算,就可以得到该键值对存放的下标位置。public class HashMapTest { public static void main(String[] args) { String str1 = "Hello";
原创
73阅读
0评论
1点赞
发布博客于 8 月前

IEDA集成gitee上传代码

创建gitee仓库可以为仓库添加成员创建一个maven项目在IDEA中点击File-settings-搜索git,设置本地的git创建一个本地的git库选中本项目即可此时的文件颜色已改变配置远程库的地址复制远程库地址在IEDA中设置将项目代码提交到本地库提交到远程库日志提示提交成功查看远程库...
原创
50阅读
0评论
2点赞
发布博客于 8 月前

Nuxt中的动态路由参数传值

在nuxt中,动态路由传值可以使用this.$route.params.xxx这个xxx在取参数值的时候要和文件名匹配,而且文件名要以_开头。效果:如果我们将文件名改成_id这次直接打印this.$route对象则参数名就成了id。...
原创
419阅读
0评论
1点赞
发布博客于 8 月前

JWT生成Token实现单点登录

一、单点登录概述单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。不同于传统的单体应用,所有业务都在一个应用中,在分布式服务中,会有很多独立的项目,而这些项目又是有联系的,如A项目为购物车模块,B项目为订单模块,当我在向购物车加入商品的时候需要登录,而当我查询订单的时候也需要登录,那单点登录就是如果我登陆了购物车应用或者订单应用其中之一,再登陆其他的应用时便不需要登录。如百
原创
609阅读
0评论
2点赞
发布博客于 8 月前

java.lang.IllegalStateException: PathVariable annotation was empty on param 0.

如果在微服务调用其他中,使用fegin接口调用,若使用了@PathVariable注解的话,一定要执行路径变量名!
原创
37阅读
0评论
1点赞
发布博客于 8 月前

线程的状态以及Callable接口的使用

一、线程的状态
原创
40阅读
0评论
1点赞
发布博客于 8 月前

SQL的慢查询日志使用详解

一、开启慢查询日志功能查看是否开启SHOW VARIABLES LIKE '%slow_query_log%';开启命令set global slow_query_log=1这种开启的方式只对当前数据库有效,如果mysql服务重启,则还是会失效。如何保证永久有效?需要在mysql的安装目录下找到mysql的配置文件,添加一下配置slow_query_log =1slow_query_log_file=/var/lib/mysql/sql-slow.log之后使用service m
原创
247阅读
0评论
1点赞
发布博客于 8 月前

数据库索引的创建以及索引的优化

什么是索引?在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中信息。当表中有大量记录时,若要对表进行查询,第一种
原创
142阅读
0评论
1点赞
发布博客于 8 月前

Explain查询SQL分析

Explain的使用介绍:使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。使用:explain sql语句字段id(1 id相同,则执行顺序为table自上而下执行,也就是t1,t2,t3(2 id不同,若包含了子查询,则id越大的,越先执行,这条sql中t1为最外面的,而t2,t3都是子查询,子查询的优先级越高。(3 id相同不同 ,首先还是按照优先级越高,id越大的越先执行,也就是先查
原创
843阅读
0评论
3点赞
发布博客于 8 月前

MySQL的7中JOIN用法详解

七种JOIN都是什么?向数据中插入测试数据 t_emp和t_deptCREATE TABLE `t_dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAULT NULL, `address` VARCHAR(40) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREAT
原创
216阅读
0评论
3点赞
发布博客于 8 月前

InnoDB和MyISAM两种数据库存储引擎的对比

存储引擎相关命令查看MySQL提供的所有存储引擎show engines;从上图我们可以查看出 MySQL 当前默认的存储引擎是InnoDB,并且在5.7版本所有的存储引擎中只有InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务。我们也可以通过下面的命令查看默认的存储引擎。show variables like '%storage_engine%';可以发现默认使用的为InnoDB存储引擎。查看表的存储引擎show table status like "table
原创
817阅读
0评论
3点赞
发布博客于 8 月前

使用Jsoup爬虫爬取相关图片

一、Jsoup概述jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。主要功能:1. 从一个URL,文件或字符串中解析HTML;2. 使用DOM或CSS选择器来查找、取出数据;3. 可操作HTML元素、属性、文本;二、jsoup爬取图片以 https://www.hellorf.com/image/search 网站为例,根据关键词爬取相关的图片。项
原创
202阅读
0评论
1点赞
发布博客于 8 月前

ElasticSearch7.6版本以上实现搜索关键字高亮

一、环境搭建1.启动ElasticSearch服务器(以7.7.0版为例)下载地址:https://www.elastic.co/cn/downloads/elasticsearch访问localhost:9200返回以上信息则表示服务启动成功。2.启动KibanaKibana 下载地址:https://www.elastic.co/cn/downloads/kibana访问: http://localhost:5601/app/kibana#/home?_g=(),kibana默认会自动连接
原创
956阅读
3评论
3点赞
发布博客于 8 月前

SpringBoot整合RabbitMQ

一、消息生产者环境搭建1.创建SpringBoot的消息生产者工程,引入依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
原创
87阅读
0评论
1点赞
发布博客于 8 月前

懒汉式单例设计详解

一、简单的懒汉式单例public class LazyType { private static LazyType lazyType; private LazyType(){ } public static LazyType getInstance(){ if (lazyType == null){ lazyType = new LazyType(); return lazyType;
原创
66阅读
0评论
1点赞
发布博客于 8 月前

RabbitMQ的三种exchange类型

一、Direct类型1.图解概述如图所示,该模式下生产者发送消息给broker中的交换机(一个broker中可以有多个exchange交换机,一个exchange可以绑定多个queue队列),交换机根据这条消息携带的routing-key(123)来分发到这个routing-key对应的队列(queue1),因为queue1这个队列绑定的routing-key也是123,那这时,监听queue1的consumer1这个消费者就拿到了‘“张三”’这条消息,也就是说消费者和routing-key是没有直接
原创
140阅读
0评论
1点赞
发布博客于 8 月前

SpringBoot集成Sharding-JDBC实现读写分离

一、数据库一主一从环境搭建1.首先打开服务管理器,找到mysql服务。右击属性查看mysql服务的磁盘位置找到D磁盘上的mysql文件夹,复制一份mysql-slave当做从机进入mysql-slave的data文件夹,修改my.ini文件修改四个地方,端口,slave服务的磁盘位置,以及slave服务的数据库的磁盘位置,按照datadir="C:/ProgramData/MySQL/MySQL Server 5.5 - slave/Data/"的路径在相应目录复制一份数据库。这样的话
原创
176阅读
0评论
3点赞
发布博客于 8 月前

SpringBoot集成Sharding-JDBC实现分库分表

一、环境搭建1.创建一个springboot项目,引入以下依赖。 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>
原创
426阅读
1评论
1点赞
发布博客于 8 月前