- 博客(31)
- 收藏
- 关注
原创 JAVA设计模式总结之23种设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
2023-10-05 18:14:35 132
原创 JVM调优参数设置步骤
设置JVM参数 或 系统属性,需要以 -D 或 -X 或 -XX 开头,每个参数使用空格隔开;的方式设置一个参数,每个参数需要以空格隔开;其实就是,系统环境变量之间要以;设置环境变量,多个以。
2023-09-23 11:46:11 526
原创 分布式锁问题以及解决方案(附带讲解视频)
随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题!
2023-09-21 21:59:34 244
原创 Mybatis的一对一和一对多的标签介绍
一对一”可以使用于一个订单对应一个用户,而“一对多”可以使用于一个用户对应多个订单。使用的基本方法都是基于sql的增删改查,也就是在xml文件里面使用下面几个标签:1、insert标签:在某个字段下插入一个值2、delete标签:删除某个id的数据3、select标签:根据某个id查询一个数据,也可以查询所有数据(这样返回一个list)、还可以进行模糊查询、多条件查询4、update标签:更新某个id的数据。
2023-09-20 10:00:00 704
原创 JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置
Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。
2023-09-19 11:53:32 4668
原创 贪心算法介绍
贪心算法是一种常用的算法思想,通过每一步的局部最优选择来达到全局最优解。它的应用范围广泛,并且在一些问题的解决中能够提供高效的解决方案。然而,我们也要注意贪心算法并不保证总是能得到最优解,因此在实际应用中需要谨慎使用。贪心算法是一种经典的解题思路,在实际应用中,很多问题可以用贪心算法求解。Java语言作为一种广泛应用的编程语言,也支持贪心算法的实现。为了能够更好的掌握贪心算法,我们需要不断学习和实践,并理解贪心算法的基本思想和应用场景,不断提高自己的算法和编程能力。
2023-09-19 10:00:00 234
原创 【JVM】为什么静态内部类实现单例模式是线程安全?
那么回到这个代码中,这里的静态变量的赋值操作进行编译之后实际上就是一个代码,当我们执行getInstance方法的时候,会导致SingleTonHolder类的加载,类加载的最后会执行类的初始化,但是即使在多线程情况下,这个类的初始化的代码也只会被执行一次,所以他只会有一个实例。(但是只有第一个获得锁的线程,会执行初始化,执行完之后会设置一个标志位,表示已经初始化完成,后面其他的线程再次获得锁,检查标志位,发现已经初始化完了,直接释放锁,不会再次执行初始化。
2023-09-18 18:22:01 356
原创 将文件上传到阿里云OSS详细步骤
2.创建Bucket,名字需要记住。1.没有账号的小伙伴先点击注册,根据手机号注册登录。1.在pom.xml文件中导入坐标。6.实现controller层代码。3.定义一个OSS的配置的实体类。2.在yml文件配置对应属性。3.创建AccessKey。4.定义一个OSS的配置类。一:先注册阿里云账号,创建好对象存储的空间。5.定义utils工具类。阿里云已经创建好了,接下来我们来实现代码。
2023-09-17 10:00:00 868 2
原创 双亲委派模型
加载某一个类,先委托上一级的加载器进行加载,如果上级加载器也有上级,则会继续向上委托,如果该类委托上级没有被加载,子加载器尝试加载该类。JDK 中的本地方法类一般由根加载器(Bootstrp loader)装载,JDK 中内部实现的扩展类一般由扩展加载器(ExtClassLoader )实现装载,而程序中的类文件则由系统加载器(AppClassLoader )实现装载。// 首先检查这个classsh是否已经加载过了Class
2023-09-16 17:05:57 127
原创 Neo4j和Cypher快速入门
Neo4j是用Java实现的开源NoSQL图数据库。从2003年开始开发,2007年正式发布第一版,其源码托管于GitHtb。Neo4j作为图数据库中的代表产品,已经在众多的行业项目中进行了应用,如:网络管理、软件分析、组织和项目管理、社交项目等方面。
2023-09-15 12:01:18 649
原创 MongoDB基本操作
databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引表连接,MongoDB不支持主键,MongoDB自动将_id字段设置为主键。
2023-09-14 18:00:49 222
原创 解决Mapper接口错误: 使用MyBatis Plus时未正确继承BaseMapper接口或添加@Mapper注解导致无法使用相关方法的探索与编程实践
MyBatis Plus作为一个流行的Java持久化框架,提供了方便的Mapper接口来简化数据库操作。然而,在使用Mapper接口过程中,偶尔会出现未正确继承BaseMapper接口或未添加@Mapper注解导致无法使用相关方法的问题。本篇文章将深入探索这一问题,并提供相应的解决方案与编程实践。
2023-09-13 10:57:24 1792
原创 Git仓库介绍
Git 是一种分布式版本控制系统,可以跟踪代码本身的变更,记录代码的历史记录并提供协作工具,可以让多个开发者在同一个项目上协作,并能够协调他们之间的工作。一个分支可以被认为是代码库的指向不同提交的指针,它允许在不影响主分支的情况下进行修改。代码库(Repository):Git 将相应项目存储在一个代码库(仓库)中。拉取(Pull):拉取是指将远程仓库中的最新代码拉取到本地计算机上,以保持最新的代码。推送(Push):推送是指将本地计算机中的代码推送到远程仓库中。将本地仓库中的更改推送到远程仓库中。
2023-09-12 09:54:35 354
原创 Java数据结构
1 数据结构 ->数据的存储结构2算法就是操作数据的方法 解决特定问题的一组指令3有数据无数据结构是无意义的 反之同理算法复杂度 嵌套相乘 分开则相加 常对幂指阶复杂度描述的是算法执行时间或占用内存空间随数据规模的增长关系i < n;return sum;假设每行代码的执行时间为timer 则总代码的执行时间为 (3n+3))timer所以时间复杂度为T(n)
2023-09-11 22:02:29 45
原创 orElse,orElseGet,orElseThrow的使用
这3个都是用来处理null的情况:orElse 用的是括号内的对象orElseGet 用的是Supplier接口返回的对象。supplier接口就一个get方法。无入参,出参要和Optional的对象同类型。orElseThrow 用的是Supplier接口返回的对象,这个对象必须要实现Throwable。supplier接口就一个get方法。无入参,出参要实现Throwable.
2023-09-11 14:57:45 1205
原创 JavaWeb--拦截器Interceptor和事务管理
什么是拦截器?有什么用?类似于过滤器,可以在访问资源之前做一些【统一处理】,比如登录校验。如何实现拦截器定义类实现HandlerInterceptor。
2023-09-09 21:34:56 136
原创 连接数据库报plugin caching_sha2_password could not be loaded解决方案
plugin caching_sha2_password could not be loaded报错,我们更换为旧版本。plugin caching_sha2_password could not be loaded报错。caching_sha2_password作为身份验证的插件,而旧版本使用的是。4.最后再次连接数据库,出现你喜欢看到的页面!3.修改root用户的身份验证插件。1.使用远程命令行登录mysql。因为MySQL新版默认使用。
2023-09-05 23:59:17 1981 2
原创 ElasticSearch索引库操作
索引库操作有哪些?创建索引库:PUT /索引库名查询索引库:GET /索引库名删除索引库:DELETE /索引库名添加字段:PUT /索引库名/_mapping文档操作有哪些?创建文档:POST /{索引库名}/_doc/文档id { json文档 }查询文档:GET /{索引库名}/_doc/文档id删除文档:DELETE /{索引库名}/_doc/文档id修改文档:全量修改:PUT /{索引库名}/_doc/文档id { json文档 }
2023-08-30 20:05:27 63 1
原创 报错:The POM for com.hmall:feign-api:jar:1.0 is missing, no dependency information available
模块之间依赖引入,出现依赖缺失的Bug。
2023-08-30 09:40:06 153 1
原创 编写nginx的配置文件教程
进入conf文件夹,右键点击nginx.conf编辑。进入复制的nginx文件夹,打开conf文件夹。先找一个可以启动的nginx文件,将其复制一份。进行编辑你需要监听的端口和访问的文件路径。
2023-08-30 00:11:14 153 1
原创 分布式事务-四种模式
Seata是 2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案。致力于提供高性能和简单易用的分布式事务服务,为用户打造一站式的分布式解决方案。,其中的文档、播客中提供了大量的使用说明、源码分析。
2023-08-29 20:47:46 409 1
原创 Redis高级篇-分布式缓存-Redis分片集群
主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:海量数据存储问题高并发写的问题使用分片集群可以解决上述问题,如图:分片集群特征:集群中有多个master,每个master保存不同数据每个master都可以有多个slave节点master之间通过ping监测彼此健康状态客户端请求可以访问集群任意节点,最终都会被转发到正确节点。
2023-08-28 15:31:46 107 1
原创 Redis高级篇-分布式缓存-Redis主从
单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。
2023-08-28 11:08:35 44 1
原创 Redis高级篇-分布式缓存-Redis持久化
因为是记录命令,AOF文件会比RDB文件大的多。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。save命令会导致主进程执行RDB,这个过程中其它所有命令都会被阻塞。这个命令执行后会开启独立进程完成RDB,主进程可以持续处理用户请求,不受影响。都是对num的操作,第二次会覆盖第一次的值,因此第一个命令记录下来没有意义。Redis停机时会执行一次save命令,实现RDB持久化。
2023-08-28 10:32:56 40 1
原创 服务异步通讯-高级篇-RabbitMQ的高级特性
如何确保RabbitMQ消息的可靠性?开启生产者确认机制,确保生产者的消息能到达队列开启持久化功能,确保消息未消费前在队列中不会丢失开启消费者确认机制为auto,由spring确认消息处理成功后完成ack开启消费者失败重试机制,并设置MessageRecoverer,多次重试失败后将消息投递到异常交换机,交由人工处理什么是死信?
2023-08-27 21:23:41 70
原创 服务异步通讯-实用篇-RabbitMQ基础
SpringAMQP提供了三个功能:自动声明队列、交换机及其绑定关系基于注解的监听器模式,异步接收消息封装了RabbitTemplate工具,用于发送消息。
2023-08-26 15:39:48 123
Java微服务基础篇一
2023-08-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人