精华内容
下载资源
问答
  • java学士后第一本书,动物乐园项目源代码,有需要的朋友可以拿走
  • Java技术丛书:Java模式,进阶必备
  • 沈阳理工大学课程设计报告 PAGE PAGE - 2 - PAGE PAGE 1 成 绩 评 定 表 学生姓名 班级学号 专 业 课程设计题目 基于Java动物换位游戏软件设计 评 语 组长签字 成绩 日期 2013 年 月 日 课程设计任务 学 院 信息...
  • Java读书笔记

    2020-07-21 18:05:05
    Java读书笔记 目录 Java读书笔记 1 总览 5 1.1. Java编程基础 5 1.2. Java编程规范 5 1.3. 设计模式(基于java实现) 5 1.4. 重构,改善既有的代码的设计 5 1.5. Java web应用框架:Springboot 5 Java基础知识 5...

    Java读书笔记

    目录

    Java读书笔记 1

    1. 总览 5

    1.1. Java编程基础 5

    1.2. Java编程规范 5

    1.3. 设计模式(基于java实现) 5

    1.4. 重构,改善既有的代码的设计 5

    1.5. Java web应用框架:Springboot 5

    2. Java基础知识 5

    2.1. Java基础语法 5

    2.2. Java高级语法 5

    2.3. Java高级特性 5

    3. Java编程工具 5

    3.1. Sublime Text 5

    3.2. vim 5

    3.3. IntelliJ IDEA 5

    4. Java虚拟机 5

    4.1. 第一部分 走近java 6

    4.1.1. 走近java 6

    4.2. 第二部分 自动内存管理机制 6

    4.2.1. Java内存区域与内存溢出异常 6

    4.2.2. 垃圾收集器与内存分配策略 6

    4.2.3. 虚拟机性能监控与故障处理工具 6

    4.2.4. 调优案例分析与实战 6

    4.3. 第三部分 虚拟机执行子系统 6

    4.3.1. 类文件结构 6

    4.3.2. 虚拟机类加载机制 6

    4.3.3. 虚拟机字节码执行引擎 6

    4.3.4. 类加载及执行子系统的案例与实战 6

    4.4. 第四部分 程序编译与代码优化 6

    4.4.1. 早期(编译器)优化 6

    4.4.2. 晚期(运行期)优化 6

    4.5. 第五部分 高效并发 6

    4.5.1. Java内存模型与线程 7

    4.5.2. 线程安全与锁优化 7

    5. Java编程规范 7

    5.1. 编程规约 7

    5.1.1. 命名风格 7

    5.1.2. 常量定义 7

    5.1.3. 代码格式 7

    5.1.4. OOP规约 7

    5.1.5. 集合处理 7

    5.1.6. 并发处理 7

    5.1.7. 控制语句 7

    5.1.8. 注释规约 7

    5.1.9. 其他 7

    5.2. 异常日志 7

    5.2.1. 异常处理 7

    5.2.2. 日志规约 7

    5.3. 单元测试 8

    5.4. 安全规约 8

    5.5. Mysql数据库 8

    5.5.1. 建表规约 8

    5.5.2. 索引规约 8

    5.5.3. SQL语句 8

    5.5.4. ORM映射 8

    5.6. 工程结构 8

    5.6.1. 应用分层 8

    5.6.2. 二方依赖库 8

    5.6.3. 服务器 8

    6. 软件建模与设计 8

    6.1. UML类图 8

    6.2. UML时序图 15

    角色 15

    对象 15

    生命线 16

    控制焦点 16

    消息 16

    自关联消息 16

    7. 设计模式 19

    7.1. 创建型模式 19

    7.1.1. 抽象工厂(abstract factory) 19

    7.1.2. 生成器(Builder) 19

    7.1.3. 工厂方法(Factory) 19

    7.1.4. 原型(Prototype) 19

    7.1.5. 单例(Singleton) 19

    7.2. 结构型模式 19

    7.2.1. 适配器(adapter) 19

    7.2.2. 桥接(bridge) 19

    7.2.3. 组合(composite) 19

    7.2.4. 装饰(decorator) 19

    7.2.5. 外观(facade) 19

    7.2.6. 享元(flyweight) 19

    7.2.7. 代理(proxy) 19

    7.3. 行为型模式 19

    7.3.1. 责任链(chain of responsibility) 20

    7.3.2. 命令(command) 20

    7.3.3. 解释器(interpreter) 20

    7.3.4. 迭代器(Tterator) 20

    7.3.5. 中介者(mediator) 20

    7.3.6. 备忘录(mementor) 20

    7.3.7. 观察者(observer) 20

    7.3.8. 状态(state) 20

    7.3.9. 策略(strategy) 20

    7.3.10. 模板方法(template method) 20

    7.3.11. 访问者(visitor) 20

    8. 代码重构 20

    8.1. 引言 20

    8.2. 为何重构 21

    8.3. 代码的坏味道 23

    8.4. 构筑测试体系 24

    9. 数据库操作 25

    9.1. SQL数据库原生 25

    9.2. ORM 25

    10. Web框架 – Springboot 25

    11. 操作系统 25

    11.1. Ubuntu 25

    11.2. Redhat 25

    11.3. CentOS 25

    12. 运维模型 25

    12.1. SRE google运维 25

    12.2. 管理kubernetes(k8s) 25

    12.3. Docker 25

    12.4. CI/CD 25

    13. Java测试工具 25

    13.1. 单元测试 25

    13.1.1. Junit 26

    13.2. 接口测试 26

    13.2.1. Postman 26

    13.2.2. Jmeter 26

    13.3. UI测试 26

    13.3.1. Selenium(基于xpath) 26

    13.3.2. Airtest(基于图像&python) 26

    14. Java项目管理工具 26

    14.1. Maven 26

    15. Java库 26

    15.1. Apache 26

    15.1.1. Apache Dubbo 26

    15.1.2. Apache Hadoop 26

    15.1.3. Apache Beam 26

    15.1.4. Apache Eagle 26

    15.1.5. Apache Geode 27

    15.1.6. Apache Twill 27

    15.1.7. Apache Kudu 27

    15.1.8. Apache Bahir 27

    15.1.9. Apache Zeppelin 27

    15.1.10. Apache TinkerPop 27

    15.1.11. Apache Apex 27

    15.1.12. Apache Sentry 27

    15.1.13. Apache Arrow 27

    15.2. 工具库 27

    总览

    Java编程基础

    Java编程规范

    设计模式(基于java实现)

    重构,改善既有的代码的设计

    Java web应用框架:Springboot

    Java基础知识

    Java基础语法

    Java高级语法

    Java高级特性

    Java编程工具

    Sublime Text

    vim

    IntelliJ IDEA

    Java虚拟机

    第一部分 走近java

    走近java

    第二部分 自动内存管理机制

    Java内存区域与内存溢出异常

    垃圾收集器与内存分配策略

    虚拟机性能监控与故障处理工具

    调优案例分析与实战

    第三部分 虚拟机执行子系统

    类文件结构

    虚拟机类加载机制

    虚拟机字节码执行引擎

    类加载及执行子系统的案例与实战

    第四部分 程序编译与代码优化

    早期(编译器)优化

    晚期(运行期)优化

    第五部分 高效并发

    Java内存模型与线程

    线程安全与锁优化

    Java虚拟机

    Java编程规范

    编程规约

    命名风格

    常量定义

    代码格式

    OOP规约

    集合处理

    并发处理

    控制语句

    注释规约

    其他

    异常日志

    异常处理

    日志规约

    单元测试

    安全规约

    Mysql数据库

    建表规约

    索引规约

    SQL语句

    ORM映射

    工程结构

    应用分层

    二方依赖库

    服务器

    软件建模与设计

    UML类图

    1. 泛化(Generalization)

    【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。

    例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

    【箭头指向】:带三角箭头的实线,箭头指向父类

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-546Mo1Hp-1614078282859)(media/24b53fd9d9b38eed8fb41d637461cb3f.png)]

    2. 实现(Realization)

    【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.

    【箭头指向】:带三角箭头的虚线,箭头指向接口

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HukTcRJu-1614078282861)(media/d7804708323a61859c602ee70f661abb.png)]

    3. 关联(Association)

    【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,

    丈夫与妻子关联可以是双向的,也可以是单向的。

    双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

    【代码体现】:成员变量

    【箭头及指向】:带普通箭头的实心线,指向被拥有者

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aR8hpM1w-1614078282862)(media/8641d79c9e2070e8ed0e38cd8958fb74.png)]

    上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。

    但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

    下图为自身关联:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vRll2At5-1614078282863)(media/24df7a5e00e7545786cc6bae127f4d29.png)]

    4. 聚合(Aggregation)

    【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。

    如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

    聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

    【代码体现】:成员变量

    【箭头及指向】:带空心菱形的实心线,菱形指向整体

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7hV2s15L-1614078282863)(media/a66145d66c34c67ad172e4b8c28e2139.png)]

    5. 组合(Composition)

    【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。

    如公司和部门是整体和部分的关系,没有公司就不存在部门。

    组合关系是关联关系的一种,是比聚合关系还要强的关系,

    它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

    【代码体现】:成员变量

    【箭头及指向】:带实心菱形的实线,菱形指向整体

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XoOSu4ey-1614078282864)(media/a9005d9c756c4f1ea1db8e627c6ff9f2.png)]

    6. 依赖(Dependency)

    【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,

    所以要尽量不使用双向的互相依赖.

    【代码表现】:局部变量、方法的参数或者对静态方法的调用

    【箭头及指向】:带箭头的虚线,指向被使用者

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FPdqtzUE-1614078282865)(media/43f13ae8abc1749dd8c4a64a15d8f374.png)]

    7.类图集合关系

    各种关系的强弱顺序:

    泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

    下面这张UML图,比较形象地展示了各种类图关系:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7mjk8hsh-1614078282865)(media/36a85b46d203432f1d777402e1ae8109.png)]

    类图绘制的要点

    1类的操作是针对类自身的操作,而不是它去操作人家。比如书这个类有上架下架的操作,是书自己被上架下架,不能因为上架下架是管理员的动作而把它放在管理员的操作里。

    2两个相关联的类,需要在关联的类中加上被关联类的ID,并且箭头指向被关联类。可以理解为数据表中的外键。比如借书和书,借书需要用到书的信息,因此借书类需包含书的ID,箭头指向书。

    3由于业务复杂性,一个显示中的实体可能会被分为多个类,这是很正常的,类不是越少越好。类的设计取决于怎样让后台程序的操作更加简单。比如单看逻辑,借书类可以不存在,它的信息可以放在书这个类里。然而借还书和书的上架下架完全不是一回事,借书类对借书的操作更加方便,不需要去重复改动书这个类中的内容。此外,如果书和借书是1对多的关系,那就必须分为两个类。

    4类图中的规范问题,比如不同关系需要不同的箭头,可见性符号等。

    UML时序图

    时序图(Sequence
    Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的。顺序图中显示的是参与交互的对象及其对象之间消息交互的顺序。时序图中包括的建模元素主要有:角色(Actor)、对象(Actor)、生命线(Lifeline)、控制焦点(Activation)、消息(Message)、自关联消息、组合片段。

    角色

    系统角色,可以是人、及其甚至其他的系统或者子系统。

    对象

    对象包括三种命名方式:

    第一种方式包括对象名和类名;

    第二中方式只显示类名不显示对象名,即表示他是一个匿名对象;

    第三种方式只显示对象名不显示类名。

    生命线

    生命线在顺序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间。

    控制焦点

    控制焦点是顺序图中表示时间段的符号,在这个时间段内对象将执行相应的操作。用小矩形表示。

    消息

    消息一般分为同步消息(Synchronous Message),异步消息(Asynchronous
    Message)和返回消息(Return Message)。

    同步消息:消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。

    异步消息:消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。

    返回消息:返回消息表示从过程调用返回。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GJmYLL0a-1614078282866)(media/c88b4fb23da07dbc0db088a22462d51c.png)]

    自关联消息

    表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。

    UML时序图组合片段简要说明 :

    ref:引用其他地方定义的组合片段;
    alt:在一组行为中根据特定的条件选择某个交互;
    opt:表示一个可选的行为;
    break:提供了和编程语言中的break类拟的机制;
    par:支持交互片段的并发执行;
    seq:强迫交互按照特定的顺序执行;
    strict:明确定义了一组交互片段的执行顺序;
    neg:用来标志不应该发生的交互;
    region:标志在组合片段中先于其他交互片断发生的交互;
    ignore:明确定义了交互片段不应该响应的消息;
    consider:明确标志了应该被处理的消息
    assert:标志了在交互片段中作为事件唯一的合法继续者的操作数;
    loop:说明交互片段会被重复执行

    例如:并行:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GrFctaQU-1614078282866)(media/28a1b9fe31872852ec5d491e3779afac.png)]

    例如:循环

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vppqwFIT-1614078282866)(media/1b96d660ae7148d870a6e28f3fa8657f.png)]

    Stay hungry,stay foolish !

    设计模式

    创建型模式

    抽象工厂(abstract factory)

    生成器(Builder)

    工厂方法(Factory)

    原型(Prototype)

    单例(Singleton)

    结构型模式

    适配器(adapter)

    桥接(bridge)

    组合(composite)

    装饰(decorator)

    外观(facade)

    享元(flyweight)

    代理(proxy)

    行为型模式

    责任链(chain of responsibility)

    命令(command)

    解释器(interpreter)

    迭代器(Tterator)

    中介者(mediator)

    备忘录(mementor)

    观察者(observer)

    状态(state)

    策略(strategy)

    模板方法(template method)

    访问者(visitor)

    代码重构

    引言

    我该怎么开始介绍重构(refactoring)呢?按照传统作法,一开始介绍某个东西时,首先应该大致讲讲它的历史、主要原理等等。可是每当有人在会场上介绍这些东西,总是诱发我的瞌睡虫。我的思绪开始游荡,我的眼神开始迷离,直到他或她拿出实例,我才能够提起精神。实例之所以可以拯救我于太虚之中,因为它让我看见事情的真正行进。谈厚理,很容易流于泛泛,又很难说明如何实际应用。给出一个实例,
    却可以帮助我把事情认识清楚。

    所以我决定以一个实例作为本书起点。在此过程中我将告诉你很多重构原理,并且让你对重构过程有一点感觉。然后我才能向你提供普通惯见的原理介绍。

    但是,面对这个介绍性实例,我遇到了一个大问题。如果我选择一个大型程序,对程序自身的描述和对重构过程的描述就太复杂了,任何读者都将无法掌握(我试了
    一下,哪怕稍微复杂一点的例子都会超过100页)。如果我选择一个够小以至于容易理解的程序,又恐怕看不出重构的价值。

    和任何想要介绍「应用于真实世界中的有用技术」的人一样,我陷入了一个十分典型的两难困境。我将带引你看看如何在一个我所选择的小程序中进行重构,然而坦白说,那个程序的规模根本不值得我们那么做。但是如果我给你看的代码是大系统的一部分,重构技术很快就变得重要起来。所以请你一边观赏这个小例子,一边想像它身处于一个大得多的系统。

    为何重构

    我不想把重构说成治百病的万灵丹,它绝对不是所谓的「银弹」[1]。不过它的确很有价值,虽不是一颗银子弹却是一把「银钳子」,可以帮助你始终良好地控制自己的代码。重构是个工具,它可以(并且应该)为了以下数个目的而被运用。

    [1]译注:「银弹」(silver bullet)是美国家喻户晓的比喻。美国民间流传月圆之夜狼人
    出没,只有以纯银子弹射穿狼人心脏,才能制服狼人。

    「重构」改进软件设计

    如果没有重构,程序的设计会逐渐腐败变质。当人们只为短期目的,或是在完全理解整体设计之前,就贸然修改代码,程序将逐渐失去自己的结构,程序员愈来愈难通过阅读源码而理解原本设计。重构很像是在整理代码,你所做的就是让所有东西回到应该的位置上。代码结构的流失是累积性的。愈难看出代码所代表的设计意涵,就愈难保护其中设计,于是该设计就腐败得愈快。经常性的重构可以帮助代码维持自己该有的形态。

    同样完成一件事,设计不良的程序往往需要更多代码,这常常是因为代码在不同的地方使用完全相同的语句做同样的事。因此改进设计的一个重要方向就是消除重复代码(Duplicate
    Code)。这个动作的重要性着眼于未来。代码数量减少并不会使系统运行更快,因为这对程序的运行轨迹几乎没有任何明显影响。然而代码数量减少将使未来可能的程序修改动作容易得多。代码愈多,正确的修改就愈困难,因为有更多代码需要理解。你在这儿做了点修改,系统却不如预期那样工作,因为你未曾修改另一处——那儿的代码做着几乎完全一样的事情,只是所处环境略有不同。
    如果消除重复代码,你就可以确定代码将所有事物和行为都只表述一次,惟一一次,这正是优秀设计的根本。

    「重构」使软件更易被理解

    从许多角度来说,所谓程序设计,便是与计算机交谈。你编写代码告诉计算机做什么事,它的响应则是精确按照你的指示行动。你得及时填补「想要它做什么」和「告
    诉它做什么」之间的缝隙。这种编程模式的核心就是「准确说出吾人所欲」。除了计算机外,你的源码还有其他读者:数个月之后可能会有另一位程序员尝试读懂你的代码并做一些修改。我们很容易忘记这第二位读者,但他才是最重要的。计算机是否多花了数个钟头进行编译,又有什么关系呢?如果一个程序员花费一周时间来修改某段代码,那才关系重大——如果他理解你的代码,这个修改原本只需一小时。

    问题在于,当你努力让程序运转的时候,你不会想到未来出现的那个开发者。是的,是应该改变一下我们的开发节奏,对代码做适当修改,让代码变得更易理解。重构可以帮助我们让代码更易读。一开始进行重构时,你的代码可以正常运行,但结构不够理想。在重构上花一点点时间,就可以让代码更好地表达自己的用途。这种编程模式的核心就是「准确说出你的意思」。

    关于这一点,我没必要表现得如此无私。很多时候那个「未来的开发者」就是我自己。此时重构就显得尤其重要了。我是个很懒惰的程序员,我的懒惰表现形式之一就是:总是记不住自己写过的代码。事实上对于任何立可查阅的东西我都故意不去记它,因为我怕把自己的脑袋塞爆。我总是尽量把该记住的东西写进程序里头,这样我就不必记住它了。这么一来我就不必太担心Old
    Peculier(译注:一种有名的麦芽酒〉[Jackson]杀光我的脑细胞。

    这种可理解性还有另一方面的作用。我利用重构来协助我理解不熟悉的代码。当我看到不熟悉的代码,我必须试着理解其用途。我先看两行代码,然后对自己说:『噢,
    是的,它做了这些那些……』。有了重构这个强大武器在手,我不会满足于这么一点脑中体会。我会真正动手修改代码,让它更好地反映出我的理解,然后重新执行,看它是否仍然正常运作,以此检验我的理解是否正确。

    一开始我所做的重构都像这样停留在细枝末节上。随着代码渐趋简洁,我发现自己可以看到一些以前看不到的设计层面的东西。如果不对代码做这些修改,也许我永远看不见它们,因为我的聪明才智不足以在脑子里把这一切都想像出来。Ralph
    Johnson把这种「早期重构」描述为「擦掉窗户上的污垢,使你看得更远」。研究代码时我发现,重构把我带到更高的理解层次上。如果没有重构,我达不到这种层次。

    代码的坏味道

    现在,对于「重构如何运作」,你已经有了相当好的理解。但是知道How不代表
    知道When。决定何时重构、何时停止和知道重构机制如何运转是一样重要的。

    难题来了!解释「如何删除一个instance变量」或「如何产生一个class
    hierarchy(阶层体系)」很容易,因为这些都是很简单的事情。但要解释「该在什么时候做这些动作」就没那么顺理成章了。除了露几手含混的编程美学(说实话,这就是咱
    这些顾问常做的事),我还希望让某些东西更具说服力一些。

    去苏黎士拜访Kent
    Beck的时候,我正在为这个微妙的问题大伤脑筋。也许是因为受到刚出生的女儿的气味影响吧,他提出「用味道来形容重构时机」。『味道』,他说,『听起来是不是比含混的美学理论要好多了?』啊,是的。我们看过很多很
    多代码,它们所属的项目从大获成功到奄奄一息都有。观察这些代码时,我们学会了从中找寻某些特定结构,这些结构指出(有时甚至就像尖叫呼喊)重构的可能性。(本章主词换成「我们」,是为了反映一个事实:Kent和我共同撰写本章。你应该可以看出我俩的文笔差异——插科打诨的部分是我写的,其余都是他的。〕

    我们并不试图给你一个「重构为时晚矣」的精确衡量标准。从我们的经验看来,没有任何量度规矩比得上一个见识广博者的直觉。我们只会告诉你一些迹象,它会指出「这里有一个可使用重构解决的问题」。你必须培养出自己的判断力,学会判断一个class内有多少instance变量算是太大、一个函数内有多少行代码才算太长。

    如果你无法确定该进行哪一种重构手法,请阅读本章内容和封底内页表格来寻找灵感。你可以阅读本章(或快速浏览封底内页表格〕来判断自己闻到的是什么味道,
    然后再看看我们所建议的重构手法能否帮助你。也许这里所列的「臭味条款」和你所检测的不尽相符,但愿它们能够为你指引正确方向。

    构筑测试体系

    如果你想进行重构(refactoring),首要前提就是拥有一个可靠的测试环境。就算你够幸运,有一个可以自动进行重构的工具,你还是需要测试。而且短时间内不可能有任何工具可以为我们自动进行所有可能的重构。

    我并不把这视为缺点。我发现,编写优良的测试程序,可以极大提高我的编程速度,即使不进行重构也一样如此。这让我很吃惊,也违反许多程序员的直觉,所以我有
    必要解释一下这个现象。

    数据库操作

    SQL数据库原生

    ORM

    Web框架 – Springboot

    手机端框架-Android

    操作系统

    Ubuntu

    Redhat

    CentOS

    运维模型

    SRE google运维

    管理kubernetes(k8s)

    Docker

    CI/CD

    Java测试工具

    单元测试

    Junit

    接口测试

    Postman

    Jmeter

    UI测试

    Selenium(基于xpath)

    Airtest(基于图像&python)

    前沿测试技术

    混沌工程

    接口测试自动生成&用例推荐

    手工用例自动转化执行脚本

    性能数据分析技术

    CI/CD

    分层测试

    安全测试技术

    Java项目管理工具

    Maven

    Gradle

    Java库

    Apache

    Apache Dubbo

    Apache Hadoop

    Apache Beam

    Apache Eagle

    Apache Geode

    Apache Twill

    Apache Kudu

    Apache Bahir

    Apache Zeppelin

    Apache TinkerPop

    Apache Apex

    Apache Sentry

    Apache Arrow

    工具库

    参考资料

    展开全文
  • 动物识别系统java版、C版

    热门讨论 2008-12-14 20:51:34
    实验目的: 1、利用产生式系统的结构设计出动物识别系统,从而理解知识的产生式表示法;...该系统引用中P37页的十五条规则,可以识别老虎、金钱豹、斑马、长颈鹿、鸵鸟、企鹅、信天翁这7种动物
  • 人工智能这本书的最后给出了一个动物识别系统的例子,是C版的,偶改为用java,希望对学 java有点帮助.
  • 动物换位的集合,实现了许多功能【实例截图】【核心代码】java课程设计└── java课程设计├── 0953105487.jpg├── 0955199427.png├── 1003387420.jpg├── bin│ ├── Animal.class│ ├── ...

    【实例简介】

    课程设计优秀的作品,绝对让你满意.

    动物换位的集合,实现了许多功能

    【实例截图】

    【核心代码】

    java课程设计

    └── java课程设计

    ├── 0953105487.jpg

    ├── 0955199427.png

    ├── 1003387420.jpg

    ├── bin

    │   ├── Animal.class

    │   ├── AutoMoveAnimal$1.class

    │   ├── AutoMoveAnimal.class

    │   ├── ChangeAnimalWindow$1.class

    │   ├── ChangeAnimalWindow.class

    │   ├── HandleMouse.class

    │   ├── People.class

    │   ├── Point.class

    │   ├── Record.class

    │   ├── ShowRecordDialog$1.class

    │   ├── ShowRecordDialog.class

    │   └── Stone.class

    ├── box.jpg

    ├── cat.jpg

    ├── chimes.wav

    ├── css 、.ppt

    ├── dog.jpg

    ├── DSC_0009.jpg

    ├── DSC_0010.jpg

    ├── DSC_0011.jpg

    ├── DSC_0012.jpg

    ├── DSC_0013.jpg

    ├── editplus_u.ini

    ├── pigone.jpg

    ├── pigtwo.jpg

    ├── src

    │   ├── Animal.java

    │   ├── AutoMoveAnimal.java

    │   ├── ChangeAnimalWindow.java

    │   ├── HandleMouse.java

    │   ├── People.java

    │   ├── Point.java

    │   ├── Record.java

    │   ├── ShowRecordDialog.java

    │   └── Stone.java

    ├── stone.jpg

    ├── test.html

    ├── txt.css

    ├── 中级英雄排行榜.txt

    ├── 初级英雄排行榜.txt

    ├── 动物.doc

    ├── 动物换位.jar

    ├── 新建 文本文档.txt

    ├── 第七章.ppt

    └── 高级英雄排行榜.txt

    3 directories, 47 files

    展开全文
  • 由于自动化构建、依赖管理等问题并不只存在于Java世界,因此非Java程序员也能够从该中获益。无论你是从未接触过Maven、还是已经用了Maven很长时间,亦或者想要扩展Maven,都能从本书获得有价值的参考建议。其次,...

    Maven权威指南

    首先,本书适合所有Java程序员阅读。由于自动化构建、依赖管理等问题并不只存在于Java世界,因此非Java程序员也能够从该书中获益。无论你是从未接触过Maven、还是已经用了Maven很长时间,亦或者想要扩展Maven,都能从本书获得有价值的参考建议。其次,本书也适合项目经理阅读,它能帮助你更规范、更高效地管理Java项目。

    Maven学习目录:

    赶时间的朋友可以直接跳到文末获得免费领取方式!

    • 第1章对Maven做了简要介绍,通过一些程序员熟悉的例子介绍了Maven是什么,为什么需要Maven。建议所有读者都阅读以获得一个大局的印象。
    • 第2~3章是对Maven的一个入门介绍,这些内容对初学者很有帮助,如果你已经比较熟悉Maven,可以跳过。
    • 第4章介绍了本书使用的背景案例,后面的很多章节都会基于该案例展开,因此建议读者至少简单浏览一遍。
    • 第5~8章深入阐述了Maven的核心概念,包括坐标、依赖、仓库、生命周期、插件、继承和多模块聚合,等等,每个知识点都有实际的案例相佐,建议读者仔细阅读。
    • 第9章介绍使用Nexus建立私服,如果你要在实际工作中使用Maven,这是必不可少的。
    • 第10~16章介绍了一些相对高级且离散的知识点,包括测试、持续集成与Hudson、Web项目与自动化部署、自动化版本管理、智能适应环境差异的灵活构建、站点生成,以及Maven的Eclipse插件m2eclipse,等等。读者可以根据自己实际需要和兴趣选择性地阅读。
    • 第17~18章介绍了如何编写Archeype和Maven插件。一般的Maven用户在实际工作中往往不需要接触这些知识,如果你需要编写插件扩展Maven,或者需要Archetype维护自己的项目骨架以方便团队开发,那么可以仔细阅读这两章的内容。

    第一章:maven简介

    • 何为maven
    • 为什么需要maven
    • maven与极限编程
    • 被误解的maven

    第二章:maven的安装和配置

    • 在Windows上安装maven
    • 在基于UNIX的系统上安装maven
    • 安装目录分析
    • maven安装最佳实践

    第三章:maven使用入门

    • 编写POM
    • 打包和运行
    • m2eclipse简单使用
    • NetBeans Maven插件简单使用

    第四章:背景案例
    第五章:坐标和依赖
    第六章:仓库
    第七章:生命周期和插件
    第八章:聚合与继承
    第九章:使用Nexus创建私服
    第十章:使用Maven进行测试
    第十一章:使用Hudson进行持续集成
    第十二章:使用Maven构建Web应用
    第十三章:版本管理
    第十四章:灵活的构建
    第十五章:生成项目站点
    第十六章:m2eclipse
    第十七章:编写maven插件
    第十八章:Archetype

    最后

    最后,强调几点:

    • 1. 一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你的简历来问的; 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试之前好好回顾一下自己所做的项目;
    • 2. 和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;
    • 3. 注意自己开源的Github项目,面试官可能会挖你的Github项目提问;

    我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

    以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目。

    如何获取整理好的Java面试专题资料?

    资料获取方式:点击这里免费下载

    面试答案

    三面头条+四面阿里+五面腾讯拿offer分享面经总结,最终入职阿里

    三面头条+四面阿里+五面腾讯拿offer分享面经总结,最终入职阿里

    [外链图片转存中…(img-4LAP0snA-1626855946474)]

    [外链图片转存中…(img-c1uxVXKP-1626855946475)]

    三面头条+四面阿里+五面腾讯拿offer分享面经总结,最终入职阿里

    展开全文
  • Java 读书笔记9 接口

    2017-02-27 21:38:23
    理解起来很容易,比如父类是动物,子类是狗;动物嘛,肯定得会呼吸; public class Animal { protected void breath() { System.out.println("breath"); }}public class Mouse extends Animal { public ...

    接口

    抽象类:

    1. 理解起来很容易,比如父类是动物,子类是狗;动物嘛,肯定得会呼吸;
    
    public class Animal {
        protected  void breath()  
        {
            System.out.println("breath");
        }
    
    }
    
    public class Mouse extends Animal {
        public  static  void  main(String a[])
        {
            Animal mouse = new Mouse("11",1);     
            mouse.breath();     //这里输出的实际上就是mousebreath ,通过父类我们可以随意访问详细对象的方法;
            //但是实际上,我们几乎不用父类初始化,这样breath方法就显得没有意义;
            //那把他定义为抽象有什么好处呢?一目了然,立马就知道子类需要具体实现;
            //这样就把声明和实现分开了
        }
        public  Mouse(String myName, int myid) {
            super(myName, myid);
        }
        @Override
        protected void breath() {
            //super.breath();
            System.out.println("mousebreath");
        }
    
    
    }

    接口

    1. 抽象类是说有这么一个父类方法几乎不用,但是又想定义出来,形成继承关系;使得通过父类可以简单调用相应方法;那么接口呢,就是父类中全部的东西都是抽象的;就像是动物,动物有一大堆方法,呼吸啊,吃啊之类的;这个类我们将其接口话,所有implements动物的,都得有这些方法;你不重写就算错
    
    public interface Instrument {
        int VALUE = 5 ;
        void  play();
        void  adjust();
    }
    
    public class Wind implements  Instrument{
        public  static  void  main(String a[])
        {
            Instrument instrument = new Wind();     //这样就可以访问接口里的属性了;
           int b =  Wind.VALUE;                     //虽然它是final&static9
    
        }
        @Override
        public void play() {
    
        }
    
        @Override
        public void adjust() {
    
        }
    }

    完全解耦 与适配器类

    1. 书上写的太晕了,完全看不懂;解耦嘛,简单说就是通过接口,把只有继承关系中能用的开放出去;
    2. 抽象类可以不实现接口的方法
    3. 适配器

    多重继承

    1.当存在继承+接口时,接口不需要实现;
    
    2. 接口的作用 向上转型为多个父类(接口类),同时防止创建对象
    
    public interface CanFight {       //不可被创建对象
        void  fight();
    }
    public class ActionCharacter {
        public  void  fight()
        {
            System.out.println("fight1");
        }
    }
    public class Hero extends  ActionCharacter implements  CanFight{
    
        @Override
        public void fight() {            //此处是不用写的,此处重写父类方法,而不是接口
            super.fight();
            System.out.println("fight");
        }
    }
    public class Adventure {
        public  static  void  t(CanFight fight)
        {
            fight.fight();
        }
        public  static  void  t2(ActionCharacter x )
        {
            x.fight();
        }
        public  static  void  main(String a[])
        {
            Hero hero = new Hero();
            t(hero);
            t2(hero);
        }
    }

    通过继承扩展接口

    1. 接口可以通过继承保留父类接口的方法,同时加入自己的,这样接口的扩展性就变得很好;由于接口继承,方法都是未实现的,所以肯定没有重写什么的,也就不会出现c++多重继承不知道继承谁的问题了;
    

    适配器 (需要重点复习)

    插座示例

    工厂类

    1. 和适配器一样,属于模式上的事情;所以日后再说?
    展开全文
  • java的初学者通常面临的第一个问题就是关于选的问题,而我当时正是被《Head First Java》这本书的风趣幽默所吸引。一般的技术类书籍都充满着密密麻麻的文字,其中偶尔夹杂着一些代码片段,而这本书的整个排版都很...
  • 开发动物类,其中动物分别为企鹅以及老鼠,要求如下: 企鹅: 属性(姓名,id), 方法(吃,睡,自我介绍) 老鼠: 属性(姓名,id), 方法(吃,睡,自我介绍) 企鹅类: 1 public class Penguin{ 2 private ...
  • java编程思想读书笔记

    2017-03-20 16:03:05
    编写构造器时有一条有效的准则:“尽可能用简单的方法使对象进入正常状态,如果可以的话,避免调用其他方法”,下面的实例说明//: polymorphism/PolyConstructors.java // Constructors and polymorphism // do
  • JavaJava语言程序设计(基础篇)全书笔记

    千次阅读 多人点赞 2019-06-04 10:58:05
    Java语言程序设计(基础篇)全书笔记 标签:编程 JAVA 课本链接:https://pan.baidu.com/s/184nwV1VfvKRJMiCjYZaqJQ 提取码:wyzl 这篇博客本来在Cmd Markdown编写,现在转载过来,因为格式原因,这边代码高亮和...
  • 下边是小编列的图灵出版的比较新且评价比较好的动物书,偶尔也会夹杂一两本经典…… 如果你也有读过还不错的动物书欢迎留言补充,争取组建个动物园。 O’Reilly 书籍封面上的许多动物都属于濒危物种,它们都是...
  • 上一篇java读书系列笔记文章:#java读书笔记#面向对象1 14、Math类的使用(重点) (1)数学操作类:该类没有构造函数,方法均为静态的 (2)掌握内容 A:成员变量 **E:比任何其他值都更接近e(即自然...
  • java程序代码运行过程: 源代码.java——》编译器——》输出.class字节码文件——》java虚拟机读取与执行 类与对象 类是创建对象的模型,所有的java程序都定义在类中 对象包括变量和方法 变量有两种:主...
  • java解惑 pdf精简版

    2010-04-27 12:02:43
    本系列内容来源于《JAVA解惑》一,不是本人所独创,此系列内容应该说是该的一个精简版,但内容含盖90%左右,本人看完之后是大有收获! 第1章 绪论 第2章 表达式之谜 谜题1:奇数性 谜题2:找零时刻 谜题3:长...
  • 读《JAVA编程思想》的读书笔记
  • 网上有个老梗叫“abandon”,对于这个梗,我是非常感同身受的,特别是在阅读专业这方面,很多...这本书一点也不厚,不像《Java编程思想》和《JAVA核心技术》那么厚,也不是那种高深的理论,它就是一本Java基础...
  • 《Head First Java》20200911读书笔记 第七章 继承与多态 子类会自动获得父类的功能。 覆盖的意思是由子类重新定义继承下来的方法以改变或延伸此方法的行为。 父类比较抽象,子类比较具体。 继承的运行方法 在设计...
  • Java解惑》读书笔记

    千次阅读 2015-08-17 23:54:49
    摘选自《Java解惑》一,之前整理了部分,一直没看完,最近为了督促自己每天读点这本书,决定一天至少更新一个谜题的内容,欢迎讨论。 欢迎关注技术博客http://blog.sina.com.cn/u/1822488043 Java解惑读书...
  • 2.1 AMQP 2.2 MQTT 2.3 STOMP 2.4 XMPP 2.5 JMS Part 3RabbitMQ 具体介绍RabbitMQ的特点、主要概念和Java使用示例,接着通过使用RabbitMQ实现异步处理和消息推送的功能,最后给出在工作中使用RabbitMQ时的一些实践...
  • 一、题目要求 编写一个小的程序,其中定义一些接口、类、抽象类,定义它们的成员(字段及方法), 要求使用使用setter/getter, static, final, ...动物世界:来一次吃西瓜大赛;图书馆:模拟一天的借阅过程;学校:模...
  • 这是一本阐述微观设计的,而不是阐述宏观设计的。《Java与模式》首先阐述了代码的设计原则,又描述了怎样来创建一个类或对象,紧接着告诉大家怎样来组织这些类和对象来实现功能。它是设计模式,而不是架构模式。...
  • o reilly动物书 《 O'Reilly OpenStack操作指南》由OpenStack社区的几位成员撰写,是OpenStack文档中提供的优秀指南的纸质版本。 尽管我还没有接触印刷版,但是我发现数字版看起来非常熟悉,因为许多关于特定...
  • 虽然 Java 不是函数式语言,但 Java 8 Lambda 表达式和方法引用 (Method References) 允许你以函数式编程。 终于聊到函数式编程了,笔者之前写过一点Haskell,里面的编程思想对我来说简直就是洗脑般的冲击,第一次...
  • Head First Java(第2版)中文版辅导 1.第10页,P10 以两条斜线开始的行是注释 x = 22; // 我是注释,推荐使用IntelliJ IDEA软件学习本书 还有一种: /*中间文字也是注释*/ 2.第10页,P10 空格符通常...
  • Java8允许在接口内声明静态方法; Java8可以在接口内添加默认方法. 实现类会默认继承接口的默认方法,实现类可以重写该方法. 通过在Java8中引入这一新特性,,缺失的方法实现会作为接口的一 部分由实现类继承(所以命名...
  • 课程设计优秀的作品,绝对让你满意. 动物换位的集合,实现了许多功能
  • 这是2019年适合Java程序员读的10本书

    千次阅读 2019-01-15 19:15:30
    除了为经验丰富的Java开发人员(他们更倾向于学习架构方面的知识,关于云、微服务、Java 9和Spring 5开发等)推荐了一些书籍,同时也为那些初级程序员或经验相对缺乏的Java开发者推荐一些适合在2019年学习的,下面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,117
精华内容 3,246
关键字:

动物书java

java 订阅