第五季度
码龄4年
关注
提问 私信
  • 博客:62,256
    问答:7
    62,263
    总访问量
  • 43
    原创
  • 98,716
    排名
  • 606
    粉丝
  • 6
    铁粉
  • 学习成就

个人简介:想忽略生活的琐事,一直奔跑在知识的田野上。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖北省
  • 加入CSDN时间: 2020-11-22
博客简介:

第三季度的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    508
    当月
    0
个人成就
  • 获得559次点赞
  • 内容获得20次评论
  • 获得762次收藏
  • 代码片获得1,826次分享
创作历程
  • 6篇
    2024年
  • 37篇
    2023年
成就勋章
TA的专栏
  • 车间调度
    1篇
  • python
    2篇
  • 运筹学
    1篇
  • Java
    23篇
  • 深度学习
    9篇
  • 数字控制
    1篇
兴趣领域 设置
  • Java
    java
  • 数据结构与算法
    算法动态规划模拟退火算法广度优先深度优先图搜索算法近邻算法
  • 后端
    mysqlspringrabbitmqnode.jsspring boot爬虫后端restful架构分布式中间件gatewayribbonspring cloudsentinelhystrixlogback
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

342人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

node.js安装步骤

我的项目使用的版本是v14.13.0,到官网下载一下二进制压缩包。下载完成后,解压压缩包到自己想要的路径。然后进行环境变量设置。经过这两步以后,使用控制台就可以查看node的版本了。系统重装node.js,记录一下步骤。
原创
发布博客 2024.06.02 ·
284 阅读 ·
3 点赞 ·
0 评论 ·
1 收藏

简单的edge浏览器插件开发记录

今天在浏览某些网页的时候,我想要屏蔽掉某些信息或者修改网页中的文本的颜色、背景等等。于是在浏览器的控制台中直接输入JavaScript操作dom完成了我想要的功能。但是每次在网页之间跳转该功能都会消失,我需要反复复制粘贴js脚本,无法实现自动化。于是我开始了解如何自动让JavaScript脚本在特定的url下生效。经过查找信息,我得知了可以通过开发一个edge的小插件来解决我遇到的需求。edge插件的核心是mahifest文件。该文件中规定了插件的版本号、插件应用的网页,引入的html、js等文件。
原创
发布博客 2024.02.16 ·
1200 阅读 ·
8 点赞 ·
0 评论 ·
10 收藏

【Java】设计模式之顺序控制

如果有多个线程进行顺序打印,使用ReentrantLock的条件变量、await、sigal会能比synchronized获得更好的性能,因为synchronized每次都唤醒所有的线程。比如说有n个线程,让n个线程循环依次打印n个数字,这时候可以让ReentrantLock创建n个条件变量,每个线程对应一个条件变量。所以,想要按顺序执行,一开始让所有线程都停下来,接下来手动触发一个线程运行,并让这个线程只运行一次就结束或阻塞,并触发下一个线程运行,以此类推就能按顺序进行线程的执行。
原创
发布博客 2024.01.08 ·
543 阅读 ·
7 点赞 ·
0 评论 ·
10 收藏

【Java】设计模式之生产者/消费者

这个设计模式使用一个消息队列对生产者和消费者进行解耦。它与保护性暂停最大的区别就是它并不需要产生结果者与消费结果者一一对应,而是可以多对多。而且这个设计模式它传递消息会存在一定的延迟,而保护性暂停传递信息是十分及时的。消费者从消息队列中取消息,如果消息队列为空,消费者会进入阻塞状态;如果消息队列不为空,消费者会取出消息队列头的消息然后唤醒所有生产者。生产者将消息放入消息队列中直到消息队列满,这时候生产者会进入阻塞状态;如果消息队列不满,生产者将消息放入消息队列后会唤醒所有的消费者。
原创
发布博客 2024.01.08 ·
583 阅读 ·
13 点赞 ·
0 评论 ·
6 收藏

【Java】设计模式之保护性暂停

线程2也对保护对象加锁,当它执行完毕之后,将结果记录在保护对象的response之中然后执行notifyAll()方法唤醒线程1。线程1被唤醒,它就可以从保护对象的response属性中拿到线程2处理的结果。想要让一个线程等待另一个线程的执行结果,可以让这两个线程都关联上同一个 Guarded 0bject保护对象,让对象的管程的waitset来充当通知的桥梁,使用对象的wait()/notify()方法来进行通知。有一个结果需要从一个线程传递到另一个线程,传递只进行一次,用设计模式保护性暂停。
原创
发布博客 2024.01.07 ·
701 阅读 ·
15 点赞 ·
0 评论 ·
11 收藏

【Java】设计模式之两阶段终止

有一个场景:一个监控线程在监控计算机中的cpu使用情况、内存占用情况等信息。现在使用者不想要监控了,按下了停止按钮,如何让该线程终止?命名为两阶段终止,是因为代码中设置了两次打断。要设置第二次打断的原因是阻塞状态被打断会清空打断标志,需要重新设置一次打断才能终止线程。它的思想是,如何在一个线程T1中优雅地终止线程T2?这里的【优雅】指的是给T2一个料理后事的机会。是用来终止线程的套路。
原创
发布博客 2024.01.07 ·
648 阅读 ·
8 点赞 ·
0 评论 ·
8 收藏

【Java】JUC并发编程(重量锁、轻量锁、偏向锁)

预备:创建一个maven工程,导入lombok和logback的依赖。
原创
发布博客 2023.12.31 ·
1030 阅读 ·
18 点赞 ·
0 评论 ·
21 收藏

【后端】Docker学习笔记

Java项目可以通过docker进行部署,这就需要会使用docker制造一个镜像。镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。准备一个linux服务器安装jre并配置环境变量拷贝jar包运行jar包看似,镜像中只需要jre和jar包就足够了,但是Java程序需要jre中的jvm去执行,jvm是需要跟操作系统进行交互的,所以还需要准备好具体的操作系统环境。具体来说,是操作系统的系统函数。问题来了,需要用到哪些系统函数呢?
原创
发布博客 2023.12.31 ·
1572 阅读 ·
18 点赞 ·
1 评论 ·
27 收藏

【Java】lambda表达式和方法引用详解(jdk1.8新特性)

当匿名内部类的引用传递给接口类型或者抽象类类型,如果发现类型是函数式接口,那很明显匿名内部类重写的方法必定是函数式接口的唯一方法,因此,匿名内部类的写法可以得到简化。如果某个lambda表达式中,只有一个类调用了它的静态方法,并且传入静态方法的参数与lambda表达式的参数类型一致,那么可以使用方法引用进行简化。lambda表达式是对函数式接口的匿名内部类的简化,那lambda表达式之中创建的对象、调用的方法是否有机会进行简化呢?lambda表达式是用来简化函数式接口的匿名内部类的写法的。
原创
发布博客 2023.12.25 ·
1195 阅读 ·
21 点赞 ·
0 评论 ·
23 收藏

【Java】MybatisPlus

mybatis-plus
原创
发布博客 2023.12.25 ·
1650 阅读 ·
19 点赞 ·
3 评论 ·
18 收藏

【Java】springboot

只需要导入mybatis和mysql的依赖,然后在springboot的配置文件中编写数据源,然后为数据层接口添加注解@Mapper,接下来为接口中方法添加各种mybatis注解/编写sql映射文件,就可以调用接口中各种方法执行数据库查询操作了。一个是继承的依赖starter-parent,springboot最基础的依赖,springboot所有的东西都建立在其之上。另外,starter-web这个依赖中存在starter这个依赖,如果不添加start-web依赖,也必须要添加start依赖。
原创
发布博客 2023.12.24 ·
956 阅读 ·
17 点赞 ·
0 评论 ·
22 收藏

【Java】springmvc

然后在这个类中写方法拦截异常。注意:这个类要被springmvc的配置类加载到。然后要在这个类的方法中写一个注解:@ExceptonHandler,里边写上表现层抛出的异常类型,根据异常类型到这个方法中执行。
原创
发布博客 2023.12.24 ·
1005 阅读 ·
25 点赞 ·
0 评论 ·
17 收藏

【Java】spring

spring的核心作用就是管理bean。==只需要将实现类注解成bean就可以了接口不用注解成bean。==使用的时候只使用接口。因为spring会根据接口自动获取实现类注入接口。
原创
发布博客 2023.12.22 ·
2008 阅读 ·
43 点赞 ·
0 评论 ·
23 收藏

【Java】Mybatis

JavaEE三层框架:表现层、业务层、持久层。现在开始学习持久层。持久层就是负责与数据库打交道的代码。框架:就是一个半成品软件。在框架的基础上,可以更加高效地写出代码。
原创
发布博客 2023.12.22 ·
876 阅读 ·
18 点赞 ·
0 评论 ·
19 收藏

【Java】Maven

如果模块1是模块2、模块3、模块4的父模块,模块2、模块3共用一些依赖,提到父模块之中去;模块3、模块4共用一些依赖,也提到父模块之中去。把想要聚合的所有模块放入聚合模块之中,并且把这些模块写入聚合模块的pom文件之中(不是依赖引入,而是在。又出现了一个问题:多个模块中如果引入了大量相同的依赖,不仅增加了代码量,而且管理起来很麻烦(要改动某一个依赖的版本需要把所有相同依赖的版本都更新一遍),于是就有了继承的思想。所以,想要在一个模块中使用另一个模块中的内容,可以在模块的pom文件中导入被引用模块的坐标。
原创
发布博客 2023.12.21 ·
1077 阅读 ·
21 点赞 ·
0 评论 ·
18 收藏

【Java】MySql

查询数据库创建数据库CREATE DATABASE 数据库名称;-- 更好地创建数据库CREATE DATABASE IF NOT EXISTS 数据库名称;删除数据库DROP DATABASE 数据库名称;-- 更好地删除数据库DROP DATABASE IF EXISTS 数据库名称;使用数据库-- 查看当前正在使用的数据库-- 使用数据库USE 数据库名称;上边是DDL定义数据库,接下来是DDL定义表查询表-- 查询当前数据库下所有表。
原创
发布博客 2023.12.21 ·
960 阅读 ·
21 点赞 ·
0 评论 ·
20 收藏

【Java】反射

反射是一种非常强大的机制。反射跟注解配合,就天衣无缝了。动态语言和静态语言**动态语言:**是一类在运行时可以改变其结构的语言.例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。动态语言主要有JavaScript、python、c#等。**静态语言:**与动态语言相对应,运行时不能改变的语言称为静态语言。静态语言主要有C、C++、Java。
原创
发布博客 2023.12.20 ·
1143 阅读 ·
37 点赞 ·
0 评论 ·
19 收藏

【Java】注解

不是程序本身,但是可以对程序作出解释(这一点跟注释没有什么区别),但是注释没有功能,注解是有功能的可以被其他程序(编译器等)读取可以在package、class、method、field等上面使用注解,相当于给这些东西添加了额外的辅助信息,可以通过反射机制实现对注解的访问使用@Interface可以自定义注解。它会自动继承java.lang.Annotation接口。
原创
发布博客 2023.12.20 ·
902 阅读 ·
22 点赞 ·
0 评论 ·
19 收藏

【JVM】9.自动垃圾回收(垃圾回收器)

比如吞吐量99,说明用户执行时间占99%,垃圾回收的时间占1%)。(默认45%)),就会触发混合回收Mixed GC,回收年轻代中所有Region的垃圾对象和老年代中部分Region的垃圾对象以及老年代中Humongous区中的所有对象。HotSpot之中垃圾回收器分为年轻代和老年代,年轻代和老年代有着不同的垃圾回收算法实现,除了最特殊的G1垃圾回收器以外,其他垃圾回收器都必须两两配对使用(年轻代和老年代)。G1垃圾回收器可以说整合了jdk8之前的垃圾回收器的优点,jdk9之后强烈推荐使用G1垃圾回收器。
原创
发布博客 2023.12.17 ·
464 阅读 ·
15 点赞 ·
0 评论 ·
0 收藏

【JVM】8.自动垃圾回收(垃圾回收算法及原理)

(每次创建都在From中创建,要回收了,就把From中还有用的放到To,然后把From一窝端,互换From和To的名字。当整个新生代的空间都被使用时,先尝试Minor GC,把未达到年龄阈值但是最老的对象放入老年代,如果老年代空间也被占满了,会触发Full GC(尝试回收整个堆的对象,老年代中的对象会被清理)。注意:每次Minor GC会增加未被清理的对象的年龄,如果对象的年龄达到阈值(最大15,默认值和垃圾回收器有关),对象就会被晋升至老年代。没有最好的垃圾回收算法,只有最适合的垃圾回收算法。
原创
发布博客 2023.12.13 ·
363 阅读 ·
7 点赞 ·
0 评论 ·
0 收藏
加载更多