- 博客(122)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一些关于此博客的说明
本博客是个人的一个博客备份,与Wordpress上同域名博客同时维护。基于CSDN对LaTeX\LaTeXLATEX的友好度,以及个人对于因国际局势导致服务器设在美国的Wordpress某日起无法登上的未雨绸缪,这一博客的更新速度可能渐渐加快。我也会探索写一些与python\C++\VBA相关的文章,仅与我的饭碗相关。更多的内容仍会聚焦于数学。谋生不易,更新缓慢。欢迎任何形式的探讨。正在更新...
2019-10-10 20:34:12
472
原创 7.错误、调试和测试
Python内置了一套异常处理机制,来帮助我们进行错误处理。我们也需要跟踪程序的执行,查看变量的值是否正确,这个过程称为调试。Python的pdb可以让我们以单步方式执行代码。编写测试也很重要。有了良好的测试,就可以在程序修改后反复运行,确保程序输出符合我们编写的测试。错误处理在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样就可以知道是否有错以及出错的原因在操作系统提供的调用中,返回错误码非常常见。比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返
2021-11-01 10:52:19
240
原创 6.面向对象高级编程
在Python中,面向对象有很多高级特性,允许我们写出非常强大的功能。包括多重继承、定制类、元类等概念。__slots__属性使用正常情况下,当定义了一个class并创建了一个class的实例后,可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。动态绑定允许在程序运行的过程中动态给实例或class加上功能Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性class Student(object): # 用tuple定义允许绑
2021-10-29 16:17:10
302
原创 5.面向对象编程
面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。面向对象的抽象程度又比函数要高,因为一个Class既包含数据,又包含操作数据的方法。类和实例面向对象最重要的概念就是类(Class)和实例(Instance),类是抽象的模板,比如Student类,而实例
2021-10-28 17:16:41
220
原创 4. Python模块
为了编写可维护的代码,需要把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)基本定义模块有什么好处?大大提高了代码的可维护性。编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,在编写模块时,不必考虑名字会与其他模块冲突。但是尽量不要与内置函数名字冲突。为了避免模块名冲突,Py
2021-10-28 17:16:09
120
原创 3.函数式编程
函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。高阶函数变量可以指向函数
2021-10-28 13:26:30
194
原创 2.Python高级特性
在Python中,代码越少越好、越简单越好。基于这一思想,需要掌握Python中非常有用的高级特性,1行代码能实现的功能,决不写5行代码。代码越少,开发效率越高。切片tuple,list,字符串都可以进行切片操作L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']L[0:3] # ['Michael', 'Sarah', 'Tracy']L[:3] # ['Michael', 'Sarah', 'Tracy']L[1:3] # ['Sarah', 'T
2021-10-28 13:25:46
116
原创 1.Python基础要点
Python解释器CPython:官方版本的解释器,用C语言开发。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。CPython用>>>作为提示符IPython:IPython是基于CPython之上的一个交互式解释器,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。IPython用In [序号]:作为提示符如果要和Java或.Net平台交互,最好的办法不是用Jython或Iro
2021-10-28 13:24:30
157
原创 20.加密与算法
加密与算法计算机加密技术就是为了实现上述目标,而现代计算机密码学理论是建立在严格的数学理论基础上的,密码学已经逐渐发展成一门科学。对于绝大多数开发者来说,设计一个安全的加密算法非常困难,验证一个加密算法是否安全更加困难,当前被认为安全的加密算法仅仅是迄今为止尚未被攻破。不要自己设计山寨的加密算法;不要自己实现已有的加密算法;不要自己修改已有的加密算法。编码算法URL编码和Base64编码都是编码算法,但不是加密算法URL编码URL编码是浏览器发送数据给服务器时使用的编码,它通常附加在UR
2021-10-18 17:41:00
110
原创 19.正则表达式
正则表达式正则表达式可以用字符串来描述规则,并用来匹配字符串,使用正则表达式可以快速判断给定的字符串是否符合匹配规则。正则表达式是一套标准,可以用于任何语言。Java标准库的java.util.regex包内置了正则表达式引擎匹配规则正则表达式的匹配规则是从左到右按规则匹配。对于正则表达式abc来说,它只能精确地匹配字符串"abc",不能匹配"ab",“Abc”,“abcd"等其他任何字符串。如果正则表达式有特殊字符,就需要用\转义正则表达式在Java代码中也是一个字符串,正则表达式a&
2021-10-16 16:42:01
194
原创 18.单元测试
单元测试单元测试是针对最小的功能单元编写测试代码Java程序最小的功能单元是方法,对Java程序进行单元测试就是针对单个Java方法的测试测试驱动开发TDD是一种根据功能实现代码的开发模式JUnitJava平台最常用的测试框架JUnit是一个开源的Java语言的单元测试框架,专门针对Java设计,使用最广泛编写了一个xxx.java文件后,我们想对其进行测试,需要编写一个对应的xxxTest.java文件,以Test为后缀是一个惯例,并分别将其放入src和test目录中一个JUnit测试包含若
2021-10-15 11:42:00
131
原创 17.日期时间
日期和时间Epoch Time是计算从1970年1月1日零点(格林威治时区/GMT+00:00)到现在所经历的秒数,又称为时间戳,在Java程序中,时间戳通常是用long表示的毫秒数Java标准库有两套处理日期和时间的API:一套定义在java.util这个包里面,主要包括Date、Calendar和TimeZone这几个类;一套新的API是在Java 8引入的,定义在java.time这个包里面,主要包括LocalDateTime、ZonedDateTime、ZoneId等。旧APIDat
2021-10-15 10:09:09
133
原创 16.IO流
IO流Java的标准库java.io提供了File对象来操作文件和目录。构造File对象,需要传入文件路径File对象有3种形式表示的路径:一种是getPath(),返回构造方法传入的路径一种是getAbsolutePath(),返回绝对路径一种是getCanonicalPath,它和绝对路径类似,但是返回的是规范路径File对象既可以表示文件,也可以表示目录。构造一个File对象,即使传入的文件或目录不存在,代码也不会出错构造一个File对象,并不会导致任何磁盘操作;只有当调用File对
2021-10-09 13:27:38
270
原创 15.集合
集合Collection集合类型是Java标准库中被使用最多的类型,如果一个Java对象可以在内部持有若干其他Java对象,并对外提供访问接口,则把这种Java对象称为集合Java标准库自带的java.util包提供了集合类:Collection,它是除Map外所有其他集合类的根接口。Java的java.util包主要提供了以下三种类型的集合:List:一种有序列表的集合,例如,按索引排列的Student的ListSet:一种保证没有重复元素的集合,例如,所有无重复名称的Student的SetM
2021-10-05 15:38:06
140
原创 14.泛型
泛型泛型是定义一种模板,例如ArrayList,然后在代码中为用到的类创建对应的ArrayList<类型>,由编译器针对类型作检查,既实现了编写一次,万能匹配,又通过编译器保证了类型安全。泛型是编写模板代码来适应任意类型;泛型的好处是使用时不必对类型进行强制转换,它通过编译器对类型进行检查本质是参数化类型,将原来具体类型参数化,在使用/调用时传入具体类型泛型类、泛型方法和泛型接口泛型类:class XXX {}示例:public class Generic <T>{
2021-09-29 16:15:02
75
原创 13. 注解Annotation
注解注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”,可以被编译器打包进入class文件,因此,注解是一种用作标注的“元数据”注解类型常用的两类注解:编译器使用,例如@Override,@SuppressWarning程序运行期能够读取的注解,在加载后一直存在于JVM中。例如,一个配置了@PostConstruct的方法会在调用构造方法后自动被调用(这是Java代码读取该注解实现的功能,JVM并不会识别该注解)注解的配置参数配置参数可以包括:所有基本类型;String
2021-09-25 22:04:35
109
原创 12.反射Reflection
反射在运行时获取一个类的变量和方法信息,然后通过获取到的信息来创建对象、调用方法通过运行期对对象实例的操作,拿到该实例对象的信息(如类、属性、方法等)可以增强程序灵活性反射的实现基础Class类的存在,由于JVM的动态加载,会在读取到某一种class时才加载,生成.class文件,每一个Class实例都指向一个class或interface,此即类加载器获取Class类对象1.类的class属性2.调用getClass()方法3.Class类的static方法 forName(String
2021-09-25 22:03:51
74
原创 11.异常Exception
异常Exception,Java在语言层面上的错误处理机制异常的体系#mermaid-svg-ULoXsNQ9whfUMoaA .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-ULoXsNQ9whfUMoaA .label text{fill:#333}#mermaid-svg-ULoXsNQ9whfUMo
2021-09-25 22:03:07
77
原创 10.常用API
常用API包装类基本类型包装类,存在自动装箱和自动拆箱机制时间日期类Date类,代表一个特定时间(毫秒单位),方法是Date.getTime和Date.setTimeSimpleDateFormat类,格式化和解析日期,主要方法是format和parseCalendar类,转换日期和操作日期(加减),构造对象用getInstance(),主要方法有get,add和set,例如public class CalendarDemo{ public static void main(Strin
2021-09-24 20:57:54
102
原创 9.内部类
内部类内部类是在一个类里定义另一个类内部类可以直接访问外部类的成员,包括私有,外部类要访问内部类的成员必须创建对象public class Outer{ private int num = 10; public class Inner{ public void show() { System.out.println(num); } } public void method() { Inner i =
2021-09-24 20:55:26
153
原创 8.多态&抽象类&接口
多态&抽象类&接口多态定义同一个对象在不同时刻表现出的不同形态前提是有extends或implement,有override,父类引用指向子类对象成员变量:编译、运行都看父类,成员方法:编译看父类(左边),运行看子类(右边)多态优劣势优势是提高程序扩展性(动态调用),劣势是不能用子类的特有成员转型upcasting:父类引用指向子类对象,是安全的downcasting:子类引用指向父类对象,不安全抽象类没有方法体,abstract的,只能通过子类对象实例化,子类需要ov
2021-09-24 20:54:41
77
原创 7.修饰符
修饰符package包的概念,包就是文件夹定义:package name,name用域名倒序比较多import导包,形如import java.util.Scanner和python很类似权限修饰符public,private,protected和缺省修饰符同一个类同一个包的其他类不同包的子类不同包的无关类private√默认√√protected√√√public√√√√final代表最终,不能exten
2021-09-24 20:54:15
49
原创 6.继承extends
继承继承的实现继承是面向对象三大特征知意,可以使得子类具有父类的属性和方法,可以在子类中追加属性和方法通过extends实现子类可以使用父类的非私有成员Java支持多层继承,但不支持多重继承(interface可以多个implement,但class只能extend一个)继承的优劣势优势是提高代码的复用性和维护性,劣势是类的耦合性增强导致子类独立性削弱使用继承需要考虑类与类之间是否有is…a的关系继承中变量的访问就近原则:子类局部范围->子类成员范围->父类成员范围->
2021-09-24 20:53:38
106
原创 5.面向对象基础
面向对象基础类和对象类是对一类事物的描述,抽象的、概念上的对象是事物的个体,也称为实例Instance面向对象的设计重点是类的设计,类的设计其实是类的成员的设计成员是什么?属性(对应成员变量)、行为(对应成员方法)域、字段 = Field = 属性 = 成员变量Method = (成员)方法 = 函数类和对象的使用创建类、设计类的成员创建类的对象通过“对象.属性”或者“对象.方法"调用对象的结构一个类的多个对象,每个对象都有一套自己的非static属性局部变量一定要显式赋值,加载到
2021-09-24 20:52:55
64
原创 4.数组学习
数组数组的主要问题定义、初始化、遍历、内存存储引用变量数组内存的是地址,基本变量数组内存的是值自己造数组的少,集合里很多数组数组中的算法1.数组元素赋值2.数值型数组的计算3.数组的复制、反转、查找(线性查找、二分查找)4.数组排序(冒泡排序、快速排序)数组复制:要先new出一个新数组,再通过遍历来复制反转:头尾交换、第二个和倒数第二个交换,循环条件是length/2查找:线性查找(从前往后一个个找)二分法查找(折半查找),前提是数组数据要有序(没有就得先排序),实现方法是首索
2021-09-24 20:52:25
104
原创 3.Java基本语法
Java基本语法Java名称命名规范包名:xxxyyyzzz类名、接口名:XxxYyyZzz(大驼峰)变量名、方法名:xxxYyyZzz(小驼峰)常量名:XXX_YYY_ZZZ起名字要“见名知意”,不建议用汉字变量包含变量类型、变量名和存储的值变量类型:基本类型(数值型整数byte,short,int,long,float;数值型浮点float,double),字符型char,布尔型boolean引用类型(类class,接口interface,数组array)long型的声明或初始
2021-09-24 20:51:50
77
原创 2.Java语言概述
Java语言概述Java学科脉络第一阶段:JavaSE包含Java,MySQL和SQL语言,JDBC第二阶段:JavaWeb包含HTML与CSS,JavaScript DOM与jQuery,XML与Tomcat(服务器),HTTP协议,服务器端组件Servlet,JSP,异步数据传输框架Ajax第三阶段:JavaEE框架系统开发中真正要用的,包括系统整体分层解耦框架spring,轻量级Web框架springmvc,轻量级持久层框架mybatis,服务器操作系统Linux,内存数据库Redis,
2021-09-24 20:50:52
4920
原创 1.编程入门
编程入门入门概述软件:提供指令,控制硬件并使硬件完成特定任务。程序设计语言:没有“最好”的语言,需要尽可能掌握各种不同的程序语言。关键是学习如何使用程序设计方法解决问题计算机硬件CPU,内存,存储设备(硬盘),输入,输出,通信,这几部分通过总线(bus)联接起来,总线搭在主板上冯诺伊曼体系结构是现代计算机的基础行业发展的三个定律:摩尔定律:每18-24个月集成晶体管数量翻一倍安迪-比尔定律:What Andy gives, Bill takes away反摩尔定律:IT公司需要不断更新
2021-09-24 20:50:09
156
原创 11. Existence of the Integral
本节讨论了积分存在的一个充要条件,即Theorem 11.2,不连续点的测度为0是积分存在的充要条件,为此Theorem 11.1首先定义了零测度,并给出了一些有用的关于零测度的结论。Theorem 11.3是主要定理的一个直接应用,讨论fff vanished except on a set of measure zero 和∫Qf\int_Qf∫Qf之间的关系。####ExercisesExercise 1. Show that if AAA has measure zero in Rn\math
2021-05-25 13:09:40
349
原创 10. The Integral over a Rectangle
本书对多元积分的处理是先推广一元黎曼积分,本节仅对黎曼积分的一些大家熟知的概念作了推广,包括partition以及黎曼和等。比较重要的是Theorem 10.3(Riemann condition),下积分和上积分相等的充要条件,与一元黎曼积分几乎完全类似。Theorem 10.4是黎曼条件的一个小应用,证明常数函数是可积的。####ExercisesExercise 1. Let f,g:Q→Rf,g:Q\to\mathbf{R}f,g:Q→R be bounded functions such th
2021-05-15 16:07:41
151
原创 9. The Implicit Function Theorem
本节是另一个重要的定理:隐函数定理,隐函数表示的函数在某一点(a,b)可微的充要条件是隐函数关于因变量的导数在(a,b)点是非奇异的,并且可以显式计算出隐函数的导数。####ExercisesExercise 1. Let f:R3→R2f:\mathbf{R}^3\to\mathbf{R}^2f:R3→R2 be of class C1C^1C1; write fff in the form f(x,y1,y2)f(x,y_1,y_2)f(x,y1,y2). Assume that f(3,−1,
2021-05-07 14:33:47
548
原创 8. The Inverse Function Theorem
这一节和下一节讨论的是两个比较特殊的多元微分情景,即反函数和隐函数,本节的主要结论是只要导数Df(x)Df(x)Df(x)是非奇异的,那么fff有一个可微的反函数ggg。作者将过程分成了三个定理逐步证明。ExercisesExercise 1. Let f:R2→R2f:\mathbf{R}^2\to\mathbf{R}^2f:R2→R2 be defined by the equation f(x,y)=(x2−y2,2xy)f(x,y)=(x^2-y^2,2xy)f(x,y)=(x2−y2,2xy)
2021-04-27 17:46:40
409
2
原创 7. The Chain Rule
本节主要说明链式法则,即多维空间中,可导函数的复合也是可导的。Theorem 7.1是本节的主要定理。Corollary 7.2说明CrC^rCr类函数的复合也是CrC^rCr类。Theorem 7.3是多维空间的均值定理。Theorem 7.4说明多维空间下反函数定理也成立,但是反函数的导数变为原函数导数的逆矩阵,由此可知,反函数可导需要原函数导数矩阵非奇异。####ExercisesExercise 1. Let f:R3→R2f:\mathbf{R}^3\to\mathbf{R}^2f:R3→R2
2021-02-06 09:10:01
290
原创 6.Continuously Differentiable Functions
这一节说明偏导数如果全部存在且连续,则导数存在。Theorem 6.1回顾了一元函数的中值定理;Theorem 6.2是本节的主定理;Theorem 6.3说明C2C^2C2函数的二阶偏导可以交换次序。本节的讨论看出,连续性,特别是每个分量上的连续性是可导的重要必要条件,在每个分量上连续的函数是性质很好的。作者也提到在实践中大部分时候只需要处理C1C^1C1类函数。####ExercisesExercise 1. Show that the function f(x,y)=∣xy∣f(x,y)=|xy|
2021-01-30 11:50:49
359
原创 5. The Derivative
这一章开始进入多元微分板块,本节是导数(多元导数)概念,通过一元的导数等价条件(牛顿近似)引入多元导数定义,并介绍了方向导数和偏导数(单位向量的方向导数)。本节的多元导数是以矩阵形式定义的(可看成线性变换),导数定义可以满足:可导必可微、复合函数可导、所有方向导数存在等三个条件。这一节开始的论述就比较详细,几个例子较好地体现了多元微分和一元微分的差异之处。Theorem 5.1说明可微推出所有方向导数存在,且给出方向导数计算方法。Theorem 5.2说明可微推出连续。Theorem 5.3说明值域为
2021-01-23 10:42:49
169
原创 4. Compact Subspaces and Connected Subspaces of Rn
这一节回顾两个重要的概念:紧致集和联通集。由于本书主要讨论Rn\mathbf R^nRn上的情况,因此紧致和有界闭集是等价的,但本节练习中也提到了非Rn\mathbf R^nRn上的情况。Theorem 4.1其实是很多书上紧致集的定义。Theorem 4.2很简单,R\mathbf RR上闭区间是compact的。Theorem 4.3说明在Rn\mathbf R^nRn上compact可以推出closed和bounded,推论是最大最小值定理。Theorem 4.5是极值定理,说明compact
2021-01-03 15:47:14
222
原创 3. Review of Topology in Rn
这一节回顾了在RnR^nRn中的基本拓扑知识,包括metric space,极限和连续,内点外点和边界点。这部分内容在大部分实分析中都有比较详尽的阐述。Theorem 3.1是比较经典的开闭集交并结论:开集的有限交和无限并仍是开集,闭集的无限交合有限并仍是闭集。Theorem 3.2也比较经典,子空间的开/闭集是子空间和母空间开/闭集的交集。Theorem 3.3是闭包的概念以及闭集的判别条件。Theorem 3.4说明开闭集与选取的metric无关。Theorem 3.5说明连续函数的限制仍是连续的,
2021-01-02 20:14:39
145
原创 2. Matrix Inversion and Determinants
这一节继续复习线性代数知识,回顾了初等矩阵、求逆、行列式、代数余子式、Cramer法则等相关内容,总体上也易于理解。ExercisesExercise 1. Consider the matrixA=[121−101].A=\begin{bmatrix}1&2\\1&-1\\0&1\end{bmatrix}.A=⎣⎡1102−11⎦⎤.( a ) Find two different left inverses for AAA.( b ) Show that AAA
2021-01-02 11:50:19
141
原创 1.Review of Linear Algebra
本节是本书的第一章第一节,主要回顾一些线性代数的基础知识,在流形分析中用到的线性代数知识是非常基本而经典的,比如线性空间、内积、矩阵、线性变换、矩阵的秩、转置。本节的六个定理,Theorem 1.1 说明空间维数和基向量个数的关系,Theorem 1.2说明任何低于空间维数的线性无关向量组都可以扩充为一组基,Theorem 1.3说明矩阵乘积的上限模(sup norm)不大于两个矩阵上限模的乘积再乘以二者的公共维度,是一个卡上界的定理,在后面关于Rn\mathbf R^nRn上微积分的讨论中比较有用。Th
2021-01-01 18:11:48
195
原创 Python numpy基础
目录1. Numpy基本操作1.1 列表转为矩阵:array是numpy中最基础的对象1.2 维度:array.ndim1.3 行数和列数():array.shape1.4 元素个数:array.size2. Numpy创建array2.1 一维array创建import numpy as npa = np.array([2,23,4], dtype=np.int32)2.2 多维array创建a = np.array([[2,3,4], [3,4,5]]
2020-12-16 15:43:58
447
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人