- 博客(2941)
- 资源 (44)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 鸿蒙OS应用开发的开发环境
当你想投入到这个生态系统里的时候,首先是使用它,这是最方便的方法,比如买一台带有鸿蒙系统的手机,并且不断地使用它,提出你自己的建议,让它进行完善和改进。在这里主要开始学习开发鸿蒙系统的应用,由于鸿蒙系统发布的时间不是很久,当然是相对安卓和IOS来说,因此它是一个全新的系统,并且致力于创建一种更方便的软件方式,它引入不同于以往的软件开发语言,以及不同的界面接口。这时候,就可以看到应用的名称,包的名称,保存的位置,编译的SDK版本,运行模式,是否可视化编辑,语言,兼容性API,设备类型。
2023-12-07 12:31:53
573
原创 鸿蒙应用开发之Flex容器
前面学习了Column等容器,现在学习一个灵活弹性的容器,它就是Flex容器。它可以让容器里面的组件按不同的方式来排序前后,而不需要调整界面显示的代码。在这里可以看到组件显示的方向不一样,前面一行是从左到右进行布局,而后面一行是从右到左布局。针对这种需求,只能使用Flex容器才能方便实现。标准Flex布局容器。这是方向参数的区别。
2024-07-13 12:11:09
637
原创 鸿蒙应用开发之Counter容器
要在文本组件里显示出来,需要定义一个数字变量,然后在上面两个事件里对这个变量进行计数,点击减少就对变量进行减少,点击增加就对变量进行增加,然后就可以在文本组件里显示出变量的值变化。这段就是事件响应代码,如果变量值不是按1变化,可以按10变化地修改。上面组件中间显示5的组件是一个文本组件,边上提供了增减的按钮。
2024-07-11 11:40:31
672
原创 鸿蒙应用开发之Column容器
这个Column容器设置显示为上一个容器的90%宽度,所以在手机两边就留有空间。其中看到每个边框有实线的也是一个Column容器,这里只不过把它的边框显示出来,最外面这个Column没有把边框线显示出来。先在最外面建立一个Column容器,space和方框显示等显示内容都是作为一行进行排列。如果一行里子容器不填满宽度,那么就需要进行排列,默认是中间排列,也可以设置为从左向右,或者从右向左都可行。这个容器已经使用了很多次,但是还是需要来简单地学习一下,它的主要作用是沿垂直方向布局的容器。
2024-07-05 10:26:19
66
原创 鸿蒙应用开发之Badge容器
在开发应用的时候,经常需要一些提示,特别当用户打开应用时,有一些事情需要提醒一下用户,但是不能自动打开这个窗口提示,这样会让用户比较烦。方法1: Badge(value: {count: number, position?在这里显示红点的地方,就是目前介绍的容器Badge实现的功能。从上面来看,有三种不同的形式,一种是在图标上显示一个红点,一种是图标后面显示红色文字,最后一种是显示一个数量。方法2: Badge(value: {value: string, position?根据字符串创建标记组件。
2024-07-04 10:28:55
47
原创 鸿蒙应用开发之OpenGL的EGL
EGL 是渲染 API(如 OpenGL ES)和原生窗口系统之间的接口,通常来说,OpenGL 是一个操作 GPU 的 API,它通过驱动向 GPU 发送相关指令,控制图形渲染管线状态机的运行状态,但是当涉及到与本地窗口系统进行交互时,就需要这么一个中间层,且它最好是与平台无关的,因此 EGL 被设计出来,作为 OpenGL 和原生窗口系统之间的桥梁。这也许就是EGL的功劳吧,简单地说EGL就是Opengl和平台各平台之间的一个适配器,是一系列的接口,具体实现是由具体的设备厂商实现的。
2024-06-29 12:23:31
91
原创 鸿蒙应用开发之OpenGL绘画三角形
并且使用GL_FLOAT类型,由于坐标值已经归一化,也就是在-1到1之间,所以设置为GL_FALSE,无须归一化处理。可用的符号常量有GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT,GL_UNSIGNED_SHORT, GL_FIXED, 和 GL_FLOAT,初始值为GL_FLOAT。这个数组定义了三角形的三个坐标,第一个顶点是(0.0f, 0.5f, 0.0f),第二个顶点是(-0.5f, -0.5f, 0.0f),第三个顶点是(0.5f, -0.5f, 0.0f)。
2024-06-04 11:25:06
156
原创 鸿蒙应用开发之OpenGL应用和X组件12
如果成功,就会返回非0值,这时候就可以返回整个编译后的着色器对象shader,否则后面就去查找编译出错的原因。这段代码把上面的x组件的ID转换为string串对象,然后调用函数 PluginRender::GetInstance获取渲染对象render ,最后调用渲染对象的函数render->m_eglCore->ChangeColor。这个函数主要传入两个参数,第一个参数type是加载着色器的类型,在这里主要有两种,一种是GL_VERTEX_SHADER,另外一种是GL_FRAGMENT_SHADER;
2024-06-03 10:05:07
185
原创 鸿蒙应用开发之OpenGL应用和X组件11
在这个函数,先设置m_flag标志,这个标志是用来表示是否画四边形,如果为false表示还没有画四边形,这时候点击界面就不会改变颜色。这段代码就可以通过X组件的指针来获取X组件的ID字符串,把它保存在变量idStr,这样后面就可以通过ID串来找到对应的渲染对象。这段代码从环境变量里获取X组件的指针,保存在exportInstance里,后面会通过X组件指针来操作X组件。要显示四边形,先要构造一个四边形的顶点数组。在上面这段代码里,先进行日志输出,然后进行参数判断,如果参数不正确就返回出错。
2024-05-31 09:04:03
711
1
原创 鸿蒙应用开发之OpenGL应用和X组件10
ExecuteDraw的作用是设置要显示图形的顶点坐标,以及显示的颜色,并进行绘制。这个函数输入几个参数,第一个参数position是用来表明是哪一个索引输入位置,是从函数glGetAttribLocation(m_program, POSITION_NAME)里获取的返回值,其实就是"a_position"的位置,也就是顶点坐标的输入索引;在这里使用这行代码glVertexAttrib4fv(1, color)来设置所有顶点的颜色值,这里指定的索引号为1,也就是GLSL程序里的位置1的颜色索引。
2024-05-30 09:57:24
80
原创 鸿蒙应用开发之OpenGL应用和X组件9
着色器程序对象相当于着色器对象的容器,和任何OpenGL管理的对象一样,在使用着色器程序对象之前,需要通过glCreateProgram接口来创建出一个着色器程序对象。这段代码就是对前面进行链接的程序进行判断是否出错,如果连接成功就可以返回当前的程序进行使用,当前程序是保存在变量program里。这段代码调用glAttachShader进行关联到着色器管理对象,这样顶点着色器和片段着色器就放到管理对象里面,最后调用glLinkProgram来进行连接,才能生成GPU执行的二进制程序。
2024-05-29 09:53:17
111
原创 鸿蒙应用开发之OpenGL应用和X组件8
layout(location = 0),叫做布局限定符,目的是为了方便给变量提供数据,layout()的还有其他的选项,在这里location相当于设定了变量在着色器程序中的访问位置。还需要注意的是,变量名不能以 gl_ 作为前缀,这个是 GLSL 保留的前缀,用于 GLSL 的内部变量。gl_Position vec4 输出属性,变换后的顶点位置,用于后面的裁剪等操作,所有的顶点着色器都必须写这个值。gl_MultiTexColor vec4 输入属性,表示的是顶点的第n个纹理的坐标。
2024-05-28 10:11:25
114
原创 鸿蒙应用开发之OpenGL应用和X组件7
在前面介绍了X组件调用函数来初始化,初始化之后,就需要调用EGL函数来初始化OpenGL的环境,才能使用OpenGL函数来绘制图形。调用 EGLboolean eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor),该函数会进行一些内部初始化工作,并传回EGL版本号(major.minor)。保存窗口的宽度和高度,以便后面使用。这段代码开始进行初始化EGL,主要是调用eglInitialize函数,然后获取OpenGL的版本号。
2024-05-27 12:12:03
109
原创 鸿蒙应用开发之OpenGL应用和X组件6
接着重要的功能,就是设置X组件回调函数对象m_callback,它的4个调函数指针,都设置好之后,就可以给X组件进行处理了。前面已经分析怎么样注册X组件的回调函数,然后这些回调函数就可以在X组件合适的时机进行回调,就可以让C++的代码在合适的时间做合适的事情。在这段代码,先从容器里查找是否在存在这个ID的X组件插件,如果没有就会创建一个PluginRender对象,这个对象负责注册回调对象维护,并且管理显示图像的对象。在这个回调函数里,传入两个参数,第一个参数component是一个X组件的指针;
2024-05-24 12:24:12
312
原创 鸿蒙应用开发之OpenGL应用和X组件5
这段代码就通过NAPI的函数napi_get_named_property获取X组件的通用指针,它定义名称为OH_NATIVE_XCOMPONENT_OBJ,这是X组件在C++端的名称。这段代码就是使用获得的X组件的指针,然后通过函数OH_NativeXComponent_GetXComponentId来获取X组件的ID,这个ID保存在idStr数组里,给后面使用。因此,我们需要注册C++层的回调函数OnSurfaceCreated,这样当X组件创建成功之后调用我们在C++里的代码。
2024-05-22 11:59:36
114
原创 鸿蒙应用开发之OpenGL应用和X组件4
接着就是做主要的事情,映射库的导出方法getContext,这是在ArkTS里看到的方法,在C++里实际上是函数PluginManager::GetContext,这个函数也是一个静态的全局函数,可以任何地方调用,并且这个函数里的访问变量也是全局的。这行代码干的活比较多,首先要拿到X组件在C++里的指针,然后绑定这个X组件和ID关系,并且注册X组件的回调函数,这样才能根据X组件的生命周期来处理界面,最后还需要导出X组件交互函数,以便用户在X组件点击时触发C++层的代码运行。接着查找GLES库。
2024-05-21 10:39:18
102
原创 鸿蒙应用开发之OpenGL应用和X组件3
这些函数都是根据APP生命周期来调用库里的函数,这样库里的函数就可以根据这些函数来安排不同的代码执行了,在这个例子里基本上就是打印一个日志输出,没有什么实质内容。前面已经分析应用生命周期和页面生命周期,所以我们需要在OpenGL开发的库里区分这两个状态,以便在不同的状态下导出不同的函数给TS侧使用。然后返回一个任何类型的对象。上面页面的生命周期的调用顺序流程图,根据流程图,就可以在将要显示的函数加载资源文件,以便在显示出来时就能画到界面上。这样在C++开发的代码库里,就可以根据这些函数来执行需要的代码。
2024-05-20 11:49:01
114
原创 鸿蒙应用开发之OpenGL应用和X组件2
紧跟着下来onLoad方法设置加载XComponent组件成功之后获取这个组件对应的对象,保存在变量this.xComponentContext,这样后面就可以调用它为更新X组件绘制的内容,达到交互的目的。在这里要注意的是显示文本串是从资源里加载,并且资源里有中英资源,可以根据系统的语言来自动切换不同的语言显示的。在X组件里又设置了这个库的名称,那么在加载X组件时,就会自动要求系统加载这个库,当这个库加载完成之后,就会调用。从上面可知,应用生命周期是大于页面生命周期的,所以需要区分所处状态。
2024-05-20 10:15:43
168
原创 鸿蒙应用开发之OpenGL应用和X组件1
前面学习调用C++开发的代码库,这样可以加入C++语言来开发鸿蒙应用,加快对一些要求运算速度比较高的场合,也提高对旧的项目移植性。前面的C++语言开发的应用,只是简单的调用功能计算,并没有C++代码来操作界面的要求,并且没有使用复杂的C++的功能,这里不仅要在C++里输出图形到界面,并且还是采用OpenGL来开发,OpenGL就是一个非常复杂的库,以及不同的编程习惯。从上图我们就可以看到整个软件的基本组成,与前面学习的C++开发代码库是一样的,只是不同的文件,以及增加X组件的应用。
2024-05-17 12:12:46
767
1
原创 鸿蒙应用开发之调用C++开发代码库4
在这里调用函数napi_create_double,它是用来从C++类型double创建一个JS类型对象返回,并且把返回结果保存在变量napiResult,由于napi_value是指针,那么&napiResult就是指向指针的指针。返回值采用napi_value类型定义,napi_value类型是一个指针类型,并且是一个通用的指针类型,其实它就是相当于void*类型,可以保存任何类型的数值指针。接着定义它返回napi_value类型,这个类型是NAPI的通用类型,可以表示数字、字符串和布尔值等。
2024-05-16 12:14:01
148
原创 鸿蒙应用开发之调用C++开发代码库3
extern "C"的作用就是声明这个函数是以C语言接口方式导出,方便JS引擎加载模块时,可以按C的方式执行函数RegisterModule,RegisterModule的作用是把本模块的信息demoModule放到引擎的调用队列里,以便后面TS代码执行时去查找队列。"myHypot"是声明在文件index.d.ts的函数,也就是JS引擎可以识别的函数,而MyHypot是C++的函数,这中间的转换就靠NAPI框架转换了。我们从JS调用框架图就知道,调用主要分为三层,JS开发的C++模块、框架层、JS引擎。
2024-05-16 09:03:16
192
原创 鸿蒙应用开发之调用C++开发代码库2
是C++库,版本为10.0.1,libc++ 是C++标准库的一种实现,C++11、C++14标准已完全支持,C++17和C++20标准正在完善。接着下来先分析C++部分的代码,主要关注点是C++代码要怎么样编写,才能被ArkTS代码调用,它们之间的数据类型又是怎么样转换的。有了这两个文件,就可以知道C++代码生成库的名称为libhello.so,并且符合index.d.ts类型导出的动态连接库。在这里定义了加载C++库的名称为libhello.so,同时指明类型声明在文件./index.d.ts里。
2024-05-15 10:11:50
495
原创 鸿蒙应用开发之调用C++开发代码库1
由于鸿蒙应用主要基于ArkTS开发,主要使用的语言是ETS,也就是JS脚本方式来开发,这与C++语言开发是不同的语言,这样就不能直接相互调用,因为不同的语言使用不同的数据结构,不同的调用方式,不同的运行环境。因为C++语言开发的底层库已经比较长的时间,即使不考虑性能的情况之下,也需要很大的工作量来重写和测试,所以ArkTS一定需要能调用C++代码的能力,这样才能方便旧的项目,或者性能要求比较高的项目进行开发。简单起见,先来学习一个鸿蒙代码库提供的一个例子,这样杜绝各种创建项目的不同,以及填写不同的参数。
2024-05-14 17:08:14
380
原创 鸿蒙应用开发之Web组件7
前面学习了Web组件选择文件文件上传的处理,现在来学习怎么样在一个Web容器里,再打开一个窗口来显示内容,相当于弹出另一个Web组件窗口,其实相当于两个Web组件同时在操作的方式。要想让Web组件运行上述的网页,就需要处理打开窗口的功能。”,当我们点击这个按钮之后,就需要Web组件来处理,并且打开一个窗口来显示。需要创建一个新的Web组件控制器WebviewController,同时创建一个新的Web组件来显示。这个是子窗口显示的Web组件,在前面介绍的窗口事件函数里响应处理,调用它来创建子窗口。
2024-05-13 13:24:40
85
原创 鸿蒙应用开发之Web组件6
前面学习怎么样设置Web界面显示不同的颜色配置,这种适合不同时间来设置,比如白天要亮一些,晚上要暗一些。现在来学习使用Web组件选择文件文件列表的功能。由于这个方法在模拟器里运行不成功,需要使用真实手机来测试,所以需要连接手机。第三步返回设置页面,搜索“开发人员选项”,然后打开“开发人员选项”。后面就可以根据自己的需要来设置开发人员选项了。这样就可以使用真机来调试APP了。第四步把开发选项打开。
2024-04-23 11:56:31
108
原创 鸿蒙应用开发之Web组件5
通过darkMode()接口可以配置不同的深色模式,WebDarkMode.Off模式表示关闭深色模式。WebDarkMode.On表示开启深色模式,并且深色模式跟随前端页面。WebDarkMode.Auto表示开启深色模式,并且深色模式跟随系统。前面学习了Web加载程序内置的HTML数据来显示,这样可以加速界面的显示,接着下来学习怎么样设置Web组件显示界面的背景配色。有了这个接口,就可以设置Web为不同的颜色。可以看到上面界面全部变成黑色背景了。一般情况下,Web组件是采用默认跟随系统设置的背景颜色。
2024-04-22 18:18:15
96
原创 鸿蒙应用开发之Web组件4
前面学习了Web组件加载本地的文件数据,这样很方便不需要网络的界面显示,或者提示类的界面,比如软件使用说明书,又比如软件使用协议,又或者固定显示的长文本数据。如果有多个文件,也可以通过按钮来切换不同的文件显示。如果文本比较短小的HTML数据,放到文件里,再通过文件显示,就会多了一个访问文件的过程,这样导致显示数据有点慢,面对这样的需求又有什么样的解决方案呢?这样就可以快速地实现程序内嵌数据的快速显示。下面就来通过例子来演示这个接口的使用。有了这个接口,就轻而易举了。
2024-04-22 10:36:02
219
原创 鸿蒙应用开发之Web组件3
比如很多显示的内容,可以制作网页的文件格式,然后直接使用它来显示,就可以减少界面的制作。另外,当手机没有网络的时候,如果想从网络上获取内容就会失败,这时候可以使用本地的网页内容来代替。说明: 在引用资源类型时,注意其数据类型要与属性方法本身的类型一致,例如某个属性方法支持设置string | Resource,那么在使用Resource引用类型时,其数据类型也应当为string。由于显示本地的网页,不需要网络的权限,这时候APP可以不用设置网络的权限。在这里就采取最后的方式来加载本地的HTML文件。
2024-04-20 11:15:06
77
原创 鸿蒙应用开发之Web组件2
可见,通过上述的函数,就可以切换不同的网页内容显示了。这种方式在很多APP里非常有用的,因为可以把网页上内容放到自己服务器上,可以每天做不同的修改,特别广告显示,或者不断更新用户查看的内容,提醒等等。前面学习了加载Web组件,在使用这个组件之前需要设置网络加载的权限,否则是不能使用Web组件,所以大家在使用这个组件时,需要仔细检查是否有设置这个权限。如果Web组件只是默认加载一次连接,就可以使用构造时传入的参数来决定,如果想不断地变换不同的网络地址,就需要使用这个函数loadUrl()来解决了。
2024-04-18 18:31:40
105
原创 鸿蒙应用开发之Web组件1
我们知道目前已经进入网络3.0时代,之前经历了1.0的文本时代,2.0的多媒体时代,现在进入全面交互时代。前面学习向导组件,现在来学习Web组件,这个组件也是一个比较复杂的组件,也是一个功能很强的组件,毕竟它是一个浏览器功能相当的组件,可以显示网页内容。总共有两个参数,第一个参数src是打开网页的地址,或以是网上的地址,也可以本地的地址;如果比较熟悉的人员,也可以直接编辑json文件,但是要小心输入的字符串资源,有可能编译不通过。点击第一步的按钮,就可以可视化,这样找到请求的权限,再进行添加。
2024-04-18 10:10:54
497
原创 鸿蒙应用开发之向导组件
向导组件也是一个常用的组件,因为很多工作流程都需程序化,引导用户一步一步地进行,这样才能让用户明白地填写相应参数,选择合适的内容。这时候就会切换到第二页显示,这时下面有可以向前一页导航的按钮,也有向后一页导航的按钮。在这里发现每一项都需要重复设置一些相同的类型属性,那么能不能把这些设置提出来?还可以修改每一页的显示状态,因为根据用户的选择,有可能跳过一些页面的设置。在后面添加一个复合语句来定义所有页面的内容,这样使用起来非常方便。如果发现填写出错,就可以点击返回按钮,再次进行修改。在这里演法了扩展装饰器。
2024-04-17 10:13:39
76
原创 鸿蒙应用开发之滑动选择组件
可以用手滑动上面的滑块,就可以调节对应的数字。滑动的时候可以设备滑动的步长,默认的步长是1,意思就是说最小调整的单位为1。前面学习了下拉选择菜单组件,现在来学习滑动选择组件,它是提供快速调节设置值,如音量调节、亮度调节等应用场景。也就是说,这个组件可以通过滑动条来设置对应的数值,而不需要用户手动输入数字。从API version 9开始,该接口支持在ArkTS卡片中使用。从API version 9开始,该接口支持在ArkTS卡片中使用。从API version 9开始,该接口支持在ArkTS卡片中使用。
2024-04-16 18:23:13
308
原创 鸿蒙应用开发之下拉菜单选择组件
Select([{ value: '菜单1', icon: $r('app.media.demo3') },由于它是下拉式的菜单,所以候选的内容建议不要太多,否则会滚动比较麻烦。{ value: '菜单4', icon: $r('app.media.demo3') }]){ value: '菜单2', icon: $r('app.media.demo3') },{ value: '菜单3', icon: $r('app.media.demo3') },设置下拉菜单初始选项的索引,第一项的索引为0。
2024-04-16 11:44:57
460
原创 鸿蒙应用开发之搜索框组件
基上提供了输入内容变化时立即获取的事件函数onChange,当输入完成之后用户点击搜索时事件函数onSubmit。这个搜索框组件,其实比较像探索网站的输入,可以输入内容,并且带有一个搜索的按钮。不过,这个组件还是缺少了一个搜索输入历史提示,或者说是输入内容动态提示的功能,这个还需要开发人员自己来完善这个功能。它还提供了一个控制器可以控制输入光标的位置,比如你输入了一串文本,突然想修改中间某一段,那么就需要移动到这个字符位置,然后再执行删除和修改的工作。有了这些内容,就可以自由地创建搜索框组件了。
2024-04-15 18:02:48
394
原创 鸿蒙应用开发之ScrollBar组件
由于手机的屏幕过小,那么显示的内容总会显示不下来,这时候肯定就会想到怎么样滚动显示了。从上图看到右边有一条滚动条显示,不过这个滚动条只是用来显示当前位置和全局内容多少,并不能执行滚动的操作,不像PC上的滚动条上点击之后会移动到相就的位置。滚动条的布局,有两个方向一个是纵向,一个横向。这里传入了控制器,并且定义为纵向布局。
2024-04-15 10:58:24
273
原创 Blender表面细分的操作
在使用Blender的过程中,刚开始创建的模型,都会比较少面,这样操作起来比较流畅,减少电脑的计算量,当设计快要完成时,就会增加表面细分,这样更加圆滑,看起来更加顺眼。创建物体的快捷键是Shift + A键,细分是采用Ctrl + 数字(0,1,2,3,4,...)。从上图可以看到,有一些表面会比较大,棱角很多。这时候你就会想到表面细分,那么怎么样操作呢?所有上面的操作需要先选中物体,才能操作。这样就可以通过界面上使用鼠标进行操作了。这时候就已经很细小的表面了。这样显然没有快捷键方便了。
2024-04-13 23:06:24
603
原创 鸿蒙应用开发之富文本(RichText)组件
这是一个段落。'这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字';这是一个在div元素中的标题。">h1下划线' +">h1斜体' +这个一个段落这是一个段落
2024-04-12 19:22:35
228
原创 鸿蒙应用 开发之 评分组件
现在的用户喜欢互动的APP,因为现在是商品过剩的时代,大家都没有办法去研究每一个商品的细节,每一个商品的好与差。那么就会有一个评价系统,这样大家通过投票来决定那一个商品的好与差,这样大家就会有一个快速选择的方法,这样就会方便大家,节省大家的选择成本。既然大家都需要进行评分,那么就要实现一个评分组件的功能,让大家方便选择评分,并且查看评分。参数indicator是用来是否可以更改评分,如果设置true时,不能更改分值,只作为显示作用。可以看到评分,一般显示为5个星星,当用户点击那个星星,就会评分在那里。
2024-04-12 10:39:50
73
原创 鸿蒙应用开发之显示二维码组件
在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;这样对于用户来说,是一种糟糕体验,因为要记得太多,输入太多。又比如当别人向你分享一个网站时,只需要显示一个二维码即可,这样由手机扫码解决,又方便又不用记,准确性又好。二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一种编码方式。
2024-04-11 10:14:30
324
python抓取天气并分析 实例源码
2017-08-28
书《深度学习》
2017-03-13
国产8051模拟器
2016-09-10
tinyxml2配套源码
2016-06-27
selenium的浏览器驱动
2016-06-14
开源鸿蒙4.0不能进入桌面的补丁
2024-03-17
开源鸿蒙 4.0 RK3566开发板配置
2024-03-17
svm_hog_data.rar
2020-03-02
实现numpy的C++库扩展
2019-11-24
python web py入门配套源代码
2018-02-23
webpy演示例子1
2018-02-21
胶囊模型的代码
2018-02-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人