- 博客(106)
- 资源 (2)
- 收藏
- 关注
原创 SSO单点登录
单点登录(简称 SSO)是一种用户鉴权过程,允许用户在多个应用系统中使用单一的登录凭证(通常是用户名和密码)进行访问。它的基本原理是创建一种中央鉴权机制,用户登录一次后,无需在其他系统中再次进行身份验证即可访问这些系统的资源。
2025-03-15 19:08:52
939
原创 【Http和Https区别】
HTTP(超文本传输协议)就像没有封口的快递信封明文传输:快递单内容谁都能看(数据不加密)快速送货:不检查快递员身份(无身份验证)门牌号80:默认送到80号仓库(端口80)HTTPS = HTTP + 防弹玻璃(SSL/TLS加密)加密快递单:用密码书写内容(数据加密)身份检查:核对快递公司执照(CA证书)专用通道443:走VIP运输通道(端口443)HTTP是Web通信的基础协议,但因其不安全性,已逐渐被HTTPS取代。
2025-02-22 21:12:15
1669
原创 idea日志管理的插件-Grep Console
Grep Console 插件是一款功能强大的 IDE 插件,它为开发者提供了方便的日志过滤和高亮显示工具,能够帮助开发者更有效地处理大量的日志输出。希望通过这篇文章可以帮助到各位看官老爷们,节约时间和精力,提升工作的效率以及心情的愉悦度。
2025-02-07 09:37:15
561
原创 Springboot自动装配原理
Spring Boot 的自动装配机制大大简化了应用配置的工作,它通过条件注解和大量的默认配置,帮助开发者自动配置常见的功能(如数据源、Web 服务器等)。通过理解自动装配的原理,开发者可以更加灵活地定制自己的应用配置,同时也可以在需要时禁用某些自动装配功能。
2025-01-05 13:06:50
721
原创 踩坑之服务器时间和本地时间相差8小时
这个问题可能与服务器的时区设置有关。通常在服务器中,如果时区设置与前端应用使用的时区不一致,会导致时间显示错误,例如时差 8 小时问题,需要检查数据库的时区格式,服务器的时区,以及后台代码返回的格式数据。
2024-12-31 09:25:43
1022
原创 Java21 虚拟线程
虚拟线程与Go语言中的协程类似,使得编写高并发、高吞吐量的应用程序变得更加简单和高效,尤其在处理I/O密集型任务时,能够显著提升系统的并发能力。打个比喻,创建线程就是招人,线程池就是我们招进来的人,多线程就是多个人在一个工厂一个人看一台机器,线程池相当于一个工人可以同时看多个机器,密集io相当于需要工人介入时间较少的机器,密集计算相当于工人介入较长时间的机器。虚拟线程的引入确实极大的降低创建和管理线程的开销,使用并发编程更高效便捷,但并不意味着多线程或线程弛就变得。来创建和管理虚拟线程。
2024-12-15 14:41:00
1353
原创 使用go语言进行端口扫描
端口扫描的核心原理是基于 TCP 协议的三次握手过程。当你尝试连接一个端口时,操作系统会通过 TCP 三次握手来建立连接。如果目标端口响应了握手请求(即返回 SYN-ACK 响应),则可以认为该端口是开放的;如果没有响应,或者连接超时,则认为端口是关闭的。GO语言和Python语言都是写脚本的最佳选择,这里使用了go语言简单的写了一个端口扫描脚本。
2024-11-23 13:29:09
553
原创 docker搭建私有的仓库
我们可以自己手动的在我们的服务器上进行搭建私有的仓库。Docker Registry,在企业中自己的镜像最好是采用私有Docker Registry来实现。
2024-11-23 13:13:25
3027
1
原创 前端用docker部署
我们的前端项目是利用nginx启动的,所以我们先将前端这个项目打包成dist文件,上传到服务器,然后编写dockerfile以及nginx配置文件,将dist文件和nginx配置文件copy到容器内部。使用Docker部署若依项目的前端服务,我们最终实现的是:启动一个镜像,我们的整个前端就启动了,想要修改nginx配置,直接挂载下目录修改即可。注意:如果使用的是docker部署的nginx ,应该先把nginx 进行关闭!如果我们不用docker部署,我们会怎样部署前端项目呢?
2024-11-04 10:55:36
808
原创 设计模式之装饰器模式
装饰模式就是将其实现的功能拆分成一个个装饰器类,然后这些装饰器类实现功能并组装起来达成预期功能,还可以在不知不觉中增加其他装饰器增加新功能,而被装饰类是无感知的
2024-11-03 20:53:07
1179
原创 @Autowired和@Resource和getBean()区别
今天遇到一个对我来说很奇葩的错误,我想在Service中注入bean,我这里使用了@Autowired和@Resource都不能注入,导致初始化失败,使用了getBean()方法就可以注入。从来没有遇到过这个问题。后来我查询了一下,才明白了原理。
2024-10-26 14:20:47
1021
1
原创 Springboot加载机制
Spring Boot 的加载机制通过自动装配、启动类、外部化配置、内嵌容器和启动过程等多个方面来确保应用程序的快速启动和运行。
2024-07-16 09:27:11
751
1
原创 Java中什么是fail-fast和fail-safe?
在Java中,fail-fast和fail-safe是两种不同的迭代器行为,特别是在遍历集合时遇到并发修改的情况。
2024-06-27 08:40:20
437
原创 本地部署AI模型-phi3
Ollama也是一个开源的大型语言模型服务,提供了类似OpenAI的API接口和聊天界面,可以非常方便地部署最新版本的GPT模型并通过接口使用。它支持热加载模型文件,无需重新启动即可切换不同的模型。3、适用于资源有限的环境: 由于它的规模较小,Phi-3-mini 在资源有限的环境(如移动设备或嵌入式系统)中运行效率更高,能够提供良好的性能和体验。2、更快的响应速度: 尽管 Phi-3-mini 比较 Phi-3.5 更小,但它的推理速度更快,这意味着可以更快地对输入进行响应,减少用户等待时间。
2024-06-19 13:36:58
1032
原创 阿里云物联网平台案例教程
物联网(简称IOT)把任何物体与物联网相连接,进行消息的交换和通信,实现对物品的智能化识别。简单说是:物联网就是把所有的物体连接起来相互作用,形成一个互联互通的网络,这就是物联网。如果说互联网是我们身体的虚拟大脑,那么物联网就是我们身体的感知系统,就像眼睛和耳朵一样,让我们能够感知外部事物。物联网包括感知、网络和应用三个方面。感知是数据的获取,包括听觉(语音识别)、视觉(摄像头、人脸识别)、感觉(气体、烟雾、红外传感器)、运动(振动、加速度传感器)等识别感知系统和芯片;
2024-06-12 11:27:16
2901
1
原创 springboot连接多个库
一个SpringBoot项目,同时连接两个数据库:比如一个是Mysql数据库,一个是oracle数据库(啥数据库都一样,连接两个同为oracle的数据库,或两个不同的数据库,只需要更改对应的driver-class-name和jdbc-url等即可)注意:连接什么数据库,要引入对应数据库的包。
2024-06-11 15:51:42
3648
3
原创 什么情况下数据库事务会失效?
在Java中,数据库事务失效通常指的是事务无法保证其ACID特性,即原子性、一致性、隔离性和持久性。如果一个方法内部通过this调用另一个事务方法,而不是通过代理对象调用,事务将不会生效。如果业务方法中的异常被捕获但没有抛出,Spring无法感知到异常,因此不会进行事务回滚。Spring通过事务管理器来管理事务,如果未为数据源配置事务管理器,事务将无法生效。如果抛出的异常不在回滚范围内,事务将不会回滚。在事务方法中使用合适的异常处理策略,避免异常被吞掉。在设计和实现业务逻辑时,考虑事务的边界和一致性需求。
2024-05-27 11:11:51
446
原创 为什么 Spring 和 IDEA 都不推荐使用 @Autowired 注解??
大家在使用IDEA开发的时候有没有注意到过一个提示,在字段上使用Spring的依赖注入注解@Autowired后会出现如下警告:(本人强迫证,一直用@Resource)但是使用@Resource却不会出现此提示。网上文章大部分都是介绍两者的区别,没有提到为什么,总结一下。
2024-05-21 15:48:08
632
1
原创 Spring Boot + MinIO 实现文件上传
文件切片上传是指将大文件分割成小的片段,然后通过多个请求并行上传这些片段,最终在服务器端将这些片段合并还原为完整的文件。这种方式有助于规避一些上传过程中的问题,如网络不稳定、上传中断等,并能提高上传速度。通过本文,我们深入了解了如何使用Spring Boot和MinIO实现文件切片上传技术。通过文件切片上传,我们能够提高文件上传的速度,优化用户体验。在实际应用中,我们可以根据需求进行性能优化和功能拓展,使得文件上传系统更加强大和可靠。
2024-05-17 16:07:54
1410
原创 Disruptor实现一秒 600 万订单无压力
Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于 Disruptor 开发的系统单线程能支撑每秒 600 万订单,2010 年在 QCon 演讲后,获得了业界关注。其实 生成者 -> 消费者 模式是很常见的,通过一些消息队列也可以轻松做到上述的效果。不同的地方在于,Disruptor 是在内存中以队列的方式去实现的,而且是无锁的。这也是 Disruptor 为什么高效的原因。
2024-04-28 10:16:05
710
原创 Java设计模式-原型模式
原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而无需通过标准构造函数来创建。在原型模式中,新对象的创建是通过克隆现有对象而实现的,因此它是基于原型对象的复制而创建新对象的。
2024-04-22 11:37:29
601
原创 深拷贝和浅拷贝的区别
在Java中,深拷贝(Deep Copy)是指创建一个新对象,并将原始对象中的所有字段及其引用的对象都复制一份到新对象中,即使这些引用的对象也会被复制,而不是简单地复制引用。这意味着原始对象及其所有嵌套对象的状态在内存中存在两个独立的拷贝,彼此之间互不影响。
2024-04-19 15:02:54
532
原创 Java安全管理器-SecurityManager
SecurityManager是Java中的一个类,用于实现安全管理功能。它允许应用程序在运行时对安全策略进行动态管理,并控制哪些操作可以执行,哪些应该被拒绝。主要功能包括:安全策略管理:SecurityManager允许定义一组安全策略,这些策略规定了在运行时哪些操作是允许的,哪些是禁止的。权限控制:通过SecurityManager可以控制对敏感资源的访问权限,比如文件系统、网络等。
2024-04-11 16:09:46
3123
原创 Flux 和 Mono区别:并发并行同步异步区别
Flux代表一个包含零个或多个元素的异步序列。你可以将其视为一种异步的、可以包含多个元素的容器。通常用于处理多个并行的异步操作或者事件流。Mono代表一个包含零个或一个元素的异步序列。你可以将其视为一种异步的、最多包含一个元素的容器。通常用于处理只会产生一个结果的异步操作。在响应式编程中,Flux和Mono是Reactor库中的两个核心类,用于处理异步数据流。Flux用于处理多个元素的情况,而Mono则用于处理单个元素的情况。
2024-04-11 15:12:47
2132
原创 如何让MySQL 和 Redis 数据保持一致
今天在工作中遇到了这个问题,往MySQL中频繁的插入大量数据,一个用户生成一堆数据,另一个用户又生成一堆数据。这样对我们的数据库很不友好,那我们可以使用什么方式来解决?我想到了两个优化的方式,第一个使用分布式中消息队列和使用redis的缓存来解决。为了简单高效。这里用到redis中的缓存来实现,但是也会出现问题,其中的一个问题就是?使用过缓存的人都应该知道,在实际应用场景中,要想实时刻保证缓存和数据库中的数据一样,很难做到。基本上都是尽可能让他们的数据在绝大部分时间内保持一致,并保证最终是一致的。
2024-03-22 15:47:15
1273
1
原创 微服务分布式中为什么要分库分表呢?
分库分表是一种数据库水平扩展的方法,通过将数据分散存储在多个数据库实例或多张表中,以提高系统的性能和扩展性。在Java应用中,可以使用一些数据库中间件或框架来实现分库分表。
2024-03-06 08:53:20
1502
1
原创 Mybatis学习笔记教程
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2023-07-27 11:26:59
373
原创 Spring5笔记教程
Spring框架以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版、SSM:SpringMVC + Spring + MyBatis(半自动持久化框架,可自定义性质更强)!
2023-07-27 11:22:23
367
原创 Mac启动elasticsearch报错
解决方法:在终端输入:设置 export ES_JAVA_HOME=/usr/bin/java。启动的时候会自动填充/bin/java。
2023-06-29 15:31:05
1156
SpringBoot前后端分离 - 预约挂号系统
2022-06-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人