08 2021 档案

摘要:进入kafka目录 cd /opt/kafka_2.11-0.11.0.0 创建主题(主题:first 分区:2 写到节点数(replication-factor不能超过机器数):2 zookeeper的ip地址映射:hostname1 端口:2181) bin/kafka-topics.sh -- 阅读全文
posted @ 2021-08-31 15:46 低调的。。。 阅读(30) 评论(0) 推荐(0) 编辑
摘要:先启动所有机器上的zookeeper,再启动所有机器上的kafka(后台启动)(使用了xcall脚本批量运行程序) 开启zookeeper xcall /opt/zookeeper-3.4.10/bin/zkServer.sh start 开启kakfa xcall /opt/kafka_2.11- 阅读全文
posted @ 2021-08-30 20:18 低调的。。。 阅读(370) 评论(0) 推荐(0) 编辑
摘要:配置集群hostname(要先在host文件中配置了ip和名字的映射,才能使用脚本) 配置hostname文件在每台机器执行命令 echo hostname1 > /etc/hostnamehostname hostname1 备注:hostname1 为主机名,最好能标识主机用途,例如:kafka 阅读全文
posted @ 2021-08-30 20:17 低调的。。。 阅读(445) 评论(0) 推荐(0) 编辑
摘要:yum install -y java-1.8.0-openjdk-devel.x86_64 阅读全文
posted @ 2021-08-30 18:12 低调的。。。 阅读(249) 评论(0) 推荐(0) 编辑
摘要:定义 kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理 好处 解耦(各个功能通过消息队列通知完成功能,而不用必须等待上个功能模块的通知,类似于自己排队和黄牛帮排队) 削峰(大量的处理响应需要经过消息队列,挨个挨个执行,不会使系统崩溃) 可恢复性(当处理消息的进程挂掉,在 阅读全文
posted @ 2021-08-30 16:52 低调的。。。 阅读(275) 评论(0) 推荐(0) 编辑
摘要:常见面试题 1.什么是微服务? 微服务架构是一种架构模式,或者说是一种架构风格,它提倡将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,服务之间互相协调, 互相配置,为用户提供最终价值,服务之间采用轻量级的通信机制(HTTP)互相沟通,每个服务都围绕着具体的业务进行构建,并且能 阅读全文
posted @ 2021-08-30 15:08 低调的。。。 阅读(14614) 评论(0) 推荐(1) 编辑
摘要:eureka对比和Zookeeper区别 1. 回顾CAP原则 RDBMS (MySQL\Oracle\sqlServer) > ACID NoSQL (Redis\MongoDB) > CAP 2. ACID是什么? A (Atomicity) 原子性 C (Consistency) 一致性 I 阅读全文
posted @ 2021-08-27 22:56 低调的。。。 阅读(295) 评论(0) 推荐(0) 编辑
摘要:@ResponseBody 在springboot中 使用@controller的情况下,return 字符串,会跳转到字符串的网络地址 而在添加了@ResponseBody在方法上时,会输出字符串,返回对象也能转换为json数据 @RequestBody 当传入的是对象,而不是参数时使用。 阅读全文
posted @ 2021-08-27 15:54 低调的。。。 阅读(57) 评论(0) 推荐(0) 编辑
摘要:1.基本的搭建(springcloud,mybatis) 父项目 导入父项目依赖(这里做的是依赖的管理,可以统一管理控制子项目依赖的版本) <!--打包方式 pom--> <packaging>pom</packaging> <properties> <project.build.sourceEnc 阅读全文
posted @ 2021-08-27 15:45 低调的。。。 阅读(347) 评论(0) 推荐(0) 编辑
摘要:springboot pom.xml添加依赖: <!-- 热部署工具 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </depend 阅读全文
posted @ 2021-08-26 20:42 低调的。。。 阅读(341) 评论(0) 推荐(0) 编辑
摘要:需要以管理员运行cmd 显示哪个进程占用端口 netstat -aon|findstr 8080 得到 TCP 0.0.0.0:8001 0.0.0.0:0 LISTENING 13668 TCP [::]:8001 [::]:0 LISTENING 13668 关闭进程 taskkill /F / 阅读全文
posted @ 2021-08-26 20:10 低调的。。。 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2021-08-25 16:57 低调的。。。 阅读(24) 评论(0) 推荐(0) 编辑
摘要:我是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内核3.8以上, RHEL/Centos 的内核修补过, centos6.5的版本就可以——这个可以试试) root账户登录,查看内核版本如下 [root@loca 阅读全文
posted @ 2021-08-25 15:52 低调的。。。 阅读(3119) 评论(0) 推荐(0) 编辑
摘要:() dubbo直连服务(不需要使用zookeeper) 负载均衡机制: 基于权重随机负载均衡机制(dubbo默认) Random LoadBalance 随机给服务器任务,大量任务会根据权重分布在各台服务器上 基于权重的轮询负载均衡机制 RoundRobin LoadBalance 挨个给服务器任 阅读全文
posted @ 2021-08-25 15:05 低调的。。。 阅读(264) 评论(0) 推荐(0) 编辑
摘要:需要先开启zookeeper和dubbo Dubbo环境搭建 spring版本 Dubbo服务提供消费者接口搭建 创建Maven项目=> gmail-interface 用于存放共同的服务接口(存放实体bean和接口interface) 创建Maven项目=> user-service-provid 阅读全文
posted @ 2021-08-24 21:47 低调的。。。 阅读(1609) 评论(0) 推荐(0) 编辑
摘要:zookeeper简介 Linux 安装zookeeper(单机,分布式安装) zookeeper 此为Windows下使用zookeeper 使用3.4.10版本的zookeeper作为注册中心 https://archive.apache.org/dist/zookeeper/ 解压 修改con 阅读全文
posted @ 2021-08-22 17:31 低调的。。。 阅读(766) 评论(0) 推荐(0) 编辑
摘要:Dubbo核心概念 Dubbo官网: https://dubbo.apache.org/zh/ Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,服务自动注册和发现。分布式系统是将一个系统拆分为多个不同的服务 RPC原理 两 阅读全文
posted @ 2021-08-22 16:23 低调的。。。 阅读(242) 评论(0) 推荐(0) 编辑
摘要:RPC简介 分布式应用架构(远程过程调用):当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。 什么叫RPC RPC [ Remote Procedure Call]是指远程过程调用,是一种进程问通信方式,他 阅读全文
posted @ 2021-08-22 16:15 低调的。。。 阅读(530) 评论(0) 推荐(0) 编辑
摘要:请简述 ZooKeeper 的选举机制 半数机制:集群中半数以上机器存活,集群可用。所以 Zookeeper 适合安装奇数台服务器。例如,5台服务器有3台存活,集群可用,而只有2台存活,集群不可用。 Zookeeper 虽然在配置文件中并没有指定 Master 和 Slave。 但是, Zookee 阅读全文
posted @ 2021-08-22 15:52 低调的。。。 阅读(68) 评论(0) 推荐(0) 编辑
摘要:简介 特点 数据结构 统一命名服务 在分布式环境下,对应用或服务进行统一命名,以便识别。(将各个功能差不多的ip地址(143,293,12,2等)统一为一个域名(www.baidu.com)) 统一配置管理 分布式环境下要求所有的节点配置一致,可将配置信息写入zookeeper的一个节点下,各个客户 阅读全文
posted @ 2021-08-22 15:40 低调的。。。 阅读(13) 评论(0) 推荐(0) 编辑
摘要:创建一个 Maven 工程 为 pom.xml 添加关键依赖 <dependencies> <!-- 测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</versi 阅读全文
posted @ 2021-08-22 14:48 低调的。。。 阅读(118) 评论(0) 推荐(0) 编辑
摘要:查看节点信息(可以在/后面添加新的路径) (子节点变化(监听sanguo节点的子节点数)的监听:is /sanguo watch ) ls / ls /sanguo 查看节点详细信息 ls2 / 创建节点(create 路径 值)(需一级一级创建) (创建短暂节点就在create后加 -e ) (创 阅读全文
posted @ 2021-08-21 20:01 低调的。。。 阅读(54) 评论(0) 推荐(0) 编辑
摘要:xsync同步脚本的使用 1.简介 在集群机器配置时,经常需要将一个文件或目录copy到同样的多台集群上,如果一个一个机器去复制,比较麻烦。如果有一个办法,通过一条命令就可以实现这个目的,就简单多了。xsync就是这样一个同步脚本。xsync其实是对rsync脚本的二次封装,脚本内容可以根据自己需要 阅读全文
posted @ 2021-08-21 16:33 低调的。。。 阅读(1206) 评论(0) 推荐(1) 编辑
摘要:xcall批量启动 批量启动zookeeper服务器 xcall /opt/zookeeper-3.4.10/bin/zkServer.sh start 批量关闭zookeeper服务器 xcall /opt/zookeeper-3.4.10/bin/zkServer.sh stop 挨个启动 cd 阅读全文
posted @ 2021-08-21 15:16 低调的。。。 阅读(84) 评论(0) 推荐(0) 编辑
摘要:一键修复 sed -i "s|enabled=1|enabled=0|g" /etc/yum/pluginconf.d/fastestmirror.conf mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo. 阅读全文
posted @ 2021-08-19 18:07 低调的。。。 阅读(74) 评论(0) 推荐(0) 编辑
摘要:一、 安装前准备 1、下载Centos centos官网https://wiki.centos.org/Download 2、下载vmware wmware的官网 https://my.vmware.com 下载成功后,点击安装,提示输入许可证,直接将下面的永久注册码复制进去,继续下一步就好了。(下 阅读全文
posted @ 2021-08-19 17:23 低调的。。。 阅读(464) 评论(1) 推荐(1) 编辑
摘要:主从复制 复制基本原理 MySQL复制过程分为三步: Master将改变记录到二进制日志(Binary Log)。这些记录过程叫做二进制日志事件,Binary Log Events; Slave将Master的Binary Log Events拷贝到它的中继日志(Replay Log); Slave 阅读全文
posted @ 2021-08-18 17:30 低调的。。。 阅读(78) 评论(0) 推荐(0) 编辑
摘要:mysql默认存储引擎innodb自动会添加锁, 使用索引作为检索条件修改数据时采用行锁,否则采用表锁(索引失效时)。 读锁(共享锁): 不同的线程或进程读取表不会相互影响,修改表会相互影响,某线程锁了表后只能读取该表,不能修改表,不能读取其他的表,其他的线程可以读取该表,但修改该表会阻塞 写锁(排 阅读全文
posted @ 2021-08-18 17:02 低调的。。。 阅读(215) 评论(0) 推荐(0) 编辑
摘要:事务的ACID属性 更新丢失 当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道其他事务的存在,就会发生丢失更新问题―—最后的更新覆盖了由其他事务所做的更新。 例如,两个程序员修改同一java文件。每程序员独立地更改其副本,然后保存更改后的副本,这样就覆盖了原始文档。最 阅读全文
posted @ 2021-08-18 16:07 低调的。。。 阅读(44) 评论(0) 推荐(0) 编辑
摘要:show profile: 查看是否开启功能 show variables like 'profiling'; 开启功能 set profiling=on; 查询数据库(运行查询sql语句) 。。。。 查看profiles show profiles; 查看一号查询语句的cpu,io使用情况(que 阅读全文
posted @ 2021-08-18 11:36 低调的。。。 阅读(165) 评论(0) 推荐(0) 编辑
摘要:show variables like 'log_bin_trust_function_creators'; set global log_bin_trust_function_creators=1; $$用于作为函数运行分割符,与;作区分 调用存储过程插入数据 阅读全文
posted @ 2021-08-18 11:00 低调的。。。 阅读(61) 评论(0) 推荐(0) 编辑
摘要:查看慢查询日志是否开启 SHOW VARIABLES LIKE '%slow_query_log%'; 开启慢查询日志(关闭mysql cmd就会失效 需要消耗资源最好用来测试,不要永久开启) set global slow_query_log=1; 永久开启慢查询日志: 慢查询日志通过该参数(lo 阅读全文
posted @ 2021-08-17 17:54 低调的。。。 阅读(284) 评论(0) 推荐(0) 编辑
摘要:文件排序(FileSort)分为两种:双路排序(又叫回表排序模式):先根据相应的条件取出相应的排序字段和可以直接定位行 数据的行 ID,然后在 sort buffer 中进行排序,排序完后需要再次取回其它需要的字段;单路排序:是一次性取出满足条件行的所有字段,然后在sort buffer中进行排序; 阅读全文
posted @ 2021-08-17 15:32 低调的。。。 阅读(1559) 评论(0) 推荐(0) 编辑
摘要:为什么要小表驱动大表呢 类似循环嵌套 for(int i=5;.......) { for(int j=1000;......) {} } 如果小的循环在外层,对于数据库连接来说就只连接5次,进行5000次操作,如果1000在外,则需要进行1000次数据库连接,从而浪费资源,增加消耗。这就是为什么要 阅读全文
posted @ 2021-08-17 13:45 低调的。。。 阅读(284) 评论(0) 推荐(0) 编辑
摘要:小表驱动大表:主要是使最外层循环减少,连接数据库次数减少,减少资源消耗 explain能做什么? 查看表的读取顺序(id) 数据读取操作的操作类型(select_type) 哪些索引理论上可以使用(possible_keys) 哪些索引被实际使用(key) 表之间的引用(table) 每张表有多少行 阅读全文
posted @ 2021-08-15 17:04 低调的。。。 阅读(77) 评论(0) 推荐(0) 编辑
摘要:索引:排好序的快速查找数据结构 优势: 会影响查询(select)(降低数据库io成本) 排序(order by)(降低cpu的消耗) 劣势: 索引也是一张表,保留了主键和索引字段,并指向实体表的记录,索引也是要占用空间的 降低更新表的速度(增删改),因为在更新表时,mysql不仅要保存数据,也要保 阅读全文
posted @ 2021-08-12 20:47 低调的。。。 阅读(40) 评论(0) 推荐(0) 编辑
摘要:编写顺序 select from join on(join 外连接之类的 on:join的条件) where group by having(group by的条件) order by limit 执行顺序 阅读全文
posted @ 2021-08-12 15:25 低调的。。。 阅读(40) 评论(0) 推荐(0) 编辑
摘要:Redis概述 Redis是一个开源的key-value存储系统。 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。 这些数据类型都支持push/pop、 阅读全文
posted @ 2021-08-10 18:33 低调的。。。 阅读(54) 评论(0) 推荐(0) 编辑
摘要:内连接(inner join) SELECT * FROM test a INNER JOIN test1 b on a.id=b.testid 左外连接(left join)(保留左表所有,没有对应的用null占位) SELECT * FROM test a LEFT JOIN test1 b O 阅读全文
posted @ 2021-08-10 16:48 低调的。。。 阅读(344) 评论(0) 推荐(0) 编辑
摘要:缓存穿透(跳过redis缓存疯狂访问数据库) key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会压到数据源(数据库),从而可能压垮数据源。 比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。 解决方案: (1) 对 阅读全文
posted @ 2021-08-09 21:22 低调的。。。 阅读(245) 评论(0) 推荐(0) 编辑
摘要:Redis集群 Redis 集群:实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。 Redis 集群通过分区来提供一定程度的可用性: 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。 数据分片(将数据分 阅读全文
posted @ 2021-08-09 18:40 低调的。。。 阅读(132) 评论(0) 推荐(0) 编辑
摘要:Redis_主从复制:主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master(主服务器)以写为主,Slave(从服务器)以读为主 作用:读写分离,性能扩展,容灾快速恢复 复制原理: 使用 (主要) 拷贝多个redis.conf文件include(写绝对路径) 创 阅读全文
posted @ 2021-08-08 20:55 低调的。。。 阅读(439) 评论(0) 推荐(0) 编辑
摘要:官方推荐两个都启用。 如果对数据不敏感,可以选单独用RDB。 不建议单独用 AOF,因为可能会出现Bug。 如果只是做纯内存缓存,可以都不用。 同时开启RDB和AOF,系统默认取AOF保存下来的数据(数据不会丢失) RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件。那要不要只使用AOF 阅读全文
posted @ 2021-08-08 16:58 低调的。。。 阅读(336) 评论(0) 推荐(0) 编辑
摘要:超卖问题(可以使用事务方式(乐观锁)通过对比本事务与数据库版本号进行控制(需要用watch进行监视) 也可以使用LUA脚本(包含在一个Lua脚本里面的redis命令具备原子性)) 连接超时问题(可以使用jedis连接池) 库存遗留问题(就是事务经常失败,库存还有很多)(可以使用LUA脚本进行解决(原 阅读全文
posted @ 2021-08-08 12:16 低调的。。。 阅读(538) 评论(0) 推荐(0) 编辑
摘要:设置: -Dfile.encoding=UTF-8 阅读全文
posted @ 2021-08-07 22:58 低调的。。。 阅读(149) 评论(0) 推荐(0) 编辑
摘要:Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 Redis事务的主要作用就是串联多个命令防止别的命令插队。 Redis事务三特性 单独的隔离操作 事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中, 阅读全文
posted @ 2021-08-07 20:55 低调的。。。 阅读(127) 评论(0) 推荐(0) 编辑
摘要:导入依赖 <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!- 阅读全文
posted @ 2021-08-07 17:19 低调的。。。 阅读(48) 评论(0) 推荐(0) 编辑
摘要:1.redis修改配置文件和开放6379端口 进入redis.conf修改redis配置文件 root@ecs-sn3-medium-2-win-20200206213403:/etc# vi redis.conf /bind 127(linux使用/进行全文查找) 在前面加上#注释掉这句话(这句话 阅读全文
posted @ 2021-08-07 16:47 低调的。。。 阅读(94) 评论(0) 推荐(0) 编辑
摘要:1.redis修改配置文件和开放6379端口 进入redis.conf修改redis配置文件 root@ecs-sn3-medium-2-win-20200206213403:/etc# vi redis.conf /bind 127(linux使用/进行全文查找) 在前面加上#注释掉这句话(这句话 阅读全文
posted @ 2021-08-07 16:09 低调的。。。 阅读(505) 评论(0) 推荐(0) 编辑
摘要:Redis 3.2中增加了对GEO类型的支持。GEO ,Geographic,地理信息的缩写。该类型,就是元素的2维坐标,在地图上就是经纬度。 redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作。 添加地理位置信息(前经度 后纬度) (两极无法直接添加 已经添 阅读全文
posted @ 2021-08-07 14:51 低调的。。。 阅读(297) 评论(0) 推荐(0) 编辑
摘要:用于计算数据集中的基数(不重复数)个数 产生主要原因:在数据量非常大的情况下(使用redis中的hash set bitmaps)(使用数据库搜索)结果虽说精确不重复数计算占用空间非常大 添加多个不重复元素(返回1为添加成功,0添加失败) pfadd k1 java c++ php 计算多个集合中不 阅读全文
posted @ 2021-08-07 11:55 低调的。。。 阅读(64) 评论(0) 推荐(0) 编辑
摘要:Redis提供了Bitmaps这个“数据类型”可以实现对位的操作:( 1 )Bitmaps本身不是一种数据类型,实际上它就是字符串( key-value ) ,但是它可以对字符串的位进行操作。( 2 )Bitmaps 单独提供了一套命令,所以在 Redis中使用Bitmaps和使用字符串的方法不太相 阅读全文
posted @ 2021-08-07 11:35 低调的。。。 阅读(143) 评论(0) 推荐(0) 编辑
摘要:发布与订阅是一种(消息通信模式) :发送者发送消息,订阅者接受消息 客户端订阅频道(频道为channell1) subscribe channell1 另一客户端给频道发送消息(频道为channell1 消息为hello) publish channell1 hello 下图为订阅频道的客户端会接收 阅读全文
posted @ 2021-08-07 10:50 低调的。。。 阅读(35) 评论(0) 推荐(0) 编辑
摘要:有序集合zset 与 set相似 没有重复的元素的字符串集合 不同处为:zset每个成员关联了一个评分(score) ,被用来按照从低到高的方式排序集合中的成员 成员是唯一的,评分可以重复 底层具有两种结构(hash和跳跃表) hash将值和评分存储起来 用跳跃表存储评分(可以更快的查找到评分和对应 阅读全文
posted @ 2021-08-06 18:00 低调的。。。 阅读(453) 评论(0) 推荐(0) 编辑
摘要:hash是键值对集合 是string类型的filed 和 value的映射表, 类似Map<String,Object> 添加一个值到hash集合中(user:100为key 后面的为field 与value的映射) hset user:100 id 1 添加新的field和值(当前没有该field 阅读全文
posted @ 2021-08-06 14:51 低调的。。。 阅读(421) 评论(0) 推荐(0) 编辑
摘要:Set与List类似,存储数据不重复 是String类型的无序集合,底层为value为null的hash表,将存储的值放入key中实现去重的效果 添加,查找,删除的复杂度为O(1),查找时间固定 添加多个元素到key中(已经添加的会被忽略) sadd k1 v1 v2 v3 获取集合的所有值 sme 阅读全文
posted @ 2021-08-06 14:15 低调的。。。 阅读(318) 评论(0) 推荐(0) 编辑
摘要:redis中的List底层是个双向链表(对操作两端性能高,对操作中间性能低),可以添加元素到List的左边或者右边 列表使用快速链表(quicklist)数据结构存储,而快速链表就是双向链表与压缩列表(数组 为了节省内存)的组合。 当数据量少时使用压缩列表,当数据量大时使用双向链表 Redis使用字 阅读全文
posted @ 2021-08-05 19:48 低调的。。。 阅读(1210) 评论(0) 推荐(0) 编辑
摘要:redis默认使用6379端口,默认具有16个数据库,初始默认使用0号库 redis与memcached三个区别 (支持数据类型多)memcached:string redis:String List Set Hash Zset(有序集合) (支持持久化) (机制不同)memcached:多线程加锁 阅读全文
posted @ 2021-08-05 16:37 低调的。。。 阅读(288) 评论(0) 推荐(0) 编辑
摘要:redis使用 跳转到redis根目录文件夹中 cd /usr/local/bin 根据conf配置文件启动redis redis-server /etc/redis.conf 查看redis状态 ps -ef | grep redis 进入redis操作界面(-a 123456(添加在后验证密码) 阅读全文
posted @ 2021-08-05 15:03 低调的。。。 阅读(310) 评论(0) 推荐(0) 编辑
摘要:创建分支拉取和推送asus@Chief MINGW64 ~$ cd D:/东软H5/仓库 克隆项目(非常重要的一步)asus@Chief MINGW64 /d/东软H5/仓库$ git clone https://gitee.com/zeng-haoran/h5-training-warehouse 阅读全文
posted @ 2021-08-05 12:31 低调的。。。 阅读(507) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示