<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[github_37030657的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/github_37030657</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; github_37030657]]></copyright><item><title><![CDATA[MySQL字符索引没用上问题]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/131199651</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/131199651</guid><author>github_37030657</author><pubDate>Tue, 13 Jun 2023 17:34:00 +0800</pubDate><description><![CDATA[某一天，接口突然502，运维同学说没有可用的PHP进程了，看监控说是这个接口夯住了，导致请求进不来，临时把这个接口给返回了200(PS：线上这个接口没有实际作用，所以这么操作了)；
给了慢查询的SQL，用explain 看了下，发现竟然没有用到创建的索引，此时数据库的量有大概150万行，对SQL里where 字段加了双引号后，再用explain看SQL，此时key是索引了，好吧。。。。SQL写的...]]></description><category></category></item><item><title><![CDATA[grpc-gateway使用]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/119472882</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/119472882</guid><author>github_37030657</author><pubDate>Fri, 06 Aug 2021 16:30:00 +0800</pubDate><description><![CDATA[前言
记录下使用grpc-gateway来支持grpc服务的http请求，网上大都是引入google/api/annotations.proto的方式，懒的改每个proto文件，在grpc-gateway的github里看到了另一种方式，不用改proto文件，适合～
原理
grpc-gateway的原理我就不赘述了，大概逻辑是http的请求过来，grpc-gateway接受请求，再生成grpc的...]]></description><category></category></item><item><title><![CDATA[golang的rpc选项模式一点理解]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/107351413</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/107351413</guid><author>github_37030657</author><pubDate>Tue, 14 Jul 2020 17:58:00 +0800</pubDate><description><![CDATA[在学习rpc小册子时遇到了server端传参用了选项模式
前提：要记住在go语言里函数也是一种变量类型，和自定义的其它类型一样，也可以作为值传递，也可以当作结果赋值
如下是代码，注释是自己对这块的理解，希望对你能有些许帮助：
//ServerOptions 结构体类型
type ServerOptions struct {
   address string  
   network s...]]></description><category></category></item><item><title><![CDATA[因为Linux区分文件大小写又踩了一次坑]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/107172472</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/107172472</guid><author>github_37030657</author><pubDate>Mon, 06 Jul 2020 16:48:00 +0800</pubDate><description><![CDATA[出现的现象是：
在本地的Mac环境里，请求的接口地址，在Linux服务器上请求提示404，文件在服务器上是存在的，但是请求返回的404；文件名是大驼峰命名规则AaBbCc
文件名改成Aabbcc就OK了

...]]></description><category></category></item><item><title><![CDATA[说说PHP的变量赋值]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/105502622</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/105502622</guid><author>github_37030657</author><pubDate>Thu, 09 Apr 2020 17:15:00 +0800</pubDate><description><![CDATA[PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。
赋值类型
传值（默认）
变量默认是传值赋值，即表达式的值被赋值到目标变量。
表达式
在 PHP 中，几乎所写的任何东西都是一个表达式，表达式即“任何有值的东西”。
最基本的表达式形式是常量和变量
如：$a = 5; 其中5是一个值为5的表达式，把此表达式的值赋值给变量$a
引用
在 PHP 中引用意味着用不同的名字...]]></description><category></category></item><item><title><![CDATA[dyld: Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/104368762</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/104368762</guid><author>github_37030657</author><pubDate>Tue, 18 Feb 2020 00:21:00 +0800</pubDate><description><![CDATA[问题描述：
本地想看下php的版本 执行php -v ，出现如下错误：
dyld: Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib
Referenced from: /usr/local/bin/php
Reason: image not found
网上找了各种办法：

用install_name...]]></description><category></category></item><item><title><![CDATA[设置iterm2可以保存ssh用户密码]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/103814020</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/103814020</guid><author>github_37030657</author><pubDate>Thu, 02 Jan 2020 19:43:00 +0800</pubDate><description><![CDATA[主要思想是在iterm2的profile里自动执行命令，需要有个脚本模拟用户登陆步骤
脚本
第1个参数是用户名，第2个参数是host，第3个参数是密码。
#!/usr/bin/expect
set timeout 30
spawn ssh [lindex $argv 0]@[lindex $argv 1]
expect {
        "(yes/no)?"
        {sen...]]></description><category></category></item><item><title><![CDATA[grpc服务端转换protobuf到http请求参数query]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/103620379</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/103620379</guid><author>github_37030657</author><pubDate>Wed, 18 Dec 2019 20:03:00 +0800</pubDate><description><![CDATA[前提
grpc服务接收到request的请求后，需要把参数转换成http，去请求其他接口。
使用go作为grpc的服务端，数据协议是protobuf
想到的几种解决方案：

1.编译好的pb.go文件里有个string()，可以把所有参数都打印出来，参数之间是空格隔开的，参数和值是k:v的形式，但是不带引号，不是json格式
2.把接收到的数据转换为json，直接以json的格式，发送请...]]></description><category></category></item><item><title><![CDATA[mac环境下安装grpc的PHP客户端]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/103620378</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/103620378</guid><author>github_37030657</author><pubDate>Fri, 18 Oct 2019 16:37:00 +0800</pubDate><description><![CDATA[前言
自己本地环境原本有个PHP7.1的版本，结果在装grpc时一直提示没有权限把grpc.so拷贝到PHP扩展目录下，就重新装了一次php
此次安装涉及的有：

PHP
composer
pecl
grpc
php的grpc扩展
protobuf
php的protoc插件

安装
1.覆盖原来的php
# 安装PHP
brew intall php

# 优先使用新安装的PHP7.2,...]]></description><category></category></item><item><title><![CDATA[go语言的grpc安装记录]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/103620377</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/103620377</guid><author>github_37030657</author><pubDate>Tue, 15 Oct 2019 19:56:00 +0800</pubDate><description><![CDATA[grpc安装
是一种rpc服务，包含服务端和客户端，能够更容易地创建分布式应用和服务。
默认使用protocol buffers这种结构序列化机制（当然也可以使用json）。
安装grpc
protoc是protocol buffer的编译器，根据.proto来生成创建应用所需的特定客户端和服务端的代码（PHP仅支持创建客户端代码）。生成的代码同时包括客户端的存根和服务端要实现的抽象接口...]]></description><category></category></item><item><title><![CDATA[MySQL-3 行记录的存储结构]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/90105267</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/90105267</guid><author>github_37030657</author><pubDate>Thu, 09 May 2019 19:00:00 +0800</pubDate><description><![CDATA[MySQL-3 行记录的存储结构
		
		
		
			本文同样参考小孩子写的《MySQL是怎样运行的：从根儿上理解MySQL》
来总结下，一条记录在底层的存储逻辑是怎样的。
InnoDB页简介
这个存储引擎是将表中的数据存储到磁盘上，真正的数据处理是在内存中，innodb将数据划分为若干个页，以页作为磁盘和内存之间交互的基本单位，大小一般为16KB。
行格式
指定行格...]]></description><category></category></item><item><title><![CDATA[MySQL2.字符集乱码]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/89658542</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/89658542</guid><author>github_37030657</author><pubDate>Sun, 28 Apr 2019 21:07:00 +0800</pubDate><description><![CDATA[MySQL2.字符集乱码
		
		
		
			MySQL2.字符集
此节记录下MySQL出现乱码的原因。还是参考小册子~
字符集简介
计算机中只能存储二进制数据，建立字符与二进制数据的映射关系来存储字符。
从两方面考虑：
1.界定清楚字符范围，即哪些字符映射成二进制数据
2.怎么映射
将一个字符映射成一个二进制数据的过程叫做编码，将二进制数据映射到字符叫做解码。
人们...]]></description><category></category></item><item><title><![CDATA[MySQL1：客户端/服务器架构]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/108655494</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/108655494</guid><author>github_37030657</author><pubDate>Fri, 19 Apr 2019 11:10:00 +0800</pubDate><description><![CDATA[一、MySQL的客户端/服务器架构
前言
之前对MySQL的认知只限于会写些SQL，本篇算是笔记，记录和整理下自己对MySQL不熟悉的地方。
大致逻辑：
MySQL的服务器程序直接和我们存储的数据打交道，客户端程序连接服务器，发送增删改查的请求，服务器操作维护的数据响应请求。
MySQL服务器程序的进程也被称为MySQL数据库实例。我们启动的MySQL服务器进程的默认名称是mysqld，...]]></description><category></category></item><item><title><![CDATA[MySQL客户端/服务器架构]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/89410320</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/89410320</guid><author>github_37030657</author><pubDate>Fri, 19 Apr 2019 11:10:00 +0800</pubDate><description><![CDATA[MySQL客户端/服务器架构
	
	MySQL的客户端/服务器架构
本文主要参考作者小孩子写的MySQL小册子，整理
MySQL的服务器程序直接和我们存储的数据打交道，客户端程序连接服务器，发送增删改查的请求，服务器操作维护的数据响应请求。
MySQL服务器程序的进程也被称为MySQL数据库实例。我们启动的MySQL服务器进程的默认名称是mysqld，而常用的MySQL客户端进程...]]></description><category></category></item><item><title><![CDATA[include 和require的区别]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/89368246</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/89368246</guid><author>github_37030657</author><pubDate>Wed, 17 Apr 2019 10:14:00 +0800</pubDate><description><![CDATA[include 和require的区别
	
	前言
require 和include都是引入文件，有什么区别呢？
require
require 这个函数通常放在 PHP 程序的最前面，PHP 程序在执行前，就会先读入 require 所指定引入的文件，使它变成 PHP 程序网页的一部份。常用的函数，亦可以这个方法将它引入网页中。
include
include 这个函数一般是放...]]></description><category></category></item><item><title><![CDATA[Charles+iPhone配置ssl证书]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/89038199</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/89038199</guid><author>github_37030657</author><pubDate>Thu, 04 Apr 2019 16:40:00 +0800</pubDate><description><![CDATA[Charles+iPhone配置ssl证书
			
	
	
		Charles+iPhone配置ssl证书
一、手机
1. 配置代理
设置-&gt;无线局域网-&gt;选和电脑同一网络的无线-&gt;配置代理-&gt;手动
服务器配置电脑的IP，端口设置为8888
2. 安装证书
在Charles-&gt;help-&gt;ssl proxysettings-&g...]]></description><category></category></item><item><title><![CDATA[php获取脚本执行的参数]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/87895711</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/87895711</guid><author>github_37030657</author><pubDate>Fri, 22 Feb 2019 17:17:00 +0800</pubDate><description><![CDATA[

			
				php获取脚本执行的参数
			
	
	
		在看PHP文档到预定义变量时碰到了$argc和$argv，顺手记录下
getopt()从命令行参数列表中获取选项
$arg = getopt('d:n:’); //只接收d n之后的参数
$num = $arg['n'] ? $arg['n'] : 365; //是得到的n后面的参数
这种属于短参数，对于date 等长...]]></description><category></category></item><item><title><![CDATA[const和define的区别]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/87842158</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/87842158</guid><author>github_37030657</author><pubDate>Wed, 20 Feb 2019 15:46:00 +0800</pubDate><description><![CDATA[

			
				const和define的区别
			
	
	
		const和define的区别
两者都是定义常量，有什么区别呢？
const：
const CONSTANT = 'aa'
在PHP5.3.0以后，可以使用const关键字在类定义之外定义常量。
使用const关键字定义常量必须处于最顶端的作用区域，因为用此方法是在编译时定义的。这就意味着不能在函数内，循环内以及...]]></description><category></category></item><item><title><![CDATA[session临时文件存储路径]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/87793512</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/87793512</guid><author>github_37030657</author><pubDate>Tue, 19 Feb 2019 15:18:00 +0800</pubDate><description><![CDATA[

			
				session临时文件存储路径
			
	
	
		今天把本地的项目部署到外网时，遇到个问题，使用session_start()时，提示****目录下的这个文件不存在，网上查了查，说我的根目录不存在，然后在php.ini文件里看了下session.save_path，到它指定的目录下一看，这个目录不存在，就新建了指定的目录，提示就没了。






...]]></description><category></category></item><item><title><![CDATA[php跨域问题记录]]></title><link>https://blog.youkuaiyun.com/github_37030657/article/details/87793513</link><guid>https://blog.youkuaiyun.com/github_37030657/article/details/87793513</guid><author>github_37030657</author><pubDate>Mon, 18 Feb 2019 18:31:00 +0800</pubDate><description><![CDATA[

			
				php跨域问题记录
			
	
	
		记录跨域问题
一、问题
在控制层加了如下代码：
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN'] );
header('Access-Control-Allow-Credentials: true');
header('Access-Control-...]]></description><category></category></item></channel></rss>