网址的url结尾应该不应该带斜杠

网址的url结尾应该不应该带斜杠

带与不带斜杠"/"是不同的网址.

特别是相对url,

如果 你访问https://www.p2hp.com/about  ,里面有个<a href="info">info</a>,则它将链接到https://www.p2hp.com/info.

而如果你访问https://www.p2hp.com/about/(一般返回同样的内容),则里面的<a href="info">info</a>,将链接到https://www.p2hp.com/about/info.

 

但根目录带不带/是一样的

如:http://www.p2hp.com 和http://www.p2hp.com/ 是一样的.

 

已测试.

 

参考:

https://blog.cdivilly.com/2019/02/28/uri-trailing-slashes

https://stackoverflow.com/questions/5948659/when-should-i-use-a-trailing-slash-in-my-url

https://www.cloudways.com/blog/trailing-slashes-urls/

https://ahrefs.com/blog/zh/trailing-slash/

 

 

        

关于chatGPT的一切(实用工具篇)

今年2月份的时候,当大家刚开始火热地讨论chatGPT时,说实话我是没啥感觉的[笑cry],毕竟我是看着GPT-2一路走过来的。但是当GPT的API大规模开放之后,大家开始疯狂基于GPT模型开发插件时,各种脑洞确实吓到我了!我从来没设想过,通过套娃和拼接实现的Auto-GPT,babyAGI,hugging-GPT的这些组合模型,居然能够直接摸到通用人工智能(AGI)的下限。…

        

git-flow[实战系列]

安装

windows 安装git之后貌似自带git flow

初始化

composer init,git init 一样,git flow 也需要初始化,初始化之后会有两个分支 master,develop

//可以重命名各分支
$ git flow init
Initialized empty Git repository in /Users/tobi/acme-website/.git/
//生产分支,如果有用到gogs,gitlab等工具,合并master代码需要审核的情况下,master要用别的名字,例如gitflowmaster

PHP错误处理异常处理类

PHP错误处理异常处理类,依赖Monolog.

<?php
use Monolog\Level;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
class ErrorHandel
{
    private array $levels = [
        \E_DEPRECATED => "Deprecated",
        \E_USER_DEPRECATED => "User Deprecated",
        \E_NOTICE => "Notice",
        \E_USER_NOTICE => "User Notice",
        \E_STRICT => "Runtime Notice",
        \E_WARNING => "Warning",
        \E_USER_WARNING => "User 
        

错误日志级别

错误日志级别

RFC 5424描述的日志级别。

  • DEBUG (100):详细调试信息。
  • INFO (200):有趣的事件。示例:用户登录、SQL 日志。
  • NOTICE(250):正常但重要的事件。
  • WARNING(300):不是错误的异常事件。示例:使用已弃用的 API、API 使用不当、未必是错误的不良行为。
  • ERROR (400):不需要立即采取行动但通常应记录和监视的运行时错误。
  • CRITICAL (500):临界条件。示例:应用程序组件不可用,意外异常。
  • ALERT(550):必须立即采取行动。示例:整个网站宕机、数据库不可用等。这应该会触发 SMS 警报并唤醒您。
  • EMERGENCY (600):紧急情况:系统不可用。

websocket服务端与客户端代码示例

websocket服务端与客户端代码示例. ( json socket )

用到了ws库.

步骤:1安装ws

npm install ws

步骤2:服务端代码:

创建websocket.mjs文件,写入以下代码:

import { WebSocketServer } from "ws";

const server = new WebSocketServer({ port: 3000 });

server.on("connection", (socket) => {
  // send a message to the client
  socket.send(JSON.stringify({
    type: "hello 

Redis[快问快答系列]

什么是 Redis?

Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景
Redis 提供了多种数据类型来支持不同的业务场景,比如 String (字符串)、Hash (哈希)、 List (列表)、Set (集合)、Zset (有序集合)、Bitmaps(位图)、HyperLogLog(基数统计)、GEO(地理信息)、Stream(流),并且对数据类型的操作都是原子性的,因为执行命令由单线程负责的,不存在并发竞争的问题。
除此之外,Redis 还支持事务 、持久化、Lua 脚本、多种集群方案(主从复制模式、哨兵模式、切片机群模式)、发布 / 订阅模式,内存淘汰机制、过期删除机制等等。

Redis 和 Memcached 有什么区别?

  • Memcached 只支持最简单的 key-value 数据类型
  • Redis 支持数据的持久化,Memcached 重启或者挂掉后,数据就没了