「OO Lab」自动评测机的搭建
前置知识sympy库123456789101112# 设置自变量为xx = sympy.Symbol('x') # 解析表达式f1 = sympy.sympify('1-sin(x)**2')f2 = sympy.sympify('cos(x)**2')# 判等, == 有时会出错print(f1.equals(f2))# 表达式求导print(sympy.diff(f1, x))print(sympy.diff(f2, x))# 表达式单点求值print( f1.evalf(subs={x:math.pi}) )
xeger库根据正则表达式随机生成字符串
12from xeger import Xegertarget = Xeger().xeger("正则表达式")
subprocess库创建子进程。参考
Popen → 创建一个新的进程执行命令,返回一个实例,进行后续操作
Popen.poll()
用于检查子进程是否已经结束。
Popen.wait(timeout=Non ...
蓝桥-往届省赛
三体攻击三体人将对地球发起攻击。为了抵御攻击,地球人派出了 A × B × C 艘战舰,在太空中排成一个 A 层 B 行 C 列的立方体。其中,第 i 层第 j 行第 k 列的战舰(记为战舰 (i, j, k))的生命值为 d(i, j, k)。
三体人将会对地球发起 m 轮“立方体攻击”,每次攻击会对一个小立方体中的所有战舰都造成相同的伤害。具体地,第 t 轮攻击用 7 个参数 lat, rat, lbt, rbt, lct, rct, ht 描述:所有满足 i ∈ [lat, rat],j ∈ [lbt, rbt],k ∈ [lct, rct] 的战舰 (i, j, k) 会受到 ht 的伤害。如果一个战舰累计受到的总伤害超过其防御力,那么这个战舰会爆炸。地球指挥官希望你能告诉他,第一艘爆炸的战舰是在哪一轮攻击后爆炸的。
输入格式: 从标准输入读入数据。第一行包括 4 个正整数 A, B, C, m;
第二行包含 A × B × C 个整数,其中第 (i − 1) × B × C + (j − 1) × C + k个数为 d(i, j, k);
第 3 到第 m + 2 行中,第 ...
「Java」容器
常见的各个容器的继承关系:
Iterable 接口Iterable是一个超级接口,被Collection所继承。它只有一个方法:Iterator<T> iterator(),返回一个迭代器
1234567891011121314public static void main(String args[]) { List<String> l = new ArrayList<String>(); l.add("aa"); l.add("bb"); Iterator iter = l.iterator(); while(iter.hasNext()){ System.out.println((String)iter.next()); }// for循环的版本// for(Iterator<String> iter=l.iterator();iter.hasNext();){// String str = (Str ...
「C++ 基础」基础语法
由于许多语法与C十分相似,这里只记录一些对C的扩充点以及之前学习的疏漏。
注释除了常用的//,/*...*/,还可以用条件编译来写,这样可以实现嵌套:
12345#if condition code1#else code2#endif
测试时可以使用 #if 1 来执行测试代码,发布后使用 #if 0 来屏蔽测试代码。
数据类型枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型,变量的值只能在列举出来的值的范围内。
创建枚举,需要使用关键字 enum。枚举类型的一般形式为:
123456enum 枚举名{ 标识符[=整型常数], 标识符[=整型常数], ... 标识符[=整型常数]} 枚举变量;
每个枚举元素在声明时被分配一个整型值,默认从 0 开始,逐个加 1。也可以在定义枚举类型时对枚举元素赋值,此时,赋值的枚举值为所赋的值,而其他没有赋值的枚举值在为前一个枚举值加 1。如下例,green 的值为 5, ...
「OO」原则
1. 单一职责
一个类只负责一项职责。
这是很符合直觉的。但需要警惕职责扩散:即因为某种原因,职责P被分化为粒度更细的职责P1和P2,这时如果将类T也分解为两个类T1和T2,分别负责P1、P2两个职责,可能比较费时间。所以,简单的修改类T,用它来负责两个职责似乎是一个比较不错的选择(这样做的风险在于职责扩散的不确定性,因为职责P在未来可能会扩散为P1,P2,P3,P4……Pn)
2. 里氏替换原则里氏代换原则(Liskov Substitution Principle LSP),实现抽象的规范,实现子父类互相替换。可以定义为:
如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。
所有引用基类的地方必须能透明地使用其子类的对象。通俗地讲:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下几点含义:
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
子类中可以增加自己特有的方法。
当子类的方法重载父类的 ...
「Django」10-前后端分离
1. WEB应用模式在开发Web应用中,有两种应用模式:
前后端不分离
前后端分离
2. api接口通俗的讲就是通过url返回数据。目前市面上大部分公司开发人员使用的接口服务架构主要有:restful、rpc。
rpc: 远程过程调用[远程服务调用],通过视图函数的函数名进行调用。接口多了,对应函数名和参数就多了,前端在请求api接口时,就会比较难找,容易出现重复的接口
restful: 资源状态转换。把后端所有的数据/文件都看成资源,那么接口请求数据,本质上来说就是对资源的操作了.
在url中声明要操作的资源是什么,然后通过http请求的method不同来说明对资源进行哪一种操作。(基于CBV更方便实现,get -> 获取,post -> 创建,put -> 更新,delete -> 删除)
3. RESTful API规范
API与用户的通信协议,总是使用HTTPs协议。
域名
https://api.example.com 尽量将API部署在专用域名(会存在跨域问题)
https://example.org/a ...
「Django」9-中间件
Django 中间件是修改 Django request 或者 response 对象的钩子,可以理解为是介于 HttpRequest 与 HttpResponse 处理之间的一道处理过程。作用:
修改请求,即传送到 view 中的 HttpRequest 对象。
修改响应,即 view 返回的 HttpResponse 对象。
中间件组件配置在 settings.py 文件的 MIDDLEWARE 选项列表中。配置中的每个字符串选项都是一个类,也就是一个中间件。
自定义中间件中间件可以定义四个方法,分别是:
1234process_request(self,request)process_view(self, request, view_func, view_args, view_kwargs)process_exception(self, request, exception)process_response(self, request, response)
自定义中间的步骤:
在 app 目录下新建一个 py 文件,名字自定义,并在该 py 文件中导入 Middleware ...
flask入门
0. 简介Web框架:使Web应用程序开发人员能够编写应用程序,而不必担心如协议,线程管理等低层细节。
Web服务器网关接口(WSGI):已被采纳为Python Web应用程序开发的标准。 WSGI是Web服务器和Web应用程序之间通用接口的规范。
WERKZEUG:是一个WSGI工具包,它实现了请求,响应对象和其他实用程序功能。 这可以在其上构建Web框架。 Flask框架使用Werkzeug作为其一个基础模块之一。
jinja2是Python的流行模板引擎。 网页模板系统将模板与特定的数据源结合起来呈现动态网页。
1. flask 应用程序123456789from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello World'if __name__ == '__main__': app.run()
Flask类的一个对象是WSGI应用程序。Flask构造函数将当前模块的名称(name ...
7 - 速查
恢复到最后一个提交1git checkout .
6 - 自定义Git
忽略特殊文件为了在git status时不因为一些特殊文件显示 Untracked files .. ,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
忽略文件的原则是:
忽略操作系统自动生成的文件,比如缩略图等;
忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
1234567# 此为注释 – 将被 Git 忽略*.db # 忽略所有 .db 结尾的文件!ABC.db # 但 ABC.db 除外/BLL # 仅仅忽略项目根目录下的 BLL 文件,不包括 subdir/BLLbuild/ # 忽略 build/ 目录下的所有文件doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/ ...