<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Rust94的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Rust94</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Rust94]]></copyright><item><title><![CDATA[docker创建nginx容器实现负载均衡]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/128864020</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/128864020</guid><author>Rust94</author><pubDate>Fri, 03 Feb 2023 14:19:28 +0800</pubDate><description><![CDATA[包括nginx-1.conf，nginx-2.conf，nginx-3.conf等。其中nginx-2，nginx-3的模块配置一个虚拟主机，使其能够访问就可以。nginx-1的配置如下。为了方便于搭建和管理，我们将使用docker-compose去创建多个nginx容器，以下是相关的docker-compose.yml文件。启动前，除了配置好docker-compose文件外，还需要提前准备好nginx的配置文件。配置好后，运行docker-compose up -d 即可。]]></description><category></category></item><item><title><![CDATA[字符编码原理的理解]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/128127012</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/128127012</guid><author>Rust94</author><pubDate>Thu, 01 Dec 2022 11:33:31 +0800</pubDate><description><![CDATA[另外，他们又把所有的空格，标点符号，数字，大小写字母分别用连续的字节状态表示，一直编到了第127号，这样计算机就能存储英文了，大家觉得这个方案可行，于是就称之为ASCII编码。一个字符的Unicode编码是确定的，但是在实际传输过程中，由于不同系统平台的设计不一致，以及处于节省空间的目的，对Unicode编码的实现方式有所不同。ISO-8859-1编码是单字节编码，向下兼容ASCII，是ASCII的扩展的一种，该字符集支持部分欧洲使用的语言，两个字节，在MAC机和PC机上，对字节顺序的理解是不一致的。]]></description><category></category></item><item><title><![CDATA[PHP编码技巧]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/127597060</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/127597060</guid><author>Rust94</author><pubDate>Fri, 25 Nov 2022 10:08:37 +0800</pubDate><description><![CDATA[sortTable变量开辟了占用空间，但换的更高的速度；语言结构的好处：比函数快，语言结构在错误处理上比较鲁棒，函数在php.ini上可以被禁用.类的命名必须遵循大写开头的驼峰命名，而方法遵循小写驼峰命名规范。>这个括号：因为可以保证纯的PHP代码，不然容易在。同环境下的不同的php的php.ini里面的错误设置都可能不一样。1. 把常量放前面，用"1==$a" 替换  "$a==1"比如，当我们把"=="打成"="时, "1=$a"就会报错。命名的重要，命名需要有辨识度，易懂，有实际含义。]]></description><category></category></item><item><title><![CDATA[PHP深入]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/127616271</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/127616271</guid><author>Rust94</author><pubDate>Tue, 01 Nov 2022 15:11:26 +0800</pubDate><description><![CDATA[通俗的讲workerman就是用PHP写的一个更底层更通用的网络服务框架实际上workerman类似一个PHP版本的Nginx，核心也是多进程+Epoll+非阻塞io。workerman每个进程能维持上万并发连接。由于本身常驻内存，不依赖Apache，Nginx，PHP-FPM这些容器，所以永远超高的性能。]]></description><category></category></item><item><title><![CDATA[PHP异常错误处理]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/127615175</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/127615175</guid><author>Rust94</author><pubDate>Mon, 31 Oct 2022 15:03:05 +0800</pubDate><description><![CDATA[另外，还可以使用 try-catch-finally三层嵌套，其中try 中return 后finally会继续执行，如果finally中也有 return;但是这些错误我们都是难以捕获的（就是我们认为代码会一切正常，谁知它却报了个Bug）我们最好调用 try-catch 去处理，这样很多未知的错误我们都可以捕获到。规定在哪个错误报告级别会显示用户定义的错误。默认是 "E_ALL"。其次 try-catch 是可以嵌套的使用的，规定发生错误时运行的函数。]]></description><category></category></item><item><title><![CDATA[Linux目录]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/127382542</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/127382542</guid><author>Rust94</author><pubDate>Tue, 18 Oct 2022 11:49:41 +0800</pubDate><description><![CDATA[var : 这是一个非常重要的目录，系统上跑了很多程序，那么每个程序都会有相应的日志产生，而这些日志就被记录到这个目录下，具体在/var/log目录下，另外mail 的预设放置也是在这里。值得提出的是/bin, /usr/bin 是给系统用户使用的指令 （除root外的通用用户），而/sbin,/usr/sbin 则是给root 使用的指令。/bin, /sbin, /usr/bin, /usr/sbin  ：这是系统预设的执行文件的放置目录，比如ls 就是在 /bin/ls 目录下的。]]></description><category></category></item><item><title><![CDATA[linux启动过程]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/127370254</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/127370254</guid><author>Rust94</author><pubDate>Mon, 17 Oct 2022 17:48:31 +0800</pubDate><description><![CDATA[Boot Loader通过initrd 在内存中建立一个供内核使用的临时文件系统，然后由内核程序接管后续启动流程。它会首先调用/etc/rc.d/rc.sysinit脚本，完成设置环境变量，交换分区，初始化系统时钟等工作。2. /etc/rc.d/init.d/*   写shell脚本，然后在/etc.rc*.d 中建立软连接。，执行相应运行级别下的程序脚本(/etc/rc.d/rc.d/*)启动或杀掉相应进程。1. /etc/rc.d/rc.local 中写的启动命令。显示给用户一个选择界面。]]></description><category></category></item><item><title><![CDATA[linux]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/127367837</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/127367837</guid><author>Rust94</author><pubDate>Mon, 17 Oct 2022 17:24:39 +0800</pubDate><description><![CDATA[UNIX诞生于一个开放的、相互学习研究的时代，UNIX系统的源码在世界各地流传、分享，一些热衷于UNIX的人，在源码的基础上不断研究UNIX，并对其进行改善，极大地促进了UNIX的发展与优化。Linux内核的源码是开放的，自1991年之后，越来越多的开发人员参与到了Linux内核代码的编写、修改和维护工作中。接触到了MINIX操作系统，在学习中萌生了自主开发操作系统的想法并付诸实践，随之Linux内核诞生。，GNU是”GNU is Not Unix“的递归缩写，该计划的目标是创建一套完全自由的操作系统。]]></description><category></category></item><item><title><![CDATA[mysql优化之多表优化实例]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/127291796</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/127291796</guid><author>Rust94</author><pubDate>Thu, 13 Oct 2022 17:59:19 +0800</pubDate><description><![CDATA[如果还有第三个参与 Join ，则通过前两个表的 Join 结果集作为循环基础数据，再一次通过循环查询条件到第三个表中查询数据，第四个 Join 、第五个 Join 都是按照前面的结果集作为循环的基础数据，再去通过循环查询得到最终的数据，以此类推。如果索引元组中的数据不满足推送的索引条件，那么就直接过滤掉该条数据记录,  从而不从回表查询，并且不需要返回到server层去比较数据。3.3  使用join时，mysql会选择数据量比较少的表作为驱动表，大表作为被驱动表（不存在索引的情况下）]]></description><category></category></item><item><title><![CDATA[mysql之SQL优化实例]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/127062518</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/127062518</guid><author>Rust94</author><pubDate>Tue, 11 Oct 2022 20:55:04 +0800</pubDate><description><![CDATA[union和union all的区别是，union会自动压缩多个结果集合中的重复结果，而union all则将所有的结果全部显示出来，不管是不是重复。所谓的函数索引其实本质上解释还是btree索引，实现的方式主要是通过在数据表中新增一个字段用来存放函数字段列，然后对这个字段定义一个索引。若null的列为索引时，每个索引记录需要一个额外的字节。很多时候我们需要检查数据库的设计是否合理，比如我们使用允许为空的字段修改为0或者其他特殊字符代替，，对结果的合并，排序等操作需要费大量的CPU和内存资源，]]></description><category></category></item><item><title><![CDATA[浅谈mysql之分析工具]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/126992138</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/126992138</guid><author>Rust94</author><pubDate>Thu, 22 Sep 2022 17:24:01 +0800</pubDate><description><![CDATA[mysqlslap是mysql自带的基准测试工具。基准测试分为两种主要的策略：一是针对整个系统的整体测试（也被称为集成式），二是单独测试MYSQL（也被称为单组件式）其优点: 查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。上面是简单的一个例子，我们进入到mysql的bin目录便可以执行改命令，其中 -c 代表用户数，- i 代表执行几次，输入命令回车输出mysql密码即可得出压测结果。]]></description><category></category></item><item><title><![CDATA[浅谈mysql索引]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/126938074</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/126938074</guid><author>Rust94</author><pubDate>Tue, 20 Sep 2022 16:52:57 +0800</pubDate><description><![CDATA[平衡二叉树：而二叉树又有平衡与否的问题，原因是在于虽然二叉树可以使用二分查找法，每次先找中间值，然后进行值判断，小于则左边找，大于则向右边找。Btree：为了提升查找效率，在每个节点上尽可能的存储多点数据，一次磁盘io就尽可能的加载数据到内存，所以把树的高度降低，节点提升数据存储，这就有了B树。不同的存储引擎使用不同的结构：比如MyIsam跟innodb，其底层使用的是B+树，如果是Memory存储引擎，那么对应的底层数据结构是Hash表。AVL优点：很好的查找性能，不存在极端的低效查找情况。]]></description><category></category></item><item><title><![CDATA[浅谈mysql 事务与锁]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/126927753</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/126927753</guid><author>Rust94</author><pubDate>Mon, 19 Sep 2022 15:02:34 +0800</pubDate><description><![CDATA[它的开销介于表级锁和行级锁中间，也可能会出现死锁，锁定粒度也介于表级锁和行级锁中间，并发度也介于表级锁和行级锁中间。谓表级锁，它直接锁住的是一个表，开销小，加锁快，不会出现死锁的情况，锁定粒度大，发生锁冲突的概率更高，并发度最低。仅仅从锁的角度来说，表级锁更加适合于以查询为主的应用，只有少量按照索引条件更新数据的应用，比如大多数的。行级锁，它直接锁住的是一条记录，开销大，加锁慢，发生锁冲突的概率较低，并发度很高。就将请求的锁授予该事务，如果两者是冲突的，那么该事务就要等待锁释放。]]></description><category></category></item><item><title><![CDATA[任务协作管理工具 Trello 使用简介]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/103891983</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/103891983</guid><author>Rust94</author><pubDate>Wed, 08 Jan 2020 15:17:29 +0800</pubDate><description><![CDATA[为什么使用 Trello

在和一些小伙伴聊天的过程中，发现大家都有一个类似的困惑。每天听到看到不少好东西都会产生「深究一下」的欲望，但是这些想法和素材要么被忘记了要么就因为时间精力没空继续展开学习。于是就萌生了建立一个「写作素材共享协作小组」的想法，加入这个小组的成员每周共享自己发现或者感兴趣的素材，然后在所有素材中每周至少输出一篇相关的文章在小组内分享。类似于你买香蕉我买苹果，大家聚在一起分着...]]></description><category></category></item><item><title><![CDATA[Gogs：可能是比Gitlab更好的选择]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/103891250</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/103891250</guid><author>Rust94</author><pubDate>Wed, 08 Jan 2020 14:49:19 +0800</pubDate><description><![CDATA[译者注：看到一篇介绍能简单自建git托管服务的项目—— Gogs ——的文章，感觉这个项目很棒，翻译给大家参考一下。
这个项目的四位主要开发者都是中国人，该项目今天蝉联 GitHub Go 语言 Trending 第一。(づ￣3￣)づ莫名的自豪感油然而生。希望能有更多优秀的国产项目出现~


Gitlab是一个很棒的Git托管服务，几乎像GitHub一样强大。 但是，有没有能和Gitlab/Gi...]]></description><category></category></item><item><title><![CDATA[Web以及网络基础（图解http笔记01）]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/103827700</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/103827700</guid><author>Rust94</author><pubDate>Sun, 05 Jan 2020 13:19:04 +0800</pubDate><description><![CDATA[杂记

1.通过发送请求获取服务器资源的web浏览器都可以成为客户端。

2.http通常被翻译为超文本传输协议（约定俗成的），“超文本转移协议”更准确。

3.www(万维网)基础技术：HTML(超文本标记语言) ，HTTP协议，和指定文档所在地址的URL.



TCP/IP基础

1.目前使用的网络实在tcp/ip协议族的基础上运行的，而http是他内部的一个子集。

2.计算机之间通信就...]]></description><category></category></item><item><title><![CDATA[php 图片压缩类]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/103598239</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/103598239</guid><author>Rust94</author><pubDate>Sat, 28 Dec 2019 00:44:18 +0800</pubDate><description><![CDATA[PHP图片压缩类，部分来源于网络（侵则删），部分自己改写拼凑成一个类。该类封装了了PHP7没有的imagecreatefrombmp等的相关方法（7.2有提供这个方法）



&lt;?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/12/18
 * Time: 9:56
 */
namespace App...]]></description><category></category></item><item><title><![CDATA[用户搜索之根据同城同行优先排序]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/103255901</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/103255901</guid><author>Rust94</author><pubDate>Tue, 26 Nov 2019 14:43:35 +0800</pubDate><description><![CDATA[在用户查询时，有时候有需要把“同城”，“同行”等相关度教高的用户排在前面的需求。

而使用sql的排序可以简单的实现这个需求，但也有不全面的地方。



//根据同乡同行排序
$data = $userModel-&gt;with(['hometown','trade','city'])-&gt;orderByRaw("ABS({$self-&gt;trade_id}
- trade_id) + ...]]></description><category></category></item><item><title><![CDATA[php采集模拟点击伪造IP,伪造浏览器useragent伪造来源防反爬虫例子]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/103086134</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/103086134</guid><author>Rust94</author><pubDate>Fri, 15 Nov 2019 15:24:01 +0800</pubDate><description><![CDATA[先上两个文件 index.php 一个curl.php

index.php是我们要采集的。以下是源码


$client_ip = getip();  
$referer = getreferer();  
  
$allow_ip = '192.168.1.100';  
$allow_referer = 'http://www.amztool.cn';  
$useragent=$_SER...]]></description><category></category></item><item><title><![CDATA[Laravel  ORM中with，where, has,wherehas的使用]]></title><link>https://blog.youkuaiyun.com/Rust94/article/details/102522506</link><guid>https://blog.youkuaiyun.com/Rust94/article/details/102522506</guid><author>Rust94</author><pubDate>Sun, 20 Oct 2019 14:51:25 +0800</pubDate><description><![CDATA[共同之处，这三个函数的参数，都是 model 中的 relationship function 的名字。

1 对 N
	N 对 N
with

类似于 SQL 中的 left join。左侧数据会全部显示。

with 是 eager loading，即预加载关系数据。

has

类似于 SQL 中的 inner join。

当右侧有数据时才会显示。

注意，has 跟 whereHas 并...]]></description><category></category></item></channel></rss>