自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

胡汉三

阿三、连起床这么困难的事你都做到了、接下来的一天还有什么能难倒你!!!

  • 博客(246)
  • 资源 (14)
  • 收藏
  • 关注

原创 MYSQL IN 子查询不检查SQL语句

这里,上面的语句明确指出了没有order_id这个字段。然而当我们使用这一条语句去做子查询的条件的时候,就不报找不到字段的错误了。所以、大家要注意了。最好不要用子查询,不管是delete还是update还是select,都是用join来操作吧。在使用Mysql的时候、会存在使用子查询的情况。但是mysql这个子查询很是让人迷惑。啊哈,是不是很神奇。这里只是举例了select,当我们是delete的时候呢?

2023-03-26 21:44:10 147 1

原创 VUE前端RSA+AES加密调用后端接口

之前已经将后端的加解密接口都准备好了过后、就可以跟前端进行联调了。这里使用了VUE作为前端开发框架。我们直接上关键代码了。 这里使用了jsencrypt作为前端RSA的加解密工具。需要注意的是填充方式要与服务端的保持一致、我们服务端使用的填充方式是RSA/ECB/OAEPWithSHA-1AndMGF1PADDING。那么对应这里也应该是同样的填充方式。我们先npm安装一下 添加加密方法(encryptUtils.js)这里需要注意的是,刚刚说的填充方式、jsrsasign

2022-07-11 22:54:43 2150

原创 openresty 网关rsa+aes+redis鉴权解密

之前使用了openresty进行了rsa跟aes的加解密测试。现在我们整合一下、使用openresty连接redis做鉴权、解密。之前提到过,我们不使用cookie而是使用token来认证用户信息。而且token是我们自己加密的、加密的规则就是使用aes进行加密。我们再来缕一缕整个流程。客户端(浏览器)流程: 第一步:先获取token(临时token),返回的token是aes加密的,这里的密钥我们就使用固定的aes密钥就好了。token里面包含userId跟tokenId,我们使用token

2022-07-11 18:33:44 1975 2

原创 java调用百度内容审核接口检查文本

最近接到一个需求、要对用户输入的内容进行文本检查。不能输入一些敏感的内容、当时想着这个东西很简单、自己创建一个敏感词汇、使用过滤器对请求的内容进行过滤就好了。运行一段时间过后才发现、维护这个敏感词汇很是花力气。一些“名人”、“网络敏感词”、甚至敏感数字隔一段时间就冒出来了。等你维护进去的时候、你数据库早就有这些信息了。后面决定还是使用第三方的库算了。至少不用太多的维护就能预防绝大多数的敏感词。就算是有一些滞后了、也可以自己手动导入到第三库里面去。而且如果有啥问题、程序员至少不用拉去祭天了、有第三方帮忙背锅。

2022-07-10 16:43:52 1211 2

原创 wkhtmltopdf设置cookie

简单好用的html转pdf的插件。功能也足够强大。生成好的pdf还可以搭配其他工具对pdf在进行处理。pdf内容如下设置cookie 这里我们登录一下我们的百度账号、设置好cookie过后在重新访问一下。 这样得到的结果就是登录过后的百度首页了。 wkhtmltopdf还支持很多其他的参数、请参考https://wkhtmltopdf.org/usage/wkhtmltopdf.txt...

2022-07-10 15:56:13 611

原创 openresty 与 java RSA加解密

上一篇搞定了openresty与java之间的aes加解密。这一篇就来说说openresty与java之间RSA的加解密。在测试的过程中、发现了与aes同样的问题、就是openresty支持的填充模式不够多。关于这一点可以直接使用C语言实现一份、在通过ffi调用C的api进行加解密。不过我不会C语言......而且好像使用C来做也是特别的麻烦。所以就只能修改java了、让Java使用openresty支持的填充方式。openresty模式的包里面是没有rsa支持的。需要去下载一份、下载地址:GitHub -

2022-07-09 10:36:33 990

原创 openresty Aes解密 Java 加密

之前提到、会采用openresty作为网关进行加解密。在实践的过程中、第一步就要调整代码了。我们之前Java采用的是AES/CBC/PKCS5Padding的填充方式,而openresty的aes.lua里面采用的是openssl的、默认的填充方式是AES/CBC/PKCS7Padding的。而Java本身的加密包是不支持这种填充方式的。需要引入新的加密包bcprov-jdk18on(1.71这个版本对应jdk1.8),这个包能支持AES/CBC/PKCS7Padding的填充模式。AesBouncycas

2022-07-08 17:50:53 2296

原创 commons-io静态资源检查

主要功能是监听静态资源是否被改变。如果被改变了、需要即时预警。这里主要是使用commons-io来做文件的变动监听。如果文件或者文件目录发生了变动、就发送变动请求给后台的预警系统。文件操作监听类启动文件目录监测初始化 这样配置好过后、只要启动程序。就能监听指定的目录了。...

2022-07-08 11:59:59 254

原创 内部调用签名验签

在服务进行内部调用时、通常是不做认证鉴权操作的。这样就导致了我们的内部接口基本上都是暴露的。如果从内部发起请求、会导致我们之前做的一切都白费了。当然除了做内部调用签名之外、还可以在业务服务内部根据请求的token做鉴权的操作。在签名之前还应加上这里我们采用了内部调用做签名验签的方式。 这里的签名规则可以定义简单一下、参与签名的参数随机字符串、时间戳、以及节点名称、节点IP、还有密码盐就好了。然后采用SHA256或者MD5等算法做一个哈希值。验签的时候同样如此、对哈希值进行比对就好了。SHA25

2022-07-08 09:46:43 375

原创 RSA+AES数字信封加解密设计

登录认证、鉴权这些都做好了过后。就开始我们的加密设计了、这里采用了简化数字信封进行加密。首先客户端(浏览器)先请求一份RSA非对称密钥、如果我们采用了openresty或者有能力在nginx开发C模块的插件,就可以在这里保留一份用户的私钥,如果不行就直接在应用网关上面保存(也可以在应用网关直接读取redis获得);然后在浏览器发起请求的时候、请求体加密时本地自己生成AES密钥、在使用获得的公钥对AES密钥进行一次加密(加密结果放在请求头中),最后将请求发送到后端。后端先使用RSA的私钥解密请求头中的AES加

2022-07-07 18:16:06 1860

原创 后端认证鉴权

之前我们把redis缓存工具模块做好了、下面结合RBAC权限模型,我们来进行用户的认证鉴权设计。关于RBAC权限模型在之前的文章跟网上都有很多很详细的描述,这里就简单说一下、就是通过用户关联角色(多对多)、角色关联权限(多对多)、并且大部分系统还在角色与角色之间做了上下级关系。用来控制下级角色不能拥有上级角色没有的权限。有些系统还是组合权限的形式、给机构(部门)也跟角色挂钩。具体的根据业务需求来做就好了、反正最后我们的目的就是通过URL跟用户的token来校验当前用户是否拥有该URL的权限。

2022-07-07 17:25:13 633

原创 redis缓存存储

spring boot框架下,redis的连接以及redis序列化指定、redis过期监控、redis访问工具类

2022-07-07 16:36:31 676

原创 Web架构设计

上一篇说到了、常见的一些Web攻击方式以及一些防御手段。这一篇就说说怎么整合上一篇提到的防御手段来构建一套相对完全不管来说的安全一点的架构。这里我们只针对安全方面做设计、像是权限模型、登录这些就使用通用的RBAC模型来做权限的底层设计。我们专注与上层的认证、鉴权实现模块就好了。 这里最外面一层就使用nginx来做入口,当然有钱的并且有一定规模的肯定是上F5这些硬件负载均衡的。并且我们的静态资源(前端代码)也可以放在这里。前端资源因为是静态的、可以添加一些静态资源的监控、防止资源被篡改(给你的首

2022-07-07 16:07:05 1716

原创 Java web 安全

随着近年来各种安全问题层出不穷。客户的安全意识也得到了不少的提升。说一件本人遇到的吧、公司的服务被人删库了、比特币勒索。真的是删除的干干净净、就剩下一张表、里面的内容就是往指定的账号打比特币。也不敢真打......只能联系云运营商、通过镜像备份恢复了某一时段的数据。至今到底是哪里出了问题也不清楚。 直到后续各种json工具包的反序列化不断爆出漏洞、spring、就连spring security也不能幸免。最离谱的就是log4j了。现在想起来、这些漏洞应该早就掌握在黑客的手中了、相当于0day

2022-07-07 12:17:40 1285

原创 MAC VirtualBox CentOS7 安装PG13

mac telnnetca安装VirtualBox:Index of /virtualbox/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror在安装过程中可能会出现安装失败的情况,打开偏好设置,在安全与隐私的通用栏目下允许VirtualBox的运行。参照:MacOS虚拟机安装Linux(Ubuntu) - 知乎安装Linux CentOS7下载地址:Index of /centos/7/isos/x86_64/ | 清华大学开源软件镜像站 | Tsinghua Ope

2022-07-06 19:13:55 279

原创 Spring boot 集成Kafka

使用Spring boot集成Kafka进行消息测试

2022-07-06 19:01:49 258

原创 Spring cloud alibaba gateway 搭建

需要引入的jar网关本地配置网关的路由转发,这一段可以添加到配置中心启动类GatewayApplication:网关配置GatewayConfig:

2022-07-06 18:56:06 400

原创 Spring. boot 获取Nacos配置

需要引入的jar使用org.springframework.cloud的包不行,没法配置nacos的config,只能将程序注册到nacos去,使用不了配置中心功能。项目中配置好bootstrap.yml在到nacos的配置管理界面,添加对应的配置1、当前应用的配置注意配置名称,ali-gateway是应用的名称,dev是环境标识。nacos这里的group要跟应用程序里面的spring.cloud.nacos.config.group保持一致。2、公共配置注意配置文件名称要与spring.cl

2022-07-06 18:51:13 2312

原创 VUE element UI 搭建

VUE的环境安装这里就不多说了,我们直接开始element UI的安装。推荐使用开源中国的码云:Gitee - 基于 Git 的代码托管和研发协作平台创建好了过后,在从码云上,把仓库拉取到本地来。这里在执行之前,要注意一下目录跟项目名称,覆盖到我们本地从git拉取来的就行。当然你也可以先新建好项目过后在上传到git上去。我是一路回车等待完成过后,就可以运行了。到这里,我们的vue项目就创建起来了,接下来我们开始添加element ui组件如果安装不成功的同学,可以试试使用cnpm淘宝镜像(

2022-07-06 18:45:00 1870

原创 Spring boot + Mybatis集成Seata

我们可以直接下载seata在github上的示例:https://github.com/seata/seata-samples也可以参照示例自己写。首先,我们使用AT模式的话,必须要在业务站加上一个数据表undo_log。脚本就在https://github.com/seata/seata/tree/develop/script/client/at/db里面,我们使用mysql的需要注意的是,上面这个连接的脚本版本很低了,最好使用我下面这个,这个是从示例里面复制出来的。老版本的没有ID会报错:java.sq

2022-07-06 18:32:46 1174

原创 Seata服务端安装

Seata的服务端,就是我们上一章介绍的角色中的TC——事务协调者安装可以在官网下载页面下载:下载中心这里,我们直接从官网的连接中下载1.2.0的版本binary文件。下载完成后,直接解压到你想存放的目录就行了。解压后的目录如下:bin目录提供了Linux环境与windows环境的启动脚本conf目录提供了Seata的配置文件lib目录存储了netty中间件以及seata服务的jar包配置详细的配置文档:Seata 参数配置seata目前暂时提供了单机的file模式,跟高可用的db模式。就性能来说,肯定是f

2022-07-06 18:14:24 804

原创 Seata 初识

背景先交代一下背景,在2019年8月我们的微服务需要加上分布式事务支持,因为当时已经开发了很多模块了。所以只能找寻对代码入侵少的方案,当时选择了TX-LCN。它只需要启动一个管理端,然后在事务参与方的service层实现方法加上@LcnTransaction注解就能发起或加入分布式事务了。但是2020年年初,TX-LCN的作者(lorne)突然宣布由于一直没有解决资金问题,无法持续投入维护,而且随着TX-LCN框架的停滞,阿里的seata框架也已经慢慢顺势而来...上面就是TX-LCN作者的原话。那么

2022-07-06 18:05:06 327

原创 Kafka——windows安装

下载地址:Apache Kafka下载完毕后解压tar包,目录结构如下: 配置下载完成后,需要配置一下才能启动。在config目录的server.properties文件中调整一下日志的存放目录 先启动zookeeper在bin/windows目录下的执行启动命令(最好命令行执行,因为这样才能看到错误信息,不然报错了的话就会一闪而逝...) 这是什么鬼...命令提示符行字符串限制 - Windows Client | Microsoft Docs很奇妙的限制,我们把文件的路径往前移动一下吧... 我

2022-07-06 17:54:58 744

原创 采用openresty作为网关为静态资源鉴权访问

最近在项目中遇到了一个需求。新系统采用的fastdfs来做的文件服务。老系统是自己写的文件服务、里面存在大量的附件(上百G)、虽然是历史数据了但还是有访问的需求。老系统的数据也需要放到文件服务上面去、但是fastdfs不支持将文件直接复制到相应的目录、需要走fastdfs上传一次。然而上传到fastdfs过后附件的名称就会发生改变,这个时候就跟原数据库中的附件名称不匹配了。当然也可以在上传的时候记录下对应的文件名称的变化后的文件名称、但是考虑到数据量过于庞大、又要求快速上线。就想到直接使用nginx来配置一

2022-07-06 17:42:41 771

原创 mysql 连接查询在on中使用convert 导致扫描行数增长

因为表前期设计问题,导致要连接的两张表的主外键类型不一致.但是在生产库上已经调整为一致了,测试库没有调整.开发时Navicat美化sql会自动帮忙加上convert(`d`.`id` using utf8mb4)字样.不小心把这个sql复制到生产了.于是导致了sql变慢.加上了convert转换的解释结果:1 PRIMARY <derived2> ALL 102899300 Using filesort2 DERIVED a ALL 8 2 DERIVED u eq

2021-08-28 10:18:53 289

原创 spring boot项目采用jasypt加密配置文件

前言近年来,安全问题越来越受到了重视。我们以前在配置文件中明文存储配置信息,这种做法是不安全的,往往很多密码、关键ip端口等配置都是配置文件泄露出去的。还有一些是自研的运维系统,里面明文存储了很多关键信息。如果被黑客攻破,黑客很容易就得到了这些关键信息。从而威胁到应用的安全,数据安全,如果你的应用具有一定的规模甚至会影响到社会安全。所以保护好关键的配置信息、起码不要让黑客轻易的得到这些内容。有可能别人都不想犯错的。就因为犯错的按钮就放在那里、一冲动他可能就按下了。这里采用的是简单的模式:&

2021-07-13 10:59:59 1012 6

原创 Mysql 导入3亿数据

前言q时间,以前的同事问我,Mysql能不能导入3亿的数据。我脑子当时翁的一下,不太确定的说应该可以导入的吧!只是导入进去以后,可能会出现查询过慢的情况。于是马上百度了一下,发现有人干过这种事情,在Mysql上面导入亿级的数据(文章链接)。根据这篇文章的介绍,知道了原有的几个坑。第一个注意事项:索引第一个注意事项就是索引。建表的时候除了主键不要给别的字段建立索引。因为索引也需要创建,当我们数据量过大的时候就要注意,这个时候创建索引会导致我们的数据导入时间无限拉长。只需要留下一个自增ID做主

2021-07-01 11:09:32 865 1

原创 第九章:Spring Security 使用redis存储用户权限信息

前面我们使用了jwt的token来进行登录,但是只说明了它的好处,那么我们来讲一讲他不好的地方:消息体可以被base64解密为明文、不适合存放大量信息、无法作废未过期的token。显然我们准备要存储的东西非常多,用户信息+权限信息。所以我们考虑换redis来进行存储,抛弃jwt。集成<!-- redis连接 --><dependency> <groupId>org.springframework.boot</groupId> <a

2020-06-01 11:52:55 9010 6

原创 第八章:自定义异常返回

在程序运行的过程中,没有人能保证我们可以百分之百的没有BUG、没有异常。在程序爆出异常的时候,我们往往需要拦截一下,进行特殊的友好提示处理。那么这里我们将针对Spring Mvc跟Spring Security的异常做一些拦截。@RestControllerAdvice我们使用Spring mvc后,只需要在类上加上@RestControllerAdvice注解,就能够将程序大部分返回到客户端的异常进行处理import com.hzw.code.common.utils.ActionExc

2020-06-01 11:45:02 898

原创 第七章:使用jwt token的方式来进行登录

我们之前都在使用http session的方式来进行登录访问的。那么现在流行的是前后端分离的开发模式。而且我们也打算这样干。包括后期我们的小程序啊什么的,很多都不支持session的方式。那我们就使用token的模式来进行登录。jwttoken为什么要使用这个jwttoken呢?安全性高,防止token被伪造和篡改 自包含,减少存储开销 跨语言,支持多种语言的实现 支持过期,发布者校验主要有上面几点优势。安全性跟减少存储开销。好了,让我们来开始使用它吧!pom在pom中添加jar

2020-06-01 11:40:48 1210

原创 第六章:easyCode代码生成器

前言到了这里过后,我们剧本的架子已经基本搭起来了。我们可以开始进行大规模的表演了。在开始表演之前,我们要在采购一个道具,这个道具就是代码生成。我们很多的领域模型、vo、dto、entity等实体以及我们的dao层、service层、controller层、甚至我们的前端代码都能使用代码生成器进行生成。这样会节约我们很多的时间,让我们专注于业务上,不必在从数据库或者其他实体中来回的进行ctrl+c,ctrl+v。首先在我们的IDEA中安装easyCode的插件,但是安装之前有个小坑,因为需要用到IDE

2020-06-01 11:14:11 1962

原创 第五章:Spring Security 原理与权限认证

先说我们的目标,我们的目标是没有蛀牙。是使用Spring Security来帮助我们拦截那些没有权限,却又非要来访问我们的资源的操作。比如必须要登录了才能访问某一张图片,没有登录的话就不能访问,在比如没有新增用户权限就不能访问我们的新增用户的方法。原理Spring Security的主要(只是主要,不是全部)功能:认证(authentication),用户登录 授权(authorization),判断用户有什么权限,可以访问什么资源 安全防护,拦截跨站请求,session攻击等我们先来看看

2020-06-01 10:54:23 787

原创 第四章:配置Spring Security数据库用户登录,并创建RBAC模型设计

如果不是很了解他,可以参考下面的文档,对Security进行一次全面的了解https://www.springcloud.cc/spring-security-zhcn.html权限的话,我们就做成颗粒化,也就是控制到按钮的级别。现在我们先来加上Spring Security的jar吧集成<!-- SpringBoot 集成 Spring Security --><dependency> <groupId>org.springframewor

2020-05-29 17:56:26 910

原创 第三章:MyBatis-Plus跟pagehelper的配置

MyBatis-Plus当我们使用了mybatis-plus过后,就不需要在去pom中引用mybatis了。<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version></dependency>这里没啥

2020-05-29 16:41:44 7643 1

原创 第二章:给项目配置数据源,redis,security,swagger等工具jar

pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4

2020-05-29 14:53:33 676

原创 第一章:创建一个空的Spring boot项目

从Spring的官网上,创建一个spring boot 项目:https://start.spring.io/使用idea打开该项目,就可以运行了。。。项目的源码地址:https://gitee.com/gzsjd/fast项目使用的工具版本:InterlloJ IDEA 2020.1Mysql 8.0.15Redis 5.0.3前端WebStorm 2020.1nodenpmvueelement ui做这个项目并且写...

2020-05-29 14:29:18 1855

原创 第五章:minio配置nginx转发

很多时候,我们的minio文件服务器并不会直接开放端口给外网访问,那么外网又需要访问的话,就需要用到nginx或者其他web服务器来进行转发了。官网给出的文档:https://docs.min.io/cn/setup-nginx-proxy-with-minio.html这里我们使用nginx来进行转发,配置如下:server { listen 19000; server_name xxx.com IP地址; client_max_body_size 200M;

2020-05-26 17:49:14 4703 3

原创 第四章:minio的presigned URLs上传文件

当我们通过java的API上传文件的时候就会发现,我们把java的API封装了一下,提供了一个接口给其他应用调用,那么整个的上传流程就变成了“应用客户端”-->“JavaAPI端”-->“minio服务端”。中间通过JavaAPI转了一次。比如我们的“应用客户端”是web浏览器的时候,能不能直接从浏览器上传到“minio服务端”呢?答案是可以的,minio有提供JSSDK,我们可以通过JSAPI直接上传到“minio服务端”。JSSDK参考官网的文档:https://docs.min.i

2020-05-12 16:15:06 28580 29

原创 第三章:minio的javaAPI

在之前我们已经把minio的服务端,客户端,以及镜像备份都做好了,现在我们来试试通过java的API来操作minio。环境是Spring boot的版本是2.1.4.RELEASE参照官方的API文档:https://docs.min.io/cn/java-client-quickstart-guide.html配置首先我们先引入minio的maven配置:<!-- minio配置 --><dependency> <groupId>

2020-05-12 16:06:48 19649 13

原创 第二章:minio单机版,使用客户端备份文件

上一章我们已经成功安装了服务端,这一章主要介绍minio的客户端,我们主要使用客户端来做备份。这里就不多说啥了,我们开始吧。安装执行wget命令:wget https://dl.min.io/client/mc/release/linux-amd64/mc这里又遇到了同样的问题,就是下载巨慢,继续通过别的机器下载吧赋予执行权限:chmod +x mc[deptthree@ktwlrj78 client]$ wget https://dl.min.io/client/mc/relea

2020-05-12 15:58:04 10107 5

bootstrap-daterangepicker双日历选择

bootstrap-daterangepicker双日历选择+汉化+修改日期面板

2017-06-01

xUtils-2.6.14.jar

xUtils-2.6.14.jar,用于Android开发!

2015-11-26

使用HTML5 canvas 标签进行图片裁剪、旋转、缩放示例代码

使用HTML5 canvas 标签进行图片裁剪、旋转、缩放示例代码

2015-08-17

hMAilserver的webmail配置跟安装程序

包括AfterLogic Webmail Lite PHP跟WampServer集成环境!还有hMailServer的webMail配置文档说明。

2014-03-18

MySQL集群扩展Web数据库指南跟集群7.2新特白皮书

MySQL集群扩展Web数据库指南跟集群7.2新特白皮书

2013-05-03

SSH框架搭建——测试

SSH框架搭建示例、包含登录、分页功能! 详细描述请看博客!

2013-01-07

orai18n.jar

orai18n.jar

2012-12-27

Jquery 右键菜单插件、css样式

contextmenufunction.js jquery-1.4.2.js jquery.contextmenu.css jquery.contextmenu.js 里面的内容就这些。

2011-05-16

andriod 写的音乐播放器源码

andriod写的音乐播放器源码~~~~!欢迎下载!!!嘿嘿!!!

2011-04-22

ejb3.0实例教程.pdf

文档中不但有教程、还有实例~~~适合我们这种刚刚接触的新手!!!~~~~~~~~~~~~~~~~~~~~~~~超过20字!该死的!!!!

2011-04-14

jQuery 1.4API.chm文档

jQuery 的API 不用多说!!!该死~~~csdn应是说要描述超过20字~~~这有什么好说的???

2011-04-14

山茶网论坛源代码ASP

论坛源代码~~~资源齐全!欢迎下载!没有一点的封装或者加密处理。完全开放!!!

2010-12-24

Sun 公司出品----云计算入门指南

该书市由Sun公司推出的。书中学习云计算、从0开始!!!虽然Sun被甲骨文收购了、但是他的声音在我们这一带不会消失!

2010-12-23

Windows 系统DOS命令大全

网上收集的DOS命令、百分百齐全!欢迎大家收藏。

2010-12-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除