插入排序
在要排序的一组数中,假设前面的数已经是排好顺序的, 现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。 如此反复循环,直到全部排好顺序。 12345678910111213141516171819202122232425262728$arr = [1, 43, 54, 62, 21, 66, 32, 78, 36, 76, 39];function insert_sort($arr){ // 计算数组长度 $len = count($arr); // 循环数组 for($i = 1; $i < $len; $i++) { // 当前值缓存起来 $tmp = $arr[$i]; // 内层循环控制,比较并插入 for($j = $i - 1; $j >= 0; $j--) { if($tmp < $arr[$j]) { //发现插入的元素要小,交换位置,将后边的元素与前面的元素互换 $arr[$j + 1] = $ar...
约瑟夫环
一群猴子排成一圈,按1,2,…,n依次编号。 然后从第1只开始数,数到第m只,把它踢出圈, 从它后面再开始数,再数到第m只,再把它踢出去…, 如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。 要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。 12345678910111213141516function mk($n ,$m){ $arr = range(1, $n);// 构造一个数组 $i = 1; //从第一个开始循环 $len = count($arr); while($len > 1) { // 如果总数大于1 $pk = $i - 1; ($i % $m != 0) && array_push($arr, $arr[$pk]); // 不被踢出则压入数组尾部 unset($arr[$pk]); // 压入数组然后删除 $i++;//继续循环 } return $arr[$i - 1]; //直至最后剩下一个为大王 }echo mk(6,...
Docker
一、Docker 是什么Docker 是一个开源的应用容器化引擎。它把应用 + 依赖 + 运行环境打包成一个标准化的「镜像」(Image),任何装了 Docker 的机器拉下来都能跑出完全一致的「容器」(Container)。 它解决了一个老问题:「在我机器上能跑啊」。 Docker ≠ 虚拟机。VM 模拟整个操作系统(含 Kernel),Docker 共享宿主机 Kernel,只隔离用户态 —— 启动秒级,资源开销极小。 底层依赖三个 Linux 内核特性: 机制 作用 Namespace 隔离视图(pid、net、mnt、uts、ipc、user)—— 容器以为自己独占一台机器 Cgroups 限制资源(CPU、内存、IO)—— 防止一个容器吃光宿主机 UnionFS 分层文件系统(overlay2)—— 镜像可复用层,节省磁盘 二、核心概念1234Dockerfile ──build──▶ Image ──run──▶ Container (构建脚本) (镜像) (运行实例) ...
选择排序
在要排序的一组数中,选出最小的一个数与第一个位置的数交换。 然后在剩下的数当中再找最小的与第二个位置的数交换, 如此循环到倒数第二个数和最后一个数比较为止。 12345678910111213141516171819202122232425262728293031323334$arr = [1, 43, 54, 62, 21, 66, 32, 78, 36, 76, 39];function select_sort($arr){ // 双重循环完成,外层控制轮数,内层控制比较次数 $len = count($arr); // 循环 数组 的长度,也就是Key for($i = 0; $i < $len - 1; $i++) { // 先假设最小的值的位置 $p = $i; // 从 $i的下一个键开始循环 for($j = $i + 1; $j < $len; $j++) { // 找出比 $p 对应值 还要小的 键 ($arr[$j] < $arr[$p]) &...
Vue
一、Vue 简介Vue 由前 Google 工程师尤雨溪 (Evan You) 创建,2014 年首发。核心理念: 渐进式:可以只用一部分(CDN 引入做轻量交互),也可以全套(路由 + 状态 + SSR) 模板语法 + 响应式:HTML 写界面,数据变了视图自动变 学习曲线平:会 HTML/CSS/JS 就能上手 版本 现状 Vue 2 2024 年 EOL,仅维护性更新 Vue 3 当前推荐,性能更好、TS 支持完善、Composition API 二、Hello Vue最简形式(CDN): 12345678910<script src="https://unpkg.com/vue@3"></script><div id="app">{{ msg }}</div><script>const { createApp } = Vue;createApp({ data...
TypeScript
一、为什么是 TypeScriptJavaScript 的痛点: 123function getName(user) { return user.profile.name; // 万一 profile 是 undefined?} 代码上线,用户访问,崩了。 TypeScript 把类型信息加进去,编译期就能发现: 123456interface User { profile?: { name: string };}function getName(user: User) { return user.profile.name; // ❌ Error: Object is possibly 'undefined'} 这就是 TypeScript 的核心价值 —— 可信的代码 + 重构友好。 几乎所有主流前端项目(React、Vue 3、Angular、Next.js)都默认或推荐 TypeScript。 二、安装与编译12345npm install...
Git基础
GIT 以行的模式查看提交日志: git log –pretty=oneline 撤销某次提交,并保留修改 –soft git reset –soft d3c2257b08ffefd69130d9e2bdd1d0328c7d4085 将修改暂存到缓存区保存起来: git stash save ‘url_scheme’ 回滚某次提交 git revert e08e6b103d72a793cc0c21b06f187884c3943f83 回滚后,记得提交 git push 回到指定分支 git checkout T910_URLSchemeLink 取出缓存区的修改内容 git stash pop
索引采用的算法
索引为什么采用B+树,而不用B-树,红黑树 提升查询速度,首先要减少磁盘I/O次数,也就是要降低树的高度。 平衡二叉树、红黑树,都属于二叉树。 时间复杂度为O(n),当表的数据量上千万时,树的深度很深,mysql读取时消耗大量 IO。 另外,InnoDB引擎采用页为单位读取,每个节点一页, 但是二叉树每个节点储存一个关键词,导致空间浪费。 B-树,非叶子节点存储数据,占用较多空间, 导致每个节点的指针少很多,无形增加了树的深度。 B+树数据都存储在叶子节点,非叶子节点只存储健值+指针, 索引树更加扁平,三层深度可以支持千万级表存储。 同时叶子节点之间通过链表关联,范围查找更快。
EasySwoole
一、为什么是 EasySwoole传统 PHP-FPM 模型每个请求都要:加载框架 → 建连接 → 处理 → 销毁,框架启动占了请求大头时间。 Swoole 把 PHP 变成常驻内存的 CLI 服务,框架只加载一次,每个请求只跑业务逻辑。EasySwoole 在 Swoole 之上做了开箱即用的封装:路由、ORM、协程客户端、定时任务、进程管理 —— 不用自己拼。 适合:API 网关、IM 服务、推送系统、爬虫调度。不适合:纯模板渲染的传统 Web,ROI 不高。 二、核心特性 特性 说明 常驻内存 框架只加载一次,请求处理纯业务,QPS 比 FPM 高 5-10 倍 协程 单线程内 IO 并发,写同步代码享受异步性能 多进程模型 Master + Manager + Worker + TaskWorker,自带稳定性 WebSocket / TCP / UDP 一套框架同时挂 HTTP + 长连接服务 定时器 / 异步任务 不依赖 crontab 和队列就能做 三、快速开始123composer require...
Hyperf
一、Hyperf 的定位如果说 EasySwoole 是「Swoole 的极简封装」,那 Hyperf 就是「PHP 版的 Spring Boot」。 它的核心理念: 基于 Swoole 协程,常驻内存 + 协程 IO,性能压榨到位 注解驱动:路由、依赖注入、AOP、限流、缓存全部走注解 DI 容器 + AOP:写业务时不用关心实例化和拦截 微服务套件齐全:服务注册、配置中心、链路追踪、熔断限流、RPC,开箱即用 适合中大型团队做微服务架构 —— 学习曲线陡,但工程化收益大。 二、核心组件一览 组件 对标 用途 hyperf/di Spring DI 依赖注入 + AOP hyperf/database Eloquent ORM(基于 Laravel illuminate/database) hyperf/grpc gRPC 微服务间通信 hyperf/json-rpc - 轻量 RPC hyperf/config-nacos Spring Cloud Config 配置中心 hyperf/service-governance Eur...




