springboot第32集:redis系统-android系统-Nacos Server

news2024/11/17 11:33:59

Error parsing HTTP request header HTTP method names must be tokens

检查发送HTTP请求的客户端代码,确保方法名中不包含非法字符。通常情况下,HTTP请求的方法名应该是简单的标识符,例如"GET"、"POST"、"PUT"等。

如果你使用的是浏览器发送HTTP请求(例如使用JavaScript中的Fetch或XMLHttpRequest),请检查你的代码中是否正确指定了HTTP方法名,并且没有包含非法字符。

  1. and: SQL中的逻辑运算符,用于连接多个条件,表示所有条件必须同时满足。 示例:SELECT * FROM users WHERE age > 18 AND gender = 'male';

  2. extractvalue: XML类型的SQL函数,用于从XML文档中提取特定值。 示例:SELECT EXTRACTVALUE(xml_column, '/path/to/node') FROM table; 注解:由于容易导致XPath注入攻击,已被弃用。

  3. updatexml: XML类型的SQL函数,用于在XML文档中更新指定的节点值。 示例:UPDATE table SET xml_column = UPDATEXML(xml_column, '/path/to/node', 'new_value') WHERE id = 1; 注解:容易导致XPath注入攻击,已被弃用。

  4. exec: SQL Server中的命令,用于执行存储过程或批处理命令。 示例:EXEC sp_who; 注解:容易导致SQL注入攻击,已被弃用。

  5. insert: SQL中的关键字,用于向数据库表中插入新的数据。 示例:INSERT INTO users (name, age) VALUES ('John Doe', 25);

  6. select: SQL中的关键字,用于从数据库表中查询数据。 示例:SELECT * FROM products WHERE category = 'Electronics';

  7. delete: SQL中的关键字,用于从数据库表中删除数据。 示例:DELETE FROM users WHERE status = 'inactive';

  8. update: SQL中的关键字,用于更新数据库表中的数据。 示例:UPDATE employees SET salary = 50000 WHERE department = 'IT';

  9. drop: SQL中的关键字,用于删除数据库表或其他数据库对象。 示例:DROP TABLE users;

  10. count: SQL中的聚合函数,用于统计满足条件的记录数量。 示例:SELECT COUNT(*) FROM orders WHERE status = 'completed';

  11. chr: SQL中的函数,用于返回指定编码的字符。 示例:SELECT CHR(65); -- 返回 'A'

  12. mid: SQL Server中的函数,用于返回字符串的子串。 示例:SELECT MID('Hello, World!', 1, 5); -- 返回 'Hello'

  13. master: SQL Server中的系统数据库。 示例:USE master;

  14. truncate: SQL中的关键字,用于快速删除表中的所有数据。 示例:TRUNCATE TABLE logs;

  15. char: SQL中的函数,用于返回指定ASCII码对应的字符。 示例:SELECT CHAR(65); -- 返回 'A'

  16. declare: SQL中的关键字,用于声明变量或游标。 示例:DECLARE @name VARCHAR(50);

  17. or: SQL中的逻辑运算符,用于连接多个条件,表示任意一个条件满足即可。 示例:SELECT * FROM products WHERE category = 'Electronics' OR price > 500;

  18. +: SQL中的算术运算符,用于加法运算。 示例:SELECT price + tax AS total FROM products;

  19. user(): SQL中的函数,用于返回当前登录用户。 示例:SELECT user();

  20. like: SQL中的条件运算符,用于模糊匹配字符串。 示例:SELECT * FROM products WHERE name LIKE '%apple%';

  21. between: SQL中的条件运算符,用于指定范围内的条件。 示例:SELECT * FROM sales WHERE amount BETWEEN 1000 AND 5000;

  22. in: SQL中的条件运算符,用于指定多个条件之一的匹配。 示例:SELECT * FROM customers WHERE country IN ('USA', 'Canada', 'UK');

  23. not: SQL中的逻辑运算符,用于取反条件。 示例:SELECT * FROM products WHERE NOT category = 'Electronics';

  24. join: SQL中用于连接多个表的操作,常见的有INNER JOINLEFT JOIN等。 示例:SELECT orders.order_id, customers.name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;

  25. union: SQL中用于合并多个查询结果集的操作。 示例:SELECT name, email FROM customers WHERE country = 'USA' UNION SELECT name, email FROM customers WHERE country = 'Canada';

  26. group by: SQL中用于对查询结果进行分组的操作。 示例:SELECT category, COUNT(*) AS total FROM products GROUP BY category;

  27. having: SQL中用于在GROUP BY子句中添加条件过滤。 示例:SELECT category, COUNT(*) AS total FROM products GROUP BY category HAVING total > 10;

  28. order by: SQL中用于对查询结果进行排序的操作。 示例:SELECT * FROM products ORDER BY price DESC;

  29. as: SQL中用于为列或表起别名。 示例:SELECT id AS product_id, name AS product_name FROM products;

  30. case: SQL中的条件语句,类似于编程语言中的switch语句。 示例:SELECT name, grade, CASE WHEN grade >= 60 THEN 'Pass' ELSE 'Fail' END AS result FROM students;

  31. ANDOR:用于逻辑条件的连接,在查询条件中使用。 示例:SELECT * FROM employees WHERE age > 30 AND department = '销售部门';

  32. INSERT:用于向数据库表中插入新的行。 示例:INSERT INTO employees (name, age, department, salary) VALUES ('John', 35, '销售部门', 2000);

  33. UPDATE:用于更新数据库表中的行。 示例:UPDATE employees SET salary = 2200 WHERE department = '销售部门';

  34. DELETE:用于从数据库表中删除行。 示例:DELETE FROM employees WHERE age > 60;

  35. SELECT:用于从数据库表中检索数据。 示例:SELECT name, age, department FROM employees WHERE salary > 3000;

  36. DROP:用于删除数据库对象,如表、视图等。 示例:DROP TABLE employees;

  37. COUNT:用于统计满足条件的行数。 示例:SELECT COUNT(*) FROM employees WHERE department = '人事部门';

  38. CHARMIDMASTER:用于字符串处理和其他一些特定的操作。 示例:SELECT * FROM employees WHERE name LIKE '%Smith%';

  39. DECLARE:用于声明存储过程或变量。 示例:DECLARE @deptName VARCHAR(50) = '销售部门';

  40. EXEC:用于执行存储过程或动态SQL语句。 示例:EXEC usp_GetEmployeeByID @empID = 1001;

-- 错误示例(容易受到SQL注入攻击)
const name = userInput;
const query = `SELECT * FROM employees WHERE name = '${name}';`;

-- 正确示例(使用参数化查询)
const name = userInput;
const query = `SELECT * FROM employees WHERE name = ?;`;
db.query(query, [name]);
  1. Redis配置:检查服务器上的Redis配置,确保其设置正确。可能存在与数据逐出策略或TTL(生存时间)相关的设置,导致缓存在一定时间后被清除。

  2. Redis数据持久性:在某些情况下,Redis可能被配置为使用非持久性存储模式,这意味着数据仅保存在内存中而不保存到磁盘。这可能会导致服务器重新启动后数据丢失。

  3. 多个实例:如果您的应用程序在多个服务器实例上运行(负载均衡环境),而Redis缓存在它们之间没有共享,每个实例可能有自己的缓存,导致不一致的行为。

  4. 内存限制:服务器可能有限的可用内存,如果Redis缓存大小超过了限制,可能会导致数据逐出或清空。

  5. 缓存过期:检查存储在Redis缓存中的令牌是否设置了特定的到期时间(TTL)。如果令牌过期得太快,可能会导致缓存被清除。

  6. user www www;: 指定Nginx运行的用户和用户组,通常设置为www用户和www组。

  7. worker_processes auto;: 设置Nginx的工作进程数,auto表示根据系统的CPU核心数自动设置。

  8. error_log /www/wwwlogs/nginx_error.log crit;: 指定错误日志文件的路径和日志等级,这里设置为crit表示只记录严重错误。

  9. pid /www/server/nginx/logs/nginx.pid;: 指定Nginx主进程的PID文件路径。

  10. worker_rlimit_nofile 51200;: 设置每个Nginx工作进程允许打开的最大文件数。

  11. stream { ... }: 定义一个stream块,用于配置TCP/UDP代理和负载均衡。

  12. events { ... }: 定义一个events块,用于配置Nginx的事件处理器,例如使用epoll作为事件驱动机制。

  13. http { ... }: 定义一个http块,用于配置HTTP服务器的行为和虚拟主机。

  14. include mime.types;: 包含mime.types文件,该文件定义了MIME类型与文件扩展名的映射关系。

  15. include proxy.conf;: 包含proxy.conf文件,该文件用于配置Nginx的反向代理行为。

  16. default_type application/octet-stream;: 设置默认MIME类型为application/octet-stream。

  17. server_names_hash_bucket_size 512;: 设置服务器名称哈希桶的大小。

  18. client_header_buffer_size 32k;: 设置接收HTTP请求头的缓冲区大小。

  19. large_client_header_buffers 4 32k;: 设置接收大型HTTP请求头的缓冲区大小。

  20. client_max_body_size 50m;: 设置客户端请求体的最大大小为50MB。

  21. sendfile on;: 启用sendfile机制,提高文件传输性能。

  22. tcp_nopush on;: 启用tcp_nopush选项,减少TCP传输的延迟。

  23. keepalive_timeout 60;: 设置HTTP keep-alive连接的超时时间为60秒。

  24. tcp_nodelay on;: 启用tcp_nodelay选项,提高TCP传输性能。

  25. fastcgi_...: 一系列FastCGI相关的配置,用于设置FastCGI连接和缓冲区的参数。

  26. gzip ...: 一系列Gzip相关的配置,用于启用Gzip压缩和设置压缩参数。

  27. limit_conn_zone ...: 设置连接数限制的相关配置。

  28. server_tokens off;: 禁止在响应头中显示Nginx版本号。

  29. access_log off;: 禁用访问日志记录。

  30. server { ... }: 定义一个虚拟主机,监听在端口888,用于处理名为phpmyadmin的请求。

  31. location ~ /tmp/ { ... }: 匹配以/tmp/开头的URL,当请求该URL时返回403禁止访问。

  32. location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { ... }: 匹配以.gif、.jpg、.jpeg、.png或.bmp结尾的URL,设置其过期时间为30天。

  33. location ~ .*.(js|css)?$ { ... }: 匹配以.js或.css结尾的URL,设置其过期时间为12小时。

  34. location ~ /.: 匹配以.开头的URL,拒绝访问。

  35. access_log /www/wwwlogs/access.log;: 设置访问日志文件的路径。

redis:
  # 地址,根据实际情况填写
  host: localhost
  # 端口,默认为6379,根据实际情况填写
  port: 6379
  # 数据库索引,根据实际情况填写
  database: 0
  # 密码,如果设置了Redis密码访问限制,填写正确的密码,否则留空
  password:
  # 连接超时时间,根据实际网络状况和请求响应时间调整,10秒可能需要调整
  timeout: 30s
  lettuce:
    pool:
      # 连接池中的最小空闲连接,根据服务器并发连接数需求调整
      min-idle: 10
      # 连接池中的最大空闲连接,根据服务器并发连接数需求调整
      max-idle: 50
      # 连接池的最大数据库连接数,根据服务器并发连接数需求调整
      max-active: 100
      # 连接池最大阻塞等待时间(使用负值表示没有限制),根据服务器响应速度调整
      max-wait: 500ms

# 开启RDB快照持久化,每900秒(15分钟)至少1个修改则持久化
save 900 1

# 开启AOF日志持久化,每秒fsync
appendonly yes
appendfsync everysec

# 指定RDB快照和AOF日志的存储位置,根据实际磁盘空间和目录权限调整
dir /path/to/redis-data/

# 开启tcp-keepalive,防止长时间空闲连接被关闭
tcp-keepalive 60

# 关闭Redis的服务器信息,避免泄露服务器信息
databases 16

# 关闭Redis的服务器信息,避免泄露服务器信息
server_tokens no

# 关闭访问日志,避免记录敏感信息
access_log off

# 如果服务器有足够的内存,开启内存碎片整理
activedefrag yes
23944815c964749704ed86595aaa4481.png
image.png

AOF(Append-Only File)持久化是Redis一种持久化数据的机制,它可以在Redis服务器运行期间将写命令追加到AOF文件中,以保证数据在服务器重启后的持久性。

具体来说,以下两个配置参数与AOF持久化相关:

  1. appendonly: 这个配置项用于开启(yes)或关闭(no)AOF持久化。如果设置为yes,表示开启AOF持久化,Redis会将每个写命令追加到AOF文件中,以记录所有数据更改操作。如果设置为no,则关闭AOF持久化,Redis将不会将写命令追加到AOF文件,从而不记录数据更改操作。

  2. appendfsync: 这个配置项用于设置AOF文件刷新(sync)的频率。当AOF持久化开启时,Redis会将写命令追加到AOF文件中,但数据并不立即写入磁盘,而是先存放在操作系统的缓存中,然后根据appendfsync的设置进行刷新到磁盘。可选的值有以下三种:

  • always: 表示每个写命令都立即强制刷新到磁盘,保证数据的完全持久化。这是最安全的选项,但也会导致IO性能较差。

  • everysec: 表示每秒钟执行一次刷新操作,将缓存中的数据刷入磁盘。这在很多场景下是一个不错的折中方案,可以保证较好的持久性,同时又不会对IO性能造成太大影响。

  • no: 表示不进行强制刷新,由操作系统自行决定刷新时机。这种配置可以获得最好的性能,但在服务器发生故障时可能会有数据丢失的风险。

需要注意的是,如果关闭AOF持久化(appendonly设置为no),在Redis重启时可能会丢失从上次RDB快照以来的所有数据更改,因为写命令没有被记录在AOF文件中。因此,如果需要数据的持久性和较高的数据安全性,建议开启AOF持久化,并根据业务需求选择合适的appendfsync选项。如果服务器的磁盘空间较小,可以选择everysec,如果对数据持久性要求非常高,可以选择always,但要注意对IO性能的影响。

// 心跳消息
const heartbeatMessage = 'ping'
// 定时发送心跳消息
setInterval(() => {
    socket.value.send(heartbeatMessage)
}, 5000000000)
// 监听消息事件
socket.value.onmessage = (event: { data: any }) => {
    const message = event.data

    if (message === heartbeatMessage) {
        // 收到心跳消息,做相应处理
    } else {
        // 处理其他消息
    }
}
// 为了保持 WebSocket 连接的活跃状态,可以使用心跳机制定期发送心跳消息。

Installed Build Tools revision 33.0.1 is corrupted. Remove and install again using the SDK Manager.

使用了el-rowel-col来构建网格布局。el-row代表一行,el-col代表网格列,通过在el-col上设置不同的响应式属性(如:md:sm)来控制列在不同屏幕尺寸下的宽度。

installed build tools revision 31.0.0 is corrupted. remove and install again using the sdk manager

这个错误表明安装的 Build Tools 版本 31.0.0 是损坏的,需要使用 SDK Manager 删除并重新安装。

使用 SDK Manager 删除 Build Tools 的步骤如下:

  1. 打开 SDK Manager。

  2. 在左侧导航栏中选择 "SDK Tools"。

  3. 找到 "Android SDK Build-Tools",选择它并点击 "Uninstall" 按钮。

  4. 按照提示完成删除操作。

重新安装 Build Tools 的步骤如下:

  1. 打开 SDK Manager。

  2. 在左侧导航栏中选择 "SDK Tools"。

  3. 找到 "Android SDK Build-Tools",选择版本 31.0.0 并点击 "Apply" 按钮。

  4. 按照提示完成安装操作。

最后还需要配置环境变量,使系统可以找到这些工具。

完成以上操作后,应该能够解决 "installed build tools revision 31.0.0 is corrupted" 的错误。

服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件。

SpringCloud是基于SpringBoot提供的一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件。使用的组件包括 Eureka、Ribbon、Fegin、Hystrix、Zuul等。

Eureka 服务注册与发现

Ribbon和Feign负载均衡

Hystrix服务熔断

  • 服务熔断

某个服务故障或者异常,类似现实世界中的“保险丝”,当某个异常条件被触发,直接熔断整个服务,而不是一直等到此服务超时。

  • 服务降级

就是当某个服务熔断后,服务将不再被调用,此时客户端可以自己准备一个本地的fallback回调,返回一个缺省值,这样做,虽然服务水平下降了,但好歹可用,比直接挂掉要强。

6a04d4e5817aed3d1ce65ff6f5d95c37.png
image.png
48fcd707b6ad98d0457aac99d2ad6b0e.png
image.png
08a4d2df764575a8e0368951591725a8.png
image.png
dd6859e289784236cca811b0ded2da13.png
image.png
1873f29ab1dd826d357500b3001864b5.png
image.png
45d83ae4a4927b7d5dfe0592e0edf724.png
image.png
92bd4d12c57438924853bb9a5c2a8c49.png
image.png

搭建Eureka Server集群

在本地的hosts文件中添加如下配置

95248839855a88e90ebbb9c63fa2a8a4.png
image.png
e64267aeb0c5b372eeac988595667938.png
image.png
523dcbfaa41ccf11e10116fbd68bd1ea.png
image.png

微服务

Spring Cloud 是一个服务治理平台,是若干个框架的集合,提供了全套的分布式系统解决方案。包含了:服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列等等。

  • Nacos:阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  • Sentinel:面向分布式服务架构的轻量级流量控制产品,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

  • RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

  • Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架,用于实现服务通信。

  • Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

  • Spring Cloud Netflix Eureka:服务注册中心。

  • Spring Cloud Zookeeper:服务注册中心。

  • Spring Cloud Consul:服务注册和配置管理中心。

  • Spring Cloud Netflix Ribbon:客户端负载均衡。

  • Spring Cloud Netflix Hystrix:服务容错保护。

  • Spring Cloud Netflix Feign:声明式服务调用。

  • Spring Cloud OpenFeign(可替代 Feign):OpenFeign 是 Spring Cloud 在 Feign 的基础上支持了 Spring MVC 的注解,如 @RequesMapping等等。OpenFeign 的 @FeignClient 可以解析 SpringMVC 的 @RequestMapping 注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

  • Spring Cloud Netflix Zuul:API 网关服务,过滤、安全、监控、限流、路由。

  • Spring Cloud Gateway(可替代 Zuul):Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

  • Spring Cloud Security:安全认证。

  • Spring Cloud Config:分布式配置中心。配置管理工具,支持使用 Git 存储配置内容,支持应用配置的外部化存储,支持客户端配置信息刷新、加解密配置内容等。

  • Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。

  • Spring Cloud Stream:消息驱动微服务。

  • Spring Cloud Sleuth:分布式服务跟踪。

  • Spring Cloud Alibaba Nacos:阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  • Spring Cloud Alibaba Sentinel:面向分布式服务架构的轻量级流量控制产品,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

  • Spring Cloud Alibaba RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

  • Spring Cloud Alibaba Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架,用于实现服务通信。

  • Spring Cloud Alibaba Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

采用前后端分离的模式,微服务版本前端

  • 后端采用Spring Boot、Spring Cloud & Alibaba。

  • 注册中心、配置中心选型Nacos,权限认证使用Redis。

  • 流量控制框架选型Sentinel,分布式事务选型Seata。

faa536f17012aa5ab5a06326c4fdcc0c.png
image.png

Nacos Server下载地址:

https://github.com/alibaba/nacos/releases

提供了zip 包,nacos-server-1.1.3.zip

上传到linux,并解压缩

1、上传到 /work,然后解压缩

cd  /work

unzip  nacos-server-1.1.3.zip

2、或者,从虚拟机的共享目录,复制到 /work目录,然后解压缩:

cp  /vagrant/nacos-server-1.1.3.zip  /work/
cd  /work
unzip  nacos-server-1.1.3.zip

如果unzip命令不存在,则安装unzip命令

yum install -y unzip zip

启动服务器

单机模式运行启动方法:

/work/nacos/bin/startup.sh -m standalone

如果在windows服务器,也就启动的命令不同而已

startup.cmd -m standalone

设置Nacos开机启动

编辑启动配置文件 /etc/rc.local,加入开机启动项,里面添加内容:

# 开机启动 Nacos
/usr/bin/su  - root  -c   "/work/nacos/bin/startup.sh -m standalone"

访问后台

Nacos Server的后台访问地址:

http://192.168.233.128:8848/nacos

默认账号和密码为:nacos nacos

会用到的命令

停止 : /work/nacos/bin/shutdown.sh

启动 : /work/nacos/bin/startup.sh   -m standalone

加群联系作者vx:xiaoda0423

仓库地址:https://github.com/webVueBlog/JavaGuideInterview

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/800300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java语法基础--基本数据类型

一、数据类型概括 1、整数类型 2、浮点型 3、布尔类型 4、字符类型 二、数据类型的使用 1、整数类型的使用 超出类型范围 //1.1 定义一个byte类型的变量,并且设置它超过byte类型范围// 如果定义的数值在byte类型范围内,那么就能正常使用,//…

flask中的cookies介绍

flask中的cookies介绍 “Cookie” 在 web 开发中是一种非常重要的技术,用于在客户端(即用户的浏览器)存储信息,以便在多个页面和多个访问会话之间保持状态。Cookies 通常用于记住用户的登录信息,跟踪用户在站点上的浏…

自动化测试测试框架封装改造

PO模式自动化测试用例 PO设计模式是自动化测试中最佳的设计模式,主要体现在对界面交互细节的封装,在实际测试中只关注业务流程就可以了。 相较于传统的设计,在新增测试用例后PO模式有如下优点: 1、易读性强 2、可扩展性好 3、…

【数据库原理】三级项目——数据库基本操作

一、项目名称 数据库基本操作 二、项目内容 了解一种DBMS的功能和界面。使用图形化界面创建数据库。使用图形化界面创建课本70页习题6中的关系表。使用图形化界面向所建的关系表中插入数据。完成70页习题6第3-5小题的各项查询。查询每个城市供应的零件总数。查询使用零件数量…

安卓:视图绑定——ButterKnife

目录 一、ButterKnife介绍 二、ButterKnife优点: 三、ButterKnife的使用 build.gradle添加 ButterKnife 依赖: 1、视图绑定: 2、点击事件绑定: 3、资源绑定: 4.绑定多个视图元素: 5.绑定视图容器&…

内核链表在用户程序中的移植和使用

基础知识 struct list_head {struct list_head *next, *prev; }; 初始化: #define LIST_HEAD_INIT(name) { (name)->next (name); (name)->prev (name);} 相比于下面这样初始化,前面初始化的好处是,处理链表的时候,不…

Python中运行取消Python console模式

在Python里run的时候突然会发现,进入的不是run模式,而是console模式,这种运行模式能保留你每次的运行历史,因为会重开一个运行小页面,关闭操作如下:

GAMES104里渲染等一些剩下的问题

渲染的一些剩下的问题 1. 如何理解渲染中的AO(环境光遮蔽) 环境光遮蔽 我们先从一个简单的效果开始—环境光遮蔽(Ambient Occlusion,以下简称AO)。大家可以看到,下图中的场景没有任何渲染效果,也没有任何着色效果,但场景呈现出了非常清晰的…

大数据学习教程:Linux 基础教程(上)

1 操作系统概述 1.1 计算机原理 现代计算机大部分都是基于冯.诺依曼结构,该结构的核心思想是将程序和数据都存放在计算机中,按存储器的存储程序首地址执行程序的第一条指令,然后进行数据的处理计算。 计算机应包括运算器、控制器、储存器、…

PLC学习的步骤与重点:

熟悉基础元器件的原理和使用方法:了解按钮、断路器、继电器、接触器、24V开关电源等基础元器件的原理和使用方法,并能够应用它们来实现简单的逻辑电路,例如电机的正反转和单按钮的启停控制。 掌握PLC的接线方法:了解PLC的输入输出…

【C++进阶:map和set】

本节涉及到的所有代码见以下链接,欢迎参考指正! ​​​​​​​ practice: 课程代码练习 - Gitee.comhttps://gitee.com/ace-zhe/practice/tree/master/map%E5%92%8Cset ​​​​​​​ 关联式容器 在C初阶阶段,已经学习并总了STL中的部分…

麒麟信安携手先进数通发布“多云协同,加速推进服务器虚拟化国产平滑迁移”信创联合解决方案

金融行业是现代经济的核心,金融行业信息技术应用创新是关系“国家安全”和“科技强国”战略的重要工程。为满足银行等金融机构数字化转型和信创发展的双重需求,麒麟信安与北京先进数通信息技术股份公司携手推出“多云协同,加速推进服务器虚拟…

Elisp之message为内容增加颜色(二十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

驱动 CAN总线

Controller Area Network(控制器局部网络)是一种有效支持分布式控制或实时控制的串行异步半双工的现场总线,支持多主机多从机,需要 CAN控制器 和 CAN收发器 的硬件支持 标准内容ISO 11898-1:2015定义数据链路层(包括逻…

「二叉树与递归的一些框架思维」

文章目录 0 二叉树1 思路2 刷题2.1 二叉树的最大深度题解Code结果 2.2 二叉树的直径题解Code结果 2.3 在每个树行中找最大值题解Code结果 2.4 翻转二叉树题解Code结果 2.5 二叉树展开为链表题解Code结果 2.6 每日一题:数组中两元素的最大乘积题解Code结果 0 二叉树 …

华为开源自研AI框架昇思MindSpore应用案例:Vision Transformer图像分类

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 二、环境准备与数据读取三、模型解析Transformer基本原理Attention模块 Transformer EncoderViT模型的输入整体构建ViT 四、模型训练与推理模型训练模型验证模型推理 近些年,随着基于自注意&…

Spring——Spring是什么?IoC容器是什么?

文章目录 前言一、Spring是什么1.IoC 容器 —— 容器2.IoC 容器 —— IoC传统程序开发控制反转式程序开发 3.Spring IoC 二、DI是什么总结 前言 本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话,互关一下…

Vue2基础四、生命周期

零、文章目录 Vue2基础四、生命周期 1、生命周期 Vue生命周期:一个Vue实例从 创建 到 销毁 的整个过程。生命周期四个阶段:① 创建 ② 挂载 ③ 更新 ④ 销毁 创建阶段:创建响应式数据挂载阶段:渲染模板更新阶段:修改…

基于K8s环境·使用ArgoCD部署Jenkins和静态Agent节点

今天是「DevOps云学堂」与你共同进步的第 47天 第⑦期DevOps实战训练营 7月15日已开营 实践环境升级基于K8s和ArgoCD 本文节选自第⑦期DevOps训练营 , 对于训练营的同学实践此文档依赖于基础环境配置文档, 运行K8s集群并配置NFS存储。实际上只要有个K8s集…

Spring Security内置过滤器详解

相关文章: OAuth2的定义和运行流程Spring Security OAuth实现Gitee快捷登录Spring Security OAuth实现GitHub快捷登录Spring Security的过滤器链机制Spring Security OAuth Client配置加载源码分析 文章目录 前言OAuth2AuthorizationRequestRedirectFilterOAuth2Log…