自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 收藏
  • 关注

原创 深入分析数据库中数据的存储和读取

我们日常的开发或多或少都会和数据库打交道,那么数据库中数据都是如何存储来保证读写的效率呢?本文就来详细地介绍数据库中数据的存储和读写。最简单的数据库我们首先来看一个最简单的通过bash来实现的数据库,它就是一个键值数据库,通过Bash函数来实现读写。这里有两个函数,一个是写函数,就是简单的写入key和value对。另外一个函数是db_get()函数,它可以读出最新写入的一行数据。我们可以这样使用它,这里我们就是写入了两个key,value,一个是123456,对应的后面的Json格式数据

2021-06-07 06:59:07 1058 1

原创 2020年最新开发者调查报告,你不可不知的内容

StackOverflow发布了2020年开发者调查报告,此次有65000名开发者参与了调查,比较可惜的是中国参与的开发者却很少。不过这份报告也大概体现了目前全球开发者的情况了,下面我们来看看具体的报告结果:关键结果过去五年来,Python一直在稳步上升,不过在最喜欢的技术排名中,它从去年的第二掉到了今年的第三,Typescript反超到第二。Rust连续第五年登上了最受喜欢技术的头把交椅。 在所有的职位中,站点可靠工程师和DevOps专家仍然是薪水最高的职位。80%的受访者认为,DevOps..

2020-08-11 09:57:28 1473

原创 深入浅出理解数据的序列化和反序列化

一般来说,数据的处理有两种类型。一种是在内存中,比如我们常见的结构体,list,数组等等。而另外一种就是把数据写到文件中或者在网络中进行传输,这个时候的数据传输说白了就是比特流,那么接受方如何解析这些接收到的比特流呢?这个时候就需要对数据进行序列化,把相应的数据转化成可以自解释比特流。然后接收方就可以通过反序列化的方法把这些比特流再转化成相应的结构体等等类型。各种语言自带的格式很多语言都有自带的序列化方法,比如Java.io.Serializable,Python的pickle等等。它们用起来很方便

2021-06-10 11:23:19 807

原创 使用Python实现一个读书内容提醒

我们通常会发现很难记住我们曾经读过的东西,就像上图所示,随着时间的推移,所读的东西会渐渐忘记,只有不断的复习,才能够真正地把它们记住。有时,我也想不停地去复习他们,但是总是会忘记这件事,要是能有一个系统不断地提醒我做这件事就好了。我想我所遇到的这个问题,应该也是大家平常会遇到的。其实市面上,也有一些网站可以实现这个功能,比如readwise.io,它就会每天给你发送提醒的邮件。那么我就在想,我们能不能自己也做 一个呢?想到就做吧,正好最近也在学习Python,那就让我们一起来试试看能不能实现...

2020-08-28 09:43:10 441

原创 用Python实现一个决策树分类器

本文将会介绍如何用Python实现一个决策树分类器。主要包含下面两个方面:什么是决策树? 使用Python实现决策树什么是决策树简单来说,决策树算法把数据按照树的结构分成了一系列决策节点。每一个决策节点都是一个问题,然后可以根据这个问题把数据分成两个或多个子节点。这个数一直往下创建,知道最终所有的数据都属于一个类。创建一个最佳决策的标准就是信息增益。下图就是一个简单的决策树示意图:使用决策树分类器来train机器学习model就是找到决策树的边界。通过把feature空间...

2020-08-26 09:57:11 2097

原创 如何选择软件工程相关的Metric并据此来设置相关的KPI

软件工程的KPI是一个很重要的指标,它可以用来衡量软件团队的performance。因此,他需要比较稳定,并且能够覆盖没一个人所做的工作,最重要的是,可测量的。因为他是用来展示整个团队的工作的,所以选择正确的metrics来测量很关键,否则就没有用了。一些我所常见到的错误就是看提交了多少行代码,有多少个commits,甚至deploy了多少次等等。当然,不是所看deploy多少次是有错的,主要还是看你想要观察的是什么(有可能和生产率没有关系)通常,很多关于KPI的文章都关注了很多metri...

2020-08-24 09:30:26 349

原创 React Native Camera的新手教程

自从手机有了摄像头之后,我们可以很方便地把生活中的瞬间记录下来。我们可以通过照片和视频来回顾那些美好的瞬间。自然而然,和我们最爱的朋友和家人分享这些照片和视频就成为了一个必然的需求。所以,在你写一个app的时候,很可能就希望他能支持拍照和拍视频的功能。假如你还不太清楚怎么来实现的,本文就是来简单介绍如何使用React Native实现相关的功能。预先安装的包:expo-camera:这个包是用来拍照和视频的。 Expo-av: 这个包是用来导入视频并进行播放的。可以使用下面的...

2020-08-22 08:26:01 2118

原创 Google DeepMind介绍

DeepMind其实包含两个方面:Google AI业务背后的创新以及其相关的组织。DeepMind是Alphabet(Google母公司)的辅助机构。DeepMind已经集成到Google的各种工具和产品之中了,当你使用Google Home或者Goolge Assistant的时候,DeepMind无处不在。Google为什么要收购DeepMindDeepMind是2011年建立的,他的目的是理解所有的知识,并利用这些知识来理解世界上的一切。他的创始人利用神经领域...

2020-08-18 09:48:30 1459

原创 如何通过重试来改进你的后端API call

无论你是从Node.js还是浏览器调用一个API Call,连接失败总是会发生。有些request的失败是有效的,也许endpoint有问题,或者客户端发送了一个错误的数据。另外一些则是连接的问题,比如连接到服务器的问题,或者是这之间的某一个节点出现了问题。虽然API和web服务检测可以看到这些问题,但是一个更好的方案也许可以处理这个问题。解决这个问题,你可以在你的HTPP调用中假如一个重试的机制。这可以让你的API调用成功。有些库,比如got,就支持失败的重试,而另外一些库,比如axios,则需要一个

2020-08-16 08:11:07 610

原创 如何成为一个更好的前端开发者

很多人来问我,如何成为一个更好的前端开发者,当我们已经有了一些前端的开发经验之后,如何进入下一个level呢?本文就像一个清单,而不是一个文章。我觉得我们就像朋友之间聊天一样,假如有什么你不是很清楚的,可以再搜搜看相关的内容。好吧,让我们来看看具体的内容。理解你的编程语言其实这个部分是最常的,甚至可以拿出来单独写一篇文章。不过,我们还是放在这里,和别的建议一样。我们使用编程语言的时候并不需要什么常识,只是某些人定义了一系列规则,然后我们使用这些规则来和机器通信,我们这里就是使用他来...

2020-08-14 11:15:03 213

原创 Python教程之创建多进程

现在很多CPU都支持多核,甚至是手机都已经开始支持多核了。而Python的GIL(Global Interpreter Locko)则使得其没法使用这些多核带来的优势。还好从Python2.6开始,引入了multiprocessing模块,我们终于可以使用多核带来的便利了。本文,你会学习到下面这些内容:使用多进程的优点 使用多进程的缺点 使用multiprocessing来创建多进程 Process的子类化 创建进程池本文并不是一个multiprocessing的全面的介绍,假如你想...

2020-08-09 09:15:07 488

原创 前端工程师必备的十大VS Code扩展

VS Code有各种各样的扩展,他们有代码调试相关的,代码格式相关的,各种开发技术(比如Github, Azure等等),以及IDE主题相关等等。本文,就罗列出2020年目前我最喜欢的10大扩展。Turbo Console Log这个扩展可以自动的写有意义的log,从而让调试变得很容易。Quokka这个扩展可以在VS Code里面测试Javascript的代码,而不需要把它check in到浏览器中。具体的参考上面的链接。Prettier这是一个非常流行的插件...

2020-08-07 09:46:11 241

原创 六个Javascript新手需要注意的事情

我们写这篇文章当然不是说Javascript不好,只是说它有些特性和我们通常理解的面向对象的语言有些差别。而这些差别很有可能和你所想的有很大的差别。但并不是说他们就不好,从另外一个方面来讲,假如你习惯了,也许这也是Javascript独特的魅力。1. 三个等号假如你学过别的编程语言,比如Java之类的,你肯定知道一个等号表示赋值,两个等号表示比较。但是在Javascript中,你会发现这里不仅有两个等号,还有三个等号===。我们应该使用哪个呢?他们之间有什么差别的呢?其实两个等号,简单说就是只比较他

2020-08-05 07:46:56 421

原创 C# 如何 override ToString方法

众所周知,在C#中所有的class和struct都会继承object类。所以,在C#中,每一个object都有一个ToString的方法,他会返回相关的string。比如我们来看一下下面这个例子: int x = 7; Console.WriteLine(x.ToString()); bool xb = true; Console.WriteLine(xb.ToString()); s

2020-08-03 09:23:36 2091 1

原创 关于Web开发的十个流行的Github项目 -- 2020年七月

Lazysizes是一个非常快捷(无垃圾),对SEO非常友好且可以自动初始化的一个延迟加载器。它支持图片(包括响应的图像图片/密码集),iframe,脚本、小工具等等。GitHub网址: https://github.com/aFarkas/lazysizesSlate可以帮助你创建漂亮的,智能的可响应的API文档。Github网址: https://github.com/slatedocs/slate开发者的最小作品集模板。Github网址:htt...

2020-08-01 07:43:41 801

原创 SHA-2是如何工作的:一个关于SHA-256的教程

SHA-2 (安全散列算法2),其中包括SHA-256,是一个非常流行的散列算法。本文,我们将通过一个实例来尽可能地把这个算法简单的介绍一下。SHA-2以他的安全性著称,(不像SHA-1那样容易破解),并且它的速度很快。在未生成密钥的情况下,比如挖掘比特币,像SHA-2这种快速的hash算法是非常有优势的。什么是一个哈希函数?假如你想比较详细的立即通用的哈希函数,可以参考这里。本文就不详细介绍了,不过我们还是要回顾一下哈希函数的三个重要的作用:确定性的加扰数据。 接收任何长度的输入,...

2020-07-30 08:41:49 1521

原创 AI聊天机器人 — 机遇和挑战并存

也许AI领域最广泛和突出的应用就是各种各样的AI聊天机器人了。聊天机器人已经成为了大的组织的内部以及外部交流策略的不可或缺的一部分。聊天机器人已经在工业上取代人类成为了第一级查询的解决方案。这些方案中,终端用户都是直接和聊天机器人交互的。什么是聊天机器人?聊天机器人是基于各种准则,模拟人类和终端用户进行交流。也就是说,聊天机器人可以像人类一样和你交流,他基于开始预定义的规则和逻辑问你问题,并且回答你的问题。得益于复杂的机器学习算法,聊天机器人可以让电脑程序来模拟人类交流,并且能够对输入.

2020-07-28 08:13:42 658

原创 十个帮助你解决CSS问题的网站

下面是十个可以使得你的CSS更加有趣,简单并且也许可以解决多数你所遇到的CSS问题的网站。1. 像素的艺术你可能也喜欢使用像素艺术来制作你的网页。我可以说你们90%都是把像素艺术加入到png文件,但是如果怎么把它转变成CSS呢?这就是Pixel Art to CSS这个网站存在的意义了,他可以帮你把画的像素艺术转变成CSS。Pixel Art to CSS2. 梯度CSS 梯度看起来很棒,但是它也非常难用。你必须找到正确的颜色,并且是很多行的颜色。还有很多兼容性的问题..

2020-07-26 08:56:51 236

原创 Java程序员常犯的十个错误

#1 把Array转变成ArrayList为了把Array转变成ArrayList,程序员经常这样做:List<String> list = Arrays.asList(arr);Arrays.asList返回的是Arrays内部的一个静态私有的ArrayList类,他不是Java.util.ArrayList类。Java.util.Arrays.ArrayList类有set(), get(), contains()这些方法,但是他没有任何加入元素的方法,所以他的大小是固定的。要创

2020-07-24 08:30:09 247

原创 React Native WebView 插件介绍

在React Native中,WebViews可以让移动APP访问任何web的门户。换句话说,web view使我们可以在app接口打开一个web的URLs。虽然React Native有提供一个内置的web view组件,我们这里的例子会使用react-natvie-webview这个插件,因为他功能更加强大。React Native WebView是React Native中一个更加现代化,支持更好的跨平台的WebView。据这篇文档所说,React Native内置的WebView马上就要废弃

2020-07-23 08:13:25 1578

原创 使用Python实现一个简单的聊天室

Python是一个非常灵活的编程语言,我们现在到处可见用Python编写的应用程序。本文就是一个很简单的使用Python来编写的一个机遇命令行的聊天室,他非常简单和易于理解。让我们开始吧。聊天室是什么?聊天室就是一个媒介或者接口,允许两个或多个用户聊天或者发送信息。它既可以是一对一的聊天也可以是群聊。我们这个例子中,将会创建一个群聊天室,他可以同时支持多于两个人在线。架构对聊天室,我们使用服务器-客户端的架构。这就意味着一台服务器将托管多台客户机器。准备开始:在深入代码之前.

2020-07-22 08:19:15 4928

原创 移动APP性能优化的建议

移动手机的发明使得人们可以在很远的距离通过无线网络进行交流。用户很开心能够使用各种各样的网络和世界相连接。慢慢的,每个人的口袋中都装了一个移动手机。随着时间的推移,有很多发明都在影响着手机的技术,这也使得用户的使用更加便捷。现如今,移动手机已经发展到有很多应用来协助我们的日常生活。事实上,我们甚至无法想象没有手机的生活。为什么移动APP的优化是必要的移动手机最初是用来为什么远距离通信的,而现如今,他已经演变成任何时候,任何地点都可以通过几个点击来做任何事情。从预订出租车到订购你最

2020-07-21 07:52:32 881

原创 还在每天standup会议吗?是时候尝试这个了。。。

每日站立会议是失败的毫无疑问,这是30年前就创立的东西,但是我们现在还每一天都使用同样的方式来运行。当每日站立会议在90年代早期创立的时候,软件开发流程和现在比起来有很大的不同。那时候没有git,没有Jira,没有任何合作的工具。没有DevOps。自动化工具也不存在,分析的工具也不存在。别误会我,其实我还是很爱90年代初期的。开发者的典型技术栈已经有了很大的变化。我们使用git来管理代码,我们的同事可以通过GitHub,Gitlab或者Bitbucket来进行交流。...

2020-07-20 10:10:41 358

原创 面试题之如何用Java设计一个自动售货机

如何用Java设计一个自动售货机程序是一个非常好的Java面试题。大多数情况会在面试比较senior的Java开发者的时候出现。在一个典型的代码面试中,你需要在一定的时间内根据对应的条件完成相关的代码。通常2到3小时内(面试哪有这么多时间,哈哈),你需要产生设计文档,可以工作的代码已经单元测试。这样的Java面试的好处就是你能够一次性检测面试者的很多能力。为了能够完成代码的设计,编码以及单元测试,面试者需要在这三个方面都比较精通。另外,这种真实的问题可以提升你面向对象分析和设计能力的技能,假如你想成为一

2020-07-19 09:27:49 3175

原创 关于未来IOT和移动APP集成的五个预言

IOT(物联网Internet of Things)和移动应用的集成是完全符合当下的潮流和趋势的。现在的移动应用可以支持IOT的解决方案,这样用户就可以轻松通过APP来控制IOT的设备。另一方面,IOT可以使用移动APP来让自身达到一个新的高度。全世界很多企业都在观察,他们能够通过智能手机做些什么。IOT的应用开发者正在展示这一领域的潜力,也许几百万的市场并不是开玩笑。但是,这并不仅仅是钱的问题:每一天都有很多新的产品和设备正在市场上出现。那么APP和IOT将怎么一起工作呢?下面就是一些基于现实

2020-07-18 06:46:47 362

原创 REST API设计不可不知的五个建议

一个很好的API设计是非常难的,他需要维护向后的兼容,有效的测试,处理API的升级等等。希望这篇文章能给你以帮助。毫无疑问,API已经成为系统信息交互的一个重要渠道,同时也是系统内部各个模块有机组成的重要部分。这篇文章,就和大家分享一下我在REST API设计和实现中所遵循的一些建议:1. 能使用客户端的SDK就不要自己重写代码假如服务供应商有自己的SDK,那么我们就尽量去使用他提供的SDK,而不要在本地REST调用上面写自己的库。一个很好的例子就是,当你使用亚马逊的网络服务时可以选择的AW

2020-07-17 09:53:09 195

原创 使用简单提取方法实现的文本摘要器

本文我们将使用一个非常简单但是可靠的提取方法来实现一个文本摘要器。你有看到一些应用专门用来从一个文章或者新闻中提取出60字左右的摘要吗?比如inshorts。这样的效果就是我们这篇文章想实现的内容,我们将是用一个非常简单的提取方法来实现这个功能,不用担心,我会详细介绍什么是提取方法的。其实有很多文章都介绍了文本摘要的实现,那么我们的文章有什么特点呢?那就是简单和易上手,我们会通过一些简单的代码片段来介绍这方面的内容。文本摘要可以有两种实现的方法:提取方法:从文章中找出n个最能够表达文章意

2020-07-16 08:14:43 689

原创 AI图形:2020年五月/六月最新资讯总结

这篇文章中,我们将会讨论各种不同图形数据库,包括一个关键的图形数据库技术,以及很多相关的前沿技术。整个世界大部分仍然被封锁着,只有一部分国家正在慢慢恢复。在过去几个月中,很多东西都被暂停了,但同时也极大加速了一些别的东西的发展。而这其中,图形相关的开发就是一个加速发展的例子。网上现在出现了很多图形教育相关的资料,并且可以免费获取,而且有越来越多的趋势。图形数据库已经有了很大进步而且做了一些通报,同时正在通过发布新的功能,获得额外的基金以及引入策略合作伙伴来进行重新定位。一个关键的图形数据库技

2020-07-15 08:11:53 378

原创 电子商务如何使用AI来改进在线购物的体验

在线购物正如火如荼,因为人们可以在家里购物,然后坐等商品送达即可。根据NPR的数据,92%的美国消费者通过电子商务来购物,而且这个数字一直在增加。对于在线购物,消费者的期待值很高,他们希望能够快速简单准确地找到能符合他们要求,解决他们问题的品牌。现如今,消费者也希望他们付费的这些品牌能够了解他们。假如不能通过简单的交流就理解他们的需求的话,消费者与品牌之间的关系就会变弱。因为现在的竞品实在太多了,消费者有足够的空间去选择他们想要的东西。还好我们有AI,它会帮我们非常简单地了解客户的需求,并为之定

2020-07-14 09:24:04 392

原创 Java应用性能测试之堆内存

每一个性能工程师都需要知道Java中内存是如何工作的吗?假如你想完全解决性能瓶颈的话,我的答案是“必须的”。Java的性能管理对每一个性能工程师以及Java开发者来说都是一个梦魇,但同时又是写好Java应用必不可少的一部分。这是一个申请新的对象和清除不使用对象(垃圾回收)的过程。Java有自动的内存管理,在后台有自动运行的垃圾回收机制来回收不使用的对象并释放内存。假如没有足够的知识和经验来了解JVM和垃圾回收是如何工作的,不知道Java的内存是如何创建的,我们工程师在执行Java应用程序的时候就很难发现

2020-07-13 06:43:31 353

原创 商业洞察力所必须的数据探索和数据准备

什么是数据探索?数据探索或者探索数据分析(EDA)提供了一系列探索工具把我们对实时数据的基本理解变成数据分析。数据探索最终的结果是可以极大地提高我们对数据结构,数据的分布以及相互之间的关系的理解。数据探索也可以让数据科学家拥有之前难以获得的对商业的更好的洞悉。数据探索是数据分析的第一步,理解商业数据是我们做出一个很好的决策的必要步骤,这其中就包括总结数据集的主要功能,比如它的大小,规律,特性,准确性等等。这整个流程都是由数据分析的一个团队使用相应的分析工具以及一些高级的软件(比如R)来进行的。数

2020-07-12 07:42:30 426

原创 AI中数据标注(Labeling)的介绍

整个世界正充斥着各种各样的数据,仅仅在2018年,就产生了超过30ZB的数据。任何一个AI项目中,对专业人员来说,数据的好坏都是一个非常关键的部分。有时候,我们项目所需要的数据根本就不存在,另外一些时候,这些数据是存在的,但是我们无法获取 — 比如被竞争对手所垄断。当然,还有时候,我们可以获取到数据,但是这些数据却不能直接拿来被我们使用,本文就讨论在这种情况下我们该如何处理。什么是数据标注?现如今,大量的数据并不少见,但若你想拿他们来训练Machine Learning和Deep Learn

2020-07-11 09:11:18 10666 1

原创 MongoDB和Couchbase analytics(解析)的对比分析

计算的目的是背后的洞察而不是数据本身 — Richard Hamming所谓的商业运行就是一个分析哪些需要改变,该改变成什么然后据此改变商业本身的螺旋上升的过程。作正确的分析,你就如滚雪球般不停上升,反之,则不断的螺旋下降。Couchbase, 是一个诞生在web 2.0世界中的一个新NoSQL系统,能够满足高扩展性,高性能以及高可靠性的要求。从最简单的键值对到复杂的大规模查询,搜索以及解析,Couchbase都可以很好的处理。而这些都是通过在Couchbase的多维架构中集成特定的引擎来实现的。其

2020-07-10 08:54:15 935

转载 AI从零开始之如何预估f

我们在AI从零开始之统计学简介知道,统计学其实就是为了那个f而奋斗,也在AI从零开始之我们为什么为了那个虚无缥缈的f而奋斗中知道了我们为什么要评估这个f,那么本文就继续来讨论一下我们怎样来评估f。一般来说,在评估f之前,我们总是已经有了一系列的可观察的数据,我们把这些数据称之为训练数据(Training data),就像下图一所示的学历和收入关系图中的红点,就是我们的训练数据。我们利用统计学的...

2018-07-01 19:15:40 233

原创 AI从零开始之我们为什么要为了那个虚无缥缈的f而奋斗

在前文我们介绍统计学简介(AI从零开始之统计学简介)的时候说,我们是为了那个虚无缥缈的f而奋斗的,我们知道做任何事情其实都是有一定目的的,比如说我们工作是为了赚钱,赚钱是为了买房,买房是为了娶老婆,娶老婆是为了生孩子,生孩子是为了传宗接代(开个玩笑)。那么我们来评估f是为了什么呢?其实,说白了业界认为其实就主要有两个目的:“预测”( prediction)和“推论”(inference)预测很多情...

2018-05-22 22:23:58 345

原创 AI从零开始之统计学简介

今天我们来看一下统计学主要是干些什么,在大家深入了解之前能够有一个感性的认识。要想感性(呃,不是性感),那最好的方法肯定是举个例子来说明了。我们经常说上学无用论,所谓有用无用,粗俗点理解就是能不能赚钱,现在我们假设知道了一些学历(或者说学习年数)和收入的数据,他们如果画图的话就会显示成下面的图一所示:图一 收入和学历之间的关系图现在我们假设收入就只和学历之间有关系,我们把收入写成Y,学历这里置为X...

2018-05-21 06:32:56 886

原创 AI从零开始之有监督学习和无监督学习

统计学学习可以分为两类,一类是有监督学习(supervised learning),另一类则是无监督学习(unsupervised learning)。那么这两个概念究竟该如何理解,本文就尝试从自己学习的角度来和大家分享一下,这中间有不对的地方,希望大家批评指出。所谓有监督学习就是我们手上的数据是有一个明确的结果(或者label),然后我们可以根据这些数据来创建一个model,通过新的输入数据在这...

2018-05-17 17:38:29 1978

原创 [leetcode]ZigZag Conversion

原题The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)P A H NA P L

2015-08-24 09:08:39 1203 1

翻译 Android API Guides –System Permissions

系统权限 声明:本文由Gordon翻译发布于www.dlvoice.com欢迎转载,但请保留此声明原文地址:http://developer.android.com/guide/topics/security/permissions.html         Android是一个特权分离的操作系统,运行在其上的应用都有一个特定的系统身份(Li

2015-08-19 07:30:57 1099

原创 [leetcode]Majority Element

原题Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority elem

2015-08-14 12:04:15 855

空空如也

空空如也

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

TA关注的人

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