- 博客(162)
- 资源 (3)
- 收藏
- 关注
原创 docker安装Elasticsearch+Kibana+密码配置
一、安装elasticsearch1、拉取镜像docker pull elasticsearch:7.12.12、构建容器&运行docker run --name elasticsearch -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.12.13、修改配置1、进入容器&打开文件docker exec -it es bashcd configv
2022-02-09 17:54:19
2890
原创 面试高频详解:Redis 缓存击穿、雪崩、穿透
本文深入解析Redis三大缓存问题及解决方案:缓存穿透(查询不存在数据)、缓存击穿(热点key失效)和缓存雪崩(大量key同时过期)。针对缓存穿透,提出布隆过滤器、空值缓存和参数校验方案;对于缓存击穿,推荐互斥锁、逻辑过期和永不过期策略;针对缓存雪崩,建议随机过期时间、多级缓存和集群高可用架构。文章包含详细代码示例、面试高频问题解析及最佳实践总结,强调系统设计需权衡性能、一致性和复杂度,建立持续优化机制。通过防御性设计思维,帮助开发者构建更健壮可靠的系统架构。
2025-12-11 15:55:39
592
原创 数据库四大金刚面试高频对比:MySQL vs Oracle vs 达梦 vs PostgreSQL
摘要:本文对比了MySQL、Oracle、达梦和PostgreSQL四大数据库的核心差异。MySQL定位轻量级开源,适合互联网应用;Oracle作为商业数据库旗舰,主打企业级稳定安全;达梦专注国产化替代;PostgreSQL则以功能强大著称。技术层面比较了存储引擎、事务处理、高可用等核心机制,分析了SQL兼容性、分区表、扩展性等功能特性,并针对不同场景给出选型建议。文章还整理了面试高频问题及参考答案,帮助开发者掌握各数据库优劣,根据业务需求做出合理选择。(149字)
2025-12-08 16:12:29
785
原创 Spring Boot深度解析:从零开始构建企业级应用
Component@Data使用分层架构:controller → service → repositoryDTO隔离实体类,保证API稳定性统一异常处理机制合理的包划分和命名规范。
2025-12-01 12:16:55
383
原创 多线程编程全面解析:从基础概念到实战应用
本文系统介绍了Java多线程编程的核心技术,涵盖线程基础、实现方式、生命周期管理、同步机制、线程通信、线程池应用等关键内容。重点讲解了synchronized、ReentrantLock等线程同步技术,以及生产者-消费者模式的多种实现方式。文章还分析了死锁等常见问题及解决方案,并提供了性能优化实践和线程安全集合的使用建议。最后通过多线程下载器案例展示了实际应用。掌握这些技术能有效提升程序并发性能,但需注意同步问题的复杂性,建议优先使用高级并发工具类,合理控制锁范围,并充分测试多线程场景。
2025-10-16 10:30:01
453
原创 Axure RP 9 最新版授权码
官网下载地址:https://axure.cachefly.net/AxureRP-Setup.exe。Axure RP 9.0.0.3687 正式版(目前最新版)Axure RP 9.0.0.3686 正式版。Axure RP 9.0.0.3680可用秘钥。Axure RP 9 最新版授权码。
2025-09-09 14:21:50
1628
1
原创 ConcurrentModificationException:检测到并发修改完美解决方法
ConcurrentModificationException是Java中的一种运行时异常,位于java.util包中。当你在遍历集合(如List、Set、Map)时,如果在遍历的同时对集合进行修改(例如,添加或删除元素),就会抛出这个异常。
2025-03-13 14:58:20
787
原创 (新手入门篇)2024年10 月 Java JDK 1.8版本WIN 10 系统安装教程!!!!!!!
IDEA的安装是Java课程的入门,对于刚入门的小白来说,安装jdk是必不可少的一个环节,当然,很多的老同学进入新公司装环境也是不可或缺的,本人也是经常会碰到类似的场景,为避免后续忘记,选择记录下来以便后续查找!按照以下步骤一步步走,保证不会出错!!!你需要了解的:JDK 是 Java Development ToolKit 的简称,也就是 Java 开发工具包。JDK 是整个 Java 的核心,包括 Java 运行环境(Java Runtime Envirnment,简称 JRE),Java 工具(比如
2024-10-19 06:50:37
986
1
原创 IDEA乱码问题解决
打开Editor>File Encodings,将Global Encoding、Project Encoding、Default encodeing for properties files、Encoding 这四项都设置成UTF-8,点击OK或者Apply。修改当前 Web 项目 Tomcat Server 的虚拟机,在VM options: 添加"用记事本打开这两个文件分别在这两个文件末尾加上"找到存放IDEA的本地安装目录,找到bin目录,修改完并重启Tomcat。",最后重启idea即可。
2022-11-10 16:47:55
2392
原创 Java String类 常用 API 总结及Demo
下面是 String 类支持的方法,更多详细,参看Java String API文档:SN(序号) 方法描述1 char charAt(int index)返回指定索引处的 char 值。2 int compareTo(Object o)把这个字符串和另一个对象比较。3 int compareTo(String anotherString)按字典顺序比较两个字符串。4 int compareToIgnoreCase(String str)按字典顺序比较两个字符串,不考虑大小写。.....
2022-07-27 16:37:40
562
转载 postgresql数据库“invalid byte sequence for encoding “UTF8“: 0x00”事件的经验教训
虽然已知道用replaceAll('\u0000','')可解决问题,但由于要插入多张表、每个表含多个varchar字段、插入操作由JPA实现、插入操作要批量进行等因素,程序日志内容太笼统,为判断是哪个(或哪些)表、字段造成的、以及是代码原因还是数据原因提供的帮助很少,因而过程中麻烦多多困难重重,现在将其中的经验与教训总结出来,希望对同行们有所帮助。因为浏览器、某些图形化工具在处理含有'\0'的字符串时会自动截断'\0'后面的内容,依旧无法确定是表里的哪个字段。至此,这次折磨人多日的事件终于得到解决。...
2022-07-27 16:09:12
8957
原创 算法题(三):明明的随机数
明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。数据范围: 1≤n≤1000,输入的数字大小满足1≤val≤500输入描述:第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。...
2022-07-26 23:29:54
493
2
原创 计算某字符出现次数
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)数据范围1≤n≤1000。
2022-07-26 23:19:53
248
1
原创 List集合删除元素方式:避免java.util.ConcurrentModificationException异常
方式一,使用Iterator,顺序向下,如果找到元素,则使用remove方法进行移除。方式二,倒序遍历List,如果找到元素,则使用remove方法进行移除。方式三,正序遍历List,如果找到元素,则使用remove方法进行移除,然后进行索引“自减”。方式四,使用jdk1.8新增的Stream流操作。...
2022-07-22 16:36:39
2149
原创 ibatis.binding.BindingException: Invalid bound statement (not found): com.suntang.storage.mapper.Per
即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。分析一下该错误出现原因invalidboundstatement(notfound),这个报错算是经常遇到的错误了,问题的本质就是。究其根本还是因为xml的路径不正确,所以大家开发的时候一定要细心一点,也不要盲目的去找问题原因,要分析问题,所以最后问题解决啦!),就是自己平时在建文件夹的时候如下图这样建,导致生成的文件路径为。就是这个文件路径导致的(......
2022-07-20 20:13:32
1217
5
原创 HttpMessageNotReadableException: JSON parse error: Unexpected character (‘“‘ (code 34)): was expecti
nestedexceptioniscom.fasterxml.jackson.core.JsonParseExceptionUnexpectedcharacter('"'(code34))wasexpectingcommatoseparateObjectentriesat[Source(PushbackInputStream);line3,column6]]解决方案原因是json格式不正确,id后没加“,”,添加“,”就行。......
2022-07-16 16:46:26
2920
3
原创 输入任意一种物质,要求输出其每种元素的数量。比如输入 CaCO3,其组成分别为 Ca:1,C:1,O:3,输出 Ca1C1O3
代码】输入任意一种物质,要求输出其每种元素的数量。比如输入CaCO3,其组成分别为Ca1,C1,O3,输出Ca1C1O3,输入Fe2(SO4)3,其组成分别为Fe2,S3,O12,
2022-07-14 21:39:57
4908
原创 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception 很详细!!!
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.suntang.common.exception.RRException: 用户账号已被占用] with root cause 首先验证一下三种情况是否都满足:我这里已经验证过以上三种情况了问题分析:postman报错首先手
2022-07-14 11:48:40
69752
2
原创 springboot整合knife4j,从此告别手写接口文档
Knife4j的前身是swagger-bootstrap-ui,前身swagger-bootstrap-ui是一个纯swagger-ui的ui皮肤项目一开始项目初衷是为了写一个增强版本的swagger的前端ui,但是随着项目的发展,面对越来越多的个性化需求,不得不编写后端Java代码以满足新的需求,在swagger-bootstrap-ui的1.8.5~1.9.6版本之间,采用的是后端Java代码和Ui都混合在一个Jar包里面的方式提供给开发者使用.这种方式虽说对于集成swagger来说很方便,只需要引入j
2022-06-28 23:28:17
9347
5
原创 错误: 找不到或无法加载主类 com.aaa.server.PoliceServerApplication
先清缓存,重启idea,重新编译,不行的话看上图有没有飘红我的是启动类飘红了,把启动类删掉重新建个启动类就解决了
2022-06-09 18:18:44
545
原创 Docker中安装使用Nginx并安装SSL证书
一、安装部署Nginx1.在DockerHub中搜索Nginx的镜像docker search nginx #如果不是root用户,请自行在所有命令前面加上sodu2.拉取最新版本的官方nginx镜像#如果不写TAG号,会自动追加:latest获取最新版本的docker pull nginx或者docker pull nginx:指定版本号3.创建运行nginx容器docker run --name nginx -d -p 80:80 nginx4.关联数据卷...
2022-04-09 20:34:32
1564
原创 Docker容器常见故障排查解决方案总结
Docker是一种相对使用较简单的容器,我们可以通过以下几种方式获取信息:1、通过docker run执行命令,或许返回信息2、通过docker logs 去获取日志,做有针对性的筛选3、通过systemctl status docker查看docker服务状态4、通过journalctl -u docker.service 查看日志以下是整理的docker容器类问题故障,分为9个类一、启动类故障1、docker: Cannot connect to the Docker daemon
2022-04-07 17:34:31
14920
10
原创 Java基础学习系列--(二)static关键字概述
2.1 概述以前我们定义过如下类:publicclassStudent {// 成员变量public String name;publicchar sex;// '男' '女'publicint age;// 无参数构造器publicStudent() { }// 有参数构造器publicStudent(String a) { }}我们已经知道面向对象中,存在类...
2022-03-29 22:30:46
301
原创 Mybatis-Plus学习---(四)CRUD接口的使用学习
说明:通用 Service CRUD 封装IService接口,进一步封装 CRUD 采用get 查询单行remove 删除list 查询集合page 分页前缀命名方式区分Mapper层避免混淆, 泛型T为任意实体对象 建议如果存在自定义通用 Service 方法的可能,请创建自己的IBaseService继承Mybatis-Plus提供的基类 对象Wrapper为条件构造器#Save// 插入一条记录(选择字段,策略插入)boolean save(...
2022-03-29 16:36:23
2461
原创 Mybatis-Plus学习---(五)灵活使用wapper条件构造器
条件构造器说明:以下出现的第一个入参boolean condition表示该条件是否加入最后生成的sql中,例如:query.like(StringUtils.isNotBlank(name), Entity::getName, name) .eq(age!=null && age >= 0, Entity::getAge, age) 以下代码块内的多个方法均为从上往下补全个别boolean类型的入参,默认为true 以下出现的泛型Param均为Wrapper的子类实例.
2022-03-29 16:02:01
1084
原创 Mybatis-Plus学习---(三)MybatisPlus相关注解详细介绍
MP注解@TableName描述:表名注解,标识实体类对应的表 使用位置:实体类@TableName("sys_user")public class User { private Long id; private String name; private Integer age; private String email;}属性 类型 必须指定 默认值 描述 value String 否 "" .
2022-03-29 14:53:13
773
原创 Mybatis-Plus学习---(二)MybatisPlus使用入门简单案例
通过一个简单的 Demo 入门 MyBatis-Plus使用Mybatis-plus前提条件:拥有 Java 开发环境以及相应 IDE 熟悉 Spring Boot 熟悉 Maven现有一张User表,其表结构如下:id name age email 1 Jone 18 test1@baomidou.com 2 Jack 20 test2@baomidou.com 3 Tom 28 test3@baom..
2022-03-29 12:39:18
1059
原创 Mybatis-Plus学习---(一)简介介绍
简介MyBatis-Plus(opens new window)(简称 MP)是一个MyBatis(opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作...
2022-03-29 11:11:23
190
转载 JVM参数调优说明及参考配置
JVM参数调优是个很头痛的问题,设置的不好,JVM不断执行FullGC,导致整个系统变得很慢,网站停滞时间能达10秒以上,这种情况如果没隔几分钟就来一次,自己都受不了。这种停滞在测试的时候看不出来,只有网站pv达到数十万/天的时候问题就暴露出来了。要想配置好JVM参数,需要对年轻代、年老代、救助空间和永久代有一定了解,还要了解jvm内存管理逻辑,最终还要根据自己的应用来做调整。关于JVM参数上网一搜就能搜出一大把,也有很多提供实践的例子,我也按照各种例子测试过,最终还是会出现问题。经过几个月的实践改.
2022-03-28 15:52:03
507
原创 Java基础学习系列--彻底搞懂Java中抽象类(abstract)的概念
抽象类的概述引入: 父类知道子类一定要完成某个功能,但是每个子类实现的情况都不一样而且子类都会用自己的功能了,父类的该功能就可以定义成抽象的方法。拥有抽象方法的类必须定义成抽象类。什么是抽象方法?没有方法体,只有方法签名,必须用abstract修饰的方法就是抽象方法。什么是抽象类?拥有抽象方法的类必须定义成抽象类。抽象类必须用abstract关键字修饰。public class AbstractDemo { public static void main(String[]
2022-03-28 07:45:00
580
原创 Java基础学习系列--彻底搞懂java枚举enum的用法
枚举的概述和作用枚举是Java中的一种特殊类型。枚举的作用:是为了做信息的标志和信息的分类。常量做信息分类和信息标志:虽然可以实现可读性,但是入参不受限制!!!Java建议做信息标志和信息分类应该使用枚举实现:最优雅的方式。可以实现可读性,而且入参受限制,不能乱输入!!!定义枚举的格式:修饰符 enum 枚举名称{ 第一行都是罗列枚举实例的名称。}枚举类的编译以后源代码: public final class Season extends java.la
2022-03-28 07:30:00
741
原创 Java进阶学习---单例模式(面试重点,常考)
什么是单例?单例的意思是一个类永远只存在一个对象,不能创建多个对象。单例模式,是一种常用的软件设计模式。通过单例模式可以保证系统中, 应用该模式的这个类永远只有一个实例。即一个类永远只有一个对象实例。为什么要用单例?在实际开发中,有很多业务对象永远只需要一个,无论启动多少次 我们只需要一个对象,例如任务管理对象,只需要一个对象。节约内存和性能。 因为对象越多内存占用越大,极有可能出现内存溢出!如何实现单例?(一共八种)其中基础的有两种(单线程)这里介绍两种方
2022-03-28 07:00:00
299
原创 DTO,PO,BO,VO和POJO的区别
PO:persistent object 持久对象1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。2 .在hibernate持久化框架中与insert/delet操作密切相关。3 .PO中不应该包含任何对数据库的操作。POJO :plain ordinary java object 无规则简单java对象一个中间对象,可以转化为PO、DTO、VO。1 .POJO持久化之后==〉PO(在运行期,由Hibernate中的cg..
2022-03-27 22:45:27
516
原创 Java基础学习系列--(八)彻底搞懂java多线程概念【线程状态、volatile关键字、原子性、并发包、死锁、线程池】
第一章 线程状态1.1 线程状态概述线程由生到死的完整过程:当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,有几种状态呢?在API中java.lang.Thread.State这个枚举中给出了六种线程状态:这里先列出各个线程状态发生的条件,下面将会对每种状态进行详细解析线程状态导致状态发生条件NEW(新建)线程刚被创建,但是并未启动。还没调用start方法。MyThread t = new MyThread只有线程对象,没有
2022-03-27 21:31:03
354
原创 Java基础学习系列--(七)彻底搞懂java中的【异常、线程】的使用
第一章 异常1.1 异常概念异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.1.2 异常体系异常机制其实
2022-03-27 21:06:07
195
原创 Java基础学习系列--(六)【Map集合,HashMapTreeMap,斗地主、图书管理系统,排序算法】
day06【Map】第一章 Map集合1.1 概述现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。M
2022-03-27 20:50:30
993
原创 Java基础学习系列--(五)【迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类】
第一章 Iterator迭代器1.1 Iterator接口在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator。想要遍历Collection集合,那么就要获取该集合迭代器完成迭代操作,下面介绍一下获取迭代器的方法:public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素的。下面介绍一下迭代的概念:迭代:即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素
2022-03-27 20:21:48
258
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅