帮我看条程序员的图书馆,是关于图书馆系统程序员的图书馆,麻烦每一步都给我解释一下

推荐这篇日记的豆列
&&&&&&&&&&&&迈出的每一步都是下一步的铺垫 - 简书
迈出的每一步都是下一步的铺垫
两年前,当我得知终于以足够的成绩从广东一个默默无名的小城镇考入梦寐以求的复旦时,倒也没有很激动,只是觉得很欣慰,毕竟为此努力了不少。回首这两年,我发现有很多事是两年前的我绝对不会去做的,因为在很多时候我并不是一个自信的人,也不是一个勇于尝试的人。但是,怀着“报了名再说”或者“试一试再说”这种不考虑后果甚至有些不负责任的想法,我却做了很多意料之外的事,也得到超乎想像的收获。尤其是在写作这一方面。一年多以前,刚进大学不到一年的我从同乡会的师兄师姐那边得来一个消息,上海的潮汕联谊会准备出一本书,需要采访在上海打拼多年的一些广东潮汕籍老前辈,写出他们几十年的故事,收录在这本书里,为此希望在复旦找一些新闻系或者潮汕籍学生担任学生记者记者,采访部分老前辈。虽然高中时写的议论文经常受老师表扬,个人对媒体行业也很感兴趣,但是我很清楚我的叙事能力、描写能力奇差无比,同时有些社交恐惧症的我一想象到要跟七八十岁的老前辈聊天就觉得很窘迫。但是当时脑子一热就报了名,后来还在大酒店里和几位师兄师姐跟一些负责本书出版的老先生吃了一顿大餐,包括原新民晚报副总编辑李森华先生等。后来,从去年到今年,我前后一共采访了4位老前辈,采访、撰稿、多次修改、定稿,小赚稿费的同时,了解到那些老前辈几十年经历的风风雨雨也是大开眼界。今年5月份,随着上海论坛的开幕,复旦准备招募一批学生记者志愿者,对一些嘉宾进行访谈与撰稿。之前的采访工作让我对此颇感兴趣,而这类活动向来不乏报名者,作为理科生的我也清楚跟一堆中文系、新闻系的汉子妹子们竞争优势不大,但是我想之前四次采访工作能为我加分不少。果然最后凭着这几次经验我跟十几位来自新闻系中文系历史系的同学们组成学生记者团完成了这次任务,我也有幸采访了中国社科院环境研究与发展所所长潘家华先生(本人专业是环境科学,所以还是有点搭边的~)。再后来,有一次在学校BBS上看到学校管理学院的一个网络平台在招募编辑助理,主要是帮助老师进行采访提纲的撰写、参加一些讲座提炼嘉宾观点整理成文、将之前的人物采访记录整理成人物稿等。虽然我对商业知识、管理知识一点也不了解,但还是抱着试一试的心态投了简历。后来面试的时候老师看着我的简历,看到专业“环境科学”吓了一跳。。。但是无疑我之前的采访经历以及文章让她觉得我应该可以胜任这份工作,后来我也通过听管院的讲座,恶补金融知识与IT行业信息,写出与互联网金融、大数据相关的文章,经过老师的指点和修改,最终得以在网站上发表,并得到官方微信的推送。接着临近暑假了,我在BBS看到学校社科院正招募学生参加一个暑期实践,为上海市规土局举办的2040城市规划做公众宣传方案。一方面我是环境科学专业的学生,一方面我觉得自己的文字能力还行,写写宣传方案什么的应该没问题,于是又试着投了简历。最后如愿被录取,然后发现其余被录取的二十余名学生都是大四、研究生甚至博士生,大二的我在里边无疑是小朋友。。。现在这个项目还在进行,中期筛选已经通过,而我年纪虽小但在文字处理方面也为这个团队做了一些贡献。除了暑期实践,我还找了第一份正式实习,凭着自己的文字工作经验和公益活动经历获得了APP公益实习生上海站的名额,投的职位是一家公益机构的自媒体文案职位。后来正式工作是在与这家公益机构合作多年的创意设计公司,于是一方面我为这个年轻有活力的设计公司写案例文案、年刊文案,一方面为这个公益机构做走访记录的整理,同时管理二者的官方微博和微信平台……似乎越来越离不开文字工作了呢~进入暑期,之前在管院负责指导我的老师让我参加一个案例写作培训,那时我才知道我要和另外三位研究生学长学姐帮学校管理学院进行创新企业的教学案例写作。于是我在正式实习之余,跟管院的老师进行学习,跟学长学姐们一起去对企业创始人进行采访、搜集案头资料、进行第三方采访……在这其中,对商业、经济、金融、创业知识的补充是必不可少的,也让我这个商业小白收获良多。最近,一个家乡的师兄在建一个网站,招募一批潮籍学生进行资料搜集与编辑,以弘扬潮汕风俗文化。凭着之前的文字工作经验我也被委任进行最后的编辑整理工作。于是整个暑假在各种文字工作中忙得不亦乐乎……回想起来,虽然以后我不一定会从事文字或者媒体行业,但是现阶段做这些文字工作让我受益匪浅。一方面,为了顺利进行采访、写文章,我必须逼迫自己补充相应的知识,从而让自己拓宽视野,体会到汲取知识的快感;另一方面,这种工作逼迫我必须把想法表达出来,让一直有想法却懒于输出的我有了动力。此外,能跨专业能许多优秀的学长学姐工作也让我在这种合作中受益良多。有经验、有能力,那么专业、年级都不是问题。我深深感觉有些路真的是一步一个脚印走出来的,善于抓住机会,勇于尝试,在自己感兴趣的领域进行足够的经验的积累,或许就能为后期在这领域的发展做好坚实的铺垫。
作者:蘇河 关于,“现存的重负之下挣扎出一颗自由健全的心灵”。 谨以此书献给11月5日离开这个残酷世界的我亲爱的朋友。 第一卷 虫 人都是虫,必须让他们一辈子当虫。 ----(德)弗洛里安·亨克尔·冯·多纳斯马《窃听风暴》 卷首语 很多年以后,当苏河站在白欲山上俯视脚下的岸...
1.容易影响心情。因为西藏行,有点精神恍惚,而且真的有点追求完美,不做完就不想放下,即使明天有很多事要做。
1.室友丢钱,急于摆脱自己的嫌疑,反而显得很有嫌疑。 2.情绪化。精神恍惚,影响打工,影响学习,影响工作。 3.要想成为朋...
本文来自互联网,作者—屋漏 第1节 著名语言学家Greg Thomson说的:“外语学习的原理是如此之复杂,以至于没有人能说清楚;但掌握语言的过程又是如此之简单,以至于不需要说清楚。”讨论语言学习的原理,是件非常复杂的事,在下当然也没把握能描述得很清楚。而且因为外语学习就连...
只是想找个地方,无人认识的地方,时不时的写上两句自己的心情,或悲或喜或怒或乐,只要不被身边熟识的友人知道就好。
有时候也想像别人一样,大笔一挥,洋洋洒洒写出一手好文章,而我,每每提笔,总是词穷。
许是阅历少、见闻少的缘故,自己看问题太肤浅,而我又何尝不想有说走便...
再回到作者,他本身在时尚领域是比较有名的,也比较资深。最主要的是,他把一些社会学的方法运用到时尚理论方面,他专门有一本书《Fashionology》,讲的就是时尚理论的研究方法。也是我认为做时尚研究的人值得阅读的一本书,虽然比较学术性,但后期有可能加入我们的阅读书单中来。 ...
满清迂陈,畏惧列强,锯我山河。 观辛亥革命,救民水火,一度振奋,阀派无德。 抗日兵戈,国共烽火,胜战一合大中国。 同欢日,天安门广场,重整山河。 工农百姓协合,群情共唱捷胜凯歌。 共产人队伍,坚持信仰,为民服务,以已作则。 中华儿女,满腔奉献,各业逐行俱盛勃。 有今日,感先...
2015年,互联网似乎比这个冬天更冷,企业市场几乎是唯一的一团火热。2016年,可能寒潮更甚,创业似乎并不是一个特别好的选择,即使在企业市场中,MICE行业也不算突出,虽然节节向上,但是都没有特别好的突进模式。选择这时候进入,一方面是随着活动市场越来越成熟,互联网化程度越来...单片机程序广告等的左移右移 简单说一下这个程序每一步是什么意思_百度知道
单片机程序广告等的左移右移 简单说一下这个程序每一步是什么意思
我有更好的答案
我就大概给你说下这个程序得意思,给R2赋值8是因为一个字节有8位,表示在后面进行左移和右移的都是一个循环,DJNZ
R2,LOOP就是表示每移动一位跳转到LOOP标号处,给寄存器A赋值FE是表示让一个灯亮,之后移动每位也只是亮一个灯,DELAY标号后面的语句都是延时函数,具体多少时间可以根据指令周期计算出来。
采纳率:56%
为您推荐:
其他类似问题
单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。不会出错的程序,是这样炼成的 | 科学人 | 果壳网 科技有意思
不会出错的程序,是这样炼成的
本文作者:方弦
相信每个人都见识过Windows那令人忧郁的蓝屏吧。有时因为它,很多天的工作毁于一旦,在这个时候,你是否会在心中大骂那帮不细心的程序员呢?程序员不是上帝,他们也会犯错误。对于商业软件来说,在上市之前会进行大量的测试,即使有程序错误溜过去了,大多也可以通过打补丁来修复。但是对于某些软件来说,情况就麻烦得多。
程序错误导致的无妄之灾
在1996年的一个不能说的日子,欧洲航天局第一次发射了新研制的Ariane 5运载火箭。在起飞37秒之后,新火箭很想不开地开花了。这令砸了几亿欧元进去的欧洲航天局非常不爽。经过调查,专家组发现,事故的罪魁祸首竟然是短短的一段代码。
在Ariane 5的软件中,有一部分代码是直接从它的前辈Ariane 4上扒下来的。正是这行代码,在Ariane 4上没有问题,在Ariane 5上却发生了溢出错误。更为讽刺的是,这行代码所在的函数,对于Ariane 5来说是不必要的。这场事故完全就是人祸。
经过这场事故之后,欧洲航天局怒了,决定要一劳永逸地解决Ariane 5的问题。他们的要求相当大胆:Ariane 5的软件代码,正式使用前要证明它们不会出现毁灭性的错误,比如不会溢出,不会死循环等等。
但问题是,这其实不是一件容易的事情。
停机定理意味着神奇的检验程序不可能存在
假设有一个程序R,可以正确判定任意别的程序P在某个输入I上会不会死循环,而且它本身总是会停止的。那么,我写一个程序P1,它从6开始,逐一验证每个偶数是不是可以分成两个素数的和,如果遇到某一个偶数不可以这样分解的话就返回退出。那么,当这个程序出现死循环,就能说明哥德巴赫猜想是对的。而死循环我们只要用程序R就可以验证。同样道理,所有数学命题,只要能写一个程序验证,都可以用R来判断这些命题是对是错,我们的神奇程序R蕴含了一切数学的秘密。
不过,世上不会有这么好的事情,因为这个程序R是不可能存在的。我们可以用反证法:假设R存在,我们来写一个程序RR,它接受一个输入I,这个I既能看成程序,也能看成输入,然后用R去判断程序I在输入I上会不会停止。如果会停止的话,就进入死循环,否则就停止。简单的代码如下:
if(R(I,I)=stop)
所以,RR(I)停止当且仅当I(I)死循环。
那么,R(RR,RR)的结果会是怎么样呢?它判断的是RR(RR)是否会停止。但由上面结论可知,RR(RR)停止当且仅当RR(RR)死循环,这明显是矛盾的!所以,这样的神奇程序R并不存在。
这就是著名的停机定理。也就是说,不存在这样一个程序,自己总会停止,又可以判定别的程序会不会停止。这就说明了,要证明程序不会出错,不是一件看上去那么容易的事情。
那么欧洲航天局的任务是否完全不可能完成呢?也不是。停机定理只是说明了不存在程序能正确判定所有程序是否会停止,但欧洲航天局只需要证明Ariane 5的软件代码这个程序不会出错,所以这条路也没有完全被堵死。
那么,有什么办法呢?
用抽象释义方法吧
虽然我们不能判定所有程序是否不会出错,但我们能有效判定某些程序不会出错。
比如说如果一个程序没有任何循环语句或者跳转语句,那么这个程序是肯定会停止的,因为只能从头到尾顺序执行。那么,如果程序有循环语句,我们该怎么办呢?单靠这个信息,我们并不能确定程序会不会停止,那么最保险的办法就是说“我不知道”。
这就是抽象释义(Abstract Interpretation)方法的根本:我们抽象出程序的某些信息,对这些信息进行自动分析,来尝试确定程序是否有着我们想要的性质,比如不会死循环、不会溢出等等。我们不强求这种分析能识别出所有符合我们要求的程序,但我们要求这种分析是可靠的,也就是说,如果分析的结果认为程序有我们想要的性质,那么事实就确实是这样。正是因为这样的权衡取舍,抽象释义方法才能正确有效地实行。
根据抽象出来的信息多少,不同的抽象释义方法判断同一种性质的效果也不一样。一般来说,抽象出的信息越详细,能识别的拥有某种性质的程序就越多,相应地计算时间也越长。如何在性能和识别率之间做取舍,也是一门复杂的学问,需要开发不同的抽象方法和自动分析算法。
如果我们感觉某个程序有着我们想要的性质,但是手头上的抽象释义方法又不能确定这一点,那么我们可以换用别的更精细的、利用更多信息的抽象方法进行分析。另一种途径就是直接改写程序本身。比如说我们想要证明某段代码不会溢出,但手头上的抽象释义方法指示在某句代码上可能会有溢出,那么我们可以通过修改代码,换用更加谨慎的处理方法,来保证抽象释义方法能确认新的代码不会溢出。
抽象释义方法的奠基者是法国的Patrick Cousot和Radhia Cousot。这对夫妻档总结了一些对程序进行自动形式证明的方法,在此之上提出了抽象释义方法,将其形式化严格化。抽象释义方法的一个实际应用例子是空中客车A380的控制代码,经过Patrick Cousot的一个小组开发的抽象释义软件Astrée验证,证明了这些控制代码运行时,不会产生像死循环、溢出或者被零除之类的一些软件问题,从而也给安全系数多加了一层保险。
不过,抽象释义方法只能证明程序有着某种我们想要的性质,不能说明程序是否完成了我们希望的任务。有没有办法做到这一点呢?
用形式证明吧
有一种激进的做法:让程序员在编写代码的同时,给出这段代码确实完成了给定任务的数学证明。
要给出这种证明,首先要解决的就是如何将“代码完成了给定任务”转换成数学命题。程序代码可以相当容易用逻辑表达,而且也有软件可以自动地将代码翻译成要处理的数学对象。但我们要代码完成什么任务,这个就只有我们才知道,这就是为什么要让程序员在编写代码的同时给出证明,这就是为了程序员能用逻辑的形式确定这个函数的功能,这样才能得到要证明的命题。
但是,现在的程序动辄几十万行,要是用人力来证明的话,那恐怕要几个数学家花几个月的时间才能完成,那成本就很高了。能不能用电脑来帮我们做这个证明呢?
看起来不太可能,但的确有人在干这种事情。在法国的一帮计算机学者搞出来了一个数学证明辅助程序,叫Coq,在法语里边是公鸡的意思。本来他们开发这个程序的本意,正是尝试用它来帮助程序员完成某些机械的证明过程。因为证明某个程序不会出错的过程也相当机械的,所以用它也没问题。Coq中有很多自动证明的策略,可以在很大程度上帮助程序员快速完成这类证明。
贯彻这种设计理念的是由法国计算机科学家Xavier Leroy带头编写的,一个叫CompCert的C编译器。
编译器是将一种代码翻译成另一种代码的工具,它的任务就是进行忠实的代码翻译,确保源代码和目标代码的行为一致。但是编译器未必可靠,错误编译的情况时有发生,如果关键的系统出现问题,那么像Ariane 5那样的事故可能又会再次发生,而且问题更加隐蔽不易察觉。
而CompCert就解决了这个问题。在编写CompCert的时候,Xavier Leroy他们对于编译程序的每一步操作,都利用Coq给出了一个数学证明,确保代码的语义(也就是说代码应该干什么)在每一步都是不变的。合起来,他们就证明了CompCert编译器在整个编译过程中保持了代码的语义,会将代码忠实地翻译成程序。
如果所有程序都有这样的数学保障的话,那么我们大概就再也不用受软件错误之苦了。但是,Coq的表达能力还相当有限,比如说C语言中的指针等概念,Coq还不能很好地表达出来。要想完全摆脱软件错误,我们还有很长的一段路要走。
有兴趣的同学可以去Astrée和Coq看看:
Astrée的官网是
,Coq的官网是
你可能感兴趣
看着头有点晕哇!
晕厥了。。。
理论物理博士,科学松鼠会成员
后半部分看不懂
生物信息学硕士生
大家来围观BUG的祖师爷。。第一次被发现的导致计算机错误的飞蛾
oh!那电脑黑屏是怎么回事啊
那蛾子威武了
软件工程师,小众软件爱好者
膜拜祖师爷....引用D-Horse的回应:大家来围观BUG的祖师爷。。第一次被发现的导致计算机错误的飞蛾
软件工程师,小众软件爱好者
用数学模型替代程序. 这个
会感兴趣吧.....
恩 Turing's Halting Problem
大部分bug受制于成本。。。还有一些是不可避免的错误,不应该叫做bug
科学松鼠会成员,信息学硕士生
我表示我学abstract interpretation的时候压力也很大……的确这次选题有些过于专业了……后半部分随便看看就好……引用sheldon的回应:后半部分看不懂
。。。。。。在法语里边是公鸡的意思。法国人就这么爱公鸡吗?
统计学专业本科生,数学控
引用D-Horse的回应:大家来围观BUG的祖师爷。。第一次被发现的导致计算机错误的飞蛾OTL飞蛾君您辛苦了!
科学松鼠会成员,信息学硕士生
那是他们的国鸟……引用zolover的回应:。。。。。。在法语里边是公鸡的意思。法国人就这么爱公鸡吗?
强顶~~学徒级coder膜拜中
程序员对于bug表示很头疼~~
引用D-Horse的回应:大家来围观BUG的祖师爷。。第一次被发现的导致计算机错误的飞蛾这个就是指所有叫做Bug的原因,因为一开始就是一只Bug弄的。。
“在1996年的一个不能说的日子”内涵了。。。
1996年的一个不能说的日子....
呃,纠个小错误,那个RR程序里一句应该是if(R(I,I)==stop)吧。程序语言里,“=”是赋值,而“==”才是比较。
科学松鼠会成员,信息学硕士生
伪代码,不要太在意……大家看得明白就可以了……程序调用又不可能是左值,一般也只有非常蛋疼的人会在判断语句里边赋值……另外一般写伪代码的传统,赋值是用 &- 表示的……引用sssssummer的回应:呃,纠个小错误,那个RR程序里一句应该是if(R(I,I)==stop)吧。程序语言里,“=”是赋值,而“==”才是比较。
引用D-Horse的回应:大家来围观BUG的祖师爷。。第一次被发现的导致计算机错误的飞蛾传说中的妖蛾子??!!膜拜祖师爷……
指针。。。。。。记得刚开始学习写程序的时候,指针是所有前辈要警告后辈的重中之重
应用数学专业
我的脑袋死循环了……
我就写过一个小程序,也就几十行代码,经常莫名其妙出错,真是不得其解,可能是Windows系统的问题(全部用VB自带控件)
膜拜祖师爷,表示对于人家写的代码完全不能Debug,果然Bug要自己养的才会亲一点吗?
不!懂!啊!
很有意思的选材,等考完悲催的电磁场再来拜读一遍...写程序本来就应该是以数学逻辑为依据的,但是当程序语言的运用逐渐变得跟自然语言一样随意却能表意的时候(虽然事实上跟自然语言比起还差得远),又需要数学来规范这种随意性了,而规范的方法还是得依靠程序...嗯,写到这里我又想起练acm的日子里各种猜解法最后意外ac...
“如果会停止的话,就进入死循环,否则就停止。”谁能解释解释这句话啊???为什么我觉得它有语法错误呢???
嗯。。。首先向祖师爷致敬,其次嘛~表示有点儿看不懂。就像30L说的
显示所有评论
(C)果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号&&&&
违法和不良信息举报邮箱:&&&&举报电话:&&&&&&&&铁冰永远都是正确的
铁冰没来过我的图书馆,但他已来过我的blog,到目前为止他还是依法合理利用我的园子的,因此他是我的用户。他自己也承认他是图林的用户,但我不知道为什么年轻轻的他心里会有极大的阴影,总以为图林中某些人不遗余力的证明他是错误的,所以有极强的逆反心理来对待“定理四”,甚至迁怒于所有对“定理四”举过手的人。如果是因为吃了我等园子里的菜,如此上吐下泻,那可真是罪过啦。谁让程大教授提出:“用户永远都是正确的”呢?真是该“定理死”,搞得图林没几个真“爷们儿”出来说话,还要本“婆婆”(铁冰所赐)亲自出面去伺候铁石心肠冷冰冰的小媳妇(他自己内心阴影所致,感觉变成了小媳妇)。那些书疗导员们真该书导书导。不过,既是吃过本“婆婆”的菜,我也该苦口婆心说说。说过之后,谁爱伺候谁伺候去。(以上纯系斗嘴,没别的意思,我是想说明缺乏理性的批判,只是与斗嘴无异,只能使其阴影更阴,对解决问题毫无助益,离科学差得更远)。下面言归正传。
铁冰是这样品我的一道菜的,并把感觉用红字批出来了,我只好用蓝字作答。
[定义1]图书馆是为了满足社会成员公平、自由、合理利用信息资源的公益性社会服务机构。(No
problem) (谢谢!品出味了)
在这样的语境下,那就有一个公理:
[公理1]每个社会成员都有依法合理利用图书馆的权利,社会保障这种权利的实现。
(No problem) (谢谢!品出味了,其实该公理与定义1还有一层味道没品出来,但不是你的错,下面我再说)
作为公理它是不需要证明的。
[定义2]图书馆用户是依法合理利用图书馆的社会成员(个体或团体)。
(No problem) (谢谢!品出味了)
于是我们有公理2:
[公理2]图书馆有义务帮助用户正确利用图书馆,实现其利用图书馆的权利。
(No problem) (谢谢!品出味了)
[推论1]用户利用图书馆没错。 (“利用图书馆没错”表述含糊,到底是说“用户利用图书馆”这一行为并无过错,还是指“公理2”中的“用户正确地利用图书馆”?“正确利用”与“利用……没错”并不等价。)&(我不得不承认表达不清,但你太心急了,要是看完证明,就还不至于不能理解,在证明中我只说“根据定义1、2,公理1”,而没提“公理2”。这一推论,从法理上说明用户利用图书馆的正确性,自然是“利用……没错”之意,而下一推论才是具体利用行为的正确性,只是这种行为的正确性是需要图书馆来保障的)
证明:根据定义1、2,公理1,用户利用图书馆没错。证毕。
[推论2]如果用户不能正确利用图书馆,那么图书馆必须提供帮助。
(No problem)(谢谢,理解)
证明:根据定义1、2、公理1,用户有权利利用图书馆,图书馆应该保障用户权利的实现。根据公理2,帮助用户正确利用图书馆是图书馆的义务。所以,用户不能正确利用图书馆,图书馆必须提供帮助。证毕。
(No problem)(谢谢,理解)
[定理]如果用户利用图书馆,那么他们应该永远是正确的。
证明:根据以上定义、公理和推论,如果用户不能正确利用图书馆,那错儿不在用户,而是图书馆没有尽到使用户正确利用图书馆的义务(No
problem)(谢谢,理解)。因而对图书馆来讲用户永远是正确的(BIG
problem!!作者只证明了“那错儿不在用户”,却没能证明“用户是正确的”。“错不在用户”不等于“用户没错”,更不等于“用户正确”。功亏一篑,呜呼!哀哉!!)(的确,“错不在用户”不等于“用户没错”,更不等于“用户正确”。也许有个细节你没注意到,定理中,我在“永远”前加了“应该”,而“对图书馆来讲用户永远是正确的”却省掉了,我以为不会造成歧义,看来又是我的错,而不是你的错。而“应该”之意,应该是在推论2中应有之义。也正是这一“应该”之意,明确将这一定理的限度限定在了图书馆的理念当中,任何泛化必将招致矛盾。也就是程大教授更强调“用户永远是正确的”是图书馆的理念的应有之意。当然,你会说“定理是定理,理念是理念”,下面我再说吧)。证毕。这个定理用诗性语言表述就是:“用户永远是正确的”。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 图书馆占座小程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信