自定义博客皮肤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学习爱好者

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

原创 Kubernetes:Kubernetes应用包管理Helm

Chart:一个Helm包,其中包含运行一个应用所需要的工具和资源定义,还可能包含Kubernetes集群中的服务定义。可以理解为包含了一组定义Kubernetes 资源相关的YAML文件。Release:在Kubernetes集群上运行的一个Chart实例。在同一个集群上,一个Chart可以被安装多次。例如有一个MySQL Chart,如果想在服务器上运行两个MySQL数据库,就可以基于这个Chart安装两次。每次安装都会生成新的Release,会有独立的Release名称。

2024-04-01 18:38:33 765

原创 连接Redis不支持集群错误,ERR This instance has cluster support disabled,解决方案

1. 问题背景调整redis的配置后,启动程序时, 会报如下错误:[redis://172.16.0.8@xxx]: ERR This instance has cluster support disabled Suppressed: io.lettuce.core.RedisCommandExecutionException: ERR This instance has cluster support disabled at io.lettuce.core.internal.Exception

2024-03-30 19:31:05 1030

原创 Mysql求今天每个年级最早来学校的学生信息

解决方案,先联表查询,按时间排序后,再子查询,取最早时间的各个年级的学生信息。求今天每个班级最早来学校的学生信息。

2024-02-26 19:08:42 338

原创 MYSQL查询数据DATE_FORMAT() 函数时间格式问题

DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。语法date 参数是合法的日期。format 规定日期/时间的输出格式。格式描述%a缩写星期名%b缩写月名%c月,数值%D带有英文前缀的月中的天%d月的天,数值(00-31)%e月的天,数值(0-31)%f微秒%H小时 (00-23)%h小时 (01-12)%I小时 (01-12)%i分钟,数值(00-59)%j年的天 (001-366)%k小时 (0-23)%l。

2024-01-31 18:58:05 537

原创 SQL注入安全漏洞详解

表字典存在 SQL 注入漏洞,远程攻击者可利用该漏洞攻击系统数据库,获取敏感数据或者进行数据库违规操作。在开发项目过程中,可能会存在一些框架引入的安全问题,最好的方案就是按照官方的指引,升级最新的解决安全漏洞的版本。攻击者通过利用SQL注入漏洞,获取数据库的各种信息(如后台的账号密码),从而脱取数据库的内容(脱库);过滤关键词可能会有一些绕过的攻击方案,目前以上的过滤关键词没有绕过的方案。2.未对用户可控参数进行严格的过滤,便把参数内容拼接到SQL语句中。升级至3.6.1版本,不兼容的请自行调整。

2023-12-29 19:23:13 647

原创 高并发下数据库插入操作死锁问题

比如说本篇博客中的A表与B表可以校验两者的数据一致性,因为高并发会时时刷新数据,因此即使是死锁造成的短暂的数据不一致,在下一次刷新时,也会刷新为最新的数据。此场景在多线程批量同时对两张表进入插入操作,一张A表,一张B表,A表是原始数据表,B表是处理数据表,插入B表时,每批次插入数据量为50,产生死锁导致数据不一致问题。在一个事务中的 INSERT 按照主键或唯一键的顺序增序插入,即 session1 可以先插入 a=33 的记录,再插入 a=35 的记录,可一定程度避免受到 GAP 锁的影响。

2023-12-28 19:33:20 1323

原创 高并发情况下,数据库与缓存数据不一致问题

先读取这家店铺最新的定价策略,有缓存读缓存,无缓存读数据库,再通过计算生产商品的售价,同时会将这家店铺的定价策略存入缓存A中。原来定价策略缓存A被一家店铺的所有商品所共用,并发情况下,商品进行售价计算逻辑较复杂,因此耗时较高,在一个线程进入读取旧缓存定价策略后,管理端才编辑操作,删除了旧缓存,但是程序中的定价策略还是旧的,所以在计算完商品售价,再将旧的定价策略更新为定价策略存入缓存A中,由并发不断刷新,所以这个缓存一直不失效。同时会有新的批量读取缓存中的最新定价策略来更新缓存。

2023-12-24 20:26:52 116

原创 Linux服务器磁盘占用过高解决思路

1、是否有产生过大的日志文件,或者大文件中的log过大,导致磁盘占用过高;2、进入文件目录,通过du -sh 查看内存占用,可以发现占用较大的文件。3、查看服务器是否有进行DB数据备份,占用资源过多,可进行适当清理;1、可通过df -h 查询磁盘状态,发现占用过高的文件目录。5、应用生成的文件没有过期删除策略,导致文件一直堆积增长。2、查看磁盘占用情况,分析哪个目录中文件占比最大;如果存在,则可以使用通配符删除。4、是否有定时任务正在执行等。

2023-12-08 18:51:55 269

原创 Mysql内联接inner join以后数据条数比原数据表多

数据表A有500条数据,数据表B有600条数据,执行如下sql,预期500条结果但是执行结果有520条,

2023-12-04 19:00:45 589

原创 使用easyExcel框架报错:服务器缺少字体

后台服务使用easyExcel框架生成表格,但是生成的时候报如下的错误:这种报错其实就是部署服务的服务器缺少字体,正确的方法是安装字体。需要注意的是,测试环境服务器与生产环境服务器的在配置版本上可能存在差异,因此需要提前比对,避免测试环境测试成功的操作步骤,但是在生产环境上运行时有问题。

2023-11-30 21:34:36 702

原创 java.lang.reflect.InvocationTargetException:null报未知异常

查询网上此报错的原因,大多是jdk包不对,依赖不对等。但此次问题是表中数据做了大量的人工维护,导致某个字段的值为空,所以产生了此空指针异常,项目的框架问题,导致堆栈信息没有完整打印出哪一行代码出现空指针报错。此堆栈信息竟不同以往的报错,可以定位到项目的哪一行代码,只能看到是空指针异常,在经过日志中的SQL语句比对之后,初步确认到哪一行代码的空指针异常,但是此代码没有改动,究竟是什么原因导致的报错呢。

2023-08-25 18:34:12 3240 1

原创 MYSQL线上无锁添加索引

在需求上线过程中,经常会往一个数据量比较大的数据表中的字段加索引,一张几百万数据的表,加个索引往往要几分钟起步。如果Online DDL操作不支持对表的继续写入,则DDL操作失败,对表修改无效。LOCK=EXCLUSIVE:排它锁:Online DDL操作期间不允许对锁表进行任何操作。LOCK=DEFAULT:默认方式,MySQL自行判断使用哪种LOCK模式,尽量不锁表。LOCK=SHARED:共享锁:Online DDL操作期间堵塞写入,不影响读取。3.读取聚簇索引,构造新的索引项,排序并插。

2023-08-17 18:53:23 827

原创 MYSQL的IN查询效率慢的问题

当然在in的字段添加了索引的情况下,最终in走不走索引由mysql 优化执行器去判断,此底层逻辑较为复杂,但是在笔者的条件下,in的取值范围限制在10000条以内时,将走索引。

2023-07-09 21:00:41 2375

原创 iframe跨框架脚本攻击,安全问题解决办法

跨框架脚本(XFS)漏洞使攻击者能够在恶意页面的 HTMLiframe 标记内加载易受攻击的应用程序。攻击者可以使用此漏洞设计点击劫持攻击,以实施钓鱼式攻击、框架探查攻击、社会工程攻击或跨站点请求伪造攻击。个人理解就是其他网站会在他的iframe中调用我的网站内容,来截取他人的点击事件或者窃取他人敏感信息。

2023-06-02 22:16:37 951

原创 微服务调用feign.RetryableException超时问题

Feign 和 Ribbon 的超时时间只会有一个生效,规则:如果没有设置过 feign 超时,也就是等于默认值的时候,就会读取 ribbon 的配置,使用 ribbon 的超时时间和重试设置。feign的超时配置有很多,有feign自身的,也有ribbon相关的。超时主要有两类配置:一个是连接超时,一个是读取超时。这里有一个要注意的点就是如果只配置了连接超时或者读取超时其中一个是不会生效的,必须在配置文件中对这两类超时全部配置才会生效。在没有做特定配置的情况下,feign的默认超时时间是。

2023-05-31 23:31:04 5852

原创 超人自学手册:JUC并发编程

多线程进阶=》JUC并发编程java.util.concurrent工具包业务:普通的线程代码ThreadRunnable没有返回值、效率相比入Callable相对较低1. 线程与进程进程:一个程序。一个进程往往可以包含多个线程,至少包含一个java默认有几个线程?2个 main、GC线程:开启了一个程序,打字,自动保存(线程负责)对于java而言:Thread、Runnable、CallableJava可以开启线程吗?不能并发:多线程操作同一个资源CPU一核并行:多个人一起行走

2021-12-13 20:07:24 607 1

原创 浅析@ControllerAdvice 注解

大家在开发项目的过程中,经常会使用注解来定义Bean和自动注入等,可以说注解方便了我们的开发与代码编写。Annotation(注解)是JDK1.5及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以@注解名在代码中存在的。根据注解参数的个数,可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,可以在编译时选择代码里的注解是否只存在于 源代码级,

2021-09-25 19:07:18 349

原创 后端学习之数据库设计规范

话说,在一个大型项目中,后端工程将会有很多张数据表,这些表通过一些逻辑将数据组合起来,使项目的数据处理与运用更加合理与迅捷。好的数据库设计将会使整个架构清晰,数据模型完整,使用户查询信息更加迅速,用户体验更加友好。可以说,随着用户量的不断提升,数据库的性能是制约系统性能的一个重要的因素,因此,好的数据库设计是每个程序员都应该掌握的,团队内部形成一些规范将有助于开发工作的顺利进行,这其中包括数据库的设计规范以及数据库的操作规范。今天我们首先来聊聊数据库的设计规范。(1)数据表的字段设计中,字段尽量使用非空

2021-09-21 23:05:35 517

原创 后端学习之swagger

话说,在一个大型项目中,后端工程将会有很多接口,很多时候团队会花一些时间来形成一些文档来梳理这些接口,也会通过yapi来登记接口,但是后项目运营的后期优化过程中,接口的改动难以避免,并且在改动的过程中的梳理的文档和yapi有时候会忘记同步修改,隔一段时候团队就会让梳理一下现在的接口,你是否会因为梳理太多的接口而心生畏惧?所以这个时候我们需要一种新的工具来对后端项目中的这些这些接口进行一定的梳理。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总

2021-09-12 18:53:00 329

原创 synchronized和volatile的区别

synchronized和volatile的区别1.volatile本质:是java虚拟机(JVM)当前变量在工作内存中的值是不确定的,需要从主内存中读取;synchronized则是锁定当前的变量,只有当前线程可以访问到该变量,其他的线程将会被阻塞。2.volatile只能实现变量的修改可见性,并不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性。3.volatile只能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的。4.volatile不会造

2021-07-28 23:29:51 207

原创 超人自学手册:设计模式-23种设计模式

超人自学手册:设计模式-23种设计模式

2021-04-11 14:04:16 315

原创 超人自学手册:设计模式-七大原则

JAVA程序员必须知道的-设计模式-七大原则(单一职责原则、开闭原则、里氏替换原则、接口隔离原则、依赖倒置原则、合成复用原则、迪米特法则)单一职责原则就是一个模块、方法、类,不要承担过多的责任,高内聚低耦合的设计思想。开闭原则软件实体(模块、方法、类)应该“对扩展开放,对修改关闭”里氏替换原则子类对象能够替换父类对象出现的任何地方,并且保证原来程序的逻辑行为不被破坏接口隔离原则客户端不应该依赖倒置原则合成复用原则迪米特法则...

2021-03-14 16:25:41 94

原创 如何备份或复制数据库的整表数据?

最近一瓢在备份数据库中的一个表的数据的时候遇到了一个问题,就是用下面的sql语句进行备份的时候,只是备份了数据,但是索引等一些要素都没有了,那么该如何正确备份表中数据呢?//如果新表是不存在的create table new_table select * from old_table;1. 同一个库进行整表数据的备份//先新建表,来保证新建表的结构与原来的表是一样的。create table if not exits new_table like old_table;//从旧表中插入数据到新表

2021-01-27 09:19:47 1030

原创 向数据库中批量插入大量数据

1. addBatch(sql)Class.forName("com.mysql.jdbc.Driver");//指定连接类型Connection con = DriverManager.getConnection(url, username, password);PreparedStatement pst = con.prepareStatement("");for (int i = 0; i < 10; i++) { StringBuilder sql = new StringBu

2020-12-25 19:27:55 1700 1

原创 分割有空序列的方法-split与subString

分割有空序列的方法-split与subStringString str1 = "1,2,3,,,,7"String str2 = "1,2,3,,,,"对于以上两个字符串,如何将它们用“,”分割为数组呢?1. splitsplit(" “)与split(” “,-1)的区别1.如果字符串最后一位有值(如str1),则没有区别,2.如果最后n位都是切割符,split(” “)不会继续切分,split(” ", -1)会继续切分str1.split(",")//结果[1,2,3,,,,7]

2020-12-23 09:17:41 130

原创 数据库迁移

https://zhuanlan.zhihu.com/p/59693739https://www.cnblogs.com/aobing/p/13279852.html迁移失败:数据迁移失败怎么办数据丢失:怎么判断迁移后数据是否完整业务中断:迁移到一半遇到不可抗力怎么办数据、传输加密:数据传输过程中怎么加密,防止被不法之徒中途获取数据热切换:怎么做到不停服切换,以及数据源切换过程中的数据一致性...

2020-11-30 19:50:38 74

原创 LINUX西工大附中学习内参:问题解决--虚拟机的启动LINUX显示grub,需手动引导内核

在VMware虚拟机上安装了centOS 7,安装完之后出现grub,并没有正常开机,这种情况我查了很多,需要手动配置。我查了几个,但是都有一些问题,所以博主整合了一下。出现这个问题的原因是grub配置文件错误、损坏或丢失,需要执行以下步骤修复:罗列所有的磁盘区块:grub>ls出现(hd0),(hd0,msdos1),(hd0,msdos2)确定boot分区:ls (hd0,X)/boot/grub如果存在,则列出该文件夹里的所有文件,不存在则会报错。若boot为独立分区

2020-09-04 08:51:47 663

原创 MySQL黄冈学习内参:7.管理事务处理、全球化和本地化、安全管理、数据库备份、改善性能

7.1 管理事务处理事务处理可以用来维护数据库 的完整性,它保证成批的MySQL操作要么完全执行,要么完全 不执行。事务,指一组SQL语句回退,指撤销指定SQL语句的过程提交,指将未存储的SQL语句结果写入数据库表保留点,指事务处理中设置的临时占位符,可以 对它发布回退标识事务的开始START TRANSACTION使用ROLLBACK使用COMMIT在事务处理块中,提交 不会隐含地进行,为进行明确 的提交,使用COMMIT语句。使用保留点SAVEPOINT delete1;

2020-08-31 15:38:20 92

原创 MySQL黄冈学习内参:6.使用存储过程、使用游标、使用触发器

6.1 使用存储过程为以后的使用而保存的一条或金条 MySQL语句的集合CREATE PROCEDURE productpricing()BEGIN SELECT Avg(pro_price) AS priceaverage FROM productsEND;使用CALL productpricing();删除存储过程DROP PROCEDURE productpricing;DROP PROCEDURE productpricing IF EXISTS;使用参数6.2 使

2020-08-31 14:34:40 110

原创 MySQL黄冈学习内参:5.插入数据、更新和删除数据、创建和操纵表、使用视图

插入数据

2020-08-31 10:47:59 130

原创 MySQL黄冈学习内参:4.联结表、创建高级联结、组合查询、全文本搜索

4.1 联结表外键:外键为某个表中的一列,它包含另一个表的主键值,定义 了两个表之间的关系。内部联结 SELECT v_name, p_name, p_priceFROM ven INNER JOIN proON ven.id = pro_id;联结多个表4.2 创建高级联结使用不同类型的联结LEFT/RIGHT OUTER JOIN使用带聚集函数的联结4.3 组合查询UNION:自动去除重复的行包含或取消重复的行UNION ALL:不取消重复的行对组合查询结果排序在用UN

2020-08-30 23:59:57 91

原创 MySQL黄冈学习内参:3.创建计算字段、使用数据处理函数、汇总数据、分组数据、使用子查询

创建计算字段计算字段拼接字段SELECT语句 中可以使用Contact()函数来连接两个列。SELECT Contact(name, '(', country, ')')FROM vendorsORDER BY nameRtrim可以删除数据右侧多余的空格Ltrim左侧Trim删除两边的空格SELECT Contact(Rtrim(name), '(', Rtrim(country), ')')FROM vendorsORDER BY name使用别名SELECT Cont

2020-08-30 17:43:31 154

原创 MySQL黄冈学习内参:2.用通配符进行过滤、用正则表达式进行搜索

MySQL黄冈学习内参:1. 检索数据、排序检索数据、过滤数据、数据过滤

2020-08-29 10:51:14 99

原创 MySQL黄冈学习内参:1. 检索数据、排序检索数据、过滤数据、数据过滤

都是一些基础知识:1. 检索数据SELECT语句的返回表中的行,但是数据没有过滤(过滤将得出结果集中的一个子集),也没有排序。mysql命令行,必须加上分号来结束SQL语句。SQL语句不区分大小写,但是,为了易于阅读,关键字大写,列和表名用小写。LIMIT 1 总是从第一行开始,给出的数为返回的行数。LIMIT 1,1LIMIT:行0,检索出来的第一行为行0而不是行1LIMIT检索出第二行而不是第一行。2. 排序检索数据ORDER BY 子句取一个或多个列的名字,据此对输出进行排序。S

2020-08-28 23:43:52 109

原创 AOP学习

内容后面补充

2020-07-25 21:23:03 67

原创 redis学习

内容后面补充

2020-07-25 21:22:32 50

原创 Spring Cloud学习

内容后面补充

2020-07-25 21:21:28 75

原创 17 监控Spring Boot应用

本文是读《Spring Boot2精髓-从构建小系统到架构分布式大系统》的读书笔记。Java EE 规范中囱 JMX 来监控管理应用, Spring Boot 也提供了 Actuator 功能来完成类似的监控,通过 HTTP 、 JMX,甚至是远程脚本( SSH )来查看 Spring Boot 应用的配置、各种指标、健康程度等。17.1 安装Actuator17.2 HTTP跟踪Spring Boot 提供了 trace 跟踪功能,能查看最近的 HTTP 请求和响应,在浏览器输入:http:/

2020-06-25 13:03:09 115

原创 16 Spring Boot和ZooKeeper

本文是读《Spring Boot2精髓-从构建小系统到架构分布式大系统》的读书笔记。ZooKeeper 就是这样一款协调器。协调器本身也是分布式的,以保证协调器的高可用,所以也称为分布式协调器 。 分布式协调器是分布式系统和大数据系统必备的一个基础服务 。16.1 ZooKeeperZooKeeper (下面简称 zk )有以下特点:简单的 API 和数据结构完成协调服务, zk 提供了易于理解的数据结构来完成协调服务, 其 Java API 非常简单。 Curator进一步封装了这些 API ,

2020-06-25 11:13:45 294

原创 15 Spring Session

本文是读《Spring Boot2精髓-从构建小系统到架构分布式大系统》的读书笔记。Spring Boot 应用通常会部署在多个 Web 服务器上同时提供服务。单个应用者机不会停止服务,升级应用可以逐个升级而不必停止服务 。提高了应用整体的吞吐量 。我们称这种部署方式为水平扩展,前端通过 Nginx 提供反向代理 , 会话管理可以通过 SpringSession ,使用 Redis 来存放 Session 。 部署 Spring Boot 应用到任意 一 台 Web 服务器上 ,从而提高了系统

2020-06-23 20:54:23 179

空空如也

空空如也

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

TA关注的人

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