Redis 实战缓存 1. 设置、查询、获取过期时间;2. 缓存穿透:设置空键;3. 封杀单ip;4. 封杀ip段;5. 缓存预热;6. 使用 hash 数据类型保存新闻的缓存,增加点击量;7. Sorted set(有序集合) 分离新闻缓存内容和新闻点击量、排行榜、预热新闻;8. 缓存超时策略:手动清除分体式新闻策略,入门订阅发布事务;9. 缓存超时策略:缓存过期自动触发;10. 缓存中锁的应用:库存锁,防止库存变负数;11. 缓存中锁的应用2:初步防止死锁的发生,set方法的参数;12. 缓存中锁的应用
Rocky Linux 配置 PHP 环境 安装 PHP # 更新软件包sudo dnf upgrade --refresh -y# 安装 EPEL 源sudo dnf install \ https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \ https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm
Gin 入门实战 本篇概要:1. 环境搭建、热加载;2. 响应数据;3. 路由传值;4. 路由分组:5. 自定义控制器、控制器的继承;6. 路由中间件;7. 自定义 Model;8. Session 获取:9. 使用 GORM 操作数据库;1. 环境搭建、热加载;中文文档:https://gin-gonic.com/zh-cn/docs/quickstart/# 下载 gin cd ~/go/go-gin2go get -u github.com/gin-gonic/gin# 如果无法下载,尝试go en
GO 基础语法加强2 本篇概要:1. interface、模拟用户服务;2. 使用接口简化代码、链式调用;3. 使用接口简化代码、传递接口参数和断言;4. 反射入门、获取 Struct 所有属性、Elem 函数;5. Kind函数、获取struct属性值的两种方式;6. 利用反射设置 Struct 属性值、切片映射 Struct;7. 把 map 映射成 struct;1. interface、模拟用户服务;class 代表类、interface 代表接口。前者是对业务对象的封装或定义、后者是对业务对象的抽象这些在 go
GO 基础语法加强1 本篇概要:1. type 关键字;2. 定制的 String、类型方法、int 变 string;3. 定制的 String:遍历字符串、Each;4. 定制的 String:遍历字符串(带中文);5. 从字符串中再认识下 byte、rune;6. 自定义 struct、所谓的构造函数;7. 使用指针 struct;8. 构造函数技巧:任意设置属性值;9. 构造函数技巧:可变参数;10. 构造函数技巧:进一步封装;11. map强化、基本使用、模拟 User 实体的创建;12. 设置值、链式调用;13. 遍
GO 网络编程1(反向代理) 本篇概要:1. 反向代理;2. 利用协程创建两个测试服务;3. 最简单的请求 “转发” 、httpclient 使用;4. 在 httpserver 中实现 Basic Auth 的认证和解析;5. 反向代理支持 Basic Auth 验证框弹出;1. 反向代理;正向代理:反向代理:2. 利用协程创建两个测试服务;# 进入 /Users/go/src/com.proxy/go mod init proxy.test.com文件 /Users/go/src/com.proxy/webma
Gin 基础2(ORM、Redis) 本篇概要:11. 新增数据、封装 DB 初步、结合 Gin 实现查询 API;12. 简单连接池设置、信号处理、优雅的退出程序;13. 数据库连接出错时关闭 web 服务:两种方式;14. redis 第三方库、连接池;15. 结合 gin 实现基本的 redis 缓存、缓存穿透简单处理;15. 使用 "装饰器模式" 实现Redis缓存的封装基本套路;11. 新增数据、封装 DB 初步、结合 Gin 实现查询 API;SET FOREIGN_KEY_CHECKS=0;DROP TABLE IF E
Gin 基础1(路由、MVC、ORM) 本篇概要:1. 开发环境、最简单的服务启动;2. API的URL规则设计、带参数的路由;3. 是否要用 MVC模式、路由分组;4. 简单Dao层代码封装、使用中间件模拟"鉴权";5. 创建Model、参数绑定 Model 的初步使用;6. 内置验证器的初步使用、POST参数绑定;7. 自定义验证器结合正则验证 JSON 参数;8. 批量提交帖子数据的验证;9. ORM、Gorm入手、执行原始 SQL;10. 结合 Model 进行数据映射、查询;1. 开发环境、最简单的服务启动;github 地址:ht
Go 基础语法4(RPC、Context、包依赖、docker 部署、安装 gin 框架) 本篇概要:12. RPC;12.1 创建 rpc 服务和调用;12.2 JSONRPC 使用、使用 PHP 调用;12.3 初步使用 Protobuf 定义自己的 RPC 服务数据;12.4 gRPC,创建服务端和客户端;13 Context 上下包;14 包依赖管理和系统部署;14.1 go.mod文件;14.2 包任意位置的引用方式;14.3 引入第三方包(sql-driver为例);14.4 docker 中部署go环境、module方式引用第三方包、运行和测试;14.5 在 docker 中使用 m
Go 基础语法3(Socket、httpserver) 本篇概要:10. Socket 服务端和客户端;10.1 创建简单 Socket 服务端和客户端代码;10.2 "死循环"Socket服务端、支持浏览器输出;10.3 正则入门、分析请求path、Socket服务端开启协程支持;10.4 实现浏览器静态文件的访问、处理 404;11. httpserver;11.1 使用http包快速创建server、自定义handler;11.2 路由、设置cookie、注销、判断登录;11.3 自定义路由、支持 GET / POST 访问;11.4 创建自己的简易"上下
Go 基础语法2(Mysql 调用、协程) 本篇概要:8. Mysql 调用;8.1 集成 Mysql 驱动、调用数据库、查询数据、for 循环;8.2 入门 slice 切片、查询返回实体集合;8.3 查询返回通用数组、空接口使用、类型断言、range;8.4 查询返回通用map(字典)、可变参数用法;9. Go 协程入门;9.1 认识协程、启动最简单的协程;9.2 协程通信,channel、死锁、多协程速度比较;9.3 协程 channel 交叉合并数组、遍历channel;9.4 多协程抓取网页、ioutil简单读写、格式化字符串;9.5 抓
Go 基础语法1(语法、指针、结构体、接口) 本篇概要:1. 环境搭建;2. 语法套路:类型、定义函数、返回值;3. 包引用、“实体类”使用(struct);3.1 使用包;3.2 Go 的“实体类”;4. 指针类型;5. 函数及参数传递;6. 结构体;6.1 设置一个实体类、初始化;6.2 使用第三方包、JSON 化结构体;6.3 继承、数组;7. interface 接口;7.1 实现接口,简单工厂模式;7.2 简单工厂模式;7.3 包构造函数、自动注册接口(代码技巧);1. 环境搭建;下载地址:https://golang.google.cn
Leetcode 解题记录 本篇概要:1. 两数之和;2. 两数相加;3. 无重复字符的最长子串;4. 寻找两个正序数组的中位数;5. 最长回文子串;6. Z 字形变换;7. 整数反转;9. 回文数;1. 两数之和;给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。示例:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1
Redis 在项目中的使用 本篇概要:1. 新闻缓存:设置、查询、获取过期时间;2. 缓存穿透处理:设置空键;1. 新闻缓存:设置、查询、获取过期时间;## 1. 简单的新闻缓存业务逻辑伪代码# 实际这个代码是有很大漏洞与风险String newsID=getParameter("id") ;News getNews= getFromRedis("news"+newsID);if(getNews==null){ getNews=getFromDB(123); setToRedis("news"+newsI
mysql 在项目中的使用 1. 设计项目需求,灌入初始数据;下载:地址:http://dev.mysql.com/downloads/repo/yum直接地址:http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm安装步骤:http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/...
Vue 基础语法 本篇概要:1. 模板语法、v 指令;2. v-if 判断;1. 模板语法、v 指令;<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>模板语法、v指令入门</title> <!-- 最传统古老的开发方式,创建一个 html 有些开发方式使用这种方式是不能写的 在做一些测试的时候可以使
MacOS 配置 PHP 环境 1. 安装 homebrew;可参考:https://www.zhihu.com/question/35928898# 一键安装脚本,按步骤操作/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2. 安装 Nginx;# 安装brew install nginx# 配置文件路径,按需更改vim /usr/local/etc/nginx/nginx.conf# 编辑
业务场景下 MySQL 原生语句编写 本篇概要:1. SELECT 取数行号;2. 分组后在分组内排序、每个分组取前 N 条;3. 纯 SQL 实现小算法、计算商品重要度;4. 自连接查询;5. 找出重复数据删除;6. 有重复数据不插入或更新;7. 更新数据技巧: update 表子查询、多条件判断;8. order by 实现排名作弊;1. SELECT 取数行号;使用到的表SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for
Docker 搭建 PHP 运行环境 本篇概要:1. 安装 Docker、使用 PHP 官方镜像运行 PHP 程序;2. Docker 多容器运行 PHP + fpm + Apache;3. 使用 Docker-compose 编排 PHP + fpm + Apache;4. Docker 搭建 Nginx + PHP-fpm;5. MySQL 容器;5.1 创建 MySQL 容器;5.2 MySQL 配置文件方式启动、导入数据;5.3 微容器 alpine 之构建基础镜像、安装 MySQL 客户端;5.4 制作 MySQL 备份专用镜像;5