- 博客(58)
- 资源 (6)
- 论坛 (47)
- 收藏
- 关注
原创 C++中的线程同步
1. 背景知识线程是计算机科学中一个常见的概念,很多开发人员也在开发多线程程序。很多文章也都在讲如何创建线程,以及如何使用线程。但是,对线程背景的介绍还是比较少的,新人非常容易"陷入局优解",产生只见树木不见森林的现象,下面就我了解到的多线程背景给大家做一个介绍,希望可以起到抛砖引玉的作用。首先多线程是必须的,这一点应该不用质疑,就不多啰嗦了。当计算机先驱们意识到这一点的时候,做了两件事:...
2019-11-30 20:09:10
78
原创 跨服务器拷贝文件(SCP命令的使用)
操作前提:①你已经登录了本地服务器;②你知道远程服务器IP地址(假定为192.168.0.2);③你在远程服务器有Linux用户(假设为root)1. 本地文件 -------> 远程服务器假定想把本地计算机/home下的一个名为a.tar.tz的文件拷贝到远程服务器的/home/tmp。可以用这个命令:scp /home/a.tar.tz root@192.168.0...
2018-11-10 11:40:31
8063
1
原创 linux内核系列(2)——linux内核链表
因为高超的设计理念,linux内核中的链表被很多人津津乐道。实际上,链表本身只是内核提供的一组结构体、宏定义和函数的集合,与linux内核本身没有直接关系。内核链表的设计思路已经在另一篇博客中写了,有兴趣的同学可以去看一下,这里是链接。今天,我们来看一下真实内核链表的基本操作过程。我们的目标是做一个内核模块儿,在模块儿内使用内核提供的链表,完成构建节点,插入节点,排序节点,输出节点等一系列操作
2017-04-23 17:35:34
392
原创 linux内核系列(1)——内核模块儿的编写
linux内核有一个很强大的功能就是可以动态加载模块儿,这里说的模块儿其实就是一个内核支持的小程序。在真正进入linux内核世界之前,我们可以先过一把瘾,自己加载运行一个内核模块儿。既然模块儿就是程序,我们就先来写一个小程序,这里还是拿最简单的“Hello World”程序来举例子。我们先上代码,然后再讲解。#include #include #include MODULE_LIC
2017-04-23 09:54:18
471
原创 C语言中指针与数组的区别与联系
好久不写东西了,从毕业以来,整个人都懒散了很多。今天终于鼓起勇气,来写一点儿东西……指针与数组对于C语言程序员来说肯定不会陌生,一说起这个话题,我就想起了曾经被内存、地址、地址里的内容这些概念狂虐时的情形。经过三年的学习,加上最近又看了一些这方面的书籍,现在自我感觉对这方面已经有了一个比较全面的理解,分享出来,和大家共勉。 1.指针与数组的爱恨情仇为什么这一块儿内容很绕呢?我想主要...
2017-02-03 17:29:50
36487
9
原创 程序优化的几个层次
计算机是人类发明的最强大的工具,而程序是人和计算机交流的工具,从我们遇到一个问题到cpu中进行的电位的运算,这个过程大致可以分为四个步骤:建模、编码、翻译、执行。这几个过程完成的质量关系到我们的问题是否能够解决,以及解决的速度和质量等。所以要想编写正确高效的程序,需要对这几个部分分别把控。实际上,现在我们已经有很多科学是在研究这些过程,目的就是能更好的完成它们。先来说一下建模,建模是解决问题的
2016-09-20 20:10:32
1188
原创 makefile书写入门
首先声明,本篇文章是根据陈皓博客中的相关文章改写的。原因是那篇文章太全面了,而本文抽取了其中比较实用的几点,以一个使用者的角度来说明一下,makefile改怎么写,而且只限定是linux下的C语言的makefile,其他概不讨论。如果你对原文感兴趣,这里是链接makefile简介makefile是一个工具,是帮助我们编译和链接程序的。我们都知道,C程序从源文件到一个可执行文件需要预处理、编
2016-07-29 16:54:06
7943
3
原创 TCP协议的连接机制---三次握手信号的原理
这篇文章是写给什么人看的?网络编程是现代计算机编程中不可缺少的一个环节,这里面的程序员主要分为两种类型:一种是专门搞网络编程的,估计是一些通信专业的童鞋,他们的任务是管理整个网络的通信;第二种是使用网络作为一个传输介质的的,最常见的就是使用socket编程的人,他们一般只是使用一些接口函数来完成通信任务。这两种人的关系就好比是修路人和走路人的关系,而这一篇文章是面向走路人的,更确切的说,就是帮
2016-07-28 09:54:21
5712
原创 回调函数初识
先从库函数说起吧,学过编程语言的人对函数库的概念应该都不陌生。C中的stdio.h,C++中的iostream,java中的java.util.*等等。这些库都是大师为了方便设计者使用语言而写的,我们在程序开发中无时无刻不在和这些库打交道。当然,我们还可以设计自己的库,将我们写好的
2016-07-27 16:53:10
402
原创 信息的表示和处理
这是《深入理解计算机系统》(第二版)的第二章,原文大概有60页的篇幅,主要讲述各种类型的信息是如何在计算机系统中表示并处理的。这么多的内容,一篇博客是很难详尽的,所以本文就摘取了其中个人认为比较重要的部分,加上个人的一些理解讲给大家,希望可以给新人一些帮助,能起到一点儿抛砖引玉的作用。前言再次强调,计算机系统中的所有信息都是以二进制形式存储的,系统以二进制的记载形式表示着大千世界的所有信息
2016-07-27 10:39:08
986
原创 计算机系统漫游
计算机系统由硬件系统和软件系统组成,它们共同协作来完成执行程序的任务。作为20世纪(世界上第一台计算机ENIAC与1946年诞生于美国的宾夕法尼亚大学)最伟大的发明之一,计算机系统可以说是人类迄今为止创造的最复杂最精密的工具。今天,借助计算机界的圣经教材《深入理解计算机系统》,我来带领大家探索一下计算机系统的秘密。1 信息就是位 + 上下文计算机是信息学科的产物,其主要左右就是帮助人们处理
2016-07-18 15:43:35
1362
4
原创 试着从问题出发
“方法总比问题多”,相信大家对这句励志名言都不陌生,还有一些大师以此为题写成了著作。不过作为一个理科生,我对这种的心灵鸡汤是没有太多兴趣的。从理性的角度出发,现实生活中的“方法”和“问题”的数量都是无限,也就是存在无穷多个“方法”和无穷多个“问题”,所以并不存在谁比谁多的问题!不过我们倒是可以从中发现一个有趣的关系,即“问题”和“方法”的关系,我们这里指的方法是对应问题的方法,即问题的解决方法
2016-05-28 18:54:20
741
原创 实现自己的字符串拷贝函数Strcpy
strcpy是C语言的库函数,用于完成字符串的拷贝,很多笔试面试过程中要求我们自己实现这个函数。字符串拷贝本身并没有太多技巧,可以利用最后的'\0'作为界限,用循环完成拷贝,代码如下char *Strcpy(char *strDst, const char *strSrc){ //功能:实现字符串的拷贝 //说明:要求两字符串内存区域 不可以 有重叠 // 负责添加'\0' //
2016-05-13 08:39:15
5637
原创 数字与字符串之间的转换
C语言为我们提供了数字和字符串之间的转换函数,这些函数有很多,常用的有:整型数转字符串函数itoa():char *itoa(int value,char *string,int radix);//int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等浮点数转字符串函数gcvt():c
2016-05-12 11:09:30
6195
原创 排序算法初识
什么是排序从字面上理解,排序的过程就是把无序变成有序的过程。从应用来说,可以分三个层次理解:①整数排序,这是所有程序员刚接触排序算法时的直观感受,输入一些随机整数,然后将其排序后输出出来。②关键字排序,用过Excel排序的人对此应该不陌生,我们可以根据不同的关键字对数据记录进行排序,还可以有排序主字段和二级字段等概念。③按要求排序,这是广义上的排序方法,举个例子,我们在玩儿某些扑克
2016-04-27 11:36:35
406
原创 #include与using的区别
这是一个C++里的老问题了,就像sizeof与strlen一样,困扰着很多初级程序员,所以估计看这篇文章的读者大都也是刚入门C++不久的新手,所以就不谈那些大道理了,而且那些文章已经不少了。本文将从一个个程序试验入手,让大家对问题有个比较充分感性认识。也希望大家不要手懒,有条件还是跟着一步一步做的好。毕竟学程序,敲代码的过程谁也替不了你。让我们先看一个简单的:(命名为main.cpp)
2016-04-17 20:37:31
3996
3
原创 链表的艺术——Linux内核链表分析
引言:链表是数据结构中的重要成员之一。由于其结构简单且动态插入、删除节点用时少的优点,链表在开发中的应用场景非常多,仅次于数组(越简单应用越广)。但是,正如其优点一样,链表的缺点也是显而易见的。这里当然不是指随机存取那些东西,而是由于链表的构造方法(在一个结构体中套入其同类型指针)使得链表本身的逻辑操作(如增加结点,删除结点,查询结点等),往往与其应用场景中的业务数据相互混杂。这导致我们每
2016-04-15 20:19:03
1187
原创 对三层架构的浅层理解
最近做项目一直被扩展性弄的焦头烂额,经常是加一个功能就要修改好多代码,直到最后代码一团乱麻再也不能维护了。所以决定花些时间学习一下传说中的三层架构,由于是刚刚接触,文章写得不是很上档次,只适合架构小白作为一个入门级别的东西。麻雀虽小,五脏俱全,我们先从为什么要三层架构谈起,然后介绍一下什么是三层架构,最好说明三层架构的设计要点。先说为什么。三层结构是一个上档次的名词,一般刚学程序的时候不会
2016-03-22 21:37:50
553
原创 当程序设计遇到难题时
如果遇到的问题比较复杂而不能很快解决,那要做的第一点是让自己动起手来,千万不要守着问题发呆,一定记住,无论是做什么,一定要让自己跨出第一步,跨出第一步的方法有几个,今天来总结一下:1.举一个例子问题逻辑比较复杂抽象,那就用一个具体的例子来让它变得有血有肉。找一个小一点的例子,从头到尾把问题走一遍,对理清问题脉络、找到问题的难点、关键点是非常重要的。2.将思路写下来有时候我们既要理清
2016-03-14 09:38:48
624
原创 提高C++程序执行效率的几点方法
首先要明确一点,C++的效率是C++的必要生命元素之一。C++是面向对象的,但同时也支持所有C的编程方法。这使得我们大部分C++程序在面向过程和面向对象之间徘徊,这也正是C++的优点之一,程序员可以决定多大程度上面向对象以提高开发速度并降低维护成本,同时他们还可以决定多大程度上面向过程以提高运行速度。当然,C++是无比繁杂的,这些大思想可以偶尔拿来装一下,一直讨论则是无益的,脚踏实地的学习知识点才
2016-02-23 10:19:53
5106
原创 程序调试的一般思路
每个程序员的很多时间都在和bug打交道,而debug的过程总不那么令人高兴。本人在调试过程中总结了几点调试程序的一般方法,写出来和大家分享,能力有限,欢迎各位大神批评指正!1.单步调试从问题程序的起点开始,单步执行程序观察变量的变化过程,是最基本的程序调试方法。这种方法适合错误定位范围较小的程序,并且要求我们知道正确的变量值应该怎样变化,通过对比当前值和理论值来发现错误的代码点。2.断
2016-02-21 21:38:14
1582
原创 观影小结
如何拍一部伟大的电影?这是每个导演时刻都在考虑的问题,我们这里不是要开设导演课程,而是从一个观影人的角度来分析一下经典电影为何能够成为经典?首先来说,每一部的电影都是一个故事,一部伟大的电影就是一个生动的故事。故事中所有情节的发展都是靠矛盾来推动的,没有矛盾就没有剧情,矛盾的“质量”决定了剧情是否能够引人入胜能够多大程度上引起观者的共鸣,所以要组成一部伟大的电影,就必须精心设计、雕琢我们的
2016-02-14 08:05:56
542
原创 回溯法小结
背景介绍:回溯法是一种穷举类型的算法,与其说它是一种算法,倒不如说它是一种试法。回溯法并没有什么高深的算法思想,虽然名字起的很高规格,但其实它的算法性连二分查找都比不上。这里说的算法性其实就是指技巧性,对问题特性了解越深入,越能创造出很巧妙的算法,在时间复杂度的级别上提高算法效率。这体现了算法效率与适用性之间的矛盾,二分查找效率很高,但适用性比较低,类似的还有著名的KMP算法。而穷举法效率最低,但
2015-12-31 11:12:18
5318
原创 动态规划与贪心算法的区别
本来这次是该总结动态规划的,但在学习过程中发现动态规划和上一节的贪心算法有很大联系,而在算法设计过程中主要是对两种算法的选择,所以决定这次以对比的方式做总结,既可以更深入地了解动态规划,又可以对贪心算法有个新的认识。背景介绍:这两种算法都是选择性算法,就是从一个候选集合中选择适当的元素加入解集合。
2015-12-11 18:34:22
9918
1
原创 LeetCode 28_Implement strStr()
这是今天的第三题了,也是leetcode第28题,算法的难度也是easy,但字符串匹配这个问题本身是一个非常重要的问题。而其算法有相对简单的,有比较难的,今天我们来讲一个比较有深度的方法。当然,算法难了肯定是有时间复杂度的好处的,正所谓无利不起早嘛。好了,还是先看题目吧Implement strStr().Returns the index of the first occur
2015-11-25 19:48:06
537
原创 LeetCode 27_Remove Element
这个题亦不是很难,并没有太多可说的,我们尽快结果了它吧。题目也是要从数组中移除元素的,但算法还是有点儿小差别的,算是两个不同的小技巧吧。看题Given an array and a value, remove all instances of that value in place and return the new length.The order of element
2015-11-25 15:54:40
397
原创 LeetCode 26_Remove Duplicates from Sorted Array
又有一段时间没有更新了,时间是非常的不够用啊,今天抽点儿时间,多刷几道吧。这次是leetcode第26题,题目难度是属于easy的那种。并没有涉及什么高深算法,属于刚学C时练手的题目。这种题目对于我们来说是应该一次通过的,如果这个还要修修补补那只能说明你态度不端正了。废话不多说,看题Given a sorted array, remove the duplicates in p
2015-11-25 15:30:21
444
原创 贪婪算法小结
背景介绍:贪婪算法可以说是离我们生活最近的一种算法,人总是贪婪的嘛,所以这种算法的设计是很符合人性的。之所以这么说,是因为人们会在生活中有意无意的使用贪婪算法来解决问题。最常见的就是找零钱了,每个人都没学过该怎么找零钱,但在所有面额的钱都充足时,每个人都会找出同样组合来凑够需要的钱。其实这里面就是贪婪算法在起作用。设计思路:贪婪法的设计思路可以从两方面来理解,即直观上和数学上。从直观上理解贪婪
2015-11-24 22:06:57
9061
原创 分治法小结
这几天看完了分治算法,今天来做一个总结。算法背景:分治法是算法学习中遇到的第一个算法设计思路(递归其实更偏向于一种编程技巧而并非单独的算法),但算法并不像刚接触算法的人该学习的内容。说白了,算法还是比较难的。分治法是一种说起来简单做起来难的算法。说起来简单是因为算法的设计思路是完全符合人的思维过程的:分而治之嘛,在面向过程的程序设计中我们都有这样的体会,把一个复杂的问题模块化,每个模块实现
2015-11-19 16:01:06
3248
原创 LeetCode 25_Reverse Nodes in k-Group
今天周末了,有点儿闲暇时间,来写一道吧。刚开始看这题感觉和前面24题一样,所以就有点儿“轻敌”了,编了一会儿才发现不是那么回事儿,问题还是比较难的,后来才发现难度是hard,看来这个难度还是挺准的。其实这个东西难点主要还是链表的指针操作,因为涉及的过程比较复杂,而指针本身就是一个复杂不好操作的东西,所以实现起来就有难度了。还是先看题目吧。Given a linked list, r
2015-11-15 09:40:10
429
原创 LeetCode 24_Swap Nodes in Pairs
这几天真是忙的不可开交,主要是因为要学的东西太多了,本人又有完美主主义倾向,所以对于一些知识就非常浪费时间,这样做有点好处就是理解深刻,但缺点就是太费时间。话说回来,算法这种东西,是有必要深追究的,因为这是往大了说是一个创造的工作,往小了说最起码也是匹配吧。你最少得知道什么情况该用什么算法吧,如果你只是把一个算法翻译成代码(当然这也不是一个简单的工作),那你学的算法是完全没有用武之地的,甚至那根本
2015-11-13 21:07:09
400
原创 递归算法小结
写下这个题目,心里还是有点儿发虚的,因为自己作为一个算法新手,在这个地方大谈递归算法实在是有点儿不知道天高地厚的感觉。先说这篇文章的性质以及适合人群,这篇文章是个人学习算法过程中的一个总结,没有太多高深的东西,但也尽量能够做到生动具体并对递归的精髓有所触及。如果你是算法大神,那恐怕会让你失望,如果你也是刚刚接触递归算法,倒是可以读一读,我保证是不会有坏处的。背景介绍:递归是一种基于归纳思想
2015-11-11 11:33:26
3743
原创 LeetCode 23_Merge k Sorted Lists
今天再来写一道,时间过得很快,得加快点儿进度了。这次是leetcode第13题,难度为hard,算是比较难的题了,但我想这个难度和代码量有关系,这个题真正涉及的算法并不是很高深,对归并排序有所了解的人都应该可以想到正确的算法,关键还是对于合并排序的理解吧。原题如下:Merge k sorted linked lists and return it as one sorted lis
2015-11-09 10:14:40
519
原创 LeetCode 22_Generate Parentheses
记得上一次更新是很久以前了,大概有一个半月了吧,这里我要说明一下,不是本人放弃不写了,而是在做题的过程中越发感受到自己理论知识的缺乏,直到做到这一题,也就是第22题,我终于是忍不住了,花了一个多月的时间从头到尾学习了一遍数据结构,算法书也看了一些。在这过程中我发现自己以前的思路简直就是小儿科!我是完全凭着一腔热血在编,前面很多题的解法都是不入流的!然而,这并不是说前面的努力都白费了,甚至这些努力更
2015-11-07 16:48:53
369
原创 LeetCode 21_Merge Two Sorted Lists
这两天时间比较充裕,就多写几道吧,现在是农历八月十五晚上八点多,外面皓月当空,夜色如水,搞得我都诗兴大发了,这真是窗前明月光,疑是地上霜,举头望明月,低头思故乡啊。。。好了不扯皮了,今天给大家带来的是第21题,也是一道比较简单的题目,考察的点很单一,就是链表这种数据结构的基本操作,还是那句话,数据结构这门课大家一定要学好啊,计算机相关专业的一定要仔细听讲,认真做题,非计算机专业的自己也应该找本
2015-09-27 20:52:35
514
原创 LeetCode 20_Valid Parentheses
说明一下,这道题是后来补的,因为后面两道比较顺手,所以先写的后面两道,不过大家也不用担心,并不是说这一道很难还是怎么着,算是有点儿深度的第一题吧。现在是农历八月十四晚上七点多,没错,就是中秋节前夜,身边的朋友大多回家或出去玩儿了,实验室就剩我自己这个孤家寡人了,想想也是有点儿凄凉,哎,这就是命运啊!不过还好可以在这里发泄一下心情,希望自己的坚持有一天能有所收获吧,不说没用的了,来看看题目吧
2015-09-26 19:59:52
333
原创 LeetCode 19_Remove Nth Node From End of List
这么多天了,才刷到20题,真是伤心啊,不过毕竟坚持了下来了,也算对得起自己了,这道题的难度也是简单,不过倒是挺有意思的,实现的方式也比较多,用来学习算法还是不错的。Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string i
2015-09-26 10:51:09
432
原创 LeetCode 18_4Sum
中秋节快到了,多写几道吧,今天打算刷到第20道,这是第19道,没有太多可说的,不是滥竽充数啊,确实是题目简单,就是考察了一个链表的一个基本性质,至于是什么性质,我们一会儿再说,先来看题吧Given a linked list, remove the nth node from the end of list and return its head.For example,
2015-09-26 09:56:43
315
原创 LeetCode 17_Letter Combinations of a Phone Number
快中秋节了,心情不佳,多写几道吧,只有编程能带给我片刻的宁静啊。。。今天给大家讲一下第17题,难度为中等,这个题目考察的到不是什么高深的算法,考的是对编程技巧的掌握吧,对语言应用方面要求多余算法设计的要求。题目的背景挺有意思,一起来看一下Given a digit string, return all possible letter combinations that the nu
2015-09-25 10:59:07
495
document.nyf
2019-08-23
内存地址空间映射
2018-11-05
tortoiseGit.zip
2017-12-13
为啥我用tcpdump抓的包跟别人不一样,这是什么鬼
发表于 2021-01-19 最后回复 2021-01-19
free到底做了什么?
发表于 2020-12-16 最后回复 2020-12-16
为什么都是linux系统,x86这种就很稳定,各种嵌入式就很不稳定呢?
发表于 2020-11-13 最后回复 2020-11-13
so动态库什么时候会内嵌自己的名字???
发表于 2020-10-21 最后回复 2020-10-21
正则表达式 大神,进来看一眼
发表于 2020-04-24 最后回复 2020-04-26
C 语言中可变长度数组是怎么实现的
发表于 2020-03-29 最后回复 2020-03-29
unique_ptr可以自动释放内存,为什么我的例子没有释放呢??
发表于 2020-03-27 最后回复 2020-03-28
C++11 中的shared_ptr的reset()有点儿疑问
发表于 2020-03-10 最后回复 2020-03-11
C++ 模板类型确定问题
发表于 2020-03-07 最后回复 2020-03-10
华为C++研发岗一轮被刷,我的小心脏啊。。。
发表于 2016-03-17 最后回复 2019-11-13
如何暂停/启动某个用户的所有进程啊????大神们
发表于 2019-06-19 最后回复 2019-06-19
调用函数时的压栈过程
发表于 2015-12-09 最后回复 2018-04-25
current宏是怎么工作的???
发表于 2016-12-01 最后回复 2017-02-20
关于页表的一点儿疑问
发表于 2017-02-13 最后回复 2017-02-16
关于C语言链接器的问题,有知道的吗??
发表于 2017-02-04 最后回复 2017-02-06
书上这段话不是很理解,什么意思啊???
发表于 2016-11-24 最后回复 2017-02-04
上传的文件微调后写入数据库怎么做?
发表于 2016-10-11 最后回复 2016-11-24
关于C++宏定义的两个小问题
发表于 2016-09-13 最后回复 2016-11-24
新手,用什么软件打开php程序?
发表于 2016-09-07 最后回复 2016-09-08
超链接点击历史怎么记录啊
发表于 2016-08-30 最后回复 2016-08-30
新手,各位大神帮忙看看啊。。。
发表于 2016-06-29 最后回复 2016-08-14
ASP.NET工程里没有查询数据库的语句但能查询出结果是怎么回事儿?
发表于 2016-08-05 最后回复 2016-08-07
都是2008,为什么附加失败啊
发表于 2016-08-06 最后回复 2016-08-07
Linux下C++做web开发需要什么环境??
发表于 2016-06-28 最后回复 2016-07-06
我能发个八卦问题吗?
发表于 2016-07-04 最后回复 2016-07-05
新手,问一个问题
发表于 2016-06-24 最后回复 2016-07-01
新手,请教一下java web的学习方法
发表于 2016-06-28 最后回复 2016-06-29
怎么把Unix时间戳变成一般时间啊
发表于 2016-05-30 最后回复 2016-05-31
引用改指针的问题,大神请进
发表于 2016-05-11 最后回复 2016-05-11
转义字符的迷惑
发表于 2016-05-06 最后回复 2016-05-06
数据封装,是否容易导致封装过度?大神们怎么看
发表于 2016-04-21 最后回复 2016-04-24
找工作是该看发展呢还看工资?
发表于 2016-02-23 最后回复 2016-04-15
各位大神,java中的sql语句怎么组织呢???
发表于 2016-03-22 最后回复 2016-04-15
Linux怎么这么难学呢?没法入门啊感觉
发表于 2016-04-11 最后回复 2016-04-13
这段话什么意思啊?大神进来看看
发表于 2016-04-12 最后回复 2016-04-12
C++中声明语句返回的是什么啊?
发表于 2016-03-28 最后回复 2016-03-29
怎么让别的文件不能访问本文件中定义的类?
发表于 2016-02-24 最后回复 2016-02-27
C++调用约定,都一样啊
发表于 2016-01-14 最后回复 2016-01-15
论坛里结贴总是出问题啊
发表于 2015-11-28 最后回复 2015-12-23
C++是否应该尽量少使用无符号数
发表于 2015-12-04 最后回复 2015-12-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝