- 博客(38)
- 收藏
- 关注
原创 博客一:深入理解Java异常处理机制:try-catch-finally背后的原理与最佳实践
Java的异常处理机制提供了强大的错误恢复能力,但这并不意味着开发者可以不加思考地使用异常。合理的异常处理应该能提高代码的可维护性和可读性,且不会成为程序逻辑的负担。
2025-02-26 12:00:39
667
原创 “Java面试必看:从基础到进阶的全方位准备指南“(1)
*`int[]`** 不是基本数据类型,它是一个**数组类型**。如果需要开发Java程序,则需要安装JDK。- **开发工具**:包括编译器(`javac`)、调试器(`jdb`)、文档生成工具(`javadoc`)、打包工具(`jar`)等,帮助开发者开发Java程序。- **装箱**(Boxing):将基本数据类型(如`int`)转换为对应的包装类对象(如`Integer`)。- **拆箱**(Unboxing):将包装类对象(如`Integer`)转换为基本数据类型(如`int`)。
2024-11-12 23:09:29
354
原创 使用 JWT 实现安全认证的技术详解
通过 JWT 的使用,可以实现安全、高效的用户身份认证。利用 JWT,我们可以在无状态的环境中传递用户身份信息,并将其应用于分布式系统中的单点登录场景。**安全性建议**:1. 避免在 Payload 中存放敏感信息。2. 设置合理的 Token 过期时间,防止长期有效 Token 被滥用。3. 在生产环境中确保 `secret` 安全性,并对 `secret` 进行定期更新。通过以上内容,我们详细探讨了 JWT 的基础和进阶应用,包括 Token 刷新机制、多层加密、角色控制等高级用法。
2024-11-05 22:28:29
810
原创 “代码世界的必修课:Git完整指南“(3)
Gitlab的rpm包集成了它需要的软件,简化了安装步骤,所以直接安装rpm包即可,rpm包的获取从官方网站或者国内镜像源(如:清华https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/)获取,gitlab又分为社区版和企业版(收费),这里部署的是社区版本10.8.4。[root@gitlab tools]# \cp -rf gitlab/* /opt/gitlab/embedded/service/gitlab-rails/ #拷贝文件。
2024-11-04 21:02:59
416
原创 “代码世界的必修课:Git完整指南“(2)
1 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。release分支作为预发布分支,release 分支从 develop 分支 fork 出来,最终会合并到 develop 分支和 stable 分支,合并到 stable分支上就是可以发布的代码了。
2024-11-04 20:56:17
945
原创 “代码世界的必修课:Git完整指南“(1)
首先要明确下,所有的版本控制系统,只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码等,Git也不列外,版本控制系统可以告诉你每次的改动,但是图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了啥,版本控制也不知道。等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。为提高性能,若文件没有变化,
2024-11-04 20:46:10
932
原创 深入浅出 Spring Boot 与 Shiro:构建安全认证与权限管理框架
2.重写Realm中的doGetAuthorizationInfo方法,用于封装数据库的保存的该用户拥有的所有授权标识以供SecurityManager授权校验时使用。由于Shiro框架的授权是通过AOP来实现的,因此,要实现Shiro授权,就必须在项目中添加SpringAop依赖。(三)数据库获取用户认证信息交给Shiro框架的SecurityManager。(二)提交用户登录信息给Shiro框架的securityMananger。Shiro框架实现授权是通过AOP的方式实现的。
2024-11-03 13:05:12
1037
原创 深入理解 Spring AOP:面向切面编程的原理与应用
该类型的对象只能作为@Around注解描述的方法的形参。@Before:如果存在该注解描述的方法,则在@Around描述的方法中,调用(ProceedJoinPoint)jp.proceed()方法(即目标方法)之前调用该注解描述的方法。@After:如果存在该注解描述的方法,@AfterReturning|@AfterThrowing描述的方法执行之后执行该注解描述的方法。当@After注解描述的方法执行之后,程序会将控制权交还于@Around描述的方法,继续执行@Around描述的方法后续语句。
2024-11-03 12:55:05
1576
原创 Java Set 集合详解:HashSet、LinkedHashSet 和 TreeSet 的特性与应用场景分析
且向HashSet集合中添加元素,HashSet add方法实质是map全局变量调用了put方法,将数据存到了key,因为HashMap的 key不允许,所以HashSet添加的元素也不允许重复。HashSet:HashSet的性能基本上比LinkedHashSet和TreeSet要好,特别是添加和查询,这也是用的最多的两个操作。③.remove(Object o): 删除Set集合中的obj对象,删除成功返回true,否则返回false。②:size():返回Set集合中的元素个数。
2024-11-03 12:33:06
500
原创 “玩转Java Map集合:理解HashMap与TreeMap的结构与使用场景”
②.get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null,即获取key对应的value。⑥:remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值。①.put(K key, V value) 将键(key)/值(value)映射存放到Map集合中。③. size() 返回Map集合中数据数量,准确说是返回key-value的组数。⑨:Hashmap添加另一个同一类型的map下的所有数据。④:clear() 清空Map集合。
2024-11-02 19:46:25
279
原创 “掌握Java集合:ArrayList、LinkedList与Vector的特性、方法与最佳实践
get(i)==null : o.equals(get(i)))条件的最低索引i的元素时才会返回true。void addFirst(E element) 元素附加到列表的头部 void addLast(E element) 元素附加到列表的尾部。⑨.remove(int index) 移除列表中指定位置的元素,并返回被删元素,删除位置后面的元素(如果有)向前移动。⑤.set(int i, Object element) 使用元素element替换索引i位置的元素,并返回替换元素。
2024-11-02 19:29:04
710
原创 “高效开发之路:用Spring MVC构建健壮的企业级应用”
处理器适配器(HandlerAdapter)将controller执行的结果(ModelAndView)返回给前端控制器(DispatcherServlet);.前端控制器(DispatcherServlet)将执行的结果(ModelAndView)传给视图解析器(ViewReslover)提示:Model(模型数据,即Controller处理的结果,Map) View(逻辑视图名,即负责展示结果的JSP页面的名字)前端控制器(DispatcherServlet)将填充了数据的网页响应给用户。
2024-11-02 19:16:19
899
原创 Spring 框架精髓:从基础到分布式架构的进阶之路
所谓耦合:在项目开发时,经常会遇到在一个程序中会new另外一个类的对象,而在new对象时,会造成当前这个程序,严重的依赖于其它对象,会造成程序之间的依赖程度提升,而程序和程序之间的依赖关系被称之为耦合。所描述的方法与装配的xml文件中的bean元素类似,区别在于:方法中的存入bean池中的对象是new的,而bean元素描述的类的对象是通过框架创建的。作用:用于指定所描述类的对象的作用域。如果有该接口的实现类,且只有一个,就会使用该实现类的对象注入@Autowired描述的对象。如下所示:。
2024-11-02 19:04:37
982
原创 “揭开Ajax:实现无缝客户端与服务器通信的秘密”
即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式,为在客户端调用作好准备。此阶段对XMLHttpRequest对象进行初始化,即调用open()方法,根据参数(method,url,true)完成对象状态的设置。此阶段对XMLHttpRequest对象进行初始化,即调用open()方法,根据参数(method,url,true)完成对象状态的设置。此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。
2024-11-02 13:40:45
29037
原创 “Linux探秘者” - 引导读者深入探索Linux系统的内部结构和高级操作
media:Linux系统会自动识别一些设备,如:U盘光驱等,当识别后,Linux会把识别的设备挂载到该目录下。/usr:该目录存在用户很多应用程序和文件都放在该目录下,类似windows下的program files目录。/misc:该目录可以用来存放杂项文件或目录,即那此用途或含义不明确的文件或目录可以存放在该目录下。/proc:该目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问该目录获取系统信息。/var:该目录存放不断扩充着的文件,经常把被修改的目录放在该目录下,包括各种日志文件。
2024-11-01 18:13:22
28635
原创 Mybatis深度解析:从配置到操作,全面掌握持久层框架
3.执行过程:choose元素对包含Sql片段进行检索,动态追加第一个test为true的when元素包含的Sql子句(忽略其后所有的when元素及otherwise元素)或otherwise包含的Sql子句(所有when的test的值都为false时)到Sql主句中。在if、when等标签中的test属性中的判断表达式,由其是判断相等关系使用的是运算符==而不是sql的=。需要注意的是:使用 ${} 占位符为SQL语句中的片段占位时,即使只有一个占位符,需要传的也只有一个参数,也需要将参数先封装再传递!
2024-10-30 20:31:20
28950
原创 《深入浅出JDBC:从连接到数据安全的全流程实战指南》
使用PreparedStatement对象是先将SQL语句的骨架发送给服务器编译并确定下来,编译之后,SQL语句的骨架和语义就不会再被改变了,再将SQL语句中的参数发送给服务器,即使参数中再包含SQL关键字或者特殊符号,也不会导致SQL语句的骨架或语义被改变,只会被当作普通的文本来处理.方法名中的BaseType指的是不同类型的数据要使用对应类型的set方法,如类型int数据,则使用setInt方法构造实参。示例:select?1.存在的隐患的现象:通过拼接特殊字符改变传送的sql语句的语义改变。
2024-10-30 20:12:17
1006
原创 MySQL数据库开发入门指南:从零开始掌握数据管理技能
等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。
2024-10-29 15:21:37
20786
原创 servlet开发
(2)request域对象:request在实现转发时,通过request对象中的map集合共享数据,该request对象上map集合民及request对象所在的范围称为域对象。(1)作用域对象:如果一个对象具备可以被访问的范围,通过这个对象上的map集合可以在整个范围内实现数据的共享,这样的对象就叫做作用域对象。3.转发前后request对象是同一个,可以使用域对象带数据至目标资源;3.如果仅仅是做一次跳转,没有其他要求时,推荐使用转发(可以减少对服务器的访问次数,减小服务器访问压力)。
2024-10-28 21:36:27
1557
原创 http协议
(1)URL格式:http://hostName:portId/webAppName/[otherName/]fileName.filetype.(2)/WebAppName/fileName.filetype:用于描述资源路径,表示浏览器请求的目标:即请求的是哪个web应用的哪个资源文件。(1)发起方式:适用于请求的两种发起方式即url输入法和form元素提交法。(2)200:状态码,三位数字组成,表示服务器对请求处理的结果。(1)HTTP/1.1:表示响应所遵循的遵循的协议和版本。
2024-10-28 21:16:56
698
原创 “深入浅出:搞懂 Cookie、Token 和 Session 的区别与应用,秒变认证达人!“
当你进入电影院时,工作人员会给你一张门票,上面写着你的“座位号”。- 每次你返回座位时,工作人员通过门票确认你的位置。- 同样,Cookie 是由服务器发给浏览器的小文件,存储在客户端,每次访问网站时会自动发送到服务器,让服务器识别出“这是你”。- 比如说,你进入大楼工作,安保部门给你一张“临时通行证”,每次进出都要出示,安保人员根据通行证判断你的权限。- Token 是一种包含用户身份的加密数据,通常包含有效期,过期后需重新获取。
2024-10-28 20:51:29
998
原创 深入剖析:Java多线程,让你的程序飞起来!
在多线程编程中,理解线程的基本操作、线程的同步与通信、线程池的使用、以及如何避免常见问题如死锁,是非常重要的。此外,合理利用 Java 并发工具类和高级锁机制,可以极大简化并发编程中的复杂性,提升程序的性能和稳定性。
2024-10-20 17:35:50
32599
原创 如何在IntelliJ IDEA中创建Spring Boot项目(超详细教程)
1. **JDK**:确保你安装的JDK版本为1.8或更高,下载链接: [JDK1.8下载](https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html)**Spring Initializr** 是一个在线生成项目的工具,可以帮助我们快速生成Spring Boot的基本项目骨架。- **Spring Boot Version**:选择你需要的版本,如果使用JDK 8,建议选择Spring Boot 2.x版本。
2024-10-10 22:05:42
1589
原创 前端开发准备(二)
上一章为大家推荐了几款前端开发软件我个人习惯使用VS CodeMicrosoft出品,轻量但强大,针对于编写现代Web和云应用的跨平台源代码编辑器。可以在MacOS X、Windows和 Linux等操作平台使用。
2024-10-08 17:38:45
34254
原创 前端体系介绍(一)
随着互联网技术的飞速发展,前端开发已经成为技术体系中不可或缺的一部分。无论是构建网站、Web应用,还是如今流行的移动应用,都离不开前端技术的支持。本文将从前端的基本概念、发展历程、主流技术栈、工具链、以及未来趋势等方面详细介绍现代前端体系。Web 组件是一组基于 Web 标准的技术,用于创建可重用的自定义元素。它允许开发者封装 HTML、CSS 和 JavaScript,使其可以在不同项目中反复使用,而不会受到外部环境的干扰。
2024-10-08 16:50:09
1532
原创 运用MinIO技术服务器实现文件上传——利用程序上传图片(二 )
在上一篇文章中,我们已经在云服务器中安装并开启了minio服务,本章我们将为大家讲解如何利用程序将文件上传到minio桶中下面介绍MinIO中的几个核心概念,这些概念在所有的对象存储服务中也都是通用的。- **对象(Object)**对象是实际的数据单元,例如我们上传的一个图片。- **存储桶(Bucket)**存储桶是用于组织对象的命名空间,类似于文件夹。每个存储桶可以包含多个对象。- **端点(Endpoint)**
2024-10-07 16:01:07
2411
2
原创 运用MinIO技术服务器实现文件上传——在Linux系统上安装和启动(一)
随着大数据时代的到来,数据存储的需求日益增大,如何有效地存储和管理大规模的非结构化数据成为许多企业和开发者面临的挑战。MinIO 作为一个高性能、分布式对象存储系统,致力于为用户提供简单、快速、可扩展的存储解决方案。它的设计与 Amazon S3 兼容,用户可以无缝切换到 AWS 生态系统,并充分利用 S3 提供的丰富功能。MinIO 是基于 Go 语言开发的,因而其执行效率极高,并且可以灵活地支持各种非结构化数据的存储,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。
2024-10-07 15:05:15
1139
原创 2022最新版 IntelliJ IDEA 好用插件推荐
**CheckStyle-IDEA**、**Alibaba Java Coding Guidelines**、**SonarLint**:检测代码规范,发现潜在问题。- **CamelCase**、**String Manipulation**:提供字符串格式转换和处理功能。- **OnlineSearch**、**CodeSearch**:快捷打开搜索引擎进行搜索。- **WakaTime**、**Statistic**:跟踪代码编写时间和质量。- 基于 AI 的代码补全工具,提供更智能的代码建议。
2024-09-24 17:44:26
708
1
原创 Nginx 的轮询机制详解
轮询机制(Round Robin)是一种简单的负载均衡算法,它通过依次将客户端请求分发到后端服务器。假设有多个后端服务器,Nginx 会按顺序将每一个新请求分配给下一个服务器,当到达最后一个服务器时,循环回到第一个服务器重新分配请求。这种机制的优点在于其简单性和均衡性,适合负载较为均衡的场景,尤其是在后端服务器配置相似且无明显性能差异的情况下。Nginx 的轮询机制是其负载均衡功能的基础,尤其适合简单的均衡负载场景。
2024-09-15 15:20:36
1751
原创 SSM框架整合详细指南
SSM框架(Spring、Spring MVC、MyBatis)是Java Web开发中最常用的技术栈之一。本文将详细介绍如何通过XML和注解的方式整合SSM框架,包括搭建整合环境、配置Maven工程、创建数据库表、编写实体类和业务接口、配置Spring、Spring MVC和MyBatis,以及使用Druid连接池。
2024-08-06 23:39:43
1320
原创 # 深入了解SQL基础语句及其使用案例
SQL(Structured Query Language)是一种用于操作和管理关系型数据库的标准语言。它是每个数据分析师和开发者的必备技能。掌握SQL的基本语句可以帮助我们更高效地管理数据、执行复杂查询以及进行数据分析。本文将详细介绍SQL的基本语句及其使用案例,帮助你深入理解和应用SQL。
2024-08-04 15:29:34
838
原创 SpringBoot中html引入照片404失败解决方法(通配符)
通配符和**在Spring Boot中具有不同的用途,了解它们的区别可以帮助我们更好地管理包名和资源文件的匹配。:匹配一个层级,常用于包名匹配,限制较多。**:匹配多个层级,灵活性更高,适用于资源路径的匹配。通过正确使用这些通配符,我们可以更高效地组织和管理Spring Boot项目中的包结构和资源文件。这不仅提高了代码的可读性,也使得项目的维护变得更加方便。希望本文能够帮助你更深入地理解Spring Boot中的通配符用法!如果你有任何问题或想法,欢迎在下方评论区分享。
2024-08-04 09:53:08
980
原创 Maven从无到有
Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶段的执行顺序。配置项目 pom.xml,配置私服仓库的地址,本公司的自己的 jar 包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为 release 则上传到私服的 release 仓库,如果版本为snapshot 则上传到私服的 snapshot 仓库。上面的方式不是特别的理想,需要在每一个项目的pom文件中都添加相同的配置,比比较麻烦。
2024-06-30 21:41:39
34083
原创 数据结构(大类)
构建2-3-4树的要领:跟非叶子节点比较大小,找到对应的叶子节点,往叶子节点上有序放数据,如果放满,就向上挤中间数,原节点裂成。3节点:包含两个键(数据值)和三个链(三个叉),左子树的值都不大于该节点,中子树的值位于该两个节点值之间,右子树的值都不小。4节点:包含三个键(数据值)和四个链(四个叉),左子树的值都不大于该节点,左中子树的值位于该前两个节点值之间,右中子树的值。2节点 :包含一个键(数据值)和两个链(两个叉),左子树的值都不大于该节点,右子树的值都不小于该节点。红黑树(近似平衡树(AVL))
2024-04-06 13:50:33
33982
1
原创 数据结构(树)
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数组、链表、树、图……统称为数据结构,数据结构研究数据在内存当中如何高效存储。数据结构产生的原因?由于应用问题的复杂程度不断增加、信息量剧增与信息范围的拓宽,导致程序规模越来越大,程序结构更加复杂,为了解决这些问题必须研究数据之间的关系,数据结构由此而生。
2024-04-06 13:30:42
1492
1
原创 java基础--数据类型
一.基本数据类型 :整型 byte short long int二.引用类型 :类 接口 数组但是每一个数据类型,都对应着不同的内存存储形式eg: byte a = o byte 为 8bit 位 即 00000000int a = o int 为 32bit 位 即 00000000000000000000000000000000float a = 11.23 float 为 32bit 位 即 00000000000000000000000000000000。
2024-04-05 21:30:48
1688
1
原创 今日学习:内存图
执行java 程序流程 1.创建 .java 文件 2.打开黑窗,执行cmd命令 3.执行javac 语句。区分面向过程编程和面向对象编程 (这是一个非常抽象但特别重要的问题,我还在努力理解,诸位等我好消息!东西比较多,思绪比较多,慢慢来吧。
2024-03-02 17:19:08
189
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人