欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2023年学java心得体会.docx

    • 资源ID:92126927       资源大小:26.07KB        全文页数:30页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2023年学java心得体会.docx

    2023年学java心得体会(合集)【完整版】 从某件事情上得到收获以后,写一篇心得体会,记录下来,这么做可以让我们不断思索不断进步。优质的心得体会该怎么样去写呢?下面我帮大家找寻并整理了一些优秀的心得体会范文,我们一起来了解一下吧。 学java心得体会篇二 java编程心得 计算机3班 窦金霞 20234773 最近几周始终在弄程序,说实话真的很累,但累中也有胜利的欢乐。我觉得学到了许多东西,这是只看课本学问所不能学到的。 说实话,以前我始终没学过java虽然我也知道java的重要性,可是即使上课听了,不实践还是把握不了。由于种种缘由,今年我没有买笔记本。没有机器,仅仅靠每周一次的上机练习是肯定不够的。所以我就插空调程序,在舍友们不用的时候自己再接她们的电脑调。 调上一个web版的通讯录程序时我已经感觉到学的很吃力,好多东西都不懂。这次做的这个学生成绩治理系统更简单了,所以一开头调的时候感觉特殊吃力.所以我告知自己不能放弃,渐渐来,就这样我从最根本的sql语句session对象开头学起,我觉得我还有太多不懂得所以要比别人付出更多的努力。就这样我一点一点的学着 说心里话,在做上一个web版的通讯录时,我就感觉到胜利的喜悦。好多地方我都是一点一点的问的,在问的过程中,我也学会了许多,像:servlet和jsp之间跳不过去时有两种解决方法,; 二是将servlet中的throws exception改成try catch以捕获特别;我还学到了集中查找错误的方法,可以加上两个双斜杠“/”将详细的方法屏蔽掉,一检查是方法错误还是servlet错误,n()将获得的数据输出,用来检查数据传输过程有没有错误等等。 虽然在别人看来,这些方法可能都很常规,但是的确我自己学会的,我觉得很有成就感。我已经做好规划了,暑假的时候去买本本用自己的本本练习一下java,虽然下学期不学java了,但是我对java的热忱不会由于这个而削减的! 做完这个学生成绩治理系统后,我觉得我对java的看法已经转变了。一前总以为java很繁琐很难,听同学说java不好学,开头又有一些听不懂,所以始终很畏惧java。但真正做了这个系统以后我才感觉到其实任何事都没有难与不难之分,只要你肯努力的去做,世上无难事只怕有心人! 我现在对java学习布满了热忱,我知道我还有许多的缺乏 还有许多需要努力的地方,所以我的java之旅将连续进展 学java心得体会篇三 java编程实习心得体会 “纸上得来终觉浅,绝知此事要躬行。”在短暂的实习过程中,我深深的感觉到自己所学学问的浅薄和在实际运用中的专业学问的匮乏。刚开头的一段时间里,对一些工作感到无从下手,茫然不培训班学习心得体会知所措,这让我感到特别的难受。在学校总以为自己学的不错,一旦接触到实际,才发觉自己得力量是远远没有到达工作的要求的,实际的工作远比想象中的要细致得多简单得多,这时才真正领悟到“活到老学到老”的含义。实际的工作力量是书本实习心得体会范文上没有方法教授给大家的,必需要通过实际工作来积存与强化。来公司实习已两个个多月了,在这段时间里,我主要学习java编程,下面主要谈谈学习的阅历以及心得体会。 在编程过程中遇到了较多的问题,解决问题的过程是漫长而艰难的,然而在问题得到解决的一刹那是很欢乐的。在此与大家共享下: 一、前期规划: 我理解的前期规划是:在市场人员们汇总一个需求提交给产品专家带着的产品经理团队,然后经过这个团队依据公司详细状况再次分析和规划出一个最终需求文档。 这个需求文档应当首先提交给技术研发部门的负责人以及核心开发人员。由开发团队对其进展技术和风险分析。假如对此需求统一有异议的地方,需要返回给产品团队,重新修正需求。反复如此,直至需求完善精确,细致,清楚。 前期规划就像高楼的地基,假如马马虎虎,就算是一块砖块没摆好都可能导致整个高楼建立的失败。在规划中我认为,沟通永久是需要双方积极主动,能仔细听取每个人的建议。前期工作思维不慎重,不细致,不仔细,不够完善,将产生连锁效应直接导致整个工程和工程的失败。 这种失败可能表现为:第一种,软件按需求实现但是功能根本不能满意用户需要。其次种,功能都有了,软件没有到达可用性、易用性。 对于第一种,固然是由于前期规划疏漏了某些细小功能,没能把需求文档做完善。应当是规划工作做的还不够仔细和细致。 对于其次种状况,我认为更多是在产品设计规划方面阅历还不够成熟。这种问题应当是很难避开的。由于每种新产品对产品团队来说都很生疏。即使以前做过类似的东西,也难免面面俱到。这只能通过不断努力和仔细的态度来弥补。 前期规划的沟通涉及了市场、产品和技术研发等多个团队之间。需要的不仅是团队内部的沟通,更多需要协调好团队之间的沟通。可能有时候需要公司高层和中层参加协调。 目前,许多开发人员深感工程的需求文档写的都很薄弱。大家可以想一想,假如没有好的开头,怎么会有好的完毕呢?需求文档薄弱,不够细致,由谁来连续完善呢?莫非让程序员们自己去完善。我想程序员也可能没有这种力量。对于程序员能把代码写的很强健很稳定就已经是很不简单的事情了。 二、概要设计: 我理解的概要设计步骤:(以工程为中心的开发流程) 1 工程经理认真阅读工程需求文档。 2 工程经理召集工程开发成员,开工程启动会议。详细协商工程的开发任务和责任安排。 3 核心开发人员开发确定,以及各模块开发人员确定。4 由系统分析员和核心开发人员认真阅读需求文档,对系统整个架构分析和做技术规划。 5 系统分析员整理和书写最终的系统架构和概要设计文档。 6 系统分析员在文档提交日,提交给工程经理。工程经理确认文档并审批。 7 工程经理召集工程开发成员,开一个概要设计以及系统架构确定的会议。向每个成员分发文档,并争论确定最终概要设计文档。 8开头具体设计文档的工作 三、具体设计: 1工程经理组织成立各个模块的开发小组,并确定开发小组组长(程序经理)。 2各开发组长书写各自模块的具体设计文档,开发成员需要帮助,协作。 3在指定提交日,开发组长提交文档给系统分析员。由系统分析员审批。 4系统分析员组织召开一个具体设计文档确认的会议。 5然后开发组长分发各自模块的具体设计文档给程序员,程序员在指定时间 内完成。 6程序员做内部测试。开发组长协调并协作。 7确认无bug提交给开发组组长。 8全部模块整合工作,由整个开发组成员参加完成。 由全部开发组长和系统分析员负责主要局部工作。程序员帮助和协作。 9对整合后工程做具体测试。 10确认测试通过后,开发组长依据开发成员表现以及提交成果 填写绩效考核表。然后提交给工程经理。 11工程经理睬召开工程总结会,同时向优秀成员颁奖。同时鼓 励全部成员连续努力。对不能按时完成导致工程能按时提交,以及对导致失败的 关键人员给与惩处处理。 固然,以上只是一个简洁的开发流程,肯定是有许多缺乏的地方。盼望能起到抛砖引玉的作用。大家都明白,流程和制度是死的,但人是活的,所以如何按流程做得好,关键还是在人本身了。没有一个流程和制度,一个团队也必将是一盘散沙。正所谓“无法规无以成方圆”。这句话说得很有道理。 四、详细编码: 开发几个工程之后,对编写程序有了更进一步的了解。 好的程序应当具有: 易读性,易扩展性,容错性。易读性: 全部变量和函数以及类名用简洁易懂易记忆的命名方式。全部类和 函数甚至变量都有关键的解释说明。 这点很重要,也是最根底的。假如代码书写 不够美观和易懂,我想自己以后也不想再看。 就更别谈功能的扩展和新版本开发了。 易扩展性: 整体系统架构规律简洁清楚。 模块与模块之间尽量做到互不影响,也就是尽可能的独立。这局部工作主要表达在前期设计工作中,需要把握好的设计阅历和方法才能够做得比拟好。 容错性: 对数据流和指针以及数组都做数据有效性检查; 对第三方接口的调 用失败的容错性。对全部代码都做调用失败后的错误处理。 以及在大的工程中参加trace文件输出,把关键的数据流和关键处理局部的操作信息输出。 以便对工程特别状况产生条件的定位,准时解决问题。 我觉得程序员能在这三方面做得很好就算一个优秀的programmer了。 四、调试、跟踪与测试 测试需要留意的: 对每个模块的接口做测试,数据边界的检查。在对整个模块做测试。主要测试稳定性,效率以及功能是否正常。确认单个模块完全正常后,再参加工程。 在系统架构设计的时候,可能会引入原型参考。要对原型做完成测试后,确认没有问题后,才可使用。 五、收获与体会: 在鼎慧大数据公司的实习完毕了,看着自己亲自写出来的几个案例,内心特别感动,整个实习过程布满深厚的学习气氛。在这里,我对java的熟悉与理解上升了一个档次,当时对java只是一知半解,而在这里学习了一段时间后,发觉自己对java还是很感兴趣的。课堂上教师仔细地讲解各个方面的学问,每一个学问点都会讲解地特别清晰,让我们理解透彻,并且会加以程序联系,让我们充分地汲取一天所学的学问。实习从开头的紧急畏惧到后来的喜爱习惯,在这里留下的记忆是深刻的、收获是丰富的、汗水是晶莹的。 通过这次实习,此次实习过程中的收获主要有四个方面:一是通过直接参加企业的运作过程,学到了实践学问,同时进一步加深了对理论学问的理解,使理论与实践学问都有所提高,圆满地完成了此次实习的实践任务。二是提高了实际工作力量,为就业和将来的工作取得了一些珍贵的实践阅历。三是在实习过程中成立一个小组,彼此之间相互沟通,相互帮忙,为了达成共同的目标而努力,让我看到了大家对于工作的热忱,还有每个人的工作力量。四是为毕业论文积存了素材和资料。 于是,在将来的日子,我将做到以下几点: 1、连续学习,不断提升理论修养 在信息时代,学习是不断地吸取新信息,获得事业进步的动力。仔细学习java,使自己具有更好的专业学问,为以后就业做预备。作为一名青年学子更应当把学习作为保持工作积极性的重要途径,不断努力,不断进步。 2、努力实践,自觉进展角色转化 理论是灰色的,生活之树常青,只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是通过实践活动来实现的,也只有通过实践才能熬炼人的品质,彰现人的意志。 从学校走向社会,首要面临的问题便是角色转换的问题。从一个学生转化为一个单位人,在思想的层面上,必需熟悉到二者的社会角色之间存在着较大的差异。学生时代只是单纯的学习学问,而社会实践则意味着连续学习,并将学问应用于实践,学生时代可以自己选择交往的对象,而社会人则更多地被他人所选择。诸此种种的差异。不胜枚举。但仅仅在思想的层面上熟悉到这一点还是不够的,而是必需在实际的工作和生活中潜心体会,并自觉的进展这种角色的转换。 3、提高学习积极性和主动性 实习,是开端也是完毕。呈现在自己面前的是一片任自己驰骋的沃土,也清楚感受到了沉甸甸的责任。在今后的学习和生活中,我将连续努力学习,深入实践,不断提升自我,努力制造成绩,连续制造更多的人生价值。 4、要培育自己的团结合作精神 工作学习生活中,团结合作,是必需的。工程经理说过,一个完整的程序不是由一个人完成的,而是由一个团队完成的,每个人完成一局部的模块,然后整合起来才是完善的程序。所以在工程中,每个人都是力气必要的。因此,培育自己的团结合作力量,是以后的工作的必要预备。 学java心得体会篇四 1.什么是gui? a)gui是graphics user interface的全称,意思是图形用户界面.2.为什么需要gui? a)图形用户界面能够让最终用户通过鼠标拖动、单击等动作就可以操作整个应用,从而提高应用的用户体验效果, a)awt是sun公司供应的一个根本的gui类库,被称为抽象工具集(abstract window-toolkit),它为java应用程序供应了根本的组件.b)awt组件需要调用运行平台的图形界面来创立和平台全都的对等体,所以awt只 能使用全部平台都支持的公共组件,因此awt只能够供应一些 的主要组成局部 a)component,代表一个详细图形表示力量的对象,可以在屏幕上显示,并与用户交互.通常我们把它称为”组件”.b)menucomponent,r,em,代表一个菜单项.c)container,代表一个awt组件容器,可以盛装其他commponent组件,它继承自 component抽象类,代表一个对话框 a)filedialog代表一个文件对话框,可容纳其他组件,但不能独立存在,必需被添加到其他容器中.ii.scrollpane,带滚动条的容器.d)layoutmanager,布局治理器,yout,流式布局,layout,边框布局,只能盛装5个组件,yout,网格布局,glayout,网格包布局,一种较为简单的布局治理器,yout,卡片布局,以时间来治理容器内的组件,将组件看作是一张张卡片,每次显示最外面一张卡片(组件).boxlayou,箱式布局, 的大事 a)应用程序响应用户的某个动作或恳求,如用户单击了一下鼠标,用户恳求关闭应用 程序窗口等.b)awt编程中,全部大事的处理都必需交给特定的对象来完成,我们将这个特定的对 象称为大事监听器.c)awt的大事处理机制是一种委派式的大事处理方式,通过将某个大事监听器注册 到用户指定的组件,当用户进展某个操作并触发指定大事时,应用程序会自动产生一个大事(event)对象并作为参数传给大事监听器中的大事处理器,然后由大事监 听器通知大事处理器来响应用户,完成用户的恳求.d)不同的大事需要不同的大事监听器,不同的监听器需要实现不同的监听器接口.e)大事监听器接口:为某个特定大事定义了响应用户恳求的方法,当用户将某个大事 监听器注册到指定组件上以响应特定的大事时,则该大事监听器必需实现对应的大事监听器接口才能对用户的恳求进展有效处理.例如,用户点击了鼠标右键,盼望翻开某个应用程序的右键菜单,则注册到该应用程序上的大事监听器必需实现鼠标大事监听器接口,并实现该接口内部某些方法来完成用户的恳求.f)大事适配器,许多时候,我们只需要实现某个大事监听器接口中个别方法就能完成应用程序的实际需求,但实现该大事监听器接口的类必需实现该接口中全部的抽象方法,这会造成代码的冗余.而大事适配器可以帮我们解决这个问题,大事适配器实现了全部的拥有多个抽象方法的大事监听器接口,并空实现了这些接口中全部的抽象方法,所谓空实现,就是方法中没有任何实现代码,因此,我们可以通过继承对应大事监听器接口的大事适配器抽象类,并实现我们感兴趣的方法来完成应用需求即可.g)java大事处理过程中主要涉及的三类对象 i.大事源,.大事,通常指用户的某个操作,如单击了一下鼠标,.大事监听器,负责监听大事源上所发生的大事,并作出响应.h)awt大事监听器的实现形式 .内部类形式 顶级类形式 iii.类本身作为大事监听器 iv.匿名内部类形式 v.注:绘图 a)awt绘图的实现过程.i.重写画布类的paint方法,.调用component类的repaint方法绘制图形.b)awt实现绘图主要涉及的对象 .c)component类的子类canvas类,cs,代表一个画笔,类代表了位图,它的一个主要的实现类bufferedimage是可以访问图形数据 缓冲区,并可以返回一个graphics对象来绘制该buuferedimage.d)的优缺点 a)awt在很多非桌面环境,如嵌入式设备中有着自己的优势,它的主要优点如下:.iv.更少的内存:对运行在有限环境中的gui程序的开发,是适宜的。2.更少的启动大事:由于awt组件是本地由操作系统实现的。绝大多数的二进制代码已经在如系统启动的时候被预装载了,这降低了它的启动大事。3.更好的响应:由于本地组件由操作系统渲染。4.成熟稳定的:能够正常工作并很少使你的程序崩溃。 b)同样它也有不少的缺点 .更少组件类型:表和树这些重要的组件缺失了。它们是桌面应用程序中普遍使用的。2.缺乏丰富的组件特征:按钮不支持图片。3.无扩展性:awt的组件是本地组件。jvm中的awt类实例实际只是包含本地 组件的引用。唯一的扩展点是awt的canvas组件,可以从零开头创立自定义组 件。然而无法继承和重用一个已有的awt组件 总结:awt是sun不推举使用的工具集,实际开发中很少使用awt而是使用sun公司 和netscape公司共同开发的一个新的用户界面库-swing来开发gui应用程序,awt是图形用户界面编程的根底,它的布局治理、大事机制、剪贴板操作等内容仍旧适用于swing gui编程. 学java心得体会篇五 in the following code, which is the earliest statement, where the object originally held in e, may be garbage collected: class test static void main(string args ) ee e = new employee(“bob”, 48); atepay(); n(etails(); 6.e = null; 7.e = new employee(“denise”, 36); atepay(); n(etails(); 10. 11. only one: in the following code, which is the earliest statement, where the object originally held in e, may be garbage collected: class test static void main(string args ) ee e = new employee(“bob”, 48); atepay(); n(etails(); 6.e = null; 7.e = new employee(“denise”, 36); atepay(); n(etails(); 10. 11. only one: 10 11 7 8 2:exhibit : class test(e static int j = 0; e static boolean methodb(int k)(5.j += k; true; 6.) static void methoda(int i) n b: 10.b = i 10 | methodb(4); 11.b = i 10 | methodb(8); 12.) static void main(string args (a(0); n(j); 17.) 18.) what is the result? program prints “0” program prints “4” program prints “8” program prints “12” 3:what is written to the standard output given the following statement:n(4|7); select the right answer: a.4 b.5 c.6 d.7 4: select valid identifier of java: select valid identifier of java: a.%passwd b.3d_game c.$charge 5:设有变量说明语句int a=1,b=0; 则执行以下程序段的输出结果为()。 switch(a) case 1: switch(b) case 0:printf(“*0*”);break; case 1:printf(“*1*”);break; case 2:printf(“*2*”);break; printf(“ ”); a.*0* b.*0*2* c.*0*1*2* d.有语法错误 6:in the following pieces of code, which one will compile without any error? buffer sb1 = “abcd”; n b = new boolean(“abcd”); c.c: byte b = 255; fl = 1.2; 7: what is the result when you compile and run the following code? public class throwsdemo static void throwmethod() n(“inside throwmethod.”); throw new illegalaccessexception(“demo”); public static void main(string args) try throwmethod(); catch(illegalaccessexception e) n(“caught ” + e); choices: what is the result when you compile and run the following code? public class throwsdemo static void throwmethod() n(“inside throwmethod.”); throw new illegalaccessexception(“demo”); public static void main(string args) try throwmethod(); catch(illegalaccessexception e) n(“caught ” + e); choices: ation error e error e successfully, nothing is ed by caught:laccessexcption: demo 8:which of the following statements are not legal? l = 4990; i = 4l; d = 34.4; t = 0.9f.9: give the following java class: public class example public static void main(string args) static int x = new int15; n(x5); which statement is corrected? give the following java class: public class example public static void main(string args) static int x = new int15; n(x5); which statement is corrected? compile, some error will run, some error will is is null.10:下面关于变量及其范围的陈述哪些是错的。 a.实例变量是类的成员变量。 b.实例变量用关键字static声明。 c.在方法中定义的局部变量在该方法被执行时创立 d.局部变量在使用前必需被初始化。 11: public class x public object m() object o = new float(3.14f);/line 3 object oa = new object1;/line 4 oa0 = o;/line 5 o=null;/line 6 return oa0;/line 7 when is the float object, created in line 3,eligible for garbage collection? public class x public object m() object o = new float(3.14f);/line 3 object oa = new object1;/line 4 oa0 = o;/line 5 o=null;/line 6 return oa0;/line 7 when is the float object, created in line 3,eligible for garbage collection? after line after line 6 after line 7(that is,as the method returns) in this method 12: which is the most appropriate code snippet that can be inserted at line 18 in the following code? (assume that the code is compiled and run with assertions enabled) .*; class asserttest 4. e hashmap cctld; asserttest() 8. = new hashmap(); (“in”, “india”); (“uk”, “united kingdom”); (“au”, “australia”); 13./ more code.14. 15./ other methods. string getcountry(string countrycode) 17. 18./ what should be inserted here? country =(string)(countrycode); country; 21. 22. which is the most appropriate code snippet that can be inserted at line 18 in the following code? (assume that the code is compiled and run with assertions enabled) .*; class asserttest 4. e hashmap cctld; asserttest() 8. = new hashmap(); (“in”, “india”); (“uk”, “united kingdom”); (“au”, “australia”); 13./ more code.14. 15./ other methods. string getcountry(string countrycode) 17. 18./ what should be inserted here? country =(string)(countrycode); country; 21. 22. countrycode!= null; countrycode!= null : “country code can not be null”; cctld!= null : “no country code data is available”; cctld : “no country code data is available”; 13: give the following code: public class example public static void main(string args) int l=0; do n(“doing it for l is:”+l); while(l0) n(“finish”); which well be output: give the following code: public class example public static void main(string args) int l=0; do n(“doing it for l is:”+l); while(l0) n(“finish”); which well be output: it for l is 3 it for l is 1 it for l is 2 it for l is 0 14:which statements about java code security are not true? bytecode verifier loads all classes needed for the execution of a ing code is performed by the runtime runtime the bytecodes are loaded, checked and run in an interpreter. class loader adds security by separating the namespaces for the classes of the local file system from those imported from network sources.15:a class design requires that a member variable should be accessible only by same package, which modifer word should be used? ted modifer e 16:character流与byte流的区分是 a.每次读入的字节数不同 b.前者带有缓冲,后者没有 c.前者是块读写,后者是字节读写 d.二者没有区分,可以互换使用 简答题 17:找出两个字符串中最大子字符串,如“abractyeyt”,“dgdsaeactyey”的最大子串为“actyet” 18:假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道全部的整数都在1到1000(包括1000)之间。此外,除一个数字消失两次外,其

    注意事项

    本文(2023年学java心得体会.docx)为本站会员(黑***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开