<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Srodong的博客]]></title><description><![CDATA[来敲点代码吧~]]></description><link>https://blog.youkuaiyun.com/Srodong</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Srodong]]></copyright><item><title><![CDATA[redis 用scan批量删除大量key]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/128917221</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/128917221</guid><author>Srodong</author><pubDate>Tue, 07 Feb 2023 13:45:40 +0800</pubDate><description><![CDATA[redis 用scan]]></description><category></category></item><item><title><![CDATA[go并发协程中的通道使用]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/114368472</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/114368472</guid><author>Srodong</author><pubDate>Thu, 04 Mar 2021 15:08:56 +0800</pubDate><description><![CDATA[//计数器
var w sync.WaitGroup

func Xiecheng(c *gin.Context) {
	//是一个有限长队列  超过10个就会报错
	ch := make(chan int, 10)
	for i := 0; i &lt; 10; i++ {
		//计数器 减一
		w.Add(1)
		//协程
		go getAdd(i, ch)
	}
	w.Wait() //所有协程执行完了，数据都写入了
	//关闭通道
	close(ch)
	for v := range...]]></description><category></category></item><item><title><![CDATA[go协程中的安全map使用]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/114360689</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/114360689</guid><author>Srodong</author><pubDate>Thu, 04 Mar 2021 14:12:43 +0800</pubDate><description><![CDATA[为什么要用安全map？是go协程中才会使用，Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据，key 类似于索引，指向数据的值。问题来了，这么安逸的 数据结构，它不是协程安全的 ！当多个 协程同时对一个map 进行 读写时，会抛出致命错误。

go 语言中有一个其他的工具 sync.WaitGroup计数器。WaitGroup对象内部有个计数器， 最初从0 开始， 他有3个方法 Add() , Done(), Wait()用来控制计数器的数量。 Add(n) 把计数器设.]]></description><category></category></item><item><title><![CDATA[go 进行微信支付  （不采用第三方包）]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/109132453</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/109132453</guid><author>Srodong</author><pubDate>Sat, 17 Oct 2020 14:26:30 +0800</pubDate><description><![CDATA[拉起微信支付和回调 直接上代码

调用支付


pubPay := pay.WxPubPay{}
		openid := userInfo["openid"]
		pubPay = pay.WxPubPay{AppId: configs.Conf.WechatPay.AppID, MchId: configs.Conf.WechatPay.Mchid, AppKey: configs.Conf.WechatPay.Apikey}
		var order = pay.UnifiedOrder{OrderN..]]></description><category></category></item><item><title><![CDATA[php 用curl进行get，post请求。header头里加参数]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/109131832</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/109131832</guid><author>Srodong</author><pubDate>Sat, 17 Oct 2020 13:44:37 +0800</pubDate><description><![CDATA[curlget请求


    /**
     * @Notes:curl 进行get请求
     * @Interface curl_get
     * @param $url
     * @return bool|string
     * @author: Dong
     * @Time: 2020/10/17   13:27
     */
    function curl_get($url){
        $curl = curl_init(); // 启动一个CURL会话
 .]]></description><category></category></item><item><title><![CDATA[go是元素否在数组里 获取字符串的MD5 获取昨天的时间 数组转为字符串 字符串转为数组]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/108238800</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/108238800</guid><author>Srodong</author><pubDate>Wed, 26 Aug 2020 14:30:56 +0800</pubDate><description><![CDATA[// @Author Dong
// @Description //判断是元素否在数组里
// @Date 9:32 2020/8/19
// @return
func InArray(item string, items []string) bool {
	for _, eachItem := range items {
		if eachItem == item {
			return true
		}
	}
	return false
}

//time.Now().Format("2006-01-.]]></description><category></category></item><item><title><![CDATA[GO  获得当前月，当前周，当前季度的初始和结束日期]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/107843680</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/107843680</guid><author>Srodong</author><pubDate>Thu, 06 Aug 2020 16:35:21 +0800</pubDate><description><![CDATA[/**
 * @Author: Dong
 * @Description:获得当前月，当前周，当前季度的初始和结束日期
 * @File:  tools
 * @Date: 2020/08/06 16:24
 */
package tools

import (
	"strconv"
	"time"
)

/**
 * @Author Dong
 * @Description 获得当前月的初始和结束日期
 * @Date 16:29 2020/8/6
 * @Param  * @param null
 *.]]></description><category></category></item><item><title><![CDATA[Docker常用命令]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/105181518</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/105181518</guid><author>Srodong</author><pubDate>Sun, 29 Mar 2020 17:03:31 +0800</pubDate><description><![CDATA[基础操作：

docker images查看镜像信息列表 镜像是静态的



docker ps -a查看运行中的所有容器



docker search [imagename] 搜索docker镜像信息



docker pull [images]:[version]从dockerhub拉取指定镜像

docker run -p 8000:80 -tdi --privilege...]]></description><category></category></item><item><title><![CDATA[Memcache、redis和mongodb的区别及应用场景]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/105072889</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/105072889</guid><author>Srodong</author><pubDate>Tue, 24 Mar 2020 15:33:18 +0800</pubDate><description><![CDATA[memcache :内存缓存

优点：

     1、高性能、效率相对最高

缺点：

     1、只支持简单的数据结构 string一个value最大只支持1MB，而Redis最大支持512MB

     2、不支持数据持久化

     3、不支持数据同步

应用场景：

     1、减轻数据库负载，提升性能，适合多读少写的...]]></description><category></category></item><item><title><![CDATA[php内存管理机制与垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/105046982</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/105046982</guid><author>Srodong</author><pubDate>Mon, 23 Mar 2020 13:47:48 +0800</pubDate><description><![CDATA[一、内存管理机制

先看一段代码：


/内存管理机制
var_dump(memory_get_usage());//获取内存方法，加上true返回实际内存，不加则返回表现内存
$a = "laruence";
var_dump(memory_get_usage());
unset($a);
var_dump(memory_get_usage());
//输出(在我的个人电脑上, 可能会因为系统,...]]></description><category></category></item><item><title><![CDATA[Docker部署php环境运行web项目]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/105030387</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/105030387</guid><author>Srodong</author><pubDate>Sun, 22 Mar 2020 21:19:46 +0800</pubDate><description><![CDATA[docker部署web项目需要用到几个服务：php，nginx，mysql

docker下载镜像速度太慢的话需要修改一下配置主要是因为国家把docker国外镜像hub封掉了，导致镜像pull不下来，为此，改用国内的镜像


# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://75oltije.mirror.aliy...]]></description><category></category></item><item><title><![CDATA[虚拟机下CentOS7安装Docker]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/105028985</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/105028985</guid><author>Srodong</author><pubDate>Sun, 22 Mar 2020 16:01:47 +0800</pubDate><description><![CDATA[Docker

docker是一个开源的应用容器引擎，开发者可以打包自己的应用到容器里面，然后迁移到其他机器的docker应用中，可以实现快速部署。如果出现的故障，可以通过镜像，快速恢复服务。

Docker和VM虚拟机的区别

VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库，然后再安装应用；

Container(Docker容器)，在宿主机器...]]></description><category></category></item><item><title><![CDATA[VMware下新建虚拟机CentOS7]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/105028199</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/105028199</guid><author>Srodong</author><pubDate>Sun, 22 Mar 2020 15:33:11 +0800</pubDate><description><![CDATA[CentOS 7镜像下载

官网下载链接：http://isoredirect.centos.org/centos/7/isos/x86_64/

或者进入阿里云（http://mirrors.aliyun.com/centos/7/isos/x86_64/）站点，选择CentOS-7-x86_64-DVD-1908.iso下载



各个版本的ISO镜像文件说明：

CentOS-7-x86_...]]></description><category></category></item><item><title><![CDATA[VMware虚拟机安装]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/105027909</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/105027909</guid><author>Srodong</author><pubDate>Sun, 22 Mar 2020 15:00:19 +0800</pubDate><description><![CDATA[VMWare (Virtual Machine ware)是一个“虚拟PC”软件公司.它的产品可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比，VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统，在系统切换时需要重新启动机器。VMWare是真正“同时”运行，多个操作系统在主系统的平台上，就象标准Windows应用程序那样切...]]></description><category></category></item><item><title><![CDATA[php依赖注入，和工厂模式不同点。]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/104917167</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/104917167</guid><author>Srodong</author><pubDate>Tue, 17 Mar 2020 15:24:46 +0800</pubDate><description><![CDATA[依赖注入

说这个话题之前先讲一个比较高端的思想--'依赖倒置原则'

"依赖倒置是一种软件设计思想，在传统软件中，上层代码依赖于下层代码，当下层代码有所改动时，上层代码也要相应进行改动，因此维护成本较高。而依赖倒置原则的思想是，上层不应该依赖下层，应依赖接口。意为上层代码定义接口，下层代码实现该接口，从而使得下层依赖于上层接口，降低耦合度，提高系统弹性"



上面的解释有点虚，下面我们以实际...]]></description><category></category></item><item><title><![CDATA[thinkphp5 安装，路由默认模块名]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/102840077</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/102840077</guid><author>Srodong</author><pubDate>Fri, 01 Nov 2019 08:33:19 +0800</pubDate><description><![CDATA[thinkphp5 安装

打开thinkphp的官网 百度搜索thinkphp。



将下载好的文件解压到项目下





然后配置域名 注意tp5的入口文件是"public".







默认模块名

thinkphp5的默认打开的是index模块下的index控制器下的index方法

可以在public文件下的index.php文件中添加define('BIND_MODUL...]]></description><category></category></item><item><title><![CDATA[thinkphp5数据查询]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/102840898</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/102840898</guid><author>Srodong</author><pubDate>Thu, 31 Oct 2019 17:17:23 +0800</pubDate><description><![CDATA[tp5.0的手册https://www.kancloud.cn/manual/thinkphp5/118008

tp5.0的目录结构



要增删改查首先要连接数据库，所以要配置数据库 在applica下的database.php下



为了调试错误可以把配置里的app_debug改为true

在index下进行数据库查询 注意用Db::table这种数据库查询时候要use think...]]></description><category></category></item><item><title><![CDATA[mysql四种语言和常用查询语句]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/102481943</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/102481943</guid><author>Srodong</author><pubDate>Thu, 10 Oct 2019 15:56:08 +0800</pubDate><description><![CDATA[用一个sql语句查询出发表留言数量大于10条的用户名及其留言数量，查询结果按文章数量降序排列参考答案：用户表结构如下：


			表名
			
			
			user
			
			
			
			
			
			
			
		
			字段名
			
			
			字段说明
			
			
			字段类型
			
			
			索引
			
		
			user_id
			
			
			用...]]></description><category></category></item><item><title><![CDATA[php实现极光消息推送]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/98490489</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/98490489</guid><author>Srodong</author><pubDate>Mon, 05 Aug 2019 15:40:27 +0800</pubDate><description><![CDATA[首先在极光注册一个账号，然后创建一个应用，需要上传应用名称和图标，然后下一把上传包名

上传成功后在设置里拿到appkey和masterSecret 上传后可以下一个demo做测试





RegId 就是registration_id 高级功能里可以设置别名和标签

极光推送的文档https://docs.jiguang.cn/jpush/server/push/rest_api...]]></description><category></category></item><item><title><![CDATA[索引无法应用的情况，隐式类型转换，隐式字符编码转换]]></title><link>https://blog.youkuaiyun.com/Srodong/article/details/97265314</link><guid>https://blog.youkuaiyun.com/Srodong/article/details/97265314</guid><author>Srodong</author><pubDate>Fri, 26 Jul 2019 15:36:19 +0800</pubDate><description><![CDATA[索引无法应用的情况

条件字段函数操作


select count(*) from test where month(modified)=7;


如果对字段做了函数计算，就用不上索引了，这是 MySQL 的规定。

对索引字段做函数操作，可能会破坏索引值的有序性，因此优化器就决定放弃走树搜索功能。

MySQL 无法再使用索引快速定位功能，而只能使用全索引扫描。

隐式类型转换


selec...]]></description><category></category></item></channel></rss>