SSM开发(一)JAVA,javaEE,spring,springmvc,springboot,SSM,SSH等几个概念区别
目录
JAVA
框架
javaEE
spring
springmvc
springboot
SSM
SSH
maven
JAVA
- 一种面向对象、高级编程语言,Python也是高级编程语言;
- 不是框架(框架:一般用于大型复杂需求项目,用于快速开发)
- 具有三大特性,所谓Java编程也始终是围绕三大特性进行的
- Java提供了基本的语言特性和类库,可以在各种操作系统和硬件平台上运行
- 目前互联网大小厂等绝大部分都在使用Java进行企业级开发(少部分也有用Python的)
框架
-
什么是框架
所谓框架,其实就是一个半成品的软件项目,是一个可复用的设计构件。我们可以在这些半成品的基础之上,来开发我们自己的应用
javaEE
- Java EE是Java平台的一个扩展,一种框架,专门用于开发企业级应用程序。Java EE适用于开发大型、分布式、可扩展的企业级应用程序,如企业级Web应用等
- 提供了分布式计算、事务处理、安全性等一系列企业级功能(Java本身不提供Java EE中的企业级功能和组件,但它可以用于开发这些功能,尽管这不是最常见的使用方式。)
- Java EE包括EJB(Enterprise JavaBeans)、JPA(Java Persistence API)、JMS(Java Message Service)等组件,支持Web应用程序和分布式系统的开发。
- 与Java区别:Java EE需要使用Java编程语言进行开发,但Java编程语言并不一定要用于开发Java EE应用程序
- 适用场景: javaee适用于企业级应用程序
spring
- 一种用于构建企业级Java应用程序的开源应用程序框架,Spring自2002年诞生至今,已有近20年的历史. Spring 致力于 JavaEE 应用各层的解决方案(表现层、业务逻辑层、持久层,但 Spring 并不是要取代那些已有的优秀框架,而是可以高度开放的与其它优秀框架无缝整合)
-
Spring 是一个分层的 full-stack(一站式)轻量级框架,以 Ioc(Inversion of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切片编程)为内核,使用简单的 JavaBean 来完成以前只能由 EJB(Enterprise Java Beans)完成的工作,取代了臃肿、低效的 EJB。
-
降低了使用 JavaEE API 的难度。Spring对JavaEE开发中难用的一些API进行了封装,降低了这些API的使用难度。
- 用于开发Java应用程序的各个方面,包括依赖注入(Dependency Injection)、面向切面编程(Aspect-Oriented Programming)、事务管理、数据访问、Web开发等
对比普通的java程序与Spring 中创建对象:
普通的Java程序:开发者需要使用关键字new显式地在代码中创建和初始化对象。 List list = new ArrayList();
在Spring框架中,对象的创建由Spring容器负责。开发者只需在配置文件或使用注解的方式中声明对象的依赖关系,Spring容器会根据配置信息自动创建和管理对象的生命周期。
-
Spring简化了应用系统的开发,IoC和AOP是它的两大核心理念。IoC容器用来管理组件和注入依赖,AOP进一步降低了模块的耦合性,提高了重用性和开发效率。
-
很容易和其他库整合,如与数据库处理的相关框架mybatis整合
-
JavaEE框架与Spring框架的对比
相同点: 都是流行的用于Java开发的框架
不同点对比:
JavaEE适用于大型企业级应用程序,而Spring更适合轻量级、灵活的应用程序
依赖项
- JavaEE依赖于JEE规范(如EJB、JPA等),需要服务器支持。
- Spring是一个轻量级的框架,依赖较少,可以在非JEE环境中使用。
复杂性
- JavaEE的模块化架构可能使其更复杂,尤其是对于大型应用程序。
- Spring的IoC容器简化了应用程序开发,使其更容易管理复杂性。
性能
- JavaEE通常比Spring更快,因为它基于更稳定的规范。
- 对于小型应用程序,Spring的性能足以满足大多数需求。
- Spring框架具有以下核心特点
轻量级:Spring框架采用了轻量级的设计思想,它不依赖于庞大的第三方库或容器。Spring的核心库非常精简,只提供了基本的功能和特性,使得应用程序可以快速启动和运行。
控制反转(IoC)和依赖注入(DI):Spring框架通过依赖注入实现了对象之间的松耦合。开发者无需自己管理对象的创建和组装,而是通过配置或注解的方式,由框架负责将依赖关系注入到对象中。这种松耦合的设计使得代码更具可测试性、可维护性和可扩展性。
面向切面编程(AOP):Spring框架提供了对面向切面编程的支持。AOP允许开发者在不修改原有代码的情况下,通过定义切面来插入横切关注点,例如日志记录、事务管理等。这种机制提高了代码的模块化和重用性,同时将核心业务逻辑与横切关注点分离开来。
容器管理:Spring框架提供了一个容器(ApplicationContext)来管理应用程序中的对象。容器负责创建、配置和管理对象的生命周期,包括依赖注入、对象的初始化和销毁等。通过容器的管理,开发者可以更方便地管理和组织应用程序的组件。
综合的解决方案:Spring框架提供了一系列的模块和工具,涵盖了各个方面的应用开发需求。例如,Spring MVC用于构建Web应用程序,Spring JDBC用于简化数据库访问,Spring Security用于身份验证和授权等。这些模块能够根据项目的需求进行选择和集成,提供了一套综合的解决方案。
高度可扩展:Spring框架具有高度的可扩展性,开发者可以通过扩展或自定义各种组件来满足特定的需求。Spring提供了扩展点和插件机制,使得开发者可以根据项目的要求进行定制和扩展,而无需改变框架的核心代码。
springmvc
- Spring MVC(Model-View-Controller)是Spring框架中的一部分,用于构建基于Java的Web应用程序
- 是一个基于MVC设计模式的Web框架,提供了一种结构化的方式来开发Web应用程序,使开发人员能够更好地管理请求、处理逻辑和呈现视图。
- 与spring的关系:Spring MVC是Spring框架的一部分,SpringMVC是Spring框架中的一个子模块,所以SpringMVC和Spring整合时更加简单,配置也更加容易。
-
SpringMVC的缺点
servlet API耦合难以脱离容器独立运行(为了运行代码,必须安装web容器)
太过于细分,开发效率低(比如,bean需要挨个配置)
-
核心组件
注:为了解耦,通常又把中间件划分为三层 即:表现层(控制层),业务逻辑层,数据访问层
Model(模型,简单理解为逻辑处理):模型代表应用程序的数据和业务逻辑。它可以是POJO(Plain Old Java Object)或者通过持久化框架与数据库交互。模型通常包含应用程序的状态和数据,以及处理这些数据的方法。
View(视图,简单里面为页面):视图负责呈现模型的数据给用户。它可以是一个JSP页面、Thymeleaf模板、HTML页面或其他类型的视图技术。视图负责展示数据给用户,并与用户进行交互。
Controller(控制器,简单理解为提供http(s)接口):控制器是模型和视图之间的协调者。它接收用户的请求,并根据请求的内容选择适当的模型和视图进行处理。控制器通常包含处理请求的方法,可以通过注解或配置进行映射。
springboot
- 一个用于简化和加速基于Spring框架的应用程序开发的开源框架
- 与Java的关系: 一种全新的框架(Java程序课程设计时也可以用springboot,但属于“杀鸡焉用牛刀”)
- 与spring的关系:Springboot是建立在Spring框架之上的(简单理解为,springboot ~= spring + springmvc + web服务器 等等)
SpringMVC是基于spring的一个MVC框架。
springboot的基于spring的条件注册的一套快速开发整合包
- 与springmvc的关系
1、Spring MVC是Spring框架的一部分,而Spring Boot则是建立在Spring框架之上的。Spring Boot可以与Spring MVC一起使用,以简化Spring MVC应用程序的配置和部署。
2、Spring Boot内置了Tomcat、Jetty等Web服务器,因此可以直接运行Spring MVC应用程序,无需手动配置和部署外部服务器。
3、Spring Boot提供了自动配置机制,可以根据应用程序的依赖和配置情况,自动配置Spring MVC的相关组件和功能(大大减少了选项配置),简化了配置过程。
4、Spring Boot还提供了许多与Web开发相关的功能和插件,例如Spring Boot Starter Web,用于自动配置Web开发所需的依赖项。二者区别:
1、Spring Boot是一个全新的框架,旨在简化Spring应用程序的开发和部署,提供了自动配置、内嵌服务器等特性。而Spring MVC是Spring框架的一部分,专注于构建Web应用程序。
2、Spring Boot关注于整个应用程序的配置和部署,提供了一种约定优于配置的方式,使得开发者可以更快地开发应用程序。而Spring MVC关注于处理Web请求和响应,提供了一种基于MVC模式的架构。
3、Spring Boot可以与Spring MVC一起使用,但它并不局限于Spring MVC,也可以与其他Spring模块(如Spring Data、Spring Security等)以及第三方库进行集成。
4、Spring Boot提供了许多开箱即用的功能和插件,使得开发人员可以更专注于业务逻辑的实现,而Spring MVC则提供了一套Web开发的基础架构和规范
- 提供了一个约定大于配置的方式,旨在最小化开发人员在配置方面的工作量,提高开发效率。
约定大于配置:
传统的软件开发往往需要大量的配置文件和手动配置步骤,开发人员需要详细配置各种参数和选项,以满足应用程序的需求。这种方式需要开发人员具备熟练的配置技能,并且容易出现配置错误和冲突。比如,springmvc 开发时需要多个配置文件,极其容易出错,而且程序部署时需要web容器如tomcat来部署运行。
约定大于配置的方式则通过事先定义一些默认约定和规则,使得开发人员可以遵循这些约定而不需要进行显式的配置。这样可以大大简化配置的过程(配置文件数量大大减少了,Spring Boot提供了一系列的默认约定和自动配置机制,开发人员只需要按照这些约定编写代码和组织项目结构,就能够快速启动应用程序,无需手动配置大量的Spring选项),减少出错的可能性(如:版本冲突大大减少了),并提高开发效率。例如,Spring Boot默认约定了一些常见的目录结构,如将应用程序的主类放置在特定的包路径下,将静态资源放置在特定的目录下等。此外,Spring Boot还提供了自动配置,根据应用程序的依赖和环境,自动配置Spring的各种组件和功能,减少了手动配置的工作量。
传统方式:
在传统的Web开发中,配置一个URL映射到一个处理方法通常需要进行显式的配置。比如,在Java Servlet中,需要在web.xml配置文件中添加以下内容:<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.test.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>在Spring Boot中,可以在一个普通的Spring MVC控制器中定义一个处理方法,并使用@RequestMapping注解指定URL映射路径。示例如下:
@Controller
public class MyTestController {
@RequestMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
-
与spring的区别
(1)springboot可以建立独立的spring应用程序。
(2)内嵌了如tomcat,Jetty和Undertow这样的容器,也就是说可以直接跑起来,用不着再做部署工作。
(3)无需再像spring那样写一堆繁琐的XML配置文件
(4)可以自动配置spring
(5)提供的POM可以简化maven的配置
-
Spring Boot 的优点
简化开发:Spring Boot通过约定大于配置的原则,提供了默认的配置和自动配置机制,大大简化了开发过程。开发人员可以专注于业务逻辑的实现,而无需花费过多时间和精力在繁琐的配置上。(代码少了、配置文件少了、不需要对第三方框架烦恼了、项目精简了,对整个团队的开发和维护来说,更大的节约了成本。)
快速启动:Spring Boot提供了快速启动的能力,开发人员可以快速地启动和运行应用程序,减少了构建和部署的时间。它内置了常用的Servlet容器,可以将应用程序打包为可执行的JAR文件,直接在内嵌容器中运行。
自动装配:Spring Boot 提供了自动装配机制,根据应用程序的依赖关系和配置信息,智能地自动配置 Spring 的各种组件和功能,大大减少了开发人员的手动配置工作,提高了开发效率。
开箱即用:Spring Boot集成了许多常用的功能和组件,如安全性、数据库访问、缓存、消息队列等。这些功能都是开箱即用的,开发人员可以直接使用,无需手动集成和配置。这大大简化了开发过程,加快了应用程序的开发速度。
自动化依赖管理:Spring Boot通过自动化依赖管理,简化了依赖库的引入和版本管理。它提供了起步依赖(Starter)的概念,开发人员只需添加相应的起步依赖,Spring Boot会自动适配依赖的版本和配置,简化了构建和管理项目的过程。
生态系统和社区支持:Spring Boot 建立在Spring框架之上,可以无缝集成 Spring 的各种功能和扩展。同时,Spring Boot 还提供了大量的第三方库和插件,可以方便地集成其他技术栈,构建全栈式应用程序。springboot的缺点
(1)修复bug较慢,报错时难以定位。
(2)集成度较高,不易于了解底层。
SSM
- SSM是多个框架的组合简称,SSM = Spring + SpringMVC + Mybatis,即Spring与Spring MVC,以及Spring 与MyBatis整合开发。这三个框架整合起来适用于搭建各种大型的企业级应用系统
注: Mybatis 也是一种框架,功能同JDBC, 用于连接数据库进行数据处理。
注:在学习SSM中,发现SpringMVC是web项目常用的框架。但近几年随着springboot的使用,springboot已经替代了springMVC了,SSM = Spring + SpringBoot + Mybatis。
- SSM是一种常用的 Java EE 开发框架组合,主要用于简化企业级应用开发。SSM 框架结合了 Spring 框架的依赖注入、控制反转和面向切面编程,Spring MVC 作为模型视图控制器,MyBatis 作为持久层框架,简化了企业级应用的开发。
- 交互图
- 应用比较广泛的 Java EE 企业级框架(JavaEE还有其他框架,如SSH)
SSH
- 基本用途同SSM, SSH = Spring + Struts + Hibernate 三大框架
注:Struts 是一个优秀、开源、免费的 MVC 的框架
-
与SSM的关系:
大约在2015年之前,业内使用最多的Java三大框架是Struts、Spring和Hibernate ,简称SSH。
2015年之后逐步被SpringMVC、Spring、MyBatis所取代,简称SSM。
SSM之所以取代SSH,在于Hibernate和MyBatis区别、SpringMVC和struts区别。
✅Hibernate和MyBatis区别
总结来说就是:
MyBatis:小巧、方便、高效、简单、直接、半自动
Hibernate:强大、方便、高效、复杂、绕弯子、全自动
举个形象的比喻:
MyBatis:机械工具,使用方便,拿来就用,但工作还是要自己来作,不过工具是活的,怎么使由我决定。
Hibernate:智能机器人,但研发它(学习、熟练度)的成本很高,工作都可以摆脱他了,但仅限于它能做的事。
相同点:
都是实现了orm模式的数据访问层框架,专门处理和数据库的交互。
不同点:
a. Hibernate通常被认为是一款完全的ORM框架。我们使用Hibernate时可以一行SQL语句都不用写,就能实现各种对数据库操作的意图。而Mybatis只是一款半完整的ORM框架,使用Mybatis需要自己编写SQL语句,因此Hibernate在功能和可移植性方面要强于Mybatis。
b. 相对于Hibernate来说,Mybatis需要关注更多的细节,更加接近jdbc的开发模式,这使得Mybatis更加容易上手。
c. 在SQL优化方面,Mybatis更加直接,更加方便。
d. Mybatis比Hibernate更加小巧灵活,对绝大多数项目来说,Mybatis足以满足项目需求,所以现在Mybatis比HIbernate更常用。
✅struts和SpringMVC区别。
相同点:
都是实现了mvc模式的 控制层框架,可以专门处理和前端的交互。
不同点:
a. Struts2中的Controller是多例的,SpringMVCController是单例的,所以SpringMVC是线程不安全的;
b. SpringMVC是Spring框架中的一个子模块,所以SpringMVC和Spring整合时更加简单,配置也更加容易。
maven
- 简化依赖的jar管理。自动下载jar包和它所依赖的包,这样可以保证了多人开发时jar版本不同的问题
相关文章:
SSM开发(一)JAVA,javaEE,spring,springmvc,springboot,SSM,SSH等几个概念区别
目录 JAVA 框架 javaEE spring springmvc springboot SSM SSH maven JAVA 一种面向对象、高级编程语言,Python也是高级编程语言;不是框架(框架:一般用于大型复杂需求项目,用于快速开发)具有三大特性,所谓Jav…...
Spring Boot中选择性加载Bean的几种方式
说明:用过Spring框架的都知道其自动装配的特性,本文介绍几种选择性加载Bean的方式。Spring自动装配参考以下两篇文章: 基于SpringBoot的三层架构开发&统一响应结果 SpringBoot自动装配原理简单分析 ConditionalOnProperty Conditiona…...
【JVM】垃圾收集器详解
你将学到 1. Serial 收集器 2. ParNew 收集器 3. Parallel Scavenge 收集器 4. Serial Old 收集器 5. Parallel Old 收集器 6. CMS 收集器 7. G1 收集器 在 Java 中,垃圾回收(GC)是自动管理内存的一个重要机制。HotSpot JVM 提供了多种…...
【实用技能】如何在Stimulsoft产品中使用用户函数,快速创建报表及仪表盘
Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能,Stimulsoft Ultimate包含了…...
MySQL四种隔离级别
MySQL的隔离级别是在事务这个大主题下面产生的说法。 那么什么是事务,事务就是一组sql语句,要么全部执行成功,要么都不执行,不能只执行成功其中的部分sql。事务的最终目的是为了保证数据库数据的完整性、一致性和可用性。 要保…...
Unity入门1
安装之后无法获得许可证,可以考虑重装 新建项目 单击空白处生成脚本 双击c#文件 会自动打开vstudio 检查引用 如果没有引用,重开vstu,或者重新加载项目 hierarchy层级 scenes场景 assets资产 inspector督察 icon图标 资源链接&…...
qml Loader详解
1、概述 QML Loader是Qt Quick框架中的一个关键元素,它允许开发者动态地加载和卸载QML组件。这种动态加载机制对于提升应用程序的性能、响应速度和用户体验至关重要。通过Loader,应用程序可以在需要时才加载特定的组件,而不是在启动时一次性…...
《安富莱嵌入式周报》第349期:VSCode正式支持Matlab调试,DIY录音室级麦克风,开源流体吊坠,物联网在军工领域的应用,Unicode字符压缩解压
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: 《安富莱嵌入式周报》第349期:VSCode正式支持Matlab调试,DIY录音室级麦克风…...
web端ActiveMq测试工具
如何用vue3创建简单的web端ActiveMq测试工具? 1、复用vue3模板框架 创建main.js,引入APP文件,createApp创建文件,并加载element插件,然后挂载dom节点 2、配置vue.config.js脚本配置 mport { defineConfig } from "vite&qu…...
1561. 你可以获得的最大硬币数目
class Solution:def maxCoins(self, piles: List[int]) -> int:piles.sort()res,n0,len(piles)for i in range(n//3):respiles[n-2-2*i]return res这里如果"你"想要获取最大,那么从最大的开始找 每隔俩算一个最大累计,Bob默认自己从最小那找…...
NIO | 什么是Java中的NIO —— 结合业务场景理解 NIO (二)
实时通信应用 的主流技术 并非NIO , 整理本文的目的是 更好的理解 NIO 。 在现代的 即时聊天应用中,使用 WebSocket、MQTT 或 SignalR 等协议更为普遍。 若您想了解 当前主流的有关 实时通信应用 的技术 , 请移步他文。 (一) 业务场景 实…...
GD32L233RB 驱动数码管
1.数码管有8段A、B、C、D、E、F、G 和 H小数点 以及片选信号(DIG) DIG用来选择那一位,A-G 用来显示段 静态显示每次只能一次显示单个位 动态显示(动态扫描)所有的位显示结束要在10ms左右 显示2ms 消光1ms 实…...
AIGC视频生成模型:Stability AI的SVD(Stable Video Diffusion)模型
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Stability AI的视频生成模型SVD(Stable Video Diffusion)模型,这家公司在图像生成领域富有盛名,开发并维护了知名开源项目SD系列…...
Linux 系统错误处理简介
Linux 系统错误处理简介 1. errno:错误代码的载体2. strerror():错误信息的翻译官3. perror():便捷的错误信息输出4. 系统调用与库函数的区别5. 错误处理的最佳实践 在 C/C 程序开发中,我们经常需要处理各种错误情况 Linux 系统提…...
systemC示例
main.cpp #include <memory> using namespace std; #include "top.h" int sc_main(int i, char *av[]) { // 关闭关于 IEEE 1666 标准中过时特性的警告 sc_report_handler::set_actions("/IEEE_Std_1666/deprecated", SC_DO_NOTHING); cout <…...
C++打字模拟
改进于 文宇炽筱_潜水 c版的打字效果_c自动打字-CSDN博客https://blog.csdn.net/2401_84159494/article/details/141023898?ops_request_misc%257B%2522request%255Fid%2522%253A%25227f97863ddc9d1b2ae9526f45765b1744%2522%252C%2522scm%2522%253A%252220140713.1301023…...
国产低功耗带LCD驱动和触摸按键功能的MCU
以下是国产低功耗、集成LCD驱动和触摸按键功能的MCU精选型号及其核心特性,结合性能、功耗和适用场景进行综合推荐: 1.灵动微MM32L0130系列 257 核心特性:低功耗:待机模式功耗低至100nA,支持多种低功耗模式。 LCD驱动&a…...
在 imx93 平台调试 nau88c10 声卡
一、环境介绍 linux 版本:6.6.52 soc:imx9331 codec:nau88c10 使用的内核文件为 Image,dtb 文件为:imx93-11x11-evk.dtb 二、硬件检查 i2s 信号线要接对 i2c 控制信号建议为 4.7k 上拉 codec 供电可以按参考设计…...
机器学习-分类算法评估标准
一. 准确率 accuracy 将预测结果和测试集的目标值比较,计算预测正确的百分比 准确率越高说明模型效果越好 from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier #加载鸢尾花…...
美区TikTok解封后如何回归使用?
随着2025年初美区TikTok解封的消息引起了广泛关注,许多用户纷纷开始重新关注这一全球最受欢迎的短视频平台。在经历了数月的禁用期后,TikTok在美国市场的回归,代表了这一平台的巨大潜力和挑战。从用户的使用习惯,到平台的内容策略…...
行人识别检测数据集,yolo格式,PASICAL VOC XML,COCO JSON,darknet等格式的标注都支持,准确识别率可达99.5%
作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C,go等语言开发经验,mysql,mongo,redis等数据库,设计模…...
grafana + Prometheus + node_exporter搭建监控大屏
本文介绍生产系统监控大屏的搭建,比较实用也是实际应用比较多的方式,希望能够帮助大家对监控系统有一定的认识。 0、规划 grafana主要是展示和报警,Prometheus用于保存监控数据,node_exporter用于实时采集各个应用服务器的事实状…...
【腾讯云】docker创建网络遇到Unable to enable SKIP DNAT rule
docker创建网络遇到Unable to enable SKIP DNAT rule 背景 今天打算在服务器上安装es,但是在创建网络时,提示 Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER…...
DeepSeek R1模型解读与使用
DeepSeek在推出R1预览版两个月后,发布了R1的正式版本,并且开源了模型,开放了API调用。我们直接来解读一下这款模型。 这是官方的性能评测图。从左到右分别是DeepSeek-R1,o1正式版,32B蒸馏版R1,o1-mini&…...
AI新玩法:Flux.1图像生成结合内网穿透远程生图的解决方案
文章目录 前言1. 本地部署ComfyUI2. 下载 Flux.1 模型3. 下载CLIP模型4. 下载 VAE 模型5. 演示文生图6. 公网使用 Flux.1 大模型6.1 创建远程连接公网地址 7. 固定远程访问公网地址 前言 在这个AI技术日新月异的时代,图像生成模型已经成为了创意工作者和开发者手中…...
api开发如何确保通过非官方库解析口令的合法性?
通过非官方库解析淘宝口令可能存在违反淘宝平台规则以及法律法规的风险,很难完全确保其合法性。如果确实有需求,可从以下几个方面尽量降低风险,提高合法性: 了解法律法规 《中华人民共和国网络安全法》:需确保解析行为…...
第6章 ThreadGroup详细讲解(Java高并发编程详解:多线程与系统设计)
1.ThreadGroup 与 Thread 在Java程序中, 默认情况下, 新的线程都会被加入到main线程所在的group中, main线程的group名字同线程名。如同线程存在父子关系一样, Thread Group同样也存在父子关系。图6-1就很好地说明了父子thread、父…...
如何使用Python脚本将本地项目上传到 GitHub
前言 这里我们通过创建一个新的github仓库,来测试我们的脚本能否上传我们本地的项目,并且进行更新。首先你需要先安装 Git,关于这部分我好像没有记录过,这里我搜索看了一下,这篇博客写的Git安装详解应该是比较齐全的&…...
css动画水球图
由于echarts水球图动画会导致ios卡顿,所以纯css模拟 展示效果 组件 <template><div class"water-box"><div class"water"><div class"progress" :style"{ --newProgress: newProgress % }"><…...
Shellcode
什么是shellcode shellcode通常是软件漏洞利用过程中使用一小段机器代码 作用 1.启动shell,进行交互 2.打开服务器端口等待连接 3.反向连接端口 4.。。。 如何编写shellcode 1.设置rdi指向/bin/sh 2.rsi0,rdx0 3.rax0x3b 4.syscall进行系统调用 64位系统…...
Element使用表单重置如果不使用prop,重置无法生效
文章目录 为什么需要 prop?示例:使用 prop 的正确方式关键点总结 在 element-ui 的 el-form 组件中, prop 属性是与表单验证和表单字段绑定密切相关的,尤其在使用 resetFields() 重置表单数据时。 如果不使用 prop࿰…...
[Qt]系统相关-网络编程-TCP、UDP、HTTP协议
目录 前言 一、UDP网络编程 1.Qt项目文件 2.UDP类 QUdpSocket QNetworkDatagram 3.UDP回显服务器案例 细节 服务器设计 客户端设计 二、TCP网络编程 1.TCP类 QTcpServer QTcpSocket 2.TCP回显服务器案例 细节 服务器设计 客户端设计 三、HTTP客户端 1.HTTP…...
两台局域网电脑通过飞秋传输大文件失败的解决方案
问题描述: 局域网两台电脑之间传输大文件(超过20G),不想太复杂,就各装个飞秋。但是通过直接发送文件发现总是失败,一会就中断了。 解决方法: 主界面上有一个文件共享的按钮,通过文…...
安卓程序作为web服务端的技术实现(二):Room 实现数据存储
已经实现web服务器安卓程序作为web服务端的技术实现:AndServer 实现登录权限拦截-CSDN博客 现在需要和正常web项目类似,那么就需要操作数据库 一般web项目都是选择较为重型的数据库如MySQL,SQL server等 这里是安卓项目,我目前…...
代码工艺:实践 Spring Boot TDD 测试驱动开发
TDD 的核心理念是 “先写测试,再写功能”,其过程遵循一个严格的循环,即 Red-Green-Refactor: TDD 的流程 1. Red(编写失败的测试) 根据需求,先编写一个测试用例,描述期望的行为。…...
MySQL命令及用法(精华版)
目录 DDL(数据定义语言) 数据库操作 表操作 DML(数据操作语言) DQL(数据查询语言) 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 DCL(数据控制语言) 用户…...
73,【5】BUUCTF WEB [网鼎杯 2020 玄武组]SSRFMe(未解出)
进入靶场 又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码 <?php // 检查 URL 是否为内部 IP 地址 function check_inner_ip($url) {// 使用正则表达式检查 URL 格式是否以 http、https、gopher 或 d…...
修改word的作者 最后一次保存者 总编辑时间 创建时间 最后一次保存的日期
作者: 1.打开word文件 2.点击左上角的文件 3.选项 4.用户信息 5.将用户信息中的 姓名改为你需要的名字 最后一次保存者 1.word重命名为.zip文件 2.docProps中有个core.xml 3.用记事本打开有个lastModifiedBy标签,将里面内容改为你需要的名字 总编辑时…...
深入MapReduce——引入
引入 前面我们已经深入了HDFS的设计与实现,对于分布式系统也有了不错的理解。 但HDFS仅仅解决了海量数据存储和读写的问题。要想让数据产生价值,一定是需要从数据中挖掘出价值才行,这就需要我们拥有海量数据的计算处理能力。 下面我们还是…...
Formality:不可读(unread)的概念
相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482https://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 在Formality中有时会遇到不可读(unread)这个概念,本文就将对此…...
leetcode刷题记录(八十一)——236. 二叉树的最近公共祖先
(一)问题描述 236. 二叉树的最近公共祖先 - 力扣(LeetCode)236. 二叉树的最近公共祖先 - 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科 [https://baike.baidu.com/item/%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B…...
C++:将字符数组rkpryyrag,每个字母转换为其前面第13个字母后输出,如果超过a则从z再继续接着数。例如:b前面第1个字母是a。a前面第3个字母是x。
代码如下: #include <iostream> #include <string> using namespace std;int main(){string str "rkpryyrag";for (int i 0; i < str.length(); i){if (str[i] > a && str[i] < z){if (str[i] - a < 13){cout <<…...
特征选择(机器学习)
目录 1. 为什么需要特征选择2. 常见的特征选择方法2.1 过滤式(Filter Methods)小示例(用 Python 伪代码表达): 2.2 包裹式(Wrapper Methods)小示例(RFE 伪代码示例)&…...
基于微信小程序的个人健康管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
Windows系统提示RunDLL PcaWallpaperAppDetect错误修复方法
最近,Win11 24H2预览版和Win10 LTSC 2025功能更新偶尔会触发RunDLL错误弹窗 具体表现为 //英文提示 Error in C:\WINDOWS\system32\PcaSvc.dll Missing entry: PcaWallpaperAppDetect//中文提示 C:\WINDOWS\system32\PcaSvc.dll出错 丢失条目:PcaWallpaperAppDe…...
文件上传漏洞详解
第一关(JS绕过) 1.1使用bp进行绕过 先将要上传的php文件的后缀改为png,然后在上传时抓包,将png后缀再改为php,发包,此时上传成功 1.2使用js进行绕过 打开浏览器的检查,将其中的checkFile函数…...
mysql的mvcc
快速搞懂mvcc 全称 multi-version concurrency control 多版本并发控制。自动开启事务undo log读视图(read_view)结果过滤mvcc只在读已提交和可重复读隔离级别下运作读已提交隔离级别下,可重复读隔离级别下,总的来说mvcc是为了提高数据库并发性能而设计的…...
漏洞情报:为什么、要什么和怎么做
漏洞一直是网络攻防的焦点所在,因为漏洞直接或间接影响安全性的核心方面——权限。攻击者挖掘和利用漏洞,获取非授权的权限;防御方定位和消除漏洞,监测和阻断漏洞的利用,使攻击者无法利用漏洞达到其目的。漏洞信息本质…...
kotlin的协程的基础概念
Kotlin的协程是一种用于简化异步编程的强大工具。 理解协程的基础概念可以帮助开发者有效地利用其能力。 以下是Kotlin协程的一些关键基础概念: 协程(Coroutines) : 协程是一种用于处理并发任务的编程模型,它可以在单…...
C语言教程——动态内存管理(2)
文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据 总结 前言 我们之前学了动态内存管理分配函数,也是熟悉了动态内存分配函数,基于动态内存分配我把之前的通讯录做了修改,上传到了gitee上,这篇文章接着…...