2024年程序员学习
文章平均质量分 88
2401_84254418
这个作者很懒,什么都没留下…
展开
-
ShardingSphere-Proxy数据库代理入门使用_shardingsphere proxy
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份。配置文件:conf/conf-*.yaml。原创 2024-05-17 06:47:59 · 576 阅读 · 0 评论 -
Servlet生命周期和线程安全
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!内容实在太多,不一一截图了。原创 2024-05-17 06:47:24 · 856 阅读 · 0 评论 -
Servlet实现文件上传_设置文件上传大小需要引入servlet包吗
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。最后就是大家最关心的网络安全面试题板块。原创 2024-05-17 06:46:50 · 338 阅读 · 0 评论 -
Servlet实现文件上传_设置文件上传大小需要引入servlet包吗(2)
【代码】Servlet实现文件上传_设置文件上传大小需要引入servlet包吗(2)原创 2024-05-17 06:46:13 · 140 阅读 · 0 评论 -
Joker零安全手把手教你如何搭建vulfocus靶场_vulfocus靶场搭建
docker exec -it 容器ID /bin/bash。docker start/stop/rm 容器ID。#开启/停止/删除docker指定容器。#查看正在运行的docker容器。#设置docker开机自启动。#删除已停止docker容器。#查看docker镜像列表。#查看所有docker容器。#删除所有docker容器。#docker帮助命令。#查看docker版本。#查看docker状态。#开启docker容器。#停止docker容器。#进入交互docker。docker容器命令。原创 2024-05-16 22:15:24 · 902 阅读 · 0 评论 -
Joker零安全手把手教你如何搭建vulfocus靶场_vulfocus靶场搭建(1)
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~因篇幅有限,仅展示部分资料。因篇幅有限,仅展示部分资料。还有大家最喜欢的黑客技术。原创 2024-05-16 22:14:50 · 539 阅读 · 0 评论 -
Joern的安装与使用
Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察。原创 2024-05-16 22:14:15 · 715 阅读 · 0 评论 -
JNDI注入&;Log4j&;FastJson&;白盒审计&;不回显处理_log4j 攻击无回显怎么办
在前后端数据传输交互中,经常会遇到字符串(String)与json,XML等格式相互转换与解析,其中json以跨语言,跨前后端的优点在开发中被频繁使用,基本上是标准的数据交换格式。它的接口简单易用,已经被广泛使用在缓存序列化,协议交互,Web输出等各种应用场景中。FastJson是阿里巴巴的的开源库,用于对JSON格式的数据进行解析和打包。Java 其实是有原生 Json 数据格式转换的,但由于 FastJson 速度更快,效率更高,所以被广泛使用。原创 2024-05-16 22:13:38 · 1001 阅读 · 0 评论 -
GO语言:Protobuf简介_go语言protoc介绍
Google Protocol Buffer( 简称 Protobuf)是Google公司内部的混合语言数据标准,他们主要用于RPC系统和持续数据存储系统。原创 2024-05-16 16:35:21 · 410 阅读 · 0 评论 -
GO语言:Protobuf协议语法及原理_go protobuf 默认字节序
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!内容实在太多,不一一截图了。原创 2024-05-16 16:34:47 · 392 阅读 · 0 评论 -
GO语言:Protobuf协议语法及原理_go protobuf 默认字节序(1)
Varint中的每个byte的最高位bit有特殊的含义,如果该位为1,表示后续的byte也是该数字的一部分,如果该位为0,则结束。对于可选的Field,如果消息中不存在该field,那么在最终的Message Buffer中就没有该field,这些特性都有助于节约消息本身的大小。序列化后的Value是按原样保存到字符串或者文件中,Key按照一定的转换条件保存起来,序列化后的结果就是 KeyValueKeyValue…它用一个或多个字节来表示一个数字,值越小的数字使用越少的字节数。还有大家最喜欢的黑客技术。原创 2024-05-16 16:34:12 · 207 阅读 · 0 评论 -
GO语言:Protobuf协议Go语言实践 Davie_go语言pb协议解析
先来看一个非常简单的例子。假设想定义一个“订单”的消息格式,每一个“订单"都含有一个订单号ID、订单金额Num、订单时间TimeStamp字段。可以采用如下的方式来定义消息类型的.proto文件:**指定字段类型:**在proto协议中,字段的类型包括字符串(string)、整形(int32、int64…)、枚举(enum)等数据类型**分配标识符:**在消息字段中,每个字段都有唯一的一个标识符。最小的标识号可以从1开始,最大到536870911。原创 2024-05-16 16:33:36 · 274 阅读 · 0 评论 -
CentOS7 系统安全及应用(二)
确认已生成可执行程序john…/run/john添加测试账号准备待破解的密码文件执行暴力破解查看密码信息清空已破解出的账户列表,进行重新分析准备好密码字典文件,默认为[root@localhost run]# vim password.lst #添加刚才测试用户的密码执行john程序,结合字典文件查看二、网络端口扫描主机发现(Host Discovery)端口扫描(Port Scanning)版本侦测(Version Detection)原创 2024-05-16 08:12:24 · 591 阅读 · 0 评论 -
CentOS7 系统安全及应用(二)(1)
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!原创 2024-05-16 08:11:49 · 931 阅读 · 0 评论 -
CentOS7 系统安全及应用(一)
网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。原创 2024-05-16 08:11:15 · 692 阅读 · 0 评论 -
CentOS7 系统安全及应用(一)(1)
3.命令历史限制1)减少记录的命令条数(默认条数是 1000 条)找到:改为:HISTSIZE=5[root@localhost ~]# source /etc/profile #执行脚本[root@localhost ~]# history #查看历史记录2)终端自动注销[root@localhost ~]# echo “export TMOUT=30” >> ~/.bash_profile #终端30秒不做任何操作将自动注销。原创 2024-05-16 08:10:39 · 516 阅读 · 0 评论 -
11【事务处理】_navicat 事务控制(1)
如果一个业务操作中多次访问了数据库,必须保证每条SQL语句都执行成功。如果其中有一条执行失败,那么所有已经执行过的代码必须回滚(撤销)。回到没有执行前的状态。称为事务。简单来说就是要么所有的SQL语句全部执行成功,要么全部失败。原创 2024-05-15 23:39:28 · 601 阅读 · 0 评论 -
11【MyBatis的缓存机制】
MyBatis 跟缓存相关的类都在cache 包里面,其中有一个Cache 接口,只有一个默认的实现类 PerpetualCache,改类是MyBatis的缓存实现类;在获取一级缓存中的数据时,MyBatis将返回当初存入一级缓存的那个内存地址值,也就是说,一级缓存中的数据是同一个;这样一来就会出现内存地址值引用问题;我们刚刚学习完了一级缓存,一级缓存是session级别的缓存,不同的session一级缓存是不能共享的;一级缓存是基于session级别的,如果session关闭,那么一级缓存将会失效!原创 2024-05-15 23:38:53 · 648 阅读 · 0 评论 -
113种渗透测试工具合集(全网最全)
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!内容实在太多,不一一截图了。原创 2024-05-15 23:38:19 · 380 阅读 · 0 评论 -
113种渗透测试工具合集(全网最全)(1)
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!内容实在太多,不一一截图了。原创 2024-05-15 23:37:42 · 524 阅读 · 0 评论 -
8年测试经验总结,定位其后台bug-案例,彻底通透(2),2024年最新全套教学资料
③http和https的注意点:https是一种安全链接,它是需要证书的,而http就是普通链接,所以在你的系统中客户会要求某些关键的地方希望加上这种安全连接,那么此时你需要注意的是,对于不需要的安全链接的地方千万也要去重点测试,有些开发会很容易忽略这一点。你可要测试,比如在某个网站http协议后面加个s去访问,看能否访问成功,能成功,会显示绿色安全小锁,否则就不能访问。给你举几个安装了ssl证书,可要https访问的网站,1号店,天猫,淘宝,支付宝,百度,沃通CA,工信部网站等等。如果没有则不能访问。原创 2024-04-21 19:56:43 · 673 阅读 · 0 评论 -
8年测试经验总结,定位其后台bug-案例,彻底通透(1),软件测试中高级岗面试为何越来越难
由于项目中有线程程序,./shutdown脚本关闭tomcat程序,不能把启动的线程全部关闭,造成服务器启动线程未关闭的错误,所以Linux系统中重启Tomcat的一般步骤:(一般是先关闭进程,然后进行重启 ,如果 /要删除某个文件:rm 文件名,或者不为空的文件夹:rm -rf 文件夹名)测试环境ok,生产环境新增时保存失败,查看后台日志报长度溢出,数据库内容字段要求和生产环境不一致!空指针:程序问题,一般没有考虑到为空情况,或者主外键约束的数据为空,或者删除关联数据,导致为空。原创 2024-04-21 19:56:12 · 833 阅读 · 0 评论 -
说一个改变命运的捷径,面试大厂应该注意哪些问题
写作甚至还是很多大佬的必备技能,比如我们熟知的任正非大佬,每每华为遭遇重大困难或者转型,我们都能看到任总的精彩文章,通过写作任总在和企业员工取得共识,和社会上支持华为品牌的人取得共识。同时论建设个人IP,更容易持久不倒的肯定是写作类型的,因为写作能把你的认知、方法论、理论掰开了揉碎了输出给读者,这是短视频之类的IP很难做到的。流量到了私域,再经过你的价值交付才能成为你的用户。原创 2024-04-20 16:59:04 · 616 阅读 · 0 评论 -
误删除 Oracle 数据库数据的恢复方法_oracle恢复更新的数据
oracle提供以上机制保证了安全操作,但同时也代来了另外一个问题,就是空间占用,由于以上机制的运行,使用drop一个表或者delete数据后,空间不会自动回收,对于一些确定不使用的表,删除时要同时回收空间,可以有以下2种方式:1、采用truncate方式进行截断。(但不能进行数据回恢复了)2、在drop时加上purge选项:drop table 表名 purge该选项还有以下用途:也可以通过删除recyclebin区域来永久性删除表,原始删除表drop table emp。原创 2024-04-20 16:58:02 · 339 阅读 · 0 评论 -
语义化版本 2,2024年最新Flutter最新开源框架
在软件管理的领域里存在着被称作“依赖地狱”的死亡之谷,系统规模越大,加入的包越多,你就越有可能在未来的某一天发现自己已深陷绝望之中。在依赖高的系统中发布新版本包可能很快会成为噩梦。如果依赖关系过高,可能面临版本控制被锁死的风险(必须对每一个依赖包改版才能完成某次升级)。而如果依赖关系过于松散,又将无法避免版本的混乱(假设兼容于未来的多个版本已超出了合理数量)。当你专案的进展因为版本依赖被锁死或版本混乱变得不够简便和可靠,就意味着你正处于依赖地狱之中。原创 2024-04-20 16:57:30 · 644 阅读 · 0 评论 -
详解用 SQL 提取字符串中的字母_sql取英文字母,2024年最新【面试必会】
不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!字符串expression1 从start位置开始,删除长度为length的字符后,在start后面填充expression2。不管是字母,还是数字,我们都可以使用相应的匹配规则来抽取出来。返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算。SELECT STUFF(‘SQL,开发’,4,1,‘数据库’)原创 2024-04-20 16:56:27 · 373 阅读 · 0 评论 -
详解用 SQL 提取字符串中的字母_sql取英文字母(1),字节跳动+阿里+华为+腾讯等大厂软件测试面试题
个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!字符串expression1 从start位置开始,删除长度为length的字符后,在start后面填充expression2。理解完上面的函数,我们来测试一下我们自定义的函数GET_LETTER ()SELECT STUFF(‘SQL,开发’,4,1,‘数据库’)这与我们预期的结果一致,证明这个自定义函数是可行的。原创 2024-04-20 16:55:56 · 282 阅读 · 0 评论 -
详解云WAF:免费GOODWAF归来_免费云waf(1),Golang面试项目包装
同时云WAF还可以生成详细的日志和报告,记录和分析应用程序的安全事件和行为数据,也就是它可以收集请求信息、攻击类型、阻止的尝试、误报等信息,为安全团队提供全面的可视化分析,帮助监测、调查安全事件以及制定更有效的安全决策。当人工智能具有自学习和自适应的能力后,就能近一步提升云WAF的主动防御能力,使其能够实时监测和分析网络流量,并采取相应的阻断和反制措施,也就是说当检测到异常活动或潜在攻击时,云WAF能够立即采取自动化的响应措施,例如临时封禁IP地址、限制请求频率、重定向流量等,从而保护受攻击的应用程序。原创 2024-04-20 16:54:12 · 885 阅读 · 0 评论 -
详解C语言二级指针三种内存模型_mov eax,ebx 是二级指针吗
这种模型为二级指针的第二种内存模型,在理解的时候应该这样理解:定义了一个二级指针,二级指针就是指向指针的指针,其实就是开辟了100个指针空间,存放了100个地址。上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。在使用的时候,若要使用中间量操作元素,那么此时中间量应该定义为。把第一种内存模型的数据排序,运算结果放到第三种内存模型中。如果要打印这个数组,那么可以使用以下函数。printf(“传入参数错误\n”);第三种内存模型char **arr。原创 2024-04-20 16:53:42 · 1020 阅读 · 0 评论 -
详解 Modbus 通信协议(清晰易懂)_modbus协议,Golang程序员最新职业规划
*含义:**0x01:从机的地址0x03:查询功能,读取从机寄存器的数据0x00 0x01:代表读取的起始寄存器地址.说明从0x0001开始读取.0x00 0x01:查询的寄存器数量为0x0001个 Modbus把数据存放在寄存器中,通过查询寄存器来得到不同变量的值,一个寄存器地址对应2字节数据;就好比老师和你打电话,老师拨通了你的电话号,然后老师跟你说,小王呀,我这里需要你给我发东西,发的内容是上周的一周总结,你说好的,然后打开你电脑的文件夹,把你的周报发给老师,这就是一个通信过程。原创 2024-04-20 16:53:10 · 333 阅读 · 0 评论 -
详细解决git本地仓库和远程仓库关联问题_刚clone下来的代码没有跟远程仓库建立关系(2)
执行之后不会有提示,再次通过git remote -v查看是否绑定成功。本来我们新建的会是空,码云官方添加了开源协议。本地提交成功后,如果远程仓库不为空,此时git push会报错。然后绑定到你刚才新建的仓库地址,如果没被占用则直接绑定。初始化 git init 即可以生成一个.git文件夹。如果有则回到你的项目文件夹,查看其是否已绑定远端仓库。git commit -m ‘第一次提交’第一次提交加推送也就成功了。命令行进入你的项目地址。然后就可以推送到远端了。删除这个远程仓库占用。原创 2024-04-20 16:52:07 · 268 阅读 · 0 评论 -
详细解决git本地仓库和远程仓库关联问题_刚clone下来的代码没有跟远程仓库建立关系(1)
执行之后不会有提示,再次通过git remote -v查看是否绑定成功。查看项目下是否有.git 文件夹。如果有说明已经在本地初始化过。然后绑定到你刚才新建的仓库地址,如果没被占用则直接绑定。初始化 git init 即可以生成一个.git文件夹。首先建立远程的空仓库(git 上或者github上)如果有则回到你的项目文件夹,查看其是否已绑定远端仓库。复制其ssh地址 关于如何使用ssh请看这里。命令行进入你的项目地址。删除这个远程仓库占用。原创 2024-04-20 16:51:35 · 502 阅读 · 0 评论 -
试试比postman更好用的apipost——如何测试post请求并发送json类型参数_post请求带json参数
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!原创 2024-04-20 16:50:32 · 427 阅读 · 0 评论 -
试试比postman更好用的apipost——如何测试post请求并发送json类型参数_post请求带json参数(1)
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!原创 2024-04-20 16:50:01 · 357 阅读 · 0 评论 -
识别并避免 Js 内存泄漏,跟低级缺陷say goodbye,让老总对你刮目相看
所以就算 el 节点被移除后,setInterval 仍旧存活且垃圾回收器没办法回收,它的依赖自然也没办法被回收,除非终止定时器,如。,现代的浏览器(包括 IE 和 Microsoft Edge)使用了更先进的垃圾回收算法(标记清除),已经可以正确检测和处理循环引用了。如果把DOM 存成字典(JSON 键值对)或者数组,此时,同样的 DOM 元素存在两个引用:一个在 DOM 树中,另一个在字典中,那么将来需要把两个引用都清除。// 显式移除引用,elements = null,使依赖的DOM可被GC回收。原创 2024-04-20 16:48:57 · 286 阅读 · 0 评论 -
设计模式:惰性初始化模式讲解以及Go实现_惰性初始模式
惰性初始化是一个强大而实用的设计模式,尤其适用于资源敏感和响应时间关键的应用中。在Go语言中,结合其并发特性的优势,可以高效且安全地实现这一模式。通过今天的学习,我们不仅理解了惰性初始化模式的原理和优势,还通过Go语言实践了它的实现。这种模式在开发中的应用可以大大提升我们的软件性能和资源利用率。我们期待在未来的软件架构设计中,能更多地运用这样高效的设计模式。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。原创 2024-04-20 16:47:53 · 359 阅读 · 0 评论 -
设计模式:Saga模式介绍及Go实现_自己实现saga逻辑,2024非科班生的Golang面试之路
/ 定义服务接口// 订单服务fmt.Println(“执行订单服务”)// 逻辑代码return nilfmt.Println(“回滚订单服务”)// 回滚代码return nil// 支付服务fmt.Println(“执行支付服务”)// 逻辑代码return nilfmt.Println(“回滚支付服务”)// 回滚代码return nil。原创 2024-04-20 16:47:22 · 343 阅读 · 0 评论 -
利用Java操作Jenkins API实现对Jenkins的控制详解_java jenkins api
/ 根据 Job Build 编号获取编译信息。// 根据 view 名称获取 Job 列表。// 停止最后构建的 Job Build。// 获取 Build Log 日志信息。// 获取 Job 最后的 Build。// 获取一定范围的 Build 列表。// 获取 Job 首次 Build。// 获取 Build 全部列表。// 获取 Build 基本信息。// 获取 Build 详细信息。// 获取 Job 配置xml。// 获取视图配置xml信息。// 获取全部 Job 列表。原创 2024-04-19 03:21:29 · 727 阅读 · 0 评论 -
利用GDB调试 MSQL(2),2024年最新2024年网易软件测试岗面试必问
如果想深入学习源码,就可以从栈帧出发,但是这是基于知道函数接口功能的前提下进行的,如果不知道某个功能会调用什么函数,断点调试就很难进行了。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)一个人可以走的很快,但一群人才能走的更远!原创 2024-04-19 03:20:28 · 523 阅读 · 0 评论 -
一文5000字详解Python中PO模式的设计与实现_python po模式(1)
self.direct_to_product().click() # 点击 “首页” 跳转至首页。self.direct_to_login().click() # 点击 “登录” 按钮进行登录。def direct_to_product(self): # 登陆成功后,跳转至首页。def direct_to_login(self): # 首页跳转至登录页。def login_button(self): # 登录页 - 登录按钮。原创 2024-04-18 21:48:12 · 515 阅读 · 0 评论