爱编程的Loren
一往无前,愈挫愈勇!
展开
-
Java实战课程
SpringBoot2核心功能、高并发与多线程网络编程、Lambda实战、23种设计模式、Java常用JDK命令/工具排查JVM、函数式编程原创 2024-12-23 21:17:01 · 623 阅读 · 0 评论 -
一,SpringBoot2基础入门
主要使用依赖 spring-boot-dependencies 管理了所有组件的依赖包,通过 maven的 dependencyManagement标签控制父依赖的所有依赖项,子依赖集成了父依赖,只需要指定依赖坐标的groupId和artifactId就可以按需加载所需要的依赖项,当有依赖冲突或者缺少某些功能依赖时,可以自行解决或者添加新依赖项。一般情况下,在引入父依赖之后,想要使用某个功能,只需要依赖对应的功能即可,无需指定版本(SpringBoot的自动版本仲裁机制)原创 2024-12-27 10:33:10 · 33 阅读 · 0 评论 -
二,SpringBoot2 常用注解
在 @Conditional 之前,也有一个注解 @Porfile 起到类似的作用,@ConditionalOnSingleCandidate:当指定的Bean在容器中只有一个,或者有多个但是指定了首选的Bean时,才会触发实例化。用于类上,表示该类为一个配置类,里面可以配置Bean等信息,配置的信息等同于Spring Xml方式,会在程序启动时候加载到Spring容器中。注:以上的注解本质上用法一样,都是将使用该注解的类注入到容器中由Spring统一管理,为了遵循MVC等规范,故对于不同层级分开使用。原创 2024-12-27 12:52:53 · 70 阅读 · 0 评论 -
三,SpringBoot2核心功能(1)
下载icon文件:https://icon-icons.com/zh/%E5%9B%BE%E6%A0%87/%E8%BF%BD%E9%80%90-%E8%AD%A6%E7%8A%AC%E5%B7%A1%E9%80%BB-%E7%8B%97%E7%8B%97%E5%B7%A1%E9%80%BB%E9%98%9F/263864。Jackson ObjectMapper类(com.fasterxml.jackson.databind.ObjectMapper)是使用Jackson解析JSON最简单的方法。原创 2024-12-27 13:02:59 · 31 阅读 · 0 评论 -
三,SpringBoot2核心功能(2)
官网地址:https://docs.spring.io/spring-boot/reference/web/servlet.html#web.servlet.spring-mvc.error-handling。如://在引入了thymeleaf依赖时,在resources目录下创建error目录,并在error目录下分别创建400.html、404.html、4xx.html、500.html、5xx.html。原创 2024-12-27 13:07:53 · 39 阅读 · 0 评论 -
三,SpringBoot2核心功能(3)
需要设置 Druid 的后台管理页面的属性,#连接池配置:https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8。连接池配置:https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8。原创 2024-12-27 13:30:51 · 27 阅读 · 0 评论 -
三,SpringBoot2核心功能(4)
BeforeAll:表示应在当前类中的所有@Test、@RepeatedTest、@ParameterizedTest和@TestFactory方法之前执行带注释的方法;@AfterEach:表示在当前类中的每个@Test、@RepeatedTest、@ParameterizedTest或@TestFactory方法之后,都应该执行带注释的方法;与JUnit 4的@Test注释不同,这个注释不声明任何属性,因为JUnit Jupiter中的测试扩展基于它们自己的专用注释进行操作。原创 2024-12-27 13:51:30 · 30 阅读 · 0 评论 -
三,SpringBoot2核心功能(5)
在每个目录下读取顺序为:application-[env].properties > application-[env].yml > application.properties > application.yml。在启动项目的时候指定外部的配置文件,同样需要在命令中添加参数:java -jar xxx.jar --spring.config.location=/xxx/application.yml。7,JAR包外部的application.properties或application.yml配置文件;原创 2024-12-27 13:55:56 · 29 阅读 · 0 评论 -
四,高并发与多线程网络编程(1)
3,如果构造线程对象时未传入ThreadGroup,Thread会默认获取父线程的ThreadGroup作为该线程的ThreadGroup,此时子线程和父线程将会在同一个threadGroup中。一般情况下,推荐使用 ThreadPoolExecutor 的方式进行线程池的创建,因为这种创建方式更可控,并且更加明确了线程池的运行规则,可以规避一些未知的风险。keepAliveTime:最大线程数可以存活的时间,当线程中没有任务执行时,最大线程就会销毁一部分,最终保持核心线程数量的线程。原创 2024-12-27 14:04:21 · 42 阅读 · 0 评论 -
四,高并发与多线程网络编程(2)
当前线程执行的时候,遇到了wait方法,就会释放锁,进入阻塞状态,这个线程就会被放到waitset存起来,其实这个waitset是不存在的一个数据结构,只是方便理解,有些人就提出了这么个概念。false为没启动过。说到这里,大家是不是想到了wait/notify了,是的,线程的挂起和唤醒功能可以直接使用wait/notify直接实现,但除非是这方面的熟手,不然总会因为忽略了一些技术细节而犯错,System.out.println("******* 不一致 ********:"+toString());原创 2024-12-27 14:21:26 · 53 阅读 · 0 评论 -
五,23种设计模式
备忘录模式:https://blog.youkuaiyun.com/beautifulmemory/article/details/141306675。原型模式:https://blog.youkuaiyun.com/piaomiao_/article/details/137995218。策略模式:https://blog.youkuaiyun.com/bookssea/article/details/117043820。享元模式:https://cloud.tencent.com/developer/article/2345229。原创 2024-12-27 14:27:02 · 49 阅读 · 0 评论 -
六,Java常用JDK命令/工具排查问题
waiting on xxx:通过synchronized关键字,成功获取到了对象的锁后,调用了wait方法,进入对象的等待区等待。在 “Entry Set”中等待的线程状态是 “Waiting for monitor entry”,而在 “Wait Set”中等待的线程状态是 “in Object.wait()”。方法名是给定类中的方法。否则则在进入区等待。waiting to lock xxx:通过synchronized关键字,没有获取到了对象的锁,线程在监视器的进入区等待。对象锁是可以线程重入的。原创 2024-12-27 14:30:41 · 72 阅读 · 0 评论 -
七,函数式编程
/`allMatch`:检查流中的所有元素是否都满足条件,全满足则返回 `true`,否则 `false`。//`allMatch`:检查流中的所有元素是否都满足条件,全满足则返回 `true`,否则 `false`。在大数据量下,为了减少拆箱装箱造成的性能损失,可使用 `mapToInt`、`mapToLong`、`mapToDouble` 替代通用的 `map` 方法。原创 2024-12-27 14:33:53 · 46 阅读 · 0 评论 -
版本升级之JDK21+pringBoot3.3.3+Grpc
打开 控制面板 -》 区域 -》 管理,点击 更改系统区域设置,勾选 Beta:使用Unicode UTF-8 提供全球语言支持,最后 重启电脑。1,setting -》 maven -》 runner 中VM Opetions: -Dfile.encoding=UTF-8。application.*.yml/properties/yaml 中发生变化。如 spring.redis.* -》 spring.data.redis.*2,修改系统默认编码,将 Windows 系统的默认编码改为 UTF-8。原创 2025-02-07 20:57:41 · 134 阅读 · 0 评论 -
SpringBoot3+Mybatis+druid多数据源
分别创建三个数据库 db1、db2、db3。原创 2025-02-13 20:45:35 · 81 阅读 · 0 评论 -
JSON与对象互转问题
大多数JSON库(jackson,hutool等)默认将枚举转换为字符串名称,(如Color.RED → "RED"),而非数值或自定义值。当对象中含有LocalDateTime类型进行与json互转时,会出现转换不成功情况,提示缺少jar包依赖。如此 进行序列化时,会自动将日期时间类型转换为指定格式的日期时间类型。这会导致在进行反序列化时,json字符串无法成功再转换回对象。2,对象中含有LocalDateTime类型。ObjectMapper注册时间类型。1,对象中含有枚举类型。原创 2025-02-19 19:52:48 · 30 阅读 · 0 评论