<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[抠脚强的博客]]></title><description><![CDATA[写写记记]]></description><link>https://blog.youkuaiyun.com/userName222</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; userName222]]></copyright><item><title><![CDATA[分布式事务处理方案：Seata-Server]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/118672133</link><guid>https://blog.youkuaiyun.com/userName222/article/details/118672133</guid><author>userName222</author><pubDate>Mon, 12 Jul 2021 12:05:41 +0800</pubDate><description><![CDATA[什么是分布式事务
首先这是普通事务：

下面是分布式事务：

在微服务系统中，每个微服务应用都可能会有自己的数据库，它们首先需要控制自己的本地事务。
一项业务操作可能会调用执行多个微服务。如何保证多个服务执行的多个数据库的操作整体成功或整体失败？这就是分布式事务要解决的问题。
CAP原则
请参考  百度百科 - CAP原则

在分布式系统中，由于网络原因出现子系统之间无法通信的情况，就会造成分区。一般分布式系统中必须容忍这种情况，那么就需要在A和C之间进行取舍。
在分布式事务中，

如果保证CP，就意味着要]]></description><category></category></item><item><title><![CDATA[Windows 7如何 安装 Docker]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/114988510</link><guid>https://blog.youkuaiyun.com/userName222/article/details/114988510</guid><author>userName222</author><pubDate>Thu, 18 Mar 2021 19:42:00 +0800</pubDate><description><![CDATA[1，下载文件，准备阶段
1）docker-toolbox
http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/DockerToolbox-18.03.0-ce.exe
2）VirtualBox-4.3.12
http://download.virtualbox.org/virtualbox/4.3.12/VirtualBox-4.3.12-93733-Win.exe
2，操作步骤
2.1）下载后运行安装包，没装git的可以用过这个包]]></description><category></category></item><item><title><![CDATA[PHP返回内容过长时被nginx截断的解决办法]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/108962413</link><guid>https://blog.youkuaiyun.com/userName222/article/details/108962413</guid><author>userName222</author><pubDate>Thu, 08 Oct 2020 13:50:54 +0800</pubDate><description><![CDATA[PHP返回内容过长时被nginx截断的解决办法背景分析解决原因
背景
在一次服务器迁移后，发现原来的一些接口使用CURL请求数据返回不全导致系统报错，报错信息：cURL error 18: transfer closed with outstanding read data remaining (s (truncated…)
分析
发现返回的数据被截断了。因此，导致系统异常。之后的整个分析过程绕了一大圈，最后，还是从nginx的错误日志中发现了端倪。
在nginx的错误日志中发现如下信息：
[crit] 7]]></description><category></category></item><item><title><![CDATA[PHPExcel_Shared_Date的坑：格林威治时间标准和yyyy/mm/dd字符串兼容]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/100744077</link><guid>https://blog.youkuaiyun.com/userName222/article/details/100744077</guid><author>userName222</author><pubDate>Wed, 11 Sep 2019 18:05:46 +0800</pubDate><description><![CDATA[场景：前置不多说，在读取到文档里的时间值的时候，会出现两种情况，一种是格林威治时间标准（GMT/UTC）格式的值(float)，一种是(yyyy/mm/dd)这种的字符串。一般来说这种问题只会出现取到的值是格林威治时间标准的float值，具体原因未去探索。这个问题可以使用以下封装好的函数处理。
/**
* $time 取到的值
*/
function getExcelDate($time)
{
	...]]></description><category></category></item><item><title><![CDATA[tp5 整合使用TCPDF 文本html转pdf]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/96145695</link><guid>https://blog.youkuaiyun.com/userName222/article/details/96145695</guid><author>userName222</author><pubDate>Tue, 16 Jul 2019 16:06:57 +0800</pubDate><description><![CDATA[1，引入TCPDF：
在tcpdf官网下载整包
或在官网git地址里拉取composer安装。（tcpdf的composer也是找的好苦）
2，整包文件里有examples 例子文件夹 和 fonts 按需使用删除
3，tp5 vendor 文件夹下面建立文件夹Tcpdf
4，导入tcpdf
5，在TP里找到自己需要调用的地方，贴上代码~
        //Define
        $rea...]]></description><category></category></item><item><title><![CDATA[ThinkPHP V6]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/92760064</link><guid>https://blog.youkuaiyun.com/userName222/article/details/92760064</guid><author>userName222</author><pubDate>Tue, 18 Jun 2019 06:55:27 +0800</pubDate><description><![CDATA[看了一晚上的手册，不得不说TP这一次的改动还是很大的，让人值得高兴的是，此次的更新从理念上来说非常Nice了，完完全全规范了开发的总体结构和走向，虽然看起来很多地方放弃解耦了许多东西，不过正是这样，规范性的大方向出来，基本开发就更加省心了，虽然会多写很多的代码预感，不过这能让人在开发的时候头脑思绪更轻松是一件不错的事。期待正式的版本发布~
https://www.kancloud.cn/manua...]]></description><category></category></item><item><title><![CDATA[ThinkPHP 的页面静态化功能的实现]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/92423991</link><guid>https://blog.youkuaiyun.com/userName222/article/details/92423991</guid><author>userName222</author><pubDate>Sun, 16 Jun 2019 20:05:47 +0800</pubDate><description><![CDATA[**
常说的页面静态化分为两种，一种是伪静态，即url 重写，一种是真静态化。
上一篇讲到了ThinkPHP自带的buildHtml（）方法生成静态页面，在ThinkPHP的官方文档也没具体讲到此方法，而文档却很具体的讲了静态缓存技术，看来TP官方还是建议使用静态缓存。
一. 网站不分手机版和电脑版，只有一套前台模板
（1）在根目录下的程序入口文件index.php中加下面这行：
define(‘...]]></description><category></category></item><item><title><![CDATA[thinkphp5中数据库水平分表与增删改查]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/92423778</link><guid>https://blog.youkuaiyun.com/userName222/article/details/92423778</guid><author>userName222</author><pubDate>Sun, 16 Jun 2019 20:03:16 +0800</pubDate><description><![CDATA[thinkphp是国内非常流行的一个PHP语言开发框架，但是在项目开发中随着数据量的不断增大，数据库已经成为影响平台发展的瓶颈问题之一，所以本文波波将简单分享thinkphp5下数据库的水平分表，以及分表后对数据的增删改查。以提升整体性能。
一、数据库分表：
1、我们首先创建数据表system_history。
CREATE TABLE `system_history` (
  `id` int(...]]></description><category></category></item><item><title><![CDATA[[专栏博客] ThinkPHP 5 下Restful风格API接口集成之路01：Route.php[版本控制路由配置]]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/90490339</link><guid>https://blog.youkuaiyun.com/userName222/article/details/90490339</guid><author>userName222</author><pubDate>Thu, 23 May 2019 23:54:28 +0800</pubDate><description><![CDATA[Route.php
相关资料：
【快捷路由】
https://www.kancloud.cn/manual/thinkphp5/141438
【路由分组】
https://www.kancloud.cn/manual/thinkphp5/118036
【ThinkPHP5 RESTful API开发版本控制】
https://blog.youkuaiyun.com/userName222/article/de...]]></description><category></category></item><item><title><![CDATA[ThinkPHP Restful API 开发流程及小技巧]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/90487182</link><guid>https://blog.youkuaiyun.com/userName222/article/details/90487182</guid><author>userName222</author><pubDate>Thu, 23 May 2019 20:14:04 +0800</pubDate><description><![CDATA[转载：https://blog.youkuaiyun.com/voke_/article/details/79697977

]]></description><category></category></item><item><title><![CDATA[PHP开发微信支付和支付宝支付实例]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/89924498</link><guid>https://blog.youkuaiyun.com/userName222/article/details/89924498</guid><author>userName222</author><pubDate>Tue, 07 May 2019 16:52:02 +0800</pubDate><description><![CDATA[微信支付
项目前提：本人用的是tp框架，PHP语言下载到微信平台提供的微信支付接口文件，放在了tp第三方类库vendor，命名为WxpayAPI，


WxpayAPI/lib/WxPay.Api.php 接口访问类;
WxpayAPI/lib/WxPay.Config.php 配置账号信息;
WxpayAPI/lib/WxPay.Data.php 数据对象基础类;
WxpayAPI/lib/W...]]></description><category></category></item><item><title><![CDATA[PHP 解决高并发]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/89885582</link><guid>https://blog.youkuaiyun.com/userName222/article/details/89885582</guid><author>userName222</author><pubDate>Mon, 06 May 2019 16:25:45 +0800</pubDate><description><![CDATA[PHP 解决高并发
我们通常衡量一个Web系统的吞吐率的指标是QPS（Query Per Second，每秒处理请求数），解决每秒数万次的高并发场景，这个指标非常关键。举个例子，我们假设处理一个业务请求平均响应时间为100ms，同时，系统内有20台Apache的Web服务器，配置MaxClients为500个（表示Apache的最大连接数目）。
那么，我们的Web系统的理论峰值QPS为（理想化的计...]]></description><category></category></item><item><title><![CDATA[测试源视频url]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/89304988</link><guid>https://blog.youkuaiyun.com/userName222/article/details/89304988</guid><author>userName222</author><pubDate>Mon, 15 Apr 2019 02:45:47 +0800</pubDate><description><![CDATA[以下视频皆收集于网络。
【1】http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
【2】http://mirror.aarnet.edu.au/pub/TED-talks/911Mothers_2010W-480p.mp4
【3】http://221.228.226.23/11/t/j/v/b/tjvbwspwhqdmgouolposcsfafped...]]></description><category></category></item><item><title><![CDATA[ThinkPHP5 RESTful API开发版本控制]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/79537441</link><guid>https://blog.youkuaiyun.com/userName222/article/details/79537441</guid><author>userName222</author><pubDate>Tue, 13 Mar 2018 10:49:08 +0800</pubDate><description><![CDATA[thinkphp5 RESTful api开发版本控制,thinkphp官方文档不是很详细，我根据个人经验分享下。

我们以一个用户信息读取的接口为例，包含两个版本V1和V2，v2版本的接口包括用户的档案信息，统一使用json格式数据输出到客户端。

在application目录下面创建api模块目录，并创建controller和model子目录，因为api接口无需视图，所以不需要创建view目录...]]></description><category></category></item><item><title><![CDATA[数据结构与算法系列 目录]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/79536130</link><guid>https://blog.youkuaiyun.com/userName222/article/details/79536130</guid><author>userName222</author><pubDate>Tue, 13 Mar 2018 09:38:43 +0800</pubDate><description><![CDATA[转载地址：http://www.cnblogs.com/skywang12345/p/3603935.html]]></description><category></category></item><item><title><![CDATA[jQuery Pjax与Ajax的区别]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/79351573</link><guid>https://blog.youkuaiyun.com/userName222/article/details/79351573</guid><author>userName222</author><pubDate>Fri, 23 Feb 2018 10:34:32 +0800</pubDate><description><![CDATA[ajaxajax技术应该大家都知道就是用来后台与服务器进行少量数据交换，也就不用刷新页面就能看到数据内容，但是ajax有几大问题 1、搜索引擎不识别js代码，也就是无法知道ajax交互之后内容 2、如js做页面的内容的显示，游览器地址不会切换 3、因为游览器地址不能切换，也不支持后退PjaxPjax=pushState + Ajax 主要的功能是解决ajax上面的几个问题，只是刷新部分页面，切换地址]]></description><category></category></item><item><title><![CDATA[JQuery  什么是Pjax]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/79351540</link><guid>https://blog.youkuaiyun.com/userName222/article/details/79351540</guid><author>userName222</author><pubDate>Fri, 23 Feb 2018 10:31:43 +0800</pubDate><description><![CDATA[pjax是 pushstate + ajax，分别百度可以得到相关资料，在此就不赘述了。Ajaxajax直白的理解就是请求一个链接所指向的页面的其中一部分来替换当前页面的一部分，比如我用的wordpress，典型的博客页面，有页面头部、主体部分、侧栏部分、页面底部四个主要部分。 
ajax请求的过程是如何的呢？比如我现在打开的是页面A，页面A中有一个a标签，正常情况下点击a标签的链接会打开一个页面B]]></description><category></category></item><item><title><![CDATA[PHP的switch判断语句的“高级”用法详解]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/79312027</link><guid>https://blog.youkuaiyun.com/userName222/article/details/79312027</guid><author>userName222</author><pubDate>Sun, 11 Feb 2018 17:10:22 +0800</pubDate><description><![CDATA[
  这篇文章主要介绍了PHP的switch判断语句的“高级”用法详解,其实本文讲解的还是它的基础用法,需要的朋友可以参考下


只所以称为“高级”用法，是因为我连switch的最基础的用法都还没有掌握，so，接下来讲的其实还是它的基础用法！ 
switch 语句和具有同样表达式的一系列的 IF 语句相似。很多场合下需要把同一个变量（或表达式）与很多不同的值比较，并根据它等于哪个值来执行不同的代码...]]></description><category></category></item><item><title><![CDATA[ThinkPHP5 使用 PHPExcel 导出表格封装类]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/79305108</link><guid>https://blog.youkuaiyun.com/userName222/article/details/79305108</guid><author>userName222</author><pubDate>Sat, 10 Feb 2018 15:40:39 +0800</pubDate><description><![CDATA[ThinkPHP5 使用 PHPExcel 导出表格封装类


  这里关于如何安装PHPExcel和放在项目哪里我们不做多的赘述，详情可参考网络其他资料文献。那么，下面直接上代码吧！只是能实现了，但肯定不是最优的方法。多指教！


示例模拟数据

$mulit_arr = [
        [
            ['标题1','标题2','标题3'],
            ['a',...]]></description><category></category></item><item><title><![CDATA[LAMPer技能树]]></title><link>https://blog.youkuaiyun.com/userName222/article/details/79201748</link><guid>https://blog.youkuaiyun.com/userName222/article/details/79201748</guid><author>userName222</author><pubDate>Tue, 30 Jan 2018 09:10:23 +0800</pubDate><description><![CDATA[LAMPer技能树]]></description><category></category></item></channel></rss>