Lua函数调用报错

之前的项目开发中有听到同事提及过有一种写法函数在调用时会报错,今天在看书的过程中又看到了,记录下来: local funA = function(n) if n == 0 then return 1 else return n+funA(n-1) end end print(funA(5)) 例如上面的代码,我们想求1+2+3+ ... +n的和,定义了一个函数funA,在funA递归调用自己。 我们运行是会发现报错。 lua: FunctionTest.lua:5: attempt to call global 'funA' (a nil value) funA是个nil值,也就是我们没有定义。 这是因为Lua我们的局部函数funA还没有定义完,因此我们想要调用那么就是个nil,如果这是有个全局的函数funA,那么他会调用全局的那个funA。而非我们想要调用的局部函数funA,如下: function funA(n) print("我是全局的funA") return 1 end local funA = function(n) if n == 0 then return 1 else return n+funA(n-1) end end print(funA(5)) 输出: [[-- 我是全局的funA 6 [Finished in 0.0s] --]] 对于这个问题我们可以先定义一个局部变量,然后在定义行数本身。如下: function funB(n) print("我是全局的funB") return 1 end local funB funB = function(n) if n == 0 then return 0 else return n+funB(n-1) end end print(funB(5)) 输出: [[-- 15 [Finished in 0.

五、Vue:使用axios库进行get和post、用拦截器对请求和响应进行预处理、Mock(数据模拟)

一、axios 【应用】进行请求和传表单 【axios中文档】:https://www.kancloud.cn/yunye/axios/234845 【vue-axios】:https://cn.vuejs.org/v2/cookbook/using-axios-to-consume-apis.html 【参考】:https://blog.csdn.net/u010132177/article/details/103116767 1.1 安装axios 进入项目目录,运行cmd,运行如下代码: npm install --save axios 运行项目: npm run dev 1.2 挂载axios到$axios写法(get) 第一步 src/main.js 【1】引入axios为 Axios 【2】挂载Axios到 $axios (使用其内部函数时:this.$Axios即可) // The Vue build version to load with the `import` command // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from 'vue' import App from './App' import Axios from "axios" //【1】引入axios Vue.prototype.$axios = Axios //【2】挂载Axios到 $axios (使用其内部函数时:this.$Axios即可) Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ el: '#app', //[1]:在index.

Informatica使用操作流程--缓慢变化维 案例9

一、缓慢变化维: 表示源表中的数据被更新,我们开发Informatica的缓慢变换维,让目标表中的数据跟着更新(原有的做更新,没有的做插入)。 二、案例: 需求: --源表(oracle) -----> 目标表 --OLTP(oracle的oltp用户下) -----> EDW层(oracle的edw01用户下) --department -----> department 地区维度表 说明,源表主要字段 三、开发流程简述: 1、定义源 2、定义目标,生成并执行sql 3、定义映射 --创建映射M_EDW_DEPARTMENT --拖入源表和目标表,使用Lookup查找组件查找目标,根据查找的结果进行判断 --使用Router进行不同条件的分发, --使用更新策略转换(插入、更新) --拖入两个目标表,连接映射,ctrl+S保存 4、创建任务,添加连接关系,修改任务映射,ctrl+S保存 5、创建工作流,连接任务,保存,通过任务启动工作流。 6、M端:工作流调度监控 7、目标数据库查验数据 8、更新和添加源数据,从新执行 缓慢变化维,检验效果 --更新源表数据 UPDATE department SET dept_name = '海淀', full_name = '海淀', dept_no = 'haidian' WHERE dept_id = '0000000349'; UPDATE department SET dept_name = '丰台', full_name = '丰台', dept_no = 'haidian' WHERE dept_id = '0000000350'; UPDATE department SET dept_name = '朝阳', full_name = '朝阳', dept_no = 'haidian' WHERE dept_id = '0000000351';

Python:类别覆盖最小采样个数

import numpy as np import scipy.io as scio import pandas as pd import matplotlib.pyplot as plt from sklearn import datasets from sklearn.datasets import fetch_mldata from sklearn.datasets import fetch_20newsgroups_vectorized def Cover_RandomSampling(y): n = len(y) labels = np.unique(y) num_labels = len(labels) Unobserved = [x for x in range(n)] Selected_labels = [] for i in range(n): temp = np.random.choice(Unobserved,replace=False) Selected_labels.append(y[temp]) Unobserved.remove(temp) ObservedLabels,ObservedCount = np.unique(Selected_labels,return_counts=True) if len(ObservedLabels) == num_labels: print(ObservedLabels,ObservedCount) break return len(Selected_labels) if __name__ == "

动态切换数据库(新增/修改/删除均通过配置文件)

场景: 假设我们的项目有多个数据库。我们一个请求过来的时候,是操作哪一个数据库,我们应该如何进行数据库的切换? 基于这个问题,下面做了一套通过 配置文件 + 注解 + AOP 的方式实现动态切换数据库的程序。当数据库增加,修改, 减少的时候,我们只需要去配置文件中进行修改,不必再去修改程序代码。 通过需求,一步一步思考: 基于我们假设的场景,再假设我们有两个数据库,datasource1 和 datasource2 ,项目默认配置的是datasource1 。 那么现在我们有一个请求,需要向datasource2 插入一条数据,应该怎么办呢?一般来说,我们能做到如下步骤: --------controller层接收到请求: @Controller public class DataSourceController { @Autowired private DataSourceService dataSourceService; @RequestMapping("/insert2") @ResponseBody public Integer insert02(String name, Integer age){ return dataSourceService.insertUser2(name, age); } } --------service层,dao层处理: public interface DataSourceService { Integer insertUser2(String name, Integer age); } @Service("dataSourceService") public class DataSourceServiceImpl implements DataSourceService{ @Resource private DataSourceDao dataSourceDao; @Override public Integer insertUser2(String name, Integer age) { int result = dataSourceDao.

Java 利用EasyPoi做Excel模板的导入导出操作

Java 利用EasyPoi做Excel模板的导入导出操作 项目背景加入pom依赖项目Excel模板图代码实现首先是实体类定义Excel 实现导入Excel的导出 结束语 项目背景 作为一名传统业务的程序员,每天都要不得不面对对各种类型的Excel的操作。想想都让人头疼。尤其是那种表头有的要纵向合并单元格,有的横向单元格合并的Excel,听听就让人头脑发麻。 最近,在做这方面的Excel操作的时候,就接到一个这样的场景。费了一番心思和各种模拟操作。终于大功告成。 加入pom依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.1.2-beta5</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> 加入以上这些依赖(时间有些久,大概记得这些),这里面有几个坑,大家请认真对待。首先就是最后两个依赖的版本必须是一致性的,其次。这两个依赖版本必须一致,否则会出现问题。 项目Excel模板图 在实现时,先来看看我们的模板样式吧。 图1模板就是项目中遇到的一个第一种情况的模板。 图2的模板开始有些复杂了。接下来是图3模板。 图3这就是我遇到的第三种类型的模板,比第二种稍微复杂些。 针对这些固定不变的类型模板,就可以给模板的表头取出定义成实体类对象,然后通过EasyPoi操作对象,将问题简单化。 代码实现 首先是实体类定义 由于有三张不同的Excel表,所以,我定义了三个实体类(get和set就不写了)。 public class CalendarIndexEntity extends BaseRowModel { @ExcelProperty(value = {"Cycle Name"}, index = 0) private String cycleName; @ExcelProperty(value = {"Tenant ID"}, index = 1) private String tenantID; @ExcelProperty(value = {"League Entity"}, index = 2) private String leagueEntity; @ExcelProperty(value = {"

vector容器及迭代器遍历

#include <iostream> #include <iomanip> #include <string.h> #include <cmath> #include <algorithm>//算法头文件 #include <fstream> #include <cstdlib> #include <vector> using namespace std; //定义sort排序规则 降序 bool compare(int a, int b){ return a>b; } int main(){ vector<int> v1; // vector<int> v1(6); 先声明6个空间,后面再添加就是00000068... // vector<int> v1(6,10); 前面6个全是10 v1.push_back(6); v1.push_back(8); v1.push_back(10); v1.push_back(2); v1.push_back(3); //底层是栈,入栈 // v1.pop_back();//出栈 cout<<"--------------传统for遍历--------------------\n"; for(int i=0; i<v1.size(); i++){ cout<<v1.at(i)<<" "; // cout<<v1[i]; 也可以 } //迭代器 cout<<"\n--------------迭代器遍历--------------------\n"; vector<int>::iterator iter; iter = v1.begin(); while( iter !

已安装opencv后还是不能识别cv2的问题:no moudle named cv2

这个问题差点搞崩溃了,解决办法: 问题描述:import cv2 报错提示未安装此包。 解决措施: 1、cmd框中输入pip install cv2,若安装成功,则恭喜你一次性成功,如提示“无法找到与你当前版本的匹配”则尝试第2种方法。 2、手动下载cv2包,解压后将cv2.pyd放到site_packages的目录下,下载地址:https://pypi.python.org/pypi/cv2-wrapper/0.1

Oracle的sql基本语法总结(2) -- 运算符、查询(distinct、where条件运算、交并补集合运算、连接查询、子查询)、伪列、限定查询结果行数、函数

目录 一、oracle运算符 (1) Oracle算术运算符 (2) Oracle关系运算符 (3) Oracle的逻辑运算符 (4) 字符串连接符|| 二、oracle常见查询 (1)DISTINCT语法结构 (2)where的 =、IN、LIKE、BETWEEN...AND、AND、OR、NOT (3)Oracle集合运算 (4)Oracle连接查询 (5)Oracle子查询 三、Oracle的伪列 (1)rowid、rownum 伪列使用 (2)限定查询结果行数显示 四、Oracle函数 (1)Oracle字符型函数 (2)Oracle日期函数 (3)Oracle数值型函数 (4) Oracle转换函数 (5) Oracle聚合函数 一、oracle运算符 (1) Oracle算术运算符 +、-、*、/、mod() select 5 + 3 from dual; select 5 - 3 from dual; select 5 * 3 from dual; select 5 / 3 from dual; select mod(5,3) from dual; (2) Oracle关系运算符 符号解释符号解释=等于<>或者!=不等于>大于>=大于或者等于<小于<=小于或者等于 (3) Oracle的逻辑运算符 AND、OR、NOT (4) 字符串连接符|| select 'w' || 123 || 'abc' from dual; 二、oracle常见查询 (1)DISTINCT语法结构 -- SELECT DISTINCT 列1,列2,列3.

android P onProvisioningFailure 与onReachabilityLost

onProvisioningFailure 通常发生在获取ipv4, ipv6,获取网关失败的情况下发生; 包括dhcp动态或静态分配,renew时都可以发生 代码在 frameworks/base/services/net/java/android/net/ip/IpClient.java 一种是在LOST_PROVISIONING被调用 compareProvisioning() wasProvisioned && !isProvisioned delta = ProvisioningChange.LOST_PROVISIONING lostIPv4Address || (lostIPv6 !ignoreIPv6ProvisioningLoss) oldLp.hasGlobalIPv6Address() && (lostIPv6Router && !ignoreIPv6ProvisioningLoss processMessage(DhcpClient.CMD_CONFIGURE_LINKADDRESS) setIPv4Address failure dispatchCallback(ProvisioningChange.LOST_PROVISIONING) dispatchCallback(LOST_PROVISIONING) mCallback.onProvisioningFailure() 一种被doImmediateProvisioningFailure()调用 startProvisioning if (!req.isValid()) { doImmediateProvisioningFailure(IpManagerEvent.ERROR_INVALID_PROVISIONING); f (mInterfaceParams == null) { doImmediateProvisioningFailure(IpManagerEvent.ERROR_INTERFACE_NOT_FOUND); class RunningState extends State enter() ->doImmediateProvisioningFailure !startIPv6() !startIPv4() !applyInitialConfig !startIpReachabilityMonitor() doImmediateProvisioningFailure mCallback.onProvisioningFailure() mCallback.onProvisioningFailure()主要调用在:(别的地方也可以) frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.java public void onProvisioningFailure(LinkProperties newLp) { sendMessage(CMD_IP_CONFIGURATION_LOST); 在连接的状态下 L2ConnectedState处理后,状态会变成disconnecting ->disconnected processMessage(CMD_IP_CONFIGURATION_LOST) handleIpConfigurationLost(); reportConnectionAttemptEnd() transitionTo(mDisconnectingState); 这个与IpReachabilityMonitor里的onReachabilityLost / CMD_IP_REACHABILITY_LOST有所不同。

【Android】22.BroadcastReceiver的动态使用

22.BroadcastReceiver的动态使用 1.下载素材。 本节素材源码,请在公众号回复" AS12142 "。 2.删除AndroidManifest的receiver注册信息。 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jsz.nopi.firstapp"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 3.修改MyRecevier。 public class MyReceiver extends BroadcastReceiver { public final static String ACTION = "jsz.nopi.firstapp.intent.action.MyReceiver"; @Override public void onReceive(Context context, Intent intent) { System.out.println("接收到了信息是:"+intent.getStringExtra("msg")); } } 4.修改MainActivity。 public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText editText; private Button button; private Button btnReg; private Button btnUnReg; private MyReceiver receiver; @Override protected void onCreate(Bundle savedInstanceState) { super.

回音系统的设计(卷积 matlab)

前天跟着我们老师听课,也就是我们的信号与系统这门课学到的卷积,然后利用卷积,迭代的思想去设计回音系统,emmm用MATLAB去实现. 在MATLAB里运行 说话,就会出现相应的回声,这个时长可以自行调试。 clear,clc,close all; Task='Echo'; mkdir(Task); % record data or read data % 1, record data fs=8000; % sampling frequency rd=2; % record duration recObj = audiorecorder; fprintf('Speaking for %d seconds. \n',rd); disp('Start speaking.') recordblocking(recObj, rd); % Record your voice for 5 seconds. disp('End of Recording.'); % play(recObj); % Play back the recording. % Store data in double-precision array. x = getaudiodata(recObj); % % % 2, read data % [x,fs]=audioread('Record_x.

南京现场赛J题Spy【KM算法模板题】

Over time, those coaches in BDN Collegiate Progranuning Contest split into two camps.The big danger is that, while optimists and pessimists battle it out, the environment of this area becomes ever more divided between universities with outstanding student resources surrounded by a vast neglected group of stagnation. Amy and Bob, as the linchpins of these two camps respectively, decided to put the end to the rival. Now both camps hold nn coders and nn tea-bringers as the last resource on hand.

2019 ICPC Asia Nanchang Regional (dsu on tree+treap平衡树)

题意: 给你一棵树,每个点有一个val 让你找树上有多少有序对(x,y)满足以下条件: 1.x!=y 2.x不是y的祖先;y不是x的祖先 3.x与y的最短路径长度<=k 4.x与y的最小公共祖先的值vz,满足2vz=vx+vy 解析: 就是启发式合并,同时建n棵权值treap树,来维护该权值下,有多少深度的点插入进来。 在遍历轻孩子找答案时,每一次,已经确定根和一个点x,z,找y,那么我们只需要找需要权值的treap里面有多少点距离x的 长度<=z。 这里有几点坑的地方:1.treap树的rank操作找的是<=v的最大排名 2.treap的空间复杂度是O(nlogn)所以要开2e6 3.注意在找y的时候,一些计算出来的y的权值是大于n的,所以要判断是否在[0,n]里,不然就会RE #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <cstdlib> #include <string> #include <vector> #include <map> #define lc t[x].l #define rc t[x].r using namespace std; typedef long long ll; const int N = 1e5+10; const int MM =1E7+26; vector<int> g[N]; int val[N]; int sz[N]; bool badboy[N]; int k; ll ans=0; int root[N]; struct node{ int l,r,v,w,size,rnd; }t[MM]; int cnt=0; int n; inline void update(int x){t[x].

Oracle介绍、安装、客户端工具使用、服务、用户

目录 一、Oracle介绍 1、Oracle简介 2、Oracle版本 3、四大特点 4、Oracle体系结构 二、Oracle 安装 三、客户端工具使用 1、SQL Plus工具 2、SQL*Plus 命令行工具 3、PL/SQL Developer 工具 四、服务 1、启动服务 2、服务实例名设置 五、用户 1、以系统管理员登陆数据库:sqlplus system/a123456@orcl 2、解锁系统自带用户scott, 切换连接并设置密码为tiger 3、Oracle用户创建(删除) 4、授权语句:grant...[on...] to... 5、查看用户的权限或角色 6、取消用户权限:revoke...[on...] to... 7、修改用户密码、锁定状态 8、创建表空间 一、Oracle介绍 1、Oracle简介 Oracle 是甲骨文公司开发的一款关系型数据库,它一款系统可移植性好、使用简单、功能强大的关系型数据库。它为各行业在各类环境下(服务器、虚拟机、微机环境下)可以快速搭建一种高效率、可靠性好、高吞吐量的数据库解决方案。 2、Oracle版本 Oracle有个人版(windows平台上提供),标准版1(1-2cpu的服务器),标准版(1-4cpu的服务器,可以做双机热备和RAC),企业版(全功能); Oracle从1979开始发布Oracle2.0开始到现在Oracle12c,从开始的只是数据存储和查询到后来的分布式、RAC、网络计算、到现在的对云计算的支持,当中经历了很多变迁和计算的提升。 2001年发布的Oracle9i之前,甲骨文公司把他们的数据库产品广泛的移植到了不同的平台上。截止甲骨文公司的Oracle10g/11g/12c都支持windows、Linux各大版本,包括X-86/64位系统。在各类大、中、小、微机环境中都适用。现阶段12C支持分布式数据处理。 3、四大特点 Oracle数据库具有完整的数据库管理功能、完备关系的产品以及具有分布式处理能力的数据库。它对数据的可靠性、大量性、持久性、共享性提供了一套可靠的解决方案、而且可以轻松支持多用户、大事务量的事务处理。它的优点就是可用性强、可扩展性强、数据安全性强、稳定性高,以及现阶段12C支持分布式数据处理。它提供了一套严禁的逻辑结构、文件结构、相关恢复技术的解释和实现。 4、Oracle体系结构 Oracle数据库实际上是一个数据的物理储存系统,这其中包括数据文件(ora/dbf)、参数文件、控制文件、联机日志等。Oracle数据库服务器由一个数据库和至少一个数据库实例组成。 数据库是一组存储数据的文件,而数据库实例则是管理数据库文件的内存结构。此外,数据库是由后台进程组成。 实例:Oracle实例是客户端应用程序(用户)和数据库之间的接口。一个操作系统只有一个Oracle数据库,但是可以安装多个Oracle实例,一个Oracle实例对应着一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)。Oracle实例由三个主要部分组成:系统全局区(SGA),程序全局区(PGA)和后台进程。 数据文件:Oracle数据文件是数据存储的物理单位,数据库的数据是存储在表空间中的。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间,一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。 表空间:表空间是Oracle 对物理数据库数据文件(ora/dbf)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间由同一磁盘上的一个或多个数据文件(datafile)组成,一个数据文件只能属于一个表空间。 oracle用户:表当中的数据是有Oracle用户放入到表空间当中的,而这些表空间会随机的把数据放入到一个或者多个数据文件当中。oracle对表数据的管理是通过用户对表的管理去查询,而不是直接对数据文件或表空间进行查询。因为不同用户可以在同一个表空间上面建立相同的表名。但是通过不同的用户管理自己的表数据。 二、Oracle 安装 安装包和安装详细介绍:https://blog.csdn.net/weixin_41685388/article/details/103576137 或者百度一下,找到对应版本安装步骤,按照提示安装即可,这里就不多啰嗦了。 安装时注意不要忘记给用户解锁和设置密码。 三、客户端工具使用 用户名输入规则:用户名[ as 连接身份] 连接身份(normal,sysoper,sysdba) 连接身份代表着改用户连接数据库后享受的权限,oracle 有三种身份如下 ~ sysdba:数据库管理员身份。权限:打开(关闭)数据库服务器、备份(恢复)数据库、日志功能、会话限制、数据库管理功能等。 ~ sysoper:数据库操作员身份 。权限:打开(关闭)数据库服务器、备份(恢复)数据库、日志功能、会话限制。

vue篇:watch

vue watch 1.说明2.使用 1.说明 在vue中watch里面,可以配置监听具体某个值的变化,可传参数: { [key: string]: string | Function | Object | Array } 在vue官网中对其描述: 一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个属性 2.使用 简单的使用 <template> <view> <input type="text" v-model="name"/> </view> </template> <script> export default { data() { return { name: "小宝", } }, watch:{ name(newName,oldName){ console.log("newName=>"+newName); console.log("oldName=>"+oldName); } } }; </script> 上面例子使用 v-model 进行双向绑定 在input元素改变值时,就会触发 watch 里面的 name 方法,而这 name 方法就是自己在data方法区定义的数据。当然这是比较常用的使用方式,在官网还有其他使用方式: { // 方法名 name: 'someMethod', // 该回调会在任何被侦听的对象的 property 改变时被调用,不论其被嵌套多深 name: { handler: function (val, oldVal) { /* .

source cmd

source是执行一个文件在当前shell中生效, 而用./filename或者sh filename 都是相当于额外开一个shell执行(执行结果在当前shell中不生效) 所以一般用户配置文件生效方式会采用 source ~/.bash_profile。 测试方法: 编写tmp.sh 内容为export test=2, 使用sh tmp.sh 时, echo $test为空, 使用source tmp.sh 时, echo $test结果为2.

MarkDown的一些基本语法

Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。 Markdown的语法简洁明了、学习容易,而且功能比纯文本更强,因此有很多人用它写博客。世界上最流行的博客平台WordPress和大型CMS如Joomla、Drupal都能很好的支持Markdown。完全采用Markdown编辑器的博客平台有Ghost和Typecho。 当然,MarkDown也有它的优缺点。 优点: 轻量、简单、通用,可以给文档快速排版,因为是纯文本,所以只要支持Markdown的地方都能获得一样的编辑效果,可以让作者摆脱排版的困扰,专心写作。相比其他编辑器,MarkDown显得操作十分简单。 缺点 需要记一些MarkDown语法(然而很简单,十分钟学会)。有些平台不支持MarkDown编辑模式。 不过csdn是支持MarkDown编辑模式的。 下面来介绍一些常用语法。 一、标题 想要设置为标题的文字我们前面可以通过#+空格来实现。 一个 # + 空格 代表一级标题,两个 # + 空格 代表二级标题…以此类推,最多支持六级标题。 下面是一个示例和效果: # 这是一个一级标题 ## 这是一个二级标题 ### 这是一个三级标题 ...... 这是一个一级标题 这是一个二级标题 这是一个三级标题 字体 常用字体语法为如下四种: 下面是一个示例和效果: **这是粗体** *这是斜体* ***这是粗斜体*** ~~这是删除线~~ 这是粗体 这是斜体 这是粗斜体 这是删除线 引用 使用标记符号>来引用一段内容。 引用是可以嵌套的,并且可以使用其他MarkDown语法。 下面是一个示例和效果: > 这是一段引用 >> 这是一段引用 > 这是一段引用 > > #### 这是一段引用 这是一段引用 这是一段引用 这是一段引用 这是一段引用 分割线 分割线可以用—和***来表示 下面是一个示例和效果: 下面是一条分割线 --- 下面是一条分割线 *** 下面是一条分割线 下面是一条分割线