先 cd 到要用到路由的项目里面然后
npm install react-router-dom --save 安装这个 然后我的 link 文件里面就是我要跳转的配置
然后就是在 tabe.jsx 页面引入 herd_list.jsx和new_list.jsx和跳转路由模块 import { HashRouter as Router,Switch,Route,Link } from 'react-router-dom’
下面就是路由的写法啦,
<Link>这里面是你点击的标题</Link> <Router> <h2> <Link to="/herd_list">新闻</Link> </h2> <h2> <Link to="/new_list">新闻详情</Link> </h2> <Route path="/herd_list" component={Herd_list}></Route> <Route path="/new_list" component={New_list}></Route> 这里面是跳转的页面 </Router>
实验一 创建数据库和表
一、目的和要求`
熟悉SQL Server 环境。掌握企业管理器的基本使用方法掌握查询分析器的基本使用方法。了解表的结构特点,了解SQL Server的基本数据类型。学会在企业管理器中创建数据库和表。学会使用T-SQL 语句创建数据库和表。掌握SQLServer中数据完整性的实现方法 二、实验内容
1.创建学生管理数据库,数据库名为XSGL,包含学院信息、学生信息、课程信息和学生选课信息,并插入原始数据。数据库XSGL包含4个表即学院信息表dept、学生信息表student、课程信息表course及学生选课表sc。
2.各表的结构分别如表1, 2, 3, 4所示。
表1 学院信息表:dept
列名
数据类型
长度
是否允许NULL
说明
DNO
Char
4
×
学院编号,唯一性
DNAME
Char
30
×
学院名
DEAN
Char
20
√
院长姓名
表2 学生信息表:student
列名
数据类型
长度
是否允许NULL
说明
SNO
Char
8
×
学号,唯一性,前4位表示入学年份,第5位表示学院编号,第6位表示专业编号
SNAME
Char
20
×
姓名
AGE
smallint
2
√
年龄
SEX
Char
2
√
性别,只能是男'或'女
DNO
Char
4
×
学院编号
BIRTHDAY
解决方法:修改打开的浏览器 看到有人提供的解决方案为降低jupyter的版本,试了一下,不行,用下面的方法可以:
在 C:\Users\用户名.jupyter\ 路径下找到 jupyter_notebook_config.py
若路径下无此文件,则在命令行通过以下命令生成:
jupyter notebook --generate-config 右键点击此文件通过IDLE/记事本打开,然后查找,browser,找到如下代码:
## Specify what command to use to invoke a web browser when opening the notebook. # If not specified, the default browser will be determined by the `webbrowser` # standard library module, which allows setting of the BROWSER environment # variable to override it. #c.NotebookApp.browser = u'' 在此代码块后添加如下代码,将chrome设置为jupyter notebook默认浏览器:
import webbrowser webbrowser.register('chrome', None, webbrowser.GenericBrowser(u'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe')) c.NotebookApp.browser = 'chrome' 上面代码中的路径要改为自己chrome.
一、单选题(每题 2 分,共20分)
1.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素
B.都是先进后出 C.都是先进先出
D.没有共同点
2.用链接方式存储的队列,在进行插入运算时( )
A. 仅修改头指针 B. 头、尾指针都要修改
C. 仅修改尾指针 D.头、尾指针可能都要修改
3.以下数据结构中哪一个是非线性结构?( )
A. 队列 B. 栈 C. 线性表 D. 二叉树
4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。
A.688 B.678 C.692 D.696
5.树最适合用来表示( )。
A.有序数据元素 B.无序数据元素
C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据
6.二叉树的第k层的结点数最多为( ).
A.2k-1 B.2K+1 C.2K-1 D. 2k-1
7. 若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( )
A. 1,2,3 B. 9,5,2,3
C. 9,5,3 D. 9,4,2,3
8. 对n个记录的文件进行快速排序,所需要的辅助存储空间大致为
A. O(1) B. O(n) C. O(1og2n) D. O(n2)
9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有( )个,
4.满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。( 1)
5.设一棵二叉树的先序序列和后序序列,则能够唯一确定出该二叉树的形状。( 0)
6.层次遍历初始堆可以得到一个有序的序列。(0)
2.当向二叉排序树中插入一个结点,则该结点一定成为叶子结点。( 1)
8. 不论线性表采用顺序存储结构还是链式存储结构,删除值为X的结点的时间复杂度均为O(n)。( 1 )
14.设二叉排序树上有n个结点,则在二叉排序树上查找结点的平均时间复杂度为( )。
(A)O(n) (B) O(n2) (C) O(nlog2n) (D) O(1og2n)
10.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过( )。
解:n个结点的的判定树的深度与完全二叉树深度同 log2n+1
(A)log2n+1 (B) log2n-1 (C) log2n (D) log2(n+1)
9. 设有n个关键字具有相同的Hash函数值,则用线性探测法把这n个关键字映射到HASH表中需要做( )次线性探测。
(A)n2 (B) n(n+1) (C) n(n+1)/2 (D) n(n-1)/2
11.设一组初始记录关键字的长度为8,则最多经过( )趟插入排序可以得到有序序列。
(A)6 (B) 7 (C) 8 (D) 9
1. 设需要对5个不同的记录关键字进行排序,则至少需要比较___ _ 4 __________次,至多需要比较_____ _10_______次。
n-1
1+2+3+。。。+n-1
解:首先随便选择一个数为基数,再选择一个数和它比较就是1次,选择第三个数最多比较2次就可以确定它的位置,选择第四个数最多比较3次也就能够确定它的位置,最后一个数最多 比较4次同样可以确定它的位置了。1+2+3+4=10.
5. 设一棵m叉树脂的结点数为n,用多重链表表示其存储结构,则该树中有___ n(m-1)+1 ____个空指针域。
8. 设无向图G中有n个顶点e条边,则用邻接矩阵作为图的存储结构进行深度优先或广度优先遍历时的时间复杂度为_ O(n2) ______;用邻接表作为图的存储结构进行深度优先或广度优先遍历的时间复杂度为__ O(n+e) _______。
1.
x = [x(1); x(2); ...; x(n)];
1 ./ x才是 [1/x(1); 1/x(2); ...; 1/x(n)]. 不是 1/x !!!
windows下配置flask和nginx(vscode) 开发背景 近期在windows环境下捣鼓flask、nginx等环境的配置,希望能够自己建一个前后端开发的网站,网上搜集到的资料大多是linux环境下的配置,并且清一色地都是用pycharm作为开发工具
但是作为一名准程序员,vscode可谓是全能的开发工具,既能够开发c/cpp的程序,又可以写html、css、JavaScript的代码,主流的java、python语言也支持的很好,因此在这里我便使用vscode作为开发工具,顺带解释一些在cmd命令行和vscode的powershell命令行执行命令的不同,也算是记录了配置过程中的一些小坑,为众多vscode重度依赖症的童鞋提供一些经验
虚拟环境的创建(conda) 相信网上的大多数帖子都会告诉你:python的虚拟环境使用virtualenv来创建管理。但是,只要是稍微对python有那么一点开发经历(尤其是大数据、机器学习)的童鞋都会知道,有那么一个python科学计算、环境管理极为出色的软件叫做anaconda,如果你的电脑上已经有了anaconda,那么conda就是一个很好的虚拟环境管理器,不必去下载所谓的virtualenv,当然如果你没有anaconda,那赶快去下一个!
下载地址:https://www.anaconda.com/distribution/
如果你是小白 当然,如果你只是单纯的小小白,那么还是用virtualenv来创建管理吧:
//小白使用。。。 pip install --upgrade virtualenv mkdir HelloWorld cd HelloWorld virtualenv -p python3.7 .env 如果你已经下好了anaconda 创建环境:conda create -n music python=3.7
其中music是我的环境名,python=3.7指定了环境使用的python版本,这两项你可以修改替换
这里提供conda的一些常用命令:
conda update -n base conda #update最新版本的conda conda create -n xxxx python=3.7 #创建python3.7的xxxx虚拟环境 conda activate xxxx #开启xxxx环境 conda deactivate #关闭环境 conda env list #显示所有的虚拟环境 conda info --envs #显示所有的虚拟环境 conda remove -n xxxx --all #删除xxxx虚拟环境 #Conda是没有重命名环境的功能的, 要实现这个基本需求, 只能通过愚蠢的克隆-删除的过程。 #切记不要直接mv移动环境的文件夹来重命名, 会导致一系列无法想象的错误的发生! conda create --name newname --clone oldname #克隆环境 conda remove --name oldname --all #彻底删除旧环境 创建好环境以后,我们先进入这个环境:conda activate music
//简单思路:反求出倒数第m个数是正数第几个。
//再从头遍历到倒数第m个数把它找出来 ElementType Find( List L, int m ) { List p; int i,n=0; p=L->Next;//第一个节点 while(p) { n++;//遍历求表长 p=p->Next; } if(m>n) return ERROR; List DB=L; for(i=1;i<=n-m+1;i++) { DB=DB->Next; } return DB->Data; return L; }//yh
一、引言 首先说明一下,本文的安装教程仅是针对个人的操作经验所写的。可能有些同学安装的时候觉得跟他的不一样,那可能是由于版本不一样所导致的。另外本次分享是基于已经安装了java及配置好了环境。
本机的配置环境如下:
Hadoop(3.1.1)
Ubuntu Linux(64位系统)
二、安装ssh服务 ubuntu中默认是没有安装ssh server的,只有 ssh client,可以使用如下命令安装:
sudo apt-get install ssh openssh-server
然后设置ssh免密码登陆,执行如下命令:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys #验证是否成功 输入 ssh localhost #如果可以不需要密码登录则表示成功,否则就是失败,需要去查找原因,如果成功后 输入exit退出 成功之后截图如下:
三、安装Hadoop 1.下载Hadoop安装包
可以到如下网址下载:http://apache.stu.edu.tw/hadoop/common/hadoop-3.1.1/
2.解压
使用如下命令解压缩Hadoop安装包:
tar -zxvf hadoop-3.1.1.tar.gz
解压完成之后出现Hadoop-3.1.1的文件下如下:
3.配置Hadoop中相应的文件
我使用的是Hadoop的伪分布式,因此需要配置的文件如下,hadoop-env.sh,core-site.xml,mapred-site.xml.template,hdfs-site.xml,所有的文件均位于hadoop3.1.1/etc/hadoop下面,具体需要的配置如下:
(1)core-site.xml 配置如下:
(2)mapred-site.xml.template配置如下:
(3)hdfs-site.xml配置如下:
注:如果运行Hadoop的时候发现找不到jdk,可以先使用echo $JAVA_HOME查看java安装路径,然后直接将jdk的路径放置在hadoop.env.sh里面。具体如下:
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
四、运行Hadoop 1.首先你需要初始化HDFS系统
在hadop3.1.1目录下使用如下命令:
bin/hdfs namenode -format
成功之后截图如下:
表示已经初始化完成。
2.开启NameNode和DataNode守护进程
在hadop3.1.1目录下使用如下命令:
sbin/start-dfs.sh
成功之后截图如下:
3.查看进程信息
在hadop3.1.1目录下使用如下命令:
jps
如果STL容器中的元素是Eigen库数据结构,例如这里定义一个vector容器,元素是Matrix4d ,如下所示:
vector<Eigen::Matrix4d> 这个错误也是和上述一样的提示,编译不会出错,只有在运行的时候出错。解决的方法很简单,定义改成下面的方式:
vector<Eigen::Matrix4d,Eigen::aligned_allocator<Eigen::Matrix4d>>; 其实上述的这段代码才是标准的定义容器方法,只是我们一般情况下定义容器的元素都是C++中的类型,所以可以省略,这是因为在C++11标准中,aligned_allocator管理C++中的各种数据类型的内存方法是一样的,可以不需要着重写出来。但是在Eigen管理内存和C++11中的方法是不一样的,所以需要单独强调元素的内存分配和管理。
https://blog.csdn.net/skywalker_123/article/details/90201268
用 docker ps 找到你要进入的container的 id,然后用 docker exec 执行一个 bash
如:docker exec -it 40c330755e61 /bin/bash
这样你就进到这个container 里面了,这个bash退出也不会影响之前 docker run 启动的 bash
如果需要其他参数可以参考docker 手册 man docker-exec ,man docker-run 等等
微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,钟却是只在后半天敲1~12下。例如在23:00敲钟,就是“当当当当当当当当当当当”,而到了23:01就会是“当当当当当当当当当当当当”。在午夜00:00到中午12:00期间(端点时间包括在内),笨钟是不敲的。
下面就请你写个程序,根据当前时间替大笨钟敲钟。
输入格式: 输入第一行按照hh:mm的格式给出当前时间。其中hh是小时,在00到23之间;mm是分钟,在00到59之间。
输出格式: 根据当前时间替大笨钟敲钟,即在一行中输出相应数量个Dang。如果不是敲钟期,则输出:
Only hh:mm. Too early to Dang. 其中hh:mm是输入的时间。
输入样例1: 19:05 输出样例1: DangDangDangDangDangDangDangDang 输入样例2: 07:05 输出样例2: Only 07:05. Too early to Dang. #include <stdio.h> int main() { int h,m,i,sum; char *s="Dang"; scanf("%d:%d",&h,&m); sum=(h-12)+(m==0?0:1); if(sum>0) { for(i=0;i<sum;i++)//区间端点不dang printf("%s",s); } else{ printf("Only %d",h/10); printf("%d",h%10); printf(":%d",m/10); printf("%d",m%10); printf(". Too early to Dang."); } return 0; }
**
IDEA 2019.3 中文字体显示有粗有细的解决方法 **
问题
解决办法
试了很多种方法 我的目前只有这一个有效。
Visual Leak Detector
介绍 (翻译仅供参考)
Visual C++ provides built-in memory leak detection, but its capabilities are minimal at best. This memory leak detector was created as a free alternative to the built-in memory leak detector provided with Visual C++. Here are some of Visual Leak Detector’s features, none of which exist in the built-in detector:
Visual C++提供了内置内存泄漏检测,但其性能很低。这个内存泄漏检测器被创建为用Visual C++提供的内置内存泄漏检测器的免费替代。这里有一些内置检测器中没有的Visual Leak Detector的特点:
Provides a complete stack trace for each leaked block, including source file and line number information when available.
今天使用nodejs创建server的时候遇到了个小问题,就是readFlie(console.log(err)显示的是open错误,是不是说读写其实都是通过open实现的?)时,教程里的案例都是将index.html跟server.js放在一个目录下, 那样客户端请求的pathname直接substr(1)就可以直接当做readFlie的path了,但是出于之前学html的习惯,我把index单独放在外面根目录下,js文件都放在js文件夹里,这样就有一个问题,有没有办法返回上一级的目录?例如cmd里的cd …?
遗憾的是,查阅了nodejs官方文档,也只有相对路径和绝对路径,只能绝对路径返回上一级目录了,我觉得这样也太过麻烦了吧。。
代码就一行
fs.readFlie('/test/' + pathname.substr(1),function(err,data){})
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中
找到第一个只出现一次的字符,并返回它的位置.
如果没有则返回 -1 . (需要区分大小写)
题目解析 这道题使用双指针和集合.
第一个指针指向第一次出现的字符, 第二个指针往后顺次遍历, 如果没有相同的, 则说明第一个指针为只出现一次的字符, 如果出现过, 那么记录在集合当中, 以便下一次可以做到时间优化(不需要再遍历).
代码 import java.util.*; public class Solution { public int FirstNotRepeatingChar(String str) { HashSet<Character> set = new HashSet<>(); char[] ch = str.toCharArray(); for (int i = 0; i < ch.length; i++) { // 如果之前记录过, 直接跳过 if (set.contains(ch[i])) continue; for (int j = i + 1; j < ch.length; j++) { if (ch[i] == ch[j]) { set.
1. 引言 RNN模型一般设定固定的文本长度(text sequence length,可理解为文本序列在时间维度上的步数 time step),以保证网络输出层数据维度的一致性。但在训练和测试时,难以保证输入文本长度的一致性,因此常常需要截断操作(即将超过预设长度的文本截断)和pad操作(即对不足预设长度的文本进行补0填充)。pad操作需满足:
(1)pad后,不足预设长度的文本用相同特征维度的0填充;
(2)pad的部分不参与forward和backward计算。
Pytorch中,在文本数据的transfrom以及RNN网络的输入阶段,均充分考虑了pad操作。其主要体现在:
(1)RNN、LSTM和GRU等网络的输入数据均可为PackedSequence类型数据;
(2)可通过pad_sequence、pack_sequence、pack_padded_sequence和pad_packed_sequence等操作,实现pad和pack操作。
2. pack和pad操作 那么,究竟pad和pack操作对原始数据会有何影响?下面通过一个简单的示例来体现。
from torch.nn.utils.rnn import pack_sequence, pad_sequence,pad_packed_sequence, pack_padded_sequence, text1 = torch.tensor([1,2,3,4]) # 可视为有4个文字的样本 text2 = torch.tensor([5,6,7]) # 可视为有3个文字的样本 text3 = torch.tensor([8,9]) # 可视为有2个文字的样本 sequences = [text1, text2, text3] # 三个文本序列 2.1 pack操作 [Input] pack_sequence(sequences) [Output] PackedSequence(data=tensor([1, 5, 8, 2, 6, 9, 3, 7, 4]), batch_sizes=tensor([3, 3, 2, 1])) pack操作将原来的二维数据(batch*sequence)进行了压缩,但其排列是按照列(即sequence的顺序)进行排列,每个时间步一次性输出batch上的所有样本。
pack后的返回值包括两数据。一类为data,即压缩后的数据;而另一类batch_sizes表示每个时间步,batch中包含的样本量。
拿本例来说,因为总共有4个时间步(即文本序列长度为4),所以batch_sizes的长度为4。在第1、2个时间内步,所有样本均有编码,所有对应值为3,而在第三个时间步,只有前两个样本有编码,所以对应值为2。
值的注意的是,sequences列表内的各元素长度必须按照降序排列,也就是越长的文本应放在前面,整个Batch*Sequence矩阵为上三角阵。注意:在最新版本的pytorch中已经升级,可文本长度可乱序组织,但需要指定各sequence的length。
前文提到的RNN网络中可以接收的Input数据可以为PackedSequence类型数据,即是类似于这里的返回值。
2.2 pad操作 [Input] pad_sequence(sequences) [Output] tensor([[1, 5, 8], [2, 6, 9], [3, 7, 0], [4, 0, 0]]) [Input] pad_sequence(sequences, batch_first=True) [Output] tensor([[1, 2, 3, 4], [5, 6, 7, 0], [8, 9, 0, 0]]) pad操作即是将不同长度的文本序列进行对齐的填充过程。默认情况下,参数batch_first=False,其返回值的第一个维度将变成sequence,而第二个维度才为batch。当然,可以通过设置batch_first=True,使得返回值的第一个维度为batch,从而保持与输入值的一致性。
最近在用eclipse学习python的的时候,有时候引入第三方包,eclipse默认会把一些包定为错误的,错误是:“undefined variable from import…”
所报错误如下所示:
解决办法:
找到eclips——preferences——PyDev——editor—— code analysis——Undefined——undefined variable from import,把选项“error"改成"Waring" ,点击apply
重新启动eclipse可以发现问题已经解决
最近看到一篇报道,中科院计研所发布的最新的自主研发的编程语言Mulan(木兰),号称是只能物联应用开发。截图如下:
我特意做了一个测评视频,欢迎大家一键三连,地址:https://www.bilibili.com/video/av83994676
我这里提出了几个问题供大家一些探讨一下:
文章目录 探讨1:首先从网友公布出来的下载链接已经404了,不知道为啥?为啥这么快公布出来又无法访问了?这有何意义?探讨2:根据网友给出的安装包,体验了一下,确实是内置Python3探讨3:打开内部文件夹,看看,和Python做一个对比:探索4:木兰编程语言是中国科学院计算技术研究所(后文简称:“中科院计研所”)它的官网关于编程的介绍链接都是打不开的?这是为啥?探讨5:再来看看研究成果,全部打不开?结论: 探讨1:首先从网友公布出来的下载链接已经404了,不知道为啥?为啥这么快公布出来又无法访问了?这有何意义? 探讨2:根据网友给出的安装包,体验了一下,确实是内置Python3 通过这个工具可以清楚地看到里面的Python版本是Python37,猜测应该是Python3.7
探讨3:打开内部文件夹,看看,和Python做一个对比: 有什么区别呢?绝大多数都是用的Python的API,只是做了一层封装而已,封装成exe格式,便于使用。
好处1:大家都知道,国内教学用的电脑都是Windows的(因为学校买不起Mac电脑,也舍不得花这个钱,当然私立贵族学校除外),所以可以理解它封装成exe格式的好处,就是便于老师和学生使用,双击打开即可使用,利人利己,用于教学来说还是很方便的,学生操作起来也是很方便的,不需要考虑兼容性问题。
好处2:内置Python环境,意味着省去了安装Python的繁琐过程了,对学生来说是一件好事,特别是对于小学生来说更是好事,你想啊小学生连几个英文单词都搞不清楚,更不用说安装专业的Python编程工具了,配置环境估计都要懵逼,要是遇到年纪大的老师教学,那岂不是翻车现场,大眼瞪小眼?出了问题老师估计都解决不了?所以说,越是简化对教学来说越是方便。
探索4:木兰编程语言是中国科学院计算技术研究所(后文简称:“中科院计研所”)它的官网关于编程的介绍链接都是打不开的?这是为啥? 研究团队的介绍,网址如下:
研究团队–中科院计算所计算机体系结构国家重点实验室:www.carch.ac.cn
无论你打开哪个团队,你点开会发现除了文字描述,就没有了,项目介绍、研究成果和学术论文这些都是文字,本应该是有引用链接的,这里面都找不到。
更好玩的是我点开:“编译与编程实验室”,看看人员介绍,你会惊奇的发现:研究团队中包括正高级职称人员3人(含科学院百人计划研究员1人),副高级职称人员4人,职工(含客座职工)20余人,学生(含客座学生50余人)。我个人理解:“客座学生”相当于人员外派的硕博士研究生之内的,差不多的意思,换句话说就是编外人员,那么我们可以看到外部人员占据了60%以上,请问厉害不?
探讨5:再来看看研究成果,全部打不开? 我们打开“编译与编程实验室”,链接:http://www.carch.ac.cn/yjtd/byybcsys/tdjs_44866/,只要看到有链接的都点一下,然后你发现无法显示,5秒后跳到了中科院官网。
截图如下所示:
本来想在官网看看有哪些新成果,看看有没有下载链接,找了半天却发现官网除了一些新闻介绍比较多之外,关于计算机和编程的资源简直看不到,就连一些介绍都是只言片语,我表示很失望,这不是我所想看到的。。。
结论: 1.我们还是好好的吃瓜可以了,毕竟国产编程语言任重道远,如果不让众多人一起加入开发是很难做出来的,如果只是让一个机构闭门造车,那是很艰难的,况且开发人员大多数都是研究生在写代码,还是一些导师指导下才做出的成果,如果让大公司的牛人牵头去做这个项目,估计做的会更好。毕竟学生和有经验的编程开发者是有着天壤之别的。回头看看一些国内一些大公司也有自己研发的编程语言,但是效果怎么样?有多少国人买单?从性能和实用性来看又怎样,和成熟的编程语言相比差距太大了。
2.中科院计研所官网很多介绍是打不开的,我不知道这是为啥?想让别人知道标题,又不想让别人知道细节的意思?我搞不懂。。。
3.如果只考虑面向少儿编程,把 Python 环境打包到一个exe文件,双击即可用于开发,做一些基本运算,甚至函数运算都是没问题的。Mulan(木兰)只适用于教学,从目前来看,也仅此而已。将其号称为拥有自主产权的编程语言就太言过其实了,什么物联网、嵌入式乱七八糟的头衔都别谈了,寄居蟹再怎么样终究还是蟹,你也成不了海螺。
欢迎大家多多关注我的博客,感谢大家。