Spring Security入门基础

文章目录

  • Spring Security入门基础
  • 一,Spring Security的使用
    • 1.1 基本术语
    • 1.2 基本使用
      • 1.2.1 引入依赖
      • 1.2.2 配置文件
      • 1.2.3 测试接口
    • 1.3 过滤器链的15个过滤器
    • 1.4 自定义用户认证 WebSecurityConfigurerAdapter
      • 1.4.1 configure(HttpSecurity http)
      • 1.4.2 configure(AuthenticationManagerBuilder auth)
      • 1.4.3 configure(WebSecurity web)
      • 1.4.4 自定义表单登录

一,Spring Security的使用

1.1 基本术语

SpringSecurity是一个强大的可高度定制的认证和授权框架,对于Spring应用来说它是一套Web安全标准。Spring Security注重于为java应用提供认证和授权功能。

OAuth2是用于授权的行业标准协议,为简化客户端开发提供类特定的授权流。

Resource owner(资源拥有者):拥有该资源的最终用户,有访问资源的账号密码。

Resource server(资源服务器):拥有受保护资源的服务器,如果请求包含正确的访问令牌,可以访问资源。

Client(客户端):访问资源的客户端,会使用访问令牌去获取资源服务器的资源,可以是浏览器,移动设备或者服务器。

Authorization server(授权服务器):用于授权用户的服务器,如果客户端授权通过,发放访问资源服务器的令牌。

四种授权模式:

  • Authorization Code(授权码模式):客户端先将用户导向授权服务器,登陆后获取授权码,然后进行授权,最后根据授权码获取访问令牌。

  • Implicit(简化模式):和授权码模式相比,取消了获取授权码的过程,直接获取访问令牌。

  • Resource Owner Password Credential(密码模式):客户端直接向用户获取用户名和密码,之后向授权服务器获取访问令牌。

  • Client Credential(客户端模式):客户端直接通过客户端授权,从授权服务器获取访问令牌。

1.2 基本使用

1.2.1 引入依赖

新创建模块tools-security,引入依赖:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--    安全认证    --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>

1.2.2 配置文件

server:port: 9040spring:application:name: tools-security

1.2.3 测试接口

    @RequestMapping("test")public String test() {return "test";}

运行项目,在以下截取的部分日志中,找到 Using generated security password,后面的字符串为原始密码(每次运行结果不同),账号为 user

2021-10-23 15:52:58.472  WARN [tools-security,,] 100588 --- [  restartedMain] o.s.c.s.a.z.ZipkinAutoConfiguration      : Check result of the [RestTemplateSender{http://localhost:9411/api/v2/spans}] contains an error [CheckResult{ok=false, error=org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request: [Empty JSON_V2 message]}]
2021-10-23 15:52:59.049  INFO [tools-security,,] 100588 --- [  restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-10-23 15:52:59.303  INFO [tools-security,,] 100588 --- [  restartedMain] .s.s.UserDetailsServiceAutoConfiguration : Using generated security password: 0c731ade-806a-4a8e-83e1-e11044fe0f48

访问 http://localhost:9040/test , 会先跳到默认的登录页面,输入账号(user)密码(0c731ade-806a-4a8e-83e1-e11044fe0f48)即可进行访问到 /test 接口。

1.3 过滤器链的15个过滤器

1. org.springframework.security.web.context.SecurityContextPersistenceFilter

首当其冲的一个过滤器

SecurityContextPersistenceFilter主要是使用SecurityContextRepository在session中保存或更新一个securityContext,并将SecurityContext给以后的过滤器使用,来为后续Filter建立所需的上下文。

2. org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter

此过滤器用于集成SecurityContext到Spring异步执行机制中的WebAsyncManager

3. org.springframework.security.web.header.HeaderWriterFilter

向请求的Header中添加相应的信息,可在http标签内部使用security:headers来控制

4. org.springframework.security.web.csrf.CsrfFilter

csrf又称跨域请求伪造,SpringSecurity会对所有post请求验证是否包含系统生成的CSRF的token信息,如果不包含,则报错。起到防止CSRF攻击的效果。

5. org.springframework.security.web.authentication.logout.LogoutFilter

匹配URL为/logout的请求,实现用户退出,清除认证信息。

6. org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter

认证操作全靠这个过滤器,默认匹配URL为/login且必须为post请求。

7. org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter

如果没有在配置文件中指定认证页面,则由该过滤器生成一个默认认证页面

8. org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter

由此过滤器可以生产一个默认的退出登录页面

9. org.springframework.security.web.authentication.www.BasicAuthenticationFilter

此过滤器会自动解析http请求中头部名字为Authentication,且以Basic 开头的头信息。

10. org.springframework.security.web.savedrequest.RequestCacheAwareFilter

通过HttpSessionRequestCache内部维护了一个RequestCache,用于缓存HttpServletRequest

11. org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter

针对ServletRequest进行了一次包装,使得request具有更加丰富的API

12. org.springframework.security.web.authentication.AnpnymousAuthenticationFilter

当SecurityContextHolder中认证信息为空,则会创建一个匿名用户存入到SecurityContextHolder中。

spring security为了兼容未登录的访问,也走了一套认证流程,只不过是一个匿名的身份。

13. org.springframework.security.web.session.SessionManagementFilter

SecurityContextRepository限制同一用户开启多个回话的数量

14. org.springframework.security.web.access.ExceptionTranslationFilter

异常转移过滤器位于整个SpringSecurityFilterChain的后方,用来转换整个链路中出现的异常。

15. org.springframework.security.web.access.intercept.FilterSecurityinterceptor

获取所配置资源访问的授权信息,根据SecurityContextHolder中存储的用户信息来决定其是否有权限

1.4 自定义用户认证 WebSecurityConfigurerAdapter

前面的做法是使用默认账号user和应用启动时自动生成的密码进行访问认证。但是,每个系统都应该有自己的用户体系,需要自定义用户的登录认证和接口的认证控制,这里就需要对WebSecurityConfiguration进行配置,主要关注三个方法:configure(HttpSecurity http),configure(AuthenticationManagerBuilder auth)和configure(WebSecurity)。

  • HttpSecurity 允许基于选择匹配在资源级配置基于网络的安全性,并声明任何其他网址需要成功验证。也就是对角色的权限——所能访问的路径做出限制。
  • AuthenticationManagerBuilder 用于通过允许AuthenticationProvider容易地添加来建立认证机制。配置的是认证信息 主要配置用户身份和角色信息也就是说用来记录账号,密码,角色信息。
  • WebSecurity 用于影响全局安全性(配置资源,设置调试模式,通过实现自定义防火墙定义拒绝请求)的配置设置。一般用于配置全局的某些通用事物,例如静态资源等。

创建WebSecurityConfiguration.java,继承WebSecurityConfigurerAdapter

@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {}

1.4.1 configure(HttpSecurity http)

HttpSecurity 有重要的两个方法authorizeRequests()和requestMatchers()

authorizeRequests()

授权管理控制的方法

这个方法返回一个ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry对象。

authorizeRequests定义那些url需要被保护,那些不需要进行保护,通常出来在配置的第一行。

Security所有的权限控制都基于这个类进行控制。如:

http.authorizeRequests().anyRequest().authenticated()要求所有接口都需要进行权限认证,等同于http.authorizeRequests().antMatchers("/**").authenticated();

而http.authorizeRequests().antMatchers("/**").permitAll()这个配置则要求所有接口都不需要进行权限认证,等同于http.authorizeRequests().anyRequest().permitAll()

另外这两个代码中antMatchers方法则是配置匹配规则。即哪些接口需要进行权限认证或不需要进行权限认证。

anyRequest():所有接口

authenticated():需要进行权限认证

permitAll():不需要进行权限认证

antMatchers(String):匹配接口

requestMatchers()

取得RequestMatcherConfigurer对象并配置允许过滤的路由;如requestMatchers().anyRequest()等同于http.authorizeRequests().anyRequest().access(“permitAll”);

举例:

package com.lmc.security.conf;import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;/*** @author lmc* @Description: TODO* @Create 2021-10-23 19:55* @version: 1.0*/
@Configurationpublic class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/403", "/404", "/500").permitAll()    // 访问403/404/500时不需要认证.anyRequest().authenticated()   // 其他请求需要认证.and().formLogin()    // 通过form进行登录.and().csrf().disable();  // 关闭跨站请求伪造保护}
}

在以上配置中,我定义了请求为/403,/404和/500的三个接口不需要接受认证,直接放行;然后其他请求都需要认证;然后登录时要使用form方式,同时关闭跨站请求伪造保护。

在配置之前,我已经创建了403/404/500三个页面

@Controller
public class PageController {@RequestMapping("403")public String accessError() {return "403";}@RequestMapping("404")public String notFound() {return "404";}@RequestMapping("500")public String serverError() {return "500";}}

此时,运行项目,访问 /404 接口能正常访问,然后访问 /test 接口时,会跳到Spring Security默认登录页面,输入账号密码后才放行。

1.4.2 configure(AuthenticationManagerBuilder auth)

使用自定义用户密码登录(内存方式)

    @Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication()   // 在内存存储用户信息.withUser("lmc").password("{noop}123") // 用户名为lmc,密码为123,{noop}表示密码不加密.roles("USER");  // 给用户lmc赋予USER角色}

spring security默认使用密码是需要加密的,即.password(String)里的密码已经是加密过的字符串,如果在前面加上{noop},就表示非加密的密码

.withUser("lmc").password("{noop}123")也可以写成
.passwordEncoder(new BCryptPasswordEncoder()).withUser("lmc").password(new BCryptPasswordEncoder().encode("123"))

注意,在security5.0之前默认加密方式是BC,所以只需要写成

.withUser("lmc").password(new BCryptPasswordEncoder().encode("123"))

就可以,但是5.0后加密方式要自己定义,所以需要使用 passwordEncoder() 方法来定义加密方式,否则会报出以下异常:

There is no PasswordEncoder mapped for the id "null"

1.4.3 configure(WebSecurity web)

配置静态资源,忽略认证

    @Overridepublic void configure(WebSecurity web) throws Exception {web.ignoring().antMatchers("/assets/**").antMatchers("/403", "/404", "/500").antMatchers("/login.html");}

其实,configure(WebSecurity web) 的内容基本都可以在 configure(HttpSecurity http) 中配置,例如以上的配置在configure(HttpSecurity http)中配置如下:

	@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/403", "/404", "/500").permitAll()    // 访问403/404/500时不需要认证.antMatchers("/assets/**").permitAll().antMatchers("/login.html").permitAll();}

不过,我们一般将类似登录页面,以及错误页面,静态资源等通用事物,到 configure(WebSecurity web) 中配置,configure(HttpSecurity http) 偏向基于网络的安全性,也就是对角色权限的控制,泾渭分明,塑造更好的可观性。

1.4.4 自定义表单登录

我们经常不会使用security的默认登录页面,需要自己创建开发自定义登录页,可以通过HttpSecurity的方法进行操作。

先自定义登录页面:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Login Page</title><!-- 引入样式 --><link rel="stylesheet" href="/assets/element-ui/index.css">
</head>
<style>.el-header {background-color: #1B73E8;color: white;text-align: left;line-height: 60px;}.el-footer {background-color: #F5F5F5;color: black;text-align: center;line-height: 60px;font-size: 12px;}.el-main {background-color: white;color: #333;text-align: center;line-height: 160px;}body > .el-container {margin-bottom: 40px;}.el-row {margin-bottom: 20px;}.el-col {border-radius: 4px;}.bg-purple-dark {background: #99a9bf;}.bg-purple {background: #d3dce6;}.bg-purple-light {/*background: #e5e9f2;*/}.grid-content {border-radius: 4px;min-height: 36px;height: 800px;}.row-bg {padding: 10px 0;background-color: #f9fafc;}.el-card {padding: 80px;height: 638px;}
</style>
<body><div id="app"><el-container><el-header>lmc-tools</el-header><el-main><el-row :gutter="20"><el-col :span="7"><div class="grid-content bg-purple"></div></el-col><el-col :span="10"><div class="grid-content bg-purple-light"><el-card class="box-card"><el-form ref="form" action="/login" method="post" :model="form" :rules="rules" label-width="100px" name="loginform" class="login-form"><el-form-item label="用户名" prop="username"><el-input v-model="form.username" name="username" clearable></el-input></el-form-item><el-form-item label="密码" prop="password"><el-input v-model="form.password" name="password" show-password type="password" clearable></el-input></el-form-item><el-form-item><el-button type="primary" @click="submitForm('form')">登录</el-button></el-form-item></el-form></el-card></div></el-col><el-col :span="7"><div class="grid-content bg-purple"></div></el-col></el-row></el-main><el-footer>Copyright © 2021 lmc</el-footer></el-container></div>
</body>
<!-- 引入vue -->
<script src="/assets/vue/vue.js"></script>
<!-- 引入Element-UI组件库 -->
<script src="/assets/element-ui/index.js"></script>
<script>new Vue({el: "#app",data: {form: {username: '',password: ''},rules: {username: [{required: true, message: '用户名不能为空', trigger: 'blur'}],password: [{required: true, message: '密码不能为空', trigger: 'blur'}]}},methods: {// 登录按钮触发事件submitForm: function(formName) {// 验证输入框是否为空this.$refs[formName].validate((valid) => {if (valid) {document.loginform.submit()}})}}})</script>
</html>

定义访问登录页接口:

    /*** 登录页面* @return*/@RequestMapping("login.html")public String login() {return "login";}

配置类修改:

package com.lmc.security.conf;import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;/*** @author lmc* @Description: TODO* @Create 2021-10-23 19:55* @version: 1.0*/
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {@Overridepublic void configure(WebSecurity web) throws Exception {web.ignoring().antMatchers("/assets/**").antMatchers("/403", "/404", "/500").antMatchers("/login.html");}@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication()   // 在内存存储用户信息.withUser("lmc").password("{noop}123") // 用户名为lmc,密码为123,{noop}表示密码不加密.roles("USER");  // 给用户lmc赋予USER角色}@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().anyRequest().authenticated()   // 其他请求需要认证.and().formLogin()    // 通过form进行登录.loginPage("/login.html").loginProcessingUrl("/login").failureUrl("/500").and().csrf().disable();  // 关闭跨站请求伪造保护}
}

此时,访问 http://localhost:9040/test 会跳到 http://localhost:9040/login.html 页面,如果账号密码输入错误,就会跳到失败页面 http://localhost:9040/500 ,自定义登录已完成。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. LeetCode 7 整数翻转

    给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09; 解题思路&#xff1a;&#…...

    2024/5/2 22:26:15
  2. mp3解码 - 文档参考

    官方文档 ISO_11172-3 下载ISO.IEC-13818-1下载 学位论文 南京邮电大学2004级 曾涛 毕业论文大连海事大学2006年 李菁菁 《MP3软件解码器的研究与实现》 博客文章 lfp001 用JAVA编写MP3解码器系列 原文链接xsjm206 博客链接张芳涛 MP3解码算法原理解析...

    2024/5/5 18:54:59
  3. 程序设计与C语言

    第一节&#xff1a;1.1引例 &#xff08;1&#xff09;c程序由函数组成 &#xff08;2)所以的C程序有且只有一个main&#xff08;&#xff09;函数。C程序总是从main()函数的第一条语句开始运行&#xff0c;当main&#xff08;&#xff09;函数结束时&#xff0c;程序也就结束…...

    2024/5/6 1:27:45
  4. 二叉树-堆(2)

    文章目录向上调整建堆堆的代码实现Heap.hHeap.c初始化堆销毁堆插入数据删除数据获取堆顶数据判断堆是否为空获取堆中数据个数打印堆中数据test.cTOP-K问题向上调整建堆 我们知道对一个数组建堆&#xff0c;有向下调整算法来建堆&#xff0c;但向上调整同样可以建堆。首先可以把…...

    2024/5/5 20:43:25
  5. 博客网站设置SSL证书

    刚得到的域名是没有安全证书的&#xff0c;在地址栏https处有警告&#xff0c;在cPanel主域中也会提示有风险&#xff0c;因此我们需要给我们的网站设置SSL证书&#xff08;b站视频教程&#xff09; 1.登陆SSLforfree官方网站 登陆https://zerossl.com/&#xff0c;然后输入自己…...

    2024/5/2 22:26:04
  6. MySQL进阶之路(十八)—— 最常用的索引使用规则

    最常用的索引使用规则&#xff08;干货篇&#xff09; 文章目录最常用的索引使用规则&#xff08;干货篇&#xff09;一、概述二、常用规则1、等值匹配规则2、最左匹配规则3、最左前缀匹配规则4、范围匹配规则5、最左匹配规则 等值匹配规则 范围匹配规则三、小结一、概述 ​…...

    2024/5/5 23:15:03
  7. display 和float

    <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>div{height: 200px;width: 200px;border-color: #d99f23;display: inline-block;/*行内元素展示&#xff0c;块元素的…...

    2024/5/2 22:25:55
  8. MySQL和Redis数据一致性

    MySQL和Redis数据一致性双写一致性1.什么是双写一致性&#xff1f;2.数据读取的过程3.保证双写一致性的策略&#xff1a;1.什么是双写一致性&#xff1f; 当我们更新了数据库的数据之后&#xff0c;同时保证redis的数据库同时更新。 2.数据读取的过程 当有请求读取数据库的时…...

    2024/5/5 18:37:19
  9. 问题来了,如何轻松给Spring Boot配置文件加个密?

    在实践中&#xff0c;项目的某些配置信息是需要进行加密处理的&#xff0c;以减少敏感信息泄露的风险。比如&#xff0c;在使用Druid时&#xff0c;就可以基于它提供的公私钥加密方式对数据库的密码进行加密。 但更多时候&#xff0c;比如Redis密码、MQ密码等敏感信息&#xf…...

    2024/5/2 22:25:47
  10. Microsoft SQL Server 下载汇总 SQL Server 2019

    腾讯云秒杀&#xff1a;2核4G8M 下行100M&#xff0c;74元每年&#xff01; 请访问原文链接&#xff1a;https://sysin.org/blog/sql-server/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者&#xff1a;gc(at)sysin.org&#xff0c;主页&#xff1a;www.…...

    2024/5/2 22:25:43
  11. Java 笔记01

    package hello;public class Hello{ //创建一个类叫做Hellopublic int age; //属性public double salary;//属性//功能public Hello(int ageValue,double salaryValue) {age ageValue;salary salaryValue; }void key() {System.out.println("world");}public s…...

    2024/5/2 22:25:39
  12. 【LeetCode-876题】链表的中间节点

    题目&#xff1a;给定一个头结点为 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;[1,2,3,4,5] 输出&#xff1a;此列表中的结点 3 (序列化形式&#xff1a;[3,4,5]) 返回的结…...

    2024/5/2 22:25:36
  13. 有疑问的题目

    有一分数序列&#xff0c;2/1,3/2,5/3,8/5,13/8,21/13,.....求出这个数列的前20项之和。 #include<iostream> using namespace std; int main() { double x, sum 2,a 1, b 2, t 1;//a为分母&#xff0c;b为分子,t为次数 while (t < 20) { b a b; a b …...

    2024/5/2 22:25:31
  14. 分支、循环语句经典例题

    一、写代码将三个整数数按从大到小输出 方法1. #include<stdio.h>int main() {int a 0;int b 0;int c 0;scanf("%d %d %d", &a, &b, &c);if (a > b && b > c)printf("%d %d %d", a, b, c);else if (a > c &&am…...

    2024/5/2 22:25:28
  15. Python知识点

    Python知识点 python中的lambda函数与sorted函数 lambda函数 匿名函数lambda&#xff1a;是指一类无需定义标识符&#xff08;函数名&#xff09;的函数或子程序。 lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值 例1:传入多个参数的lambda函数 …...

    2024/5/2 22:25:23
  16. unity导出带admob sdk时显示cocospod错误

    之前一直能顺利导出&#xff0c;因最近测试xcode版本的admob sdk时需要更新cocospod版本&#xff0c;在更新到1.11.2后发现unity带admob sdk的文件在导出时会显示如下错误&#xff1a; iOS framework addition failed due to a CocoaPods installation failure. This will wil…...

    2024/5/2 22:25:20
  17. 海量数据库的查询优化及分页算法方案[转帖]

    随着“金盾工程”建设的逐步深入和公安信息化的高速发展,公安计算机应用系统被广泛应用在各警种、各部门。与此同时,应用系统体系的核心、系统数据的存放地――数据库也随着实际应用而急剧膨胀,一些大规模的系统,如人口系统的数据甚至超过了1000万条,可谓海量。那么,如何…...

    2024/5/2 22:25:16
  18. 笔记本电脑显卡风扇不转了怎么办,笔记本显卡风扇转不了如何解决

    我们的生活已经离不开电脑了,它不仅丰富娱乐了我们的生活,而且还辅助我们工作.但是我们的电脑常常会出现一些小问题,今天小编来跟大家说说笔记本电脑显卡风扇不转了怎么办的解决方法. 笔记本电脑显卡风扇不转了怎么办的解决方法&#xff1a; 不可以开机 1.首先我们打开机箱&…...

    2024/5/2 22:25:12
  19. Day4 10.23 Python

    1.打印 9 * 9乘法表&#xff1a; 格式&#xff1a; 1 * 1 1 2 * 1 2 2 * 2 4 3 * 1 3 3 * 2 6 3 * 3 9 … 9 * 1 9 9 * 2 18 … 9 * 9 81 使用for循环来实现(嵌套循环)使用while循环来实现(嵌套循环) 2.异常处理的使用&#xff1a; (1)列表超出索引: list_data [1,…...

    2024/5/2 22:25:07
  20. 进阶_ASM_1_内存模型抽象

    内存模型抽象1 内存的 3 segment 模型2 Heap Segment2.1 堆是个大数组&#xff01;2.2 “堆内存压缩”概念2.3 “堆分块”概念3 Stack Segment3.1 活动记录4 Code Segment4.1 定长指令编码4.2 变长指令编码1 内存的 3 segment 模型 2 Heap Segment “堆内存管理器”负责“堆”…...

    2024/5/2 22:25:04

最新文章

  1. C++入门 ——类和对象(二)

    this指针 this指针的引出 我们先来定义一个日期类 Date class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout <<_year<< "-" <<_month << "-"<< _da…...

    2024/5/6 1:43:45
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 电脑上音频太多,播放速度又不一致,如何批量调节音频播放速度?

    批量调节音频速度是现代音频处理中的一个重要环节&#xff0c;尤其在音乐制作、电影剪辑、有声书制作等领域&#xff0c;它能够帮助制作者快速高效地调整音频的播放速度&#xff0c;从而满足特定的制作需求。本文将详细介绍批量调节音频速度的方法、技巧和注意事项&#xff0c;…...

    2024/5/5 8:32:39
  4. 是德科技安捷伦 E5052B信号源分析仪

    181/2461/8938产品概述&#xff1a; Keysight E5052B&#xff08;安捷伦&#xff09;信号源分析仪&#xff0c;10 MHz 至 7 GHz&#xff0c;具有许多增强的性能特性。它在表征 VCO 或其他类型的高频信号源以及高速数据通信系统中的时钟抖动评估方面提供了世界上最高的测量吞吐…...

    2024/5/5 17:57:23
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57