自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (11)
  • 收藏
  • 关注

原创 设计模式-合成复用原则-》面向对象设计原则

合成复用原则是面向对象设计原则的 7 条原则中剩下的最后一条,下面我们将对其进行详细地介绍。合成复用原则的定义合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规

2021-07-27 08:42:10 139

原创 设计模式-迪米特法则-》面向对象设计原则

迪米特法则的定义迪米特法则(Law of Demeter,LoD)又叫作最少知识原则(Least Knowledge Principle,LKP),产生于 1987 年美国东北大学(Northeastern University)的一个名为迪米特(Demeter)的研究项目,由伊恩·荷兰(Ian Holland)提出,被 UML 创始者之一的布奇(Booch)普及,后来又因为在经典著作《程序员修炼之道》(The Pragmatic Programmer)提及而广为人知。迪米特法则的定义是:只与你的直接

2021-07-27 08:40:08 148

转载 设计模式-接口隔离原则-》面向对象设计原则

接口隔离原则的定义接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。2002 年罗伯特·C.马丁给“接口隔离原则”的定义是:客户端不应该被迫依赖于它不使用的方法(Clients should not be forced to depend on methods they do not use)。该原则还有另外一个定义:一个类对另一个类的依赖应该建立在最小的接口上(The dep

2021-07-27 08:38:08 88

原创 设计模式-单一职责原则-》面向对象设计原则

单一职责原则也是面向对象设计原则中的一条,下面我们就来详细地对其进行介绍。单一职责原则的定义单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,由罗伯特·C.马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(There should never be more than one reason for a cl

2021-07-27 08:35:06 79 1

原创 设计模式-依赖倒置原则-》面向对象设计原则

依赖倒置原则的定义依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在C++Report 上发表的文章。依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules shouldnot depend upon low level modules.Both should dep..

2021-07-23 01:27:04 84

原创 设计模式-里氏替换原则-》面向对象设计原则

里氏替换原则的定义里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》(Data Abstraction and Hierarchy)里提出来的,她提出:继承必须确保超类所拥有的性质在子类中仍然成立(Inheritance should ensure that any property proved about super

2021-07-23 01:25:39 69

原创 设计模式-开闭原则-》面向对象设计原则

在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。我们将在下面的几节中依次来介绍这 7 条原则,本节首先介绍开闭原则。开闭原则的定义开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:软件实体

2021-07-23 01:22:56 62

原创 设计模式-GoF 的 23 种设计模式的分类和功能

设计模式有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分。1. 根据目的来分根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式3 种。 创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。 .

2021-07-23 01:21:42 91

原创 设计模式-软件设计模式概述

软件设计模式的产生背景“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造(A Pattern Language: Towns Building Construction)中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1979 年他的另一

2021-07-23 01:20:39 95

原创 JVM实用参数8:GC日志

本系列的最后一部分是有关垃圾收集(GC)日志的JVM参数。GC日志是一个很重要的工具,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置和GC设置,或者改进应用程序的对象分配模式。-XX:+PrintGC参数-XX:+PrintGC(或者-verbose:gc)开启了简单GC日志模式,为每一次新生代(young generation)的GC和每一次的Full GC打印一行信息。下面举例说明:1 [GC 246656K->243120K(376320K),0.

2021-07-17 11:40:48 131

原创 JVM实用参数7:CMS收集器

HotSpot JVM的并发标记清理收集器(CMS收集器)的主要目标就是:低应用停顿时间。该目标对于大多数交互式应用很重要,比如web应用。在我们看一下有关JVM的参数之前,让我们简要回顾CMS收集器的操作和使用它时可能出现的主要挑战。就像吞吐量收集器(参见本系列的第6部分),CMS收集器处理老年代的对象,然而其操作要复杂得多。吞吐量收集器总是暂停应用程序线程,并且可能是相当长的一段时间,然而这能够使该算法安全地忽略应用程序。相比之下,CMS收集器被设计成在大多数时间能与应用程序线程并行执行,仅仅会有一

2021-07-17 11:39:44 77

原创 JVM实用参数6:吞吐量收集器

在实践中我们发现对于大多数的应用领域,评估一个垃圾收集(GC)算法如何根据如下两个标准: 吞吐量越高算法越好 暂停时间越短算法越好 首先让我们来明确垃圾收集(GC)中的两个术语:吞吐量(throughput)和暂停时间(pause times)。JVM在专门的线程(GC threads)中执行GC。只要GC线程是活动的,它们将与应用程序线程(application threads)争用当前可用CPU的时钟周期。简单点来说,吞吐量是指应用程序线程用时占程序总用时的比例。例如,吞吐量99/1

2021-07-17 11:38:42 77

原创 JVM实用参数5:新生代垃圾回收

本部分,我们将关注堆(heap) 中一个主要区域,新生代(young generation)。首先我们会讨论为什么调整新生代的参数会对应用的性能如此重要,接着我们将学习新生代相关的JVM参数。单纯从JVM的功能考虑,并不需要新生代,完全可以针对整个堆进行操作。新生代存在的唯一理由是优化垃圾回收(GC)的性能。更具体说,把堆划分为新生代和老年代有2个好处:简化了新对象的分配(只在新生代分配内存),可以更有效的清除不再需要的对象(即死对象)(新生代和老年代使用不同的GC算法)通过广泛研究面向对象实现的应

2021-07-17 11:37:43 85

原创 JVM实用参数4:内存调优

理想的情况下,一个Java程序使用JVM的默认设置也可以运行得很好,所以一般来说,没有必要设置任何JVM参数。然而,由于一些性能问题(很不幸的是,这些问题经常出现),一些相关的JVM参数知识会是我们工作中得好伙伴。在这篇文章中,我们将介绍一些关于JVM内存管理的参数。知道并理解这些参数,将对开发者和运维人员很有帮助。所有已制定的HotSpot内存管理和垃圾回收算法都基于一个相同的堆内存划分:新生代(young generation)里存储着新分配的和较年轻的对象,老年代(old generation)里

2021-07-17 11:36:08 76

原创 JVM实用参数3:打印所有XX参数及值

本篇文章基于Java6(update21oder21之后)版本,HotSpotJVM提供给了两个新的参数,在JVM启动后,在命令行中可以输出所有XX参数和值。-XX:+PrintFlagsFinal and -XX:+PrintFlagsInitial让我们现在就了解一下新参数的输出。以 -client 作为参数的 -XX:+PrintFlagsFinal 的结果是一个按字母排序的590个参数表格(注意,每个release版本参数的数量会不一样)$ java -clien...

2021-07-17 11:34:51 200

原创 JVM实用参数2:参数分类和即时(JIT)编译器诊断

在这个系列的第二部分,我来介绍一下HotSpot JVM提供的不同类别的参数。我同样会讨论一些关于JIT编译器诊断的有趣参数。JVM 参数分类HotSpot JVM 提供了三类参数。第一类包括了标准参数。顾名思义,标准参数中包括功能和输出的参数都是很稳定的,很可能在将来的JVM版本中不会改变。你可以用java命令(或者是用 java -help)检索出所有标准参数。我们在第一部分中已经见到过一些标准参数,例如:-server。第二类是X参数,非标准化的参数在将来的版本中可能会改变。所有的这类参数

2021-07-16 07:48:36 147

原创 JVM实用参数1:JVM类型以及编译器模式

现在的JVM运行Java程序(和其它的兼容性语言)时在高效性和稳定性方面做的非常出色。自适应内存管理、垃圾收集、及时编译、动态类加载、锁优化——这里仅仅列举了某些场景下会发生的神奇的事情,但他们几乎不会直接与普通的程序员相关。在运行时,JVM会不断的计算并优化应用或者应用的某些部分。虽然有了这种程度的自动化(或者说有这么多自动化),但是JVM仍然提供了足够多的外部监控和手动调优工具。在有错误或低性能的情况下,JVM必须能够让专家调试。顺便说一句,除了这些隐藏在引擎中的神奇功能,允许大范围的手动调优也是现

2021-07-16 07:47:06 234

原创 Java 性能调优小细节,让你提升 java 代码的运行效率

前言代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。代码优化的

2021-07-16 07:45:36 108

原创 JVM调优总结-思考

垃圾回收的悖论 所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的相应时间,造成拥塞或堆积。这也是后续JDK增加G1算法的一个重要原因。 当然,上面是从技术角度出发解决垃圾回收带来的问题,但是从系统设计方面我们就需要问一下了:我们需要分配如此大的内存空间给应用吗? 我们是否能...

2021-07-15 21:20:08 60

原创 JVM调优总结-调优方法

JVM调优工具Jconsole,jProfile,VisualVMJconsole :jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里JProfiler:商业软件,需要付费。功能强大。详细说明参考这里VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。如何调优观察内存释放情况、集合类检查、对象树上面这些调优工具都提供了强大的功能,但是总的来说一般分为以下几类功能堆信息查看.

2021-07-15 21:18:21 145

原创 JVM调优总结-新一代的垃圾回收算法

垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在几百甚至几十毫秒以内,如果分代垃圾回收方式要达到这个指标,只能把最大堆的设置限制在一个相对较小范围内,但是这样有限制了应用本身的处理能力,同样也是不可接收的。 分代垃圾回收方式确实也考虑了实时...

2021-07-14 20:54:19 44

原创 JVM调优总结-配置举栗

常见配置汇总堆设置-Xms:初始堆大小-Xmx:最大堆大小-XX:NewSize=n:设置年轻代大小-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5-XX:Max...

2021-07-14 20:52:28 56

原创 JVM调优总结-分代垃圾回收详述2

分代垃圾回收流程示意选择合适的垃圾收集算法用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高。但是,也无法使用多处理器的优势,所以此收集器适合单处理器机器。当然,此收集器也可以用在小数据量(100M左右)情况下的多处理器机器上。可以使用-XX:+UseSerialGC打开。对年轻代进行并行垃圾回收,因此可以减少垃圾回收时间。一般在多线程多处理器机器上使用。使用-XX:+UseParallelGC.打开。并行收集器在J2SE5.0第六6更新上引入...

2021-07-14 20:50:38 58

原创 JVM调优总结(五)-分代垃圾回收详述1

为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程中生成的临时变量,这些对象生命周期会比较短,比如:String对象,由于其不变类的特性,系统会产生大量的这些对象,...

2021-07-14 20:44:18 42

原创 JVM调优总结-垃圾回收问题

如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分析的堆和栈的区别,其中栈是真正进行程序执行地方,所以要获取哪些对象正在被使用,则需要从Java栈开始。同时,一个栈是与一个线程对应的,因此,如果有...

2021-07-06 22:50:26 81

原创 jvm优化总结-基本垃圾回收算法

可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同时,会产生内存碎片。复制(Copyin

2021-07-06 22:06:44 37

原创 JVM调优总结-(概念2)

Java对象的大小 基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:Object ob = new Object(); 这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte+8byte。4byte是上面部分所说的Java栈中保存引用的所需要的空间。而那8byte则是Java堆中对象的信息...

2021-07-02 08:54:09 43

原创 JVM调优总结-(概念1)

数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress引用类型包括:类类型,接口类型和数组。堆与栈 堆和栈是程序运行的关键,很有必要把他们的关系说清楚。...

2021-07-02 08:53:09 36

原创 Java虚拟机学习5:类加载器(ClassLoader)

类加载器类加载器(ClassLoader)用来加载 class字节码到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源文件在经过 Javac之后就被转换成 Java 字节码文件(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例。每一个这样的实例用来表示一个 Java 类。实际的情况可能更加复杂,比如 Java 字节代码可能是通过工具动态生成的,也可能是通过网络下载。类与类加载器类加载器虽然

2021-06-30 08:20:16 66

原创 Java虚拟机学习4:对象内存分配与回收

对象优先在Eden上分配大多数情况下,对象优先在新生代Eden区域中分配。当Eden内存区域没有足够的空间进行分配时,虚拟机将触发一次 Minor GC(新生代GC)。Minor GC期间虚拟机将Eden区域的对象移动到其中一块Survivor区域。大对象直接进入老年代所谓大对象是指需要大量连续空间的对象。虚拟机提供了一个XX:PretenureSizeThreshold参数,令大于这个值的对象直接在老年代中分配。长期存活的对象将进入老年代虚拟机采用分代收集的思想管理内存,那内存回收

2021-06-30 08:15:09 48

原创 Java虚拟机学习3: 类加载机制

JVM和类当我们调用 Java 命令运行某个 Java 程序时,该命令将会启动一条 Java 虚拟机进程,不管该 Java 程序有多么复杂,该程序启动了多少个线程,它们都处于该 Java 虚拟机进程里。同一个 JVM 的所有线程、所有变量都处于同一个进程里,它们都使用该 JVM 进程的内存区。当系统出现以下几种情况时, JVM 进程将被终止:程序运行到最后正常接收;程序运行到使用System.exit()或Runtime.getRuntime().exit()代码结束程序;程序运行中遇到

2021-06-24 21:11:10 45

原创 Java虚拟机学习2:垃圾收集算法

跟踪收集器跟踪收集器采用的为集中式的管理方式,全局记录对象之间的引用状态,执行时从一些列GC Roots的对象做为起点,从这些节点向下开始进行搜索所有的引用链,当一个对象到GC Roots 没有任何引用链时,则证明此对象是不可用的。下图中,对象Object6、Object7、Object8虽然互相引用,但他们的GC Roots是不可到达的,所以它们将会被判定为是可回收的对象。可作为GC Roots 的对象包括:虚拟机栈(栈帧中的本地变量表)中的引用对象。方法区中的类静态属性引用的..

2021-06-24 21:09:22 40

原创 Java虚拟机学习1:体系结构 内存模型

一:Java技术体系模块二:JVM内存区域模型1.方法区也称”永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。运行时常量池:是方法区的一部分,Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行...

2021-06-22 08:39:50 34

原创 java new 和 clone 的效率比较

在java中对于生成新的对象,我们常常用new来创建对象,但是new看起来不是那么的快速,好像是个很费资源的操作,而clone看起来比new要好的多,那么事实真的如此吗?

2021-06-03 07:07:45 405

转载 java微服务-各种架构比较

单体架构就是将所有功能都部署在一个web容器中运行的系统就叫做单体架构,一个实例中集成了一个系统的所有功能,通过负载均衡软件/设备实现多实例调用。单体架构在初创公司、中小型系统、产品试错等场景下开发的周期快、对开发人员的技能要求低而任然被广泛地采用。优点:1.易于开发 - 当前开发工具和IDE的目标是支持单片应用程序的开发2.易于部署 - 只需在适当的运行时上部署WAR文件(或目录层次结构)3.易于扩展 - 可以通过在负载均衡器后面运行应用程序的多个副本来扩展应用程序缺点:复杂性高项目

2021-06-02 21:25:51 351

转载 java幂等性的解决方案

一、幂等性概念在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数. 更复杂的操作幂等保证是利用唯一交易号(流水号)实现.我的理解:幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的。二、幂等性场景1、查询操作:查询一次和查询多次,在数据不.

2021-06-02 21:12:50 520

原创 谈谈架构和微服务

不知从何时起,与同事,面试者,面试官谈起架构理念,总是绕不开微服务。甚至有时候听到这三个字的时候,脑壳会痛,相似的还有中台, 总觉得是旧瓶装新酒。当然此时的盛行是有其原因的,猜测主要原因是容器化的盛行。架构和微服务的定义:能给出合适的定义才能表明一个人真正理解了所描述的事物。架构:按照一定的方法设计出来,把系统划分成颗粒合适,边界分明,复用合理的模块。这里的关键词是颗粒合适,边界分明,合理复用。微服务:颗粒度较小的架构,关注点是颗粒度相对较小。为什么要存在架构和微服务架构..

2021-06-02 08:01:27 110 3

原创 redis的N种集群方式

公众号:jvm知识库1.主从复制主从复制原理: 从服务器连接主服务器,发送SYNC命令; 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令; 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照; 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令; 从服务器完成对快照的载入,开...

2021-06-02 07:49:35 87

原创 java值传递详解

公众号:jvm知识库JAVA里面存在的是值传递还是引用传递,是不是对基本类型采取的是值引用,而对象(引用)类型采取的是引用传递?首先需要先弄清楚什么是值传递,什么是引用传递???值传递:将副本传递给方法,调用方法改变副本的值,但是并不改变原值引用传递:传递的是对象的引用,对其修改,会改变原值。Java中只存在值传递,不存在引用传递。Java中方法参数的使用情况:一个方法不能够修改基本数据类型的参数。原因在于基本数据类型参数,比如main方法中的参数,是存储在自身的栈帧中的,.

2021-06-01 22:05:43 142

原创 设计模式-七大设计原则汇总

什么是设计模式设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式经过前辈不断总结总结、不断打磨所得出的设计方法。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式不是万能的,并不能解决所有的问题,每一种设计...

2021-06-01 08:40:59 126

一分钟经理人.pdf

本书以告诉我们如何把"一分钟经理人"的三个管理秘诀,即"一分 一分钟目标"、"一分钟称赞"、"一分钟批评"在现实环境中行之有效地应用。这三个简单实用的秘诀浓缩了管理的精髓:目标明确具体,奖惩及时到位! 一分钟经理人是很有效的工作方法。几年来,我们就推广并进而形成了日清工作法。即每天都有目标体系,日清体系,激励体系。达到日事日毕,日清日高的效果。 本书对管理人员而言是一本很实用的书。

2016-06-13

人月神话:软件项目管理之道.20周年纪念版.pdf

人月神话:软件项目管理之道.20周年纪念版.pdf

2016-06-13

[LINUX_UNIX设计思想].(甘卡兹).扫描版.pdf

[LINUX_UNIX设计思想].(甘卡兹).扫描版

2016-06-13

jfinal-1.8-manual

jfinal-1.8-manual JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率。

2016-06-13

MySQL Cluster 5.1 新特性技术白皮书

MySQL Cluster 5.1 新特性技术白皮书

2016-06-13

敏捷开发指导书v1.1.pdf

敏捷开发指导书v1.1.pdf 软件公司敏捷项目操作手册

2016-06-13

HTML5从入门到精通中文学习教程pdf

HTML5从入门到精通中文学习教程pdf

2016-06-13

java基础教程PPT格式

java入门基础教程PPT格式的,适合java初学者使用,感觉还不错。

2008-12-20

最强大的数据恢复工具

此软件是目前功能最强大的数据恢复工具,可以对你不小心删除的数据进行恢复,界面简单,方便使用。

2008-12-17

vb课设实用ico小图标

适应用于vb课设的小图标资源,vb课设实用ico小图标.

2008-12-13

VB课设 图书管理系统 源代码

Visual Basic图书信息管理系统,本系统易于理解,适合在校学生的课程设计,界面清晰。

2008-12-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除