自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 资源 (8)
  • 收藏
  • 关注

原创 气象数据分析代码

package hadoop.test.csc;import java.io.IOException;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import org.apache.hadoop.conf.Configuration;import

2014-03-02 11:17:48 3163 1

原创 Hadoop Datanode节点无法启动(All directories in dfs.data.dir are invalid)

查看日志:[root@slave01 mapred]# tail -100 /opt/modules/hadoop/hadoop-1.0.3/libexec/../logs/hadoop-hadoop-datanode-slave01.log 2013-11-12 19:19:22,650 INFO org.apache.hadoop.hdfs.server.datanode.DataNod

2013-11-13 13:04:25 8159

转载 myeclipse配置hadoop开发环境,及遇到问题解决

eclipse版本:eclipse-jee-indigo-SR2-win32 1、安装Hadoop开发插件     hadoop安装包contrib/目录下有个插件hadoop-1.2.1-eclipse-plugin.jar,拷贝到eclipse根目录下/dropins目录下。2、 启动eclipse,打开Perspective:【Window】->【Open Persp

2013-11-12 00:06:23 12538 4

转载 Hadoop实验学习笔记(参考)

实验环境:Ubuntu 12.04,Hadoop-1.1.2, VirtualBox 虚拟机 3-4 台192.168.1.7 hadoop-master192.168.1.8 hadoop-slave1192.168.1.9 hadoop-slave2为分离NameNode 和 SecondaryNameNode ,新建以下SecondaryNameNode节点192.168

2013-11-11 23:47:25 1236

原创 redhat ”This system is not registered with RHN”的解决方案

1.卸载rhel的默认安装的yum包查看yum包rpm -qa|grep yum卸载之rpm -qa|grep yum|xargs rpm -e –nodeps2.下载新的yum包 根据不同的版本选择上级目录,64位的需要选择x86_64wget http://centos.ustc.edu.cn/centos/5/os/i386/CentOS/yum-3.2.22-40.el5.

2013-10-27 18:02:43 785

原创 Linux下安装yum工具

[root@localhost ~]# yum -y install fonts-chineseLoading "rhnplugin" pluginLoading "security" pluginThis system is not registered with RHN.RHN support will be disabled.Setting up Install ProcessP

2013-10-27 17:42:12 17010 3

翻译 Hadoop与之对应的Hbase版本问题

原文连接地址:http://hbase.apache.org/book.html  The below table shows some information about what versions of Hadoop are supported by various HBase versions. Based on the version of HBase, you should

2013-10-26 19:18:08 10721 2

原创 Hadoop web监控界面加上安全机制设置

1. 配置core-site.xml,并scp到其他节点 2. 手动创建 ${user.home}/hadoop-http-auth-signature-secret 文件,并sep到其他节点 3、重新启动后发现如下错误,确认是该Hadoop版本不支持: 4、升级Hadoop版本,新版本为Hadoop1.2.1,升级过程如下; 1:运行dfs

2013-10-25 00:18:45 8780

原创 org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs

1、hadoop-root-datanode-master.log 中有如下错误: ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in导致datanode启动不了。 原因:每次namenode format会重新创建一个n

2013-10-20 02:18:47 3163

原创 Hadoop format的时候The directory is already locked

Cannot lock storage /opt/data/hadoop/hdfs/name. The directory is already locked.  2012-05-20 22:13:05|  分类:Hadoop |  标签:|字号大中小 订阅[root@nn01 bin]# ./hadoop namenode -format13/10/2

2013-10-20 02:13:55 7420

转载 在hadoop启动的时候,会出现各种各样的问题

在hadoop启动的时候,会出现各种各样的问题,NameNode,JobTracker等各个模块都会有莫名奇妙的问题出现,在这里对hdfs的问题进行一下简单的记录1:HDFS initialized but not 'healthy' yet, waiting...这个日志会在启动hadoop的时候在JobTracker的log日志文件中出现,在这里就是hdfs出现问题,导致DataNod

2013-10-20 01:10:42 15010 2

原创 Hadoop 子项目HIVE安装版本选择

DownloadReleases may be downloaded from Apache mirrors.Download a release now!On the mirror, all recent releases are available, but are not guaranteed to be stable. For stable releases, look

2013-09-04 12:48:29 2628

原创 Hadoop的namenode无法启动问题(50070无法访问,50030可以访问)

2013-08-31 10:29:31,241 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.java.io.FileNotFoundException: /opt/data/hadoop/hdfs/name/current/VERSION (Permiss

2013-08-31 10:45:40 15184

原创 JAVA-设计模式之迭代器模式

迭代器模式(Iterator):提供一种方法顺序访问聚集对象对象各个元素,而不暴露该对象的内部表示;      package caosc.javaModel.Iterator;//迭代器抽象类public abstract class Iterator { public abstract Object first(); public abstract Object n

2013-08-14 14:30:21 723

原创 JAVA-设计模式之备忘录模式

package caosc.javaModel.Memento;//发起者public class Originator { private String status; public String getStatus() { return status; } public void setStatus(String status) { this.s

2013-08-14 13:49:54 707

原创 JAVA-设计模式之适配器模式

适配器模式(Adapter):将一个类的接口转换成客户需要的接口,Adapter模式使得原本不兼容的接口而不能一起工作的那些类可以一起工作,也叫翻译者模式;    package caosc.javaModel.Adapter;//可以期待的接口,目标可以上具体的或者抽象的类也可是接口public class Target { public void

2013-08-14 13:26:46 564

原创 JAVA-设计模式之命令模式

命令模式:将请求封装成对象,从而可使用不同的请求对客户进行参数化,对请求进行排队,撤销等操作。  package caosc.javaModel.Invoker;public interface Command { public String getReceiverCommand(); public void execute(); } pa

2013-08-12 20:14:09 752

原创 JAVA-设计模式之中介者模式

package caosc.javaModel.Mediator;public abstract class Colleague { protected Mediator mediator; public Colleague(Mediator mediator) { this.mediator = mediator; } public abstract vo

2013-08-12 18:04:59 733

原创 JAVA-设计模式之原型设计

从一个对象创建另外一个可定制的对象,而且不知道任何创建的细节; package caosc.javaModel.ProtoType;public interface Prototype extends Cloneable{ public Object clone();}  package caosc.javaModel.ProtoType;

2013-08-09 19:30:32 629

原创 JAVA-设计模式之门面模式

package caosc.javaModel.Facade;public class FacadeSystemOne { public void systemMethodOne(){ System.out.println("系统A方法!"); }} package caosc.javaModel.Facade;public class

2013-08-09 17:27:32 559

原创 JAVA-设计模式之模板方法模式

模板方法模式特点:1、模板方法模式通过把不变的行为搬移到超类,去除子类中重复的代码体现优势;提供一个很好的代码复用平台;2、当不变的行为与可变的行为混杂在子类中的时候,不变的行为就会在子类中重复的出现,通过模板方法模式将这些不变的行为搬移到单一的地方,摆脱子类复杂的的不变行为的纠缠 ; package caosc.javaModel.Template;public abst

2013-08-09 14:36:35 522

原创 JAVA-设计模式之单例模式

单例模式(Singleton) :保证一个类仅有一个实例,并提供一个访问它的全局访问点;  单例模式因为Singleton类封装了它的唯一实例,这样它可以严格的控制客户怎么访问以及何时访问,简单说就是受控访问;单例对象通常作为程序中的存放配置信息的载体,因为它能保证其他对象读到一致的信息; 1、单线程环境代码:package caosc.javaModel.Sing

2013-08-09 13:39:59 656

原创 JAVA-设计模式之代理模式

代理模式(Proxy):对其它对象提供一种代理,以控制对这个对象的访问! package caosc.javaModel.Proxy;public abstract class Subject { public abstract void Request();} package caosc.javaModel.Proxy;public class

2013-08-09 10:57:11 618

转载 SHELL条件判断规则说明

shell中if做比较比较两个字符串是否相等的办法是:    if [ "$test"x = "test"x ]; then    这里的关键有几点:    1 使用单个等号    2 注意到等号两边各有一个空格:这是unix shell的要求    3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = te

2013-04-24 17:40:32 703

原创 采集linux进程资源SHELL例子

#!/bin/sh#错误捕捉log="./WaiGua_collector_process_`date +%Y%m%d`.log"ErrTrap(){ Retn_code=$? v_PID=$3 v_PPID=$4 echo "[`date +%Y-%m-%dT%H:%M:%S`]Cmd=$1, Line#=$2, PID=$v_PID, PPID=$v_PPID,

2013-04-24 17:35:59 696

原创 采集oracle资源shell脚本例子

#!/usr/bin/kshif [ $# -lt 1 ] ; thenecho "Usage:WaiGua_collector_oracle.sh dbconfigfile [datafilepath]"exitfi#获取脚本保存路径baseDir####################################baseDir=`echo ${0}|awk 'BEG

2013-04-24 17:34:40 818

原创 Linux-shell基础复习笔记

查看文件类型:file  xxx.log   增加文件执行权限:chmod +x  文件名称查看编码环境变量:env |grep LANGshell定位:外层应用程序>shell命令解析器>内核>硬件进程树查看:pstree查看VIM是否安装:rps -qa | grep vim 如果不喜欢vi喜欢vim:alias  vi=vim怎么样别名不消失(所有用户有效):

2013-04-19 00:45:47 675

原创 Struts2-boobooke-概述

2013-04-16 23:28:14 517

转载 DATABASE LINK

物理上存放于网络的多个ORACLE数据库,逻辑上可以看成一个单一的大型数据库,用户可以通过网络对异地数据库中的数据进行存取,而服务器之间的协同处理对于工作站用户及应用程序而言是完全透明的,开发人员无需关心网络的链接细节、数据在网络节点中的具体分布情况和服务器间的协调工作过程。 数据库之间的链接建立在DATABASE LINK上。要创建一个DATABASE LINK,必须首先在建立链接的数据

2010-05-12 12:52:00 509

原创 PLSQL基本知识

PLSQL基本结构*****************************************基本数据类型变量    1. 基本数据类型    Number 数字型     Int 整数型     Pls_integer 整数型,产生溢出时出现错误     Binary_integer 整数型,表示带符号的整数     Char 定长字符型,最大255个字符     Varchar2 变

2010-05-11 18:30:00 1030

转载 提高数据更新效率(UPDATE/INSERT)

有多种方法可以提高更新的效率.简单说来:1、暂停索引,更新后恢复.避免在更新的过程中涉及到索引的重建.2、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.3、创建一临时的大的表空间用来应对这些更新动作.=========================================================================不同看法如果UPDAT

2010-05-11 13:11:00 21819

原创 SQL、PL/SQL学习笔记

 1.SQL并行查询 alter session enable parallel dml execute immediate alter session enable parallel dml; --修改会话并行DML      select /*+parallel(a,4)*/ * from table_name a       select /*+parallel(

2010-05-10 13:25:00 1013 1

原创 如何确定Oracle数据库表中重复的记录

作为一个Oracle数据库开发者或者DBA,在实际工作中经常会遇到这样的问题:试图对库表中的某一列或几列创建唯一索引时,系统提示ORA-01452:不能创建唯一索引,发现重复记录。   下面我们以表code_ref为例来讨论这个问题及其解决办法。  ERROR位于第1行:  ORA-01452: 无法 CREATE UNIQUE INDEX;找到重复的关键字  Oracle系统提示

2010-04-25 00:20:00 895

原创 Oracle经验谈:删除DUAL表后的处理

 Oracle系统中dual表是一个“神秘”的表,网上有很多网友都对该表进行了测试,该表只有一行一列,其实该表和系统中的其他表一样,一样可以执行插入、更新、删除操作,还可以执行drop操作。但是不要去执行drop表的操作,否则会使系统不能用,数据库起不了,会报Database startup crashes with ORA-1092错误。   此时也不要慌乱,可以通过执行以下步骤来进行恢复。

2010-04-25 00:10:00 759

原创 修改Oracle数据库表的表空间

Oracle实际应用中,很多人可能会遇到这样的问题。处于性能或者其他方面的考虑,需要改变某个表或者是某个用户的所有表的表空间。通常的做法就是首先将表删除,然后重新建表,在新建表时将表空间指定到我们需要改变的表空间。如果该用户已经保存了大量数据,这种办法就就显得不是很方便,因为有大量数据需要提前备份出来。下面介绍一种利用数据库的导出/导入功能来实现重新组织数据库表空间的方法。   下面是一个简单

2010-04-24 23:44:00 1560

原创 Oracle数据库几种不同的数据库启动和关闭方式

Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能。   一、启动和关闭Oracle数据库   对于大多数Oracle DBA来说,启动和关闭Oracle数据库最常用的方式就是在命令行方式下的Server Manager。从Oracle 8i以后,系统将Server Manager的所有功能都集中到了SQL*Plus中,

2010-04-24 23:33:00 2594

原创 Oracle查询 rownum和rowid的区别

在Oracle中,有一个很有趣的东西,那就是rownum。当你从某个表中查询数据的时候,返回的结果集中都会带有rownum这个字段,而且有时候也可以使用rownum进行一些条件查询。   在查询中,我们可以注意到,类似于“select xx from table where rownum 1)这样的查询是有正确含义的,而“select xx from table where rownum =

2010-04-24 22:40:00 534

原创 探讨Oracle数据库存储过程的若干问题

1.在oracle中,数据表别名不能加as,如: select a.appname from appinfo a;-- 正确 select a.appname from appinfo as a;-- 错误 也许,是怕和oracle中的存储过程中的关键字as冲突的问题吧 2.在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论

2010-04-24 22:06:00 663

原创 大型Oracle数据库迁移解决方案

大型Oracle数据库迁移解决方案 大型Oracle数据库的迁移需求和挑战   随着业务的不断拓展,我们经常需要对系统进行调整,比如:存储系统升级、服务器升级、平台的迁移、数据库版本升级等等,这些情况我们都需要借助数据迁移工作来完成。在迁移过程中,我们经常会遇到一些很难解决的问题。因为,如果是在相同的操作系统平台、或相同的数据库平台之间做数据库的迁移,会

2010-04-24 18:11:00 16011

原创 用最简单的方法复制或迁移Oracle数据库

 在DBA的日常工作中,经常需要重装或在新机器上安装Oracle,但每次安装所浪费的时间、精力以及失败的挫折都在考验着DBA的承受能力,本文着重介绍了一个简单的复制和迁移Oracle数据库的方法,详细内容请参考下文。  复制迁移的步骤如下:  ◆1、首先,复制原Oracle数据库的安装目录到新机器或系统中的安装目录,注意目录要一致,盘符也要一致。  ◆2、假如Oracl

2010-04-24 17:03:00 1386

指静脉服务DEMO

1.目前支持win64,32位开发中.. 2.打开 Install_X64 文件夹,用管理员运行 安装微服务,安装完成以后提示 操作完成 3. 用demo进行测试,demo可以任意浏览器打开

2019-02-22

如何打造品牌热门APP案例篇

如何打造品牌热门APP案例篇

2014-02-13

Android程序开发初级教程

Android程序开发初级教程

2014-02-13

oracle Scheduler

Scheduler job计划!Scheduler job计划!Scheduler job计划!Scheduler job计划!Scheduler job计划!Scheduler job计划!

2010-03-13

oracle 自动备份

oracle 在window 下完成的 自动备份功能! 确定你的计算机上装有oracle的客户端,如果没有,请安装oracle客户端

2010-01-13

在oracle内连接远程数据库

create database link GTPROD_CONNECT.WORLD connect to local identified by local using '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.85.144)(PORT = 1521)))(CONNECT_DATA =(SID = orcl)(SERVER = 192.168.0.13)))' select * from EXDB.DC_MINGZHENG_PROVIDE@GTPROD_CONNECT.WORLD

2009-11-13

Oracle JOB 用法小结

Oracle JOB 用法小结 2007-6-20 11:51:36 Oracle JOB 用法小结   一、设置初始化参数 job_queue_processes   sql> alter system set job_queue_processes=n;(n>0)   job_queue_processes最大值为1000      查看job queue 后台进程   sql>select name,description from v$bgprocess;      二,dbms_job package 用法介绍   包含以下子过程:      Broken()过程。   change()过程。   Interval()过程。   Isubmit()过程。   Next_Date()过程。   Remove()过程。   Run()过程。   Submit()过程。   User_Export()过程。   What()过程。      1、Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。   这个过程有三个参数:job 、broken与next_date。      PROCEDURE Broken (job    IN binary_integer,            Broken  IN boolean,            next_date IN date :=SYSDATE)      job参数是工作号,它在问题中唯一标识工作。   broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。 dl.bitsCN.com网管软件下载   next_date参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。   job如果由于某种原因未能成功之行,oracle将重试16次后,还未能成功执行,将被标记为broken重新启动状态为broken的job,有如下两种方式;   a、利用dbms_job.run()立即执行该job     sql>begin     sql>dbms_job.run(:jobno) 该jobno为submit过程提交时返回的job number     sql>end;     sql>/   b、利用dbms_job.broken()重新将broken标记为false     sql>begin     sql>dbms_job.broken (:job,false,next_date)     sql>end;     sql>/   2、Change()过程用来改变指定工作的设置。   这个过程有四个参数:job、what 、next_date与interval。      PROCEDURE Change (job    IN binary_integer,            What    IN varchar2,            next_date IN date,            interval  IN varchar2)      此job参数是一个整数值,它唯一标识此工作。   What参数是由此工作运行的一块PL/SQL代码块。   next_date参数指示何时此工作将被执行。   interval参数指示一个工作重执行的频度。 dl.bitsCN.com网管软件下载      3、Interval()过程用来显式地设置重执行一个工作之间的时间间隔数。这个过程有两个参数:job与interval。      PROCEDURE Interval (job   IN binary_integer,             Interval IN varchar2)      job参数标识一个特定的工作。interval参数指示一个工作重执行的频度。      4、ISubmit()过程用来用特定的工作号提交一个工作。这个过程有五个参数:job、what、next_date、interval与no_parse。      PROCEDURE ISubmit (job    IN binary_ineger,             What   IN varchar2,             next_date IN date,             interval IN varchar2,             no_parse IN booean:=FALSE)      这个过程与Submit()过程的唯一区别在于此job参数作为IN型参数传递且包括一个由开发者提供的工作号。如果提供的工作号已被使用,将产生一个错误。      5、Next_Date()过程用来显式地设定一个工作的执行时间。这个过程接收两个参数:job与next_date。      PROCEDURE Next_Date(job     IN binary_ineger,             next_date  IN date) so.bitsCN.com网管资料库任你搜   job标识一个已存在的工作。next_date参数指示了此工作应被执行的日期与时间。      6、Remove()过程来删除一个已计划运行的工作。这个过程接收一个参数:      PROCEDURE Remove(job IN binary_ineger);      job参数唯一地标识一个工作。这个参数的值是由为此工作调用Submit()过程返回的job参数的值。已正在运行的工作不能由调用过程序删除。      7、Run()过程用来立即执行一个指定的工作。这个过程只接收一个参数:      PROCEDURE Run(job IN binary_ineger)      job参数标识将被立即执行的工作。      8、使用Submit()过程,工作被正常地计划好。   这个过程有五个参数:job、what、next_date、interval与no_parse。      PROCEDURE Submit ( job    OUT binary_ineger,             What   IN varchar2,             next_date IN date,             interval IN varchar2,             no_parse IN booean:=FALSE)      job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。   what参数是将被执行的PL/SQL代码块。 bitsCN全力打造网管学习平台   next_date参数指识何时将运行这个工作。   interval参数何时这个工作将被重执行。   no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE指示此PL/SQL代码在它第一次执行时应进行语法分析,而FALSE指示本PL/SQL代码应立即进行语法分析。      9、User_Export()过程返回一个命令,此命令用来安排一个存在的工作以便此工作能重新提交。   此程序有两个参数:job与my_call。      PROCEDURE User_Export(job    IN binary_ineger,              my_call  IN OUT varchar2)      job参数标识一个安排了的工作。my_call参数包含在它的当前状态重新提交此工作所需要的正文。      10、What()过程应许在工作执行时重新设置此正在运行的命令。这个过程接收两个参数:job与what。      PROCEDURE What (job IN binary_ineger,           What IN OUT varchar2)   job参数标识一个存在的工作。what参数指示将被执行的新的PL/SQL代码。      三、查看相关job信息   1、相关视图   dba_jobs   all_jobs   user_jobs   dba_jobs_running 包含正在运行job相关信息 blog.bitsCN.com网管博客等你来搏      2、查看相关信息      SQL>SELECT JOB, NEXT_DATE, NEXT_SEC, FAILURES, BROKEN   SQL>FROM DBA_JOBS;      JOB NEXT_DATE NEXT_SEC FAILURES B   ------- --------- -------- -------- -   9125 01-JUN-01 00:00:00 4 N   14144 24-OCT-01 16:35:35 0 N   9127 01-JUN-01 00:00:00 16 Y   3 rows selected.      正在运行的JOB相关信息      SELECT SID, r.JOB, LOG_USER, r.THIS_DATE, r.THIS_SEC   FROM DBA_JOBS_RUNNING r, DBA_JOBS j   WHERE r.JOB = j.JOB;      SID JOB LOG_USER THIS_DATE THIS_SEC   ----- ---------- ------------- --------- --------   12 14144 HR 24-OCT-94 17:21:24   25 8536 QS 24-OCT-94 16:45:12   2 rows selected.       JOB QUEUE LOCK相关信息      SELECT SID, TYPE, ID1, ID2   FROM V$LOCK   WHERE TYPE = 'JQ';      SID TY ID1 ID2   --------- -- --------- ---------   12 JQ 0 14144   1 row selected.      四、简单例子   一个简单例子: play.bitsCN.com累了吗玩一下吧      创建测试表   SQL> create table TEST(a date);      表已创建。      创建一个自定义过程   SQL> create or replace procedure MYPROC as    2 begin    3 insert into TEST values(sysdate);    4 end;    5 /      过程已创建。      创建JOB   SQL> variable job1 number;   SQL>   SQL> begin    2 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次    3 end;    4 /      PL/SQL 过程已成功完成。      运行JOB   SQL> begin    2 dbms_job.run(:job1);    3 end;    4 /      PL/SQL 过程已成功完成。      SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from TEST;      时间   -------------------   2001/01/07 23:51:21   2001/01/07 23:52:22   2001/01/07 23:53:24      删除JOB   SQL> begin    2 dbms_job.remove(:job1);    3 end;    4 / bitsCN.com中国网管联盟      PL/SQL 过程已成功完成。

2009-11-13

高级PLSQL程序员开发文档

高级PLSQL程序员开发文档,高级PLSQL程序员开发文档

2009-10-27

空空如也

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

TA关注的人

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