编程思想

swoft 切面编程 (AOP编程思想)

懵懂的女人 提交于 2019-12-03 13:20:55
详细的文档参考地址: AOP 切面编程技术 链接地址: https://darrykinger.com/index.php/archives/186/ AOP切面编程, Swoft AOP切面编程, AOP的定义, AOP的主要功能, AOP的核心, 不侵入原有功能代码, 给原有的功能添加新的功能, AOP常用业务日志记录事务处理权限处理, AOP的相关术语介绍 来源: https://www.cnblogs.com/bing-yu12/p/11796689.html

Java编程思想读书笔记 第一章 对象导论

▼魔方 西西 提交于 2019-12-03 07:05:40
抽象过程 纯粹的面向对象程序设计方式: 万物皆为对象: 对象可以存储数据,还可以在其自身执行操作 程序是对象的集合: 通过发送消息告诉彼此要做的 每个对象都有自己的由其它对象构成的存储:可以在程序中构建复杂的体系,并将复杂性隐藏在对象之后 每个对象都是某个类的对应实例:类的特性在于可以发送什么样的消息给它 某一特定类型的对象可以接收同样的消息 访问控制:隐藏实现细节 类创建者:创建新数据类型的程序员 客户端程序员:使用各种类以实现快速应用开发 向客户端程序员隐藏实现细节 库设计者可以改变设计方式而不影响客户端程序员 accesser specifier public private protected: 继承的类可访问 default: 包访问权限,类可以访问在同一个包中的其它类成员 继承 is-a:导出类只覆盖基类的方法。 is-like-a:导出类含新的接口元素。 静态绑定:编译器将产生对一个具体函数名字的调用,而运行时将这个调用解析到将要执行的代码的绝对地址 动态绑定:当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保调用方法的存在,并对调用参数和返回值执行类型检查(无法提供该保证的语言是弱类型的),但是并不知道将被执行的确切代码。Java默认动态绑定,更好的支持多态。 来源: https://www.cnblogs.com/Willendless/p

java编程思想

纵然是瞬间 提交于 2019-12-01 05:09:44
这篇博客全篇都是java的知识点,边看《Java编程思想》边写的,一天两天之内可能无法完成,但是我也肯定会在最近这几天内看完,然后再开始看一些网络知识了。当然我不能照着书全部重新敲一遍,我只是整理我觉得混淆的和以前并不清楚的东西。不全面也是正常了。 目录结构如下: 对象 操作符 控制执行流程 初始化与清理 访问控制权限控制 复用类 多态 接口 内部类 持有对象 通过异常处理处理错误 字符串 类型信息 泛型 数组 容器的深入研究 Java I/O系统 枚举类型 注解 并发 组件 对象 对象: 将问题空间中的元素及其在解空间中的表示称为对象。也就是说:程序可以通过添加新类型的对象使自身适用于某个特定的问题。对象具有状态,行为和标识。 类: 描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型。 接口 确定了对某一特定对象所能发出的请求。 继承在只重写基类方法与需要添加新方法都是可行,但要根据真实的情况来,区分还是很明显的。 Java完全采用动态分配内存方式,编译器可以确定对象存活的时间,并且可以自动销毁它。这样可以避免暗藏的内存泄漏问题。 在程序中,彼此独立运行的部分称之为线程。 String中每个字符都是16位或者2个字节。null在Java中表示这个引用还没指向某个对象。 当声明一个事物static时

Java编程思想---第十二章 通过异常处理错误(上)

血红的双手。 提交于 2019-11-30 08:12:39
第十二章 通过异常处理错误   Java的基本理念是“结构不佳的代码不能运行”。发现错误的理想时机是在编译阶段,也就是在你试图运行程序之前,然而编译期间并不能找出所有的错误,余下的问题必须在运行期间解决,这就需要错误源能通过某种方式,把适当的信息传递给某个接收者,而这个接收者将知道如何正确处理这个问题。 12.1 概念   “异常”这个词有“对此感到意外”的意思,问题出现了,我们也许不清楚该怎么处理,但是我们的确知道不应该置之不理,要停下来看看是不是有别人或在别的地方能够处理这个问题,只是当前的环节中还没有足够的信息来解决这个问题,所以就把这个问题提交到一个更高级别的环境中,在这里将作出正确的决定。   使用异常所带来的另一个相当明显的好处是,他往往能够降低错误处理代码的复杂度,如果不使用异常,那么就必须检查特定的错误,并在程序中的许多地方去处理它;而如果使用异常,就不必在方法调用处进行检查,因为异常机制将保证能够捕获这个错误,而且只需在一个地方处理错误,即所谓的异常处理程序中,这种方式不仅节省代码,而且把描述在正常执行过程中做什么事的代码和出了问题怎么办的代码相分离。总之,与以前的错误处理方法相比,异常机制使代码的阅读、编写和调试工作更加井井有条。 12.2 基本异常   异常情形是指阻止当前方法或作用域继续执行的问题。把异常情形与普通问题相区分很重要

java编程思想-1(第二章一切都是对象)

∥☆過路亽.° 提交于 2019-11-30 06:33:46
2.1 用引用操作对象    尽管一切都是对象,但是操纵的标识符实际上是对象的一个“引用”   引用创建:类型 引用名(例:String a:a就是一个引用) 2.2 必须由你创建所有对象    对象创建 :new 类型()(例:String a = new String():创建了一个String类型的对象并将其给了引用a)    数据存储的位置 :       寄存器:最快的存储区,位于处理器内部,程序员不能直接控制       堆栈:位于通用RAM(随机访问存储器)中,堆栈指针向下移动分配新的内存,向上移动,释放内存; 引用存储在此,但对象并不在这里       堆:一种通用的内存池(位于RAM中),但进行存储分配和清理的时候时间会长于堆栈; 对象存储于此       常量存储:常量通常直接存放在程序代码内部(但在嵌入式系统中,会将常量与其他部分隔开,因此会存放在ROM(只读存储器)中)       非RAM存储器:存储完全存活于程序之外的数据(即不管程序是否运行,该数据都存在)(例:流对象和持久化对象)    基本类型      这些类型不用new来创建对象,而是创建一个并非是引用的“自动”变量,这个变量直接存储值,并存于堆栈当中。 基本类型 大小 包装器类型 boolean ------ Boolean char 16-bits Charactor byte 8-bits

Java编程思想代码环境配置

血红的双手。 提交于 2019-11-29 23:31:47
官方代码网站已更改 https://github.com/BruceEckel/TIJ4-code 如果导入到IntelliJ中 方法1 在IntelliJ中新建一个Java项目将TIJ4-code-master.zip中examples中的所有文件拷贝到项目的src文件中。 这种方法不可行,IntelliJ需要每个对应目录下的java源代码中都写清楚package声明语句。 方法2 适用与IntelliJ IDEA的源代码 https://github.com/xbtlin/thinking-In-Java 需要额外添加Jar包 https://blog.csdn.net/sinat_36246371/article/details/53170166 注意IntelliJ的JDK一定要设置为Java8,否则还会有其他的错误。 来源: https://www.cnblogs.com/ZeroTensor/p/11538514.html

关于 java编程思想第五版 《On Java 8》

筅森魡賤 提交于 2019-11-29 21:20:46
On Java 8中文版 英雄召集令 这是该项目的GITHUB地址: https://github.com/LingCoder/OnJava8 广招天下英雄,为开源奉献!让我们一起来完成这本书的翻译吧! 如果您在阅读本书的过程中有发现不明白或者错误的地方,请随时到项目地址发布 issue 或者 fork 项目后发布 pr 帮助译者改善!不胜感激! 书籍简介 本书原作者为 [美] Bruce Eckel,即《Java 编程思想》的作者。 本书是事实上的 《Java 编程思想》第五版。 《Java 编程思想》第四版基于 JAVA 5 版本;《On Java 8》 基于 JAVA 8 版本。 快速阅读传送门 目录阅读: 进入 GitHub 完整阅读: 进入 Gitee 完整阅读: 进入 翻译说明 本书排版布局和翻译风格上参考了 阮一峰 老师的 中文技术文档的写作规范 采用第一人称叙述。 由于中英行文差异,完全的逐字逐句翻译会很冗余啰嗦。所以本人在翻译过程中,去除了部分主题无关内容、重复描写。 译者在翻译中同时参考了谷歌、百度、有道翻译的译文以及《Java编程思想》第四版中文版的部分内容(对其翻译死板,生造名词,语言精炼度差问题进行规避和改正)。最后结合译者自己的理解进行本地化,尽量做到专业和言简意赅,方便大家更好的理解学习。 由于译者个人能力、时间有限,如有翻译错误和笔误的地方

读《java编程思想》14-RTTI

邮差的信 提交于 2019-11-29 18:41:16
Java如何识别对象和类的信息,主要方式有两种: (1) RTTI,它假定我们在编译时已经知道了所有的类型。 (2)反射,允许我们在运行时发现和使用类信息。 1、为什么需要RTTI RTTI(run-time type information)即:运行时类型信息。 当从数组中取出元素时,这种容器--实际上将所有事物都当做Object持有--会将结果自动转换为所需的父类(如Shape)。这是RTTI 最基本的使用形式。因为所有类型转换都是在运行时进行正确性检查的。这也是RTTI名字的含义:在运行时,识别一个对象的类型。 2、Class对象 Class对象就是用来创建类的所有的“常规”对象的。每一个类都只有一个Class对象(单例),为了生成这个类的对象,JVM会使用“类加载器”。 注意: Java程序中,常量用关键字static final修饰,又分为: (1)编译期常量: public static final int a = 5; (2)运行时常量: public static final int b = rand.nextInt(47); 当访问编译期常量时,虽然也是静态引用,但是不会引起类加载。(已经编译到字节码中) 3、获取Class类引用的方式 (1)Class.forName 引起类加载 (2)XXXX.class 类字面常量,不引起类加载。 注意:

Java之 OOP编程思想理解1

风格不统一 提交于 2019-11-29 18:38:01
OOP 所有的编程语言都提供抽象机制。可以认为,人们能够解决问题的复杂性直接取决于抽象的类型和质量 · 例如 汇编语言和一些(非OOP)其他语言「如:BASIC、C等」都是主要针对计算机结构的抽象,所以在使用这些语言编程时,我们必须设法找到 机器模型 和 实际待解问题模型 的关联。 · OOP思想的实质 程序可以添加新类型的对象使自身适用于某个待解决的问题。因此,在阅读解决方案代码的同时,也是在阅读问题的表述。即:只对问题进行抽象。 每个对象都有一个接口 ·每个对象都只能满足某些 请求 ,这些请求由对象的 接口 所定义,决定接口的是 类型 。 每个对象都提供服务 ·将对象想象为 服务提供者 ,程序本身也是向用户提供服务,它(程序本身)将通过调用其他对象提供的服务来实现这一目的。 · 所以 ,我们的目标是从 现有代码库中寻找 (优先)和 自己创建 能够提供理想服务的一系列对象。 被隐藏的具体实现 · 类创建者 构建的类,只向 客户端程序员 暴露必须的部分,而隐藏其它部分(即访问控制)。 Reason1: 让客户端程序员无法触及他们不该触及的部分。 Reason2: 允许类创建者可以改变类内部的工作方式而不必担心会影响到客户端程序员。 实现复用 method 1: 直接使用该类的对象。 method 2: 组合产生新类(可以在不干扰现有客户端代码的情况下修改其成员)。 继承

像Go一样写Java,从Go的特性,讨论一种编程风格。

非 Y 不嫁゛ 提交于 2019-11-29 15:41:48
上篇转帖的blog里面提到了Go的特性,作为编写Java时也可以给自己点编程风格的参考。 下面是提到的改进 下面简单学习和分析一下重点的风格提示,领会Ken和Pike的编程思想: 规范的语法(不需要符号表来解析) 垃圾回收(独有) 无头文件 明确的依赖 无循环依赖 常量只能是数字 int和int32是两种类型 字母大小写设置可见性(letter case sets visibility) 任何类型(type)都有方法(不是类型) 没有子类型继承(不是子类) 包级别初始化以及明确的初始化顺序 文件被编译到一个包里 包package-level globals presented in any order 没有数值类型转换(常量起辅助作用) 接口隐式实现(没有“implement”声明) 嵌入(不会提升到超类) 方法按照函数声明(没有特别的位置要求) 方法即函数 接口只有方法(没有数据) 方法通过名字匹配(而非类型) 没有构造函数和析构函数 postincrement(如++i)是状态,不是表达式 没有preincrement(i++)和predecrement 赋值不是表达式 明确赋值和函数调用中的计算顺序(没有“sequence point”) 没有指针运算 内存一直以零值初始化 局部变量取值合法 方法中没有“this” 分段的堆栈 没有静态和其它类型的注释 没有模板 没有异常