自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CrazyCodes

感谢您的关注,我是一名七年PHP开发工程师,在GitHub、Segmentfault、知乎、掘金、CSDN发布技术文章。

  • 博客(79)
  • 收藏
  • 关注

原创 从MySQL开始聊聊“树”结构 (上)

前言嗨喽,大家好,我是CrazyCodes, 近一年写的文章,都是一些广度方面的思考,新的一年,在技术深度上也需要有更多的探索,感谢各位的持续支持!MySQL先聊聊大家熟知的MySQL,我们使用MySQL肯定是有数据存储的需求。我们从基础开始看,首先我们创建一张用户表CREATE TABLE `user` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `name` varchar(32) COLLATE utf8mb4_general_ci .

2021-02-24 13:45:32 376

原创 PHP8.x 你必须知道的这些新特性

前言Hello 大家好,我是CrazyCodes,距离上次发文已经过去4个月的时间,今年是悲惨的一年,也是奋发的一年,我会发布一些更好更实用的文章与大家分享,谢谢大家一直以来的支持。本篇是我参加《2020 PHP开发者峰会》 Nikita分享内了解到的一些知识与大家分享Nikita 是PHP8的核心开发者。PHP8的版本会在今年11月26日与各位开发者见面,敬请期待JIT值得被提起的则是JIT新的特性,它会将PHP代码转换为传统的机器码,而并非通过zend虚拟机来运行,这样大大的增加了运行速

2021-01-11 17:57:12 611

原创 电商系统设计之运费模板(上)

电商大伙每天都在用,类似某猫,某狗等。 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意前言在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在其内的设计中,要考虑的问题还是很多滴,开始进入正题运费模板运费模板由模板名称是否包邮默认运费特定地区运费四部分组成,所谓模板则就是设置这样一个框架,由多个商品多对一调用一个模板,通过模板设置的规则来计算配送费用,看似简单的功能,由我来拆解开跟各位聊聊。运费规则无论是默认...

2021-01-06 09:21:00 2203

原创 用MAC还安装集成环境可就OUT喽

#前言大家好,我是CrazyCodes,今天聊聊为什么在MAC上,我不安装类似XAMPP或者Laravel的Homestead的集成开发环境#对比我也是卸载了这些环境不到一年的时间,为何要去卸载他呢,原因其实很简单,扩展性差,这里这个扩展性指的不是集成环境这个软件本身的扩展性,当初安装的目的其实不就是省事嘛~,也不会过多的查看文档,而是在需要扩展的时候,学习成本会逐渐提高,这里的扩展性=学...

2020-10-29 11:11:18 247 1

原创 八年以后,我选择了创业

# 前言大家好,我是CrazyCodes,相信很多手握PHP大刀的朋友都认识我,在这2019年末,我为大家分享我2019年心酸历程。在2019年里我从安逸的公司跳槽准备找一家可以燃起斗志的公司最终没找到,最后集结几个小伙伴着手开始创业我与女友结束了长达七年的爱情长跑,最终步入婚姻殿堂现在,我正在为创业寻找出路聊聊segmentfault我算是思否比较早的一批用户,在2015年的...

2020-10-29 11:00:14 157

原创 GitLab搭建并接入自建Nginx

前言我一生的文章都会放在这里,我的博客,我希望每一行代码,每一段文字都能帮助你。https://github.com/CrazyCodes/Blog大家好,我是CrazyCodes,这篇文章的标题有些严肃了,算是非常单纯的教学文,愿可以帮助到有需要的人。GitLabGitLab与GitHub和码云一样,都是以web形式存在的在线管理Git仓库并且都拥有优雅的可视化操作页面。当然这篇文...

2020-10-29 10:19:21 1178 1

原创 日常划水:短信验证码开发实例

前言我一生的文章都会放在这里,我的博客,我希望每一行代码,每一段文字都能帮助你。https://github.com/CrazyCodes/Blog大家好,我是CrazyCodes,在日常开发中有没有遇到过发送短信验证码的接口需要开发?你是如何处理短信验证码发送的呢?本篇我分享下短信验证码发送的设计。初学者以聚合数据为例,初学者会酱紫做百度找到一串既熟悉又陌生的代码 (咋整也记...

2020-10-29 10:14:19 323

原创 使用GrumPHP来纠正代码“毛病”

前言我一生的文章都会放在这里,我的博客,我希望每一行代码,每一段文字都能帮助你。https://github.com/CrazyCodes/Blog嗨,我是CrazyCodes,小时候做错事,长辈有没有训斥过你呢?今天让我们看看PHP的监护者,愤怒的老头- - grumphpGrumPHPGrumPHP 是通过挂在git hook上的一款PHP代码检测工具,他可以通过编码人员提交gi...

2020-10-29 10:01:34 290

原创 MySQL SQL模式特点汇总

前言MySQL服务器可以在不同的SQL模式下运行,并且可以针对不同的客户端以不同的方式应用这些模式,具体取决于sql_mode系统变量的值。DBA可以设置全局SQL模式以匹配站点服务器操作要求,并且每个应用程序可以将其会话SQL模式设置为其自己的要求。模式会影响MySQL支持的SQL语法以及它执行的数据验证检查。这使得在不同环境中使用MySQL以及将MySQL与其他数据库服务器一起使用变得更加容易。设置SQL模式要在运行时更改SQL模式,请sql_mode使用以下SET 语句设置全局或会话 系统变.

2020-10-26 09:51:52 169

原创 XDEBUG 从入门到精通

前言Xdebug是PHP的扩展,用于协助调试和开发。它包含一个用于IDE的调试器它升级了PHP的var_dump()函数它为通知,警告,错误和异常添加了堆栈跟踪它具有记录每个函数调用和磁盘变量赋值的功能它包含一个分析器它提供了与PHPUnit一起使用的代码覆盖功能。猿生必备的工具。但不推荐在生产环境中使用xdebug,因为他太重了。安装PECL 安装pecl install xdebugzend_extension="/usr/local/php/modules/xdebug.

2020-10-25 12:36:21 2795

原创 浅谈架构是为了什么 (下)

前言上一章对架构进行了通俗的解释,本章以图文并茂的形式对架构的演变做详细的阐述架构并非因高并发、大数据而生,以下的架构方式是根据业务演变而变更。从现在开始,假设我们自己是一个创业的小团队。没资金没人脉,靠技术打天下。现在要开发一套电商系统。开始自己的表演。1.0没钱没人,只能买得起一台阿里云学生机。这时我们只能选择使用下面的架构单机部署整个LNMP环境是唯一选择,这时我们还可以对1.0版本做一些优化的地方,在主从数据库这里,要注意了。单机跑主从简直是多此一举。单机流量本身就有效。主与从的.

2020-10-25 12:35:28 850 2

原创 浅谈架构是为了什么 (上)

前言架构是一款软件从0到100的演变过程。并非是上来就可以承载什么亿级访问的牛x架构什么的。本篇写给那些想要成为架构师或者正在尝试成为架构师的朋友。陕西的城墙有架构,阻挡外来攻击兵马俑黄陵有架构,避免根基倒塌这是硬性架构,在初期就应考虑清楚其稳定性。餐厅的人员配置,菜谱的交替更换以及管理的不断完善。这是软性架构,考虑扩展性。why为什么要做架构?有一部分人是这样说的做软件就需要架构没架构的软件不靠谱我是架构师这软件我必须做架构我在学习架构,所以我接手的项目要做架构各位.

2020-10-25 12:35:02 288 1

原创 程序员自省录

前言本文具有批判性,如有误解请移步右上角叉叉。为什么做程序员?我相信每位入行的童鞋 (除了高工资,有免费大桶水喝的办公室,不干体力活的各种原因外),都有想用代码改变世界的想法。我也是这样,在苦苦挣扎了五年后,我发现我并未成功改变世界,而是让代码改变了自己。为什么要做程序员?是对程序的热爱,对代码的忠诚,如果看到这里,你并非如此,请右上角叉叉离开。因为你不适合看这篇文章。Sorry。怎么做好程序员?好与不好,每个人的界定都不一致,我自认为好的程序员是追求完美的但从不口出狂言。作为一名程序员,应.

2020-10-25 12:34:24 358 2

原创 Laravel-Action 对代码的改造

前言以往写过俩篇文章[积德篇] 如何少写PHP "烂"代码https://blog.fastrun.cn/2018/08/15/1-51/举枪消灭"烂代码"的实战案例https://blog.fastrun.cn/2018/08/15/1-51/感觉文章中对Action的操作没有一个规范性的调用及编写。特此写了一个laravel-action包https://github.com/CrazyCodes/Laravel-Action希望可以帮到你。安装下载composer包: compo.

2020-10-25 12:33:39 242

原创 举枪消灭“烂代码“的实战案例

前言之前我写过一篇如何少写PHP "烂"代码 https://blog.fastrun.cn/2018/06/13/1-9/感觉很多新人对此不太理解。今天以打卡功能为例,去讲解其中的奥秘。那篇文章讲过代码开发的过程中分几种类型。增删改的需求Route -> Controller -> Service -> Action查的需求Route -> Controller -> Service -> Repository经过多次实际开发验证后,发现Reposi.

2020-10-25 12:33:03 132

原创 取代PHP原生函数的一些扩展包

前言虽然程序员无时无刻都在造轮子,但造轮子也有效率之分,用好轮子才能造出好“????”guzzlehttp/guzzlecomposer require guzzlehttp/guzzle你可以用guzzlehttp完全取代curl,file_get_content,fopen等函数。这个扩展包使用起来极为顺手。我们在代码量上看下对比。php_curl<?php //初始化 $curl = curl_init(); //设置抓取的url curl_set

2020-10-25 12:32:17 233

原创 不一样的PHP基础知识汇总

前言整理了一些关于PHP相关的基础。请大家随意摘看。通信协议网络通信协议是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络引提供通信支持,是一种网络通用语言。应用层名称注释HTTPHypertext Transfer Protocol 超文本传输协议,显示网页DNSDomain Name System 域名系统FTPFile Transfer Protocol 文件传输协议SFTPSSH File Transfer Protoco.

2020-10-25 12:31:17 175

原创 运行调试你的PHP代码

前言没有任何一名程序员可以一气呵成、完美无缺的在不用调试的情况下完成一个功能或模块。调试实际分很多种情况。本篇文章我分享下自己在实际开发工作中的经验,我个人理解,调试分三种,注意我所讲的是调试并非测试功能调试组件调试片段调试功能调试是指在完成一个功能或者正在完成功能的过程中进行的错误、逻辑、结果的测试组件调试是指将一个正在开发测试的插件、类进行错误、逻辑和结果的测试片段调试是指将一段代码片段、函数、变量的预期和结果的测试接下来我们看下本章列出的一些调试方法暴力调试这种方式简单粗暴,.

2020-10-25 12:29:26 1135

原创 暴力解说之首次部署NGINX

前言本章基于Centos 7.x系统讲解本章讲解下在项目上线部署的时候对NGINX的操作。有些童鞋在网上百度类似LNMP安装就跟着命令一条一条执行了,如果没报错还好,一旦报错就懵逼状态了。这是对自己、对代码的不负责任的表现。本章带大家"正经"的安装一次NGINX。下载下载NGINX的源码包切勿随意查找,好好的NGINX官网在那摆着,何必盲目搜寻呢?源码包下载地址 : http://nginx.org/en/download.htmlMainline Version 主线版本,也是开发.

2020-10-25 12:16:06 202

原创 电商系统设计之商品[番外篇]

前言这是电商系统设计系列在商品设计这块的最后一篇文章。以下是其他文章地址,按照逻辑顺序排列如下电商系统设计之用户系统 https://blog.fastrun.cn/2018/06/14/1-10/电商系统设计之购物车 https://blog.fastrun.cn/2018/06/19/1-12/电商系统设计之商品 (上) https://blog.fastrun.cn/2018/07/08/1-26/电商系统设计之商品 (中) https://blog.fastrun.cn/2018/07.

2020-10-24 13:37:45 242

原创 电商系统设计之商品接口

前言我应该是少数在文章中直接展示接口文档的人。本篇我思考了很久到底要不要解析下商品接口开发的注意点。客户端开发与服务端开发即是天敌也是兄弟。希望本篇文章让你们减少争执,把“爱”给对方。接口设计简述电商系统设计之中,比较复杂的接口就论商品详情的接口了,响应参数特别多,特别杂。在开发获取商品详情接口时要遵循以下几个原则返回的JSON嵌套数量要少方便去查询到指定的SKU其他接口相关规范查询SKU关于查询SKU,我让我的小伙伴是这样做的,首先拿出规格和属性"选择颜色": [ {.

2020-10-24 13:37:14 2066 1

原创 NGINX宏观手记

前言任何一个工具都有它的灵魂所在,作为一个PHP程序员,我们可能仅仅使用了它的一小部分,这篇文章让你更加了解Nginx,本章大多都是总结、翻译、整理 ,希望你可以知道nginx不仅仅是PHP的附属品,更宏观的认识它的强大。变量内置变量存放在 ngx_http_core_module 模块中,变量的命名方式和apache 服务器变量是一致的。总而言之,这些变量代表着客户端请求头的内容,例如$http_user_agent, $http_cookie, 等等。下面是nginx支持的所有内置变量.

2020-10-24 13:36:43 226

原创 NGINX日志配置总结

前言本来准备讲解nginx和apache的日志的,但是个人不太推荐apache(纯属个人爱好),这里就不介绍apache的日志了。作为一名程序员,比码代码还重要那么一点点的东西就是日志的分析和查询。下面列出常见日志及设置方法。配置文件nginx分access_log和error_log两种日志设置需要在nginx.conf中,默认通过源码包编译安装nginx目录应在/usr/local/nginx目录下,如果你通过yum或者其他方式安装,不清楚或不知道nginx具体安装目录,可以使用.

2020-10-24 13:36:04 303

原创 电商系统设计之订单

前言用户交易将经历一段艰辛的历程,一般用户感觉不到,实际程序是经历了一段生死离别。具体付款流程如下不(wo)是(gu)这(yi)张(chuan)图(de),请看正经流程图之前的几篇文章介绍了购物车如何设计用户系统如何设计商品系统如何设计其实他们都在为交易系统做铺垫,一个产品如果没有收入,那这只能是寺庙的公益产品。任何产品最终都要走向这步 (收钱)。付款用户付款过程中有很多场景也会出现意外,以下是我碰到的“天灾人祸”成功用户发起微信支付并成功支付用户发起支付宝支付并成功支付.

2020-10-24 13:35:37 840 1

原创 MySQL常用函数汇总

概述MySQL常用函数汇总,希望可以帮到你,没事看看当复习字符串函数函数功能CONCAT(s1,s2,…)字符串连接INSERT(str,x,y,instr)将指定开始标记到结束的字符串替换为指定字符串LOWER(str)将字符串所有字符转为小写UPPER(str)将字符串所有字符串转为大写LEFT(str,x)返回字符串str最左边的x个字符RIGHT(str,x)返回字符串str最右边的x个字符LPAD(str,n,pad)在.

2020-10-24 13:35:00 842

原创 一道看似简单的面试题

前言使用PHP,给定一个数,判断这个数是否是二的N次方这样看似简单的一个面试题, 实际牵出了很多基础知识,本章在为大家补习基础知识的情况下来解答这道题。先亮出答案function exponentiation($number){ if ($number < 0) { return false; } if (($number & ($number - 1)) == 0) { return true; } else { return false; }}.

2020-10-24 13:32:56 249

原创 PHP程序员必须知道的两种日志

前言作为一名程序员,比码代码还重要那么一点点的东西就是日志的分析和查询。下面列出常见日志及设置方法。php-fpm 慢日志php慢日志需要在php-fpm.conf设置,如果使用源码包安装默认请执行下面命令cp php-fpm.conf.default php-fpm.conf默认通过源码包编译安装php目录应在/usr/local/php目录下,如果你通过yum或者其他方式安装,不清楚或不知道php具体安装目录,可以使用find / -name php-fpm.conforph.

2020-10-24 13:32:27 483 1

原创 电商系统设计之商品 (下)

电商大伙每天都在用,类似某猫,某狗等。电商系统设计看似复杂又很简单,看似简单又很复杂本章适合初级工程师及中级工程师细看,大佬请随意前言商品系统与订单系统(交易系统)是相铺相成的,当买家购买商品后将经历一个过程商品系统->交易系统->订单系统->物流系统->售后系统完成上述流程则是完成了一笔交易,经常网上购物的童鞋都懂这个。今天我们讲下从商品系统到交易系统和订单系统的存储过程及其设计上的应该注意的“坑”。存储前俩篇文章讲解的商品系统的SKU与SPU的设计过程..

2020-10-24 13:31:55 301

原创 电商系统设计之商品 (中)

电商大伙每天都在用,类似某猫,某狗等。电商系统设计看似复杂又很简单,看似简单又很复杂本章适合初级工程师及中级工程师细看,大佬请随意前言上一篇文章我们讲了关于电商SPU,SKU的概念,以及为何要设计自定义属性与自定义规格并解释了何时可以用到它们。我一直在说电商是一个既简单又复杂的东西,本章我们再一次深度解析电商系统商品设计的更多逻辑与实现。关联SPU对应多个SKU,SPU实际就是主商品表,类似于iphonex这款手机,而SKU则是这个商品绑定的规格表,类似与iphonex 红色款,iphon..

2020-10-24 13:29:49 513

原创 电商系统设计之商品 (上)

电商大伙每天都在用,类似某猫,某狗等。电商系统设计看似复杂又很简单,看似简单又很复杂本章适合初级工程师及中级工程师细看,大佬请随意前言商品的设计是电商系统中占据重要地位,如何设计出高扩展,高性能的商品系统并非一件简单的事情,我的设计是观摩互联网各大佬的设计后自行研究的,并非完全正确,但也不完全错误,现在我设计的这套电商系统已经在使用,如果在逻辑上遇到什么问题,会及时修改我关于电商系统相关文章的设计思想部分。元素见上图,本次我们先讲解下系统规格与自定义规格、系统属性与自定义属性的关于及其他..

2020-10-23 00:24:02 376

原创 冷门PHP函数汇总

概述整理一些日常生活中基本用不到的PHP函数,也可以说在框架内基本都内置了,无需我们去自行使用的函数。量不多。后续在日常开发中如遇到更多的冷门,会更新本文章sys_getloadavg获取系统的负载<?php$load = sys_getloadavg();if ($load[0] > 80) { header('HTTP/1.1 503 Too busy, try again later'); die('Server too busy. Please try a

2020-10-23 00:23:25 206

原创 RabbitMQ 初体验

概述RabbitMQ是一款消息队列中间件。他提供了几乎覆盖所有语言的SDK与文档,简直强大的不的了。要详细的去了解学习RabbitMQ,我建议还是看官方文档吧。http://www.rabbitmq.com/getstarted.html消息队列有以下几个基本用途异步处理应用解耦流量削峰系统架构消息队列的这几个用途我会在后续的文章以真实案例去表述生产者创建RabbitMQ链接$connection = new AMQPStreamConnection('localhost'.

2020-10-23 00:22:52 160 1

原创 五分钟入门 Dingo API

基于 https://laravel-china.org/docs/dingo-api/2.0.0 文档更简洁的描述Dingo,直戳重点,注重实践概述Dingo API帮助您轻松快速地构建自己的API。虽然这个方案的目标是尽可能保持灵活性,但它仍然不能涵盖所有情况并解决所有问题。安装将以下代码加入到composer.json中,并执行composer update 或 composer install"require": { "dingo/api": "2.0.0-alpha1"}..

2020-10-23 00:22:17 595

原创 老项目重构手记之用户系统

受邀来一起重构公司的老项目概述重构首先要注意几个点重构后功能的可扩展性业务互相依赖的复杂度脱离本身的业务进行重构重构后的代码可读性与可维护性性能的提升以上几点是重构注意的地方也是重构的目的分析本次重构的项目运营了三年之久,用户及业务量也上不来。至于重构的真正原因不清楚。用户注册量:107470日PV:1000+非常的惨淡关于用户ID与其他业务绑定仅仅是单纯的存储用户ID进行绑定,类似与评论,购买等。这样在重新设计用户表的时候无需考虑其他表的业务是否有冲突或者依赖。.

2020-10-23 00:21:11 254 1

原创 PHP程序员必看书籍

以下都是我看过都书籍,无论是新手或中级别的工程师,我可以保证内容质量,大佬可跳过概述知识无价,还是建议各位童鞋把更多的资金投入到学习中。书名排名不分前后《PHP7内核剖析》深入理解PHP最佳良品https://item.jd.com/20376348917.html《鸟哥的Linux私房菜》PHP码农最爱的LINUX入门书籍https://item.jd.com/1551951406.html《Modern PHP (中文版)》学习(新)PHP的好书https://item..

2020-10-23 00:20:41 606 2

原创 初中级PHP面试基础汇总

这是我整理的一套面试题,老铁们看看就当复习了哦概述感觉现在发面试题有些冷门,就跟昨天德国那场似的,不过看看当提前复习了。提前备战。这2个月出门面试的童鞋可注意不要中暑哦。说几个你所知道的设计模式单例模式保证一个类仅有一个实例,并提供一个访问他的全局访问点例如框架中的数据库连接 - 类似DB类策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,例如进入个人主页时,根据浏览者的不同,给予不同的显示与操作 - 类似不同用户呈现不同效果注册模式提供了在程序中有条理的存放并管..

2020-10-23 00:20:11 193

原创 五分钟快速了解Docker

这些是我的笔记,都是记录的核心概念和使用方法概述使用docker搭建开发环境将近1年了,自我感觉docker的强大并非如此,不过没有机会将docker部署生产环境,有位架构师曾说过,最新的未必是最好的,架构要选择最佳的,请大家也慎重。核心概念镜像 ImageDocker镜像类似于虚拟机镜像。每个镜像包括了一个基本的操作系统环境容器 ContainerDocker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。可以把容器看做一个简易版的linux系统环境仓库 Repos.

2020-10-23 00:19:40 143

原创 电商系统设计之购物车

本章适合初级工程师及中级工程师细看,大佬请随意前言问 [不存价格字段不行吗?直接查询商品表获取价格]答 [如果价格更新,应提示用户,商品的浮动信息。可以选择直接更新购物车,或者单独建立一个表,来记录更新的价格和信息,类似京东]问 [联表查询可以从商品表中知道商品是否上架]答 [商品不存在了如何联,只会将逻辑整复杂,未来包括降价提醒,无货提醒,下架提醒,购物车该如何查询就成了一个问题]上一篇文章在对于购物车业务及数据表设计中,有位童鞋在评论区与我讨论许久,特此独立一篇文章来详解下我的想..

2020-10-23 00:17:56 677

原创 [还魂篇] 初来乍到如何致人于死地

逗乐篇,本章的代码无论大牛还是菜????都写过统计一些狗血的代码前言初来乍到如何致人于死地,这个标题起的有点血腥恐怖了,代码写不好,吃饭吃不好。本章我们一起来回忆下那些年的“烂代码”,整理不全请见谅,以下都是我写过的????箭头望京soho,前方左拐、右拐然后右拐if(){ if(){ if(){ if(){ if(){ } } } }}面条来碗拉面if(){ $data = []; if(){ foreach ($vari

2020-10-23 00:16:06 477 1

原创 电商系统设计之用户系统

电商大伙每天都在用,类似某猫,某狗等。电商系统设计看似复杂又很简单,看似简单又很复杂本章适合初级工程师及中级工程师细看,大佬请随意前言设计以以下为工具讲起PHP为开发语言基于Laravel框架MySQL为数据存储电商的可变性与孩子的心情一样,变化极快,所以在设计之处就要想好大部分的功能接入及开发,尽量减少重构次数。对老板来说节约成本,对程序员来说“珍惜生命”数据表前期业务简单时,我们可以将数据表设计为下列的样子TableNameCommentsmember..

2020-10-22 17:29:23 582

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除