- 北有云溪
-
YAML是"YAML Ain"t a Markup Language"(YAML不是一种标记语言)的递归缩写。YAML的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。主要强度这种语音是以数据为中心,而不是以标记语言为重心,例如像xml语言就会使用大量的标记。
YAML是一个可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高级语言类似,并且可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。
YAML的配置文件后缀为 .yml,例如Springboot项目中使用到的配置文件 application.yml 。
标量
标量是最基础的数据类型,不可再分的值,他们一般用于表示单个的变量,有以下七种:
这样,我们就可以在程序中引入了,如下:
Spring Boot 基础就不介绍了,推荐下这个实战教程:github.com/javastacks/…
对象
我们知道单个变量可以用键值对,使用冒号结构表示 key: value,注意冒号后面要加一个空格。可以使用缩进层级的键值对表示一个对象,如下所示:
然后在程序对这几个属性进行赋值到Person对象中,注意Person类要加get/set方法,不然属性会无法正确取到配置文件的值。使用@ConfigurationProperties注入对象,@value不能很好的解析复杂对象。
当然也可以使用 key:{key1: value1, key2: value2, ...}的形式,如下:
数组
可以用短横杆加空格 -开头的行组成数组的每一个元素,如下的address字段:Spring Boot 学习笔记分享给你。
也可以使用中括号进行行内显示形式,如下:
在代码中引入方式如下:
如果数组字段的成员也是一个数组,可以使用嵌套的形式,如下:
如果数组成员是一个对象,则用如下两种形式形式:
如果你想引入多行的文本块,可以使用|符号,注意在冒号:和 |符号之间要有空格。最新面试题整理好了,点击Java面试库小程序在线刷题。
它和加双引号的效果一样,双引号能转义特殊字符:
有时我们需要显示指定某些值的类型,可以使用 !(感叹号)显式指定类型。!单叹号通常是自定义类型,!!双叹号是内置类型,例如:
内置的类型如下:
引用会用到 &锚点符合和 星号符号,&用来建立锚点,<< 表示合并到当前数据, 用来引用锚点。最新面试题整理好了,点击Java面试库小程序在线刷题。
上面最终相当于如下:
还有一种文件内引用,引用已经定义好的变量,如下:
可以在同一个文件中,实现多文档分区,即多配置。在一个yml文件中,通过 — 分隔多个不同配置,根据spring.profiles.active 的值来决定启用哪个配置
python——Yaml
1.安装 2.yaml文件的格式 a)键值对形式 b)序列list c)纯量str d)强制转换,使用!! e)多个文件:一个yaml文件里存在多个文件,用---表示,只能一起读取,不能分开读取 3.yaml文件的读取xx.yaml 4.yaml文件的写入 5.yaml文件的持续写入 6.Template修改yaml中的变量 source.yaml Read_yaml.py ※ 问题:1.含有多个文件的yaml文件,读取出来如何选择? 2.持续写入能否将新写入的文件变成新的文件结构? ※ PS:觉得这篇文章有用的朋友,多多点赞打赏哦~!2023-06-13 00:51:271
yaml格式有严格的的格式要求,在变量值和难搞之间有两个空格吗
这个好像就是有严格的要求在变,然后就是也是有这个空格的。2023-06-13 00:51:341
现代配置指南——YAML 比 JSON 高级在哪
一直以来,前端工程中的配置大多都是 .js 文件或者 .json 文件,最常见的比如: 这些配置对前端非常友好,因为都是我们熟悉的 JS 对象结构。一般静态化的配置会选择 json 文件,而动态化的配置,涉及到引入其他模块,因此会选择 js 文件。 还有现在许多新工具同时支持多种配置,比如 Eslint ,两种格式的配置任你选择: 后来不知道什么时候,突然出现了一种以 .yaml 或 .yml 为后缀的配置文件。一开始以为是某个程序的专有配置,后来发现这个后缀的文件出现的频率越来越高,甚至 Eslint 也支持了第三种格式的配置 .eslintrc.yml 。 既然遇到了,那就去 探索 它! 下面我们从 YAML 的 出现背景 , 使用场景 , 具体用法 , 高级操作 四个方面,看一下这个流行的现代化配置的神秘之处。 一个新工具的出现避免不了有两个原因: YAML 这种新工具就属于后者。其实在 yaml 出现之前 js+json 用得也不错,也没什么特别难以处理的问题;但是 yaml 出现以后,开始觉得它好乱呀什么东西,后来了解它后,越用越喜欢,一个字就是优雅。 很多文章说选择 yaml 是因为 json 的各种问题,json 不适合做配置文件,这我觉得有些言过其实了。我更愿意将 yaml 看做是 json 的升级,因为 yaml 在格式简化和体验上表现确实不错,这个得承认。 下面我们对比 YAML 和 JSON,从两方面分析: JSON 比较繁琐的地方是它严格的格式要求。比如这个对象: 在 JSON 中以下写法通通都是错的: 字符串的值必须 k->v 都是 "" 才行: 虽然是统一格式,但是使用上确实有不便利的地方。比如我在浏览器上测出了接口错误。然后把参数拷贝到 Postman 里调试,这时就我要手动给每个属性和值加 "" 号,非常繁琐。 YAML 则是另辟蹊径,直接把字符串符号干掉了。上面对象的同等 yaml 配置如下: 没错,就这么简单! 除了 "" 号,yaml 觉得 {} 和 [] 这种符号也是多余的,不如一起干掉。 于是呢,以这个对象数组为例: 转换成 yaml 是这样的: 对比一下这个精简程度,有什么理由不爱它? 说起增加的部分,最值得一提的,是 YAML 支持了 注释 。 用 JSON 写配置是不能有注释的,这就意味着我们的配置不会有备注,配置多了会非常凌乱,这是最不人性化的地方。 现在 yaml 支持了备注,以后配置可以是这样的: 把这种配置丢给新同事,还怕他看不懂配了啥吗? 除注释外,还支持配置复用的相关功能,这个后面说。 我接触的第一个 yaml 配置是 Flutter 项目的包管理文件 pubspec.yaml ,这个文件的作用和前端项目中的 package.json 一样,用于存放一些全局配置和应用依赖的包和版本。 看一下它的基本结构: 你看这个结构和 package.json 是不是基本一致? dependencies 下列出应用依赖和版本, dev_dependencies 下的则是开发依赖。 后来在做 CI/CD 自动化部署的时候,我们用到了 GitHub Action。它需要多个 yaml 文件来定义不同的工作流,这个配置可比 flutter 复杂得多。 其实不光 GitHub Action,其他流行的类似的构建工具如 GitLab CI/CD,circleci,全部都是齐刷刷的 yaml 配置,因此如果你的项目要做 CI/CD 持续集成,不懂 yaml 语法肯定是不行的。 还有,接触过 Docker 的同学肯定知道 Docker Compose,它是 Docker 官方的单机编排工具,其配置文件 docker-compose.yml 也是妥妥的 yaml 格式。现在 Docker 正是如日中天的时候,使用 Docker 必然免不了编排,因此 yaml 语法早晚也要攻克。 上面说的这 3 个案例,几乎都是现代最新最流行的框架/工具。从它们身上可以看出来,yaml 必然是下一代配置文件的标准,并且是 前端-后端-运维 的通用标准。 说了这么多,你跃跃欲试了吗?下面我们详细介绍 yaml 语法。 介绍 yaml 语法会对比 json 解释,以便我们快速理解。 先看一下 yaml 的几个特点: 相比于 JSON 来说,最大的区别是用 缩进 来表示层级,这个和 Python 非常接近。还有强化的一点是支持了注释,JSON 默认是不支持的(虽然 TS 支持),这也对配置文件非常重要。 YAML 支持以下几种数据结构: 先看对象,上一个 json 例子: 转换成 yaml: 对象是最核心的结构,key 值的表示方法是 [key]: ,注意这里 冒号后面有个空格,一定不能少 。value 的值就是一个 纯量 ,且默认不需要引号。 数组和对象的结构差不多,区别是在 key 前用一个 - 符号标识这个是数组项。注意这里 也有一个空格 ,同样也不能少。 转换成 JSON 格式如下: 了解了基本的对象和数组,我们再来看一个复杂的结构。 众所周知,在实际项目配置中很少有简单的对象或数组,大多都是对象和数组相互嵌套而成。在 js 中我们称之为对象数组,而在 yaml 中我们叫 复合结构 。 比如这样一个稍复杂的 JSON: 转换成复合结构的 YAML: 若你想尝试更复杂结构的转换,可以在 这个 网页中在线实践。 纯量比较简单,对应的就是 js 的基本数据类型,支持如下: 比较特殊的两个,null 用 ~ 符号表示,时间大多用 2021-12-21 这种格式表示,如: 转换成 JS 后: 在 yaml 实战过程中,遇到过一些特殊场景,可能需要一些特殊的处理。 在 shell 中我们常见到一些参数很多,然后特别长的命令,如果命令都写在一行的话可读性会非常差。 假设下面的是一条长命令: 在 linux 中可以这样处理: 就是在每行后加 符号标识换行。然而在 YAML 中更简单,不需要加任何符号,直接换行即可: YAML 默认会把换行符转换成 空格 ,因此转换后 JSON 如下,正是我们需要的: 然而有时候,我们的需求是 保留换行符 ,并不是把它转换成空格,又该怎么办呢? 这个也简单,只需要在首行加一个 | 符号: 转换成 JSON 变成了这样: 获取配置是指,在 YAML 文件中定义的某个配置,如何在代码(JS)里获取? 比如前端在 package.json 里有一个 version 的配置项表示应用版本,我们要在代码中获取版本,可以这么写: JSON 是可以直接导入的,YAML 可就不行了,那怎么办呢?我们分环境解析: 在浏览器中 浏览器中代码用 webapck 打包,因此加一个 loader 即可: 然后配置 loader: 在组件中使用: 在 Node.js 中 Node.js 环境下没有 Webpack,因此读取 yaml 配置的方法也不一样。 首先安装一个 js-yaml 模块: 然后通过模块提供的方法获取: 配置项复用的意思是,对于定义过的配置,在后面的配置直接引用,而不是再写一遍,从而达到复用的目的。 YAML 中将定义的复用项称为锚点,用 & 标识;引用锚点则用 * 标识。 对应的 JSON 如下: 但是锚点有个弊端,就是不能作为 变量 在字符串中使用。比如: 此时 key2 的值就是普通字符串 _my name is *name_,引用变得无效了。 其实在实际开发中,字符串中使用变量还是很常见的。比如在复杂的命令中多次使用某个路径,这个时候这个路径就应该是一个变量,在多个命令中复用。 GitHub Action 中有这样的支持,定义一个环境变量,然后在其他的地方复用: 这种实现方式与 webpack 中使用环境变量类似,在构建的时候将变量替换成对应的字符串。 如果本文对你有启发,请甩手一个赞2023-06-13 00:51:411
二、SpringBoot的配置--yaml
SpringBoot使用一个全局的配置文件,配置文件名是固定的; 配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好; YAML 是一个标记语言 标记语言: 以前的配置文件;大多都使用的是xxx.xml文件 YAML:以数据为中心,比json、xml等更适合做配置文件 YAML:配置例子 XML: k:(空格)v : 表示一对键值对(空格必须有) 以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的 属性和值也是大小写敏感; k: v :字面直接来写; 字符串默认不用加上单引号或者双引号; "" :双引号;不会转义字符串里面的特殊字符; 特殊字符会作为本身想表示的意思 name : "zhangsan lisi" :输出 : zhangsan 换行 lisi "" :单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据 name: "zhangsan lisi" : 输出 ; zhangsan lisi k: v : 在下一行来写对象的属性和值的关系 ;注意缩进 对象还是 k: v 的方式 行内写法: 用- 值表示数组中的一个元素 行内写法 配置文件 javaBean: 我们可以导入配置文件处理器,以后编写配置就有提示了 调整 图示: 配置文件yml还是properties他们都能获取到值; 如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value 如果说,我们专门编写一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties @ImportResource:导入Spring的配置文件,让配置文件里面的内容生效 SpringBoot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别; 想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上 不来编写Spring的配置文件 Spring Boot推荐给容器添加组件的方式;推荐全注解的方式 1、配置类@Configuration------>Spring配置文件 2、使用@Bean给容器中添加组件 我们在主配置文件编写的时候,文件名可以是application-{profile}.properties/yml 默认使用application.properties的配置 1、在配置文件中指定spring.profiles.active=dev 2、在命令行: java -jar spring-boot-02-config.jar --spring.profiles.active=dev; 可以直接在测试的时候,配置传入命令行参数 3.虚拟机参数 -Dspring.profiles.active=dev springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring Boot的默认配置文件 -file:./config/ -file:./ -classpath:/config/ -classpath:/ 优先级由高到低,高优先级的配置会覆盖低优先级的配置 SpringBoot会从这四个位置加载主配置文件:互补配置 ==我们还可以通过spring.config.location来改变默认的配置文件位置== 项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用互补配置; java -jar spring-boot-02-config.jar --spring.config.location=G:/application.properties ==SpringBoot也可以从以下位置加载配置;优先级从高到低;高优先级的配置低优先级的配置,所有的配置会形成互补配置== 1.命令行参数 2.来自java:comp/env的JNDI属性 3.java系统属性 4.操作系统环境变量 5.RandomValuePropertySource配置的random.*属性值 ==有jar包外箱jar包内进行寻找== ==优先加载带profile== 6.jar包外部的application-{profile}.properties 或 application.yml(带spring.profile)配置文件 7.jar包内部的application-{profile}.properties 或 application.yml(带spring.profile)配置文件 ==再来加载不带profile== 8.jar包外部的application.properties或者application.yml(不带spring.profile)配置文件 9.jar包内部的application.properties或者application.yml(不带spring.profile)配置文件 精髓: 1》springboot启动会加载大量的自动配置类 2》我们看我们需要的功能有没有springboot默认写好的自动配置类 3》我们再来看这个自动配置类中到底配置了那些组件;(只要我们要用的组件有,我们就不需要再来配置了) 4》给容器中自动配置类添加组件的时候,会从properties类中获取某些属性,我们就可以在配置文件中指定这些属性的值2023-06-13 00:51:481
yaml 语法中的double怎么写
用malloc申请一段连续的内存空间, 这段内存可以存放n个double类型的变量, 实际上就是动态申请了一个double[n]的数组因为malloc的返回类型都是(void *)所以强制转换为(double *), 需要留意的是无论指针类型是什么所有指针的size都是相同的P[i]等价于*(P + i), 甚至可以写成i[P]于是等价于*(i + P)虽然这样写是不推荐的P指向malloc申请的数组的第一个元素, *P是这第一个元素的值, P+1就是指向第二个元素, 以此类推2023-06-13 00:52:051
Robotframework-RED编辑器yaml的引用
在使用RF框架编写case时,为了脚本便于后续的管理与维护,数据与脚本分离,就变得很重要,这时就要考虑到用什么文件格式去管理参数、变量相关的数据呢? 本次要说的就是用yaml文件格式,下面就开始咱们的步骤论哈 第一步:安装PyYAML模块 pip install PyYAML 第二步:创建一个var.yaml文件,里面输入以下内容:第三步:创建一个test921.robot文件,输入一下内容: 第四步:运行一下,查看结果:2023-06-13 00:52:121
2019-05-30 Python+Jinja2+yaml 批量生成配置
目前来看,Python+yaml+Jinja2是非常方便生成批量配置的组合,在运维工作中用于批量生成设备的基础配置。 这里我的案例是配置一批交换机,基础配置不同的地方有:loopback地址(IPV4和IPV6),设备名称,ISIS网络号,至于其他互联地址什么的因为情况比较复杂,还是手工做吧。 那么思路就有了。 1、生成yaml文件,类似于下面结构: 这里说明一下,loopback地址的V4网段是先规划好的,V6地址和ISIS网络号通过一定规则根据V4地址生成,这个yaml文件可以通过读取excel文件,按照算法生成yaml文件,这个在其他文章里再写。 2、读取yaml文件,生成一个由字典组成的列表。每个字典的信息就包含了每台设备需要的变量。 3、写一个函数,遍历列表里的字典,每读取一个字典,把其中变量取出来放进一个临时字典,渲染jinja2的模板,对每个字典输出不同的配置文件。这个临时字典每读取一次就清空,重新写入变量。 有一些细节比如文档取名,时间函数等要调用一些模块,总结一下涉及的知识点,有:yaml模块,jinja2模块,os模块,日期函数,条件循环,I/O操作。 附上python脚本: 模板文件放在‘templates"目录下,否则会报错找不到文件。 python新手,有不合理的地方请高手指点。2023-06-13 00:52:191
电脑编程好学吗?
我是计算机系的,也在学编程,也支持你去学.不过英语要好一点.那样编程里面的好多东西才容易记和理解.你可以学C++,现在大部分的学的都是这个.2023-06-13 00:52:3110
【实践】2.Prometheus命令和配置详解
Prometheus配置方式有两种: (1)命令行,用来配置不可变命令参数,主要是Prometheus运行参数,比如数据存储位置 (2)配置文件,用来配置Prometheus应用参数,比如数据采集,报警对接 不重启进程配置生效方式也有两种: (1)对进程发送信号SIGHUP (2)HTTP POST请求,需要开启--web.enable-lifecycle选项curl -X POST http://192.168.66.112:9091/-/reload 配置文件格式是yaml格式,说明: .yml或者.yaml 都是 yaml格式的文件, yaml格式的好处: 和json交互比较容易 python/go/java/php 有yaml格式库,方便语言之间解析,并且这种格式存储的信息量很大。 命令行可用配置可通过prometheus -h来查看。 配置文件使用yml格式,配置文件中一级配置项如下,说明参考#备注内容。 配置文件中通用字段值格式 <boolean>: 布尔类型值为true和false <scheme>: 协议方式包含http和https 原始配置文件内容: 全局默认的数据拉取间隔 全局默认的单次数据拉取超时,当报context deadline exceeded错误时需要在特定的job下配置该字段。 全局默认的规则(主要是报警规则)拉取间隔 该服务端在与其他系统对接所携带的标签 该字段配置与Alertmanager进行对接的配置 样例: 上面的配置中的 alert_relabel_configs 是指警报重新标记在发送到Alertmanager之前应用于警报。 它具有与目标重新标记相同的配置格式和操作,外部标签标记后应用警报重新标记,主要是针对集群配置。 这个设置的用途是确保具有不同外部label的HA对Prometheus服务端发送相同的警报信息。 Alertmanager 可以通过 static_configs 参数静态配置,也可以使用其中一种支持的服务发现机制动态发现,我们上面的配置是静态的单实例。 此外, relabel_configs 允许从发现的实体中选择 Alertmanager,并对使用的API路径提供高级修改,该路径通过 __alerts_path__ 标签公开。 完成以上配置后,重启Prometheus服务,用以加载生效,也可以使用热加载功能,使其配置生效。然后通过浏览器,访问 http://192.168.1.220:19090/alerts 就可以看 inactive pending firing 三个状态,没有警报信息是因为我们还没有配置警报规则 rules 。 这里定义和prometheus集成的alertmanager插件,用于监控报警。后续会单独进行alertmanger插件的配置、配置说明、报警媒介以及route路由规则记录。 此项配置和 scrape_configs 字段中 relabel_configs 配置一样,用于对需要报警的数据进行过滤后发向 Alertmanager 说明 relabel-configs的配置允许你选择你想抓取的目标和这些目标的标签是什么。所以说如果你想要抓取这种类型的服务器而不是那种,可以使用relabel_configs 相比之下,metric_relabel_configs是发生在抓取之后,但在数据被插入存储系统之前使用。因此如果有些你想过滤的指标,或者来自抓取本身的指标(比如来自/metrics页面)你就可以使用metric_relabel_configs来处理。 该项目主要用来配置不同的 alertmanagers 服务,以及Prometheus服务和他们的链接参数。 alertmanagers 服务可以静态配置也可以使用服务发现配置。Prometheus以pushing 的方式向alertmanager传递数据。 alertmanager 服务配置和target配置一样,可用字段如下 这个主要是用来设置告警规则,基于设定什么指标进行报警(类似触发器trigger)。这里设定好规则以后,prometheus会根据全局global设定的evaluation_interval参数进行扫描加载,规则改动后会自动加载。其报警媒介和route路由由alertmanager插件实现。 样例: "first_rules.yml"样例: Prometheus 支持两种类型的 Rules ,可以对其进行配置,然后定期进行运算:recording rules 记录规则 与 alerting rules 警报规则,规则文件的计算频率与警报规则计算频率一致,都是通过全局配置中的 evaluation_interval 定义。 不论是recording rules还是alerting rules都要在组里面。 要在Prometheus中使用Rules规则,就必须创建一个包含必要规则语句的文件,并让Prometheus通过Prometheus配置中的rule_files字段加载该文件,前面我们已经讲过了。 其实语法都一样,除了 recording rules 中的收集的指标名称 record: <string> 字段配置方式略有不同,其他都是一样的。 配置范例: recording rules 是提前设置好一个比较花费大量时间运算或经常运算的表达式,其结果保存成一组新的时间序列数据。当需要查询的时候直接会返回已经计算好的结果,这样会比直接查询快,同时也减轻了PromQl的计算压力,同时对可视化查询的时候也很有用,可视化展示每次只需要刷新重复查询相同的表达式即可。 在配置的时候,除却 record: <string> 需要注意,其他的基本上是一样的,一个 groups 下可以包含多条规则 rules ,Recording 和 Rules 保存在 group 内,Group 中的规则以规则的配置时间间隔顺序运算,也就是全局中的 evaluation_interval 设置。 配置范例: 上面的规则其实就是根据 record 规则中的定义,Prometheus 会在后台完成 expr 中定义的 PromQL 表达式周期性运算,以 job 为维度使用 sum 聚合运算符 计算 函数rate 对http_requests_total 指标区间 10m 内的增长率,并且将计算结果保存到新的时间序列 job:http_requests_total:rate10m 中, 同时还可以通过 labels 为样本数据添加额外的自定义标签,但是要注意的是这个 lables 一定存在当前表达式 Metrics 中。 模板是在警报中使用时间序列标签和值展示的一种方法,可以用于警报规则中的注释(annotation)与标签(lable)。模板其实使用的go语言的标准模板语法,并公开一些包含时间序列标签和值的变量。这样查询的时候,更具有可读性,也可以执行其他PromQL查询 来向警报添加额外内容,ALertmanager Web UI中会根据标签值显示器警报信息。 {{ $lable.<lablename>}} 可以获取当前警报实例中的指定标签值 {{ $value }} 变量可以获取当前PromQL表达式的计算样本值。 调整好rules以后,我们可以使用 curl -XPOST http://localhost:9090/-/reload 或者 对Prometheus服务重启,让警报规则生效。 这个时候,我们可以把阈值调整为 50 来进行故障模拟操作,这时在去访问UI的时候,当持续1分钟满足警报条件,实际警报状态已转换为 Firing,可以在 Annotations中看到模板信息 summary 与 description 已经成功显示。 规则检查 拉取数据配置,在配置字段内可以配置拉取数据的对象(Targets),job以及实例 定义job名称,是一个拉取单元。每个job_name都会自动引入默认配置如 这些也可以在单独的job中自定义 服务端拉取过来的数据也会存在标签,配置文件中也会有标签,这样就可能发生冲突。 true就是以抓取数据中的标签为准 false就会重新命名抓取数据中的标签为“exported”形式,然后添加配置文件中的标签 切换抓取数据所用的协议 定义可选的url参数 每次抓取数据请求的认证信息 password和password_file互斥只可以选择其一 bearer_token和bearer_token_file互斥只可以选择其一 抓取ssl请求时证书配置 通过代理去主去数据 Prometheus支持多种服务现工具,详细配置这里不再展开 更多参考官网: https://prometheus.io/docs/prometheus/latest/configuratio n/configuration/ 服务发现来获取抓取目标为动态配置,这个配置项目为静态配置,静态配置为典型的targets配置,在改配置字段可以直接添加标签 采集器所采集的数据都会带有label,当使用服务发现时,比如consul所携带的label如下: 这些lable是数据筛选与聚合计算的基础。 抓取数据很繁杂,尤其是通过服务发现添加的target。所以过滤就显得尤为重要,我们知道抓取数据就是抓取target的一些列metrics,Prometheus过滤是通过对标签操作操现的,在字段relabel_configs和metric_relabel_configs里面配置,两者的配置都需要relabel_config字段。该字段需要配置项如下 target配置示例 target中metric示例 target中metric示例 使用示例 由以上可知当使用服务发现consul会带入标签__meta_consul_dc,现在为了表示方便需要将该标签变为dc 需要做如下配置,这里面action使用的replacement 过滤采集target 为了防止Prometheus服务过载,使用该字段限制经过relabel之后的数据采集数量,超过该数字拉取的数据就会被忽略 Prometheus可以进行远程读/写数据。字段remote_read和remote_write (1)Prometheus 配置详解 https://www.dazhuanlan.com/2019/12/12/5df11ada207ce/ (2)Prometheus配置文件prometheus.yml 四个模块详解 http://www.21yunwei.com/archives/7321 (3)官方文档说明 https://prometheus.io/docs/prometheus/latest/configuration/configuration/ (4)Prometheus监控神器-Rules篇 https://zhuanlan.zhihu.com/p/179295676 (5)Prometheus监控神器-Alertmanager篇(1) https://zhuanlan.zhihu.com/p/179292686 (6)Prometheus监控神器-Alertmanager篇(2) https://zhuanlan.zhihu.com/p/1792944412023-06-13 00:53:021
K8S Pod之间的网速测试
说到两个节点间的网速测试,现在最通用的工具是iperf。iperf有两种运行模式,一种是server模式,一种是client模式。当我们要测试两个节点的网速的时候,就需要在其中一台机器上开启server模式,另一台机器则开启client模式。开启server模式很简单,一条简单的命令就可以了: 开启iperf client的模式也比较简单 这里就有个问题,对于两台实体机,那么,serverip很容易就可以获得,但是如果两个节点都是K8S中的pod呢?serverip不光不容易获得,很有可能会在server pod发生故障之后变化,这样,iperf工具就没有办法正常工作了。 解决方法: 如果想要server pod固定一个访问ip给 client pod, K8S给我们提供了一个很方便的功能,就是service这个概念,如果把server pod绑定在某个service上,那这些pod对K8S集群内就可以暴露service ip,而这个抽象出来的ip地址是不会变化的,所以这样就可以给client pod 提供固定的ip地址去连接了。 server.yaml: 执行完上面的yaml文件后,可以获取到svc的信息: 我们可以看到,该service的ip地址,以及暴露的端口5201(iperf3 服务端默认暴露的端口)。 也就是说,client pod只需要将serverip 替换为10.97.191.10(cluster ip)就可以了。那么问题就转换为如何让client pod获取到server pod的service cluster ip地址。 这个地方我查阅了很多资料,最后发现,其实当service的yaml文件执行成功之后,在这之后启动的pod中会新增对应的环境变量: 客户端成功连接上了服务端!搞定!2023-06-13 00:53:321
SpringBoot的配置文件有哪几种格式?
SpringBoot中的配置文件主要有三种格式,properties、yaml、和xml方式。- 其中properties格式配置文件后缀是.properties,配置项为:server.port = 9090- yaml格式配置文件后缀是.yml,配置项是:server.port: 9090在SpringBoot中,使用最广泛的配置文件是yaml,yaml之所以流行,除了他配置语法精简之外,还因为yaml是一个跨编程语言的配置文件。在SpringBoot中,除了yaml之外,properties也比较常用,但是XML几乎不用,看得出来Spring团队非常痛恨XML配置文件!认为它不是一个好的语言。如果你对常见的配置文件有哪几种格式不熟悉,就去黑马程序员官网视频库看免费视频。2023-06-13 00:53:391
kubernetes(k8s)secret使用
Secret有三种类型: 1、Opaque:base64 编码格式的 Secret,用来存储密码、密钥等;但数据也可以通过base64 –decode解码得到原始数据,所以加密性很弱。 2、kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息。 3、kubernetes.io/service-account-token:用于被serviceaccount引用,serviceaccout 创建时Kubernetes会默认创建对应的secret。Pod如果使用了serviceaccount,对应的secret会自动挂载到Pod目录/run/secrets/kubernetes.io/serviceaccount中。 Opaque 类型的数据是一个 map 类型,要求value是base64编码格式,比如我们来创建一个用户名为 admin,密码为 admin321 的 Secret 对象,首先需要把这用户名和密码做 base64 编码, 然后可以利用上面编码过后的数据来编写一个YAML文件:(secret-demo.yaml) 然后同样使用kubectl命令来创建: 利用get secret命令查看: 其中default-token-n9w2d为创建集群时默认创建的 secret,被serviceacount/default 引用。 使用describe命令,查看详情: 我们可以看到利用describe命令查看到的Data没有直接显示出来,如果想看到Data里面的详细信息,同样我们可以输出成YAML文件进行查看: 创建好Secret对象后,有两种方式来使用它: 1、以环境变量的形式 2、以Volume的形式挂载 首先我们来测试下环境变量的方式,同样的,我们来使用一个简单的busybox镜像来测试下:(secret1-pod.yaml) 创建上面的Pod: 然后我们查看Pod的日志输出: 可以看到有 USERNAME 和 PASSWORD 两个环境变量输出出来。需要注意的是,环境变量的方式,不支持动态更新密码。 同样的我们用一个Pod来验证下Volume挂载,创建一个Pod文件:(secret2-pod.yaml) 创建Pod: 然后我们查看输出日志: 可以看到secret把两个key挂载成了两个对应的文件。 除了上面的Opaque这种类型外,我们还可以来创建用户docker registry认证的Secret,直接使用kubectl create命令创建即可,如下: 然后查看Secret列表: 注意 看上面的TYPE类型,myregistry是不是对应的kubernetes.io/dockerconfigjson,同样的可以使用describe命令来查看详细信息: 同样的可以看到Data区域没有直接展示出来,如果想查看的话可以使用-o yaml来输出展示出来: 可以把上面的data.dockerconfigjson下面的数据做一个base64解码,看看里面的数据是怎样的呢? 如果我们需要拉取私有仓库中的docker镜像的话就需要使用到上面的myregistry这个Secret: 我们需要拉取私有仓库镜像10.8.13.85/test:v1,我们就需要针对该私有仓库来创建一个如上的Secret,然后在Pod的 YAML 文件中指定imagePullSecrets。 另外一种Secret类型就是kubernetes.io/service-account-token,用于被serviceaccount引用。serviceaccout 创建时 Kubernetes 会默认创建对应的 secret。Pod 如果使用了 serviceaccount,对应的secret会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中。 这里我们使用一个nginx镜像来验证一下,大家想一想为什么不是呀busybox镜像来验证?当然也是可以的,但是我们就不能在command里面来验证了,因为token是需要Pod运行起来过后才会被挂载上去的,直接在command命令中去查看肯定是还没有 token 文件的。 最后我们来对比下Secret和ConfigMap这两种资源对象的异同点: key/value的形式 属于某个特定的namespace 可以导出到环境变量 可以通过目录/文件形式挂载 通过 volume 挂载的配置信息均可热更新 Secret 可以被 ServerAccount 关联 Secret 可以存储 docker register 的鉴权信息,用在 ImagePullSecret 参数中,用于拉取私有仓库的镜像 Secret 支持 Base64 加密 Secret 分为 kubernetes.io/service-account-token、kubernetes.io/dockerconfigjson、Opaque 三种类型,而 Configmap 不区分类型2023-06-13 00:54:001
Flink 指标(二)
通过 conf/flink-conf.yaml 文件配置一个或多个 Reporters 来暴露度量值给外部系统,这些 Reporter 将在作业和任务启动的时候实例化。 所有的 Reporter 配置至少需要配置 class 属性,还有一些允许配置记录间隔。下面是一些 Reporter 的配置实例: 包含 Reporter 的 jar 必须放到 /lib 文件夹,这样 Flink 就可以访问到这些 jar。 可以通过继承 org.apache.flink.metrics.reporter.MetricReporter 接口来实现自己的 Reporter,如果需要定期发送记录,需要继承 Scheduled 接口。 下面是一些支持的 Reporter: 不需要添加额外的依赖就可以支持 JMX Reporter,默认是不激活的。 参数: 配置示例: 通过 JMX 公开的度量由域(domain)和键属性列表(key-properties)标识,这些属性一起构成对象名。 域始终以 org.apache.flink 开头,后跟一个通用的度量标识符。与通常的标识符不同,它不受作用域格式的影响,不包含任何变量,并且在跨作业时也是常量。例子: org.apache.flink.job.task.numbytesout 。 键属性列表包含与给定指标关联的所有变量的值,无论配置的作用域格式如何。例子: host=localhost,job_name=myjob,task_name=mytask 。 因此,域标识一个度量类,键属性列表标识该度量的一个(或多个)实例。 要使用此 Reporter,必须复制 /opt/flink-metrics-ganglia-1.6.1-SNAPSHOT.jar 到 Flink 的 /lib 文件夹下。 参数: 配置示例: 要使用此 Reporter,必须复制 /opt/flink-metrics-graphite-1.6.1-SNAPSHOT.jar 到 Flink 的 /lib 文件夹下。 参数: 配置示例: 要使用此 Reporter,必须复制 /opt/flink-metrics-prometheus-1.6.1-SNAPSHOT.jar 到 Flink 的 /lib 文件夹下。 参数: 配置示例: Flink 度量类型映射到 Prometheus 度量类型,如下所示: 要使用此 Reporter,必须复制 /opt/flink-metrics-prometheus-1.6.1-SNAPSHOT.jar 到 Flink 的 /lib 文件夹下。 参数: 配置示例: PrometheusPushGatewayReporter 将指标推送到 Pushgateway,可由 Prometheus 抓取。 要使用此 Reporter,必须复制 /opt/flink-metrics-statsd-1.6.1-SNAPSHOT.jar 到 Flink 的 /lib 文件夹下。 参数: 配置示例: 要使用此 Reporter,必须复制 /opt/flink-metrics-datadog-1.6.1-SNAPSHOT.jar 到 Flink 的 /lib 文件夹下。 Flink 指标,如任何变量 <host> , <job_name> , <tm_id> , <subtask_index> , <task_name> 和 <operator_name> ,将被发送到 Datadog 作为标签。标签看起来像 host:localhost 和 job_name:myjobname 。 参数: 配置示例: 要使用此 Reporter,必须复制 /opt/flink-metrics-slf4j-1.6.1-SNAPSHOT.jar 到 Flink 的 /lib 文件夹下。 配置示例: Flink 默认会收集当前状态的指标,下文的表格中包括以下5列: 请注意,“infix” 和 “Metrics” 列中所有的点根据 “metrics.delimiter” 设置变化。 因此,为了推断指标的标识符: Reference: https://ci.apache.org/projects/flink/flink-docs-release-1.6/monitoring/metrics.html2023-06-13 00:54:061
如何滚动重启pod而不改变kubernetes(k8s)中的部署yaml?
在 1.15 版本之前通过修改 annotations 的变量值可实现滚动重启 Pod ,当然这个方法其实更改了 yaml 文件,不过是更改的自定义变量字段通过时间戳的方式来设置值,一般不会对 Pod 主要内容有影响 在 1.15 版本之后使用以下命令:2023-06-13 00:54:131
请教如何在phpStorm中配置eslint
使用ESlint一、ESLint跟JSLint和JSHint类似,但有以下区别:1.使用Espree进行js解析(parse)2.用AST抽象语法树去识别(evaluate)代码中的模式3.每个规则都是独立的插件二、安装全局安装:npm install -g eslint三、使用如果是第一次使用,eslint --init 命令帮你完成初始化,生成.eslintrc文件然后eslint test.js test2.js四、配置{"rules": {"semi": ["error", "always"],"quotes": ["error", "double"]}}2023-06-13 00:54:202
如何在 Linux 系统上安装 Suricata 入侵检测系统
由于安全威胁持续不断,配备入侵检测系统(IDS)已成为如今数据中心环境下最重要的要求之一。然而,随着越来越多的服务器将网卡升级到10GB/40GB以太网技术,我们越来越难在大众化硬件上以线速实施计算密集型入侵检测。扩展IDS性能的一个方法就是使用多线程IDS。在这种IDS下,大量耗用CPU资源的深度数据包检查工作负载并行化处理,分成多个并发任务。这种并行化检查机制可以充分发扬多核硬件的优势,轻松扩展IDS的处理能力。这方面的两个知名的开源工具就是Suricata(http://suricata-ids.org)和Bro(https://www.bro.org)。我在本教程中将演示如何在Linux服务器上安装和配置Suricata IDS。在Linux上安装Suricata IDS不妨用源代码构建Suricata。你先要安装几个所需的依赖项,如下所示。在Debian、Ubuntu或Linux Mint上安装依赖项$ sudo apt-get install wget build-essential libpcre3-dev libpcre3-dbg automake autoconf libtool libpcap-dev libnet1-dev libyaml-dev zlib1g-dev libcap-ng-dev libjansson-dev在CentOS、Fedora或RHEL上安装依赖项$ sudo yum install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel一旦你安装了所有必需的程序包,现在可以安装Suricata了,如下所示。首先,从http://suricata-ids.org/download/下载最新的Suricata源代码,编译代码。截至本文撰稿时,最新版本是2.0.8。$ wget http://www.openinfosecfoundation.org/download/suricata-2.0.8.tar.gz$ tar -xvf suricata-2.0.8.tar.gz$ cd suricata-2.0.8$ ./configure --sysconfdir=/etc --localstatedir=/var这是配置的示例输出结果。Suricata Configuration: AF_PACKET support: yes PF_RING support: no NFQueue support: no NFLOG support: no IPFW support: no DAG enabled: no Napatech enabled: no Unix socket enabled: yes Detection enabled: yeslibnss support: yes libnspr support: yes libjansson support: yes Prelude support: no PCRE jit: yes LUA support: no libluajit: no libgeoip: no Non-bundled htp: no Old barnyard2 support: no CUDA enabled: no现在编译并安装它。$ make$ sudo make installSuricata源代码随带默认的配置文件。不妨安装这些默认的配置文件,如下所示。$ sudo make install-conf正如你所知,要是没有IDS规则集,Suricata毫无用处。颇为方便的是,Makefile随带IDS规则安装选项。想安装IDS规则,运行下面这个命令即可。$ sudo make install-rules上述规则安装命令会从EmergingThreats.net(https://www.bro.org)安装可用的社区规则集的最新快照,并将它们存储在/etc/suricata/rules下。首次配置Suricata IDS现在就可以配置Suricata了。配置文件位于/etc/suricata/suricata.yaml。使用文本编辑工具打开文件,以便编辑。$ sudo vi /etc/suricata/suricata.yaml下面是一些基本的设置,供你开始入门。“default-log-dir”关键字应该指向Suricata日志文件的位置。default-log-dir: /var/log/suricata/在“vars”这部分下面,你会找到Suricata使用的几个重要变量。“HOME_NET”应该指向由Suricata检查的本地网络。“!$HOME_NET”(被分配给EXTERNAL_NET)指本地网络以外的任何网络。“XXX_PORTS”表明不同服务所使用的一个或多个端口号。请注意:不管使用哪个端口, Suricata都能自动检测HTTP流量。所以,正确指定HTTP_PORTS变量并不是很重要。vars:HOME_NET: "[192.168.122.0/24]"EXTERNAL_NET: "!$HOME_NET"HTTP_PORTS: "80"SHELLCODE_PORTS: "!80"SSH_PORTS: 22“host-os-policy”这部分用来防范一些利用操作系统的网络堆栈的行为(比如TCP重组)来规避检测的常见攻击。作为一项应对措施,现代IDS想出了所谓的“基于目标的”检测,检查引擎根据流量的目标操作系统,对检测算法进行微调。因而,如果你知道每个本地主机运行什么操作系统,就可以将该信息提供给Suricata,从而有望提高其检测速度。这时候用到了“host-os-policy“部分。在该例子中,默认的IDS策略是Linux;如果不知道某个IP地址的操作系统信息,Suricata就会运用基于Linux的检查策略。如果捕获到192.168.122.0/28和192.168.122.155的流量,Suricata就会运用基于Windows的检查策略。host-os-policy:# 这些是Windows机器。windows: [192.168.122.0/28, 192.168.122.155]bsd: []bsd-right: []old-linux: []# 将Linux作为默认策略。linux: [0.0.0.0/0]old-solaris: []solaris: ["::1"]hpux10: []hpux11: []irix: []macos: []vista: []windows2k3: []在“threading”这部分下面,你可以为不同的Suricata线程指定CPU亲和性(CPU affinity)。默认情况下,CPU亲和性被禁用(“set-cpu-affinity: no”),这意味着Suricata线程将被安排在任何可用的CPU核心上。默认情况下,Suricata会为每个CPU核心创建一个“检测”线程。你可以调整这个行为,只要指定“detect-thread-ratio: N”。这会创建N x M个检测 线程,其中M是指主机上CPU核心的总数。threading:set-cpu-affinity: nodetect-thread-ratio: 1.5就上述线程设置而言,Suricata会创建1.5 x M个检测线程,其中M是系统上CPU核心的总数。想了解关于Suricata配置的更多信息,你可以阅读默认的配置文件本身,为了便于理解,加有大量注释。使用Suricata执行入侵检测现在可以试着运行Suricata了。在启动它之前,还有一个步骤要完成。如果你使用pcap捕获模式,强烈建议关闭Suricata侦听的那个网卡上的任何数据包卸载功能(比如LRO/GRO),因为那些功能可能会干扰数据包实时捕获。下面介绍如何关闭网络接口eth0上的LRO/GRO:$ sudo ethtool -K eth0 gro off lro off请注意:视使用的网卡而定,你可能会看到下列警示信息,可以忽视这个信息。它只是意味着你的网卡不支持LRO。Cannot change large-receive-offloadSuricata支持多种运行模式。运行模式决定了不同的线程如何用于IDS。下面这个命令列出了所有可用的运行模式。$ sudo /usr/local/bin/suricata --list-runmodesSuricata使用的默认运行模式是autofp(代表“自动流绑定负载均衡模式”)。在这种模式下,来自每一路流的数据包被分配给单一的检测线程。流被分配给了未处理数据包数量最少的线程。最后,不妨启动Suricata,看看它的实际运行情况。$ sudo /usr/local/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 --init-errors-fatal在这个例子中,我们监控一个8核系统上的网络接口eth0。如上所示,Suricata创建了13个数据包处理线程和3个管理线程。数据包处理线程包括1个PCAP数据包捕获线程和12个检测线程(相当于8 x 1.5)。这意味着,一个捕获线程捕获的数据包经负载均衡处理后,变成了IDS面前的12个检测线程。管理线程是一个流管理器和两个计数器/统计相关线程。下面是Suricata进程的线程视图(由htop描绘)。Suricata检测日志存储在/var/log/suricata目录下。$ tail -f /var/log/suricata/fast.log04/01/2015-15:47:12.559075 [**] [1:2200074:1] SURICATA TCPv4 invalid checksum [**] [Classification: (null)] [Priority: 3] {TCP} 172.16.253.158:22 -> 172.16.253.1:4699704/01/2015-15:49:06.565901 [**] [1:2200074:1] SURICATA TCPv4 invalid checksum [**] [Classification: (null)] [Priority: 3] {TCP} 172.16.253.158:22 -> 172.16.253.1:4631704/01/2015-15:49:06.566759 [**] [1:2200074:1] SURICATA TCPv4 invalid checksum [**] [Classification: (null)] [Priority: 3] {TCP} 172.16.253.158:22 -> 172.16.253.1:46317为了易于导入,还有JSON格式的日志:$ tail -f /var/log/suricata/eve.json{"timestamp":"2015-04-01T15:49:06.565901","event_type":"alert","src_ip":"172.16.253.158","src_port":22,"dest_ip":"172.16.253.1","dest_port":46317,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2200074,"rev":1,"signature":"SURICATA TCPv4 invalid checksum","category":"","severity":3}}{"timestamp":"2015-04-01T15:49:06.566759","event_type":"alert","src_ip":"172.16.253.158","src_port":22,"dest_ip":"172.16.253.1","dest_port":46317,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2200074,"rev":1,"signature":"SURICATA TCPv4 invalid checksum","category":"","severity":3}}2023-06-13 00:54:371
Mac 安装完整带pthreads,yaml等扩展的PHP7.0
尝试如下操作: 1、 在php.ini中设置extension_dir 指向e:php5.4ext; 部分php扩展加载了 2、设置windows系统环境变量, phpext, 指向e:php5.4ext, PHPRC 指向e:php5.4 设置path环境变量,添加e:php5.4 3、重新启动apache2023-06-13 00:54:511
Ingress-nginx日志切割与轮循方案
一, 基础镜像 由于我们已解决了权限的问题,所以不需要initContainer来更改权限。日志切割和轮循,基于镜像:hub.c.163.com/combk8s/logrotate:v1.1 从history看,这个镜像也只是在alpine之上,安装了bash,logrotate软件,然后,拷贝并启动了start.sh文件。 二, Dockerfile 为了不与k8s绑死,我们不使用configmap作配置文件,而是使用使用环境变量生成nginx.log配置。 Dockerfile nginx.log模板 start.sh重写 脚本使用传入的环境变量,替换掉nginx.log模板文件中的对应变量。没有环境变量时,也提供必要默认值。 暂时计划是每天凌晨产生备份,只保存最近两个备份。 三, Yaml集成 在ingress应用的yaml文件里,植入一个新的container即可。 四,验证 kubectl logs -f pod可以看到crontab输出 五, logrotate和crontab联动细节想像 start.sh中写入/etc/crontabs/root文件中的数据: 0 */2 * * * /usr/sbin/logrotate -v /etc/logrotate.conf 表示logrotae命令每2小时执行一次,它会将nginx.log配置中的周期(daily)写入/etc/periodic/daily/logrotate文件(如果设置了size,会无视 daily, weekly,monthly 指令,所以size的优先级比较高。)。 /etc/periodic/daily/logrotate中的动态生成的内容如下: 此文件会被/etc/crontabs/root中的如下行触发: 0 2 * * * run-parts /etc/periodic/daily 于是,这时就会在每天凌晨2点,生成日志切割和归档文件。 神奇~ 六,Logrotate参数 compress/nocompress---gzip压缩/不压缩 copytruncate/nocopytruncate---用于还在打开中的日志,把当前日志备份并截断/备份但是不截断 create mode ower group/nocreate---指定文件模式创建新的日志文件/不创建新的日志文件 delaycompress/nodelaycompress ---和compress一起,日志到下一次转存是压缩/转存同时压缩 ifempty/notifempty ---空文件也转存,默认/空文件不转存 mail address / nomail--- 日志发送到指定的mail地址 olddir directory/noolddir--- 转存后日后i文件放入指定目录,必须和当前日志文件同一个文件系统 prerotate/endscript--- 在执行转存之前需执行的命令,关键字必须单独占行 postroutate/endscript ---在执行转存之后需执行的命令,关键字必须单独占行 daily ---周期每天 weekly ---周期每周 monthly ---周期每月 rotate count ---转存次数,0表示不备份,5表示保留5个备份 size size ---当指定文件达到指定大小时才转存 tabootext[+] list ---不转存指定的扩展名,默认扩展名含.rpm-oring error address ---错误信息发送到指定的mail地址 missingok ---如果日志文件丢失,进入到下一个不发出错误消息 sharedscripts ---可以写多个日志文件,同时执行一个脚本,搭配脚本关键字 include ---包含文件 dateext ---为日志打上日期标签 七,参考URL https://my.oschina.net/u/4605142/blog/4521708 https://www.jb51.net/article/183828.htm2023-06-13 00:54:581
多K8S集群运维管理参考
可以通过--kubeconfig 命令行参数来选择操作不同集群 使用默认的 kubeconfig 文件, 需要将多个 kubeconfig 合并,保存在kubeconfig 的默认位置 $HOME/.kube/config , 合并后的参考格式如下: kubeconfig 中定义了 (clusters)集群、(users)用户和 以及相关联的(contexts)上下文,如果使用Uk8s 可以在控制台: 概览-> 内网凭证/外网凭证 查看需要的凭证,然后按照上述格式补全即可 方式三:使用ansible Playbook 来管理集群内的容器应用 场景描述: 目前我们需要使用helm安装一个external-dns 用来将 ingess对接的域名解析规则,自动同步到DNS服务器,使用shell命令操作参考如下: 将以上操作转化为 ansible-playbook 的tasks 可以拆分为四个 tasks , 将上诉文件保存为 deploy_external_dns.yaml, 执行命令 ansible-playbook deploy_external_dns.yaml 命令执行成功回看到返回如下类似结果: 方式四:使用ansible-playbook roles来组织管理集群变更tasks 在方式三中,如果是管理一个集群,编写一个deploy_external_dns.yaml就能完成工作,如果管理多个集群,就要编写多个yaml文件,并且重复编写很多差异不多的tasks 实际操作可能类似这个样子: 经过对比分析,这些tasks 主要差异变量: 只要将以上两个变量参考可配置化,最原始的四个 tasks就可以复用,然后使用 Ansible role 重新组织tasks 文件,拆分为两个role: 其中 external_dns 依赖 helm-repository 然后目录结构如下 roles/helm-repository/main.yml roles/external-dns/tasks/main.yml roles/external-dns/meta/main.yml 新建一个文件 deploy-chart-external-dns 来引用 role:helm-repository 最后,仅仅需要维护一个可复用的 role:helm-repository ,以及在deploy-chart-external-dns 定义要集群属性等变量,就可以轻松的维护多集群内的各类容器应用了 执行命令:ansible-playbook deploy-chart-external-dns 返回结果如下:2023-06-13 00:55:221
application.yml 文件怎么读取系统的环境变量
这些方式优先级如下:命令行参数来自java:comp/env的JNDI属性Java系统属性(System.getProperties())操作系统环境变量RandomValuePropertySource配置的random.*属性值jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件jar包外部的application.properties或application.yml(不带spring.profile)配置文件jar包内部的application.properties或application.yml(不带spring.profile)配置文件@Configuration注解类上的@PropertySource2023-06-13 00:55:311
java环境变量正确。编译工具失败
那个可能是系统问题建议换一下系统重新配一下环境变量。。。2023-06-13 00:55:495
ThinkPHP 3.2 版本升级了哪些内容
ThinkPHP 更新了很多从3.1-3.2这之间的我都给你看看!!![新增] 增加index连贯操作方法,用于数据集的强制索引操作[新增] Model类增加using连贯操作用于多表操作[新增] 增加strict连贯操作,用于设置数据写入和查询是否严格检查是否存在字段 默认情况下 不合法数据字段自动删除,如果设置了严格检查则会抛出异常。 例如: $model->strict(true)->add($data);[新增] 增加fetchSql连贯操作[新增] 添加yaml_parse_file()函数,解析yaml文件返回一个数组[新增] 增加memcache Session驱动[新增] 增加聚合模型,方便一对一的关联数据表操作[新增] 新增TMPL_PATH常量支持 可以全局改版模板目录到模块目录之外[新增] 增加Lite模式Db类,仅支持原生SQL操作[新增] 数据库调试增加单独的配置参数 DB_DEBUG(如未设置依然取调试模式常量 APP_DEBUG)[新增] 新增框架核心葡萄牙语言包[新增] 增加COOKIE_SECURE和COOKIE_HTTPONLY配置参数[新增] MySQL驱动增加ON DUPLICATE KEY UPDATE功能[改进] Db类和数据库驱动类完全基于PDO重写[改进] 添加全局过滤机制(默认关闭)[改进] I函数增加修饰符功能和正则检测支持[改进] 采用主从分布式数据库时,从数据库连接失败自动连接主服务器[改进] 增加Model类对复合主键的支持[改进] 改进Mongo模型和驱动类,使用更加方便[改进] 改进session函数删除操作支持数组[改进] 改进session函数对多维赋值的支持[改进] 改进数据库字段缓存的文件标识 加上数据表前缀,避免不同前缀的表产生混淆[改进] 针对数据库视图无主键的问题,使用默认id作为主键,与未开启DB_FIELDS_CACHE时行为一致[改进] SAE模式惯例配置增加上传驱动设置[改进] 改进参数绑定机制[改进] 确保使用参数绑定后日志中生成sql语句的准确性[改进] 模型类的setInc和setDec方法支持延迟写入,同时取消高级模型的相关方法[改进] 日志写入的时候自动创建目录[改进] 改进SQL缓存[改进] 优化缓存队列功能[改进] 路由的请求类型定义不区分大小写[改进] 数据库驱动增加通用insertAll方法支持[改进] 完善 url的验证正则[改进] 单字母函数返回值类型修正以及一些拼写错误修正[改进] 自动创建模型模块的父目录 直接调用ThinkBuild::buildController和buildModel的情况下创建目录[改进] 日志驱动增加自动目录创建支持[改进] 自动生成的目录结构增加模块的缓存目录[改进] mysql存储过程支持完善[改进] Db类改进对多表更新和删除的支持,多表删除支持USING和JOIN操作[改进] 改进parseLock的位置[改进] Db类的update和delete方法增加多表操作的支持[改进] 改进CURD操作 可以直接返回sql语句而不真正执行。[改进] 插件控制器的命名空间可定义 不再局限于模块下面 增加 ADDON_PATH 用于定义插件目录 默认位于 应用目录下面的Addon[改进] 改进静态缓存读取的有效判断对sae的支持[改进] 日志目录分模块[改进] 模型类的getField方法改进 支持在字段名中使用函数[改进] 改进Db类的parseWhere方法[改进] 改进模型的page和limit方法 改进分页类[改进] 改进配置文件自动生成[改进] 完善ShowPageTraceBehavior一处函数调用大小写规范[改进] U函数支持多级控制器[改进] send_http_status函数增加状态[改进] 允许在项目中定义 APP 常量[改进] 改进定义TMPL_PATH后的模板路径定义[改进] Image类的imagick驱动save方法增加quality参数 用于图片质量设置,默认值为80[改进] 改进Image类的JPEG图片生成质量[改进] Gd库驱动类改进[改进] 改进T函数对TMPL_PATH常量定义的支持[改进] 改进I函数对path.0的支持[改进] 改进关联模型[改进] 改进dispatch_jump模板[改进] 更新api模式支持配置文件的后缀定义[改进] 改进Model类的getModelName方法对多层模型的支持[改进] 改进cookie函数对secure和httponly的支持[改进] 改进模板标签对命名空间的支持,写法 {$var|OrgUtilString::rand}[改进] 改进数据表自动识别规则正则规则 可以正确识别带有数字的数据表[改进] Model类的cache方法使用改进 cache(10) 等同于 cache(true, 10)[修正] 修正ShowRuntime行为扩展[修正] 修正Model类的add和addall方法中的_facade和_parseOptions的调用顺序问题[修正] 修正使用数组方式动态指定表名后的BUG[修正] 修正ChromShowPage行为扩展[修正] 修正自定义公共模块路径时,加载公共模块类库失败[修正] 修正参数绑定的一处判断[修正] 解决PDO参数绑定后的获取最终SQL语句问题[修正] 修正开启布局后show方法的问题[修正] 解决调用trace()无法返回trace日志问题[修正] 修复mongo出现错误输出的问题[修正] 修正页面Trace的日志保存[修正] 修正Model类的save方法[修正] 修正令牌验证没有设置TOKEN_NAME的问题[修正] 修复RestController中请求资源类型总是为html的bug[修正] 修正Model类的getField方法的一处变量冲突问题[修正] 修正Mongo驱动的page处理[修正] 修正 extract方法 在分解变量的时候 可能导致变量被覆盖的问题[修正] 修正Imagick类库[修正] 修正页面trace插件开启PAGE_TRACE_SAVE后出错的问题[修正] 修正controller方法 对不使用命名空间的支持[修正] 修正Image类的save方法支持图片质量[修正] 修正高级模型的乐观锁功能[修正] 修正I函数通过FILTER_VALIDATE_EMAIL方式传入常量过滤的一处错误 并且过滤参数支持数组[修正] 修正GIF类的架构函数[修正] Cache类一处常量错误修正[修正] 修改自动生成的配置文件支持CONF_EXT定义[删除] 去掉多余的URL_404_REDIRECT配置参数3.2.2 更新日志[增加]配置文件增加yaml/json/xml/ini/自定义格式支持[增加]增加load_config函数用于加载配置文件[增加]增加CONF_EXT和CONF_PARSE常量,用于定义配置文件后缀及解析方法[增加]模块增加状态配置文件[增加]cookie函数增加httponly参数支持[增加]增加COOKIE_HTTPONLY配置参数[增加]增加插件的控制器访问支持[增加]增加CONTROLLER_PATH常量用于定义控制器的命名空间路径[增加]添加VAR_ADDON配置参数 用于设置默认的插件控制器命名空间变量[增加]dispatcher类增加getSpace方法用于获取控制器的命名空间路径[增加]I函数增加path和data类型变量的用法[增加]引入composer支持(还需要完善)[增加]xcahe和wincache驱动增加clear方法[增加]自动生成机制支持多个模块的控制器和模型类的批量生成[修正]修正上传类不能动态改变rootPath的BUG[修正]修正RestController类的执行顺序[修正]修正Model类的参数绑定的一处BUG[修正]修正CronRun行为扩展一处错误[修正]修正GIF类[修正]修正rest控制器的encodeData方法[修正]修正ViewModel可能因空格导致Order方法错误的bug[修正]修正MongoModel类的写入数据的自增获取[修正]修正第三方模板引擎驱动类[修正]修正自动加载可能的一处导致重复加载的问题[修正]修正__CONTROLLER__ 在URL不区分大小写情况下的获取[修正]修正Route类中请求类型判断错误的bug[修正]修正mysqli驱动的free方法[改进]改进CronRun行为扩展[改进]TOKEN_NAME 未设置时使用默认值__hash__[改进]模类的_after_insert回调返回false后直接返回[改进]Model类的save方法 如果data为空则不执行[改进]Model类的delete方法 如果条件为空 则不执行删除操作[改进]改进获取模块方法,支持驼峰法模块命名[改进]改进模型的查询方法对表前缀的支持,使用当前模型设置的表前缀[改进]视图模型的视图定义中的_table属性和关联模型中的relation_table 支持 __TABLE_NAME__定义方式[改进]Model类的query和execute方法支持 __TABLE_NAME__定义方式[改进]改进PDO驱动对pgsql字符转义的2023-06-13 00:56:042
软件测试该如何学习?
1.测试环境(网络环境,windows环境等)2.数据库管理3.编程技巧(java编程设计,脚本语言,设计工具,XML编程)4.软件测试技术(测试理论,方法,流程,文档写作,测试工具,自动测试)5.测试技术实践2023-06-13 00:56:147
如何改变默认的目标路径行为
如何改变默认的目标路径行为默认情况下,安全组件将保留在名为 _security.main.target_path 的 session 变量中最后访问的 URL 信息(主要是在 security.yml 中定义的防火墙的名称)。成功登录后,将用户重定向到此路径,并帮助他们继续停留在访问过的最后一个已知网页。在某些情况下,这不是理想的。例如,当最后的请求 URL 返回的是非 HTML 或部分 HTML 响应的 XMLHttpRequest 对象,那么用户将被重定向回浏览器无法呈现的网页。要解决此行为,您仅仅需要去继承 ExceptionListener 类,并且重载名为 setTargetPath() 的默认方法。首先,重载您的配置文件中的 security.exception_listener.class 参数。这可以在您的主配置文件(在应用程序下的配置文件中)或导入包中配置文件中实现:YAML:# app/config/services.ymlparameters:# ...security.exception_listener.class: AppBundleSecurityFirewallExceptionListenerXML:<!-- app/config/services.xml --><parameters><!-- ... --><parameter key="security.exception_listener.class">AppBundleSecurityFirewallExceptionListener</parameter></parameters>PHP:// app/config/services.php// ...$container->setParameter("security.exception_listener.class", "AppBundleSecurityFirewallExceptionListener");下一步,创建您自己的 ExceptionListener 监听器:// src/AppBundle/Security/Firewall/ExceptionListener.phpnamespace AppBundleSecurityFirewall;use SymfonyComponentHttpFoundationRequest;use SymfonyComponentSecurityHttpFirewallExceptionListener as BaseExceptionListener;class ExceptionListener extends BaseExceptionListener{protected function setTargetPath(Request $request){// Do not save target path for XHR requests// You can add any more logic here you want// Note that non-GET requests are already ignoredif ($request->isXmlHttpRequest()) {return;}parent::setTargetPath($request);}}为您方案的需要在这里添加或多或少的逻辑。2023-06-13 00:57:071
软件开发主要用什么编程语言?
游戏开发主要用的是c语言的2023-06-13 00:57:294
tidb怎么写for循环
我们介绍了 TiDB Operator 的 Controller Manager 的设计和实现,了解了各个 Controller 如何接受和处理变更。在这篇文章中,我们将讨论组件的 Controller 的实现。TiDBCluster Controller 负责了 TiDB 主要组件的生命周期管理,我们将以此为例, 介绍组件控制循环的编排设计。我们将会了解到完成 TiDB 集群的生命周期管理过程中,各种控制循环事件经过了怎样的编排,这些事件中又完成了哪些资源管理操作。在阅读时,大家了解这些工作的大致过程和定义即可,我们将在下一篇文章中具体介绍各个组件如何套用下面的范式。组件控制循环的调用在上一篇文章的代码介绍中,我们提到了 TiDBCluster controller 的 updateTidbCluster 函数,位于 pkg/controller/tidbcluster/tidb_cluster_control.go,它是 TiDB 组件生命周期管理的入口,调用了一系列生命周期管理函数。略去注释,我们可以发现 updateTidbCluster 函数依次调用了以下函数:c.reclaimPolicyManager.Sync(tc)c.orphanPodsCleaner.Clean(tc)c.discoveryManager.Reconcile(tc)c.ticdcMemberManager.Sync(tc)c.tiflashMemberManager.Sync(tc)c.pdMemberManager.Sync(tc)c.tikvMemberManager.Sync(tc)c.pumpMemberManager.Sync(tc)c.tidbMemberManager.Sync(tc)c.metaManager.Sync(tc)c.pvcCleaner.Clean(tc)c.pvcResizer.Resize(tc)c.tidbClusterStatusManager.Sync(tc)这些函数可以分为两类,一是 TiDB 组件的视角组织的控制循环实现,例如 PD,TiDB,TiKV,TiFlash,TiCDC,Pump,Discovery,另外一类是负责管理 TiDB 组件所使用的 Kubernetes 资源的管理以及其他组件外围的生命周期管理操作,例如 PV 的 ReclaimPolicy 的维护,OrphanPod 的清理,Kubernetes 资源的 Meta 信息维护,PVC 的清理和扩容,TiDBCluster 对象的状态管理等。TiDB 组件的生命周期管理过程TiDB 的主要组件控制循环的代码分布在 pkg/manager/member 目录下以 _member_manager.go 结尾的文件下,比如 pd_member_manager.go,这些文件又引用了诸如 _scaler.go,_upgrader.go 的文件,这些文件包含了扩缩容和升级相关功能的实现。从各个组件的 _member_manager.go 相关文件,我们可以提炼出以下通用实现:// Sync Serviceif err := m.syncServiceForTidbCluster(tc); err != nil { return err}// Sync Headless Serviceif err := m.syncHeadlessServiceForTidbCluster(tc); err != nil { return err}// Sync StatefulSetreturn syncStatefulSetForTidbCluster(tc)func syncStatefulSetForTidbCluster(tc *v1alpha1.TidbCluster) error { if err := m.syncTidbClusterStatus(tc, oldSet); err != nil { klog.Errorf("failed to sync TidbCluster: [%s/%s]"s status, error: %v", ns, tcName, err) } if tc.Spec.Paused { klog.V(4).Infof("tidb cluster %s/%s is paused, skip syncing for statefulset", tc.GetNamespace(), tc.GetName()) return nil } cm, err := m.syncConfigMap(tc, oldSet) newSet, err := getnewSetForTidbCluster(tc, cm) if err := m.scaler.Scale(tc, oldSet, newSet); err != nil { return err } if err := m.failover.Failover(tc); err != nil { return err } if err := m.upgrader.Upgrade(tc, oldSet, newSet); err != nil { return err } return UpdateStatefulSet(m.deps.StatefulSetControl, tc, newSet, oldSet)}登录后复制这段代码主要完成了同步 Service 和 同步 Statefulset 的工作,同步 Service 主要是为组件创建或同步 Service 资源,同步 Statefulset 具体包含了一下工作:同步组件的 Status;检查 TiDBCluster 是否停止暂停了同步;同步 ConfigMap;根据 TidbCluster 配置生成新的 Statefulset,并且对新 Statefulset 进行滚动更新,扩缩容,Failover 相关逻辑的处理;创建或者更新 Statefulset;组件的控制循环是对上面几项工作循环执行,使得组件保持最新状态。下面将介绍 TiDB Operator 中这几项工作具体需要完成哪些方面的工作。同步 Service一般 Service 的 Reconcile 在组件 Reconcile 开始部分,它负责创建和同步组件所使用的 Service,例如 cluster1-pd 和 cluster1-pd-peer。在控制循环函数中,会调用 getNewServiceForTidbCluster 函数,通过 Tidbcluster CR 中记录的信息创建一个新的 Service 的模板,如果 Service 不存在,直接创建 Service,否则,通过比对新老 Service Spec 是否一致,来决定是否要更新 Service 对象。TiDB 组件使用的 Service 中,包括了 Service 和 Headless Serivce,为组件提供了被访问的能力。当组件不需要知道是哪个实例正在与它通信,并且可以接受负载均衡方式的访问,则可以使用 Service 服务,例如 TiKV,TiDB 等组件访问 PD 时,就可以使用 Service 地址。当组件需要区分是那个 Pod 在提供服务时,则需要用 Pod DNS 进行通信,例如 TiKV 在启动时,会将自己的 Pod DNS 作为 Advertise Address 对外暴露,其他 Pod 可以通过这个 Pod DNS 访问到自己。同步 Status完成 Service 的同步后,组件接入了集群的网络,可以在集群内访问和被访问。控制循环会进入 syncStatefulSetForTidbCluster,开始对 Statefulset 进行 Reconcile,首先是使用 syncTidbClusterStatus 对组件的 Status 信息进行同步,后续的扩缩容、Failover、升级等操作会依赖 Status 中的信息进行决策。同步 Status 是 TiDB Operator 比较关键的操作,它需要同步 Kubernetes 各个组件的信息和 TiDB 的集群内部信息,例如在 Kubernetes 方面,在这一操作中会同步集群的副本数量,更新状态,镜像版本等信息,检查 Statefulset 是否处于更新状态。在 TiDB 集群信息方面,TiDB Operator 还需要将 TiDB 集群内部的信息从 PD 中同步下来。例如 PD 的成员信息,TiKV 的存储信息,TiDB 的成员信息等,TiDB 集群的健康检查的操作便是在更新 Status 这一操作内完成。检查 TiDBCluster 是否暂停同步更新完状态后,会通过 tc.Spec.Paused 判断集群是否处于暂停同步状态,如果暂停同步,则会跳过下面更新 Statefulset 的操作。同步 ConfigMap在同步完 Status 之后,syncConfigMap 函数会更新 ConfigMap,ConfigMap 一般包括了组件的配置文件和启动脚本。配置文件是通过 YAML 中 Spec 的 Config 项提取而来,目前支持 TOML 透传和 YAML 转换,并且推荐 TOML 格式。启动脚本则包含了获取组件所需的启动参数,然后用获取好的启动参数启动组件进程。在 TiDB Operator 中,当组件启动时需要向 TiDB Operator 获取启动参数时,TiDB Operator 侧的信息处理会放到 discovery 组件完成。如 PD 获取参数用于决定初始化还是加入某个节点,就会使用 wget 访问 discovery 拿到自己需要的参数。这种在启动脚本中获取参数的方法,避免了更新 Statefulset 过程中引起的非预期滚动更新,对线上业务造成影响。生成新 StatefulsetgetNewPDSetForTidbCluster 函数会得到一个新的 Statefulset 的模板,它包含了对刚才生成的 Service,ConfigMap 的引用,并且根据最新的 Status 和 Spec 生成其他项,例如 env,container,volume 等,这个新的 Statefulset 还需要送到下面 3 个流程进行滚动更新,扩缩容,Failover 方面的加工,最后将这个新生成的 Statefulset 会被送到 UpdateStatefulSet 函数处理,判断其是否需要实际更新到组件对应的 Statefulset。新 Statefulset 的加工(一): 滚动更新m.upgrader.Upgrade 函数负责滚动更新相关操作,主要更新 Statefulset 中 UpgradeStrategy.Type 和 UpgradeStrategy.Partition,滚动更新是借助 Statefulset 的 RollingUpdate 策略实现的。组件 Reconcile 会设置 Statefulset 的升级策略为滚动更新,即组件 Statefulset 的 UpgradeStrategy.Type 设置为 RollingUpdate 。在 Kubernetes 的 Statefulset 使用中,可以通过配置 UpgradeStrategy.Partition 控制滚动更新的进度,即 Statefulset 只会更新序号大于或等于 partition 的值,并且未被更新的 Pod。通过这一机制就可以实现每个 Pod 在正常对外服务后才继续滚动更新。在非升级状态或者升级的启动阶段,组件的 Reconcile 会将 Statefulset 的 UpgradeStrategy.Partition 设置为 Statefulset 中最大的 Pod 序号,防止有 Pod 更新。在开始更新后,当一个 Pod 更新,并且重启后对外提供服务,例如 TiKV 的 Store 状态变为 Up,TiDB 的 Member 状态为 healthy,满足这样的条件的 Pod 才被视为升级成功,然后调小 Partition 的值进行下一 Pod 的更新。新 Statefulset 的加工(二): 扩缩容m.scaler.Scale 函数负责扩缩容相关操作,主要是更新 Statefulset 中组件的 Replicas。Scale 遵循逐个扩缩容的原则,每次扩缩容的跨度为 1。Scale 函数会将 TiDBCluster 中指定的组件 Replicas 数,如 tc.Spec.PD.Replicas,与现有比较,先判断是扩容需求还是缩容需求,然后完成一个步长的扩缩容的操作,再进入下一次组件 Reconcile,通过多次 Reconcile 完成所有的扩缩容需求。在扩缩容的过程中,会涉及到 PD 转移 Leader,TiKV 删除 Store 等使用 PD API 的操作,组件 Reconcile 过程中会使用 PD API 完成上述操作,并且判断操作是否成功,再逐步进行下一次扩缩容。新 Statefulset 的加工(三): Failoverm.failover.Failover 函数负责容灾相关的操作,包括发现和记录灾难状态,恢复灾难状态等,在部署 TiDB Operator 时配置打开 AutoFailover 后,当发现有 Failure 的组件时记录相关信息到 FailureStores 或者 FailureMembers 这样的状态存储的键值,并启动一个新的组件 Pod 用于承担这个 Pod 的工作负载。当原 Pod 恢复工作后,通过修改 Statefulset 的 Replicas 数量,将用于容灾时分担工作负载的 Pod 进行缩容操作。但是在 TiKV/TiFlash 的容灾逻辑中,自动缩容容灾过程中的 Pod 不是默认操作,需要设置 spec.tikv.recoverFailover: true 才会对新启动的 Pod 缩容。使用新 Statefulset 进行更新在同步 Statefulset 的最后阶段,已经完成了新 Statefulset 的生成,这时候会进入 UpdateStatefulSet 函数,这一函数中主要比对新的 Statefulset 和现有 StatefulSet 差异,如果不一致,则进行 Statefulset 的实际更新。另外,这一函数还需要检查是否有没有被管理的 Statefulset,这部分主要是旧版本使用 Helm Chart 部署的 TiDB,需要将这些 Statefulset 纳入 TiDB Operator 的管理,给他们添加依赖标记。完成上述操作后,TiDBCluster CR 的 Status 更新到最新,相关 Service,ConfigMap 被创建,生成了新的 Statefulset,并且满足了滚动更新,扩缩容,Failover 的工作。组件的 Reconcile 周而复始,监控着组件的生命周期状态,响应生命周期状态改变和用户输入改变,使得集群在符合预期的状态下正常运行。其他生命周期维护工作除了 TiDB 主要组件的视角之外,还有一些运维操作被编排到了下面的函数实现中,他们分别负责了以下工作:Discovery,用于 PD 启动参数的配置和 TiDB Dashboard Proxy,Discovery 的存在,可以提供一些动态信息供组件索取,避免了修改 ConfigMap 导致 Pod 滚动更新。Reclaim PolicyManager,用于同步 tc.Spec.PVReclaimPolicy 的配置,默认配置下会将PV 的 Reclaim Policy 设置为 Retain,降低数据丢失的风险。OrphanPodCleaner,用于在 PVC 创建失败的时候清除 Pod,让 Statefulset Controller 重试 Pod 和对应 PVC 的创建。PVC Cleaner 用于 PVC 相关资源清理,清理被标记可以删除的 PVC。PVC Resizer 用于 PVC 的扩容,在云上使用时可以通过修改 TidbCluster 中的 Storage 相关配置修改 PVC 的大小。Meta Manager 用于同步 StoreIDLabel,MemberIDLabel,NamespaceLabel 等信息到 Pod,PVC,PV 的 label 上。TiDBCluster Status Manager 用于同步 TidbMonitor 和 TiDB Dashboard 相关信息。小结这篇文章介绍了 TiDBCluster 组件的控制循环逻辑的设计,试图让大家了解,当 TiDBCluster Controller 循环触发各个组件的 Reconcile 函数时,组件 Reconcile 函数是按照怎样的流程巡检组件的相关资源,用户预期的状态,是如何通过 Reconcile 函数,变成实际运行的组件。TiDB Operator 中的控制循环都大致符合以上的设计逻辑,在后面的文章中,我们会具体介绍每个组件是如何套用上面的设计逻辑,实现组件的生命周期管理。如果有什么好的想法,欢迎通过 #sig-k8s 或 pingcap/tidb-operator 参与 TiDB Operator 社区交流。数据库分布式激光投影和LED投影的区别,哪个更好?精选推荐广告TiDB Operator 源码阅读 (四) 组件的控制循环218阅读·0评论·0点赞2021年6月30日TiDB、mysql修改系统变量/常用语句(杀死process中的进程)1425阅读·0评论·0点赞2019年12月5日TiDB Operator 架构67阅读·0评论·1点赞2022年7月11日TiDB 的正确使用姿势1251阅读·0评论·1点赞2020年2月27日TiDB 优化方案和常见问题2820阅读·0评论·1点赞2020年5月24日tidb使用坑记录4097阅读·0评论·1点赞2018年2月22日抑郁自测题:35分以上是重度抑郁,测测你的抑郁有多深?国际专业抑郁测试广告tidb 架构 ~Tidb学习系列(4)210阅读·0评论·0点赞2018年11月1日TiDB SQL开发基础——增删改查3252阅读·0评论·0点赞2018年7月19日TiDB 官方设计文档翻译(一)1.5W阅读·0评论·3点赞2017年3月5日mysql 游标循环_MySQL 游标 循环1456阅读·0评论·1点赞2021年1月18日TiDB Operator 需要的 RBAC 规则53阅读·0评论·1点赞2022年7月12日TiDB 最佳实践系列(五)Java 数据库应用开发指南2752阅读·0评论·1点赞2019年11月7日TiDB 源码阅读系列文章(十六)INSERT 语句详解189阅读·0评论·0点赞2018年8月20日批量添加数据到数据库1413阅读·0评论·0点赞2018年5月28日tidb源码编译安装,从入门到差点放弃1267阅读·2评论·0点赞2020年8月25日TiDB 内核-源码解读 Point_Get 点查的一生366阅读·0评论·3点赞2022年5月12日Kubernetes资源编排系列之四: CRD+Operator篇281阅读·0评论·1点赞2022年8月8日去首页看看更多热门内容2023-06-13 00:57:551
homestead到底要安装到哪个目录下
方法/步骤1、安装VirtualBox和Vagrant在启动Homestead环境之前,你必须安装VirtualBox和Vagrant。这两个软件为所有主流的操作系统提供了简单易用的可视化安装界面。详细的安装过程可自行百度也可以直接查看我的经验《教你windows 7获取安装指定版本VirtualBox》和《一步一步教你安装最新版 Vagrant》添加Vagrant boxVirtualBox和Vagrant安装完成,添加“laravel/homestead”箱子到你的Vagrant安装目录下;在终端使用下面的命令,这将花费几分钟的时间来下载箱子;vagrant box add laravel/homestead如果网络正常就慢慢等待下载然后添加,这里由于网络的原因我试了很多次都失败了,最后直接复制下载链接https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.2.7/providers/virtualbox.box下载保存到F:virtualbox.box,然后通过vagrant box add laravel/homestead F:virtualbox.box安装Composer安装 Homestead 命令行工具,这里使用Composer。首先就是安装好Composer。windows下载安装Composer非常简单,只要到官网下载Composer-Setup.exe,然后双击默认安装即可;安装后在目录地址栏输入%AppData%回车找到C:UsersAdministratorAppDataRoamingComposervendorin目录添加到 PATH 环境变量中;安装 Homestead 2.0箱子被添加到Vagrant安装目录下后,通过 Composer 的 global 指令来安装 Homestead 命令行工具了:composer global require "laravel/homestead=~2.0"由于之前已经添加了环境变量,安装之后就能在执行 homestead 指令时找到对应的可执行程序了。Homestead配置和初始化安装了 Homestead 命令行工具,执行 init 来创建 Homestead.yaml 配置文件homestead init生成的 Homestead.yaml 文件将被放置于C:UsersAdministrator.homestead目录下。如果你使用的是 Mac 或 Linux 操作系统,还可以通过执行 homestead edit 指令来编辑 Homestead.yaml 文件:homestead editwindows环境下直接通过编辑器打开 Homestead.yaml修改即可启动Vagrant箱子根据实际情况编辑好“Homestead.yaml”文件,就可以在终端上的“Homestead”目录下执行 homestead up 命令。Vagrant将启动虚拟机,并自动配置共享目录和Nginx站点!不要忘记把你的Nginx站点的“域”添加到机器里的“hosts”文件里!“hosts”文件将把对本地域的请求重定向到Homestead环境 里。在Windows机器上,它位于“C:WindowsSystem32 driversetc”目录。你添加到此文件的内容就像下面这样:192.168.10.10 homestead.app确保列出的 IP 和你在 Homestead.yaml 文件中设置的一致。一旦你把域名添加到 hosts 文件中,你就可以通过浏览器访问此站点了!http://homestead.app可以通过SSH工具连接,用户密码为vagrant/vagrant。ip为配置文件里面的ip;通过headstead ssh不需要用户名密码;端口映射以及常用命令下面的端口被转发到你的Homestead环境:SSH: 2222 -> 转发到 22HTTP: 8000 -> 转发到 80MySQL: 33060 -> 转发到 3306Postgres: 54320 -> 转发到 5432homestead命令homestead init:创建 Homestead.yaml 配置文件homestead up :启动虚拟机;homestead ssh:通过SSH连接到 Homestead 环境;homestead destroy:销毁虚拟机;homestead list :用于列出所有可用的 Homestead 指令。2023-06-13 00:58:031
如何查看python2.7的nltk
1.安装Python(我安装的是Python2.7,目录C:Python27)可以到CSDN、OSChina、Sina Share等网站下载也可以到Python官网下载:http://www.python.org/2.安装NumPy(可选)到这里下载:http://sourceforge.net/projects/numpy/files/NumPy/1.6.2/numpy-1.6.2-win32-superpack-python2.7.exe注意Py版本下载之后执行exe文件(程序会自动搜索python27目录)3.安装NLTK(我下载的是nltk-2.0.3)到这里下载:http://pypi.python.org/pypi/nltk把nltk-2.0.3解压到C:Python27目录打开cmd,进到C:Python27 ltk-2.0.3目录(输入:cd C:Python27 ltk-2.0.3)输入命令:python setup.py install4.安装PyYAML:到这里下载:http://pyyaml.org/wiki/PyYAML注意Py版本下载之后执行exe文件(程序会自动搜索python27目录)5.打开IDLE,输入import nltk,没有错误的话,就说明安装成功了。到这里,NLP所需的基本python模块都已经安装好了,然后要安装NLTK_DATA了下载NLTK_DATA有好几种方法,这里我只介绍一种6.继续第五步,已经import nltk了,然后输入nltk.download(),这样就可以打开一个NLTK Downloader(NLTK下载器)7.注意下载器下边的Download Directory,我设置的是C: ltk_data8.在计算机-属性-高级系统设置-高级-环境变量-系统变量-新建:上边:NLTK_DATA,下边:C: ltk_data9.选择你要下载的包(语料库、模块),可以一次性下载(我在下载过程中总是出现out of date),也可以逐个下载(我就这么做的。。。)10.成功安装包之后怎么测试呢?输入下边的语句就可以。>>> from nltk.corpus import brown>>> brown.words()["The", "Fulton", "County", "Grand", "Jury", "said", ...]2023-06-13 00:58:121
电脑上装个英文应用软件,打开软件时总是提示: The system cannot find the file specified
安装路径太长。卸载在我的电脑中路径长度和地方换一下重装试试吧!2023-06-13 00:58:286
描写人物的作文
我的朋友人世间最可贵的感情无疑是亲情,但除亲情之外,那就是友情."世界上没有比友谊更美好,更令人愉快的东西了;没有友谊,世界仿佛失去了太阳."小学六年,她带给我朋友的温暖;她让我明白友谊是什么;她和我一起分享成功的喜悦,失败的难过;又是她和我一起笑,一起哭……她,和我一般高的个子,梳着俩辫子,看上去还是那么稚气;她"文武双全",不但学习成绩优秀,还是校田径队的佼佼者;她做事认真,是老师的得力助手,同学们的好伙伴;她性格直爽,喜欢给同学们指出错误的地方,所以免不了会得罪一些同学,但她丝毫不介意,她稳重中又带点泼辣,但有时胆子却很小.她能成为我最最好的朋友,不光是因为这些,更重要的是她对待朋友的那种真诚,纯洁,不带一点杂质,让我深深地感动了.记得那个冬天的晚上,已经将近10点了,我们正在熟睡,突然"砰"地一声,一个不明物体掉在我们寝室的地毯上,正掉在她的床边,全寝室的人都被吓醒了,可大冷天没有一个人敢跑出去开灯.这时,有一个身影跑了出去,她打开了灯,寝室里一下子亮了,我们也终于看见了掉在地毯上的是上床同学晚上暖被窝用的玻璃瓶.这玻璃碎片摔得到处都是,一不小心就会戳到手.她拿着扫把和畚箕跑进来,她先把大块的玻璃碎片扫进畚箕,那些小的碎片扫不进去,她就不顾自己的危险,索性用手捡.同学们都劝她不要捡了,可她二话不说继续捡,那么冷的天,她只穿了一套单薄的棉毛衫,冻得瑟瑟发抖.我仰起身,仔细地一看,真是不看不知道,一看吓一跳,她的手上已经有好几条被玻璃划起的伤痕了,还在流血.终于,老师来了,清理完现场,她用清水消了消毒,就连忙跑进已经冰冷的被窝.她躺进被窝的时候,我还能听见她"嘶嘶"地在发抖2023-06-13 00:51:1815
“告诫”是什么意思?
“告诫”的意思是教诲劝戒。读音:[gào jiè]造句:1.放置警告牌,告诫工作者禁止操作液压系统,不能给液压系统增压。2.他所告诫我的东西正是我现在每天都在做的,防守并积极跑位。3.它闪烁着警世的告诫,以其独特的语言说。4.他所以会落到今日的下场,就是因为平日对朋友的告诫都置若罔闻。5.妈妈时常告诫我,不管做任何事情都要尽力去做,力争做到最好。出处:爱默生的名言”人类的全部历史都告诫有智慧的人,不要笃信时运,而应坚信思想。“近义词:申饬、劝诫、劝告、警戒、规劝、警告2023-06-13 00:51:261
谆谆告诫造句
督促提督吴永安等,相机前进,并与广西抚臣徐延旭联络会商,和衷共济,仰副圣意~之至意。(高阳《清宫外史》下册)2023-06-13 00:51:441
用惴惴不安,自暴自弃,华而不实,谆谆告诫造句
她为这些华而不实的衣服而惴惴不安,甚至有些自暴自弃,妈妈发现了,谆谆告诫她没关系,靠自己的努力挣来的钱买的,贵了也没有必要自责,自己应该感到心安理得。 惴惴不安——公司不停地裁员时,那些留下来的员工也会开始惴惴不安了。 自暴自弃——那些自暴自弃的人无法成功. 华而不实——他们展开了华而不实的广告攻势。 谆谆告诫——她谆谆告诫儿子,要好好照顾自己.2023-06-13 00:51:511
人物描写作文300字
自己做你在作弊噢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2023-06-13 00:51:5810
告诫是什么意思
汉语词语 告诫 : 读音:gào jiè 反义词:听任 近义词:警告 解释:警告劝诫(多用于上级对下级或长辈对晚辈)。 造句:妈妈常告诫我:平时要多读书,不能总想着寻欢作乐。一有些好成绩,也不能忘乎所以。要与能够在学习的见解上一拍即合的人多多切磋。这样才能成为博学多识的人。 【名言警句】 爱默生: 人类的全部历史都告诫有智慧的人,不要笃信时运,而应坚信思想。编辑本段雪莱诗歌作品《告诫》英文原版 An Exhortation (一) Chameleons feed on light and air: Poets" food is love and fame: If in this wide world of care Poets could but find the same With as little toil as they, Would they ever change their hue As the light chameleons do, Suiting it to every ray Twenty times a day? (二) Poets are on this cold earth, As chameleons might be, Hidden from their early birth In a cave beneath the sea; Where light is, chameleons change: Where love is not, poets do: Fame is love disguised: if few Find either, never think it strange That poets range. (三) Yet dare not stain with wealth or power A poet"s free and heavenly mind: If bright chameleons should devour Any food but beams and wind, They would grow as earthly soon As their brother lizards are. Children of a sunnier star, Spirits from beyond the moon, O, refuse the boon!汉译版本 告诫 (一) 变色龙仰仗空气和阳光: 诗人的养料是博爱和名望: 虽然宇宙浩瀚沧桑— 而诗人能得到的褒奖— 少于其付出的辛劳, 他们总在变换色调— 犹如变色龙般轻佻, 为适宜于每束光的闪耀— 一天变幻二十次可好? (二) 诗人在冷漠的世间, 一如变色龙般善变, 早先的身份藏而不宣— 源于洞穴,在海底深渊; 有光的地方,变色龙会变态: 没爱的地方,诗人不屑于兴怀: 名声是伪装的博爱: 即便两者都不见,不必见怪— 诗人在徘徊。 (三) 岂敢用钱权玷污诗人— 潇洒自由和超凡的心灵: 如果耀眼的变色龙会鲸吞— 一切食物,除了光芒、和惠风, 他们宁可变得世俗— 如其兄弟—蜥蜴一属。 孩子们似灿烂的星宿, 生灵来自遥远的玉兔, 唉,弃绝这恩宠之物!作者简介 珀西·比希·雪莱,是英国文学史上最有才华的抒情诗人之一。William Wordsworth曾称其为 "One of the best artists of us all“,同时期的拜伦称其为 "Without exception the best and least selfish man I ever knew", 更被誉为诗人中的诗人。其一生见识广泛,不仅是柏拉图主义者,更是个伟大的理想主义者。 创作的诗歌节奏明快,积极向上。2023-06-13 00:52:174
诫的组词大全(约50个) 诫的词语解释_诫是什么意思?
诫的拼音 诫的解释 诫是什么意思 1、诫字的拼音是jiè ; 2、 诫字的解释:(动)警告;劝告:告~|规~。 精选部分诫组词的词语造句及词语的拼音和详细解释: 1、告诫造句:也许你马拉松之后休息时间过长,你告诫自己要很快重新开始,但是发现完全无法开始训练,由于无法像往常一样快速恢复训练,你的运动水平下降。 解释:警告劝戒(多用于上级对下级或长辈对晚辈)。 2、训诫造句:“巴姨,你干嘛和那个 *** 说那么多?”拉蒂?巴姨打开了她的话匣子劝导、训诫开了,一边说着一边把便盆推到了我的帆布床的下面。 解释:(1)教导和告诫。(2)一种最轻的刑罚,人民法院以国家的名义对犯罪者进行公开的批评教育。 3、谆谆告诫造句:他们把俄罗斯当做他们的老大哥,他们的朋友,而在整整70年中,他们被谆谆告诫在南边有一个巨大的黄皮肤的敌人。 典故:谆谆:教诲不倦的样子;告诫:规劝。恳切耐心地劝告。 有关诫字组词的词语列表 诫的组词 诫怎么组词 诫的多音字组词 诫字组词 诫律、诫誓、诫训、诫慎、诫勖、诫约、诫语、诫饬、诫世、诫喻、诫述、诫命、训诫、遗诫、箴诫、至诫、劝诫、谴诫、明诫、李诫、炯诫、镜诫、警诫、诫警、禁诫、诫厉、诫励、诫严、诫防、诫诲、诫谕、诫敕、诫社、诫勒、诫勉、垂诫、饬诫、惩诫、备诫、圣诫、申诫、十诫、束诫、天诫、武诫、五诫、教诫、鉴诫、监诫、谏诫、家诫、规诫、告诫、讽诫、诰诫、法诫语、累诫不戒、谆谆告诫、谆谆诰诫、诫莫若豫、诫莫如豫、断织之诫、小惩大诫2023-06-13 00:52:231
告诫的拼音
gàojiè词语解释:告诫gàojiè(1)也作“告戒”(2)规劝某人勿做某事例告诫我们不要贪图不义之财例吾累次丁宁告戒,街亭是吾根本,汝以全家之命,领此重任。——《三国演义》引证解释:⒈见“告戒”。国语词典:申告劝诫。如:「张生品性不端,老师特予以告诫一番。」也作「告戒」、「诰诫」。网络解释:告诫告诫,指警告劝诫,如:爱默生的名言—-人类的全部历史都告诫有智慧的人,不要笃信时运,而应坚信思想。告诫的近反义词近义词警告劝诫劝告规劝警戒申饬告诫造句常言所说“知足不辱”包含了颇深的人生哲理,它告诫人们不能有非分的贪心,贪心容易招来祸患。它谆谆告诫我们必须培养正气,以身示范。我们应该牢记老师对我们的谆谆告诫。父亲告诫儿子说,你血气方刚,凡事要忍耐,切勿跟人处处冲突。妈妈语重心长的告诫,却被我不耐烦的打断了。老师常常告诫我们,骄傲使人落后。2023-06-13 00:52:311
告诫 吩咐 七嘴八舌 怎么造句
、有两种人是没有什么价值可言的;一种人无法做被吩咐去做的事,另一种人只能做被吩咐去做的事。2、我可以教训二十个人,吩咐他们应该做些什么做这二十个人中间的一个,履行我自己的教训,我就要敬谢不敏了。莎士比亚 3、我可以教训二十个人,吩咐他们应该做些什么事,可是要我做这二十个人中间的一个,履行我自己的教训,我就要敬谢不敏了。4、连长吩咐战士们早点休息,明天天一亮就出发。5、对老师的吩咐小李是言听计从。6、老师把任务刚一吩咐完毕,大家就开始行动起来。7、天使把人间美丽的女人登记造册送上帝阅览,上帝看后吩咐说:三八节将至,给最善良最能干最聪明的女人发个短信吧!让她永远年轻快乐幸福漂亮!8、阳光,总是不需要吩咐便洒下一大把的。2023-06-13 00:52:491
描写人物的作文 800字
大概是在我上幼儿园时,他每天都去接送我,现在他已经是两鬓斑白了,带着一副看似古董样子的老花镜,一双很久没上油不发亮的皮鞋。我的爷爷。尽管他现在已经老的以至于行走都不是件容易的事了,但我还是相当之崇拜他的。 让我记忆很深的是我四岁还是五岁的一年夏天,出奇的热,就是在家坐的都会流汗,我从小就是闲不住的人,每天都在爷爷家跑来跑去,弄的汗流浃背。我本身又怕热,吵的要空调,爷爷却说,空调是人类对自然的不屑一顾。自然还给人类一个厄尔尼诺。现在想想还真是这样,如果说地球是恒温的,生物早就灭绝了。生命是温差的产物。放弃享受春夏秋冬的人,本质上是在浪费生命! 爷爷经常教我不要锋芒毕露,但我在这方面与他观点可不太一样,标榜自己淡泊名利的人本身就是在捞取名声。摆出捍卫真理架式的人捍卫的绝对不是真理。我是这么认为。爷爷喜欢养鱼,有一天,他边给鱼喂食,边跟我说,我养了一缸鱼,每天我用掉在餐桌上的饭粒一粒一粒的往鱼缸里扔,我有三个体会,第一是,要想吃到食物,必须竞争。第二是,最终吃到肚子里的鱼,往往不是一口就咬上的那条鱼。第三是,吃不上的饿不死,吃的上的能撑死。我明白了,撑死的鱼比饿死的鱼多。涝死的花比旱死的花多。富死的人比穷死的人多。 爷爷原来本是一个机关的采购员,可以说当时是个铁饭碗。奶奶说,一场文化大革命后,爷爷变了,他不在是一个为别人干事的人了,他要自己创业,铁饭碗的真正含义不是在一个地方吃一辈子饭,而是一辈子到哪儿都有饭吃。 还让我记忆深刻的是我上一年级的时候,我在背古诗,爷爷饶有兴趣地看我的语文书,问我为什么要背这首古诗呢。这是必背古诗,我这么回答。爷爷一脸严肃地对我说,不必背,在这个世界上根本不存在什么必背的东西,如果有人给你开必背的东西,你最好远离他。给别人开必背科目的人绝对是哗众取宠的人。 有钱不是真富,知足才是真富,没钱不是真穷,贪婪才是真穷,腰缠万贯是另一种穷。一贫如洗是另一种富。至于现在,爷爷激流勇退,没有准备在出在去干什么轰轰烈烈的事,他喜欢过“采菊东篱下,悠然见南山”的日子。在浩淼的宇宙面前即使是世界首富也只不过如同一只蚂蚁,只不过是拥有一辈子也用不着钱的蚂蚁。如果全是老姜,将是一个何等辛辣的社会啊!2023-06-13 00:52:503
告诫的国语词典告诫的国语词典是什么
告诫的国语词典是:申告劝诫。如:「张生品性不端,老师特予以告诫一番。」也作「告戒」、「诰诫」。告诫的国语词典是:申告劝诫。如:「张生品性不端,老师特予以告诫一番。」也作「告戒」、「诰诫」。拼音是:gàojiè。注音是:ㄍㄠ_ㄐ一ㄝ_。词性是:动词。结构是:告(上下结构)诫(左右结构)。告诫的具体解释是什么呢,我们通过以下几个方面为您介绍:一、词语解释【点此查看计划详细内容】告诫gàojiè。(1)也作“告戒”。(2)规劝某人勿做某事。(3)教诲劝戒。二、引证解释⒈见“告戒”。三、网络解释告诫告诫,指警告劝诫,如:爱默生的名言—-人类的全部历史都告诫有智慧的人,不要笃信时运,而应坚信思想。关于告诫的近义词警告劝诫规劝警戒申饬劝告关于告诫的反义词听任关于告诫的诗词《悼亡·告诫篷窗知不知》关于告诫的诗句告诫篷窗知不知来此劝农申告诫来此劝农申告诫关于告诫的单词exhortwarnwarninglesson关于告诫的成语谆谆告诫断织之诫小惩大诫死告活央差可告慰自告奋勇行词告状谆谆诰诫关于告诫的词语差可告慰小惩大诫不可告人断织之诫诫莫若豫忠告善道不敢告劳自告奋勇死告活央无头告示关于告诫的造句1、常言所说“知足不辱”包含了颇深的人生哲理,它告诫人们不能有非分的贪心,贪心容易招来祸患。2、父亲告诫儿子说,你血气方刚,凡事要忍耐,切勿跟人处处冲突。3、父亲常常告诫我们言多必失,今天看见小李招来了麻烦,才知老人家的话是很有道理的。4、妈妈时常告诫我,不管做任何事情都要尽力去做,力争做到最好。5、父母的谆谆告诫通常被孩子们当做生活的指南。点此查看更多关于告诫的详细信息2023-06-13 00:52:551
告诫规劝的话
1、充满自信,怎么都米粒的自己。哈哈。这样会不会好一点。 2、看别人不顺眼,是自己修养不够。 人愤怒的那一个瞬间,智商是零,过一分钟后恢复正常。 人的优雅关键在于控制自己的情绪。 用嘴伤害人,是最愚蠢的一种行为。 3、主动关怀失意人;莫刻意恭维得意者。 4、看着镜子里臃肿的自己,大大的脸,自己都觉得丑的不行了。 5、省下的钱,可以买很多其他东西,让自己变得更好的东西。 6、懂得权衡,做到平衡。 7、成功的人,往往就是在人生的不同站台,搭乘了最适合自己的那辆车。 8、真的想吃么?只是嘴巴寂寞的话就忍住吧,喝水好了。 9、摆脱烦恼的缠绕并不是什么难事,最重要的是学会理智,拥有一颗平常心。 10、做事:用心,耐心,恒心。 11、但你也必须清楚,当你心里说只吃一口的时候,第二口和后面的无数口都在路上了。 12、生活,不是件简单的事, 没有太多的一帆风顺,也没有太多的心想事成,有的,只是些随时可能的“碰壁” 13、没有过不去,只有不过去。 14、改变一个坏习惯至少是一个月,给自己一个月好了。表现自己的时间到了。 15、成功这一次,那就会成功很多次很多次。你会享受那种感觉的。 16、把你80%的精力用在20%最重要的事情上面。要记住,你不可能把精力放在所有的事情上面,人的精力和时间都是有限的,做事要分清轻重缓急。 17、你记得站上体重秤上的感觉,看着那数字,还会想吃么。 18、生活中的许多烦恼都是自己酿成的,是自己给自己套上的精神枷锁。 19、无论何时,请一定要相信:尽管耳边寒风呼啸,你的心灵总还有取暖的地方。 20、失败时,别人会告诉你是谁;成功时,自己要知道是谁。 21、人生春夏秋冬的四季转乘就无需说了,单就人一生的成长、事业的开创,不知要转乘多少次了。而等车和转乘时的心态,选择和取舍,以及时机、快慢的把握,还有许多不可预料的事件,对我们一生影响太大了。 22、人的一生就像在不停地等车,而且你去的线路往往没有直达的班车,你必须不断地转乘。就像等车和转乘一样,人生的不如意和难预料也很多。 23、要努力,懂得放弃,不必事事第一。 24、我知道你肚子饿得咕咕叫,也知道你真的很辛苦。要忍住对食物的欲望很难。 25、生命中比食物重要的多了去了,比如好身材。你一定也很想看到瘦下来的自己吧。 26、明智的人愿意接触不同的想法和不同的人,他们愿意将时间花在那些能给自己带来挑战的人身上。 27、坚持下去就好了,你是勇敢的,对不对。加油。 28、很多人都会跟着别人的思维走,要想走出这个怪圈,你必须要有足够的承受力来,因为不随波逐流会给自己带来很大的思想压力。你要知道,总有那么有一群人在按照自己的思维行事,而往往取得成功的也正是那群人。 29、不能总对自己说一些灰心丧气的话,成功者往往会这样想:我行!我可以! 30、没有人孬,只是有人装孬,适可而止,不要得寸进尺。 31、为人:好心,真心,热心。 32、给别人留面子,为自己赚面子。 33、你记得那种感觉么,在喜欢的男生面前的无所适从,那种想靠近却只能远离的感觉。 34、吃亏是福,量大福大。 35、如果这也会是一条出路,那么请坚持。除了不能吃,还能多坏呢。 36、和许多曼妙的梦想相比,躬身实践更为重要。梦想犹如远方的风景,行动才是我们靠近的脚步。韶华易逝,光阴不逮,你的初衷再美好,你的计划再周详,缺少执行这一环节,皆是镜花水月。想好了就去做,抛开负重,矢志前行,不要给自己太多的理由和借口,相信梦想的花朵就会在我们跋涉的路上悄悄地绽放。 37、生活,没有什么大道理可言,过日子,就是一种心情, 用好的心情去生活,累也不说累,苦也不言苦。 幸福,或许正是体现在这“不说累”和“不言苦”当中…… 38、人生犹如一本书,愚蠢的人将它草草翻过,聪明的人的人却会将它细细品读。为何如此?因为聪明的人知道,他只能读一次。 39、幸福不是你房子有多大,而是房里的笑声有多甜;幸福不是你开多豪华的车,而是你开着车平安到家;幸福不是你的爱人多漂亮,而是爱人的笑容多灿烂;幸福不是在你成功时的喝彩多热烈,而是失意时有个声音对你说:朋友别倒下!幸福不是你听过多少甜言蜜语,而是你伤心落泪时有人对你说:没事,有我在。 告诫自己的话 告诫自己的话 1、敢于奋斗的人,心中不怕困难。 2、把事情变复杂很简单,把事情变简单很复杂。 3、抱最大的希望,为最大的努力,做最坏的打算。 4、被克服的困难就是胜利的契机。 5、必须体验过痛苦,才体会到生的快乐。 6、把平凡的事情做好就是不平凡,把简单的招式练到极致就是绝招。 7、不怕山高,就怕腿软。 8、不是境况造就人,而是人造就境况。 9、崇高的理想就象生长在高山上的鲜花。如果要搞下它,勤奋才能是攀登的绳索。 10、挫折其实就是迈向成功所应缴的学费。 11、当你再也没有什么可以失去的时候,就是你开始得到的时候。 12、经营自己的长处,能使你人生增值;经营你的短处,能使你人生贬值。 13、做事不怕难,自无难人事。 14、最困难之时,就是我们离成功不远之日。 15、有山就有路,有河就能渡。 16、欲望以提升热忱,毅力以磨平高山。 17、只要路是对的,就不怕路远。 18、只要脊梁不弯,就没有扛不起的山。 19、战胜困难,走出困境,成功就会属于你。 20、在前进的路上,主动搬开别人脚下的绊脚石,有时往往也是为自己铺路。 21、只要有信心,人永远不会挫败。 22、只有不快的斧,没有劈不开的柴。 23、勇士搏出惊涛骇流而不沉沦,懦夫在风平浪静也会溺水。 24、有困难是坏事也是好事,困难会逼着人想办法,困难环境能锻炼出人才来。 25、有了信心,就是成功的开始。 26、只有创造,才是真正的享受,只有拚搏,才是充实的生活。 27、最困难的时候,也就是离成功不远的时候。 28、一个人最大的敌人是自己,没有完不成的任务,只有失去信心的自己。 29、最可怕的敌人,就是没有坚强的信念。 30、种子牢记着雨滴献身的叮嘱,增强了冒尖的勇气。 31、中国人学美国人容易,中国人学中国人难。 32、志在峰巅的攀登者,不会陶醉在沿途的某个脚印之中。 33、幸运并非没有恐惧和烦恼;厄运并非没有安慰与希望。 34、学习要加,骄傲要减,机会要乘,懒惰要除。 35、眼睛可以近视,目光不能短浅。 36、要想捉大鱼,不能怕水深。要想摘玫瑰,就得不怕刺。 37、一个人幸运的前提,其实是他有能力改变自己。 38、我要扼住命运的咽喉。 39、雾气弥漫的清晨,并不意味着是一个阴霾的白天。 40、喜欢就该珍惜,珍惜就别放弃。 41、下定决心,不怕牺牲,排除万难,去争取胜利。 42、小苗不经风雨长不成大树,人不经困难难以成材。 43、生命犹如一片绿叶,随着时间的流逝,慢慢变的枯黄,但他的叶脉还是那么清晰可见。 44、世上无难事,只要肯登攀。 45、顺境中的好运,为人们所希冀;逆境中的好运,则为人们所惊奇。 46、梯子的梯阶从来不是用来搁脚的,它只是让人们的脚放上一段时间,以便让别一只脚能够再往上登。 47、天空虽有乌云,但乌云的上面,永远会有太阳在照耀。 48、天下无难事,只怕有心人。 49、人允许一个陌生人的发迹,却不能容忍一个身边人的晋升。因为同一层次的人之间存在着对比利益的冲突,而与陌生人不存在这方面的问题。 50、人在逆境里比在顾境里更能坚强不屈,遭厄运时比交好运时更容易保全身心。 告诫人的话语 1、一个记者,最怕的事情,是你在工作,卖命地工作,但你是在为你的制片人,奖金,虚荣心,甚至为你的恐惧…而工作。而丢失了最简单的东西。 2、手莫伸,伸手必被捉。D与人民在监督,万目睽睽难逃脱。汝言惧捉手不伸,他道不伸能自觉。其实想伸不敢伸,人民咫尺手自缩。 3、自卑情绪会产生两种不同的效果。鞭策你成为前行的动力,或者拖住你成为前行的累赘,让你黯然失色,最终迷失自己。 4、切不可教条主义的按本宣科。 5、权力产生腐败,绝对权力产生绝对腐败。 6、当知器满则倾,须知物极必反。 7、凡人立于天地间,遇事必当之以“诚”,而后人始信其为人,乃得有为人之价值。尚诈术者,何能立名建业。 8、诚信过了头,就成了迂腐; 机敏过了头,就成了圆滑; 勇敢过了头,就成了鲁莽; 持重过了头,就成了呆板; 施舍过了头,就成了乞丐; 贪婪过了头,就成了腐败; 执着过了头,就缺少心眼; 善良过了头,就成了软弱; 专横过了头,就成了霸道;做事过了头,就走上绝路。 9、说大话,说假话,一害自己,二害国家。 10、一个人一旦失信于人一次,别人下次再也不愿意和他交往或发生贸易往来了。别人宁愿去找信用可靠的人,也不愿意再找他,因为他的不守信用可能会生出许多麻烦来。 11、心志相孚为莫逆,老幼相交曰忘年。 12、治国无法则必乱。 13、生命第一,做事为本。沉溺于琐事或感情纠葛的人,一事无成。 14、人类是不能违背历史的,如果勉强去改变,是会有报应的。 15、轻率的玩弄恋爱正如玩火一样,随时有的危险。如果说恋爱是甜美的酒浆,但随便乱喝,也会变成烈性的毒汁。 16、艺人不要随便转型,很容易转“歪”掉,如果觉得已经没有发展,那就直接退出演艺圈,因为观众已经对你厌烦了。 17、得意时应善待他人,因为你失意时会需要他们。 18、盛满易为灾,谦冲恒受福。 19、四海五湖之八,结义拜为兄弟,不能随便,一定要志同道合,始终如一的,才谈得上。 20、昨天的成功经验与辉煌可能是明天成功的阻碍。 21、食不得过饱,过饱则肠胃必伤;眠不得过久,过久则精气耗散。 22、好的时候不要看得太好,坏的时候不要看得太坏。最重要的是要有远见,杀鸡取卵的方式是短视的行为。 23、如果要给他什么东西他才对你好,不给他东西就对你不好,这样的朋友千万别交。 24、有恒心,然后有恒业。人而无恒,则有事时犯一乱字,无事时犯一偷字。 25、所有欺骗中,自欺是最为严重的。 26、凡是敌人反对的,我们就要拥护;凡是敌人拥护的,我们就要反对。 27、没有文化的军队是愚蠢的军队,而愚蠢的军队是不能战胜敌人的! 28、早荣亦早枯,易得还易失。 29、游手好闲会使人心智生锈。 30、人生最好是一座永远也爬不到顶的山,不过,还是先做好走下坡路的准备吧。 31、幸灾不仁,乘危不武。 32、做事不考虑后果,就会受到惩罚,别人没法代替承担。 33、居高位者易骄,处佚乐者易侈。 34、漫无目的的生活,就像出海航行而没有指南针。 35、有些事看起来无关紧要,但其实正是你的要害所在,如果你忽视了它,那么最终倒霉的就是你自己。 36、年轻是本钱,但不努力就不值钱。 37、一念天堂,一念地狱,快乐本由心决定,一如空气存在,用力呼吸才会发觉,但用力呼吸到喘息,便生了害怕失去之心,执著于快乐,便不快乐。 38、想哭就哭,想笑就笑,不要因为世界虚伪,你也变的虚伪了。 39、自私的爱永远是零结果。 40、不要走得太急,有些东西总要经历,明天会更好。有些事情要自己走过,走错了就当是一个经历,记得以后不要重复。 41、绝不能为了成功而不择手段,刻薄成家,理无久享。 42、如果我们当官的自己先富起来了,而不去管那些穷人,这就违背了我们当年革命的宗旨,人民就不会再拥护我们,我们自己就要垮台的!就是我们富足了,为官之人也要注意节俭,节俭养性,奢侈丧德,这是封建皇帝朱元璋都明白的道理。 43、有时候明明已经认识到了错误,但很多人并不会马上改正,直到丧失了改正的机会,悔之晚矣! 44、人若志趣不远,心不在焉,虽学无成。 45、学未至而好语变者,必知终有患。盖变不可轻议,若骤然语变,则知操术已不正。 46、事情是做出来的,不是说出来的,也不是等出来的。守株待兔,是一种无结果的行为,坐以待毙,就是等死。 47、没有一个人的生活道路是笔直的,没有岔道的。有些岔道口,譬如政治上的岔道口,事业上的岔道口,个人生活上的岔道口,你走错一步,可以影响人生的一个时期,也可以影响一生。 48、对人诚恳,做事负责,多结善缘,自然多得人的帮助。淡泊明志,随遇而安,不作非分之想,心境安泰,必少许多失意之苦。 49、贪婪是最真实的贫穷,满足是最真实的财富。 50、不要把宽容当作软弱,不要把帮助当成责任,不要把同情当作亏欠。 51、沾沾自喜和浮夸肤浅,只要使一个人陶醉在自己的影子里,惹人生厌生畏,自己却再不能吸收任何新东西,再没有长进矣。 52、君子不必避他人之言,以为太柔太弱。 53、人人有利欲之心,与学者正相背驰,故学者要寡欲。 54、生命太过短暂,今天放弃了明天不一定能得到。 55、自信与骄傲有异;自信者常沉着,而骄傲者常浮扬。 56、礼即天地之德也,如颜子者,方勉勉于非礼勿言,非礼勿动。勉勉者,勉勉以成性也。 57、足柴足米,无忧无虑,早完官粮,不惊不辱。不欠人债而起利,不入典当之门庭,只消清茶淡饭,便可益寿延年。 58、善意的批评听起来很不爽但都心怀好意,虚伪的奉承背后则总是隐藏着卑鄙的阴谋! 59、学者行礼时,人不过以为迂。彼以为迂,在我乃是径捷,此则从吾所好。 60、居仁由义,自然心和体正。学必如圣人而后已,以为知人而不知天,求为贤人而不求为圣人,此秦汉以来学者之大弊也。 61、不要因为走得太远,忘了我们为什么出发。 62、百年寿限不准有,百年计划不可无。 63、一个不知道检讨和怀疑的民族是没希望的。 64、我跟你说,这是个残酷的社会。你别以为有真本事怎麽着,外表更重要。女生一定要爱自己。你就记住:胖子没前(钱)途!你再有本事心地再好,也是只是个好胖子。 65、路是走出来的,我从不退缩。我常告诉人:碰了墙,要么想办法翻过去,要么推倒墙,要么撞死。退缩只能削减做事的锐气,永远得不到经验,翻过去才能看到墙那边的风景;推倒是勇士,撞死是烈士。 66、为善则流芳百世,为恶则遗臭万年。 67、九牛一毫莫自夸,骄傲自满必翻车。历览古今多少事,成由谦逊败由奢。 68、形式主义害死人。 69、静者,身不可过劳,心不可轻动也。 70、心无片刻宁,神无片刻安,胶扰不休,故足以促寿也。 71、爱情不是追来的。如果你死皮赖脸追求了很久,她却无动于衷,那么哥们,放下吧。有时,咱男人的尊严比一个女人更重要。 72、居仁由义,自然心和而体正。 73、我们的历史太长、权谋太深、兵法太多、黑箱太大、内幕太厚、口舌太贪、眼光太杂、预计太险,因此,对一切都‘构思过度"。 74、世间万物有盛衰,人生安得常少年。 75、坏人固然要防备,但坏人毕竟是少数,人不能因噎废食,不能为了防备极少数坏人连朋友也拒之门外。更重要的是,为了防备坏人的猜疑,算计别人,必然会使自己成为孤家寡人,既没有了朋友,也失去了事业上的合作者,最终只能落个失败的下场。 76、学者欲其进,须钦其事,钦其事则有立!有立则有成;未有不钦而能立;不立则安可望有成! 77、得意忘形的结局往往就是乐极生悲!这是千古不变的真理! 78、总是为担心犯错误而犹豫,永远无法实现自己的想法。 79、适应环境就要委屈自己,甚至要伪装。小环境不适应,将来社会大环境就无法生存。大丈夫能曲能伸,想想韩信。达到目的才是根本,耽误自己不是聪明人。 80、与其到头来收拾残局,甚至做成蚀本生意,倒不如当时理智克制一些。 告诫的近义词_告诫造句 告诫[go ji] 词语解释:是警告劝诫的意思,例如爱默生的名言人类的全部历史都告诫有智慧的人,不要笃信时运,而应坚信思想。 近义词:警告、劝诫、劝告、规劝 反义词:听任 告诫造句 1、老师告诫王林不要违犯课堂纪律。 2、老师多次告诫你不要这样去做,你就是不听。 3、妈妈常常告诫我不要玩游戏 4、这次的实践活动告诫我们一定要保护环境 5、他告诫那些疯狂的足球迷们改变那种捣蛋的做法。 6、妈妈常告诫我:平时要多读书。 7、人类的全部历史都告诫有智慧的人,不要笃信时运,而应坚信思想。 8、执着是悬崖上的小草,告诫我们要有顽强的意志 9、我告诫自己:一定努力学习,争取考上大学,来回报父母的养育之恩。 10、老师告诫我们:一定要全面复习,争取期末考出好成绩。 11、分手时,他告诫我,切不可把今晚的谈话说出去。 12、我已多次告诫过你不要做那件事。 13、人们告诫他不要做坏事。 14、这件事告诫我们以后做事要循规蹈矩。 15、这次实践活动告诫我们不要以旧眼光看待事物。 16、警察告诫围观者,不要靠近燃烧的建物。 17、我随时告诫自己:一定要刻苦学习,争取当个优秀的学生。 18、医生告诫我们不要吸烟。2023-06-13 00:51:011
告诫的词语告诫的词语是什么
告诫的词语有:不可告人,三求四告,不敢告劳。告诫的词语有:诫莫若豫,行词告状,死告活央。2:结构是、告(上下结构)诫(左右结构)。3:拼音是、gàojiè。4:词性是、动词。5:注音是、ㄍㄠ_ㄐ一ㄝ_。告诫的具体解释是什么呢,我们通过以下几个方面为您介绍:一、词语解释【点此查看计划详细内容】告诫gàojiè。(1)也作“告戒”。(2)规劝某人勿做某事。(3)教诲劝戒。二、引证解释⒈见“告戒”。三、国语词典申告劝诫。如:「张生品性不端,老师特予以告诫一番。」也作「告戒」、「诰诫」。四、网络解释告诫告诫,指警告劝诫,如:爱默生的名言—-人类的全部历史都告诫有智慧的人,不要笃信时运,而应坚信思想。关于告诫的近义词规劝劝诫申饬劝告警告警戒关于告诫的反义词听任关于告诫的诗词《悼亡·告诫篷窗知不知》关于告诫的诗句告诫篷窗知不知来此劝农申告诫来此劝农申告诫关于告诫的单词lessonwarningexhortwarn关于告诫的成语谆谆诰诫小惩大诫行词告状断织之诫死告活央谆谆告诫差可告慰自告奋勇关于告诫的造句1、它谆谆告诫我们必须培养正气,以身示范。2、父亲常常告诫我们言多必失,今天看见小李招来了麻烦,才知老人家的话是很有道理的。3、妈妈语重心长的告诫,却被我不耐烦的打断了。4、妈妈时常告诫我,不管做任何事情都要尽力去做,力争做到最好。5、父亲告诫儿子说,你血气方刚,凡事要忍耐,切勿跟人处处冲突。点此查看更多关于告诫的详细信息2023-06-13 00:50:521
利用外貌描写人物特点,性格作文500字
。。。。。??。。??。。。??2023-06-13 00:50:382
勃然大怒、安然无恙、告诫这三个造句
如果你选上面那个家伙的答案而不选我的,我会勃然大怒,我不敢保证明天你还能安然无恙地在网上闲逛,这不是在告诫你,而是恐吓,知道吗???2023-06-13 00:50:321
人物外貌描写作文400字
把竹笋从土里长出来了写成拟人句2023-06-13 00:50:226
告诫是什么意思解释
解释:规劝某人勿做某事拼音:gào jiè注音:ㄍㄠˋ ㄐ一ㄝˋ词性:动词结构:告(上下结构) 诫(左右结构)词语造句:1、常言所说“知足不辱”包含了颇深的人生哲理,它告诫人们不能有非分的贪心,贪心容易招来祸患。2、它谆谆告诫我们必须培养正气,以身示范。3、我们应该牢记老师对我们的谆谆告诫。4、父亲告诫儿子说,你血气方刚,凡事要忍耐,切勿跟人处处冲突。5、妈妈语重心长的告诫,却被我不耐烦的打断了。6、老师常常告诫我们,骄傲使人落后。7、妈妈时常告诫我,不管做任何事情都要尽力去做,力争做到最好。8、校长谆谆告诫我们,要继续保持艰苦奋斗的作风。9、父母的谆谆告诫通常被孩子们当做生活的指南。10、父亲常常告诫我们言多必失,今天看见小李招来了麻烦,才知老人家的话是很有道理的。2023-06-13 00:50:191
jmeter 参数中怎么嵌参数
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。2023-06-13 00:50:131
告诫的意思告诫的意思是什么
告诫的词语解释是:告诫gàojiè。(1)也作“告戒”。(2)规劝某人勿做某事。(3)教诲劝戒。告诫的词语解释是:告诫gàojiè。(1)也作“告戒”。(2)规劝某人勿做某事。(3)教诲劝戒。词性是:动词。结构是:告(上下结构)诫(左右结构)。拼音是:gàojiè。注音是:ㄍㄠ_ㄐ一ㄝ_。告诫的具体解释是什么呢,我们通过以下几个方面为您介绍:一、引证解释【点此查看计划详细内容】⒈见“告戒”。二、国语词典申告劝诫。如:「张生品性不端,老师特予以告诫一番。」也作「告戒」、「诰诫」。三、网络解释告诫告诫,指警告劝诫,如:爱默生的名言—-人类的全部历史都告诫有智慧的人,不要笃信时运,而应坚信思想。关于告诫的近义词劝告警戒劝诫规劝警告申饬关于告诫的反义词听任关于告诫的诗词《悼亡·告诫篷窗知不知》关于告诫的诗句来此劝农申告诫来此劝农申告诫告诫篷窗知不知关于告诫的单词exhortwarningwarnlesson关于告诫的成语谆谆诰诫断织之诫行词告状自告奋勇小惩大诫谆谆告诫死告活央差可告慰关于告诫的词语无头告示三求四告告贷无门忠告善道差可告慰自告奋勇不敢告劳不可告人行词告状小惩大诫关于告诫的造句1、它谆谆告诫我们必须培养正气,以身示范。2、校长谆谆告诫我们,要继续保持艰苦奋斗的作风。3、妈妈语重心长的告诫,却被我不耐烦的打断了。4、常言所说“知足不辱”包含了颇深的人生哲理,它告诫人们不能有非分的贪心,贪心容易招来祸患。5、父亲常常告诫我们言多必失,今天看见小李招来了麻烦,才知老人家的话是很有道理的。点此查看更多关于告诫的详细信息2023-06-13 00:50:121
描写人物的作文400字五年级10篇
1.描写人物的作文400字五年级 我弟弟是个小机灵鬼,他呀,总是趁我不注意,哇的一声吓的我半死。 记得在一个夏天,妹妹、弟弟还有我去桥头的丰应公园去游泳,那里真漂亮。特别是我们游泳隔十米米多远的荷花,那阵清香想我们扑鼻而来,引来了许多的小蝴蝶,真是“不看吓一跳呀”! 我最喜欢是泡温泉了,我恨不得去泡温泉,但是那里不给小孩子去,所以我们只能在游泳池了默默无闻。不久,游泳池里加了许多小朋友。我想到了一个好主意,玩抓人! 弟弟可赖了,抓到他他却说:是哥哥弄错了。我没办法,只能边抓边想,经过了我的思想,终于想到了一个好妙计。我趁弟弟不注意,用最快的速度冲到弟弟的旁边,可弟弟还在东张西望。“嗖”哈哈,弟弟的三角裤给我抓掉了,这时,全部人都说原来是弟弟赖毛。 弟弟故意游到爸爸旁边说:哥哥欺负我,啊?怎么一个好办法却给自己带上这么大的一个的麻烦啊? 这时弟弟偷偷到角落那边偷笑,我却在那儿被人挨骂,哎,一个好好的办法,却给自己带上麻烦了。 你看我的弟弟是不是很坏啊? 2.描写人物的作文400字五年级 我们班的陈高翔是个两面派,上课时,轻声细语,像个女孩子,下课时,刚刚形成了鲜明的对比像一条 龙一样活泼。陈高翔外号“大白象”高高的个子,水灵灵的眼睛前有一副镜框,樱桃小嘴,还有一双飞毛腿。 “大白象”活动起来像一条 龙。一下课,就往操场跑。他的跳力很高,抢篮板是他的强项,像个猴子,轻松一蹦,球于是就在他的手中停留,当跟别人抢球时,他的手伸向别人的怀里,使劲地往外拿,力大无穷,对手只好放弃,不敢拼搏,因为被他的气势所压倒。陈高翔不仅球打得好,而且跑步也很快。运动会可是他大显身手的时候,跑起步来像一匹受惊的野马,冲向终点,对手只好甘拜下风。100米、200、垒球等等,他一一夺冠,真是个体育奇童。 “大白象”下课是一条 龙,上课可是一条虫了,无精打采。如果老师的目光转移到他的身上,他会用小黄帽遮住眼睛,不敢看老师。一叫到陈高翔这个名字,他回战战兢兢地站起来,回答的声音那就更轻了,当老师用严肃的表情批评陈高翔是,他的脸像条变色龙,时而青,时而红,时而有发紫,真是千奇百怪。 我们班的陈高翔是个当之无愧的“大白象”,他的一举一动,一言一行,都值得我们关注。 3.描写人物的作文400字五年级 提起小书虫,我就要推荐我的朋友—李想了。 你看,她长着一双圆溜溜的眼睛,小小的鼻子,上面还架着副眼镜,像一位知识渊博的博士。一看,就知道她是一个名副其实的小书虫。 一次大课间活动结束,李想早早的来到教室。我回来时,已经看到她在座位上了,正拿着一本书,钻钻课桌肚里看。很快,上课铃响了,这节是数学课。我看她课前准备也没有做好,就赶紧催她:“李想,你课前准备也没有做好,就不怕老师批评吗?”她一声不吭,像耳聋了似的,完全沉浸在了书的海洋里。我见她不吭声,便再次大喊。这下才把她“揪”了出来。“啊?”她不知所措。唉,这个小书虫,上课了也不知道。我只好把事情来龙去脉讲给她听,这下她才明白,上课了。幸好叶老师来的较晚,否则非狠狠的批评她不可。 还有一次的体活课,要求全班同学全部参加。李想还是一直在教室里看书,一直到下课铃响,都没有来参加活动。后来,叶老师知道后,就批评了她。看来,看书也要安排在恰当的时间,否则会耽误其他事情。 这就是我的好朋友“小书虫”—李想。 4.描写人物的作文400字五年级 我的妈妈在我眼里最漂亮。她中等个,虽然经常简单地扎着一个马尾辫,但她的嘴巴小小的,鼻子不高不低,眼睛黑黑亮亮的,看上去很有神。 妈妈很关心我。每天早晨当我还在睡梦中,妈妈就已经起床为我准备早饭了。我不爱吃蔬菜,妈妈就把菜切的很碎给我包饺子、烙饼。有一次,天气非常闷热,我们正在吃饭的时候突然停电了,我热得满头大汗,也没了食欲,妈妈赶快找来扇子不停地给我扇着,就为了让我多吃一口饭。 妈妈不但关心我的生活,还关心我的学习。当我在学习中遇到难题的时候,妈妈总是先让我仔细地读两遍题,然后在帮我分析这道题应该怎么做,从哪里入手,教我一些解题方法。在每次考试前妈妈还会帮助我复习,教我复习方法。我的学习一直在班里保持地位,跟妈妈的辛勤培育是分不开的。 我很高兴我和妈妈不仅像母女,有时候更像好朋友。我们会一起玩游戏,比赛跳绳、跑步等。有时候我会和妈妈聊一聊学校生活中的趣事,或一些我不能理解的现象。这时候,妈妈就像朋友那样倾听我说话,为我讲授一些为人处事的道理。 5.描写人物的作文400字五年级 “春蚕到死丝方尽,蜡炬成灰泪始干”这句话就是用来赞美老师的。老师是土壤,把知识化作养分,传授给我们;老师是蜡烛,虽然很微弱,但足以照亮我们前进的道路。 在我们的身边,有这么一个老师,她宁愿多吃一点苦,少睡一会觉,每天早早地来到学校管理我们这个班。她在我们这些学生上花的心思,比在他儿子身上花的都多。他就是我们班的科学老师及班主任——陶老师。 陶老师曾经把正在发烧的儿子放在家,硬是来到学校给我们上课,还摆出一副若无其事的样子,我们当时真以为什么事都没发生…… 陶老师和哦我们同甘共苦,特别是期末时,我们学生晚上写作业至少也要到10点多,而陶老师就一个人批着我们27个人的作业,加上洗衣服等家里的事,经常都是深夜才睡觉啊!又一次,学校举行了田径运动会,班里每个人都要参加,那时天气也非常的炎热,陶老师就二话不说买回来一大堆的冰淇淋和一个大西瓜,给我们吃。 6.描写人物的作文400字五年级 我叫王钰,今年9岁了,钰是珍宝的意思。是我爸爸给我起的名字。他把我看成了稀世宝贝。 我的肤色很黑,我的脸型是圆脸,我的眉毛长长的,我爱穿运动服。我的爱好是打乒乓球,乒乓球打但不得不说,经过这次,陈雯雯的身子对我来说,更有诱惑力了,那是多么漂亮,发育多么完美身子啊,得可好了,在锦州得了第6名呢。我最爱吃肉块,豆角,大白菜 我的梦想是想成为像李云龙那样的英雄。我的优点是数学学得好,每一次老师出数学题我都答100分。 我是一不然她早就把我偷看她的事情,告诉学校了!现在就算我冲进去,把陈雯雯给那样了,依照陈雯雯的性子,也有很大概率不会举报我!!!陈雯雯还是和以前一样低着头快步走来,身上穿的比以前要厚了很多,向澡堂走来时,也是不停的看着四周,小心翼翼的走到门口,她小脸羞红,个淘气的孩子,我把我家的碗打碎了,我还把我的遥控飞机飞到了房子上。有天,我去上学一不小心把桌子弄坏了,妈妈说:你太淘气了。这也算是我的一个缺点吧。 7.描写人物的作文400字五年级 如果有人问我:“你最敬佩的人是谁?”我会不假思索地说:“那当然是我们的班长——陈禹燊。” 陈禹燊个子和我差不多,一米五左右,浓浓的眉毛下面一双黑珍珠似的眼睛充满了智慧。 有一天,我和妈妈去外婆家,回来的时候,落下了许多课程。陈禹燊知道这事以后,当天吃过晚饭就来到我家帮我补习,我遇到不会的题,他就耐心地为我讲解,一遍不会,就给我讲两遍,直到我弄懂为止。当遇到一道附加题时,他被难住了,算了很久都没有算出来,我一看时间已经九点多了,我对陈禹燊说:“时间不早了,你还是先回去吧!”可是,陈禹燊说:“我们怎么能被一个小小的问题难倒呢?而且,我们做事情不能半途而废啊!”接着,陈禹燊又在草稿本上算了起来,过了很久,这道题终于被陈禹燊算出来了,他又一遍一遍地给我讲解,直到我完全掌握为止,当他要回家的时候,已经十点多了。 陈禹燊不仅爱帮助人,还是一个学习认真的同学。他上课的时候,总是积极地回答问题,认真听讲,他做作业的时候,总是细心地完成。每次考试,他的成绩都是在班上数一数二的。如果谁学习上遇到了什么难题,找他解决准没错。 陈禹燊不管在生活还是学习上,都是我学习的好榜样,他是我最敬佩的人。 8.描写人物的作文400字五年级 我有一个表哥叫钱祚阳,十分会打“小算盘”。 一天,我与他去看电影。因为家里离太平洋电影 院比较远,所以我们想坐车去。可坐出租车要五元,对于我们来说太贵了。表哥就说:“咱们就坐公交去吧,每人才五毛!”我们来到三路车的站台等啊等啊,十几分过去了可三路车还没来。眼看电影就要开始了,我着急地说:“车到现在还不来,我们就要看不上了!”这时表哥一挥手说:“那我们就坐11路吧!一分钱也不花!”我一听呆了,还有十一路?这时看见表哥飞快地向电影 院跑去,我也一溜儿烟跟着跑了。 等我们一路跑到电影 院还有三分钟电影就开演了。我说:“我买爆米花,你买可乐。”我想:一桶爆米花10元,两瓶可乐12元,这次我一定要让他多出点血。于是我们就分头行动,可我的爆米花买好了还不见表哥的身影,我只好在门口等他,这时只见他汗流浃背地冲了进来,一脸得意地说:“里面的东西太贵了,我到外面的小卖部里买了两瓶可乐才六块钱!嘿嘿!”我心想:可真是一个小气的“钱算盘”。 电影看完我们该回家了。我想这次该坐出租了吧!一定要让他掏钱。可车刚到小区门口,他一拉开车门就跑了,我大叫道:“你还没付钱呢!”只见他一转身满脸无奈地说:“我可没钱了。”说完把口袋掏了个兜朝天一插,然后摊开双手。唉!没办法,还是我掏钱吧!可就在我掏钱的时候,一转脸看见了表哥*诈的笑容。我心里真是恨死他了——这个“钱算盘”! 这就是我的表哥,一个和精打细算的哥哥。 9.描写人物的作文400字五年级 我的爸爸是一位“逗豆”,家中俗称“红鼻子”(小丑),每天都能让家人大笑,一天二十四小时,足足有十个小时在当小丑儿。仿佛是从马戏团里跑出来的。 节目一:爆笑回答 和我的爸爸交谈,即是一件快乐的事,又是一件麻烦的事。这不,晚上爸爸要去饭店吃饭,妈妈问他:“你去哪吃饭?”“外面!”老爸毫不犹豫的说,“外面在哪儿?”“地球上!”“谁不知道饭店在地球上,难不成在太阳上啊!”……妈妈先是生气的鼻子要喷火,然后一想“扑哧”笑了起来,我和爷爷奶奶看了爸爸还是一副若无奇事的样子也都笑了起来。 节目二:老爸说话太奇葩 我们家的“小丑”爸爸来自宝应,所以口音,我们好笑、头疼。记得,我的爸爸在一次电话里竟这样说。“喂!……气球资兰?在哪儿?哦,我马上去,是测速的气球资兰是吧!哦……”爸爸开着车带着我赶到了现场,一路上我在想:气球资兰是什么?饭店,菜,地点?……我再也忍不住了,问了一句:“爸爸,什么气球资兰?”“就是气球自己烧起来了”“气球还会自燃?里面是装了氢气了吧?”“什么?我们开 的这个汽车自燃。”“哦!”……你说我是笑还是不笑? 老爸还有一项最有趣---就是说英语,听听,又开始了。“雷得森,煎特门,威啦福特。”(女士们,男士们,我们大笑吧!) 10.描写人物的作文400字五年级 我的外公是一个很和蔼可亲的人。虽然他平时说话声音很响亮,经常想到什么说什么,常常会让人误会他,但是,对于我来说,我的外公是天下的人。 从我出生后,我的外公就把我当成掌上明珠似的捧在手心。平时总是担心我这个,担心我那个。只要我想要什么,想吃什么,外公都会想方设法地给我弄来。由于妈妈下班迟,每天都是外公来接我放学。他每天都准时在学校大门口等我放学,风雨无阻。 记得有一次放学前,外面突然下起了大雨。哗啦啦的雨水像从天下倒下来似的下个不停而且下得很急很猛。我看着窗外,担心外公一定赶不来接我放学了。结果放学后,我站在走廊上向学校大门口一看。啊,我看到我敬爱的外公了。他撑着一把黑色的大伞顶着风雨站在学校大门口中。我的心一下子开心起来。我马上背起我的书包向楼下跑去。刚到一楼就看到外公已笑眯眯地站在一楼的走廊上等我呢。他接过我的书包,把我护在身前,打着伞向家的方向走去。到家后,我才发现,外公的大半个身子都淋湿了,而我身上都是干干的。看到这,我的心一下子酸涩了起来。外公,你对我无私的爱,等我长大了,我一定要好好回报你。2023-06-13 00:50:121
jmeter 控制台有summary,输出文件没有
没有问题的描述,没有问题截图,没有问题代码。没人能给你解决的。 学会提问题也是一门学问的。2023-06-13 00:49:542