将数据从一张表中迁移到另一张表中,在数据量少的情况下很容易实现,而且方法也有很多,但当数据量到了百万、千万级时,不同方法在效率上会有很大差别。
将数据从一张表中迁移到另一张表中,在数据量少的情况下很容易实现,而且方法也有很多,但当数据量到了百万、千万级时,不同方法在效率上会有很大差别。
Activiti是一个开源的工作流程引擎,而在流程引擎上执行的便是符合BPMN2.0规范的流程模型。在我们系统集成Activiti后,自然需要提供流程模型的导入功能。
IDEA中可以使用archetype快速生成一个项目骨架,但自带的archetype太精简了,并不一定合适我们,我们可以自定义一个合适我们的骨架。
类(class)是构造对象的模板或蓝图。由类构造(construct)对象的过程称为创建类的实例(instance)。
类提供了一种组合数据和功能的方法。创建一个新类意味着创建一个新类型的对象,从而允许创建一个该类型的新实例。
在对于类的定义上,Python3与Java定义一致。
下面分别用Java和Python3编写一个People类。
1 | /** |
Java执行结果

1 | class People: |
Python执行结果

| Java | Python | |
|---|---|---|
| 私有属性 | (成员变量)使用private关键字修饰 |
属性名双下划线开头__;不建议将属性设置为私有,建议以_(单下划线)开头,暗示属性为受保护的,不建议外部直接访问,建议使用getter、setter进行操作 |
| 类属性 | 使用static修饰的变量 |
类和对象都可以访问 |
| 构造方法 | 有参、无参构造器;方法名与类名相同 | (实例化方法)方法名固定__init__ |
| 实例方法 | 对象访问 | (普通方法)对象访问,默认有参self |
| 私有方法 | 使用private关键字修饰 |
方法名双下划线开头__ |
| 静态方法 | 使用static关键字修饰 |
使用@staticmethod装饰器,可以无参 |
| 类方法 | 同静态方法 | 使用@classmethod装饰器,类和对象访问,默认参数cls |
在Java中类只能单继承继承,因为Java的设计者认为,多继承会让语言本身变得非常复杂(如同C++),效率也会降低(如同Eiffrl),而为了让程序设计更加灵活,Java中就有了接口(interface),接口之间可以多继承。而Python的类可以多继承,也就没必要有接口;下面分别使用Java和Python 3实现Student子类
1 | public class Student extends People{ |
Java执行结果

1 | # 单继承 |
Python执行结果

Java与Python 3 在掉用构造方法时顺序是一致的,但是Java在构造方法内调用父类构造方法,语句super()必须放在方法体的第一句;而Python 3,对象是由 __new__()和 __init__()协作构造完成,实例通过__new__方法被创建,使用__init__方法进行初始化;所以在调用父类方法之前,可以对参数进行定制修改。Python 3 的多继承,在搜索从父类继承的方法/属性时,可以简单认为是深度优先、从左至右;但为了保持单次调用,实际在调用时是动态的;
实现多态的步骤:1.继承父类 2.重写父类方法 3.向上转型
1 | /**1.Teacher继承自People**/ |
1 | public class Test { |
java运行结果:

1 | class Teacher(People): |
Python运行结果:

Python从语法层面并没有像Java那样提供对抽象类的支持,但是我们可以通过
abc模块的ABCMeta元类和abstractmethod(class CLASSNAME(metaclass=ABCMeta):)包装器来达到抽象类的效果,如果一个类中存在抽象方法那么这个类就不能够实例化。
1 | #docker中启动redis并设置密码 |
在Docker中mysql5.7安装和设置与8.0基本一致
1 | # docker 中下载 mysql |
1 | #设置rabbit默认用户与密码 |
1 | #在docker中停止rabbitMq |