JSON Web Token (JWT) 入门指南
JSON Web Token (JWT) 是一种开放标准 (RFC 7519),用于在网络应用环境中以安全的方式传递信息。它常用于身份验证和信息交换,尤其是在跨域认证的场景中。本文将介绍与 JWT 相关的几个重要方面,并通过图解帮助理解其原理和使用。 一、认证流程 用户使用账号(手机/邮箱/用户名)密码请求服务器 服务器验证用户账号是否和数据库匹配 服务器通过验证后发送给客户端一个 JWT Token 客户端存储 Token,并在每次请求时携带该 Token(如何携带?) 服务端验证 Token 值,并根据 Token 合法性返回对应资源(如何验证?) 二、跨域认证的问题在现代 Web 应用中,跨域认证是一个常见问题。随着单页应用(SPA)和微服务架构的普及,前端和后端服务可能部署在不同的域名或端口下。这种情况下,传统的会话认证方式(如 Cookie)可能面临以下挑战: 同源策略:浏览器的同源策略限制了跨域请求,导致无法直接访问不同域的资源。 状态管理:使用 Cookie 进行认证时,必须在每次请求中携带 Cookie,增加了状态管理的复杂性。 安全...
Mysql查询如何区分大小写
这篇文章主要介绍mysql查询如何区分大小写,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! mysql查询如何区分大小写在mysql中,可以利用select查询语句配合binary关键字来区分大小写,select语句用于查询数据,binary关键字用于区分大小写,语法为 select * from 表名 WHERE binary 字段=字段值 mysql查询如何区分大小写mysql中查询默认是区分大小写的,但是在mysql中默认不区分大小写。 解决办法:mysql可以在SQL语句中加入 binary来区分大小写。BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。 一、查询语句上加binaryselect * from users WHERE binary user_name = '小王' AND status != 0 二、建表时加binarycode varchar(10) binary 执行完上面的sql后,对该表的查询就能区分大小写了。
[踩坑] 记录一次 第三方类库选择中遇到的坑
近期工作上需要用到 列式存储数据库 ClickHouse.我们服务端语言使用的 PHP. 中间发生一些比较低级的错误问题, 简单记录描述一下 这个故事除我外包含2个开发同学 接到需求是 从 网上找一个适用于PHP的轮子, 简单写个增删改查. A同学到composer 中找了个 star和下载 最高,且php版本适配的包. https://packagist.org/packages/hyvor/clickhouse-php#1.0.0 因为项目历史原因无法进行 composer update, 所以就直接提取 src 下目录自己改了下规则,符合我们框架自动加载规则.A同学改完后也没测试 , 交给了B同学 . B同学pull代码后,开发机测试结果抛错.抛错后找A同学, A同学让B同学自己去解决问题. B同学开始各种百度了. 先是将项目composer update 的了, 导致框架中大量老代码被删除(存在下架的轮子).然后又百度参考的文章 这个是需要编译安装php扩展. 在B同学一番操作后, 他开发机php版本从7.2 变成了5.4. https://blog.csdn....
列式存储数据库 ClickHouse介绍
ClickHouse介绍一、clickhouse简介ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的用于在线分析处理查询(OLAP :Online Analytical Processing)MPP架构的列式存储数据库(DBMS:Database Management System),能够使用 SQL 查询实时生成分析数据报告。ClickHouse的全称是Click Stream,Data WareHouse。 clickhouse可以做用户行为分析,流批一体 线性扩展和可靠性保障能够原生支持 shard + replication clickhouse没有走hadoop生态,采用 Local attached storage 作为存储 二、clickhouse特点1、列式存储:行式存储的好处: 想查找某个人所有的属性时,可以通过一次磁盘查找加顺序读取就可以;但是当想查所有人的年龄时,需要不停的查找,或者全表扫描才行,遍历的很多数据都是不需要的。 列式存储的好处 对于列的聚合、计数、求和等统计操作优于行式存储 由于某一列的数据类型都是相同的,针对于...
[踩坑] MySQL 8 错误:Authentication plugin 'caching_sha2_password' cannot be loaded
抛错内容 ERROR 2059 (HY000): Authentication plugin 'sha256_password' cannot be loaded: /usr/lib64/mysql/plugin/sha256_password.so: cannot open shared object file: No such file or directory 在使用 MySQL 8 进行身份验证时,有时会遇到错误消息 “Authentication plugin ‘caching_sha2_password’ cannot be loaded”。这个错误通常发生在尝试连接到 MySQL 8 数据库时,表示 MySQL 客户端无法加载所需的身份验证插件。 错误原因MySQL 8 默认使用 caching_sha2_password 身份验证插件,而旧版本的 MySQL 客户端可能不支持此插件。因此,在使用旧版本的客户端连接到 MySQL 8 时,会出现 “Authentication plugin ‘caching_sha2_password’ c...
nmap / nc 端口扫描工具
要在 Ubuntu 上进行端口扫描,你可以使用一些常见的工具,如 Nmap 和 Netcat(nc)。这些工具可以帮助你扫描主机上开放的端口。 使用 Nmap 进行端口扫描: 首先,确保你已经安装了 Nmap。如果没有,请在终端中运行以下命令安装: sudo apt updatesudo apt install nmap 执行以下命令来扫描一个主机的端口: nmap <目标主机> 例如,要扫描 IP 地址为 192.168.0.100 的主机的所有端口,可以运行以下命令: nmap 192.168.0.100Starting Nmap 6.40 ( http://nmap.org ) at 2023-12-29 18:04 CSTNmap scan report for test.dev (192.168.0.100)Host is up (0.0013s latency).Not shown: 996 filtered portsPORT STATE SERVICE80/tcp open http443/tcp open https445/t...
如何在Linux Shell中读取WebSocket响应
如何在Linux Shell中读取WebSocket响应 curl 请求的方式 不在有效 经常抛错curl 'wss://ws.test.com' -H 'Upgrade: websocket' -H 'Connection: Upgrade' --verbose* Protocol "wss" not supported or disabled in libcurl* Closing connection -1curl: (1) Protocol "wss" not supported or disabled in libcurl 更换使用 wscatnpm install -g wscat/usr/bin/wscat -> /usr/lib/node_modules/wscat/bin/wscatnpm WARN notsup Unsupported engine for commander@9.5.0: wanted: {"node"...
PHP Warning: simplexml_load_string(): Entity: line 6: parser error : Input is not proper UTF-8, indicate encoding
[13-Dec-2023 14:48:48 Asia/Shanghai] PHP Warning: simplexml_load_string(): ^ in Library/Supervisor/Client.php on line 777[13-Dec-2023 14:48:50 Asia/Shanghai] PHP Warning: simplexml_load_string(): Entity: line 6: parser error : Input is not proper UTF-8, indicate encoding !Bytes: 0xAA 0xE5 0xA4 0x84 in Library/Supervisor/Client.php on line 777[13-Dec-2023 14:48:50 Asia/Shanghai] PHP Warning: simplexml_load_string(): <value><string> Library/Supervisor/Client.php ...
Mysql DDL语句、DML语句与DCL语句
MySQL—DDL语句、DML语句与DCL语句MySQL是一种广泛使用的关系型数据库管理系统,它支持许多SQL语句来管理数据库和数据。在MySQL中,我们可以将SQL语句分为三类:DDL语句(数据定义语言)、DML语句(数据操作语言)和DCL语句(数据控制语言)。每种语句都有不同的功能和用途。在本文中,我们将详细介绍这三种类型的语句及其用法。 DDL语句DDL语句(数据定义语言)用于定义数据库、表和其他数据库对象的结构。它们允许我们创建、修改和删除数据库对象。以下是一些常见的DDL语句: CREATE:用于创建数据库或表。例如,CREATE DATABASE database_name;用于创建一个新的数据库,CREATE TABLE table_name (column1 datatype, column2 datatype);用于创建一个新的表。 ALTER:用于修改现有的数据库对象,如表或列。例如,ALTER TABLE table_name ADD column_name datatype;用于向表中添加一个新列。 DROP:用于删除数据库或表。例如,DROP DA...
Swoole WARNING Worker_reactor_try_to_exit() (ERRNO 9101): worker exit timeout, forced termination
swoole 遇到一个定时器 tick 的问题 WARNING Worker_reactor_try_to_exit() (ERRNO 9101): worker exit timeout, forced termination 今天突然发下 swoole 报错了,后来找资料才发现原来是定时器的问题,大概是说定时器设置的时间大于进程退出的时间了 官方文档 : worker exit timeout, forced to terminate发现形如以下报错: WARNING swWorker_reactor_try_to_exit (ERRNO 9012): worker exit timeout, forced to terminateCopy to clipboardErrorCopied 表示在约定的时间 (max_wait_time 秒) 内此 Worker 没有退出,Swoole 底层强行终止此进程。 可使用如下代码进行复现: use Swoole\Timer;$server = new Swoole\Server('127.0.0.1', ...
![[踩坑] 记录一次 第三方类库选择中遇到的坑](/assets/migrated/9aee77fd423bdd17d1ee.png)




