GT

MIT6.0001 笔记,LECTURE 9:Python Classes and Inheritance

醉酒当歌 提交于 2020-04-05 20:03:05
本课的内容分类两个部分。 第一部分讲 getters and setters methods ,其本质还是在于 information hiding ,使用setter() 和 getter() 方法对类的数据进行读写,尤其是setter() 方法,可以对写入的数据进行判断,防止错误类型和错误范围的数据进入实体。 第二部分讲 inheritance ,定义一个父类animal,然后再得到他的子类,animal->person->student,或者 animal -> rabit。着重解释了class variable和instance variable的区别。 本篇笔记和代码都来自于MIT的公开课,第九课,Python的类和继承。 《Introduction to Computer Science and Programming in Python》 。 Getter and Setter Methods 这一部分用三张ppt内容可以概括。 推荐 使用getter和setter来访问类的变量。 出于information hiding的考虑,类的作者自定义变量名,调用者不知道,直接访问会出错。 使用 a.get_age() 而不是 a.age 是一种更好的变成风格,易于维护,不易出错 python允许我们在类的定义之外,直接读,写,增加实体的变量。但这是 不推荐 的。 点赞 收藏

C/C++ 第四周线性表(二)-- 项目三 单链表的应用(2)

杀马特。学长 韩版系。学妹 提交于 2020-04-05 20:02:52
<span style="font-family:KaiTi_GB2312;font-size:14px;">/* *Copyright(c)2017,烟台大学计算机学院 *All right reserved. *文件名:main.cpp list.h list.cpp *作者:黄士胜 *完成日期:2017年9月27日 *版本号:v1.0 * *问题描述:将单链表L2连接到L1上面 *输入描述:无 *程序输出:把L1与L2连接成一个新的单链表 */</span> 相关代码如下: mian.cpp #include <stdio.h> #include <malloc.h> #include "../linklist.h" int main() { LinkList *A, *B; int i; ElemType a[]= {1,3,2,9}; ElemType b[]= {0,4,7,6,5,8}; InitList(A); for(i=3; i>=0; i--) ListInsert(A, 1, a[i]); InitList(B); for(i=5; i>=0; i--) ListInsert(B, 1, b[i]); Link(A, B); printf("A:"); DispList(A); DestroyList(A); return 0; } linklist.cpp

C/C++ 第四周线性表(二)-- 项目四 猴子选大王

为君一笑 提交于 2020-04-05 19:59:50
<span style="font-family:KaiTi_GB2312;font-size:14px;">/* *Copyright(c)2017,烟台大学计算机学院 *All right reserved. *文件名:main.cpp list.h list.cpp *作者:黄士胜 *完成日期:2017年9月27日 *版本号:v1.0 * *问题描述:如下 *输入描述:输入M和N *程序输出:输出时大王的猴子是几号 */</span> 问题描述: 一群猴子,编号是1,2,3...M,这群猴子(M个)按照1-M的顺序围坐一圈。从第一只开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 代码如下: #include <iostream> using namespace std; struct Monkey { int num; //猴子的编号 struct Monkey *next; //下一只猴子 }; int main() { int m,n,i,j,king; Monkey *head, *p1,*p2; cout<<"输入几只猴子,输入数到的个数N:"; cin>>m>>n; if(n==1) { king=m; } else { //建立猴子围成的圆圈 p1=p2=new Monkey; head = p1; p1-

ACdream ~ 1066 ~ Bet(数学 or 二分+精度)

我们两清 提交于 2020-04-05 19:56:26
思路: 因为我们要使最坏的情况获得钱最多,肯定要让不管哪一个赢都能得到一样的钱V。在总钱数X一定的情况下,如果有某个赢之后获得的钱大于V,那么肯定有某个赢之后的钱少于V,如果是其他都输了而这个赢钱少的赢了那么得到的钱就比V少。题目中问的就是最坏情况下的最大收益(最大化平均值),所以我们应该让不管哪个赢获得钱都一样的钱V。那么怎么求V呢?有两种思路: ①我们可以二分这个数字,然后通过判断在回报都为V时的投入跟实际总钱数X的关系确定如何缩小区间。 ②其实我们可以发现是有规律的,假设平均回报为v,每个赔率为a[i],总钱数为X,我们可以得到下面这个式子 化简得 所以 X跟a[1~n]都已知,所以答案V可以求出来,然后保留个两位小数输出就可以了。 公式法: #include<bits/stdc++.h> using namespace std; int main() { int n; double a[105],x,v; while(~scanf("%d",&n)) { for(int i = 0; i < n; i++) scanf("%lf",&a[i]); scanf("%lf",&x); v = 0.0; for(int i = 0; i < n; i++) v += 1 / a[i]; printf("%.2lf\n",x / v); } return 0; } 二分法:

CMake编程(一)

浪尽此生 提交于 2020-04-05 19:53:20
经常看到一些工程中使用CMake命令,是一个有用的工具,这里推荐两个不错的链接。 http://www.cnblogs.com/coderfenghc/tag/cmake/ http://hahack.com/codes/cmake/ 下面是CMake命令和CMake变量,转载自第一个链接。 CMake 2.8.3共有80条命令,分别是:add_custom_command, add_custom_target, add_definitions, add_dependencies, add_executable, add_library, add_subdirectory, add_test, aux_source_directory, break, build_command, cmake_minimum_required, cmake_policy, configure_file, create_test_sourcelist, define_property, else, elseif, enable_language, enable_testing, endforeach, endfunction, endif, endmacro, endwhile, execute_process, export, file, find_file, find_library, find

第四周 【项目4 】 建设双链表算法库

你。 提交于 2020-04-05 19:50:02
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:李欣豪 *完成时间:2017年12月13日 *版本号:v1.0 *问题描述: 建设自己的专业基础设施算法库 一、创建一个新的工程,建立头文件 : #ifndef DLINKLIST_H_INCLUDED #define DLINKLIST_H_INCLUDED typedef int ElemType; typedef struct DNode //定义双链表结点类型 { ElemType data; struct DNode *prior; //指向前驱结点 struct DNode *next; //指向后继结点 } DLinkList; void CreateListF(DLinkList *&L,ElemType a[],int n);//头插法建双链表 void CreateListR(DLinkList *&L,ElemType a[],int n);//尾插法建双链表 void InitList(DLinkList *&L); //初始化双链表 void DestroyList(DLinkList *&L); //销毁双链表 bool ListEmpty(DLinkList *L); //判断链表是否为空 int ListLength

SpringBoot简单打包部署(附工程)

社会主义新天地 提交于 2020-04-05 19:40:52
前言 本文主要介绍SpringBoot的一些打包事项和项目部署以及在其中遇到一些问题的解决方案。 SpringBoot打包 在SpringBoot打包这块,我们就用之前的一个web项目来进行打包。 首先需要明确的是,该项目打包的形态是可执行的 jar 包,还是在 tomcat 下运行的 war 包。 虽然本项目是用 maven 构建的,用 maven 打包也更加方便,但是这里也说明普通非 maven 打包的项目如何打包。 Maven打包 首先是 maven 方式打包: 如果是 jar 包 需在 pom.xml 指定打成的包为: <packaging>jar</packaging> 如果是 war 包。 需在 pom.xml 指定打成的包为: <packaging>war</packaging> 并通过 <scope> 标签在打包的时候排除 tomcat 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> 然后添加 SpringBoot 自带的打包方式 示例如下: <build> <defaultGoal>compile<

SpringBoot整合Netty并使用Protobuf进行数据传输(附工程)

微笑、不失礼 提交于 2020-04-05 19:24:44
前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容。Protobuf会简单的介绍下用法,至于Netty在 之前的文章 中已经简单的介绍过了,这里就不再过多细说了。 Protobuf 介绍 protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。 官方地址: https://github.com/google/protobuf 使用 这里的使用就只介绍Java相关的使用。 首先我们需要建立一个 proto 文件,在该文件定义我们需要传输的文件。 例如我们需要定义一个用户的信息,包含的字段主要有编号、名称、年龄。 那么该 protobuf 文件的格式如下: 注 :这里使用的是 proto3 ,相关的注释我已写了,这里便不再过多讲述了。需要注意一点的是 proto 文件和生成的 Java 文件名称不能一致! syntax =

bash-shell中使用的特殊字符总结

谁说我不能喝 提交于 2020-04-05 19:24:29
文章目录 特殊字符 `#` `;` `;;` `.` `""` `''` `,` `\` `/` ` ` ` `:` `!` `*` `?` `$` `()` `{xxx,yyy,zzz,...}` {} `{} \;` `[]` `[[]]` `(())` `> &> >> < <>` `<<、<<<` `<、>` `\<、\>` `|` `>|` `||` `&` `&&` `-` `=` `+` `%` `~` `~+` `~-` `^` 特殊字符 在 <<shell热身>> 大家对 shell 算是有个初步的了解,初步连接之后肯定想知道,这个工具怎样用,带着这些疑问,我们首先向探索其他语言一样,探索一下 shell 中的特殊字符以及其含义。 # 注释。但是行首( #! )开头是个例外,除了行首其他行的 # 均代表注释 # 这是一行注释。 当然注释也可以在一个命令行的后面,但是命令行不能在注释的后面 echo "后面会有一行注释" # 注释的#与前面的语句要有空白 注释可以不用定格写 # 这样也能写注释 当然转义之后的 # 是不能作为注释的,标准的引用和转义字符 ("'\'") 等可以用来转义 # ; 命令分隔符,可以在同一行上写两个或多个命令。 echo "这是一个命令" ; ls ; pwd ;; 终止 case 选项 #! /bin/bash # $1

怎样用cmd启动停止服务

时光总嘲笑我的痴心妄想 提交于 2020-04-05 19:09:43
在cmd下可有两种方法打开,net和sc,net用于打开没有被禁用的服务,语法是: net start 服务名 net stop 服务名 用sc可打开被禁用的服务,语法是: sc config 服务名 start= demand //手动 sc condig 服务名 start= auto //自动 sc config 服务名 start= disabled //禁用 sc start 服务名 sc stop 服务名 注:1)服务名不一定是你在服务面板看到的那个名,例如,你要打开被禁用的telnet服务,sc config telnet start= auto,报错:[SC] OpenService FAILED 1060,因为telnet的服务名不是telnet而是tlntsvr, sc config tlntsvr start= auto 就OK了,在服务面板里查看telnet属性,从可执行文件的路径里可看到服务程序名,即命令中的服务名。 2)start=后面有空格,少了就有错 sc.exe命令功能列表:  注:以下命令中。=号后面都有一个空格,=号前面没有空格!   1.更改服务的启动状态(这是比较有用的一个功能)      2.删除服务(除非对自己电脑的软、硬件所需的服务比较清楚,否则不建议删除任何系统服务,特别是基础服务)     3.停止或启动服务(功能上类似于net