- 博客(47)
- 资源 (4)
- 收藏
- 关注
原创 30天自制操作系统——第二十四天增加命令行窗口
蜂鸣发声器目前制作的操作系统还不能发声呢,由于调用声卡的过程比较复杂,这里我们就先实现蜂鸣器发声好了。蜂鸣器发出的声音,是那种哔哔哔哔的,听起来有些奇怪。这里设置声音的频率随着时间以100Hz的速度降低,当声音频率降到20Hz以下或键盘按下任意键时结束。beepdown.cvoid HariMain(void){ int i, timer; timer = api_alloctimer(); api_inittimer(timer, 128); for (i = 20000000; i &g
2021-10-11 06:52:57
2052
3
原创 算法学院——第一章高考没达本,要选择去工地搬砖么?
昏暗的房间,桌边的电脑屏幕发出清冷的光,屏幕上是一则新出的消息,《今年XX省文科高考本科分数线560分》。我叫荀一航,2021届文科高考生。现在的我盯着电脑屏幕这则新出的消息发呆,如果没记错的话,我今年的高考分数是555分,离本科线差了5分。想起这个分数,现在真想555了……回想起自己高中三年,实在是荒谬。高一和老爸赌气,脑子一热,选了并不喜欢的文科。上学跟老师对着干,让我朝东偏要朝西。到周末回家就打游戏,临近高考那会为了上课睡觉方便,还特意带了个抱枕过去。班主任实在看不下去,火冒三丈地冲我说,太猖狂了
2021-10-05 16:29:03
339
1
原创 30天自制操作系统——第二十三天窗口操作
窗口及输入切换我们先来实现用键盘切换窗口,按下F11键,将最下面的窗口移动到最上面,这里F11按键的编码为0x57。bootpack.c节选:void HariMain(void){ (略) for (;;) { (略) if (fifo32_status(&fifo) == 0) { (略) } else { (略) if (256 <= i && i <= 511) { /* 键盘数据 */ (略) if (i
2021-10-02 14:19:03
672
原创 30天自制操作系统——第二十二天图形处理
画点点是各种图形的基础,要实现图形处理,就先从画点开始吧。创建窗口的程序之前写过了,忘记的话往前翻翻找一下。再给窗口来一个黑色背景,窗口名就叫“夜空中最亮的星”吧。画点API式样:画点API:EDX=11EBX=窗口句柄ESI=显示位置的x的坐标EDI=显示位置的y坐标EAX=色号a_nask.nas节选:_api_point: ; void api_point(int win, int x, int y, int col); PUSH EDI PUSH ESI PUSH
2021-09-27 00:13:49
2031
2
原创 30天自制操作系统——第二十一天用C语言编写应用程序
帮助发现bugCPU的异常处理功能,还能帮助我们发现bug,比如下面的例子:bug1.c:void api_putchar(int c);void api_end(void);void HariMain(void){ char a[100]; a[10] = 'A'; /* 这句没有问题 */ api_putchar(a[10]); a[102] = 'B'; /* 这句有问题 */ api_putchar(a[102]); a[123] = 'C'; /* 这句也有问题 *
2021-09-23 22:11:40
4082
10
原创 一文搞懂循环神经网络(RNN)
RNN与传统神经网络循环神经网络是专门处理序列数据的神经网络,传统的神经网络模型(左图),输入层(input layer)到隐藏层(hidden layer),隐藏层再到输出层(output layer),层与层之间是全连接的,但是隐藏层节点之间是无连接的。循环神经网络(右图),隐藏层节点之间是有连接的。RNN的基本结构其中,右图圆形的箭头表示隐藏层的自连接。在RNN中,每一层都共享参数U、V、W,降低了网络中需要学习的参数,提高学习效率。输入单元(input units)记为:隐藏单元
2021-09-21 01:42:42
5354
2
原创 30天自制操作系统——第二十天保护操作系统
在实现保护操作系统之前,我们先来实现两个功能。一个是使用API显示字符串,另一个是用C语言编写应用程序。使用API显示字符串显示字符串有两种方法,一种是显示一串字符,当遇到字符编码0时结束。另一种是先指定要显示的字符串的长度,然后进行显示。实现方式如下:console.c节选:void cons_putstr0(struct CONSOLE *cons, char *s){ for (; *s != 0; s++) { cons_putchar(cons, *s, 1); } retu
2021-09-18 07:40:34
1773
2
原创 30天自制操作系统——第十九天系统调用(API)
系统调用API(application program interface)即应用系统对操作系统功能的调用,也可以称为系统调用(system call)。今天我们就来实现系统调用的功能,我们先来思考一下WIN10系统是如何实现系统调用的呢?下图是简化版的Windows系统架构图:Windows计算机中处理器有两种模式,分别为用户模式(用户态、目态)和内核模式(核心态、内核态、管态、系统模式、管理模式)。在用户模式下,处理器运行用户进程,不能使用特权指令,其中特权指令是指具有特殊权限的指令,一般
2021-09-16 20:06:59
1032
3
原创 机器学习数学基础之统计篇——概率论(python版)
本文运用相关案例和python程序,帮助大家理解概率论中概率、随机变量、概率分布、概率密度函数、中心极限定理等概念。另外,喜欢本专栏文章的记得关注我哈~在大学里,我们都学过概率论相关的课程。那么现在来回答一个问题,概率是什么?要回答这个问题有一定难度,概率的概念很抽象,要解释它需要借助一些例子。比如抛硬币问题,正面朝上的概率是1/2。三扇门问题,重选为正确选项的概率为2/3。概率我们来具体实现这两个例子——1.抛硬币问题我们先来做一个熟悉的扔硬币的试验,我们记录下正面朝上和负面朝上的次数
2021-09-12 17:30:54
3389
2
原创 深度学习——时间序列模型评价指标总结
大Y老师:小X,你做的这个时间序列模型用什么指标评价啊?小X 直接把这篇甩给老师:老师您看哪个指标顺眼,就选哪个指标~最近在实现基于深度学习的时间序列模型时,需要对模型进行评价,总结了一些常用的和不常用的评价指标,还有相关概念的辨析。上面是玩笑话,在对模型进行评价时,要根据实际的数据特征和指标特性进行选择。和方差SSE(the sum of squares due to error),是观测值(observed values)与预测值(predicted values)的误差的平方和,公式为:
2021-09-08 07:56:01
11825
原创 机器学习数学基础之线代篇——线性代数python手册(建议收藏)
提到线性代数,又不得不吐槽国内教材了,学起来真的是实力劝退。有多少跟着国内教材学完线性代数课程后,知道线性代数是什么,它到底是干什么的?事实上如果你后面想做科研、想研究机器学习、深度学习,你会发现处处是线性代数。这么抽象又重要的课程,一本书里基本看不到几张图,就好比是没有注释的代码,大概以为我的脑子就是记公式的机器吧…如果你还未开始学习线性代数,那么强烈建议你把学校发的紫色教材放在一边,找几本国外的线性代数教材看看。然后在B站里搜一下Gilbert Strang老爷子的线性代数视频(麻省理工公开课,80
2021-09-05 10:11:12
3305
12
原创 机器学习数学基础之高数篇——积分源起(python版)
大学的高数课本往往将积分放在微分后面,这种排序个人觉得不是很合理。不仅积分的出现要比微分早的多(早了大约1300年),而且初中、高中学过的数学知识里已经包含了积分的概念,理解积分要比理解微分要更容易的多。数学是一门注重思考的学科,我们应该将思考应用于解决实际问题,用已知的知识去推导未知的面积、体积,才是学习积分的乐趣和意义所在。而大学课程里上来就硬生生的塞给我们一堆公式,告诉我们这些地方别管这么多,就这么用的。虽说这种做法效率是挺高,但是却大大泯灭了学习数学的兴趣。吐槽就到这了,我们先来思考一下为
2021-09-01 07:32:15
672
4
原创 机器学习数学基础之高数篇——简单的泰勒公式(python版)
不少同学一提到泰勒公式,脑海里立马浮现高大上的定义和长长的公式,令人望而生畏。实际上,泰勒公式没有那么可怕,它是用简单的多项式来逼近一个光滑的函数,从而近似替代不熟悉的函数。由于泰勒公式具有将复杂函数近似成多个幂函数叠加形式的性质,可以用它进行比较、求极限、求导、解微分方程等。我们先来看一下泰勒公式的发明者,布鲁克·泰勒——布鲁克·泰勒(Brook Taylor,1685-1732),英国数学家,牛顿学派最优秀的代表人物之一,他于1712年的一封信里首次叙述了泰勒公式。再来看一下高数书上对泰勒公式
2021-08-30 07:21:12
3701
4
原创 机器学习数学基础之高数篇——函数极限和导数(python版)
不知道大家有没有类似的经历,斗志满满地翻开厚厚的机器学习,很快被一个个公式炸蒙了。想要学习机器学习算法,却很难看的懂里面的数学公式,实际应用只会调用库里的函数,无法优化算法。学好机器学习,没有数学知识是不行的。数学知识的积累是一个漫长的过程,罗马也不是一夜建成的。如果想要入门机器学习,数学基础比较薄弱,想打牢相关数学基础,可以跟关注笔者,一起学习(数学大佬也可以来扫一眼python代码)~接下来我们以高数(同济第七版)课后习题为例,使用python语言来求解函数和导数的习题。这样大家做课后练习的
2021-08-27 15:00:25
2386
5
原创 30天自制操作系统——第十八天运行应用程序
读取文件内容我们在运行应用程序之前,先来实现读取文件内容的功能吧。在windows的命令行窗口中,也可以实现读取文件内容的功能,当我们输入“type 文件名”时,就会显示文件的内容。定义一个文件信息结构:struct FILEINFO{ unsigned char name[8],ext[3],type; char reserve[10]; unsigned short time,date,clustno; unsigned int size;}其中clustno变量,代表文件从哪个
2021-08-26 06:13:17
2054
11
原创 30天自制操作系统——第十七天制作命令行窗口
今天的任务是制作命令行窗口,那么命令行窗口应该是什么样呢?在Windows系统里我们都使用过命令行窗口,它首先是黑底的,可以在里面输入各种字符、可以对输入的命令进行响应…由于命令行窗口的制作用到的都是之前的知识点,难度并不大。由于修改的代码量较大,篇幅有限,就不把代码粘贴上来了,有兴趣的同学可以自行下载阅读。这里主要记录一下制作命令窗口的关键步骤(本节没有什么新的知识点,可以直接跳过):一、绘制命令行窗口我们先在HariMain函数中画出一个命令行窗口的样子,命令行窗口一般就是黑底白字,可以对输入
2021-08-24 20:39:30
5034
33
原创 30天自制操作系统——第十六天实现多任务(二)
任务休眠上一篇我们实现的多任务,是为每个任务分配相同的时间。实际情况可能是A任务一直闲着没事干,B任务就一直拼命干活,这种分配显然是不合理的。那么如何避免这种浪费呢?我们可以把这样闲着没事干的任务,从tasks里删除,这种做法在多任务里叫作“休眠”(sleep)。当FIFO有数据过来时,我们再将A任务唤醒。(这里大家可以类比线程状态及状态切换,思路是相同的。)首先来创建task_sleep,mtask.c节选:void task_sleep(struct TASK *task){ int i;
2021-08-23 05:10:19
2947
28
原创 30天自制操作系统——第十五天实现多任务(一)
每日一句,完成比完美更重要。今天的任务是实现多任务,内容较多,现在就开始吧——任务切换多任务(multitask)也可以称作多进程,在windows操作系统中,就是多个应用程序同时运行的状态。这里来复习一下进程和线程的概念:进程:进程是执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单位。可以将运行在内存中的exe文件理解为进程,进程是受操作系统管理的基本运行单元。线程:线程可以理解成在进程中独立运行的子任务。比如QQ.exe运行时,就有很多子任务同时运行。每一项任务可以理解成“线程
2021-08-22 17:45:41
983
3
原创 30天自制操作系统——第十四天高分辨率显示切换与键盘输入
写在前面最近很喜欢下面这段话——是的,很大程度上程序员在创造和改变这个时代。上面一段话是《黑盒与画家》里的序章,不少书的序也很是精彩,错过了实在可惜呢。很多同学会觉得学操作系统、学汇编,实际工作没有用。且不说工作中还真的有可能会用到,更重要的是,我们现在正是处于一个程序的时代。学习和理解这个时代的内容,不能说是没有用,而这个时代的任何人都应该去理解计算机。后面计划自制一个CPU,不过现在元器件还没有找齐,等我找齐了再开始吧(希望能找齐),感兴趣的小伙伴可以后期继续关注。废话不多说了,开始今天的内容
2021-08-21 12:29:04
766
2
原创 30天自制操作系统——第十三天添加定时器(二)
测试性能由于后续开发中要经常用到定时器,需要不断对定时器进行改善,提高性能。然而每次一番操作,性能有没有提高,提高了多少,凭我们直观的感受可不好衡量,因此我们需要一个具体的方法来测试性能。这里我们测试性能的方法很简单,我们在HariMain函数进行修改。先将count置0,不显示任何计数。在for循环中全力执行“count++",当到了10秒后超时,再对这个count进行显示。这里需要注意的是,由于每次电脑初始化花费的时间差别较大(原因很多,这里就不赘述了),我们在3秒后把count复位为0一次,这样测
2021-08-20 07:34:37
965
6
原创 30天自制操作系统——第十二天添加定时器(一)
定时器定时器对操作系统而言十分重要,它会每隔一段时间发送一个中断信号给CPU。想要在电脑里管理定时器,需要对PIT进行设定。PIT(Programmable Interval Timer),可编程的间隔定时器,可以通过设定PIT,让定时器每隔多少秒就产生一次中断。PIT连接着IRQ(interrupt request)0 ,所以设定了PIT就可以设定IRQ0的中断间隔。将中断周期设置为11932,中断频率即为100Hz,也就是1秒钟发生100次中断,而11932换算成十六进制数就是0x2e9c。设置
2021-08-19 06:11:59
2440
18
原创 30天自制操作系统——第十一天制作窗口并消除闪烁
显示窗口制作一下窗口,思路与制作背景和鼠标一样,需要先准备一张图层,然后在图层缓冲区内描绘一个类似窗口的图。make_window8函数绘制窗口:void make_window8(unsigned char *buf, int xsize, int ysize, char *title){ static char closebtn[14][16] = { "OOOOOOOOOOOOOOO@", "OQQQQQQQQQQQQQ$@", "OQQQQQQQQQQQQQ$@", "OQ
2021-08-18 07:41:04
315
原创 30天自制操作系统——第十天叠加处理
向下舍入及向上舍入向下舍入:例如把135元以10元为单位进行向上舍入,就是130元;把675元以100元为单位进行向上舍入,就是600元。也可以理解为,向下舍入就是把最后几位数字强制变为0。向上舍入:例如把135元以10元为单位进行向上舍入,就是140元;把675元以100元为单位进行向上舍入,就是700元。向下舍入和向上舍入可使用与运算,比如把变量i中的数字以0x1000为单位进行向下舍入的式子如下:i = i &0xffff000;以0x1000为单位0x12345678进行向上舍入
2021-08-17 02:21:03
309
原创 30天自制操作系统——第九天内存管理
写的越来越像流水账,背离了初衷,后面只记录一下关键步骤,还有相关概念。内存容量检查这里不使用BIOS函数,而是自己去检查。思路是先关闭CPU的高速缓存(cache)功能,再进行内存检查。内存检查时,要往内存里随便写入一个值,然后马上读取,检查写入的值与读取的值是否相等。高速缓存:每次访问内存时,都将所访问的地址和内容都放到高速缓存里,这样会大大提高CPU的性能,这种性能的提升可能是数倍以上的。聪明的编译器在对内存进行检查时,发现了问题。编译器对用C语言编写的看似重复性的代码进行了优化处理,将该段程
2021-08-15 23:16:05
363
原创 30天自制操作系统——第八天鼠标控制与32位模式切换
今天的任务是让鼠标真正移动起来,之前的路走的真是艰辛呀。终于到走到这里啦,下面正式开始了——鼠标解读(harib05a)昨天我们已经能从鼠标取得数据了,接着要读取这些数据,看看鼠标是怎么移动的,在根据鼠标的动作,让鼠标指针动起来。先对bootpack.c的HariMain函数做一些修改:unsigned char mouse_dbuf[3], mouse_phase;enable_mouse();mouse_phase = 0; /* 进入到等待鼠标的0xfa的状态 */for (;;)
2021-08-14 23:02:39
411
原创 30天自制操作系统——第七天FIFO缓冲区与鼠标控制
昨天鼠标不动的问题,是因为相关的设定还没到位。鼠标和键盘的情况很类似,在解决鼠标问题之前,先拿键盘练练手。获取按键编码(hiarib04a)现在在键盘上按一个键,就在屏幕上显示出信息。我们把程序修改成,键盘按下一个键后不直接结束,可以接着在屏幕上显示按键的值,其他就先不做了。需要修改的是int.c中的inthandler21函数:#define PORT_KEYDAT 0x0060void inthandler21(int *esp){ struct BOOTINFO *binfo = (
2021-08-14 08:19:21
563
原创 30天自制操作系统——第六天尝试让鼠标指针动起来
昨天制作了鼠标,但是没让它动起来,今天我们来找找让鼠标动起来的方法。在这之前先做一些准备活动吧——分割源文件(harib03a)现在的bootpack.c文件已经有300行的长度了,因此我们决定把它分割成几个部分。将分割后的 .c文件,先生成 .obj文件(目标文件),再将这些目标文件全部link上,生成bootpack.bim。对应的Makefile也需要修改,修改完毕我们来make run一下,画面没有什么变化——整理Makefile文件(harib03b)C语言的程序是变短了,现在Ma
2021-08-13 00:01:05
694
2
原创 30天自制操作系统——第五天显示文字及开始制作鼠标指针
昨天已经给操作系统加了一个大大的进度条,让我们来继续制作的操作系统吧!今天主要任务包括使用结构体、文字显示、开始鼠标移动。使用结构体接收启动信息(harib02b)上一篇在bootpack.c里,是将0xa0000、320、200这些数字直接写入程序。按照正常写程序的思路 ,这些数据应该作为初始化变量,在asmhead.nas先前保存下来的值中取。将这些变量保存到结构体中,结构体的内容如果忘记了,可以翻阅一下大学的课本,这里就不做说明啦——bootpack.c节选:struct BOOTIN
2021-08-12 06:14:13
864
1
原创 30天自制操作系统——第四天使用C语言制作操作系统进度条
昨天已经让画面显示黑屏了,但是黑屏太没意思,今天来让画面画点东西吧。今天的任务还是比较有趣的,主要包括内存写入、画面显示条纹图案、设定色号、绘制矩形,最后制作一个进度条。每个大标题下的代码,都在文末的资源里,可自行下载实验。内存写入(harib01a)想要在画面上画东西,只要往VRAM里写点东西就可以了。那什么是VRAM呢?上一篇的最后已经用到了VRAM,不过没有做详细的讲解。VRAM指的是显卡内存(video RAM),就是可以用来显示画面的内存。这一块内存可以像内存一样存储数据,它的各个地
2021-08-10 20:26:19
911
1
原创 30天自制操作系统——第三天画面显示黑屏和着手使用C语言开发
今天的主要任务是让画面显示黑屏,嘿嘿。内容比较多,包括制作能装载程序的IPL,读取软盘内容,画面显示黑屏,开始运行C语言编写的程序。由于我们在同一个文件上做了多次修改,因此今天的资源分了多个文件夹,里面用到的文件括号里的内容对应文末资源里的文件夹名。事不宜迟,那么现在就开始吧——制作IPL上一篇我们知道,磁盘最初的512字节是启动区,现在我们要装载下一个512字节的内容。我们在上一版ipl.nas中添加了如下代码,由于该部分内容后面需要经过多次修改,这里给每次修改添加了版本,ipl.nas(ve
2021-08-10 06:07:30
1263
2
原创 30天自制操作系统——第二天汇编语言学习和Makefile入门
今天的任务是汇编语言和寄存器学习、制作启动区、Makefile入门里面用到的文件,都在文末的链接里。下面是采用汇编语言编写的helloos.nas编写,是不是比前一篇好读多了:; hello-os; TAB=4 ORG 0x7c00 ; 指明程序的装载地址; 以下这段是标准FAT12格式软盘专用的代码 JMP entry DB 0x90 DB "HELLOIPL" ; 启动区的名称可以是任意的字符串(8个字节) DW 512 ; 每个扇区(sect
2021-08-08 19:27:55
1440
2
原创 30天自制操作系统——第一天制作一个Hello word操作系统
入手一本《30天自制操作系统》,内容诙谐有趣,很适合对操作系统一窍不通的新手。据作者所言,这本书的最终目标是从零开始编写一个五脏俱全的图形操作系统,不用什么基础,而且只需30天!!没有看错,只需30天,看着真的心动了。编写一个操作系统应该是很多程序员的梦想吧,可能很多人想都不敢想,觉得太难了。但是作者却说这是一件很简单的事,那么挑战一次也未尝不可吧。那么就正式开始第一天——顺便一提,文中用到的软件、文件都在文章最后的网盘连接里,可以直接下载。一、制作软盘映像文件helloos.img首先要用到
2021-08-07 10:32:17
5946
8
原创 并发编程基础——数据不一致问题的三种解决方法
数据不一致问题引入在串行化的程序中,不存在资源共享,也就不存在线程安全的问题。但由于CPU核数的增加,依旧使用串行化的任务执行大大浪费了CPU的计算能力。在企业系统中,为了追求更高的系统吞吐量,采用并行化的任务执行,充分利用CPU的资源。但是并发或并行的程序也带来了共享资源的安全隐患。其中常见的安全问题之一便是数据不一致问题。数据不一致问题案例:public class Test { public static void main(String[] args) { Ticke
2021-08-03 15:04:28
3283
原创 多线程基础——线程概念、线程状态、线程操作详解
多线程基础——线程概念、线程状态、线程操作详解程序、进程、线程区别概念:程序:程序是指令和数据的有序集合,是一个静态的概念。进程:进程是执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单位。可以将运行在内存中的exe文件理解为进程,进程是受操作系统管理的基本运行单元。线程:线程可以理解成在进程中独立运行的子任务。比如QQ.exe运行时,就有很多子任务同时运行。每一项任务可以理解成“线程”在工作,这样做的优势是最大限度地利用CPU的空闲时间来处理其他任务。总结:在操作系统中运行的程序
2021-08-01 00:12:23
251
原创 使用IDEA快速创建一个springboot工程
环境准备1.装配JDK2.装配Maven3.装配IDEA1.打开IDEA,点击 File->New->Project,创建一个新项目。在左侧菜单栏点击Spring Initializr,这里使用https://start.spring.io提供的在线模板,需要保证网络通畅。也可以选择下面的Custom从指定的链接加载模板,这里就不演示了。设置Project SDK,选择JDK的主目录(eg:C:\Program Files\Java\jdk1.8.0_144)。2.填
2021-07-31 16:29:20
149
原创 SpringBoot项目中使用@AutoWire注入失败问题解决
SpringBoot项目中经常使用到@AutoWire注解实现自动注入,但是经常会出现自动注入失败的情况,这里汇总一下注入失败的情况,便于快速定位错误。先上测试项目内容——项目目录结构:.yml文件:test: name: rose age: 18#端口号修改为8081server: port: 8081User类(使用lombok工具类,省去了get、set方法):@Component@ConfigurationProperties(prefi
2021-07-30 10:18:41
2479
原创 SpringBoot项目读取Yml中的配置的几种方法
.yml文件写入如下配置信息test: path1: xxxx path2: yyyy方法一、通过@ConfigurationProperties注解TestConfig类:@Component@ConfigurationProperties(prefix="test")@Getter@Setterpublic class TestConfig { private String path1; private String path2;} 测试:...
2021-07-29 14:38:48
340
原创 Git原理及常用命令
简而言之,Git是一种版本控制的工具。当然,版本控制工具不止Git一种,主流的版本控制器有:Git 、SVN(Subversion)、CVS(Concurrent Versions System)、VSS(Micorosoft Visual SourceSafe)、TFS(Team Foundation Server)、Visual Studio Online。Git的工作原理Git有四个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(
2021-07-27 14:19:24
231
原创 eclipse下配置tomcat以及tomcat服务页面出现404错误
index.html的位置不能放在WEB-INF文件夹下面,应该与WEB-INF同级。
2018-04-22 18:02:55
202
原创 无法定位程序输入点_except1于动态链接库MSBCR120.dll上错误的解决方案
新装的系统,开机的时候总是报这个错误。试了网上说的替换MSBCR120.dll文件的方法,替换掉system32和syswow64里面MSBCR120.dll,都没什么用。之后看到了原来是没有安装对应的VC++运行库,所以需要下载并安装微软VC++2013版运行库 (英文全称:Microsoft Visual C++2013 Redistributable Package)。我的电脑是64位的,所...
2018-04-05 21:53:32
23443
Spring源码导入Eclipse缺失Jar包spring-asm-repack-5.0.4+spring-cglib-repack-3.1
2017-12-04
arcgis server 10.1许可文件
2013-08-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人