自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 Redis缓存技术 基础第三篇(Redis实现短信验证)

当注册完成后,用户去登录会去校验用户提交的手机号和验证码,是否一致,如果一致,则根据手机号查询用户信息,不存在则新建,最后将用户数据保存到redis,并且生成token作为redis的key,当我们校验用户是否登录时,会去携带着token进行访问,从redis中取出token对应的value,判断是否存在这个数据,如果没有则拦截,如果存在则将其保存到threadLocal中,并且放行。

2024-10-24 20:18:52 650

原创 Redis缓存技术 基础第二篇(Redis的Java客户端)

Spring默认提供了一个StringRedisTemplate类,它的key和value的序列化方式默认就是String方式。Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式。为了在反序列化时知道对象的类型,JSON序列化器会将类的class类型写入json结果中,存入Redis,会带来额外的内存开销。3,读取Redis时,手动把读取到的JSON反序列化为对象。2,写入Redis时,手动把对象序列化为JSON。

2024-09-26 12:08:09 1203

原创 Redis缓存技术 基础第一篇(快速入门与安装部署)

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

2024-09-25 21:04:12 1182

原创 基础数据结构与算法第二篇(链表)

在计算机科学中,链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续

2024-07-30 18:31:31 444

原创 基础数据结构与算法第一篇(递归与时间空间复杂度)

在计算机科学领域,数据结构是一种数据组织、管理和存储格式,通常被选择用来高效访问数据。数据结构是一种存储和组织数据的方式,旨在便于访问和修改可以说,**程序 = 数据结构 + 算法**,它们是每一位程序员的基本功。

2024-07-29 19:33:04 941

原创 Spring Security第三章(授权管理)

授权管理的实现在SpringSecurity中非常灵活,可以帮助应用程序实现以下两种常见的授权需求:用户-权限-资源:例如张三的权限是添加用户、查看用户列表,李四的权限是查看用户列表 用户-角色-权限-资源:例如 张三是角色是管理员、李四的角色是普通用户,管理员能做所有操作,普通用户只能查看信息

2024-07-24 18:16:52 601

原创 Spring Security第二章(Security的自定义配置与用户认证)

实际开发的过程中,我们需要应用程序更加灵活,可以在SpringSecurity中创建自定义配置文件UserDetailsService用来管理用户信息,InMemoryUserDetailsManager是UserDetailsService的一个实现,用来管理基于内存的用户信息。 创建一个WebSecurityConfig文件: 定义一个@Bean,类型是UserDetailsService,实现是InMemoryUserDeta

2024-07-24 16:22:42 1045

原创 Spring Security第一章(Security快速入门与底层原理)

Spring Security 是一个提供身份验证、授权和防御常见攻击的框架。它为保护命令式和响应式应用程序提供了一流的支持,是保护基于 Spring 的应用程序的事实标准。功能:身份认证(authentication)授权(authorization)防御常见攻击(protection against common attacks)

2024-07-24 09:30:28 630

原创 SpringCloud第六篇(微服务保护)

微服务保护的方案有很多,比如:请求限流,线程隔离,服务熔断这些方案或多或少都会导致服务的体验上略有下降,比如请求限流,降低了并发上限;线程隔离,降低了可用资源数量;服务熔断,降低了服务的完整度,部分服务变的不可用或弱可用。因此这些方案都属于服务降级的方案。但通过这些方案,服务的健壮性得到了提升,接下来,我们就逐一了解这些方案的原理。

2024-07-20 15:56:05 819

原创 SpringCloud第五篇(配置管理)

微服务共享的配置可以统一交给Nacos保存和管理,在Nacos控制台修改配置后,Nacos会将配置变更推送给相关的微服务,并且无需重启即可生效,实现配置热更新。网关的路由同样是配置,因此同样可以基于这个功能实现动态路由功能,无需重启网关即可修改路由配置。

2024-07-20 11:37:19 813

原创 SpringCloud第四篇(微服务网关)

顾明思议,网关就是网络的关口。数据在网络间传输,从一个网络传输到另一网络时就需要经过网关来做数据的路由和转发以及数据安全的校验。现在,微服务网关就起到同样的作用。前端请求不能直接访问微服务,而是要请求网关:- 网关可以做安全控制,也就是登录身份校验,校验通过才放行- 通过认证后,网关再根据请求判断应该访问哪个微服务,将请求转发过去

2024-07-19 17:32:47 1116

原创 SpringCloud第三篇(服务中心与OpenFeign)

在上一章我们实现了微服务拆分,并且通过Http请求实现了跨微服务的远程调用。不过这种手动发送Http请求的方式存在一些问题。 试想一下,假如商品微服务被调用较多,为了应对更高的并发,我们进行了多实例部署此时,每个item-service的实例其IP或端口不同了。为了解决上述问题,就必须引入注册中心的概念了,接下来我们就一起来分析下注册中心的原理。

2024-07-13 20:08:06 575

原创 SpringCloud第二篇(如何将大型项目拆分成微服务项目)

这一章我们从单体架构的优缺点来分析,看看开发大型项目采用单体架构存在哪些问题,而微服务架构又是如何解决这些问题的

2024-07-13 11:32:48 1210

原创 SpringCloud第一篇(Docker基础)

我们即将进入微服务阶段学习,微服务项目动辄就是几十台、上百台服务需要部署,有些大型项目甚至达到数万台服务。而**由于每台服务器的运行环境不同,你写好的安装流程、部署脚本并不一定在每个服务器都能正常运行**,经常会出错。这就给系统的部署运维带来了很多困难。我们今天要学习的Docker技术。就是解决此问题的,有了Docker以后项目的部署如丝般顺滑,大大减少了运维工作量。即便你对Linux不熟悉,你也能轻松部署各种常见软件、Java项目。

2024-07-08 21:26:55 538

原创 线程的生命周期和状态控制

线程的生命周期,就是一个线程从创建到消亡的过程。关于Java中线程的生命周期,首先看一下下面这张较为经典的图:当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种不同的状态。尤其是当线程启动以后,它不可能一直“霸占”着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。

2024-06-21 15:39:38 1006

原创 基于Java的多线程的创建

发现创建新执行线程有两种方法。1. 一种方法是将类声明为Thread的子类。该子类应重写 Thread 类的run()方法。创建对象,开启线程。run()方法相当于主线程的main()方法。2. 另一种方法是声明一个实现Runnable接口的类。该类然后实现run()方法。然后创建Runnable的子类对象,传入到某个线程的构造方法中,开启线程。

2024-06-21 15:31:33 828

原创 多线程概述

多线程是Java语言的重要特性,大量应用于网络编程、服务器端程序的开发,最常见的UI界面底层原理、操作系统底层原理都大量使用了多线程。我们可以流畅的点击软件或者游戏中的各种按钮,其实,底层就是多线程的应用。UI界面的主线程绘制界面,如果有一个耗时的操作发生则启动新的线程,完全不影响主线程的工作。当这个线程工作完毕后,再更新到主界面上。我们可以上百人、上千人、上万人同时访问某个网站,其实,也是基于网站服务器的多线程原理,如果没有多线程,服务器处理速度会极大降低。在学习多线程之前,我们先要了解几个关于多线

2024-06-19 21:34:10 1034

原创 多线程多进程的python爬虫脚本项目(可爬起点小说VIP内容)

在当今的网络时代,信息传播趋于自由化且高速发展,无数的信息倾泻而下,可以从互联网获取的信息类型有很多,例如新闻、博客、论坛,乃至小说。对于读者来说,如果能有一种程序它可以自动地从网络上抓取我们需要的小说,那么阅读将会变得更加快捷和便利。为此,我计划设计并实现一个网络爬虫程序,以自动爬取起点中文网的特定小说并下载到本地。

2024-06-19 18:03:00 2454 7

原创 SpringBoot实用开发篇第七章(监控技术)

对于现代的互联网程序来说,规模越来越大,功能越来越复杂,还要追求更好的客户体验,因此要监控的信息量也就比较大了。由于现在的互联网程序大部分都是基于微服务的程序,一个程序的运行需要若干个服务来保障,因此第一个要监控的指标就是服务是否正常运行,也就是监控服务状态是否处理宕机状态。

2024-06-01 17:04:51 865

原创 SpringBoot实用开发篇第六章(整合第三方技术,ActiveMQ,RabbitMQ,RocketMQ,Kafka)

springboot整合第三方技术第三部分我们来说说邮件系统,发邮件是java程序的基本操作,springboot整合javamail其实就是简化开发。不熟悉邮件的小伙伴可以先学习完javamail的基础操作,再来看这一部分内容才能感触到springboot整合javamail究竟简化了哪些操作。简化的多码?其实不多,差别不大,只是还个格式而已。

2024-06-01 12:31:04 1102

原创 SpringBoot实用开发篇第五章(整合第三方技术,jetcache,j2cache,Task)

jetcache严格意义上来说,并不是一个缓存解决方案,只能说他算是一个缓存框架,然后把别的缓存放到jetcache中管理,这样就可以支持AB缓存一起用了。并且jetcache参考了springboot整合缓存的思想,整体技术使用方式和springboot的缓存解决方案思想非常类似。下面咱们就先把jetcache用起来,然后再说它里面的一些小的功能。

2024-05-30 22:16:50 1125

原创 SpringBoot实用开发篇第四章(整合缓存技术)

通过本章的学习,可以将之前学习的springboot整合第三方技术的思想贯彻到底,还是那三板斧。导坐标、做配置、调API。​ springboot能够整合的技术实在是太多了,可以说是万物皆可整。本章将从企业级开发中常用的一些技术作为出发点,对各种各样的技术进行整合。

2024-05-28 19:21:42 870

原创 SpringBoot实用开发篇第三章(数据层解决方案操作)

本章节主要内容都是和数据存储与读取相关,前期学习的知识与数据层有关的技术基本上都围绕在数据库这个层面上,所以本章要讲的第一个大的分支就是SQL解决方案相关的内容,除此之外,数据的来源还可以是非SQL技术相关的数据操作,因此第二部分围绕着NOSQL解决方案讲解

2024-05-26 21:35:11 843

原创 SpringBoot实用开发篇第二章(测试操作)

测试是保障程序正确性的唯一屏障,在企业级开发中更是不可缺少,但是由于测试代码往往不产生实际效益,所以一些小型公司并不是很关注,导致一些开发者从小型公司进入中大型公司后,往往这一块比较短板,所以还是要拿出来把这一块知识好好说说,做一名专业的开发人员。

2024-05-26 11:05:58 765

原创 SpringBoot实用开发篇第一章(yml配置文件操作)

在这篇文章中,我们将深入探讨SpringBoot配置文件和它的使用。我们将首先解析配置文件的分类,其中包含properties格式,yml格式,以及yaml格式,并深入了解为何在大多数情况下,我们会优先使用yml格式的配置文件。我们还会去理解配置文件的优先级以及在实际开发中,我们应如何根据期望的结果做出选择。

2024-05-25 17:46:25 2682

原创 SpringBoot运维篇(打包,多环境,日志)

在整体运维实用篇中带着大家学习了4块内容,首先学习了如何运行SpringBoot程序,也就是程序的打包与运行,接下来对配置进行了升级学习,不再局限在配置文件中进行设置,通过临时属性,外部配置文件对项目的配置进行管控。在多环境开发中给大家介绍了多种多环境开发的格式,其实掌握一种即可,此外还给大家讲了多环境开发的一些技巧以及与maven的冲突解决方案。最后给大家介绍了日志系统

2024-05-25 09:55:22 1171

原创 Linux基础命令

Linux是一个强大的操作系统,它提供了许多常用的命令行工具,可以帮助我们用于管理文件、目录、进程、网络和系统配置等。以下是一些基础的Linux命令:

2024-05-16 14:17:21 670

原创 Spring框架第六章(SpringMVC概括及基于JDK21与Tomcat10创建SpringMVC程序)

SpringMVC是一个实现了MVC架构模式的Web框架,底层基于Servlet实现。SpringMVC已经将MVC架构模式实现了,因此只要我们是基于SpringMVC框架写代码,编写的程序就是符合MVC架构模式的。(MVC的架子搭好了,我们只需要添添补补)以下就是Spring官方给出的Spring架构图,其中Web中的servlet指的就是Spring MVC:

2024-05-06 17:32:51 1143

原创 Spring框架第五章(声明式事务)

声明式事务是一种通过声明来管理事务的方式,而不需要显式编写事务管理代码。它将事务管理从业务逻辑中分离出来,使得开发人员能够更加专注于业务逻辑的实现,而不必过多关注事务的细节。在本博客中,我们将深入探讨声明式事务的概念和使用方式。我们将首先介绍Spring框架中的JdbcTemplate,它是一个强大的工具,用于简化对数据库的操作。然后,我们将详细解释声明式事务的原理和工作方式,并演示如何在Spring应用程序中配置和使用声明式事务。

2024-04-25 21:25:49 799

原创 Spring框架第四章(AOP概念及相关术语)

AOP(Aspect Oriented Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程的一种补充和完善,它以通过预编译方式和运行期动态代理方式实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术。

2024-04-19 22:09:47 759

原创 Spring框架第三章(基于注解管理bean)

在本文中,我将向大家介绍如何在项目中使用Spring注解来简化代码和提高工作效率。本文将深入详解Spring注解的主要应用,包括注解标记、组件创建和扫描,以及基于注解的自动装配等重点内容。

2024-04-18 17:51:35 546

原创 Spring框架第二章(基于XML管理bean)

由于 id 属性指定了 bean 的唯一标识,所以根据 bean 标签的 id 属性可以精确获取到一个组件对象。根据类型来获取bean时,在满足bean唯一性的前提下,其实只是看:『对象 instanceof 指定的类。声明一个变量a,初始化为10,此时a就不代表字母a了,而是作为一个变量的名字。而如果a是带引号的:‘a’,那么它现在不是一个变量,它就是代表a这个字母本身,这就是字面。型』的返回结果,只要返回的是true就可以认定为和类型匹配,能够获取到。的时候,我们实际上拿到的值是10。

2024-04-14 11:53:15 1192

原创 Spring框架第一篇(Spring概述与IOC思想)

Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用Spring 框架来创建性能好、易于测试、可重用的代码。Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。官网:[https://spring.io/](https://spring.io/)

2024-04-13 21:11:04 1522

原创 Java官网下载JDK21版本详细教程(下载、安装、环境变量配置)

本文将为您提供关于Java官网下载JDK21版本的详细教程。作为Java开发者,我们知道JDK是开发Java应用程序所必需的关键组件之一。JDK21将是一个新的长期支持(LTS)版本,jdk长期支持的版本有8、11和17,如果是64位操作系统建议下载17或21版本,32位建议下载8版本目前可以从官网下载使用。

2024-04-04 15:20:28 55160 10

原创 项目实践《小说网站数据爬取》

欢迎阅读本篇博客,在这里,我们将探索如何使用Python进行网站数据抓取。数据抓取,或称为网页爬虫,是一种从网站上自动提取信息的技术。在现代数据驱动的世界中,这一技巧尤其宝贵。不论是为了个人学习,研究目的,还是企业收集行业数据,掌握如何从网络中提取有价值的数据无疑都是一个重要的技能。、在这篇博客的接下来几个部分中,我将向您展示如何使用Python中的一些库来获取网站数据。我们将以实际案例“起点小说”和“笔趣阁”网站为例,一步步通过代码详细说明这一过程。

2024-03-17 11:44:54 2402 5

原创 项目实践《招聘网站数据爬取》

这个Python脚本的主要目标是解析"yiqifu.baidu.com"上的招聘信息,提取方面包括城市、公司名称、学历要求、工作经验、岗位名、薪资待遇以及岗位职责等信息,然后保存在Excel文件中。下面分别从各个模块和函数分析:

2024-03-16 21:30:31 1076

原创 JavaWeb基础第五章(请求,响应与分层解耦)

深入理解并实践HTTP请求和响应的处理是任何web开发者的基础技能。在这篇文章中,我们将一起探讨HTTP请求和响应的全过程,以及如何通过Postman工具进行接口测试。我们将从理解HTTP请求和响应的基本概念开始,然后使用Postman工具用于发送和接收请求。接着,我们将仔细探讨HTTP请求中各种参数的处理方式,包括简单参数、实体参数、数组集合参数、日期参数、Json参数和路径参数。我们也将详细介绍如何在服务器端进行响应数据的处理,并分享如何编写代码以实现统一响应结果。此外,我们还将突出模块化和分层解耦

2024-03-16 17:50:41 743

原创 JavaWeb基础第四章(SpringBootWeb工程,HTTP协议与Web服务器-Tomcat)

在这篇文章中,我们将深入探讨一种广受欢迎的Java框架 - SpringBoot。可能你已经听过SpringBoot,但可能你还不完全了解它。因此,我决定写一篇详细的文章,帮助你深入理解SpringBoot以及它如何使得Java开发变得更加高效和灵活。本文将从SpringBoot的基础知识讲起,包括SpringBoot的介绍、优点以及如何快速的构建应用程序。然后我们会了解如何开始使用 SpringBootWeb,明白HTTP协议的重要性及其详细解析,包括请求和响应协议。此外,我们还将强调Web服务器的作用

2024-03-14 21:47:15 594

原创 JavaWeb基础第三章(MyBatis的应用,基础操作与动态SQL)

在当今这个信息爆炸的时代,数据的有效管理变得越来越重要。数据库作为应用程序中最核心的部分之一,离不开高效和稳定的数据库连接池来确保性能。那么,如何在众多技术选项中寻找那个最适合我们的方案呢?本文将会带大家深入浅出地了解数据库连接池的奥秘并一探Druid数据库连接池的深度集成。同时,我们也会探讨如何借助Lombok这一神器来让我们的Java代码更加精简高效。除此之外,本文还将涵盖MyBatis的基础操作和动态SQL的应用,通过一系列实例,帮助大家快速掌握其精髓。一起来探索这些工具如何帮助我们在编码世界中游刃有

2024-03-14 11:42:09 1022

原创 Python爬虫第二章(HTMl文件,CSS语言与第三方库Beautiful Soup)

在互联网信息爆炸的时代,获取和处理网络数据显得尤为重要。BeautifulSoup是一个强大的Python库,它能够帮助我们轻松地从网页获取所需信息。无论你是数据分析师,还是网络爬虫开发者,这个库都将成为你工具箱中的利器。在开始本次的学习之前,我们会先介绍一些前置知识,包括HTML的基础、CSS的运用,以便能让你更好地理解BeautifulSoup的工作原理。随着本教程的深入,你将学习到如何通过BeautifulSoup和其它相关库,如requests,提取和处理您感兴趣的网络内容。

2024-03-09 20:33:13 1118

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除