自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 资源 (10)
  • 收藏
  • 关注

原创 安全审查常见要求

OWASP ZAP 是一款功能强大的 Web 漏洞扫描工具,可以帮助用户发现和修复 Web 应用程序中的漏洞。ZAP 提供了易于使用的界面,并支持自定义脚本和插件,以扩展其功能。Arachni 是一款全面的 Web 应用程序安全测试框架,具有自动化测试的能力。它提供了易于使用的 Web 界面,并支持自定义脚本和插件。Arachni 可以运行在 Windows 系统上,以及其他多种平台上。七、应用系统是否收集基础个人信息和个人敏感信息?如姓名、身份证、手机号等。备份到异地区域的机房,或者手动备份至线下。

2024-01-18 15:22:56 605

原创 csv格式数据导入influxdb2.x

csv格式数据导入influxdb2.x, 常见的错误

2022-08-25 10:53:21 1393 1

原创 RocketMQ参数配置

一、MQ启动>nohup sh mqnamesrv &> nohup sh mqbroker -n 47.97.72.25:9876 -c broker.properties & jps查看启动情况二、broker.properties参数配置详细#第一台机器的公网ipbrokerIP1=47.97.xx.2xx#第二台机器的公网ipbrokerIP2=xx.xx.xx.xxx#broker集群名称,用于划分brokerbrokerClu

2022-02-22 15:47:31 4157

原创 监控摄像头接入流媒体服务器的几种方式

一、为什么要接入流媒体服务器 我们知道,在一些小的应用场合,如社区、中小企业、商超店铺等,布置监控系统并不需要流媒体服务器,直接将摄像头接入硬盘录像机即可。 但是,在一些大型应用场合或一些新型应用场景中,需要将监控视频进行多级传送或远程传送,譬如我们熟知的智慧城市、工业科技园区等,这时流媒体服务器的作用就显得比较突出了。 监控摄像头接入流媒体服务器,一是可以进行长期的、弹性的进行视频存储、查阅和分析使用,二是可以方便的进行多级分发、远程传输和集成到其他业务平...

2021-10-08 23:32:45 11319

原创 Mycat分表统计的一些问题

问题一:分片前,统计结果只有一条记录; 分片后,返回多条(分片数)统计结果记录。 通过explain可知,分表后相当于SQL分成多个SQL语句查询分表,最后UNION合并结果集。如下所未 解决方式:1. 含有null值的比较棘手。 2.如果结果是数值型,则可以用在原始语句外增加一层嵌套SQL统计代码,如select sum(统计字段) sumval from(原始SQL语句.....

2021-09-29 16:59:37 850 1

原创 window10 paddle-gpu环境安装错误

最烦的就是开发环境的配置,经常掉进坑里弄个一两天时间。W0922 10:00:26.824364 14340 device_context.cc:404] Please NOTE: device: 0, GPU Compute Capability: 7.5, Driver API Version: 11.4, Runtime API Version: 10.2W0922 10:00:26.830348 14340 dynamic_loader.cc:238] Note: [Recommend] co

2021-09-22 10:54:14 7917 10

转载 批量梯度下降法(BGD)、随机梯度下降法(SGD)和小批量梯度下降法(MBGD)

1、批量梯度下降(Batch Gradient Descent,BGD)优点:  (1)一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。  (2)由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,BGD一定能够得到全局最优。  缺点:  (1)当样本数目 m 很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。  从迭代的次数上来看,BGD迭代的次数相对较少。伪代码形式为:2、随机梯度下降(Stochasti.

2021-09-11 07:36:29 4215 1

原创 服务器端口异常排查

1. 检查安全组规则是否打开相应端口。iptables -nL2. 检查防火墙的状态systemctl status firewalld 3. 关闭防火墙后,检查端口是否能够访问了systemctl stopfirewalld4. 如果可以访问,不能把防火墙一直都关着吧,重启防火墙systemctl start firewalld5. 为相应端口增加一条特殊规则firewall-cmd --add-port=8099/tcp --perma...

2021-08-31 11:21:58 2097

原创 RuntimeError: CUDA out of memory. Tried to allocate 3.47GiB (GPU 0; 8 GiB total capacity;

使用Pytorch训练模型出现RuntimeError: CUDA out of memoryTried to allocate 3.47GiB (GPU 0; 8 GiB total capacity; ....训练: 由于GPU显存资源有限,训练输入的batchsize不能过大,过大会导致out of memory错误。方案一: 将batch_size减小 显卡RTX2080,8G内存,发现将batch_size从16--->8--&gt...

2021-03-19 05:39:55 3199 7

原创 分类评价指标mAP、ROC、AUC

一、mAP1.1 mAP是一个用来量度物体检测(如Faster R-CNN, SSD,Yolo等)精度时的一个重要性能度量标准。mAP is the metric to measure the accuracy of object detectors like Faster R-CNN, SSD, etc.It is the average of the maximum precisions at different recall values.若一个待检测的物体为狗,我们将被正确...

2021-03-14 23:37:41 941

原创 RPC框架的使用场景

目前有很多RPC框架,比如阿里的dubbo,那么到底RPC框架有什么优势,什么场景下使用呢。dubbo 基于 tcp 协议;一个完整的RPC架构里面包含了四个核心的组件,分别是Client,Server,Client Stub以及Server Stub,这个Stub可以理解为存根。 RPC的接口定义接口很像Android 跨进程IPC调用的AIDL (Android接口定义语言)。一、RPC相较于Http接口的优势:两者最大的差别在传输协议上, 1) ...

2020-12-18 18:08:36 2718

转载 高可用之KeepAlive工作原理

问题:1.高可用解决什么问题?解决单点故障的问题------keepalived.(1)要有备份,从而当一个出现问题时,可以切换到另一个,解决单点故障的问题。(2)要能够自动切换。2.为什么要用keepalived?1>安装和配置都简单,只有一个配置文件2>keepalived可以实现自动切换,实现主从切换keepalive缺点:但是如果是大规模的分布式项目的话,一般不用Keepalived,因为它只提供了简单的心跳和切换的功能,但是没有提供集群管理的功能。优点:比较简单,方便学

2020-12-10 14:49:33 1842

转载 读写分离(四)——Oracle

一、读写分离架构适用的应用 1)读远大于写的场景 如果只有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能不高。对于写和读比例相近的应用,应该部署双主相互复制。 2) 读操作不要求数据强一致 一般对时延的容忍在秒级以上。 就数据库层面来讲,大部分传统行业核心库采用集中式的架构思路,采用高配的小型机做主机载体,因...

2020-12-10 14:36:22 1529

原创 MySQL读写分离(二)——Atlas实现读写分离

【引言】 Atlas是希腊神话被罚作苦役的大力神,在希腊神话中当巨人族首领泰坦反叛奥林匹斯众神战败后支持他的大多数都被打入地狱的黑暗深渊,而Atlas则被罚去西方站在地母盖娅身上并擎住天父乌拉诺斯,以免他和地母XX。所以,Atlas具有“擎天柱”、“擎天神”之意。经常被技术厂商用作产品系统的名称,如早期centrality 的GPS芯片Atlas I 、Atlas ||、Atlas |||。华为也有Atlas系列的AI处理器,阿里巴巴移动团队自研的手机淘宝安卓客户端容器化框...

2020-12-09 19:52:37 302

原创 MySQL读写分离(三)——原理概述

利用主从数据库来实现读写分离,从而分担主数据库的压力。在多个服务器上部署mysql,将其中一台认为主数据库,而其他为从数据库,实现主从同步。其中主数据库负责主动写的操作,而从数据库则只负责主动读的操作(slave从数据库仍然会被动的进行写操作,为了保持数据一致性),这样就可以很大程度上的避免数据丢失的问题,同时也可减少数据库的连接,减轻主数据库的负载。一、数据库主从同步Binary log:主数据库的二进制日志Relay log:从服务器的中继日志第一步:master在每个事...

2020-12-09 19:50:46 406

转载 MySQL读写分离(一)——主从数据库的配置

MySQL数据库的配置【准备环境】 CentOS 6.7 192.168.246.134 主MySQL数据库 CentOS 6.7 192.168.246.135 从MySQL数据库 需要进入192.168.246.134与192.168.246.135数据库中配置用户名与密码,用户必须是远程可以访问的用户,配置方法如下:首先进入到192.168.246.134的..

2020-12-09 15:07:24 86

转载 高可用之VIP(虚拟IP)

VIP = Virtual IP Address,虚拟IP地址,主要是用来进行不同主机之间的切换,主要用在服务器的主从切换。虚拟IP技术原理1. 怎么实现故障检测?心跳检测技术。采用定时发送一个数据包,如果机器一定时间没响应,就认为是发生故障,自动切换到热备的机器上去。2. 怎么实现主备自动切换?虚拟IP技术。虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机,所有项目中数据库链接

2020-12-04 17:05:40 5809 1

转载 软件负载均衡之LVS

使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能,高可用的服务器群集,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。一、LVS体系架构使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(Loader Balancer), 中间的服务器群组层,用Server Array表示, 最底层的数据共享存储层,用Shared Storage表示。在用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性

2020-12-04 07:52:05 202

原创 ZOOKEEPER 使用场景

大致来说,zookeeper 的使用场景如下:分布式协调 分布式锁 配置管理 HA高可用性 负载均衡一、分布式协调这个其实是 zookeeper 很经典的一个用法,简单来说,就好比,你 A 系统发送个请求到 mq,然后 B 系统消息消费之后处理了。那 A 系统如何知道 B 系统的处理结果?用 zookeeper 就可以实现分布式系统之间的协调工作。A 系统发送请求之后可以在 zookeeper 上对某个节点的值注册个监听器,一旦 B 系统处理完了就修改 zookeeper 那个节点的值,A

2020-12-03 18:02:56 106 1

原创 分库分表引起的问题

一、扩容与迁移1)按照新旧分片规则,对新旧数据库进行双写。2)将双写前按照旧分片规则写入的历史数据,根据新分片规则迁移写入新的数据库。3)将按照旧的分片规则查询改为按照新分片规则查询;4)将双写数据库逻辑从代码中下线,只按照新的分片规则写入数据。5)删除按照旧分片规则写入的历史数据。二、查询问题常见的解决方式:1)在多个分片表查询后合并数据集,这种方式的效率很低。2)记录两份数据,一份按照买家维度分表,一分按照商品维度分表。3)通过搜索引擎解决,但如果实时性要求很高,

2020-11-21 23:13:07 213

原创 Nginx 信号量命令选项及应用

一、Nginx介绍 nginx是一个多进程/多线程高性能web服务器,在linux系统中,nginx启动后会以后台守护进程(daemon)的方式去运行,后台进程包含一个master进程和多个worker进程(这个数量可以在nginx.conf配置文件中worker_processes这个参数设置),可以充分利用多核架构。nginx工作模式是以多进程的方式来工作的,当然nginx也是支持多线程的方式的,只是我们主流的方式还是多进程的方式,也是nginx的默认方式。nginx在启动...

2020-11-20 22:12:59 159

原创 分库分表架构与框架

分库分表的实现方案分成三大类:客户端分片、代理分片和支持事务的分布式数据库。 一、客户端分库分表框架使用分库分表的数据库的应用层直接操作分片逻辑,分片规则需要在同一个应用的多个节点间进行同步,每个应用层都嵌入切片的逻辑实现(分片规则),这一般通过依赖Jar包来实现,具体的实现方式分成三种:在应用层直接实现、通过定制JDBC协议实现、通过定制ORM框架实现。1.1 在应用层直接实现 从应用层直接决定每次操作读取使用哪个数据库实例、哪个数据库、哪个表等。一般在公司内部会将这些...

2020-11-14 15:40:43 1552

原创 Linux系统上实现简单的Floating IP

floating IP就是浮动IP,很多地方为了做双机 or 双网卡备份,以免单点失效,就把两个实体网卡各自绑定一个IP,同时配置一个浮动IP,访问这个主机时候访问floating IP,这样,任何一个实体网卡的失效都不会影响这个主机的服务。1、为什么要有浮动IP这个东西 现在有一个场景,在一台Linux上部署一个web应用,应用跑在tomcat里面,linux网卡上的ip是115.239.100.120大致就是如下的部署关系: 用户通过输入IP地址就能访问这个应用...

2020-11-13 17:13:27 626

原创 唯一流水号的产生(分布式发号器)

在互联网世界里,产生唯 一流水号的服务系统俗称发号器。一、为什么不用UUID(不推荐) 1) UUID虽然能够保证ID的唯一性,但是无法满足业务系统需要的很多其他特性,例如时间粗略有序性、可反解和可制造性。 2)性能较差。UUID比较长、占用空间大,会间接导致数据库性能下降; 3)UUID并不具备有序性,会导致B+树索引在写的时候有过多的随机写操作(连续的ID会产生部分顺序写);还有,由于在写的时候不能产生有顺序的append操作,而需要进行insert操作,将读取整个B+树节点到...

2020-11-13 07:59:41 361

原创 移动深度学习的几个问题

移动深度学习的几个问题 本文主要概括了在移动端深度学习与服务端深度学习的几个重要差异。一、在移动端和服务器应用深度学习的难点对比 对比点 服务器端 移动端 内存 内存较大,一般不构成限制 内存有限 耗电量 不构成限制 移动设备的耗电量是一个很重要的限制因素 依赖库体积 不构成限.

2020-05-18 05:54:09 319

原创 一维搜索、线搜法

一、什么是一维搜索 在许多迭代下降算法中,具有一个共同点,这就是得到点后,需要按某种规则确定一个方向,再从出发,沿方向在直线(或射线)上求目标函数的极小点,从而得到的后继点。重复以上做法,直到求得问题的解。这里所谓目标函数在直线上的极小点,称为一维搜索,或称为线搜索Line Search。 在机器学习中, 通常需要求某个函数的最值。 线搜索(line search)是求...

2020-02-16 14:15:09 3554

原创 尺度空间与高斯差分算子DoG

在上一篇中我讲述了图像金字塔(高斯金字塔和拉普拉斯金字塔)。这了篇中介绍在SIFT检测中用到的DoG高斯差分算子。 在SIFT关键角点检测中,在不同的尺度空间不能使用相同的窗口检测SIFT极值点。对小的角点要用小的窗口,对大的角点只能使用大的窗口。为了达 到这个目的我们要使用尺度空间滤波器。尺度空间滤波器:尺度空间滤波器可以使用一些列具有 不同方差 σ 的高...

2020-02-14 15:28:24 2554 1

原创 高斯拉普拉斯——图像金字塔

图像金字塔原理 一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下, 我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸大小。这种情况 下,我们需要创建一组图像,这些图像是具有不同分辨率的原始图像。我 们把这组图像叫做图像金字塔(简单来说就是同一图像的不同分辨率的子图集 合)。如果我们把最大的图...

2020-02-10 22:16:37 952

原创 openCV_结构化元素(核)

结构化元素 在前面的例子中我们使用 Numpy 构建了结构化元素,它是正方形的。但 有时我们需要构建一个椭圆形/圆形的核。为了实现这种要求,提供了 OpenCV 函数 cv2.getStructuringElement()。你只需要告诉他你需要的核的形状 和大小。 # Rectangular Kernel>>> cv2.getStructuringElemen...

2020-02-10 11:33:36 1069

原创 Hu 矩——形状匹配

形状匹配 函数 cv2.matchShape() 可以帮我们比较两个形状或轮廓的相似度。如 果返回值越小,匹配越好。它是根据 Hu 矩来计算的。文档中对不同的方法都 有解释。我们试着将下面的图形进行比较: import cv2import numpy as npimg1 = cv2.imread('star.jpg',0)img2 = cv2...

2020-02-09 20:30:50 851

原创 Python高级属性访问模式

一、关于私有关键字Python中没有private关键字,与之最接近的概念是名称修饰(name mangling)。每当在一个属性前面加上双下划线_ _时,解释器就会立即将其重命名,通过这种方式造成对象实例无法直接访问属性。class MyClass: __secret_value=1二、描述符描述符descriptor允许你自定义在引用一个对象的属性时应该完成的事情。...

2020-02-04 18:48:58 142

原创 Python上下文管理器——with语句

为了确保即使在出现错误的情况下也能运行某些清理代码,try...finnally语句是很有用的。这一语句有许多使用场景,例如1)关闭一个文件。2)释放一个锁。3)创建一个临时的代码补丁。4)在特殊环境中运行受保护的代码。一、with语句使用语法with语句为这些使用场景下的代码块包装了提供了一种简单方法。即使该代码块引发了异常,你也可以在其执行前后调用一些代码。语法1:...

2020-02-04 14:54:30 230

原创 Python的一些高级语法

一、Python生成器Python生成器另一个重要特性,就是能够利用next函数与调用的代码进行交互。yield变成了一个表达式,而值可以通过名为send的新方法来传递:def psychologist(): print('Please tell me your problems') while True: answer = (yield) ...

2020-02-04 11:57:03 148

原创 Python之独立可执行文件

Python标准库缺少合适的工具能够让程序员创建简单的可执行文件,使得不用不需要安装python解释器就可以运行这些可执行文件。常用构建独立可执行文件的工具:一、PyInstaller它提供了最广泛的多平台兼容性。支持Windows32/64、Linux二、cx_Freeze三、py2exe只面向Windows平台构建可执行文件。四、py2app只允许构建Ma...

2020-02-03 23:07:40 447

原创 Python无扩展的动态库接口

一、ctypes 标准库的一个模块。 ctypes是最流行的模块,用于动态或共享库的函数调用,而不需要编写自定义C扩展。 在ctypes中有4种类型的动态库加载器和两个使用它们的约定。表示动态和共享库的类是:1.1 ctypes.CDLL1.2 ctypes.PyDLL1.3 ctypes.OleDLL和ctypes.WinDLL。 ...

2020-02-03 22:46:42 179

原创 Python高级编程——编写扩展

Python扩展三种不同的实现方式:一、编写纯C扩展。 写过JNI的人很容易理解,纯C扩展就是利用Python/C API来扩展python应用。C/API的详细使用,请参见:https://docs.python.org/3.6/c-api/例子:"""setup.py文件:用来告诉解释器我们的扩展是如何编译的 扩展的构建过程可以通过Python的setup.py构建...

2020-02-03 11:26:36 538

原创 分布式一致性算法

分布式一致性算法的目的是为了保证同一份数据在多个节点上的一致性,以满足CAP中CP的要求。C:Consistency 一致性 A:Availability可用性;P:partition tolerance一、Paxos 世界上只有一种一致性算法,那就是Paxos,所有其他一致性算法都是Paxos算法的不完整版(Mike Burrows)。 (1)Paxos算法...

2020-01-31 16:22:19 252

原创 常见的负载均衡方式

常见的负载均衡系统包括三种:DNS负载均衡、硬件负载均衡和软件负载均衡。一、DNS负载均衡 一般用来实现地理级别的均衡。其本质是DNS解析一个域名可以返回不同的IP地址。  优点:简单、成本低;就近访问,提升访问速度; 缺点:1)更新不及时:DNS缓存时间比较长,修改DNS配置后,由于缓存的原因,还是有很多用户会继续访问修改前的IP。 ...

2020-01-31 14:07:46 337

原创 数据库读写分离的中间件

读写分离需要将读/写操作区分开来,然后访问不同的数据库服务器;分库分表需要不同的数据访问不同的数据库服务器,两者本质上都是一种分配机制,将不同的SQL语句发送到不同的数据库服务器。 常见的分配实现方式有两种:程序代码封闭和中间件封闭。一、程序代码封装 程序代码封装指的是在代码中抽象一个数据访问层来实现读写分离、分库分表。例如,基于Hibernate进行简单封...

2020-01-31 13:37:05 1559

原创 水平分表常见的路由算法

水平分表后,某条数据具体属于哪个切分后的子表,需要增加路由算法进行计算。常见的路由算法有如下几种:1)范围路由 以最常见的用户ID为例,路由算法可以按照1000000的范围大小进行分段,1~999999放置于数据库1的表中,1000000~1999999放到数据库2的表中,以此类推。 优点:随着数据的新增可以平滑地扩充新的表。缺点是分布可能不均匀。2)...

2020-01-31 13:21:52 1166

git & repo

Git权威指南.pdf Git & Gerrit Manual_20130803 repo 命令详解

2018-03-14

u-center V8.26

新版本的u-blox专业测试软件u-center,不但是专业级别的测试软件,而且可以对u-blox公司的模块进行相应的模块功,安装后包括主程序和驱动。

2018-03-14

NB-IOT 问题清单

NB-IOT定义 窄带物联网(Narrow Band Internet of Things, NB-IoT)是由3GPP(《第三代伙伴计划协议》)标准化组织定义的一种技术标准,是一种专为物联网设计的窄带射频技术,因此得名。

2018-03-14

datatables HTML5 buttons插件

Buttons提供一套给用户添加自定义按钮的特性,让按钮看起来和表格是一个整体。 Buttons提供了一些基本的按钮,比如打印,导出之类的按钮,也提供了API让用户自己扩展按钮,触发自定义的操作。 当在DataTable中显示数据时,对于终端用户来说,他们有能力从DataTable中获取数据,并将其提取到一个文件中,以便他们在本地使用。这可以用基于HTML5的按钮或Flash按钮来完成。 buttons按钮有四个核心组件(copy,csv,excel,pdf),他们是独立的,你可以自己组合自己需要的插件。可以自动检测浏览器的功能和软件的可用性——如果可能的话,它们会自动使用HTML5按钮

2018-03-14

jQuery实现输入框下拉列表树插件代码

这是一款基于jquery实现的下拉列表树插件源码,是一款实用的jquery 树形下拉框下拉树代码。点击文本框即可弹出树形下拉列表,单击列表项即可选中列表对应文字,是一款非常实用的特效源码。

2018-03-14

chartCtrl图表控件

C++图表控件代码,非常易用,适合各种图表 高速绘图(轴固定时),允许快速绘制数据 无限数量的数据序列(内存是限制) 每个数据序列的数据量不受限制 支持线图,点图,平面图,柱状图,K线图 和甘特图系列 最多四个轴(左,下,右和上轴) 标准轴,对数轴或日期/时间轴 自动伸缩的坐标轴, 翻转的坐标轴(相互独立) 轴标签 点标签 平滑的曲线 网格 图例和标题 交互性(在控件中发生特定事件时的通知) 支持手动缩放和鼠标平移 支持鼠标指针 支持轴上的滚动条 高度可定制(颜色,标题,标签,边缘,字体等) 支持UNICODE 支持打印和保存到图像文件

2018-03-14

JsonExportExcel

json转exce格式 不依赖于datatables等界面显示,可采用ajax技术从后台获取json数据然后下载导出为exce格式,非常简单易用!有例子

2018-03-14

android3.0 以前的版本支持fragment

android在3.0.x(api level 11)开始支持fragment UI框架功能,利用android-support-v4.jar库,其实也可以在android低版本中支持fragment UI框架。

2012-06-12

gpio-android-api

android GPIO开发,包括GPIO口的读写,gpio驱动开发部分,应用部分JNI层,以及Java source code ,助你对GPIO操作完全入门

2012-06-12

基于Android系统的Air程序开发

很全面的adobe AIR学习资料,包括两本书: 1)基于Android系统的Air程序开发 2) Developing_AIR_Apps_for_Android ()英文

2012-06-12

空空如也

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

TA关注的人

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