Token原理
Q:分布式场景下如何生成token以及使用token的流程:
在分布式场景下,可以采用以下方式生成 token 和进行权限认证:
1. 生成 token:
使用JWT(JSON Web Token)生成 token。JWT 是一种基于 JSON 的开放标准(RFC 7519),定义了一种简洁的、自包含的方式,用于通信双方之间以 JSON 对象的形式安全地传递信息(token)。JWT 包含了三部分:头部、载荷和签名。头部包含了 token 的类型和采用的加密算法,载荷则包含了需要传递的信息,签名则是对头部和载荷的一种数字签名,用于验证 token 的合法性。可以使用各种编程语言提供的 JWT 库生成和解析 JWT。
2. 实现权限认证:
使用 JWT 进行权限认证。客户端在请求 API 时将生成的 token 放入请求头中,在服务端对请求进行处理时,可以对 token 进行解析和验证,根据载荷中的信息进行权限认证。同时,服务端也可以在响应头中返回新的 token,用于更新之前的 token,以确保 token 在有效期内进行使用。服务端可以使用单点登录(SSO)的机制,使用中心化的认证服务(如 CAS、OAuth2 等)进行统一认证和授权管理。
在分布式场景下,由于系统的不同服务可能由不同的开发人员以及用于不同目的,所以统一的认证服务非常必要,可以节省时间与避免低级的错误。而 JWT 是一种解决方案,具有可靠性高、灵活性强、使用方便、可 HTML 单点登录等特点,可以在分布式环境下有效解决 token 和权限认证问题。
Q:详细说一下使用token的认证流程:
使用 token 进行认证的流程通常如下:
1. 用户使用用户名和密码进行登录,服务端验证身份并生成一个 token。
2. 服务端将生成的 token 返回给客户端,在响应头中包含 Authorization 字段,并指定 token 的类型(例如 Bearer)。
3. 客户端将 token 存储在本地,通常是通过存储在 cookie 或 local storage 中。
4. 客户端调用需要身份认证的 API 时,将 token 放入 HTTP 请求头中的 Authorization 字段中,并指定 token 的类型。
5. 服务端验证请求头中的 token 是否有效和合法,如果是,则响应请求并返回所需数据或执行所需操作,否则返回错误响应(例如 401 Unauthorized)。
6. 如果需要,服务端也可以在响应头中返回新的 token,用于更新之前的 token,以确保 token 在有效期内进行使用。
总的来说,token 认证的流程是在用户登录时获取 token,之后在 HTTP 请求头里携带 token,服务端在响应请求时对 token 进行验证并返回相应结果,同时可以在响应头中返回新的 token(用于更新之前的 token)。在此流程中,token 被用来验证用户身份,以及确保请求的合法性。
Q:如果服务A生成了token,下次客户端带着这个token访问服务B,这时候怎么处理
在这种情况下,服务器B不会直接接受和识别服务器A生成的 token。由于每个服务器的 token 签名验证密钥不同,因此服务器B无法验证来自服务器A的 token 是否有效。因此,如果客户端想要与服务器B进行交互,则需要重新获取由服务器B颁发的 token。
通常情况下,应该让客户端在已经获取新的 token 之后,再次向服务器B发送请求(包括新的 token)。此时,服务器B将验证新 token 的有效性,并响应请求或者返回错误信息,以此确保请求的安全性和有效性。如果新的 token 有效,则服务器B将继续进行后续处理,并在需要的情况下返回新的 token。这样,客户端就可以在以后的请求中使用新的 token。
Q: 如果服务A有1000台机器,那么每次访问不同的机器都需要重新生成token吗
如果某个服务A有1000台机器,那么客户端在访问服务A时,每次都需要使用相同的 token 来进行认证。
一种可行的方式是,在客户端获取 token 后,将其存储在持久化存储介质中(例如本地存储,Cookie,session等),每次访问服务A时,从存储介质中获取 token 后将其添加到 HTTP 请求头中。服务A的所有机器都可以验证这个 token 的有效性,因为它们可以从同一个持久化存储介质中获取 token。这样,客户端就可以在不同的机器上访问服务A,而无需每次都重新获取 token。
Q:如果是这样,服务端怎么判断这个token来自哪个客户端,还是说任何客户端只要拿到这个token就可以访问服务A
服务端通常会对每个 token 配置一个有效期、权限、以及其他自定义的信息。客户端在获取 token 后需要将这些信息发送给服务端,服务端根据信息判断该 token 是否有效以及该客户端是否有访问相应资源的权限。如果该 token 无效或者该客户端没有相应权限,则服务端会返回相应的错误信息,客户端无法访问该资源。
对于服务端和客户端之间的通信,可以使用 TLS/SSL 加密通信来保证通信的安全性。这样,任何客户端只要有有效的 token,且拥有访问相应资源的权限,就可以访问服务A。同时服务端可以根据 token 中的信息来判断这个 token 是来自哪个客户端,以及该客户端是否有访问相应资源的权限。
Q:token里怎么可以判断客户端信息,都可以包含哪些信息
Token 可以包含客户端的相关信息,以及其他自定义信息。具体可以包括以下内容:
1. 客户端信息:如客户端 IP、设备型号、设备操作系统等,这些信息可以用来识别客户端身份。
2. 有效期:Token 的有效期可以在生成 Token 时指定,服务端将根据有效期验证 Token 是否有效。
3. 权限信息:Token 也可以包含客户端的权限信息,例如某个客户端只有查看信息的权限,而其他客户端可以进行修改操作。
4. 其他自定义信息:Token 还可以包含其他数据,例如客户端的 ID、用户名等等。
在实际场景中,Token 的组成可以根据具体的业务需求进行定制。Token 一般由三部分组成:头部、载荷部分和签名部分。头部包含了 Token 的类型和加密算法;载荷部分包含上述提到的信息;签名部分用于对前两部分进行签名。通过这种方式,可以有效地保证 Token 的安全性和可靠性,并且可以合理地判断客户端身份和客户端的访问权限。
Q:签名的作用是什么
在计算机网络中,签名是一种用于保证数据完整性(不被篡改)和认证数据来源(确保数据是由合法的发送者发送的)的安全机制。具体来说,签名是在数据上附加一个特定的数字签名,该签名基于数据的内容和发送方的私钥进行计算,这个数字签名可以验证数据是否被篡改,并且可以证明数据确实来自于发送方。
在实际应用中,一些敏感数据需要在网络传输过程中保证其机密性和完整性。比如,银行在进行网银转账操作时,需要通过数字证书来对数据进行签名,确保数据在传输过程中不被篡改或者截获。这样,即使有人在传输过程中拦截了这些数据,也没有办法对其进行篡改,因为这样会导致数字签名无效。
除了用于数据的认证和完整性保护,数字签名还可以用于密码学的密钥交换和公钥验证等领域,保证交换和验证过程的安全性和正确性。
Q:token的签名是怎么实现的
在 Web 开发中,Token 的签名通常是基于 HMAC(Hash-based Message Authentication Code)算法实现的。HMAC 是一种加密算法,使用一个密钥和哈希函数对数据进行加密,从而生成具有一定唯一性和安全性的数据摘要。HMAC 算法结合了哈希函数的全局唯一性和密钥的保密性,确保了数据的完整性和安全性。
下面是一个基于 HMAC 算法实现 Token 签名的步骤:
1. 选择一个合适的密钥:密钥是用于加密和解密数据的字符串,应该足够长(通常为 256 位或更长)并且具有足够的随机性,以保证安全性。
2. 生成 Token:将需要签名的数据按照一定的格式组合起来生成 Token。例如,可以将用户 ID、过期时间、访问权限等信息按照一定的规则拼接在一起,并用某个分隔符分开。
3. 使用 HMAC 算法生成签名:使用密钥和哈希函数对 Token 进行加密,生成签名。我们在这里假设使用 SHA-256 哈希函数进行加密。
4. 将签名附加到 Token 上:将生成的签名追加到 Token 后面,组成最终的 Token。
5. 验证签名:在接收到 Token 后,接收方需要先将 Token 分离出签名和数据两部分,再使用保存的密钥和相同的哈希函数对数据进行加密,生成签名。然后将接收到的签名与生成的签名进行比较,如果两个签名相同,则说明 Token 是合法的,否则说明 Token 可能被篡改或伪造。
总之,基于 HMAC 算法的 Token 签名具有高效、安全、易用等优点,已经成为 Web 开发中 Token 签名的标准之一。
Q:如果token被篡改过,那token肯定就有变化了吧,直接比较客户端带着的token和服务端的是否一致不就行了吗,为什么还要签名
是的,如果 Token 被篡改过,它就会产生变化,可以通过比较客户端传递的 Token 和服务端存储的 Token 是否一致来检查 Token 是否合法。
但是,单纯比较 Token 是否一致并不能完全保证 Token 的安全性。因为 Token 是可以在一定程度上被破解并篡改的,如果攻击者知道了密钥,就可以重新生成一个有效的 Token。此外,如果 Token 中包含的数据并不是完全明文的,那么仅仅比较 Token 的值也无法保证数据的安全性。
因此,在实际使用中,需要使用 HMAC 这样的加密算法对 Token 进行签名,来保证 Token 的安全性和完整性。签名是通过在 Token 末尾添加一个签名串来实现的,该串是通过对 Token 和密钥进行哈希计算产生的,攻击者无法通过简单的篡改 Token 来重新生成一个有效的签名。服务端在接收到 Token 后,会先对 Token 进行拆分,然后使用相同的密钥和哈希算法计算 Token 中的数据的签名,并将其与 Token 末尾的签名串进行比较,以判断 Token 是否合法。
因此,使用签名来校验 Token 合法性,能够更有效地保证数据的安全性和完整性。
Q:即使攻击者知道了密匙,那生成的token也是变化的吧,直接比较token是否和服务端一致不也是可以的吗
如果攻击者知道了密钥,就能够重新生成与服务端原始 Token 相同的 Token,而不需要修改原始 Token(注意这里所说的token是没有签名的token)。因此,如果仅仅比较 Token 的值是否一致,无法确保 Token 的安全性。
使用签名算法是为了确保 Token 的安全性和完整性。签名算法结合密钥和哈希算法来计算 Token 的签名值,并将签名值添加到 Token 的末尾。服务端在接收到 Token 后,会使用相同的密钥和哈希算法计算 Token 数据的签名值,并比较服务端计算出的签名值和 Token 中的签名值是否相同。如果相同,则说明 Token 是合法的;如果不同,则说明 Token 被篡改过,无法通过校验。
因此,使用签名算法能够更加安全地保护 Token,确保数据的安全性和完整性,比仅仅比较 Token 的值是否一致更加可靠。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
Token原理
Q:分布式场景下如何生成token以及使用token的流程: 在分布式场景下,可以采用以下方式生成 token 和进行权限认证: 1. 生成 token: 使用JWT(JSON Web Token)生成 token。JWT 是一种基于 JSON …...
![](https://img-blog.csdnimg.cn/20a7f1b58dfb4660b75d7f021c157d57.png#pic_center)
③【Java组】蓝桥杯省赛真题 持续更新中...
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 蓝桥杯真题--持续更新中...一、错误票据题目描…...
![](https://img-blog.csdnimg.cn/img_convert/e33637908a8e2c2f0cadfb6b6c630ad9.gif)
linux实验之shell编程基础
这世间,青山灼灼,星光杳杳,秋风渐渐,晚风慢慢 shell编程基础熟悉shell编程的有关机制,如标准流。学习Linux环境变量设置文件及其内容/etc/profile/etc/bashrc/etc/environment~/.profile~/.bashrc熟悉编程有关基础命令…...
![](https://img-blog.csdnimg.cn/img_convert/c018c9be6d97f2c690306cb2d94b5255.png)
C语言小程序:通讯录(静态版)
哈喽各位老铁们,今天给大家带来一期通讯录的静态版本的实现,何为静态版本后面会做解释,话不多说,直接开始!关于通讯录,其实也就是类似于我们手机上的通讯录一样,有着各种各样的功能,…...
![](https://www.ngui.cc/images/no-images.jpg)
写CSDN博客两年半的收获--总结篇
👨💻作者简介:练习时长两年半的java博主 🎟️个人主页:君临๑ ps:点赞是免费的,却可以让写博客的作者开心好几天😎 不知不觉间,在csdn写博客也有两年半的时间了&#x…...
![](https://img-blog.csdnimg.cn/7d16f95fd8b5448fa2a44e53578be9a3.png)
中科亿海微FPGA应用(一、点灯)
1.软件: https://download.csdn.net/download/weixin_41784968/87564071 需要申请license才能使用:软件试用申请_软件试用申请_中科亿海微电子科技(苏州)有限公司 2.开发板: 芯片EQ6HL45,42.5k LUT。 3…...
![](https://www.ngui.cc/images/no-images.jpg)
ElasticSearch - SpringBoot整合ES:实现搜索结果排序 sort
文章目录00. 数据准备01. Elasticsearch 默认的排序方式是什么?02. Elasticsearch 支持哪些排序方式?03. ElasticSearch 如何指定排序方式?04. ElasticSearch 如何按照相关性排序?05. ElasticSearch 查询结果如何不按照相关性排序…...
![](https://img-blog.csdnimg.cn/img_convert/1a4db016ad334bd3bff86ff82a31f554.png)
IDEA的全新UI可以在配置里启用了,快来试试吧!
刚看到IDEA官方昨天发了这样一条推:IDEA的新UI可以在2022.3版本上直接使用了!开启方法如下:打开IDEA的Setting界面,在Appearance & Behavior下有个被标注为Beta标签的New UI菜单,具体如下图:勾选Enable…...
![](https://www.ngui.cc/images/no-images.jpg)
第九章 镜像架构和规划 - 备份处于活动状态时自动进行故障转移
文章目录第九章 镜像架构和规划 - 备份处于活动状态时自动进行故障转移备份处于活动状态时自动进行故障转移备份不活动时的自动故障转移对各种中断场景的镜像响应响应主要中断场景的自动故障转移第九章 镜像架构和规划 - 备份处于活动状态时自动进行故障转移 备份处于活动状态…...
![](https://img-blog.csdnimg.cn/img_convert/4330a86bfdcdb793ac38e77461798d33.webp?x-oss-process=image/format,png)
Barra模型因子的构建及应用系列七之Liquidity因子
一、摘要 在前期的Barra模型系列文章中,我们构建了Size因子、Beta因子、Momentum因子、Residual Volatility因子、NonLinear Size因子和Book-to-Price因子,并分别创建了对应的单因子策略,其中Size因子和NonLinear Siz因子具有很强的收益能力…...
![](https://img-blog.csdnimg.cn/598207aac0f5449abf5776e0e590c60d.png)
走进二叉树的世界 ———性质讲解
二叉树的性质和证明前言1.二叉树的概念和结构特殊的二叉树:二叉树的性质前言 本篇博客主要讲述的是有关二叉树的一些概念,性质以及部分性质的相关证明,如果大伙发现了啥错误,可以在评论区指出😘😘 1.二叉树…...
![](https://img-blog.csdnimg.cn/20a7f1b58dfb4660b75d7f021c157d57.png#pic_center)
【SSM】Spring + SpringMVC +MyBatis 框架整合
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ SSM框架整合一、导入相关依赖二、配置web.xml文…...
![](https://img-blog.csdnimg.cn/dd52615e6d4d419bb71365add1e3c7ac.png#pic_center)
【算法基础】一篇文章彻底弄懂Dijkstra算法|多图解+代码详解
博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:算法、数据结构、Java等相关知识。博主主页: 是瑶瑶子啦所属专栏: 算法 ;该专栏专注于蓝桥杯和ACM等算法竞赛🔥近期目标&…...
![](https://img-blog.csdnimg.cn/img_convert/e81ce2c68c9e825ecbd927cf5df44dd0.jpeg)
第二十三天01MySQL多表查询与事务
目录 1. 多表查询 1.1 概述 1.1.1 数据准备 1.1.2 介绍 1.1.3 分类 1.2 内连接 1.2.1 语法 1.2.2 案例演示 1.3 外连接 1.3.1 语法 1.3.2 案例演示 1.4 子查询 1.4.1 介绍 1.4.2 标量子查询 1.4.3 列子查询 1.4.4 行子查询 1.4.5 表子查询 1.5 案例 1.5.1 介…...
![](https://img-blog.csdnimg.cn/img_convert/8f7ec6370a6e6a16510db6cad5c73635.png)
TCP协议详解
1.TCP的准备条件在古代的时候,古人们经常写书信进行交流,写书信的前提是你要知道这份信是要寄给谁在网络中,我们通过ip端口号找对目标对象,但是现在网站一般会对ip端口注册一个域名,所以我们一般就是对域名进行查找&am…...
![](https://img-blog.csdnimg.cn/img_convert/c2c35e3f8e9d5de0ae93995ef197aa58.png)
Activiti7与Spring、Spring Boot整合开发
Activiti整合Spring 一、Activiti与Spring整合开发 1.1 Activiti与Spring整合的配置 1)、在pom.xml文件引入坐标 如下 <properties><slf4j.version>1.6.6</slf4j.version><log4j.version>1.2.12</log4j.version> </properties> <d…...
![](https://img-blog.csdnimg.cn/1bbb0d6ffed4426594469d353af6fc01.png)
基于SpringBoot实现冬奥会运动会科普平台【源码+论文】
基于SpringBoot实现冬奥会科普平台演示开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&#…...
![](https://img-blog.csdnimg.cn/e15b88a853574cf790eab90d2fca6520.gif#pic_center)
一文吃透SpringBoot整合mybatis-plus(保姆式教程)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
![](https://www.ngui.cc/images/no-images.jpg)
C++ primer plus(第六版)编程练习答案 第4章 复合类型
一、程序清单 arrayone.cpp // arrayone.cpp -- small arrays of integers #include <iostream> int main() {using namespace std;int yams[3]; // creates array with three elementsyams[0] = 7; // assign value to first elementyams[1] = 8;yams[2] = 6;i…...
![](https://img-blog.csdnimg.cn/8d444ca57623469bacac3e96d379fdbf.png)
Kafka源码分析之Producer(一)
总览 根据kafka的3.1.0的源码example模块进行分析,如下图所示,一般实例代码就是我们分析源码的入口。 可以将produce的发送主要流程概述如下: 拦截器对发送的消息拦截处理; 获取元数据信息; 序列化处理;…...
![](https://img-blog.csdnimg.cn/9f1affa0db554326a58d3e2c1a41bb48.png)
springboot校友社交系统
050-springboot校友社交系统演示录像开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:e…...
![](https://img-blog.csdnimg.cn/img_convert/67a0a2292e41f9ba37d2a44d836945d0.png)
python flask项目部署
flask上传服务器pyhon安装下载Anacondasudo wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh可根据需要安装对应的版本https://repo.anaconda.com/archive/解压anaconda压缩包bash Anaconda3-5.3.1-Linux-x86_64.sh解压过程中会…...
![](https://img-blog.csdnimg.cn/1a863479bc7f4e4281caf0cad00268ad.png)
常见排序算法(C语言实现)
文章目录排序介绍插入排序直接插入排序希尔排序选择排序选择排序堆排序交换排序冒泡排序快速排序递归实现Hoare版本挖坑法前后指针版本非递归实现Hoare版本挖坑法前后指针版本快排的优化三值取中小区间优化归并排序递归实现非递归实现计数排序排序算法复杂度及稳定性分析不同算…...
![](https://img-blog.csdnimg.cn/img_convert/73a5f96c5ae144f79b93c6c9d58e8083.png)
基于jsp+ssm+springboot的小区物业管理系统【设计+论文+源码】
摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于小区物业管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了小区物业管理系统,它彻底改变了过去…...
![](https://img-blog.csdnimg.cn/f9bca6ee56b041b99e0a55b4df039a96.png)
Elasticsearch 学习+SpringBoot实战教程(三)
需要学习基础的可参照这两文章 Elasticsearch 学习SpringBoot实战教程(一) Elasticsearch 学习SpringBoot实战教程(一)_桂亭亭的博客-CSDN博客 Elasticsearch 学习SpringBoot实战教程(二) Elasticsearch …...
![](https://www.ngui.cc/images/no-images.jpg)
try-with-resource
try-with-resource是Java 7中引入的新特性,它可以方便地管理资源,自动关闭资源,从而避免了资源泄漏的问题。 作用 使用try-with-resource语句可以简化代码,避免了手动关闭资源的繁琐操作,同时还可以保证资源的正确关闭…...
![](https://www.ngui.cc/images/no-images.jpg)
leetcode148_排序链表的3种解法
1. 题目2. 解答 2.1. 解法12.2. 解法22.3. 解法3 1. 题目 给你链表的头结点head,请将其按升序排列并返回排序后的链表。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullp…...
![](https://img-blog.csdnimg.cn/eb192564054c49898b258a5e77516650.png)
使用stm32实现电机的PID控制
使用stm32实现电机的PID控制 PID控制应该算是非常古老而且应用非常广泛的控制算法了,小到热水壶温度控制,大到控制无人机的飞行姿态和飞行速度等等。在电机控制中,PID算法用的尤为常见。 文章目录使用stm32实现电机的PID控制一、位置式PID1.计…...
![](https://img-blog.csdnimg.cn/cd73d526d25a461f9f0142661df3b3ff.png)
数学原理—嵌入矩阵
目录 1.嵌入矩阵的基本作用 2.嵌入矩阵的数学解释 3.嵌入矩阵在联合分布适应中的数学推导主要包括以下几个步骤 4.在JDA中,怎么得到嵌入矩阵 5.联合分布自适应中如何得到嵌入矩阵 (另一种解释) 1.嵌入矩阵的基本作用 在机器学习中&a…...
![](https://www.ngui.cc/images/no-images.jpg)
English Learning - L2 语音作业打卡 辅音翘舌音 [ʃ] [ʒ] 空气摩擦音 [h] Day31 2023.3.23 周四
English Learning - L2 语音作业打卡 辅音翘舌音 [ʃ] [ʒ] 空气摩擦音 [h] Day31 2023.3.23 周四💌发音小贴士:💌当日目标音发音规则/技巧:翘舌音 [ʃ] [ʒ]空气摩擦音 [h]🍭 Part 1【热身练习】🍭 Part2【练习内容】…...
![](/images/no-images.jpg)
哪个网站做外贸零售比较好呢/pc优化工具
摘要:世界杯“法阿之战”中帕瓦尔世界波以及姆巴佩梅开二度一定让你印象深刻,而梅西的饮恨离开也让不少球迷碎了心。但你知道,比赛当天的阿里云藏着什么秘密吗?世界杯“法阿之战”中帕瓦尔世界波以及姆巴佩梅开二度一定让你印象深…...
![](/images/no-images.jpg)
dw网站开发教程/深圳百度推广代理商
事件处理 事件处理概述 事件处理是对象化编程的一个很重要的环节,没有了事件处理,程序就会变得很死,缺乏灵活性。事件处理的过程可以这样表示:发生事件 - 启动事件处理程序 - 事件处理程序作出反应。其中,要使事件处理…...
![](/images/no-images.jpg)
网站建设 长春/营销方式和渠道有哪些
Python3.x 1 数据类型 1.0 标准数据类型 Python3.x标准数据类型有6中,如下: 序号数据类型描述1数字Number2字符串String3列表List4元组Tuple5字典Dictionary6集合Set 1.2 数字(Number) 数字包括整数,浮点数,布尔数据和复数四种,python3.x中将True和False定义成关键字,表示…...
![](/images/no-images.jpg)
毕业设计做网站难吗/关键词优化哪个好
| 来源:知乎无意间刷到的一篇文章https://zhuanlan.zhihu.com/p/998520592019.11.27 ~ 2019.12.27 入职字节整整一个月了,这是我人生中第一份实习,也是我职场生涯的第一步,真的很幸运能够加入字节这样一个扁平、年轻且…...
![](/images/no-images.jpg)
商务网站规划与建设/网络营销的主要内容有哪些
http://www.lydsy.com/JudgeOnline/problem.php?id3432 题目说要相互可达,但是只需要从某个点做bfs然后判断其它点是否可达即可。 原因太简单了。。。。。因为它是abs 所以我们二分D,然后判断即可 #include <cstdio> #include <cstring> #i…...
![](https://s1.51cto.com/attachment/201010/2/2221160_1286037337bQZR.png)
网站建设流程信息/网络推广100种方法
使用..表示上一层目录,使用.表示当前目录。文件夹或文件前面有.,则表示是掩藏文件 Home,分为root的Home和一般用户的home Bin目录里存放了常用的执行档,例如date、cal等。Bin和usr/bin的内容大致相同。预设情况下Usr/local/bin是空…...