技术干活
文章平均质量分 82
技术干活
云计算运维工程师
这个作者很懒,什么都没留下…
展开
-
linux搭建webapp实战
安装好nginx之后,进入配置目录,配置我们webapp的相关信息。下一步我们安装数据库,这里我选择免费的mysql数据库,同样的,我们先解压mysql安装包:tar xvf mysql-8.2.0.tar.xz,进入解压目录cd mysql-8.2.0/bin 执行mysql初始化服务:./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data;拟机后,双击打开是这样一个界面。原创 2023-01-19 20:56:37 · 924 阅读 · 0 评论 -
如何使用 awk 的 ‘next’ 命令
当输入行用$4 20 { print $0;但是这里有一个问题, 当第一个表达式用{ printf "%s/t%s/n", $0,"**";1.它用$4 20表达式检查每个输入行的第四列是否大于20,如果满足条件,显示出来。转载 2022-11-12 08:00:00 · 126 阅读 · 0 评论 -
如何使用 awk 的 ‘next’ 命令
当输入行用$4 20 { print $0;但是这里有一个问题, 当第一个表达式用{ printf "%s/t%s/n", $0,"**";1.它用$4 20表达式检查每个输入行的第四列是否大于20,如果满足条件,显示出来。转载 2022-11-11 21:20:06 · 156 阅读 · 0 评论 -
如何使用 awk 的 ‘next’ 命令
当输入行用$4 20 { print $0;但是这里有一个问题, 当第一个表达式用{ printf "%s/t%s/n", $0,"**";1.它用$4 20表达式检查每个输入行的第四列是否大于20,如果满足条件,显示出来。转载 2022-11-11 21:18:33 · 273 阅读 · 0 评论 -
Linux系统中Shell脚本编写的一点心得
作为一个软件测试人员, 经常会跟开发打交道,产品开发阶段,他们经常会提供一些python,shell等脚本作为bug的临时解决方案以方便测试继续进行。最近接触的shell脚本比较频繁,感觉自己的基础有些薄弱,就自学了下,顺便把获取的知识点总结下,希望也能对需要的人有所帮助。提到Shell脚本,必不可少的要知道Shell终端解释器,就像java语言,要有java编译器,python语言,要有pycharm等文本编译器一样,它的作用就是人和计算机之间的翻译官,让彼此可以相互交流的工具。作为一门语言,必不原创 2022-05-19 21:27:12 · 1358 阅读 · 0 评论 -
一种基于内存的文件系统tmpfs
大家可能有遇到类似的场景,想要对机器进行压测模拟 OOM 的场景,但是无奈机器的规格实在太高,若用代码去实现,大家可以想象一下如何实现?那么有没有好有的办法,不用写代码,用几个简单的命令直接就可以向机器申请内存呢?或者更极端点,直接把机器的内存给榨干了。。 若你经常使用linux,你会发现 df -Th 后,一定会有 tmpfs 类型的文件系统挂载在 /dev/shm 下面,虽然你大概率不会关注到它。$df-ThFilesystemTypeSizeUsedA...转载 2021-12-22 20:27:51 · 426 阅读 · 0 评论 -
Kali Linux 2021.3 的新改进
KaliLinux2021.3 带来了一些重要的功能改进以及一些新工具。此外还有一个惊喜,他们还宣布正在开发他们的第一个 NetHunter 智能手表。 Kali Linux 是 用于渗透测试的最佳 Linux 发行版 之一。它是基于 Debian 的,但它可能不适合替代你的成熟的桌面操作系统。最新的 2021.3 版本带来了一些重要的功能添加和改进。让我们来看看它们。有何新变化?OpenSSL 兼容性重新配置了OpenSSL,以扩大 Kali 可以连接的服务。因此,老式过期的...转载 2021-09-27 08:53:03 · 839 阅读 · 0 评论 -
容器的四大基础技术
在本文中,我研究了容器是如何在一些特殊的Linux技术基础上实现的,这其中包括命名空间和控制组。 在本文中,我研究了容器是如何在一些特殊的 Linux 技术基础上实现的,这其中包括命名空间和控制组。这些 Linux 技术构成了在系统上构建和运行容器进程的基础:命名空间 控制组(cgroups) Seccomp SELinux1. 命名空间命名空间namespace 为容器提供了一个隔离层,给容器提供了一个看起来是独占的 Linux 文件系统的视图。这就限制了进程能访问的内..转载 2021-09-26 08:31:15 · 728 阅读 · 0 评论 -
使用Nginx搭建前端静态服务器+文件服务器
大家可能被虚拟主机不太了解,那我们的解释一下,虚拟主机指在一台物理主机服务器上划分出多个磁盘空间,每个磁盘空间都是一个虚拟主机,每台虚拟主机都可以对外提供Web服务,并且互不干扰。 一、Nginx的虚拟主机介绍大家可能被虚拟主机不太了解,那我们的解释一下,虚拟主机指在一台物理主机服务器上划分出多个磁盘空间,每个磁盘空间都是一个虚拟主机,每台虚拟主机都可以对外提供Web服务,并且互不干扰。就类似我们本地虚拟机,我们可以在window系统上面安装一个虚拟机,在虚拟机里面安装很多个系统。那这样的话转载 2021-09-25 08:04:47 · 511 阅读 · 0 评论 -
CentOS 7快速安装Mongodb详解
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。Mongodb目前应用也比较多,维护也相对简单。 环境介绍操作系统:CentOS7下载、安装在mongodb的官网可以直接下载到对应的rpm包,然后使用yum进行安装。yum-ylocalinstallmongodb-org-mongos-4.4.8-1.el7.x86_64.rpmmongodb-org-server-4.4.8-1.el7.x86_64.rpmmongodb-...转载 2021-09-24 08:29:33 · 198 阅读 · 0 评论 -
简述Linux目录结构和系统结构
提到 GNU/Linux系统的目录结构,不得不说一下FHS(Filesystem Hierarchy Standard,文件系统层次结构标准),正是这一标准的存在,详细的定义了类 Unix 操作系统中各种应用软件,管理工具,开发工具,脚本以及帮助文档的位置,让遵循该标准的各种 GNU/Linux 发行版目录结构几乎都是一致的。 在 FHS 中,根据文件的共享性和文件是否要求被修改的特点,其将文件划分为可共享文件/不可共享文件以及可变数据文件/静态数据文件两大类。FHS 将不同属性的文件划归到不同的.转载 2021-09-23 08:28:34 · 125 阅读 · 0 评论 -
云原生安全的挑战与实践
基于容器和无服务器平台的云原生应用在正在快速地被全球的组织所部署。虽然说云原生应用会带来易延展性、无与伦比的韧性、以及快捷的开发速度,云原生应用同样会带来挑战。有多种保护云原生应用的方式,包括:安全左移、在函数和容器级别应用边界安全、贯彻最小角色和最低权限、保护应用依赖,以及安全共责。 云原生应用会有大量的可移动成分,并且基于那些短暂的架构组件。这就会给运营和维护产生难度;除此以外,自然还有安全隐患。云原生安全需要新的解决思路、策略和工具。这里,有五个可以帮助改善企业云原生安全的小建议。什么是云转载 2021-09-22 08:30:40 · 333 阅读 · 0 评论 -
其实Shell脚本可以更好
今天介绍使用的两个方法,提高脚本的可读性和健壮性,帮助写出更好的脚本。一、vim自动添加头部注释信息使用vim的自动命令(autocmd),在新建sh文件时添加头部的注释信息。在.vimrc中配置以后,使用vim操作文件的时候就会自动执行一些命令。在用户home目录下新建.vimrc文件,写入下面的内容,在使用vim新建.sh文件时就会执行函数 SetTitle(),将头部注释信息写入到新建的.sh文件,这在编写脚本时十分方便。最后一行的:autocmd BufNewFile * nor转载 2021-09-20 11:40:09 · 537 阅读 · 0 评论 -
elementary OS 6 评测!
这篇 elementary OS 6 的评测将为你呈现该系统在旧款测试设备上的表现。 elementary OS 的粉丝们焦急等待 elementary OS 6 Odin 发布已经将近两年了。如此焦急的原因,主要在于早期版本 elementary OS 5.1 的内核和软件包在 2021 年来说过于陈旧。而且,这一旧版本基于 Ubuntu 18.04 LTS 构建。因此,用户都急切地等待着基于 Ubuntu 20.04 LTS 的全新版本 —— 最重要的是,Ubutnu 20.04 LTS 已经发布一转载 2021-09-18 08:31:48 · 433 阅读 · 0 评论 -
简单介绍HTTP3
本文简单介绍了HTTP协议,以及介绍了HTTP的成长,不同HTTP解决的问题等方面,详细讲解了HTTP3,感兴趣的小伙伴一起来看看吧 简介很多小伙伴可能还沉浸在HTTP1.1的世界无法自拔,但是时代的洪流已经带领我们来到了HTTP3的世界了。是的,你在桥上看风景,而桥边的房子上有人正在看你。为了不被时代所抛弃,今天给大家讲解一下HTTP3的新特性。HTTP成长介绍HTTP的全名叫做超文本传输协议,是万维网所基于的应用层传输协议。最初的版本是HTTP 0.9,是在80年的后期产生的,后转载 2021-09-17 08:18:47 · 2043 阅读 · 1 评论 -
nginx+consul做动态负载均衡(docker)
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 1 consul1.1 consul简介Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件。 服务发现以及注册:当服务Producer 启动时,会将自己的Ip/host等信息通过发送请求告知 Consul,Consul 接收到 Producer 的注册信息后,每隔一段时间会向 Producer 发送一个健康检查的请求,检转载 2021-09-15 08:22:15 · 496 阅读 · 0 评论 -
sql server如何删除前1000行数据
近日有朋友问到,利用sql如何删除表格的前1000行数据,是否可以实现?所以下面这篇文章主要给大家介绍了关于sql server删除前1000行数据的相关资料,需要的朋友可以参考下 如果是oracle数据库管理软件,实现起来相对简单多了delete from 表名 where rownum<=1000;那sql server数据库管理软件呢?sql server里没有rownum功能,小编尝试用select top先查询看下结果集,select * from 表名;转载 2021-09-14 08:37:38 · 3033 阅读 · 0 评论 -
spring boot 不连接数据库启动
这篇文章主要介绍了spring boot 不连接数据库启动的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 spring boot 不连接数据库启动用spring boot 搭建的项目,在配置文件不连接数据库启动项目会报错。原因在于spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类,DataSourceAutoCo转载 2021-09-13 08:24:09 · 499 阅读 · 0 评论 -
面试数十家Linux运维工程师,总结了这些面试题
下面是一名资深Linux运维求职数十家公司总结的Linux运维面试精华,助力大家跳槽找个高薪好工作。 1、什么是运维?什么是游戏运维?1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术运维又包括很多种,有DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等等2)游戏运维又有分工,分为开发运维、应用运维(业务运维)和系统运维开发运维:是给应用运维开发运维工具和运维转载 2021-09-11 09:48:41 · 1604 阅读 · 0 评论 -
pytest接口测试之fixture传参数request
本文主要介绍了pytest接口测试之fixture传参数request的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 前言有的测试用例,需要依赖于某些特定的case才可以执行,比如登录获取到token,后面的请求都需要带着,为了确保在同一用户,必须带着和登录时获取的cookies。大部分的用例都会先登录,就需要把登录单独抽出来写个函数,其他用例全部调用这个登录函数就行,但是登录的账号不能写死。一、函数传参单独写个登录函数,传2个参数user和pa转载 2021-09-09 08:56:17 · 461 阅读 · 0 评论 -
手把手教你 Socket 通信(TCP/IP)
本文将给出完整 Socket 通信代码,在 eclipse 中亲测有效。在Android Studio中用Java开发也是一样的,只是把代码和控件搭配一下,注册监听就好。 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket 本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;转载 2021-09-08 08:28:36 · 829 阅读 · 0 评论 -
Vue+Openlayer中使用select选择要素
本文通过实例代码给大家介绍Vue+Openlayer中使用select选择要素,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧 效果图:实现代码:<template> <div id="map" ref="map" style="width: 100vw; height: 100vh"></div></template> <script>import "ol/ol.css";impo转载 2021-09-07 08:30:20 · 486 阅读 · 0 评论 -
对order by的理解
日常开发中,我们经常会使用到order by,亲爱的小伙伴,你是否知道order by 的工作原理呢?order by的优化思路是怎样的呢?使用order by有哪些注意的问题呢?本文将跟大家一起来学习,攻克order by~。 前言日常开发中,我们经常会使用到order by,亲爱的小伙伴,你是否知道order by 的工作原理呢?order by的优化思路是怎样的呢?使用order by有哪些注意的问题呢?本文将跟大家一起来学习,攻克order by~一个使用order by 的简单转载 2021-09-06 08:32:03 · 141 阅读 · 0 评论 -
在docker中haproxy的安装以及mysql的负载均衡配置
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案 1 什么是haproxyHAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的转载 2021-09-05 08:27:25 · 154 阅读 · 0 评论 -
带你玩玩转 MySQL 查询
许多人将数据库查询语句的调优视作哈利波特小说中某种神秘的“黑魔法”;使用错误的咒语,数据就会从宝贵的资源变成一堆糊状物。实际上,对关系数据库系统的查询调优是一项简单的工程,其遵循的规则或启发式方法很容易理解。 实际上,对关系数据库系统的查询调优是一项简单的工程,其遵循的规则或启发式方法很容易理解。查询优化器会翻译你发送给 MySQL 实例的查询指令,然后将这些启发式方法和优化器已知的数据信息结合使用,确定获取所请求数据的最佳方式。再读一下后面这半句:“优化器已知的数据信息。”查询优化器需要对数据所在转载 2021-09-04 11:52:15 · 91 阅读 · 0 评论 -
JavaScript字符串中URL的检测并转换为链接
有时,我们必须在 JavaScript 字符串中查找 URL。 在本文中,我们将了解如何在 JavaScript 字符串中查找 URL 并将它们转换为链接。我们可以创建自己的函数,使用正则表达式来查找 URL。例如,我们可以这样写:const urlify = (text) => { const urlRegex = /(https?:\/\/[^\s]+)/g; return text.replace(urlRegex, (url) => { ret转载 2021-09-03 08:48:41 · 1994 阅读 · 0 评论 -
Highcharts 环境配置介绍
Highcharts 是一个用纯JavaScript编写的一个图表库。Highcharts 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,Highcharts 免费提供给个人学习、个人网站和非商业用途使用。 本章节我们将为大家介绍如何在网页中使用 Highcharts。本教程将 Highcharts 与 jQuery 结合使用,所以在加载 Highcharts 前必须先加载 jQuery 库。如果你对 jQuery 不熟悉,可以参阅本站的jQuery 教程。安装 jQ转载 2021-09-02 07:51:10 · 207 阅读 · 0 评论 -
ECharts 交互组件概述
ECharts 提供了很多交互组件:例组件 legend、标题组件 title、视觉映射组件 visualMap、数据区域缩放组件 dataZoom、时间线组件 timeline。 接下来的内容我们将介绍如何使用数据区域缩放组件 dataZoom。dataZoomdataZoom 组件可以实现通过鼠标滚轮滚动,放大缩小图表的功能。默认情况下 dataZoom 控制 x 轴,即对 x 轴进行数据窗口缩放和数据窗口平移操作。实例option = { xAxis: {转载 2021-08-31 09:12:09 · 168 阅读 · 0 评论 -
docker初体验:docker部署wordpress博客系统
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。接下来为大家演示一下docker部署wordpress博客系统。 环境centos7安装docker移除旧版本docker[root@chaols ~]# sudo yum remove docker \> ..转载 2021-08-30 08:44:55 · 2053 阅读 · 2 评论 -
如何使用evilscan 扫描网络
Evilscan 是一个网络扫描器,它运行在 NodeJS 环境中。有许多种选项,允许用户扫描单个 IP 地址或一个范围的IP。它还允许用户选择扫描单个端口或一组端口。 环境Centos8npm(Node包管理器)安装从github中克隆该仓库,如果系统没有安装git和npm需要提前安装:[root@localhost ~]# yum -y install git npm[root@localhost ~]# git clone https://github.com/evilti转载 2021-08-29 08:04:17 · 160 阅读 · 0 评论 -
docker初体验:docker 自己定制镜像
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。接下来为大家演示一下docker部署wordpress博客系统。 环境centos7安装docker移除旧版本docker[root@chaols ~]# sudo yum remove docker \> ..转载 2021-08-28 12:08:25 · 113 阅读 · 0 评论 -
ECharts 样式设置介绍
ECharts 可以通过样式设置来改变图形元素或者文字的颜色、明暗、大小等。 颜色主题ECharts4 开始,除了默认主题外,内置了两套主题,分别为 light 和 dark。使用方式如下:实例var chart = echarts.init(dom, 'light'); 或者var chart = echarts.init(dom, 'dark');尝试一下 »另外,我们也可以在官方的 主题编辑器 选择自己喜欢的主题下载。目前主题下载提供了 JS 版本和 JSON转载 2021-08-27 08:44:46 · 436 阅读 · 0 评论 -
Python中非常有用的三个数据科学库
如果你从事数据科学研究有一段时间了,那么pandas, scikit-learn seaborn和matplotlib这些库你都应该非常的熟悉。 如果您想要扩展您的视野,学习一些更少见但同样有用的库。在本文中,我将向您展示一些不太为人所知的但是却非常好用的python库。imbalanced-learn如果你过去一直在构建一些有监督的机器学习模型,你就会知道目标变量中的类别不平衡可能是一个大问题。这是因为在少数类中没有足够的例子来让算法学习模式。一个解决方案是创建一些合成样本,通过使用例转载 2021-08-25 22:34:30 · 277 阅读 · 0 评论 -
ssl证书是由什么组成?ssl证书是什么?
互联网的发展给人们的生活提供了便利,当然大家需要对SSL证书进行一定的了解,现在很多的网站都安装了SSL证书,网站的通信协议是http它是明文传输的,但是给网站安装SSL证书之后,那么网站的信息传输就是https了,那么ssl的组成是什么?ssl是什么意思?大家一起了解一下吧。 SSL证书是数字证书SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。SSL 证书就是遵守 SSL协议 由受信任的数字证书颁发机构CA,在验证服务器身份后颁转载 2021-08-24 09:48:03 · 247 阅读 · 0 评论 -
分享一个让 Ping 的输出更简单易读方法
众所周知,ping命令可以用来检查目标主机是否可达。使用 ping命令的时候,会发送一个 ICMP Echo 请求,通过目标主机的响应与否来确定目标主机的状态。如果你经常使用 ping 命令,你可以尝试一下 prettyping。 Prettyping 只是将一个标准的 ping 工具增加了一层封装,在运行标准 ping 命令的同时添加了颜色和 unicode 字符解析输出,所以它的输出更漂亮紧凑、清晰易读。它是用 bash 和 awk 编写的自由开源工具,支持大部分类 Unix 操作系统,包括 G..转载 2021-08-22 09:01:06 · 186 阅读 · 0 评论 -
简述sed、grep和parted的速查表
下载 sed、grep和parted的速查表来整合新的流程到你的工作中。 Linux因其命令闻名,部分原因是 Linux 执行的几乎所有操作都可以从终端调用;另一部分原因是 Linux 是一个高度模块化的操作系统,它的工具被设计用于产生十分确定的结果,在非常了解一些命令后,你可以将这些命令进行奇妙的组合,产生有用的输出。Linux 的学习过程一半是学习命令,另一半是学习如何将这些命令连成有意思的组合。然而有这么多 Linux 命令需要学习,迈出第一步似乎令人望而生畏。应该先学习哪一个命令?有那.转载 2021-08-21 23:23:18 · 122 阅读 · 0 评论 -
Podman中如何运行一个 Linux 虚拟机?
使用 Podman Machine 创建一个基本的 Fedora CoreOS 虚拟机来使用容器和容器化工作负载。 Fedora CoreOS 是一个自动更新、最小化的基于rpm-ostree的操作系统,用于安全地、大规模地运行容器化工作负载。Podman“是一个用于管理容器和镜像、挂载到这些容器中的卷,以及由这些容器组组成的吊舱的工具。Podman 基于 libpod,它是一个容器生命周期管理库”。当你使用Podman Machine时,神奇的事情发生了,它可以帮助你创建一个基本的 ...转载 2021-08-20 08:58:02 · 180 阅读 · 0 评论 -
Linux如何远程拷贝,限速和断点续传
简述Linux如何远程拷贝,限速和断点续传scp命令– 远程拷贝文件scp 拷贝本地文件filename 到远程机器 192.168.188.188 服务器的/data/tmp目录下scp -P 61204 -l 40000 filename username@192.168.188.188:/data/tmp/-P port Specifies the port to connect to on the remote host. Note that this option i.转载 2021-08-19 08:45:36 · 436 阅读 · 0 评论 -
Ubuntu下非常给力的下载工具–aira2
Windows下的下载工具--迅雷,之所以下载速度快,乃是它能搜索资源、为己所用,而不是仅仅从原始地址这单一资源处下载。Ubuntu下也有类似的工具,那就是aira2。 aira2是一个命令行下载工具,可以配合其他图形界面的下载软件使用。我用的是uget+aria2。uget本身是一个小巧实用的多线程下载工具,加上aria2作为插件,下载速度有明显提高。一、安装uget和aria2都可以在“软件中心”中安装,但是版本太老啦,无法发挥作用,所以最好还是在终端中添加ppa进行安装:1.uget的转载 2021-08-17 09:25:29 · 242 阅读 · 0 评论 -
Linux基础之查看、添加、修改、删除用户命令介绍
Linux安全系统的核心就是用户账户,用户对系统中各种对象的访问及操作权限取决于他们登录系统时用的账户,通过创建用户时分配的用户ID(通常缩写UID)来跟踪用户操作权限。 1./etc/passwd 文件 查看用户信息将用户登录名匹配相应的UID值,它包含了一些用户信息:以冒号为分隔符划为7列,分别是:登录用户名 用户密码(都用x表示,用户密码一般保存在/etc/shadow文件中) 用户账户UID值 用户账户组ID值(简称GID) 用户账户的文本描述信息 用户HOME目..转载 2021-08-16 08:25:35 · 1153 阅读 · 0 评论