自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (1)
  • 收藏
  • 关注

原创 【精】元数据驱动SaaS 架构的技术思考

引言作为业务系统技术开发同学,面向当下: 首先应该是快速搭建业务通路,让线上业务跑起来,快速试错,解决生存问题; 第二步是在链路畅通、业务基本跑起来的基础上,如何支撑业务跑得更快,就需要解决快速增长问题; 第三步,在完成支撑业务快速增长的基础上,要进行精细化提升,通过在支撑业务快跑间隙挤时间打磨系统功能和体验,踏踏实实花时间去抽象能力,沉淀产品,提升效能; 同时我们也必须面向未来,如何在抽象能力以及沉淀了产品的基础上,把所承载和沉淀的业务能力...

2021-01-24 15:09:54 1050

原创 分布式系统 之 分布式事务问题

分布式系统 之 分布式事务问题1、你怎么分享分布式事务?分布式事务问题是分布式系统绕不开的技术话题。“谈谈你对分布式事务的理解”、“分享下你团队在分布式事务上的解决方案”、“你用过哪几种分布式事务的中间件”?在技术交流/面试中很容易讨论到这些个话题,得到的反馈大概率是这样的:“额~~ ~~ ~~ ~~”,一时语噻 《《《 平时没有梳理和认知分布式事物的问题,一时不知如何组织语言。“我们没有使用分布式事务”《《《 分布式事务裸奔状态。“我知道有CAP和BASE理论,分别是XXX意思” 《《《

2020-11-29 18:29:42 2036 1

原创 【精】一文就明白 并发编程/多线程

《一文就明白Java并发编程》一文系列 之 并发编程。行文3万余字,包含了多线程方方面面的知识点,相信对你会有所帮助!黄老师文章目录《一文就明白Java并发编程》1、进程&线程2、JUC并发包2.1、JUC包介绍2.2、Atomic原子类2.2.1、Atomic原子类的细分2.2.2、Atomic原子类的实现原理2.3、JUC包中的锁2.3.1、顶层抽象类:AbstractQueuedSynchronizer(AQS)2.3.2、顶层抽象类:AbstractOwnableSynchr

2020-11-15 13:03:38 1030

原创 【精】一文就让你精通JVM

《一文就让你精通JVM》网上有关JVM的知识贴多如牛毛,其中有纷杂的零碎知识贴,也有整理优秀的长贴。信息量非常充分。但作为复习或整理JVM知识的而言,还可以有更好的学习用户体验和高效的方式。因此,就想尝试写一篇有关JVM知识点的“秘籍”,让初学者仅读此文就能快速精通JVM的知识脉络以及关键知识,也能让复习着快速反查知识和经验之谈。黄老师文章目录《一文就让你精通JVM》1、背景知识铺垫1.1、JRE、JVM、JDK1.2、HotSpot Client/Server模式2、JVM体系结构2.1、Cla

2020-10-04 22:55:02 948

原创 《福格行为模型》笔记 --- ta为什么总是想得多做得少

读此书后,识别自己过去的误区1. 觉得只要有愿望、有动机,相关的事情都能被动机和自驱力所坚持、所克服。2. 动机是不可靠的,动机是会变化的,尤其是在需要坚持一段时间的事情上。不能只靠动机为驱动力。3. 人们总是高估自己在未来的动机。4. 当达成愿望的行为能力有难度时,要去分析和简化,让实施行为足够简单,才能长期坚持。5.人们往往误以为动机是改变行为的关键,但其实:简单才有可能彻底改变行为。6.提示,是行为发生的决定性要素:没有提示,行为就不会发生7. 不重视“小庆祝”,不通过这个放大和提升

2023-09-20 10:48:24 177

原创 沈剑:技术核心管理者的时间,都只花在这 20% 的事情上

前言今天跟大家分享的话题是:作为一名企业的技术核心管理者,我们应该规划和思考哪些问题?作为管理者,我接下来将分享三个问题,希望在这个过程中,大家也与我一起来思考和探讨: 关于战略; 关于能力建设; 关于人员培养。 作为公司的核心管理者,不管是技术、产品、运营、销售,还是客服的管理者,我们需要思考:你的时间花在哪里?或者说你的领导的时间花在哪里?我们需要反思,作为管理者的我们,每个季度、每个月、每周,甚至每天的时间都花费在了这些事情上...

2021-04-26 10:48:08 408

原创 简单聊聊限流(Sentinel vs Hystrix ;滑动窗口 vs 漏桶 vs 令牌桶)

文章目录1、限流需求场景2、Sentinel vs Hystrix3、Sentinel功能介绍3.1、如何使用3.2、关于隔离的设计3.3、业务实践分享4、限流算法分析4.1、滑动窗口算法4.2、漏桶算法4.3、令牌桶算法4.4、三者对比1、限流需求场景(本文主要讲述服务端限流,不涉及客户端和网关限流策略)大家经常会在2C互联网公司的技术场景上听到高并发,说到限流、熔断、降级。其实,在2B领域同样也用“限流、熔断、降级”。任何生产级的平台型系统,线上稳定性都是生命线,都要防范于未然。.

2021-02-10 20:55:35 3049 6

原创 剖析LinkedHashMap 和 LRU实现的种种

文章目录1、LinkedHashMap数据结构2、LinkedHashMap知识要点2.1、LinkedHashMap构造方法的accessOrder参数2.2、LinkedHashMap在HashMap基础上额外维护一个双向链表2.3、put(key, value)新增数据时2.4、get(key)访问数据时3、实现一个LRU3.1、LinkedHashMap是天生的LRU3.2、线程安全的LRU3.3、可以设置过期时间的LRU3.4、Guava怎么做的1、LinkedHashMap数据结构一图便

2021-01-31 23:10:29 506

原创 从MySQL事务和故障恢复角度,清晰弄懂 Undo log、Binlog、Redo log的作用和原理

文章目录1、从MySQL的WAL说起2、再说说Crash-Safe3、三大核心日志模块4、两阶段提交5、组提交6、"双1"设置7、崩溃与数据恢复流程8、Bin log vs Redo log9、附录9.1、MySQL执行架构9.2、Redo log文件格式9.3、Binlog写入机制1、从MySQL的WAL说起WAL技术:全称“Write-Ahead Logging”技术关键思路:内存里修改,先写日志,再写磁盘。【问题】:为什么不直接更改磁盘中的数据,而要在内存中更改,然后还需要写日志,最后

2021-01-31 16:12:01 1978 7

原创 从钉钉看2B SaaS办公平台策略

中国的To B市场上,SaaS生态应该是怎么样的?IDC的一份白皮书中写到,围绕Salesforce的全球生态要比Salesforce本身大很多,增长速度也更快。在2019年,当Salesforce每赚1美元,它的全球生态将赚4.29美元。在国内,钉钉用户数达4亿、企业组织数量1700万。在这个迅速爆发的To B生态中,钉钉如何“界定”生态参与者?又如何界定自己的“边界”?钉钉的两个边界Q:钉钉怎么去定义你们的生态?以及目前这个生态里有多少参与方和角色?钉钉:钉钉天生就...

2021-01-30 18:33:16 801

原创 一文掌握MySQL锁机制(共享锁/排他锁/意向锁/间隙锁/临键锁等)

文章目录1、数据库为什么要有锁机制2、锁的分类3、锁详细介绍3.1、表-共享锁(S)3.2、表-排他锁(X)3.3、表-自增锁(Auto-Inc Lock)3.4、行 - 记录锁(Record Lock)3.5、表 - 意向共享锁(IS)/ 意向排他锁(IX)3.6、行 - 间隙锁(Gap Lock)3.7、行 - 临键锁(Next-Key Lock)3.8、行 - 插入意向锁(Insert Intention Lock)3.9、总结-要点4、对应SQL场景5、锁与事务的关系6、死锁和死锁检测处理6.1、死

2021-01-30 18:19:19 1191 2

原创 三目运算类型取值原则(避坑)

在云笔记无意翻到这个N年前的小笔记,挺有意思的。PO一下### 三目运算语法:源于某次帮团队成员看NPE问题的梳理:String result = 100 < a ? "可以" : null ;orint pos = 10;Integer up = null;Integer v = 100 < a ? pos : up; 《《《《 运行结果是什么?NPE哦1、三目运算第二部分和第三部分类型一样,那么返回结果的类型也一样2、三目运算第二部分和第三部分,.

2021-01-24 21:28:24 1071

原创 元数据驱动的业务表单定制中心 思想和实践介绍

文章目录1、业务开发中常见需求本质2、元数据驱动的思想3、表单中心架构图4、表单元数据5、具体实现分解5.1、表单基础服务5.2、表单SDK5.3、应用场景:独立页面 + 自定义扩展逻辑5.4、应用场景:嵌入其他页面 + 操作联动5.5、表单数据检索/分析需求5.6、表单数据校验需求6、业界方案对比6.1、相比 纷享销客6.2、相比 阿里宜搭7、表单中心的难点1、业务开发中常见需求本质尤其是在2B的系统中,表单功能会非常常见。从一套被设计被定义的数据模型开始(业务对象)编写基于业务对象的各类操作

2021-01-23 21:28:15 1575 2

原创 分布式系统灰度发布实践

文章目录0、分布式系统灰度要实现的功能清单1、携带灰度因子1.1、Http请求中1.2、JVM中1.3、调用链中2、前端资源灰度2.1、方案一:基于verynginx2.2、方案二:基于istio Envoy3、Rest API请求灰度4、分布式RPC(Dubbo)调用灰度4.1、概览4.1、实现原理拆解4.2、Dubbo URL4.3、Zookeeper与Dubbo4.4、开发点-1:Provider支持自动注册为Grey版本的Dubbo Service4.5、开发点-2:Consumer支持自动记录Gr

2021-01-23 15:51:05 3025 2

原创 张一鸣To B路

日前有媒体报道,字节跳动全球CEO张一鸣近日在内部目标中提到,2021年将重点在三个新业务方向上做进一步探索:跨境电商,To B,LKP。其中,To B业务主要依托飞书和火山引擎展开。虽字节方面回应消息不属实。但官方数据显示,去年年中字节跳动旗下产品的全球月活跃用户超过15亿。截至今年8月,抖音的日活跃用户已经超过6亿。尽管官方否认消息的准确性,但事实上字节跳动的To B业务已越来越清晰。今年11月9日,南京市大数据管理局《基于政务云的微服务监控和运营数据分析管理平台》项目中标公告发布,字节

2021-01-10 14:53:03 265

原创 中国SaaS平台的三种商业模式

(1)SaaS软件商业模式:云学堂为代表云学堂卖SaaS软件,挣SaaS软件钱。一般卖给企业内部的企业大学,当企业内部的培训学习平台使用。但是大家也都知道,在中国,培训学习这个行当,金牌讲师和金牌课程内容绝对是核心中的核心,而培训学习平台只是个工具而已,只能每年收一些相对固定的工具费用。培训学习SaaS至少比其他SaaS工具还要好一点,就是因为培训学习SaaS,至少还有收到其他钱的可能性:比如课件存储空间的费用。大量课件是文档和音频视频,占存储空间大比如讲课时,视...

2021-01-09 22:55:18 4024

原创 RocketMQ的关键知识笔记

6种消息类型普通消息顺序消息广播消息延时消息批量消息事务消息2种消费模式集群消费:一个Group ID内只消费一次广播消费:一个Group ID内所有Consumer都消费部署架构Name Server + broker(主/备) + producer + consumer【broker】与所有Name Server建立长连接【producer】与某个Name Server建立连接,查询topic所在broker,并与broker master建立连接【consu

2021-01-09 21:41:04 243

原创 ThreadLocal内存泄露知识点详解

ThreadLocal内存泄露详解1、ThreadLocal常规用法public class ThreadLocal<T> { public static <S> ThreadLocal<S> withInitial(Supplier<? extends S> supplier); public void set(T value); public T get(); public void remove()

2021-01-09 16:48:18 339 1

原创 手把手教你Java字节码Demo

手把手教你Java字节码Demo接触中间件的开发来说,了解像Pinpoint(https://github.com/naver/pinpoint)、BTrace(https://github.com/btraceio/btrace)、阿里的JVM-SANDBOX(https://github.com/alibaba/jvm-sandbox)、Java在线问题诊断工具Greys(https://github.com/oldmanpushcart/greys-anatomy)等,都是通过字节码技术,无侵入的干

2021-01-01 17:26:59 445 1

原创 CGLIB中的常用API

CGLIBCGLIB,即Code Generation Library,是一个开源项目。Github地址:https://github.com/cglib/cglib。CGLIB的github简介:CGLIB - 字节码生成库,是用于生成和转换Java字节码的高级API。它被AOP、测试、数据访问框架用于生成动态代理对象和拦截字段访问。CGLIB提供两种类型的JAR包:cglib-nodep-x.x.x.jar:使用nodep包不需要关联ASM的jar包,jar包内部包含ASM的类库。cglib

2020-12-31 14:30:10 370

原创 解决homebrew长时间停在Updating Homebrew 这个步骤

在国内的网络环境下使用 Homebrew 安装软件的过程中可能会长时间卡在 Updating Homebrew 这个步骤。例:执行 brew install composer 命令➜ ~ brew install composerUpdating Homebrew... # 如果碰到长时间卡在这里,参考以下 2 种处理方法 方法 1:按住 control + c 取消本次更新操作➜ ~ brew install composerUpdating Homebrew...^C按住 con

2020-12-19 22:33:09 2603 2

原创 slf4j MDC是个好东西

slf4j MDC是个好东西简介MDC 全拼 Mapped Diagnostic Contexts,是SLF4J类日志系统中实现分布式多线程日志数据传递的重要工具。同时,用户也可利用MDC将一些运行时的上下文数据打印出来。什么意思呢?常规情况下,写打日志的代码时,一般都是log.info、log.warn、log.error将想要打的日志进行拼装和格式化,打到日志输出中。MDC能干什么呢?能在不改动log.xxx打日志代码的情况下,在最终的日志输出的指定位置打印额外的信息。而这,就是靠MDC进行

2020-12-19 20:26:57 1953 2

原创 Java 生成随机数的 5 种方式

先说结论试测数据:基于常见场景:在一个数据范围区间内生成随机数。1000万的随机数范围,for循环生成50万个随机数。无其他额外操作。SDK包性能耗时评价java.util.Random9毫秒1、编写简单,方法较多,也快速。很多SDK包都基于此扩展。2、随机性重度依赖seed的情况,seed一样,分配的随机数和顺序一样。3、线程不安全。ThreadLocalRandom8毫秒1、继承于java.util.Random2、与线程绑定,一个线程一个,多线程下安

2020-12-16 15:11:27 781

原创 干货,教你怎样开一场真正的战略会

越来越多的企业意识到战略的重要性,并在每年的年底制定下一年的战略规划。最近,就有很多企业来找我们开战略会,我发现一个很有意思的现象:在战略会上,通常是老板一个人在思考战略,其他人就等着老板讲,结果最后老板也没有完全讲清楚。这样开战略会其实效率很低。怎么提高效率呢?这些企业找到我们以后,我们会帮助他们把整个战略会从头到尾做个详细的梳理,除了讨论业务之外,还会讨论组织和人才。今天跟你分享下这个梳理的过程,以及怎么开好一场战略会。01.会前的三个关键动作开战略会之...

2020-12-15 23:58:46 2777

原创 你不得不知的Spring事务失效 8 大原因

文章目录1、数据库引擎不支持事务2、没有被 Spring 管理3、方法不是 public 的4、类内部自身调用问题5、数据源没有配置事务管理器6、不支持事务7、异常被吃了8、异常类型错误1、数据库引擎不支持事务这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档:https://dev.mysql.com/doc/refman/5.5/en/storage-engine-sett

2020-12-15 23:25:30 399

原创 To B服务进击的10大增长法则

2008年金融危机以后,催生了两大领域的科技创新:一类是To C的共享经济模式公司,例如Uber、Airbnb、Lyft等;另一类是以SaaS、PaaS为模式的To B云服务公司。2008年以前,全球还没有一家达到独角兽量级的云服务创业公司;但到目前为止已经有100多家估值超过10亿美金、20多家估值超过百亿美金的基于云服务的企业服务公司。随着云计算基础设施的日益完善,企业业务在线化和协作在线化日益成为共识,新一代基于云服务的企业服务获得了巨大的增长。而2020年这次“世纪之疫”,在导致社会结构巨变

2020-12-07 15:10:59 785

原创 2020年中国企业级SaaS行业研究报告

核心摘要新冠疫情加快了市场教育进程:受新冠疫情影响,传统的线下零售、餐饮、采购等活动受阻,企业对零售电商、协同办公、CRM、数字化采购等领域SaaS产品的需求显著增加,带动部分小微企业初步涉足SaaS产品的尝试,市场教育取得进展。 企业级SaaS市场将保持较快速的增长:2019年中国企业级SaaS市场规模为362.1亿元,同比增长48.7%。2020年新冠疫情影响了宏观经济增速,但线下转线上、远程办公等需求反而成为SaaS发展的助推力,预计2020年企业级SaaS市场仍将保持可观增速,到2022.

2020-11-24 16:34:23 2169

原创 热门的2B企业服务,资本是如何解读和判断的

2020年,新冠疫情为企业数字化按下“加速键”,企业服务无疑迎来了巨大的风口,国内一批企业服务的标杆公司都获得了爆发式增长,企业服务也被认为是贯穿未来20年的长期大趋势。实际上,中国过去的企业服务大部分没有做起来,随着最近两年发生的一些变化,企业服务创业的黄金时代正在揭开。无论是对于投资界、科技巨头,还是对于中小型创新企业来说,面向B端市场的服务正在事实上受到越来越多的重视,一场更全面、更纵深的面向企业服务的市场大幕正在徐徐拉开。当越来越多的资本与创业者涌入to B,噪音也随之而来。为了拨开企...

2020-11-22 19:18:19 1082 3

原创 Mybatis实现框架解读

SQL 执行代码路径Mybatis 层次结构Mybatis 抽象架构

2020-11-18 21:59:14 105

原创 作为业务团队Leader怎样做规划 之 增长飞轮

你有没有发现:有些公司可以构建持续发展的动力,不断跨越新技术和行业的竞争持续做到从优秀到卓越?而其它公司不行?有些团队能够长盛不衰,面对不同的挑战都能持续突破?而其它团队不行?有些人能够经得住时间和不同岗位的考验,持续打怪升级,实现跃迁?而其他人不行?对,我也发现了。那这里面有什么奥秘吗吉姆. 柯林斯在《从优秀到卓越》第八章提出的“飞轮效应”回答了这个问题。时隔 9 年后又将其单独写成新书《飞轮效应》(中文版今年 4 月刚刚上市),进一步阐释它的价值以及如何落地。飞轮效应不仅对一家企..

2020-10-26 17:33:37 1798 1

原创 技术团队该有的工作观

即使是技术类工作,除了“专业能力过硬”,以下软素质同样重要!1.认真负责 不把“出了问题谁负责”挂在嘴边,相反,“就这么干,出了事我负责”更具备leader的潜质 交给ta的任何事情,能够拿到结果,如果每件小事都能让人放心。就问你,你踏实不踏实? 不推三阻四,很少下意识的“找借口”,如果每次沟通都反馈“不是我”、“我没有”。就问你,你气不气? 2.自驱力强 不事事等别人交代,不是“要我做xxxx”,而是“我要做xxxx” 主动承担分外的事情,...

2020-10-19 23:03:47 208

原创 工作避坑指南 - 应届生篇

关于每页PPT的讲义欢迎留言交流

2020-10-19 22:58:10 208

原创 JVM实战 之 一次内存溢出排查经历

源于线上应用事件某天团队同学收到线上系统报警,web-abc真线有一台机down掉了。为保留事故现场,做剩余应用做了dump。然后开始分析问题排查1、 经过对线上出问题周期内的应用日志逐条排查,未发现明显异常。2、分析当时的dump快照,发现有两个类的实例数和总大小异常,这两个类是跟poi解析excel有关!这个很关键。3、再翻事发时间的真线日志,有所发现,16点11分51秒的时候,确实有流量请求一个上传excel的接口4、对比常规接口的日志,事发情况下,只有start没有finish

2020-10-15 23:09:11 384

原创 JVM实战 之 奇怪FullGC定位

一、背景图1 真线环境abc-center 堆使用率图2 真线环境 abc-center 非堆使用率由图1、图2 可见heap和permGen使用率都不高,但是abc-center 2台机器基本上每天会进行2次规律性的FullGC;二、问题排查在线询价真线环境JVM参数配置-Xms2g-Xmx2g-Xmn448m-XX:SurvivorRatio=5-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:+CMSClassUnloadingEnab

2020-10-15 22:54:13 678

原创 JVM实战 之 JVM参数调优案例

背景团队线上的(共享基础服务)用户服务user-server和权限服务user-center某段日子内的FullGC过于频繁,且user-center单次FullGC时间过长(1.5s),导致业务高峰期cpu和线程池使用风险压力较大。如图:user-server:user-center:遇见如此的堆内存图怎么办?且看下文。注:推测+验证的过程很重要。即见识相关的案例,留有思路很重要。user-server分析过程及实施结果先晒经验:在没有显式设置新生代占比时,JVM对于新生代的

2020-10-15 22:24:33 1117

转载 java中方法不要写太长的真正原因

java中一般建议一个方法不要写的过长,不方便维护和阅读是其中的一个原因,但是其真正性能的原因大家知道吗?我们知道,JVM一开始是以解释方式执行字节码的。当这段代码被执行的次数足够多以后,它会被动态优化并编译成机器码执行,执行速度会大大加快,这就是所谓的JIT编译。hotsopt源码中有一句if (DontCompileHugeMethods && m->code_size() > HugeMethodLimit) return false;当DontCompileHu

2020-10-03 22:53:31 1037

原创 Java 三目运算的类型取值原则

1、三目运算第二部分和第三部分类型一样,那么返回结果的类型也一样2、三目运算第二部分和第三部分,其中一个是原始类型T,一个是原始类型的装箱。那么返回结果的类型是原始类型T。即对象会做自动拆箱。3、三目运算的第二部分和第三部分,其中一个是null,另外一个是对象。那么返回结果的类型是对象的类型。...

2020-09-24 21:48:00 257

原创 Java反射为什么性能差

解释反射内部是使用Unsafe这种JNI API的。JVM无法预知JNI的行为带来的影响,就把很多优化隔绝了。而非反射方式的代码,JVM经常会做很多优化和JIT,所以性能影响还是蛮大的。反射,将Java加载期该做的事情,延后到了运行期做。相比来说,做的事情也更多。例如:安全检查,访问控制反射的缺点相比非反射的代码,性能开销大。反射尤其不能用在执行频率高的代码段。曝光了Class的内部实现。破坏了Class不想公开的信息内容的设计。反射功能在运行时,会涉及要求更多的权限。对

2020-09-24 21:45:21 3258

原创 Jar包原理解读

可执行jar包 与 不可执行jar包我的理解:差别在于有没有引导文件,即main方法。靠运行main主(线程)方法去联动其他方法、业务。部分jar包并非加个引导文件main方法就能运行的,需要考虑到这个jar对于容器、环境等方面的依赖。Maven默认打的包是不可被执行的在SpringBoot的代码工程pom.xml中,靠依赖如下插件,实现将SpringBoot代码工程打成SpringBoot风格的可执行Jar包。<plugin> <groupId>

2020-09-24 21:42:17 1876

原创 服务API设计 之 API错误返回规范

API错误返回规范禁止通过抛异常形式返回API业务错误API禁止抛Checked异常,即业务处理上的参数错误、逻辑错误、业务错误等禁止通过抛异常形式返回,应用Response#code, message表达业务错误。注:不要逼调用方到处写try{}catch()。正例:Response<T> saveDesposit(...);反例:T saveDesposit(...) throws ServiceException, IllegalArgumentException

2020-09-24 09:03:55 765

test-asm.zip

java字节码技术示例代码

2021-01-01

空空如也

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

TA关注的人

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