- 博客(1269)
- 资源 (142)
- 收藏
- 关注

原创 hive使用的使用,源码
package Main;import java.sql.SQLException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.sql.DriverManager;public class HiveJdbcClientv1 {p...
2019-03-22 09:42:16
10715
2

原创 区块链分片技术的设计(思考)
分片方案的思考三难困境区块链的三难困境:去中心化、扩展性、安全性牺牲扩展性方案现在的比特币、以太坊都是通过牺牲扩展性来换取安全性的。因为以太坊网络上的每笔交易,需要每个节点都计算、存储和广播一次。这意味着以太坊网络的计算资源,不可能大于单个节点的计算资源。将节点的计算、存储、宽带等资源记作, O(c) 。将以太坊网络的计算、存储、宽带等资源记作,O(n)。不可扩展指的是,网...
2019-03-18 14:56:59
11268
5

原创 理解区块链背后的Merkle Tree
你可以在Github上获取最新的源代码(C#)目录简介 本文中的术语 Merkle Tree被应用在哪里? 数字货币 全球供应链 保健行业 资本市场 Git 和 Mercurial 为什么使用Merkle Tree? 一致性检验 数据校验 数据同步 证明的重要性 Merkle Tree实践 数据校验(审计证明)是如何实现的? 一...
2019-01-04 14:05:10
11555
1

原创 Merkle Tree 实现细节及(不)存在性证明
Merkle Tree in BitCoin & BitCoin CashMerkel Tree是Bitcoin的核心组件,其相关资料已经非常丰富,所以本文档偏重于介绍Merkle Tree的存在性证明与不存在性证明,并且铺垫一下Merkle Tree在Bitcoin中起的作用和开发中容易被忽视的一些细节。Merkle Trees in BitcoinMerkle trees是...
2018-12-29 15:15:55
15213
3
转载 Chainlink 预言机的原理解析
本文来自于 8 月19 日 Chainlink 开发者社区中国负责人 Frank ,在 DApp Learning 分享会上对于 Chainlink 预言机的原理的讲解。本文来自于 8 月19 日 Chainlink 开发者社区中国负责人 Frank ,在 DApp Learning 分享会上对于 Chainlink 预言机的原理的讲解,以下是这节分享会的总结内容。有兴趣的小伙伴可以结合。
2023-05-29 13:59:58
21
转载 分片技术:区块链底层 Layer1扩容方案
但是在分片机制下,交易会根据地址分配在不同的分片处理,也就是说,状态只会储存在其地址所在的分片中,此时要面临的一个问题是,交易不会只在一个分片中进行,时常会涉及到跨分片交易。一但A要打币给B,就会形成跨分片交易,分片2就会向分片1调用过去的交易纪录,确认交易的有效性,A频繁的打币给B,分片2就必须不断跟分片1互动,交易的处理效率便会因此降低。网络分片针对的是矿工的游戏规则,而交易分片所针对的是哪些交易要被分配到哪些分片,然而,区块链的帐本模型的不同会对交易分片的开发造成影响。
2023-03-28 17:24:19
133
1
转载 CITA 是如何达到 15000 TPS 的?
在区块链的设计中,有一个「不可能三角」的说法,即安全、去中心化、性能,这三者只能取其二。Nervos 是用分层设计来解决不可能三角问题。在底层 Layer1 里,CKB 就选取安全和去中心化,Layer2 选性能。Layer2 追求把性能做到极致,去中心化和安全由 CKB 来解决
2023-02-16 10:48:09
149
转载 如何在生产环境排查 Rust 内存占用过高问题
内存安全的 Rust,虽然基本不会出现内存泄漏,但如何合理分配内存,是每个复杂应用都要面临的问题。往往随着业务的不同,相同的代码可能会产生不同的内存占用。因此,有不小的概率会出现内存使用过多、内存逐渐增长不释放的问题。本文我想分享一下,我们在实践过程中遇到的关于内存占用过高的问题。对于这些内存问题,在本文中会做出简单的分类,以及提供我们在生产环境下进行排查定位的方法给大家参考。本文最先发表于 RustMagazine 中文月刊(蚂蚁集团 | 如何在生产环境排查 Rust 内存占用过高问题 -
2022-04-02 17:18:50
1340
转载 TS开发环境准备
本文目录:1.TS介绍 2.TS的编译 3.开发环境加入代码检查工具eslint和prettier 4.开发环境配置文件1.TS介绍TypeScript 是一门为开发大型 JavaScript 应用而设计的语言。TypeScript 在 JavaScript 的基础上增加了类、模块、接口、泛型和静态类型(可选)等常见的概念。它是 JavaScript 的超集:所有 JavaScript 代码都是有效的 TypeScript 代码,因此任何 JavaScript 项目都可以无缝引入 TypeS
2022-03-28 16:20:32
1439
转载 nohup 详解
阅读目录nohup 案例 nohup和&的区别 参考链接正文回到顶部nohupnohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。nohup 是 no hang up 的缩写,就是不挂断的意思。nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进
2022-03-28 11:34:21
1044
转载 Git版本回退的最佳方式
使用git开发的过程中,存在误提交的时候怎么办呢?不用慌张,强大的git提供了两种版本回退的方式,可以让你恢复提交之前的内容:方式一:reset(不推荐)通过reset的方式,把head指针指向之前的某次提交,reset之后,后面的版本就找不到了操作步骤如下:1、在gitlab上找到要恢复的版本号,如:139dcfaa558e3276b30b6b2e5cbbb9c00bbdca962、在客户端执行如下命令(执行前,先将本地代码切换到对应分支):gitreset--har...
2022-03-26 11:28:26
1129
转载 Rust-线程:使用Sync和Send trait的可扩展并发
Rust的并发模型中一个有趣的方面是:语言本身对并发知之甚少。我们之前讨论的几乎所有内容,都属于标准库,而不是语言本身的内容。由于不需要语言提供并发相关的基础设施,并发方案不受标准库或语言所限:我们可以编写自已的或使用别人编写的并发功能。然而有两个并发概念是内嵌于语言中的:std::marker 中的 Sync 和 Send trait。通过Send允许在线程间转移所有权Send标记trait表明类型的所有权可以在线程间传递。几乎所有的Rust类型都是Send的,不过有一些例外,包括Rc<
2022-03-25 16:24:50
524
转载 EOS 获取RAM实时价格
命令如下cleos -u https://nodes.get-scatter.com:443 get table eosio eosio rammarket获取的结果为{ "rows": [{ "supply": "10000000000.0000 RAMCORE", "base": { "balance": "12341975994 RAM", "weight": "0.50000000000000000" },
2022-03-24 18:25:12
421
1
转载 解读EOSIO RAM价格大幅波动背后的Bancor算法
概要EOSIO 的 RAM 从主网启动到现在, 经过了大幅的价格波动, 其背后的 Bancor 算法定价机制也引起了广泛关注。本文参考了 Bancor 白皮书,结合 EOSIO 的的代码, 分析了 Bancor算法和在 EOSIO 中的具体实现代码, 帮助开发者更好地理解 Bancor 算法原理。什么是Bancor 协议Bancor 协议通过智能合约为加密货币提供持续的流动性,每个smart token 可以有1个或多个连接到其他token的连接器, 允许用户通过合约买卖连接的其他token,
2022-03-19 15:42:16
437
转载 Eos如何删除钱包
在使用Eos的keosd钱包软件时,如果要删除EOS中指定名称的钱包,最简单的办法是 直接删除钱包文件,不过在删除钱包之前,需要先停止钱包软件的运行。学习EOS应用开发要选这个:【EOS智能合约与DApp开发教程】, 不仅内容很系统化,而且有助教在线答疑!EOS删除钱包之前,首先使用kill或pkill命令结束keosd进程的运行:~$ pkill keosd可以先使用ls命令查看数据目录的内容:钱包文件保存在keosd的数据目录中,默认是~/eosio-wallet。例如,对于 默.
2022-03-19 11:26:51
515
转载 EOS测试插件:txn_test_gen_plugin.cpp
txn_test_gen_plugin 插件这个插件是官方开发用来测试块打包交易量的,这种方式由于是直接系统内部调用来模拟transaction,没有中间通讯的损耗,因此效率是非常高的,官方称通过这个插件测试到了8000的tps结果,而就我的测试结果来讲,没有这么恐怖,但也能到2000了,熟不知,其他的测试手段,例如cleos,eosjs可能只有百级的量。下面,我们一同来研究一下这个插件是如何实现以上功能的,过程中,我们也会思考EOS插件的架构体系,以及实现方法。通过本文的学习,如果有好的想法,我们也可
2022-03-17 14:57:42
487
1
转载 EOS私有链搭建
参考文章eos私有链搭建 - 简书源码下载git clone https://github.com/EOSIO/eos.git --recursive编译源码cd eos./eosio_install.sh./eosio_build.sh如果内存低于7G,需要修改配置vim scripts/eosio_build_ubuntu.shif [ "${MEM_MEG}" -lt 7000 ]; then 如果你的物理内存是4G ,可以把7000改成3
2022-03-16 16:59:07
728
1
转载 EOS智能合约开发-智能合约编写
开发合约前,我们先选择下将要用的编辑工具我常用的有 clion 和vscode,电脑os为mac,不过其他系统差别不大,如果你习惯用于Windows,那建议选择Windows Subsystem for Linux,不建议用其他三方封装的工具,以免更新不及时,或者不兼容,导致生产上出问题.下面我们讲用以vscode 做演示.配置智能合约项目先用vscode打开eosio.cdt项目代码目录,按提示安装相应的扩展插件.一般只需要安装个c/c++等vscode加载索引完,会根据eosio.c..
2022-03-16 16:07:28
743
转载 EOS智能合约开发-开发环境搭建
我们先尽量简单直白的说下什么是EOS链,资源,智能合约,以及之间的关系. EOS链 我们可以把EOS链想成一个由多台服务器组成的一个计算机云集群{无意突出此链的中心化}.每台服务器(节点)上都部署着一个EOS节点程序,各个节点彼此链接.这个计算机集群,根据投票排名前21名的节点,可以参与计算任务(出块),并且计算后会有相应的奖励(挖矿). 资源:RAM,CPU,NET 我们把EOS链想成云服务器集群,我们购买的EOS账号就相当于在云服务的服务商那购买了个账号,然后给账号购买使用的资源:存
2022-03-16 16:06:10
763
1
转载 JNI/NDK开发指南(十一)——JNI异常处理
异常简介异常,显而意见就是程序在运行期间没有按照正常的程序逻辑执行,在执行过程当中出现了某种错误,导致程序崩溃。在Java中异常分为运行时异常(RuntimeException)和编译时异常,在程序中有可能运行期间发生异常的逻辑我们会用try…catch…来处理,如果没有处理的话,在运行期间发生异常就会导致程序奔溃。而编译时异常是在编译期间就必须处理的。本章主要介绍运行时异常。示例1:// 运行时异常public static void exceptionCallback() { int
2022-01-14 14:11:35
567
转载 Android JNI局部引用表溢出:local reference table overflow (max=512)
在《JNI/NDK开发指南(十)——JNI局部引用、全局引用和弱全局引用》这篇文章中详细介绍了在JNI中三种引用的使用方式,区别、应用场景和开发注意事项。由于都是理论,看完之后可能印象不够深刻,由其是在开发当中容易出错的地方。所以这篇文章用一个例子说明引用使用不当会造成的问题,以引起大家对这个知识点的重视。首先创建一个Android工程,在主界面放一个文本框和一个按钮,文本框用于接收创建局部引用的数量N,点击按钮后会获取文本框中的数量,然后调用native方法在本地代码中创建一个长度为N的字符串数组,再
2022-01-14 14:10:24
572
转载 JNI/NDK开发指南(十)——JNI局部引用、全局引用和弱全局引用
这篇文章比较偏理论,详细介绍了在编写本地代码时三种引用的使用场景和注意事项。可能看起来有点枯燥,但引用是在JNI中最容易出错的一个点,如果使用不当,容易使程序造成内存溢出,程序崩溃等现象。所以讲得比较细,有些地方看起来可能比较啰嗦,还请轻啪!《Android JNI局部引用表溢出:local reference table overflow (max=512)》这篇文章是一个JNI引用使用不当造成引用表溢出,最终导致程序崩溃的例子。建议看完这篇文章之后,再去看。做Java的朋友都知道,在编码的过程当中,
2022-01-14 14:09:35
659
转载 JNI/NDK开发指南(九)——JNI调用性能测试及优化
在前面几章我们学习到了,在Java中声明一个native方法,然后生成本地接口的函数原型声明,再用C/C++实现这些函数,并生成对应平台的动态共享库放到Java程序的类路径下,最后在Java程序中调用声明的native方法就间接的调用到了C/C++编写的函数了,在C/C++中写的程序可以避开JVM的内存开销过大的限制、处理高性能的计算、调用系统服务等功能。同时也学习到了在本地代码中通过JNI提供的接口,调用Java程序中的任意方法和对象的属性。这是JNI提供的一些优势。但做过Java的童鞋应该都明白,Jav
2022-01-14 14:08:38
751
转载 JNI/NDK开发指南(八)——调用构造方法和父类实例方法
在第6章我们学习到了在Native层如何调用Java静态方法和实例方法,其中调用实例方法的示例代码中也提到了调用构造函数来实始化一个对象,但没有详细介绍,一带而过了。还没有阅读过的同学请移步《JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法》阅读。这章详细来介绍下初始一个对象的两种方式,以及如何调用子类对象重写的父类实例方法。我们先回过一下,在Java中实例化一个对象和调用父类实例方法的流程。先看一段代码:package com.study.jnilearn;public
2022-01-14 14:07:51
545
转载 JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量
在上一章中我们学习到了如何在本地代码中访问任意Java类中的静态方法和实例方法,本章我们也通过一个示例来学习Java中的实例变量和静态变量,在本地代码中如何来访问和修改。静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过【类名.变量名】来访问。实例变量也称为成员变量(属性),每个实例都拥有一份实例变量数据的拷贝,它们之间修改后的数据互不影响。下面看一个例子:package com.study.jnilearn;/** * C/C++访问类的实例变量和静态变量 * @au
2022-01-14 14:07:03
529
转载 JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法
通过前面5章的学习,我们知道了如何通过JNI函数来访问JVM中的基本数据类型、字符串和数组这些数据类型。下一步我们来学习本地代码如何与JVM中任意对象的属性和方法进行交互。比如本地代码调用Java层某个对象的方法或属性,也就是通常我们所说的来自C/C++层本地函数的callback(回调)。这个知识点分2篇文章分别介绍,本篇先介绍方法回调,在第七章中介绍本地代码访问Java的属性。在这之前,先回顾一下在Java中调用一个方法时在JVM中的实现原理,有助于下面讲解本地代码调用Java方法实现的机制。写过J
2022-01-14 14:06:14
520
转载 JNI/NDK开发指南(五)——访问数组(基本类型数组与对象数组)
JNI中的数组分为基本类型数组和对象数组,它们的处理方式是不一样的,基本类型数组中的所有元素都是JNI的基本数据类型,可以直接访问。而对象数组中的所有元素是一个类的实例或其它数组的引用,和字符串操作一样,不能直接访问Java传递给JNI层的数组,必须选择合适的JNI函数来访问和设置Java层的数组对象。阅读此文假设你已经了解了JNI与Java数据类型的映射关系,如果还不了解的童鞋,请移步《JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系》阅读。下面以int类型为例说明基本数据类型
2022-01-14 14:05:21
308
转载 Android NDK开发Crash错误定位
在Android开发中,程序Crash分三种情况:未捕获的异常、ANR(Application Not Responding)和闪退(NDK引发错误)。其中未捕获的异常根据logcat打印的堆栈信息很容易定位错误。ANR错误也好查,Android规定,应用与用户进行交互时,如果5秒内没有响应用户的操作,则会引发ANR错误,并弹出一个系统提示框,让用户选择继续等待或立即关闭程序。并会在/data/anr目录下生成一个traces.txt文件,记录系统产生anr异常的堆栈和线程信息。如果是闪退,这问题比较难查,
2022-01-14 14:04:27
546
转载 JNI/NDK开发指南(四)——字符串处理
从第三章中可以看出JNI中的基本类型和Java中的基本类型都是一一对应的,接下来先看一下JNI的基本类型定义:typedef unsigned char jboolean;typedef unsigned short jchar;typedef short jshort;typedef float jfloat;typedef double jdouble;typedef int jint;#ifdef _LP64 /* 64
2022-01-14 14:03:40
215
转载 JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
当我们在调用一个Java native方法的时候,方法中的参数是如何传递给C/C++本地函数中的呢?Java方法中的参数与C/C++函数中的参数,它们之间是怎么转换的呢?我猜你应该也有相关的疑虑吧,咱们先来看一个例子,还是以HelloWorld为例:HelloWorld.java:package com.study.jnilearn;class MyClass {}public class HelloWorld { public static native void test(sho
2022-01-14 14:02:47
219
转载 JNI/NDK开发指南(二)——JVM查找java native方法的规则
通过第一篇文章,大家明白了调用native方法之前,首先要调用System.loadLibrary接口加载一个实现了native方法的动态库才能正常访问,否则就会抛出java.lang.UnsatisfiedLinkError异常,找不到XX方法的提示。现在我们想想,在Java中调用某个native方法时,JVM是通过什么方式,能正确的找到动态库中C/C++实现的那个native函数呢?JVM查找native方法有两种方式:1> 按照JNI规范的命名规则2> 调用JNI提供的Regi
2022-01-14 14:01:37
248
转载 JNI/NDK开发指南(一)—— JNI开发流程及HelloWorld
JNI全称是Java Native Interface(Java本地接口)单词首字母的缩写,本地接口就是指用C和C++开发的接口。由于JNI是JVM规范中的一部份,因此可以将我们写的JNI程序在任何实现了JNI规范的Java虚拟机中运行。同时,这个特性使我们可以复用以前用C/C++写的大量代码。开发JNI程序会受到系统环境的限制,因为用C/C++语言写出来的代码或模块,编译过程当中要依赖当前操作系统环境所提供的一些库函数,并和本地库链接在一起。而且编译后生成的二进制代码只能在本地操作系统环境下运行,因为
2022-01-14 14:00:44
520
转载 JNI/NDK开发指南(开山篇)
相信很多做过Java或Android开发的朋友经常会接触到JNI方面的技术,由其做过Android的朋友,为了应用的安全性,会将一些复杂的逻辑和算法通过本地代码(C或C++)来实现,然后打包成so动态库文件,并提供Java接口供应用层调用,这么做的目的主要就是为了提供应用的安全性,防止被反编译后被不法分子分析应用的逻辑。当然打包成so也不能说完全安全了,只是相对反编译Java的class字节码文件来说,反汇编so动态库来分析程序的逻辑要复杂得多,没那么容易被破解。比如百度开放平台提供的定位服务、搜索服务、L
2022-01-14 13:59:38
207
原创 JNI方法使用指导
Get ID很多应用场景下,我们需要读写Java中的成员变量或调用Java中成员函数,实现这一功能的第一步是先或者目标(Java变量或函数)的ID。 JNI Environment提供一组用于获取这些ID的接口。GetFieldID, GetStaticFieldIDjfieldID GetFieldID(JNIEnv *env, jclass clazz, const char *name, const char *sig);jfieldID GetStaticFieldID(JNIEnv
2022-01-14 13:57:45
348
转载 JNI中C和JAVA代码之间的互相调用
关于JNI环境和入门:http://blog.csdn.net/quan648997767/article/details/649231431. C代码回调Java方法的流程(1) 找到java对应的Class创建一个char*数组, 然后使用jni.h中提供的FindClass方法获取jclass返回值;char* classname = "wjy/geridge/com/testndk/jni/JniUtils"; jclass dpclazz = (*env)->FindC
2022-01-14 13:48:55
231
转载 为什么PBFT需要View Changes
前言在当前的PBFT资料中,尤其是中文资料,多数都在介绍PBFT的3阶段消息过程,很少提及View Changes(视图切换),View Changes对PBFT的重要性,如同Leader Election对Raft的重要性,它是一个一致性算法中,不可或缺的部分。作者为大家介绍下,为什么View Changes如此重要,即为什么PBFT需要View Changes,以及View Changes的原理。为什么PBFT需要View Changes一致性算法都要提供:safety :原意指不会
2022-01-05 18:18:23
839
转载 使用java怎么扫描指定包下的类
Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。src下面的类如何获取:首先,比较简单的是得到我们自己写的类,我们先来完成这个,项目的结构图如下:我故意创建了这么个比较复杂的项目结构,现在我们就来获取com.baibin包下所有的类,并且打印他们,代码如下:importorg.junit.Test;importjava.io.File;..
2021-12-27 11:15:24
1632
2
转载 jvm类加载器,类加载机制详解
前言今天我们来讲讲jvm里类加载的过程,我们写了那么多类,却不知道类的加载过程,岂不是很尴尬。jvm的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由jvm的具体实现指定的。[来自官方规范]jvm组成结构之一就是类装载器子系统,我们今天就来仔细讲讲这个组件。Java代码执行流程图大家通过这个流程图,了解一下我们写好的Java代码是如何执行的,其中要经历类加载器这个流程,我们就来仔细讲讲这里面的知识点。
2021-12-24 17:53:37
184
转载 Java 之 native 关键字与 registerNatives 方法
一、native 关键字 native 的本意是原生的,本地的。 native 是一个修饰符,只可以用来修饰方法。 native 修饰的方法,看不见方法体; native 修饰的方法,不是用 Java 语言实现的,而是调用了底层 C/C++ 的代码,这些代码为 .dll 文件,让 Java来执行。 native 关键字是 JNI(Java Native Interface)的重要体现。什么是 JNI ,JNI 是Java调用其他语言(c,c++) 的一种机制。...
2021-12-24 15:24:25
381
转载 简述如何实现区块链中的JVM
虚拟机是区块链中的一个关键组件,用来执行智能合约,需要满足安全性和一致性,所谓的安全性一般是指合约代码需要在隔离的沙箱环境中运行,以免错误或恶意代码造成对区块链系统的损害。而一致性...虚拟机是区块链中的一个关键组件,用来执行智能合约,需要满足安全性和一致性,所谓的安全性一般是指合约代码需要在隔离的沙箱环境中运行,以免错误或恶意代码造成对区块链系统的损害。而一致性是指区块链网络中任意诚实的节点执行同一个合约,如果输入参数一致,输出结果都应该是一致的。目前比较主流的虚拟机实现包括EVM、WASM,其他的实
2021-12-24 15:17:45
184
VC界面开发资源包
2014-01-04
MFC_雪花漫天飞舞的唯美场景
2014-01-04
可换肤的无损wav格式音乐播放器源码v1.0.3.5
2014-01-04
MFC写的一款游戏——空中大战(SpaceWar)
2014-01-04
Cocos2D-X游戏开发技术精解
2014-01-04
高仿QQ电脑管家8界面(源代码)
2014-01-04
IOS环境搭建与开发入门(图文)
2014-01-04
Android多点触控技术实战,对图片进行缩放和移动Demo
2014-01-03
Android滑动菜单框架Demo修正版
2014-01-03
开源项目SlidingMenu示例
2014-01-03
GitHub开源项目SlidingMenu类库
2014-01-03
Android应用开发入门教程(经典版)
2014-01-03
Android照片墙应用实现Demo
2014-01-03
Android瀑布流照片墙实现,体验不规则排列的美感Demo
2014-01-03
Android教你如何一分钟实现下拉刷新功能demo
2014-01-03
26个经典的Android例子代码
2014-01-03
Android实现ListView的A-Z字母排序和过滤搜索功能
2014-01-03
Dalvik虚拟机
2014-01-03
Android应用程序进程管理
2014-01-03
用区块链技术保障物联网安全
2020-12-05
20190425103902457.pdf
2020-06-22
区块链学习资料.zip
2019-09-16
Google Android SDK开发范例大全(第3版)
2014-01-24
读懂C++递归程序
2014-01-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人