/* Use RBO instead of CBO because Oracle ORA-600 error will happen with CBO, found at Oracle 10.2.0.4 win32 */
SELECT /*+rule*/ rs.resourcename "Name", rs.resourceid "InstanceId"
FROM resourcegroup rg INNER JOIN resourcegroupgroups rgg ON rg.resourcegroupid=rgg.resourcegroupid
INNER JOIN resourcegroupentries rge ON rge.resourcegroupid=rgg.groupsid
INNER JOIN resourcedef rs ON rge.entriesid = rs.resourceid
INNER JOIN spec ON spec.resourcegroupid = rg.resourcegroupid
WHERE spec.specid = '4803d45000000469'
START WITH rgg.resourcegroupid = rg.resourcegroupid CONNECT BY PRIOR rgg.groupsid=rgg.resourcegroupid
posted @
2008-08-04 13:01 丁丁 阅读(181) |
评论 (0) |
编辑
txnprof(insite TranXactioN PROFiler) read the
Camstar InSite 3 transaction log file (e.g: 20071123_025329312_3312_3380_TestLotSchedule.log), reformat the log file to more beautiful HTML format. The author hope txnprof will enable InSite Designer debug more easier.
txnprof use
StringTemplate to show it's format and txnprof are stopped developing for InSite 3.4 and the new version 4.2 is still planning :-)
download txnprof and src code
posted @
2008-07-07 15:07 丁丁 阅读(381) |
评论 (0) |
编辑
If you would like to use Matlab Database Toolbox's GUI: Visual Query Builder, using Query->Define JDBC Data Sources.
Name: <just your DB SID>
Driver: oracle.jdbc.driver.OracleDriver
URL: jdbc:oracle:thin:@localhost:1521:
don't forgot add Oracle Drivers's in Matlab's classpath, (e.g: /usr/local/matlab75/toolbox/classpath.txt, add line: /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/jdbc/lib/ojdbc14.jar)
More info to see reference:
http://www.mathworks.com/support/solutions/data/1-1774N.html?product=DB&solution=1-1774N
posted @
2008-06-21 15:00 丁丁 阅读(265) |
评论 (0) |
编辑
Oracle XE是Oracle数据库家族的Express快速版,完全免费,数据库的大小最高4GB(不包括系统空间占用的近1GB空间),内存限制在1G,CPU限制为1个,主要面向开发者和小型数据库应用。
Oracle Application Express是一种通过配置web页面参数即可开发Oracle数据库应用的工具,设计思想很独特,APEX的应用程序实际上只是数据表中的数据,可以任意导入导出,部署和开发都相当快速。
Ubuntu 8.04是现在最方便的Linux发行版,升级容易,错误也很少,Ubuntu 64位版本上一样可以跑32位版本的应用程序,比如Oracle Express Database,就只有32位的版本,但是一样可以安装运行,下面是安装Oracle XE 10.2和APEX 3.1.1方法:
1. 安装32位C语言库:
sudo apt-get install libc6-i386
2. 下载相关安装文件,这里的这个oracle-xe-universal连接比OTN上的要新哦:
wget -c http://oss.oracle.com/debian/dists/unstable/main/binary-i386/libaio_0.3.104-1_i386.deb http://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-universal_10.2.0.1-1.1_i386.deb
3. 将Oracle XE和所需的异步IO库强制安装到64位平台上:
dpkg -i --force-architecture libaio_0.3.104-1_i386.deb
dpkg -i --force-architecture oracle-xe-universal_10.2.0.1-1.1_i386.deb
安装时会提示需要至少1024MB交换空间,不过如果你内存是2GB的话,是可以安全忽略的。
4. 配置Oracle XE:
sudo /etc/init.d/oracle-xe configure
不要变动缺省值,我发现如果http端口选择非8080是不工作的,至此Oracle XE安装完毕,下面开始安装APEX 3.1.1。
5. 解压缩apex的安装包到/usr/lib/oracle/后安装OWA:
cd /usr/lib/oracle/apex/owa/
sqlplus "/as sysdba" @owainst.sql
@?/rdbms/admin/utlrp;
select owa_util.get_version from dual;
exit
确认错误数为0, OWA版本号已经为10.1.2.0.6。
6. 正式开始安装APEX,安装运行时间比较长,可能需要10分钟左右:
cd /usr/lib/oracle/apex/
sqlplus "/as sysdba" @apexins.sql SYSAUX SYSAUX TEMP /i/
sqlplus "/as sysdba" @apxchpwd(更换APEX管理员密码)
exit
7. 下面这些步骤是升级XE自带APEX 2.1中的数据:
cd /usr/lib/oracle/apex/
sqlplus "/as sysdba"
@apxldimg.sql /usr/lib/oracle (若报错,检查apex文件夹权限,用sudo chown oracle:dba apex更改权限)
@apxxepwd.sql(更换APEX Internal管理员密码)
exit
至此安装完毕,可以通过
http://127.0.0.1:8080/apex/apex_admin以Admin用户登陆开始使用APEX了。
有关APEX的进一步信息可以访问:
http://apex.oracle.com/
及
http://www.oracle.com/technology/products/database/application_express/html/3.1_and_xe.html
posted @
2008-06-14 22:10 丁丁 阅读(568) |
评论 (0) |
编辑
在.NET中使用WebService极其简单,只要添加Web引用即可,然后IDE就会帮你搞定所有一切,但这样做有个缺点,VS.2005的IDE生成的对应每个Web Service的WebServiceProxy类都有自己独立的命名空间,这导致了即使相同的.NET类型,发布在不同的WebService之后,生成的WebServiceProxy类型都在各自的独立命名空间中,结果就是在客户端中使用这些.NET类很麻烦。
其实在.NET中共享不同Web Service只见相同的对象类型是完全可以的,使用命令行方式调用wsdl.exe就可以:
如果要将这条命令集成到IDE的自动生成中,可以在菜单->项目->属性->生成事件中,预生成事件命令行中填入:
| $(ProjectDir)generateProxy.bat /out:$(ProjectDir)MES_WebService.cs |
generateProxy.bat中内容如下:
posted @
2008-04-30 12:50 丁丁 阅读(182) |
评论 (0) |
编辑
工作已经超过一年了,收入勉勉强强达到4W,女友也开始谈婚论嫁了,不管女友多么善解人意,总要有个地方住吧?租房?能有安全感么?当然要买房!拿出父母一辈子的积蓄加上贷款,搞一套100W的房子怎么样?勉强可以住进“上海”了,如果将外环以内算作上海的话……
我相信我以后的收入会增长,10年两个人的平均年收入可以达到10W,10年就可以买一套房子,考虑到中国城市化进程,上海的房子还是总有人住的,不是么?2018年房产市场还是会繁荣的,那时候现在100W的房子应该涨到200W了吧?
相信以上应该是劝人买房的所有理由了,当然我排除了“是男人就要给女人买方,给女人一个家”这样比较煽情的话,买房需要理性决策,需要站的住脚的理由,上面的理由是充分的,但是2018年的情况却恐怕需要进一步分析……
问题一,2018年房子到底卖给谁?
其实这个问题和现在的情况一样,所以很好回答,卖给2018年结婚的人呗,当然包括还有2008年结婚准备改善住房的我,如果我那时幸运的还清了90W贷款和22W的5%年利息的话,并且2018年房子不算太贵的话,200W?请暂时将我排除在外吧,那时候我孩子最多9岁,起码还有10年我可以存钱呢,存足一次性购房总比继续在下一个10年支付额外44W利息划算。
问题二,2018年到底有多少人结婚呢?
嗯,这个问题2008年还是可以回答的,因为2018年这群人现在已经出生了,22-25岁之间的他们人数究竟有多少呢?很遗憾,中国从来没有公布人口金字塔的习惯,人口结构这个比人口总数更加重要的数据也难以从任何网站上查到,所以这个问题实际对于普通人来说很难回答,
易富贤的BLOG也没有这样详细的数据,但至少可以确定,只会少不会多,但换个角度思考,2018年结婚的那群人应该就是2014年左右上大学的那一批人,有前有后,但总差不离,上海可能晚点,其他地方早点,全国范围看应该还是准确的,这个数据是可以找到的:
《教育部:2006年全国普通高考报名人数达950万》
2009年后参加高考的学生主体是1997年以后入小学的学生。1997年全国小学招生2462.04万人。之后,招生人数以平均5%的速度递减,在校人数以3%的速度递减。由于9年制义务教育切实贯彻施行,1997年以来,小学升中学的升学率一直保持较高的水准,今后小学升中学的升学率及失学率都不会有大的变化。因此,如果不考虑小学升中学的升学率及失学率的影响,2009年到2015年间,参加高考的人数每年将大约减少40万人。十年后,全国高考人数会比今年(2006年)减少300万。到2015年,全国高考人数大约将为650万人,比今年减少300万。考虑到近年来全国幼儿园入学人数一直也在以较大幅度递减,2015年以后,中国高考人数将持续减少,中国高考人满为患的历史将一去不复返。而且,由于学龄人口的持续减少,已经开始触动中小学的资源配置。1997年到2004年,全国小学学校数目减少了23.46万所,平均递减速度接近14%。1995年以来,全国普通初中数也减少了将近5000所。1997年以来,全国幼儿园数也在以每年将近1万所的速度减少。随着高考人数的减少,将必然会给办学规模不断膨胀的中国高校带来巨大冲击。
假设我引用的教育部的这些数字都是准确的,那么2018年全国将只有2008年的70%的人会结婚,因而买房人数也是2008年的70%,一个只有现在70%购买力的房产市场可以维持繁荣么?如果将购买力增长称为繁荣,那么2018年的全国房产市场应该是萧条的,萧条的市场基本就是供过于求的市场,价格么,按照2008年100W的购买力价格计算是只会少不会多的,最乐观的估计是还是维持2008年的100W价格不变好了。
问题三:2008年的100W相当于2018年的多少万?
本文写到这里为止,
都是以数据说话,从来不做猜测,但这个问题没有是没有准确的答案的,我们只能说1996年的100W到2005年应该值多少钱,因为只需要通过这段时期的
通货膨胀率就可以精确计算得到了,
数据可以从考研考博网找到:
| 年份 |
1996 |
1997 |
1998 |
1999 |
2000 |
2001 |
2002 |
2003 |
2004 |
2005 |
| 通货膨胀率 |
8.3 |
2.8 |
-0.8 |
-1.4 |
0.4 |
0.7 |
-0.8 |
1.2 |
3.9 |
1.8 |
按照上述数据计算,1996年的100W和2005年的115W相当,这个数据虽然正确,但我相信很多人都会大叫,这和常识不符!好吧,讲国家统计局的数据不准的人也不是一个两个了,但这里就作为下限处理好了,上限的话可以以贷款利息代替通货膨胀率计算,计算也简单一点,按照公积金年利息4.77%计算,现在的100W购买力相当于10年后152W的购买力。
好了,这里我已经证明了2008年花100W买的房子,到2018年最多值152W,不考虑十年后的购买力下跌,并且考虑最高的通货膨胀率!这相信已经够乐观了吧?那么何时买房?最新消息2008年1月CPI上涨7.1%,如果CPI能够连续半年月环比上涨7%以上的话,就可以买房了,2008年1月通货膨胀率是7.1%,为了让广大人民支持国家房地产产业,促进经济增长,消化人民币升值压力,预计国家会非常欢迎通货膨胀。
posted @
2008-03-05 16:59 丁丁 阅读(610) |
评论 (3) |
编辑
摘要: 相当简单的C#函数实现代码片断,按照最小行长度分行和断行(会超过最小行长度),曾用于自动给太长的Winform Tooltip断行。
阅读全文
posted @
2008-02-01 15:53 丁丁 阅读(301) |
评论 (2) |
编辑
posted @
2008-01-24 10:47 丁丁 阅读(268) |
评论 (0) |
编辑
ODP.NET 11g是Oracle发布的供.NET程序访问Oracle数据库的ADO.NET组件,比微软自带的Oracle组件性能好,更可以访问UDT(User Defined Type)类型,Procedure,REF等等高级Oracle特性。
.NET 1.1的客户端需要的发布文件如下:
- Oracle.DataAccess.dll (odt111\odp.net\bin\1.x)
- OraOps11.dll (odt111\bin)
.NET 2.0需要发布:
- Oracle.DataAccess.dll (odt111\odp.net\bin\2.0)
- OraOps11w.dll (odt111\bin)
上面的客户端均需要OCI基本包支持:
- oci.dll
- oraociei11.dll (也可以用更小的oraociicus11.dll代替)
- orannzsbb11.dll
为了在客户端测试方便,还可以加上SQL*Plus包,包括两个文件:
- sqlplus.exe
- orasqlplusic11.dll
发布sqlplus包可以使用sqlplus "user_name/password@//192.168.1.31:1521/ORCL"在客户端测试Oracle的状态。
根据上面原则,最小的ODP.NET Oracle客户端发布文件包括5个文件,压缩后大小为8MB:
- oci.dll
- oraociicus11.dll
- orannzsbb11.dll
- Oracle.DataAccess.dll
- OraOps11.dll
详细信息还可以参考这里:
http://download.oracle.com/docs/cd/B28359_01/server.111/b31189/apd.htm
http://forums.oracle.com/forums/thread.jspa?threadID=519176&tstart=0&messageID=2060399
以及门户网站:
http://www.oracle.com/technology/tech/dotnet/index.html
posted @
2008-01-21 09:50 丁丁 阅读(351) |
评论 (2) |
编辑
Oracle数据库在*nix平台下一般认为要比NT下稳定的多,因此基本上所有的生产环境都倾向于是用*nix平台,Solaris作为纯正血统的开放源代码Unix实现,比Linux更是多了很多特性,例如
Zones,DTrace,ZFS和本文要使用的SMF,都是相当不错的特性。
SMF(Service Management Facility)是作为传统的init.d的替代技术而开发的,但是SMF不仅仅代替init.d负责Solaris上的各项服务程序(daemon)的自动启动和关闭,最重要的新功能是能够自动监控并修复(实际上就是尝试按照服务的依存次序重新启动)发生问题的各项系统服务。Oracle数据库当然也属于这样一种系统服务,实际上运行Oracle数据库很可能是企业最重要的购买一台Unix服务器的理由,因此,将Oracle数据库纳入SMF系统服务管理架构中就很有意义了,因为这样不仅可以实现传统上的
Oracle启动和关闭脚本的功能,而且可以在Oracle异常中止运行时,立即启动Oracle,大大提高Oracle数据库的可用性。
Padraig博客上第一次(据我所知^_^)发布了如何将Oracle数据库纳入SMF的配置过程,很遗憾blogspot.com站点国内被和谐了,所以这里还是复述一下Oracle在SMF下的配置过程,也方便一些更喜欢读中文的读者:
1. 下载Joost Mudlers提供的
ora-smf-1.5.pkg安装包,并安装(最重要的一步,感谢Joost Mudler,奇怪的是网上找不到他的blog和文档):
# cd /var/svc/manifest/application
# mkdir database
# cd ~
# pkgadd –d orasmf-1.5.pkg
这一步骤不能在Solaris提供的虚拟服务器中做,必须安装在物理服务器,或者说必须安装在global zone下,因为只有global zone才能允许写/lib/svc/目录下的文件,虚拟服务器(container)对于这个目录是只读的,在global zone下安装完orasmf-1.5后,所有的虚拟服务器都已经有了通过SMF管理oracle数据库的能力,但是真正管理Oracle还需要配置几个*.xml文件和安装Oracle软件,配置xml和安装Oracle必须在你打算运行的服务器上进行(如果你已经使用Zone功能的话,就是在虚拟服务器上)。
2. 配置相关xml文件:
cvpdbviq02 oracle mesodst $ cd /var/svc/manifest/application/database
cvpdbviq02 oracle mesodst $ ls -l
total 34
-r--r--r-- 1 root root 2123 Sep 29 15:39 oracle-database-instance.xml
-r--r--r-- 1 root bin 5722 Dec 28 2005 oracle-database-service.xml
-r--r--r-- 1 root root 2088 Sep 29 15:39 oracle-listener-instance.xml
-r--r--r-- 1 root bin 4295 Dec 28 2005 oracle-listener-service.xml
cvpdbviq02 oracle mesodst $
只需要配置*-instance.xml两个文件即可,例如像这样:

我的oracle-database-instance.xml实例
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<!-- $Id: oracle-database-instance.xml,v 1.11 2005/12/28 20:19:02 joost Exp $
The contents of this file are subject to the terms of the
Common Development and Distribution License, Version 1.0 only
(the "License"). You may not use this file except in compliance
with the License.
You can obtain a copy of the license at
http://www.opensource.org/licenses/cddl1.php
See the License for the specific language governing permissions and
limitations under the License.
Copyright 2005, Joost Mulders.
This document contains a service definition for an Oracle database instance.
It contains some instance specific variables like ORACLE_SID and ORACLE_HOME.
These must be filled in below.
Other -generic database- service properties are inherited from the parent
service, 'application/oracle/database'.
A database instance can be brought under SMF control by:
* running /lib/svc/method/ora-smf autoimport
*OR*
* filling in the blanks (marked with '' or ':default') below
* svccfg import <file>
-->
<service_bundle type='manifest' name='oracle-database-instance'>
<service
name='application/oracle/database'
type='service'
version='1'>
<!-- The SMF instance name MUST match the database instance -->
<instance name='mesodst' enabled='false'>
<method_context
working_directory='/oracle/920'
project='oracle'
resource_pool=':default'>
<!--
The credentials of the user with which the method is executed.
-->
<method_credential
user='oracle'
group='dba'
supp_groups=':default'
privileges=':default'
limit_privileges=':default'/>
<method_environment>
<envvar name='ORACLE_SID' value='mesodst' />
<envvar name='ORACLE_HOME' value='/oracle/920' />
<!--
For Oracle 8 & 9
<envvar name='ORA_NLS33' value='' />
For Oracle 10g
<envvar name='ORA_NLS10' value='' />
-->
</method_environment>
</method_context>
</instance>
</service>
</service_bundle>
上边的配置文件是oracle数据库实例,下面这个则是oracle侦听服务的:

我的oracle-listener-instance.xml实例
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<!-- $Id: oracle-listener-instance.xml,v 1.7 2005/12/28 13:25:09 joost Exp $
The contents of this file are subject to the terms of the
Common Development and Distribution License, Version 1.0 only
(the "License"). You may not use this file except in compliance
with the License.
You can obtain a copy of the license at
http://www.opensource.org/licenses/cddl1.php
See the License for the specific language governing permissions and
limitations under the License.
Copyright 2005, Joost Mulders.
This document contains an instance definition for an Oracle listener.
It contains some instance specific variables like the listener instance
name and ORACLE_HOME. These must be filled in below.
Other -generic listener- service properties are inherited from the parent
service, 'application/oracle/listener'.
A listener instance can be brought under SMF control by:
* by running /lib/svc/method/ora-smf autoimport
*OR*
* filling in the blanks (marked with '' or ':default') below
* svccfg import <file>
-->
<service_bundle type='manifest' name='oracle-listener-instance'>
<service
name='application/oracle/listener'
type='service'
version='1'>
<!-- The SMF instance name MUST match the listener instance -->
<instance name='MESODST_LISTENER' enabled='false'>
<method_context
working_directory='/oracle/920'
project='oracle'
resource_pool=':default'>
<!--
The credentials of the user with which the method is executed.
-->
<method_credential
user='oracle'
group='dba'
supp_groups=':default'
privileges=':default'
limit_privileges=':default'/>
<method_environment>
<envvar name='ORACLE_HOME' value='/oracle/920' />
<!--
For Oracle 8 & 9
<envvar name='ORA_NLS33' value='' />
For Oracle 10g
<envvar name='ORA_NLS10' value='' />
-->
</method_environment>
</method_context>
</instance>
</service>
</service_bundle>
在上面的配置文件中,必须更改的项目有
- ORACLE_HOME
- ORACLE_SID
- User(一般就是oracle)
- Group(一般就是dba组)
- Project(项目是Solaris的另一种资源管理方式,如果没有创建oracle的project,要通过运行projadd -U oracle -G dba oracle添加)
- Working Directory (Oracle的工作目录,即oarcle用户的工作目录)
- Instance name (实例名要和ORACLE_SID名称相同或者相应的LISTENER侦听器名称相同)
3. 将修改后的*.xml重新倒入到SMF控制中,每次修改xml后都要重复这一步骤:
# svccfg import /var/svc/manifest/application/database/oracle-database-instance.xml
# svccfg import /var/svc/manifest/application/database/oracle-listener-instance.xml
4. 通过svcadm启用oracle数据库服务和Oracle侦听服务:
# svcadm enable svc:/application/oracle/database:mesodst
# svcadm enable svc:/application/oracle/listener:MESODST_LISTENER
命令启用了实例名称为mesdost的oracle数据库和侦听器名称为MESODST_LISTENER的服务了。这些服务的日志文件可以到/var/svc/log目录中找到,例如:
cvpdbviq02 oracle mesodst $ pwd
/var/svc/log
cvpdbviq02 oracle mesodst $ ls -l *oracle*
-rw-r--r-- 1 root root 1390 Sep 29 16:11 application-oracle-database:mesodst.log
-rw-r--r-- 1 root root 2647 Sep 29 16:10 application-oracle-listener:MESODST_LISTENER.log
cvpdbviq02 oracle mesodst $ cat application-oracle-database:mesodst.log
[ Sep 29 16:08:14 Leaving maintenance because disable requested. ]
[ Sep 29 16:08:14 Disabled. ]
[ Sep 29 16:08:25 Rereading configuration. ]
[ Sep 29 16:08:43 Enabled. ]
[ Sep 29 16:08:43 Executing start method ("/lib/svc/method/ora-smf start database mesodst") ]
Connected to an idle instance.
ORACLE instance started.
Total System Global Area 841974576 bytes
Fixed Size 729904 bytes
Variable Size 419430400 bytes
Database Buffers 419430400 bytes
Redo Buffers 2383872 bytes
Database mounted.
Database opened.
database mesodst is OPEN.
[ Sep 29 16:08:52 Method "start" exited with status 0 ]
[ Sep 29 16:09:48 Stopping because service disabled. ]
[ Sep 29 16:09:49 Executing stop method ("/lib/svc/method/ora-smf stop database mesodst") ]
Database closed.
Database dismounted.
ORACLE instance shut down.
[ Sep 29 16:09:57 Method "stop" exited with status 0 ]
[ Sep 29 16:10:40 Enabled. ]
[ Sep 29 16:10:46 Rereading configuration. ]
[ Sep 29 16:10:55 Executing start method ("/lib/svc/method/ora-smf start database mesodst") ]
Connected to an idle instance.
ORACLE instance started.
Total System Global Area 841974576 bytes
Fixed Size 729904 bytes
Variable Size 419430400 bytes
Database Buffers 419430400 bytes
Redo Buffers 2383872 bytes
Database mounted.
Database opened.
database mesodst is OPEN.
[ Sep 29 16:11:07 Method "start" exited with status 0 ]
cvpdbviq02 oracle mesodst $
从日志文件可见Oracle数据库已经成功运行了,还可以看到,启动Oracle数据库的是
/lib/svc/method/ora-smf start database mesodst命令,如果从log中看到启动错误,可以先运行这条命令确认oracle可以顺利启动,再排查其他问题。
posted @
2007-09-30 13:50 丁丁 阅读(529) |
评论 (1) |
编辑
代码下载
代码采用全路径压缩,EntLib3Src目录下的文件将覆盖Enterprise Library下的相关文件,覆盖还将顺便修正中文环境下SQL Server导入QuickStartDB示例数据库的问题,另外还有此数据库的Access和SQLite版本,除了MySQL 5连接配置外,文件app.config还包括了access和SQLite的数据库连接示例,通过修改app.config的<dataConfiguration defaultDatabase="DataAccessQuickStart_mysql">中的defaultDatabase即可立即切换底层数据库。
提供的代码是《.NET跨数据库编程最佳实践》一文的配套代码,文章已经在《程序员》八月号发表,由于出版条款限制,3个月内无法在此提供原文,所以这里只提供文章相关的DAAB MySQL扩展支持源代码。代码是DAAB的扩展,微软.NET平台Enterprise Library中的DAAB数据访问模块提供了一种半官方的.NET跨数据库数据访问方法,希望这里提供的开源数据库MySql支持代码能够在您实现其他数据库,例如PostgreSQL或者FireBird的.NET平台支持时,为您提供一点思路。
要顺利使用上述代码,可能还需要安装下列软件:
posted @
2007-09-26 23:18 丁丁 阅读(299) |
评论 (0) |
编辑