闲坐敲棋

有约不来过夜半,闲敲棋子落灯花
posts - 106, comments - 8, trackbacks - 0, articles - 0

2012年1月18日

年关将近,又到了春运时间,火车票自然是这段期间最紧俏的资源了。与以往几十年不同的是,今年开通了网络购票、电话订票和真正的实名制功能。其中最让码农眼前一亮的就是网络购票功能了。写了那么多年的程序,终于有用武之地了。

我作为一个码农,写这方面的程序,算下来已经有7年历史了吧。最早的时候是在大学做选课程序(准确的说应该是抢课程序),后来帮同学做刷票程序,再 到后来做WebGame的外挂,各种抓包分析程序,一个个网络应用程序还是让我记忆犹新。现在买火车票也能够通过网络实现,那么当然也可以写个程序实现登 录、查询车票、下订单这些功能了。

最近项目刚上线,Bug一堆,工作比较忙,再加上我是坐飞机回家,不买火车票,所以也没有那么大的动力和那么多的时间来开发这个程序了。程序写了一 半,登录实现,查询实现,就剩下下订单功能和支付功能了,不过支付功能我觉得可能有难度,具体还没有试过,毕竟这东西是需要在IE下真的付款,然后抓包分 析的,所以也不好调试。

我的程序虽然没有完成,不过网上已经有不少码农放出了自己完成的程序,比如这几个

GoHome:http://code.google.com/p/go-home/
德广火车票助手:http://www.appinn.com/12306-auto-login-client/
12306 订票助手:https://github.com/zzdhidden/12306
12306.cn 网络购票助手:http://www.u-tide.com/fish/soft/44/

等等。

我个人比较推荐的是12306 订票助手:https://github.com/zzdhidden/12306 这个程序其实很简单,是基于JQuery的一个JS文件,在Chrome中运行效果很好,正好我用的也是Chrome。

这些程序其实原来都是差不多的,主要的还是利用了12306系统中的一个Bug,实现了不断重试提交数据,直到成功。这个Bug就是在用户提交验证 码进行比对的时候,没有在比对后重置验证码,导致接下来重新提交数据时,使用同一个验证码就验证通过了。这个Bug其实修复起来很简单,我在3年多前的博 客中就已经提到过该Bug和修正,参见:http://www.cnblogs.com/studyzy/archive/2008/06/04/1213192.html

另外还有一个问题就是现在的验证码实在太简单了,没有什么混淆,很容易通过程序识别出来。

毕竟这也是铁道部第一次做电子商务,虽然有很多不足之处,但是能够主动改变现状,还是让人感到欣慰。希望网络购票的这个Bug一直保留着,下次我买票的时候也可以利用这个Bug刷票,这真是铁道部留给广大程序员门的一点福利!最终大家有家都能回!

posted @ 2012-01-18 10:15 闲坐敲棋 阅读(18) 评论(0) 编辑

2012年1月10日

 

用法:配置字符串如 xml

     <AttrList>
      <Attr Name="TemplateId">1</Attr>
      <Attr Name="AppId">$0$</Attr>
      <Attr Name="BookId">$1$</Attr>
      <Attr Name="IsVip">$3$</Attr>
      <Attr Name="Status">$4$</Attr>
      <Attr Name="AuthorId">$5$</Attr>
      <Attr Name="CategoryId">$7$</Attr>
     </AttrList>

其中$$中间为数组下标。

public static string ReplaceDataByArray(ArrayList array, string strInfo)
  {
   string regexTest = "\\$\\d+\\$";
   if (Regex.IsMatch(strInfo, regexTest))
   {
    MatchCollection results = Regex.Matches(strInfo, regexTest);
    for (int i = 0; i < results.Count; i++)
    {
     string nowPatten = results[i].Value;
     regexTest = "\\$";
     int nowIndex =Convert.ToInt32(Regex.Replace(nowPatten, regexTest, ""));
     if (nowIndex < array.Count)
     {
      strInfo = strInfo.Replace(nowPatten, array[nowIndex].ToString());
     }
    }
   }
   return strInfo;
  }

posted @ 2012-01-10 22:34 闲坐敲棋 阅读(8) 评论(0) 编辑

2011年12月22日

摘要: /*---------------------------------------------------------通用CSS开始----------------------------------------------- */@charset "utf-8";/* ------------------------------------全局定义---------------------------------------- *//* 将具有默认margin和padding的标记置零,所有标记的margin、padding都在使用时具体定义 */*{ margin:0;阅读全文

posted @ 2011-12-22 22:49 闲坐敲棋 阅读(10) 评论(0) 编辑

2011年12月21日

http://www.oschina.net/p/ligerui

posted @ 2011-12-21 22:22 闲坐敲棋 阅读(14) 评论(0) 编辑

2011年12月10日

 FBReaderJ 

 
Angle 

Angle是一款专为Android平台设计的,适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现。

项目地址:http://code.google.com/p/angle/


  
android-shuffle 

android-shuffle是一个GTD(Getting Things Done)个人备忘记事本。
3429748650_97b07951e5_o.png4299625001_01b6c3d1ef_o.png 

  

Open GPS Tracker 

GPSTracker是一个能够使用Android地图记录你的驾车或旅行路线的项目,出发前打开软件选择开始记录,你所经过的路线就会实时显示在地图上,同时还会显示当前的行驶速度。程序会按用户自己设置的标题自动存路线留做日后查看,也可以把路线分享给朋友。GPSTracker项目是一个Map方面的完整应用,包括两个主要组成部分,第一部分是一个收集和存储GPS追踪数据的系统服务,第二部分是Map Activity控制跟踪数据并在地图上显示提供接口。GPSTracker项目用到了osmdroid项目的部分功能,其中OpenStreetMap是一个可供自由编辑的世界地图,允许您查看,编辑或者使用世界各地的地理数据来帮助您。
media_track.png
satellite.png 

  

Rokon 

Rokon是一个强大、可扩展、灵活的Android 2D游戏引擎,基于OpenGL ES技术开发,物理引擎为Box2D,因此能够实现一些较为复杂的物理效果,有人将它称为Cocos2d-iPhone引擎的Android版(因为业务逻辑和编码风格上也确实很像)。
drop_block_ss1.png )。
drop_block_ss3.png

项目地址:http://code.google.com/p/rokon/


  
LGame 

LGame是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本。其底 层绘图器LGrpaphics封装有J2SE以及J2ME提供的全部Graphics API(PC版采用Graphics2D封装,Android版采用Canvas模拟实现),所以能够将J2SE或J2ME开发经验直接套用其中,两版本 间主要代码能够相互移植。Android版内置有Admob接口,可以不必配置XML直接硬编码Admob广告信息。该引擎除了基本的音效、图形、物理、精灵等常用组件以外,也内置有Ioc、xml、http等常用Java组件的封装,代价是jar体积较为庞大,PC版 已突破1.2MB,Android版有所简化也在500KB左右。此外,该引擎还内置有按照1:1实现的J2ME精灵类及相关组件,可以将绝大多数 J2ME游戏平移到Android或PC版中。
lgame_act.gif 

  

OpenIntents 

通过"Intents",Android给连接软件和动态替换组件提供了优秀的基础。Google定义了一批intents(如:打电话啊,联系人清单上选择一个联系人,打开浏览器,电池更换的时候提供提示,等等,详细清单请看:available intents和intent class) 但是任何程序可以自由定义额外的intents和content-providers。我们可以很容易的联想到独立开发的程序(比如在这次的比赛中)极少有可能会和新定义的intents和接口良好的一起工作。 我们这个项目的目标是收集很可能在多个项目中都有用的想法(而且很可能已经被其他独立程序员实现了),定义一批比较合理且扩展性比较好的一批intents和接口,提供基础但稳定有效的实现,可以被其他Android程序所应用的,特别是其他参加比赛的程序员们。OpenIntents本身也会参加这次的比赛。我们提供小的样品程序来演示OpenIntents的用法和特性。 因为我们专注于经常被使用到的那些intents,Google也很可能在不久的将来提供他们自己的标准intents(比如关于日历的。。。)当那个发生的时候,我们会提供透明的接口来直接呼叫Google的实现方法,而你已有的程序可以直接使用Google的新功能而不需要改变任何东西。而且,由于你的程序在设计初期就是已经支持intents的了,当Google的intents出来的时候,你可以很方便的直接他们的intents。还有可能的是Google可能会借用一些OpenIntents开发的intents。无论如何,如果你的程序使用OpenIntents,在和其他使用OpenIntents程序提供互相支持的同时,你会得到额外的附加值,从而全面增强用户体验。
openintents1.pngmainscreen2.png 

  

android-bluetooth 

非常官方Android Bluetooth API支持远程设备扫描、远程设备配对,服务发现(SDP)和客户端RFCOMM串行连接。

项目地址:http://code.google.com/p/android-bluetooth/


  
Android apktool 

Android apktool是一个用来处理APK文件的工具,可以对APK进行反编译生成程序的源代码和图片、XML配置、语言资源等文件,也可以添加新的功能到APK文件中。用该工具来汉化Android软件然后重新打包发布是相当简单的。

  

quake2android 

quake2android是一个将《雷神之锤2》(Quake2)游戏移植到Android平台上的开源项目。支持谷歌Nexus One,三星Galaxy S,摩托罗拉Droid X等手机。
Quake2.jpg 

  

AndEngine 

AndEngine是一个开源的,基于OpenGL实现的Android 2D游戏引擎。这里提供一些基于AndEngine实现的示例。

  

android-opencv 

android-opencv是一个将OpenCV移到Android手机平台的开源项目,该项目使用OpenCV最新的一个分枝并利用一个改良过的Android NDK进行构建。

项目地址:http://code.google.com/p/android-opencv/


  
android-dalvik-vm-on-java  

android-dalvik-vm-on-java该项目的目标是开发一个采用Java实现的Android Dalvik虚拟机。目的是为了学习Dalvik VM的思想和架构。当前支持Dalvik可执行文件格式(.dex),完整的Dalvik指令系统,J2ME CLDC API,多线程(包括同步阻塞,等待和通知)。

项目地址:http://code.google.com/p/android-dalvik-vm-on-java/


  
Android PC_BCR 

Android PC_BCR让你能够使用你的Android手机做为PC机的外围条形码扫描仪。扫描的条形码将通过WiFi网络连接传PC机中。这个开源项目由多个组件组成,在手机设备上PC_BCR使用ZXing扫描仪器来扫描条形码,然后程序通过网络传到PC中,PC中有专门的PC_BCR程序接收。

项目地址:http://code.google.com/p/android-pcbcr/


  
android-sms 

android-sms能够将Android SMS短信备份到Gmail中的Android开源程序。

项目地址:http://code.google.com/p/android-sms/


  
jPCT-AE 

jPCT-AE是一个将jPCT移植至Android平台上3D图形引擎。
karga1.jpg

项目地址:http://www.jpct.net/jpct-ae/

 
  
AndTweet 

AndTweet是一个轻量级Twitter客户端,支持利用触摸和键盘进行快速操作。
3328108955_a142931f3f_o.png3236629233_b9396a131c.png
 

项目地址:http://code.google.com/p/andtweet/


  
android-smspopup  

android-smspopup这个Android应用程序能够拦截收到的短消息并在一个弹出框中显示消息内容和联系人头像。此外还可以自定义LED颜色,振动模式,当第一次提醒显示没有看到时会重复提醒用户哪些信息没有看过。
 

项目地址:http://code.google.com/p/android-smspopup/


  
MyTracks 

My Tracks能够记录你在户外活动的GPS轨迹并实时显示时间,速度,距离和海拔等信息。还可以将这些信息上传至Google Spreadsheets并在Google My Maps中显示。
 

项目地址:http://code.google.com/p/mytracks/


  
i-jetty 

 
ijetty-screen2.jpg
i-jetty是一个将开源Web容器Jetty移植到Google Android手机平台上的开源项目。让你可以在手机上运行现有的Web应用。
 

项目地址:http://code.google.com/p/i-jetty/


  

 

webOdroid 

webOdroid这个开源项目提供了一组完整的工具,能够根据现有网站创建一个Android应用程序。它提供的特性包括:
  • 一个功能齐全的RSS浏览器
  • 能够显示文章列表的ListView或GridView控件。
  • 提供易于定制的模板
  • 在网站上执行远程搜索
  • 根据文章标题提供搜索建议
  • 异步下载和缓存RSS供稿和图片
  • 动态抽取和裁剪文章的图片
  • 通过一个专用的Joomla组件能够集成Joomla网站的搜索功能
 

项目地址:http://www.webodroid.com/


  
android-json-rpc 

android-json-rpc是一个在android程序中使用的JSON-RPC客户端类库。它提供了一个简单的API来执行JSON-RPC服务调用。
 

项目地址:http://code.google.com/p/android-json-rpc/


  
BikeRoute 

BikeRoute是一个Android应用程序提供基于GPS线路计划和定位功能。支持A到B路径规划,附近的单车停放处的位置,一步一步的指示,路线图,卫星导航等功能。
BikeRoute.jpgBikeRoute.jpg
 

  

Andorid PDF Viewer 

Andorid PDF Viewer是一个运行在ANDROID手机上的PDF文件查看器。它是pdf-rendere:https://pdf-renderer.dev.java.net/的一个移植实现。

项目地址:http://andpdf.sourceforge.net/


 
 Spring Android 

Spring Android 是Spring框架的扩展,用于简化 Android 本地应用程序的开发。
 

项目地址:http://www.springsource.org/spring-android


  
AchartEngine 

AChartEngine是一个针对Android程序开发的开源图表生成类库。支持以下几种图表类型:
  • 折线图
  • 区域图
  • 散点图
  • time chart
  • 柱状图
  • 饼状图
  • bubble chart
  • doughnut chart
  • range (high-low) bar chart


     

    项目地址:http://code.google.com/p/achartengine/


      
    Opencore 

    Opencore是google联合packetvideo推出的多媒体开源框架,其中的h.264解码器在目前所有的开源h.264解码器中最好的,在win32和armv4上测试通过,性能好很多,大概提升20%!

    OpenCore的另外一个常用的称呼是PacketVideo,它是Android的多媒体核心。在防站的过程中,PacketVideo是一家公司的 名称,而OpenCore是这套多媒体框架的软件层的名称。在Android的开发者中间,二者的含义基本相同。对比Android的其它程序 库,OpenCore的代码非常庞大,它是一个基于C++的实现,定义了全功能的操作系统移植层,各种基本的功能均被封装成类的形式,各层次之间的接口多 使用继承等方式。

    OpenCore是一个多媒体的框架,从宏观上来看,它主要包含了两大方面的内容:

        * PVPlayer:提供媒体播放器的功能,完成各种音频(Audio)、视频(Video)流的回放(Playback)功能
        * PVAuthor:提供媒体流记录的功能,完成各种音频(Audio)、视频(Video)流的以及静态图像捕获功能

     

    项目地址:http://www.opencore.net/


      
    Android Tools 

    Android Tools是一个轻量级IDE用于创建、构建、安装和测试Android应用程序。可方便的通过点击访问Android的命令、目录和文件。它还提供一个内置的文本编辑器。Android Tools能够让学习和使用Android变得更加简便。
    AndroidToolsBasicTab.jpg
     

    项目地址:http://fieldbird.sourceforge.net/AndroidTools/


      
    android-binding 

    android-binding这个开源项目提供了一个框架用于将android view widgets与数据模型相绑定。帮助您在android应用程序中实现MVC或MVVM模式。
     

    项目地址:http://code.google.com/p/android-binding/


      
    Robotium 

    Robotium是一个测试框架能够方便你为Android应用程序编写强大、健壮的自动黑盒测试用例。利用Robotium的支持,用例开发人员能够编写功能、系统和验收测试方案Robotium支持Activities、Dialogs、Toasts、Menus和Context Menus。
     

    项目地址:http://code.google.com/p/robotium/ 

     


    QuiteSleep 

    QuiteSleep是一个Android2.0+应用程序,可以设置免打扰时间段。这个时间段内,打进来的电话将会被阻止并通过SMS或E-Mail发送预定义好的信息给打电话者告知他你正忙或正在睡觉等。
     

     


      fanfoudroid 

    安能饭否是一款开源的饭否Android客户端 。目前支持功能: 消息/私信收发,后台提醒,回复/转发/收藏,查看/关注用户,拍照/图片上传。即将支持功能: 关注管理,随便看看。 
    5344789918_58acfe070b.jpg
     

    项目地址:http://code.google.com/p/fanfoudroid/

     

     


     

    Skylight1 

    Skylight1是一个开源的Java手机应用程序开发框架和一些Android应用程序与示例。

    这个开源项目包含了以下子项目:

    • SkylightOpenGL - OpenGL wrapper DSL to the Java binding for OpenGL ES - JSR 239 for Android and Java ME
    • Skylight1 DI - 一个依赖注入框架
    • Skylight1 Mocks - 一组Android电话的模拟对象,包括回放。
    • Skylight1 Utils - 工具类如:FPS计数器,远程异常堆栈处理。
    • Skylight1 UI - 公共可定制UI类
    • Skylight1 XML - XML解析类。
    • Skylight1 Server - corresponding server side projects and utils
    • MarketConsoleScraper - Android Market console scraper contributed by Worksmart Labs
    • Skylight1 Demos - api and sample demos including:
      • Tanked, a 2D OpenGL demo
      • Barnstormer, a 3D OpenGL demo
      • Flick Test, a flick example showing borders of adjacent views
      • Skylight1 Wallpaper, a live wallpaper example featuring selectable backgrounds and a fingerprint.

    Current Android Applications:

    • Skylight1 TDC - a test data capture application for Android phones - available here for download
    • Skylight1 Game the initial app, a game for Android phones called "Balance the Beer" - available on the market.
    • NYC Events - an app that lists NYC Parks, Art and Music events. - available on the market
    • Toast - an app that helps you make a toast with your phone! - available on the market

    项目地址:http://code.google.com/p/skylight1/

     


     

    Android团队提供的示例项目
    如果不是从学习Android SDK中提供的那些样例代码开始,可能没有更好的方法来掌握在Android这个框架上开发。由Android的核心开发团队提供了15个优秀的示例项 目,包含了游戏、图像处理、时间显示、开始菜单快捷方式等。
    地址:http://code.google.com/p/apps-for-android/

     


     

     

    Remote Droid
    RemoteDroid是一个Android应用,能够让用户使用自己的无线网络使用无线键盘、触摸屏操作手机。这个项目为开发者提供了如网络连接、触 摸屏手指运动等很好的样例。
    地址:http://code.google.com/p/remotedroid/

     


     

    TorProxy和Shadow
    TorProxy应用实现了Android手机无线电电传通讯(TOR),和Shadow应用一起使用,可以使用手机匿名上网。从该项目源代码中,可以 掌握socket连接、管理cookie等方法。
    地址:http://www.cl.cam.ac.uk/research/dtg/code/svn/android-tor/

     


     

     

    Android SMSPopup
    SMSPopup可以截获短信内容显示在一个泡泡形状的窗口中。从这个项目中可以掌握到如何使用内置的短信SMS接口。
    地址:http://code.google.com/p/android-smspopup/

     


     

     Standup Timer
    Standup Timer应用用于控制站立会议时间,类似秒表倒计时,可以提醒每个人的讲话时间已到,从而保证每个与会者使用时间一样。从该项目的代码中,可以学会如何 使用时间函数。另外,这个项目的代码是采用视图view、模型model严格分离的设计思路。
    地址:http://github.com/jwood/standup-timer

     


     

     Foursquare
    是 Foursquare.com的一个客户端应用,该应用主要分为两个模块:API(com.joelapenna.foursquare)和界面前端 (com.joelapenna.foursquared)两部分。从该项目代码中,可以学会如何同步、多线程、HTTP连接等技术。
    地址:http://code.google.com/p/foursquared/

     


     

     Pedometer
    Pedometer应用用于记录你每天走路步[]数的。尽管记录不一定精准,但是从这个项目中,可以学习几个不同的技术:加速器交互、语音更新、后台运行服 务等。
    地址:http://code.google.com/p/pedometer/

     


     

     OpenSudoku-android
    OpenSudoku是一个简单的九宫格数独游戏。从代码中可以学习到如何在视图中显示表格数据,以及如何和一个网站交互等技术。
    地址:http://code.google.com/p/opensudoku-android

     


     

     

    ConnectBot
    ConnectBot是Android平台的一个客户端安全壳应用。从该项目代码中,可以学习到很多Android安全方面的内容,这些是你在开发应用 时经常需要考虑的安全问题。
    地址:http://code.google.com/p/connectbot/

     


     

     

    WordPress的Android应用
    当然在最后不能不提Wordpress的Android应用了,这是Wordpress官方开发团队提供的一个项目。从代码中可以学习到XMLRPC调 用(当然还有更多的优秀内容)。
    地址:http://android.svn.wordpress.org/trunk/

     


     

     

     Jamendo

    Jamendo在线音乐播放器是一款android平台在开源的在线音乐播放,该播放器的主要特色如下:

    1.       界面美观,在jamendo播放器中精美的布局的随处可见,大量使用自定义控件和Adapter进行布局,这点可供初学者好好探讨研究

    2.       构架清晰

    3.       在代码中大量使用全局缓冲机制,如全局Application缓冲,图片缓冲等等。。

    4.       数据传递使用JSON方式,网络传输(Apache Http 4.0)。。。

    5.       全局的MediaService,并且伴有NotifyManager等进行通知

       部分截图如下:

        主界面:

       

        MusicSearch界面


      

        Music 播放界面,从图中可以看出,播放界面做的很美观

        

      

       播放界面下方用到了SlidingDrawer


      

     

          RadioSearch 界面

      
     

       Jamendo 官方网站:http://www.jamendo.com/en/

     

        分享的内容依次是:

       1.分析Music搜索实现,主要是网络和JSON传输

       2.分析全局Application缓存实现方法

       3.分析Download模块

       4.分析Adapter使用

       5.分析全局Service构成

       6.分析自定义Widet,代码中大量使用自定义布局,对新手学习布局很有帮助

       7.分析整体结构

     








    学习Android 或者做Android 项目的可以参考这些。


     

    posted @ 2011-12-10 14:07 闲坐敲棋 阅读(21) 评论(0) 编辑

    2011年11月15日

    摘要: View Code 1publicstaticstringGetWebContent(stringurl)2{3stringresult=string.Empty;4try5{6HttpWebRequestmyHttpWebRequest=(HttpWebRequest)WebRequest.Create(url);7myHttpWebRequest.AllowAutoRedirect=true;89//maximumof10autoredirects10myHttpWebRequest.MaximumAutomaticRedirections=10;11//30secondtimeoutfo阅读全文

    posted @ 2011-11-15 16:36 闲坐敲棋 阅读(21) 评论(0) 编辑

    2011年11月10日

    摘要: 1. 技术背景—FaceBook页面加载技术 试想这样一个场景,一个经常访问的网站,每次打开它的页面都要要花费6秒;同时另外一个网站提供了相似的服务,但响应时间只需3 秒,那么你会如何选择呢?数据表明,如果用户打开一个网站,等待3~4 秒还没有任何反应,他们会变得急躁,焦虑,抱怨,甚至关闭网页并且不再访问,这是非常糟糕的情况。所以,网页加载的速度十分重要,尤其对于拥有遍布全球的 5亿用户的Facebook(全球最大的社交服务网站)这样的大型网站,有着大量并发请求、海量数据等客观情况,速度就成了必须攻克的难题之一。 2010年初的时候,Facebook 的前端性能研究小组开始了他们的优化项...阅读全文

    posted @ 2011-11-10 14:02 闲坐敲棋 阅读(20) 评论(0) 编辑

    摘要: http://www.cnblogs.com/photon10/archive/2011/11/10/2244131.html阅读全文

    posted @ 2011-11-10 10:33 闲坐敲棋 阅读(15) 评论(0) 编辑

    2011年10月27日

    摘要: http://www.cnblogs.com/eaglet/archive/2009/02/16/1391553.html阅读全文

    posted @ 2011-10-27 17:57 闲坐敲棋 阅读(8) 评论(0) 编辑

    2011年10月26日

    摘要: 格式: [秒] [分] [小时] [日] [月] [周] [年]序号说明是否必填允许填写的值允许的通配符1秒是0-59 , - * /2分是0-59 , - * /3小时是0-23 , - * /4日是1-31 , - * ? / L W5月是1-12 or JAN-DEC , - * /6周是1-7 or SUN-SAT , - * ? / L #7年否empty 或 1970-2099, - * /通配符说明:* 表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发。? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一阅读全文

    posted @ 2011-10-26 09:40 闲坐敲棋 阅读(15) 评论(0) 编辑