置顶 讨论
为了便于用户理解,推出部分教程支持视频 选择有视频的课程,即可在教程文章中看到视频 登录后才可以观看哦
8月前 喜欢(4) 浏览(1652) 评论(0)
讨论
在提问的时候,适当使用一些小技巧,会让老师快速get到你的问题在哪里,这样会使问题更快被解答喔~ 提问技巧 标题:简洁、易懂,完整表达主题;避免无意义、模糊、口语化标题。 提问内容: 客观描述问题:中性客观描述问题,保证问题的可读性,避免过于简单或模糊; 提供编程环境:问题描述注明编程环境信息,包括操作系统、语言、使用的软件版本等; 输出报错信息:过程中出现异常的话,需提供重现异常的步骤; 输出错误信息:编码过程中的技术问题出现错误应该输出日志或控制台的全部信息,以便更好排查错误; 注明课程时间:针对课程的问题,请在问题描述中注明出现时间,便于及时解答; 排版规范合理:注意文本,代码,标点、语法使用规范,排版合理。 提倡有偿问答:对于有能力的学者,可以提供有偿提问,勾引大神们快速响应(提问者自愿为主,答题者不可强求) 注意: 不要在提问内容框里长篇粘入代码,只需粘出关键代码并加以描述即可 标题不等于提问内容,标题应简明扼要,提问内容应详细描述,二者尽量不要重复。 提问尽量以 PHP/Yii2.0 的内容为主。 千万不要贴一段业务报错代码,问为什么这里报错了,代码调试可以帮您解决大部分的问题。 学员和老师要互相尊重,尊重是有效解决问题的前提,对于人身攻击的问题管理员是有权隐藏的哦~ 说完了如何提问,那么大!神!般!的你在问答区看到了其他小伙伴提出的问题,想要回答时需要注意些什么呢?^_^ 回答建议: 回答保证内容的准确性,不模糊,能实际解决提问者疑问; 回答保证内容通俗易懂,语句通顺、有条理,排版利于阅读; 回答保证内容全面,避免过于简单,可对回答做详细阐释、扩展和引导; 回答保证内容与问题相关,避免所问非所答和过多的重复内容; 添加图片或代码应附上说明,代码用对应代码块包裹并合理排版; 核心思想:要持着“授人以鱼不如授人以渔”的心来回答提问者的问题~
11月前 喜欢(3) 浏览(1681) 评论(4)
讨论
更新 2018年6月10日发布了Yii框架3.0.0 更新的第一个alfa版本 Yii 3.0中的新功能 包 “ezyang/htmlpurifier” 已经成为可选项,默认情况下不会安装 移除 Yii 自动加载器以支持 Composer 的 PSR-4 实现 删除了特定于 HHVM 的代码 在 ApcCache 中删除了 APC 支持, APCu 像以前一样工作 当覆盖默认值时,会更改yii\grid\DataColumn :: $filterInputOptions的行为 将屏蔽的输入字段小部件移动到单独的扩展https://github.com/yiisoft/yii2-maskedinput 邮件消息组成提取到单独的类,yii\mail\Composer,可以通过yii\mail\BaseMailer :: $composer获得设置 将yii\base\InvalidParamException重命名为yii\base\InvalidArgumentException 更新了未安装 intl 扩展时使用的后备日期格式,以匹配最新 ICU 版本的默认值 删除了 XCache 和 Zend 数据缓存支持作为缓存后端 更新了yii\widgets\ActiveField :: hint()方法签名以匹配label() 删除了yii\base\Object :: className(),支持本机PHP语法:: class,它不会触发自动加载 PHP的最低要求版本现在为7.1 所有框架小部件中run()方法的一致行为。现在返回结果以获得更好的可扩展性 yii\web\RequestParserInterface :: parse()的签名已更改为接受yii\web\Requestinstance作为唯一参数 删除了 CUBRID 数据库支持 删除了 PJAX 支持 包 'captcha','jquery','rest','mssql' 和 'oracle' 已被提取到扩展中 删除了在 2.0.x 中标记为已弃用的方法 Yii 3.0中的增强功能 使用random_int()而不是mt_rand()来生成加密安全的伪随机整数 对象yii\helpers\ReplaceArrayValue,yii\helpers\UnsetArrayValue现在支持在使用var_export()函数导出后恢复 添加了yii\web\AssetConverter::$isOutdatedCallback,允许自定义检查过时的资产转换结果 在yii\serialize\* 命名空间下添加了序列化抽象层 增加了对 PSR-3 'Logger' 支持 优化了yii\filters\AccessController处理访问规则 将$checkAjax参数添加到方法yii\web\Controller::redirect(),该方法控制 AJAX 和 PJAX 请求中的重定向 邮件视图呈现封装到yii\mail\Template类中,允许隔离呈现并通过视图内的$this-> context->message 访问 yii\mail\MessageInterface 实例 CAPTCHA渲染逻辑被提取到yii\captcha\DriverInterface中,该实例可通过 yii\captcha\CaptchaAction::$driver 字段获得 yii\web\Request :: getBodyParams() 在无效或缺失 'Content-Type' 头时,生成 415 “Unsupported Media Type” 错误 yii\web\Request :: getBodyParams() 的结果现在包括上传的文件 已上载的文件检索方法已从 yii\http\UploadedFile 移至 yii\web\Request 添加了对 PSR-7 HTTP Message 的支持 根据 PSR-16 “Simple Cache” 规范重构的缓存实现 相对与 Yii2 改动 Yii3这个版本改动相对于Yii2是非常的巨大,包括以下特性: Yii3需要PHP的最低版本是 7.1 并且 HHVM 不再被支持. Yii3 将采用新的版本规则,即 semver since 3.0规则. 不再使用Subtree-split 模式. 放弃使用 Yii自己的 autoloader 改为用 Composer 的autoloader. 框架的结构也进行了大量的调整,分出来好几个包,包括下面这些: yiisoft/yii-core - 这个是Yii Framework . Yii 2.0 的开发还是在 yiisoft/yii2 仓库. Yii2 只支持Bug 和安全补丁,新特性和加强的特性不在被接收。 yiisoft/di - PSR-11适应依赖注入的 container. yiisoft/log - PSR-3 适应 Psr-3的 logging library. yiisoft/cache - PSR-16 适应 psr-16的 caching library. yiisoft/db - 数据库的 abstraction and QueryBuilder. yiisoft/db-mysql - MySQL 的db扩展. yiisoft/db-pgsql - PostgreSQL 的db扩展. yiisoft/db-sqlite - SQLite 的db扩展. yiisoft/db-mssql - MSSQL 的db扩展. yiisoft/db-oracle - Oracle 的db扩展. yiisoft/active-record - ActiveRecord 库. yiisoft/rbac - RBAC 库. yiisoft/view - 视图渲染库. yiisoft/yii-web - Web 扩展. yiisoft/yii-rest - REST API 扩展. yiisoft/yii-console - console 扩展. yiisoft/yii-jquery - JQuery 扩展. yiisoft/yii-bootstrap3 - Bootstrap 3 扩展. yiisoft/yii-bootstrap4 - Bootstrap 4 扩展. yiisoft/yii-dataview - data displaying 扩展. yiisoft/yii-masked-input - Masked input field widget. yiisoft/yii-captcha - CAPTCHA 扩展. 更多的 PSR 兼容: PSR-3, PSR-11, PSR-16 框架核心只需要虚拟PSR实现包,您可以自由选择日志记录器和缓存实现。 更多PSR实现的兼容性预计将在稍后实现。 从Application and Module 删除ServiceLocator ,采用 container来替代. 数据库的扩展被分到几个composer包里面. 删除PJAX 的支持. yiisoft/yii2-composer 这个包不再被使用. 不再提供高级的项目模板. 项目模板也有所变化 yiisoft/yii-project-template - 工程模板; yiisoft/yii-base-web - web的基础应用模板. 我们将为您提供Yii框架中所有最新更改的最新信息。
9月前 喜欢(1) 浏览(3993) 评论(2)
讨论
如题,求demo
9月前 喜欢(0) 浏览(1376) 评论(2)
讨论
说明 文章起源:蛮多同学在犹豫选择 PHP 进行学习,这里总结了一些数据,可以作为参考。 为什么 PHP 是最好的语言?你也许会说他的语法好学、部署简单、面面俱到的函数、甚至你会以为我在调侃 PHP 而哈哈大笑。 在我看来,PHP 之所以是星球上最好的语言,是因为有大量的人在使用它。 上面这张数据图,是由 W3Techs 网站提供的 服务器端脚本语言市场占有率,请配合以下信息一起理解此图: 样本是 http://www.alexa.com/ 世界排名前一千万的网站; 此数据每日更新。 以上列表信息选自:Technologies Overview。 大部分的商业网站在使用 PHP,会导致 PHP 的人才需求非常大,学习、使用 PHP 的人群也会很庞大。 PHP 的将来 PHP 的将来是由 PHP7 决定的,再来看下 PHP 7 的表现。 发明 PHP 的 Zend 公司发布的 PHP 与其他语言运行效率对比 下面这一个是 C++ vs Python vs PHP vs Java vs NodeJS性能大PK 从运行结果来看,毫无疑问,PHP7 是最快的 脚本语言 (注意是脚本语言哈)。 有同学在困惑 NodeJS 不是脚本语言? JS 也就是这里的 Nodejs 是运行在是 V8 上的,V8 引擎会对 JS 进行预编译,具体见这里 Is Node.js compiled or interpreted language? - Hashnode 看这个表的时候要注意: Total CPU time 越低越快; Slower than 列里,C++ 对比 C++ 要慢多少 CPU time,previous 是在列表里对比上一个排名的语言要慢多少 CPU time。 Java 8 (non-std lib) 与 Python 2.7 + PyPy 因为不支持通用函数库,所以只参考不列入计算。 简要分析结果如下: NodeJS 快 2 倍。 Java 8 接近慢 2 倍。 Python 在性能上没有什么重大变化。 每个新版本都比上个版本稍快一点,但整体 Python 比 C++ 慢 15 倍。 Perl 与 Python 有相同的趋势,并且比 C++ 慢 22 倍。 PHP 5.x 是最慢的,运行时间是 C++ 的 47 ~ 60 倍之间。 PHP 7 的成绩最为惊人。 它比 PHP 5.x 快 10 倍,比紧随其后的脚本语言 Python 快 3 倍。 最后总结下,学习 PHP 的兄弟们,你们走的路没错。在考虑要不要入坑的同学们,也可以做个参考,最好的语言你怎么着也得学一学吧,至少工作机会不会太少。
9月前 喜欢(0) 浏览(712) 评论(1)
讨论
老板,您这站的皮肤可以分享一下吗
9月前 喜欢(0) 浏览(715) 评论(1)
讨论
说明 课程简介 素材及源码 纠错 课程简介 本课程主要内容是如何通过使用 yii2 框架,快速打造个人博客系统。 博客系统主要分两个部分: 后台管理系统(backend) 相关内容:yii2-admin扩展, RBAC基于角色的权限管理,基于Markdown的富文本编辑器,上传图片到七牛,Gii生成代码,自定义Gii模版 前台内容展示(frontend) 相关内容:挂件的应用(widget),博客首页界面排版,文章内容呈现,博客时间史 素材及源码 为了方便大家学习 yii2 相关的知识并应用于实践中,本次教程会提供学习素材。什么是素材呢?就是基于 hyii2 后台管理系统添加了学习教程时所需要的样式文件,js文件,界面排版等。让大家免去在学习后端框架的过程中,去写前端的页面和js。更加精确的掌握 yii2 框架的实战应用。通过教程的学习可以开发出相应的一套完整的博客系统。详情查看 应用搭建 一章 为了保证课程的高品质,我们需要对素材进行收费,购买链接。购买后请联系 391430388 获取素材和源码 前台界面预览:http://hyblog.itdocs.org 管理后台地址:http://hyblog-admin.itdocs.org 账户:test 密码:123456 作者会提供完整的开发素材和成品源码,希望不要借此传播,尊重原创,万分感谢。 纠错 教程中遇到的问题,可以先自己尝试解决,培养自身的问题排查能力是一个程序员基本的要求。 本地环境问题(本站统一环境教程:PHP开发环境部署)。 代码书写错误,引起的报错。 搜索本教程错误集锦(开发中) 若仍不能解决,请联系 QQ:391430388 当然人无完人,也许教程中也存在一些不可避免的疏漏,如果发现可以联系作者,先行致谢!
精华贴
10月前 喜欢(1) 浏览(2089) 评论(1)
讨论
public function caculatecard($card_id, $dispatch_price, $lotterydiscountprice, $taskcut, $goodsarr, $totalprice, $discountprice, $isdiscountprice, $liveid, $isSubmit = 0) { global $_W; $openid = $_W["openid"]; $uniacid = $_W["uniacid"]; if( empty($goodsarr) ) { return false; } if( p("membercard") ) { $data = p("membercard")->getMemberCard($card_id); } if( empty($data) ) { return NULL; } if( is_array($goodsarr) ) { $goods = array( ); $member_discount = intval($data["member_discount"]); $discount_rate = floatval($data["discount_rate"]); if( isset($data["shipping"]) && $data["shipping"] == 1 ) { $dispatch_price = 0; } $gprice = 0; $cardgoodprice = 0; $newtotalprice = 0; $deductprice = 0; $discountprice = 0; $isdiscountprice = 0; foreach( $goodsarr as $k => &$g ) { if( $g["status"] != 2 ) { if( 0 < $liveid ) { $live_product = pdo_fetch("SELECT * FROM " . tablename("ewei_shop_goods") . " WHERE id = '" . $g["goodsid"] . "'"); if( $live_product ) { $g["marketprice"] = $live_product["marketprice"]; } } $gprice = (double) $g["marketprice"] * (double) $g["total"]; $newtotalprice = 0 + $gprice; if( $g["discounttype"] == 2 ) { if( 0 < $data["discount"] ) { $cardgoodprice += $gprice - (double) $g["discountunitprice"] * (double) $g["total"]; $goodprice = $gprice - (double) $g["discountunitprice"] * (double) $g["total"]; if( 0 < $discount_rate ) { $deductprice += $goodprice * (1 - $discount_rate / 10); $discountprice += (double) $g["discountunitprice"] * (double) $g["total"]; } else { $discountprice -= (double) $g["discountunitprice"] * (double) $g["total"]; } } else { $discountprice = 0; if( 0 < $discount_rate ) { $deductprice += $gprice * (1 - $discount_rate / 10); $cardgoodprice += $gprice * (1 - $discount_rate / 10); } } } else { if( $g["discounttype"] == 1 ) { $cardgoodprice += $gprice - (double) $g["isdiscountunitprice"] * (double) $g["total"]; $goodprice = $gprice - (double) $g["isdiscountunitprice"] * (double) $g["total"]; if( 0 < $data["discount"] ) { $deductprice += $goodprice * (1 - $discount_rate / 10); $isdiscountprice += $g["isdiscountunitprice"] * (double) $g["total"]; } else { $isdiscountprice -= (double) $g["isdiscountunitprice"] * (double) $g["total"]; if( 0 < $discount_rate ) { $deductprice += $gprice * (1 - $discount_rate / 10); $cardgoodprice += $gprice * (1 - $discount_rate / 10); } } } else { if( $g["discounttype"] == 0 ) { if( $g["isnodiscount"] == 1 ) { $cardgoodprice += $gprice; if( $data["discount"] ) { if( 0 < $discount_rate ) { $deductprice += $cardgoodprice * (1 - $discount_rate / 10); } } else { if( 0 < $discount_rate ) { $deductprice += $gprice * (1 - $discount_rate / 10); $cardgoodprice += $gprice * (1 - $discount_rate / 10); } } } else { $cardgoodprice += $gprice; if( $data["discount"] ) { if( 0 < $discount_rate ) { $deductprice += $cardgoodprice * (1 - $discount_rate / 10); } } else { if( 0 < $discount_rate ) { $deductprice += $gprice * (1 - $discount_rate / 10); $cardgoodprice += $gprice * (1 - $discount_rate / 10); } } } } } } } } $carddeduct_text = ""; if( $data["discount_rate"] ) { $carddeduct_text = "会员卡优惠"; } } $sale_plugin = com("sale"); $saleset = false; if( $sale_plugin ) { $saleset = $_W["shopset"]["sale"]; $saleset["enoughs"] = $sale_plugin->getEnoughs(); } if( $saleset ) { foreach( $saleset["enoughs"] as $e ) { if( floatval($e["enough"]) <= $totalprice - $discountprice - $isdiscountprice - $deductprice && 0 < floatval($e["money"]) ) { $deductenough_money = floatval($e["money"]); $deductenough_enough = floatval($e["enough"]); break; } } } $taskreward = $_SESSION["taskcut"]; if( $taskreward && p("task") ) { $taskcut = 0; } $totalprice = $totalprice - $deductprice; $return_array = array( ); $return_array["carddeductprice"] = (double) $deductprice; $return_array["cardgoodprice"] = (double) $cardgoodprice; $return_array["carddeduct_text"] = $carddeduct_text; $return_array["totalprice"] = (double) $totalprice; $return_array["dispatch_price"] = (double) $dispatch_price; $return_array["cardname"] = $data["name"]; $return_array["taskcut"] = (double) $taskcut; $return_array["lotterydiscountprice"] = 0; $return_array["discountprice"] = (double) $discountprice; $return_array["isdiscountprice"] = (double) $isdiscountprice; $return_array["live_id"] = $liveid; $return_array["shipping"] = $data["shipping"]; $return_array["cardgoodprice"] = (double) $cardgoodprice; $return_array["goodsprice"] = (double) $newtotalprice; $return_array["deductenough_money"] = (double) $deductenough_money; $return_array["deductenough_enough"] = (double) $deductenough_enough; $return_array["\$goodsarr"] = $goodsarr; return $return_array; }
5月前 喜欢(0) 浏览(334) 评论(0)
讨论
先问是不是,再问为什么。 难道美国的程序员就不加班吗?他们就一天八小时工作,还想来就来,想走就走?非工作时间完全找不到人?还有什么食物饮料都免费提供? 让我来告诉你真实的情况吧,还...真是这样的。 加班文化应该是中美两地最明显的不同了,形成这种差异的原因不是一两句可以讲清楚的。我在两个国家都工作过,也在不同岗位工作过,所以就尽量从不同角度来简要说一下。 国内程序员加班严重,首先问题不在程序员这个群体。 产品层面拍脑袋决策多 产品层面,拍脑袋决策多,美其名曰:互联网思维、小步快跑、试错思维,其实是没想清楚,反正我就需求一提,技术团队来做,上线后成功了我是产品天才,失败了也没啥坏处,找个借口说什么“互联网市场变化太快”也能搪塞过去,或者找个新项目,继续画大饼。 国内的产品经理实在是太多了,很多还是刚毕业的小鲜肉,没有一点经验积累,凭借天马行空的想象力,提一个需求,就能让一帮技术专家为之操劳好几个月去实现,这简直是不可思议的。即使产品经理很厉害,但人数一多,每个人都要业绩,都拼命想点子、提需求,技术团队怎么能招架得住那么多需求呢。于是就会这些现象:     - 节假日来了,我们上一个活动,或者节日小彩蛋功能。     - 竞品上了一个 xx 功能,看起来不错,我们也抓紧上一个。     - 10个产品经理同时跟你说:这个需求我跟老板对过了,xx 之前必须上线。 产品经理没有想清楚某个功能的价值,或者带来的收益不痛不痒,而技术团队则需要为此付出巨大的心血,也就是加班。当然这也不一定是产品经理的错,国内公司,老板的指令太多了,不说了,你懂的。 在美国这边,产品经理大多是行业经验非常丰富的人,要么是从工程师转过来,要么是从多年的商业领域经历然后读个 MBA转过来。上线一个功能,经过严谨的理论推演、多轮前期调研、科学的 AB test,从提出 idea 到最终用户看到更新,经常耗时半年或一年。很多不成功的 idea 还没面市,就因为数据不好而“胎死腹中”。这样一方面提高了产品需求的质量,另一方面也给技术团队足够多的时间来设计和实现一个可持续发展的架构。 技术团队话语权低 管理层在做决策时,往往更重视产品更新迭代,而忽视技术的建设。 比如说技术团队有100个小时,老板可能会把90小时都投入到实现产品功能,给技术优化、修补技术债务。于是就会出现技术实现非常粗糙的情况,举个栗子,给你一周时间,实现一个 IM 功能,你还会考虑什么模块化、可维护性、性能优化之类的吗?当然是怎么快怎么来,百度一下有没有别人实现过的代码,ctrl+v / ctrl+c,一点运行,诶,跑通了,上线。 所以国内很多程序员看别人的代码,感觉都是一团 shit,完全没法维护,干脆自己重写一个。 技术老大能跑到老板面前说“我们先把产品需求停一停,让我们的技术团队好好地优化一下基础设施吧。”吗?只要他不是傻子,都不会这样说。 话语权低还体现在,对产品几乎没有决策权,甚至不能质疑产品决策,提反对意见,总会被产品经理各种理由挡回来,产品经理有一句话终结争论的尚方宝剑:这是老板要做的。 久而久之,技术债务越堆越高,bug 越来越多,程序员不加班,谁加班? 而美国公司的现象是,技术话语权非常高,一个没想清楚的产品需求,能被技术团队直接打回去。同时,技术团队可以自主地花很多时间在技术优化上面。产品不能按时上线?经理说:没关系,延后,按照最优的技术方案来推进。有时候你想赶紧上线,提交一段粗制滥造的代码,会被同事鄙视死,被老板骂死。 每个季度最后一个月,专门抽出精力,来弥补技术债务,产品需求放一边先。 在这样的环境下,短期看起来效率低,但长期是最高效的。国内是“欲速侧不达”,美国是“慢工出细活”。 技术基础设施差 知乎上有一个比较热门的讨论:腾讯的技术建设是否落后? 这不但是腾讯的问题,实际上绝大部分公司的技术基础设施都非常差。 有多少个公司能养一个专门的 Infra 团队?有多少个技术团队能专门成立一个小团队,进行 Infra 优化?即使有,有多少个公司能保证 Infra 团队的成果能在全公司推行? 我相信能做到这样的公司是凤毛麟角的。 中小公司不必说,在这样高度竞争环境下,哪有财力养一个不能直接带来 KPI 提升的团队,即使有钱,也没时间搞优化。 而大公司呢,即使腾讯这样的体量,有一个 TEG 事业群做基础设施建设。但是现实情况是,依然没有全公司通用的内部工具,各个团队依然在重复造轮子。阿里算是做的很好的,前几年开始推行的大中台战略取得了显著的成果,解放了各个产品部门的生产力。 计算机程序这种东西,一个人写和一群人写,几千个用户使用和几千万用户使用,是完全不同的概念。没有强大的基础设施建设,技术团队越壮大,效率越低,用户数越多,bug 越多。出来混总是要还的,今天没有人关注基础设施,未来就会又无数个程序员为此加班。 而说回美国这边,专门的 Infra 团队几乎是每个公司的标配了。这也是工程师文化的结果,创始人、高管团队一定有很强的技术背景,走过了很多弯路,所以非常重视基础设施建设这种“重要而不紧急”的事情。 畸形的职场文化 最后再来说说文化的差异。 美国人非常注重个人和家庭,牺牲自己的时间来给公司加班,这是不可能的。一到下班时间准点走,非上班时间完全不查邮件。很多公司入职培训就专门强调了怎么平衡工作和生活,其实就是说:下班时间就是你的时间,你有权利不处理公司事务。 反观国内,不知道从什么时候起,加班就是约定俗成的。还出现了看似很有道理的人生经验,比如“年轻人就应该多拼一下”,“加班能学到更多东西,对未来也有好处”。 加班,竟然成了光荣的、可以拿来攀比的现象,比如说加班到凌晨一两点,拍个照,发个朋友圈,收到老板的点赞很开心。而管理者呢,还就吃这一套,谁加班多、会来事儿,考核的时候就更有好处。 在这种加班氛围下,甚至还出现了“伪加班”。早上十点到公司,上个厕所、看会儿新闻、刷刷朋友圈,就到十一点半了,什么工作也没做,然后准备吃午饭;饭后逛一逛、睡个觉,又到2点上班时间了,写会儿代码、刷刷知乎,一下午又过去了,很多公司有免费晚餐,吃完饭回来7点左右,再写写代码,磨到10点。哦耶,又是充实的一天呢,发个朋友圈给老板知道。 其实一天有效工作时间还不够8小时,但就是“加班”了。 综上,大概就是国内加班严重的原因。 我觉得这也是某个时代特有的现象,谁都没有错,谁也没有办法改变这种情况。在国内这样一个高度竞争的环境下,公司为了生存必须跑快点,个人为了发展必须多做事,毕竟你不做就会有千千万万的人来抢。等到中国真的发展到美国这样的发达程度,生存的减小了,才有资格谈更好的生活品质。
8月前 喜欢(1) 浏览(777) 评论(0)
社区公告
[公告] Yii中文网为优化用户体验进行大版本升级,老版网站会维持一段时间,可以点击顶部"旧版"链接访问旧版网站。
沟通交流

:492175201(技术1群)

:183620600(技术2群)

:291010569(技术3群)

订阅号 | 更多精彩内容推送
本周推荐