Sqoop【实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)

这篇具有很好参考价值的文章主要介绍了Sqoop【实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.环境说明

# 不必要信息不再贴出
# JDK
[root@tcloud ~]# java -version
java version "1.8.0_251"
# MySQL
[root@tcloud ~]# mysql -V
mysql Ver 14.14 Distrib 5.7.28
# Hadoop
[root@tcloud ~]# hadoop version
Hadoop 3.1.3
# Hive 
[root@tcloud ~]# hive --version
Hive 3.1.2
# Sqoop
[root@tcloud ~]# sqoop version
Sqoop 1.4.7

2.基本命令

1️⃣ 查看所有命令【 sqoop help 】

[root@tcloud ~]# sqoop help

Available commands:
  codegen            Generate code to interact with database records
  create-hive-table  Import a table definition into Hive
  eval               Evaluate a SQL statement and display the results
  export             Export an HDFS directory to a database table
  help               List available commands
  import             Import a table from a database to HDFS
  import-all-tables  Import tables from a database to HDFS
  import-mainframe   Import datasets from a mainframe server to HDFS
  job                Work with saved jobs
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  merge              Merge results of incremental imports
  metastore          Run a standalone Sqoop metastore
  version            Display version information

See 'sqoop help COMMAND' for information on a specific command.

2️⃣ 查看某条命令的具体使用方法【 sqoop help COMMAND 】

[root@tcloud ~]# sqoop help job

usage: sqoop job [GENERIC-ARGS] [JOB-ARGS] [-- [<tool-name>] [TOOL-ARGS]]

Job management arguments:
   --create <job-id>            Create a new saved job
   --delete <job-id>            Delete a saved job
   --exec <job-id>              Run a saved job
   --help                       Print usage instructions
   --list                       List saved jobs
   --meta-connect <jdbc-uri>    Specify JDBC connect string for the
                                metastore
   --show <job-id>              Show the parameters for a saved job
   --verbose                    Print more information while working

Generic Hadoop command-line arguments:
(must preceed any tool-specific arguments)
Generic options supported are:
-conf <configuration file>        specify an application configuration file
-D <property=value>               define a value for a given property
-fs <file:///|hdfs://namenode:port> specify default filesystem URL to use, overrides 'fs.defaultFS' property from configurations.
-jt <local|resourcemanager:port>  specify a ResourceManager
-files <file1,...>                specify a comma-separated list of files to be copied to the map reduce cluster
-libjars <jar1,...>               specify a comma-separated list of jar files to be included in the classpath
-archives <archive1,...>          specify a comma-separated list of archives to be unarchived on the compute machines

The general command line syntax is:
command [genericOptions] [commandOptions]

3.查询操作

3.1 list-databases

查询MySQL所有数据库,通常用于 Sqoop 与 MySQL 连通测试:

# 注意:以下URL写法都可以【但是建议用第一个或第四个】
jdbc:mysql://ip:port/
jdbc:mysql://ip/
jdbc:mysql://ip
jdbc:mysql://hostname:port/
jdbc:mysql://hostname/
jdbc:mysql://hostname
jdbc:mysql:///
jdbc:mysql://

【具体参数可以使用 sqoop help list-databases 查看】实例:

sqoop list-databases \
--connect jdbc:mysql://tcloud:3306/ \
--username root \
-password tcloud@2021

结果:

# INFO信息不再贴出这里只贴出WARN信息
2021-09-09 10:12:09,596 WARN tool.BaseSqoopTool: 
Setting your password on the command-line is insecure. Consider using -P instead.

Thu Sep 09 10:12:10 CST 2021 WARN: 
Establishing SSL connection without server's identity verification is not recommended.
According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be
established by default if explicit option isn't set. For compliance with existing 
applications not using SSL the verifyServerCertificate property is set to 'false'. 
You need either to explicitly disable SSL by setting useSSL=false, 
or set useSSL=true and provide truststore for server certificate verification.

information_schema
metastore
mysql
performance_schema
sys

【2个】WARN处理:

# 第一个WARN是说 在命令行中设置密码是不安全的 考虑使用-P代替 修改后
sqoop list-databases \
--connect jdbc:mysql://tcloud:3306/ \
--username root \
-P
# 然后输入密码即可【这显然不利于自动化 使用过程中我们可以忽略此WARN】
# 第二个WARN是说 不建议在不验证服务器身份的情况下建立SSL连接 并给出解决建议 修改后
sqoop list-databases \
--connect jdbc:mysql://tcloud:3306/?useSSL=false \
--username root \
-P

3.2 list-tables

查询指定数据库中所有数据表,这里要注意一下 👉(会查询出所有的表和视图,但不包含函数和存储过程)【具体参数可以使用 sqoop help list-tables 查看】实例:

# 找一个表比较少的库进行测试
sqoop list-tables \
--connect jdbc:mysql://tcloud:3306/sys?useSSL=false \
--username root \
--password aliyun@2021

结果:

2021-09-09 11:05:23,943 ERROR manager.CatalogQueryManager: Failed to list tables
java.sql.SQLException: Access denied for user 'root'@'tcloud' (using password: YES)

【1个】ERROR处理:

# 原来是密码错了 修改后
sqoop list-tables \
--connect jdbc:mysql://tcloud:3306/sys?useSSL=false \
--username root \
--password tcloud@2021

# 这里只贴出部分结果
host_summary
host_summary_by_file_io
host_summary_by_file_io_type
host_summary_by_stages
host_summary_by_statement_latency
host_summary_by_statement_type

3.3 eval

通过sqoop执行SQL语句对关系数据库进行操作,这样我们在使用import这种工具进行数据导入前,预先了解相关的SQL语句是否正确,并能将结果显示在控制台。【具体参数可以使用 sqoop help eval 查看】实例:

sqoop eval \
--connect jdbc:mysql://tcloud:3306/sys?useSSL=false \
--username root \
--password tcloud@2021 \
--query "select * from version"

# 结果
------------------
| sys_version | mysql_version |
------------------
| 1.5.2 | 5.7.28 |
------------------

4.MySQL数据导入导出到HDFS

4.1 import

  导入导出有时候我们无法分辨方向,这时把HDFS、Hive、HBase 等分布式文件存储系统当作【主体】,进入文件系统的就是导入import,从文件系统获取数据就是导出export。

  将 MySQL 数据库中的 help_keyword 表数据导入到 HDFS 的 /sqoop 目录下,如果导入目录存在则先删除再导入,使用 n 个 map tasks 并行导入。【具体参数可以使用 sqoop help import 查看】实例:

注:help_keyword 是 MySQL数据库内置的一张字典表,之后的示例均使用这张表。

  1. 直接导入
# 备注版
sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql?useSSL=false \  
--username root \
--password tcloud@2021 \
--table help_keyword \			# 待导入的表名称
--delete-target-dir \ 			# 目标目录存在则先删除
--target-dir /sqoop \			# 导入的目标目录
--fields-terminated-by '\t' \	# 指定导出数据的分隔符
-m n							# 指定并行执行的 map tasks 数量

# 可执行版
sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql?useSSL=false \
--username root \
--password tcloud@2021 \
--table help_keyword \
--delete-target-dir \
--target-dir /sqoop \
--fields-terminated-by '\t' \
-m 1

结果,这里只保留WARN信息:

# 这个WARN我们可以忽略
2021-09-09 13:40:51,014 WARN tool.BaseSqoopTool: 
Setting your password on the command-line is insecure. Consider using -P instead.

# 开启直接模式 MySQ会使用自带的导入导出工具进行处理
2021-09-09 13:40:59,272 WARN manager.MySQLManager: 
It looks like you are importing from mysql.
This transfer can be faster! Use the --direct
option to exercise a MySQL-specific fast path.

# 原因是 mapred-site.xml 配置了yarn模式 启动yarn 或者去掉yarn配置都行
# 【云服务器内存较小所以选择去掉了yarn】
2021-09-09 13:40:59,682 INFO client.RMProxy: 
Connecting to ResourceManager at tcloud/xxx.xx.x.x:8032

2021-09-09 13:41:01,488 INFO ipc.Client: Retrying connect to server: 
tcloud/xxx.xx.x.x:8032. Already tried 0 time(s); 
retry policy is RetryUpToMaximumCountWithFixedSleep(
maxRetries=10, sleepTime=1000 MILLISECONDS)

解决无法连接 ResourceManager 后再次执行,出现 ClassNotFoundException:

2021-09-09 14:55:36,267 WARN mapred.LocalJobRunner: job_local1346801578_0001
java.lang.Exception: java.lang.RuntimeException:
java.lang.ClassNotFoundException: Class help_keyword not found

这个很明显是执行job时找不到jar包导致的,处理方法是将生成到 /tmp/sqoop-你的用户名/compile(或者是/tmp/sqoop/compile)的文件放到$SQOOP_HOME/lib文件夹下,也可以使用–bindir指定生成代码的文件夹,处理后:

sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql?useSSL=false \
--username root \
--password tcloud@2021 \
--table help_keyword \
--delete-target-dir \
--target-dir /sqoop \
--fields-terminated-by '\t' \
--bindir /usr/local/sqoop/lib/ \
-m 1

修改–bindir后执行仍然会报错,但是这次会生成jar文件,再次执行就成功了,但是这样下去,lib下的文件会越来越多,不是办法:

[root@tcloud lib]# ll
total 17820
-rw-r--r-- 1 root root     611 Sep  9 15:09 help_keyword$1.class
-rw-r--r-- 1 root root     617 Sep  9 15:09 help_keyword$2.class
-rw-r--r-- 1 root root    9441 Sep  9 15:09 help_keyword.class
-rw-r--r-- 1 root root     237 Sep  9 15:09 help_keyword$FieldSetterCommand.class
-rw-r--r-- 1 root root    5294 Sep  9 15:09 help_keyword.jar
-rw-r--r-- 1 root root   11509 Sep  9 15:09 help_keyword.java

⚠️以下方法无法解决此问题,仍然需要使用 --bindir $SQOOP_HOME/lib:

【方法一❌】

# 1.配置Hadoop的core-site.xml添加sqoop1代理
vim /usr/local/hadoop-3.1.3/etc/hadoop/core-site.xml
	# 添加以下内容
	<property>
		<name>hadoop.proxyuser.sqoop1.hosts</name>
		<value>*</value>
	</property>
	<property>
		<name>hadoop.proxyuser.sqoop1.groups</name>
		<value>*</value>
	</property>
  
# 2.comma separated list of system users who CAN run applications
# 【可以运行应用程序的系统用户列表,以逗号分隔】
vim /usr/local/hadoop-3.1.3/etc/hadoop/container-executor.cfg
	# 添加
	allowed.system.users=root,sqoop1

【方法二❌】

# 将生成的jar文件配置到第三方库
vim /etc/profile.d/my_env.sh
	# 添加
	export SQOOP_SERVER_EXTRA_LIB=/tmp/sqoop-root/compile
  1. 【增量导入】追加模式和最后修改模式
# 追加模式
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword \
--target-dir /sqoop/part-m-00000 \
--incremental append \
--check-column help_keyword_id \
--last-value '666' \
--bindir /usr/local/sqoop/lib/ \
-m 1 

# 最后修改模式
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table slow_log\
--target-dir /sqoop/part-m-00000 \
--incremental lastmodified \
--check-column start_time\
--last-value '2021-09-08 20:59:15' \
--bindir /usr/local/sqoop/lib/ \
-m 1 

incremental 参数有以下两个可选的选项:

  • append:要求参考列的值必须是递增的,所有大于 last-value 的值都会被导入;
  • lastmodified:要求参考列的值必须是 timestamp 类型,且插入数据时候要在参考列插入当前时间戳,更新数据时也要更新参考列的时间戳,所有时间晚于 last-value 的数据都会被导入。

Sqoop1的增量导入是依靠维护的参考列来判断哪些是增量数据。我们也可以使用 query 参数来进行手动的增量导入,会更加灵活。

  1. SQL语句导入
# 注意:不能添加--table参数
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--query 'SELECT help_keyword_id,name from help_keyword where $CONDITIONS' \
--delete-target-dir \
--target-dir /sqoop_query \
--bindir /usr/local/sqoop/lib/ \
-m 1 

4.2 export

【具体参数可以使用 sqoop help export 查看】导出的表必须预先创建,建表语句如下:

CREATE TABLE help_keyword_from_hdfs LIKE help_keyword ;
# 导出数据存储在 MySQL 的help_keyword_from_hdf 的表中
sqoop export \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword_from_hdfs \
--export-dir /sqoop \
--input-fields-terminated-by '\t'\
--bindir /usr/local/sqoop/lib/ \
--m 1
  
# 采用export插入数据的时候,如果数据已经存在了,插入会失败
# 如果我们使用-update-key,它会认为每个数据都是更新,比如我们使用下面这条语句:
sqoop export \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword_from_hdfs \
--update-key help_keyword_id \
--export-dir /sqoop \
--input-fields-terminated-by '\t'\
--bindir /usr/local/sqoop/lib/ \
--m 1
  
--update-mode allowinsert # 如果存在就更新,不存在就插入

5.MySQL数据导入导出到Hive

Sqoop 导入数据到 Hive 是通过先将数据导入到 HDFS 上的临时目录,然后再将数据从 HDFS 上 Load 到 Hive 中,最后将临时目录删除。可以使用 target-dir 来指定临时目录。

5.1 import

  1. 数据导入

导入到 Hive 中的 sqoop_test 数据库需要预先创建,不指定则默认使用 Hive 中的 default 库。

# 查看 hive 中的所有数据库
hive> SHOW DATABASES;
# 创建 sqoop_test 数据库
hive> CREATE DATABASE sqoop_test;
# 备注版
sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword \     	
# 待导入的表  
--delete-target-dir \     		
# 如果临时目录存在删除
--target-dir /sqoop_hive \  	
# 临时目录位置
--hive-database sqoop_test \ 	 
# 导入到Hive的sqoop_test数据库,库需要预先创建。不指定则默认为default库
--hive-import \        		
# 导入到 Hive
--hive-overwrite \     		
# 如果 Hive 表中有数据则覆盖,这会清除表中原有的数据,然后再写入
--bindir /usr/local/sqoop/lib/ \
-m 1							
# 并行度
 
# 可执行版
sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword \
--delete-target-dir \
--target-dir /sqoop_hive \
--hive-database sqoop_test \
--hive-import \
--hive-overwrite \
--bindir /usr/local/sqoop/lib/ \
-m 1
  • -hive-table emp指定在Hive中创建的表名为emp(默认数据库default)
  • -hive-table sqoop.emp指定在Hive中的sqoop数据库下创建emp表
  • -fields-terminated-by “\0001” 是设置每列之间的分隔符,“\0001"是ASCII码中的1,是hive的默认行内分隔符,而sqoop的默认行内分隔符为”,"
  • -lines-terminated-by “\n” 设置的是每行之间的分隔符,此处为换行符,也是默认的分隔符;
  1. 导入验证
# 查看 sqoop_test 数据库的所有表
hive> SHOW TABLES IN sqoop_test;
# 查看表中数据
hive> SELECT * FROM sqoop_test.help_keyword;
  1. 可能出现的问题
# 如果执行报错  
java.io.IOException: 
java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf
# 则需将 Hive 安装目录下 lib 下的 hive-exec-**.jar 放到 ${SQOOP_HOME}/lib。
# 查看
[root@tcloud lib]# ll hive-exec-*
-rw-rw-r-- 1 root root 41068549 Apr 15  2020 hive-exec-3.1.2.jar
# 复制
[root@tcloud lib]#cp hive-exec-3.1.2.jar ${SQOOP_HOME}/lib

5.2 export

由于 Hive 的数据是存储在 HDFS 上的,所以 Hive 导入数据到 MySQL,实际上就是 HDFS 导入数据到 MySQL。

  1. 查看Hive表在HDFS的存储位置
# 进入对应的数据库
hive> use sqoop_test;
# 查看表信息
hive> desc formatted help_keyword;
# Location 属性为其存储位置 
# hdfs://tcloud:8020/user/hive/warehouse/sqoop_test.db/help_keyword
  1. 执行导出命令

MySQL 中的表需要预先创建:

CREATE TABLE help_keyword_from_hive LIKE help_keyword ;
# 需要注意的是 hive 中默认的分隔符为 \001
sqoop export \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword_from_hive \
--export-dir /user/hive/warehouse/sqoop_test.db/help_keyword \
-input-fields-terminated-by '\001' \       
--bindir /usr/local/sqoop/lib/ \
-m 1

6.MySQL导入数据到HBase

HBase数据库暂时没有安装,这里是之前验证过的笔记,当前环境未验证。这里只举例从 RDBMS 导入数据到 HBase,因为暂时没有命令能够从 HBase 直接导出数据到RDBMS。

5.1 import

  1. 导入数据

导入的 HBase 表需要预先创建:

# 查看所有表
hbase> list
# 创建表
hbase> create 'help_keyword_hbase', 'keywordInfo'
# 查看表信息
hbase> desc 'help_keyword_hbase'

将 help_keyword 表中数据导入到 HBase 上的 help_keyword_hbase 表中,使用原表的主键 help_keyword_id 作为 RowKey ,原表的所有列都会在 keywordInfo 列族下,目前只支持全部导入到一个列族下,不支持分别指定列族。

# 备注版
sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword \					# 待导入的表
--hbase-table help_keyword_hbase \		# hbase 表名称,表需要预先创建
--column-family 'keywordInfo' \			# 所有列导入到 keywordInfo 列族下
--hbase-row-key help_keyword_id \		# 使用原表的 help_keyword_id 作为 RowKey
--bindir /usr/local/sqoop/lib/ \
-m 1

# 可执行版
sqoop import \
--connect jdbc:mysql://tcloud:3306/mysql \
--username root \
--password tcloud@2021 \
--table help_keyword \
--hbase-table help_keyword_hbase \
--column-family 'keywordInfo' \
--hbase-row-key help_keyword_id \
--bindir /usr/local/sqoop/lib/ \
-m 1
  1. 导入验证

使用 scan 查看表数据:

hbase(main):008:0> scan 'help_keyword_hbase'

7.总结

至此,Sqoop的核心导入导出举例完成,这次遇到的问题和之前的不同,不同环境下执行的情况有所不同,java.lang.ClassNotFoundException: Class tableName not found 的问题在此版本下未能彻底解决,希望知道如何解决的小伙伴儿们能不吝赐教 🙏文章来源地址https://www.toymoban.com/news/detail-841298.html

到了这里,关于Sqoop【实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySql workBench客户端菜单汉化最新版

    找到Mysql Workbench安装目录 如:D:softMySQLMySQL Workbench 8.0 CE 进入data目录:D:softMySQLMySQL Workbench 8.0 CEdata 里面有main_menu.xml文件,将汉化文件覆盖即可 main_menu.xml汉化内容

    2024年01月19日
    浏览(43)
  • 最新版Flink CDC MySQL同步Elasticsearch(一)

    首先我们要基于Flink CDC MySQL同步MySQL的环境基础上(flink-1.17.1、Java8、MySQL8)搭建Elasticsearch7-17-10和Kibana 7.17.10。笔者已经搭建好环境,这里不做具体演示了,如果需要Es的搭建教程情况笔者其他博客 注意: 建议生产环境统一使用稳定版本Flink1.16.*。笔者这里只是作为教程编写

    2024年02月13日
    浏览(38)
  • 最新版Flink CDC MySQL同步MySQL(一)_flink 连接mysql(1)

    下载 连接器 SQL jar (或 自行构建 )。 将下载的jar包放在FLINK_HOME/lib/. 重启Flink集群。 注意 :目前2.4以上版本需要进行自行编译构建。本文笔者自行进行构建上传的 6.使用 Flink CDC 对 MySQL 进行流式 ETL 本教程将展示如何使用 Flink CDC 快速构建 MySQL的流式 ETL。 假设我们将产品数

    2024年04月26日
    浏览(48)
  • 忘记mysql密码后如何修改密码(2022最新版详细教程保姆级)

    一共用到两个cmd窗口,每一个都要以管理员身份打开 ,且在修改密码后,要先关闭第一个 跳过验证密码的mysql服务 的cmd窗口,再启动mysql,否则会出错。 在修改密码前,mysql必须处于关闭状态。 1.以 管理员的身份 打开 cmd窗口 , 找到mysql安装的路径并打开bin目录 2.在 bin路径

    2024年02月06日
    浏览(48)
  • Docker安装最新版MySQL5.7(mysql-5.7.40)教程(参考Docker Hub)

       MySQL官方安装包下载地址:   https://dev.mysql.com/downloads/mysql/      Docker Hub官方网址:   https://hub.docker.com/     【MySQL系列安装部署教程】 写最好的Docker安装最新版MySQL8(mysql-8.0.31)教程(参考Docker Hub和MySQL官方文档)   最新MySQL-5.7.40在云服务器Centos7.9安装部署

    2023年04月23日
    浏览(51)
  • 服务注册与发现:Nacos为例 (内附最新版基于Mysql存储Docker Compose部署)

    在现代微服务架构中, 服务注册与发现 中间件已经成为了一个重要的分布式系统协调工具。为什么我们需要这样一个工具?分布式系统需要有效和可靠的工具来管理配置数据、服务发现和协调。 Nacos 作为一体化服务发现与配置管理工具,扮演着服务注册与发现中间件的重要

    2024年02月19日
    浏览(49)
  • 写最好的Docker安装最新版MySQL8(mysql-8.0.31)教程(参考Docker Hub和MySQL官方文档)

       MySQL官方安装包下载地址:   https://dev.mysql.com/downloads/mysql/      Docker Hub官方网址:   https://hub.docker.com/     如果需要了解Centos7下MySQL5.7最新版的安装部署,可参考教程【最新MySQL-5.7.40在云服务器Centos7.9安装部署)】。      本教程是笔者参考Docker Hub和MySQL官

    2024年02月01日
    浏览(45)
  • SpringSecurity最新版从入门到精通,WebSecurityConfigurerAdapter已经过时?最新版来了。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 spring security的超详细配置和使用攻略,包括从登录校验开始到不同页面、不同功能的权限管理,包括了整合thymeleaf框架、用户登录信息持久化处理、csrf防护等web安全。 SpringSecurity是SpringBoot支持的高度可

    2024年02月13日
    浏览(58)
  • 【最新版配置conda环境】新版pycharm导入新版anaconda环境

    最近下载了新版pycharm和新版anaconda,并且在命令行创建了环境,想着在pycharm里面导入环境。结果现在的导入方式发生了变化。 之前是通过导入Python.exe进行的。 现在: 当我们点击进去之后,会发现找不到python.exe了。 具体什么原因我不知道,应该是版本问题。 解决方法: 通

    2024年02月08日
    浏览(56)
  • 抖音协议最新版

    抖音核心协议的步骤是 : 1、在查询串插入一个固定的键rstr 2、对查询串进行按键排序并取值,对空格和+进行转义为a 3、然后取MD5;如果时间轴1为1,那么取多一次MD5 4、将MD5结果分别和5******6、1******4进行2次错位排序算法 5、将4的结果再进行一次错位排序,得到26位字符 6、

    2024年02月13日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包