自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 收藏
  • 关注

原创 【Linux】网络相关命令

网络相关命令pingping 命令是用来测试TCP/IP 网络是否畅通或者测试网络连接速度的命令,对确定网络是否正确连接,以及网络连接的状况十分有用。简单的说,ping就是一个测试程序,如果ping运行正确,大体上就可以排除网络访问层、网卡、Modem的输入输出线路、电缆和路由器等存在的故障,从而缩小问题的范围。ping命令的原理是根据计算机唯一标示的IP 地址,当用户给目的地址发送一个数据包时,对方就会返回一个同样大小的数据包,根据返回的数据包用户可以确定目的主机的存在,并初步判断目的主机的操作系统

2021-01-29 11:48:44 429

原创 【Linux】内存与磁盘

内存与磁盘内存和磁盘都是计算机中的存储器,都具有存储功能,属于存储设备。在计算机中,磁盘和内存是相互配合共同作业的。区别:1、内存是一种高速,造价昂贵的存储设备;而磁盘速度较慢、造价低廉。2、内存属于内部存储设备,磁盘属于外部存储设备。3、内存是通过电流来实现存储;磁盘是通过磁记录来实现存储。所以电脑断电后,内存中的数据会丢失,而磁盘中的数据可以长久保留。内存内存是程序与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的。其作用是存放CPU中的运算数据,以及与硬盘等外部存储设备

2021-01-29 11:07:42 425

原创 【Linux】计算机组成与进程命令

计算机组成与进程命令计算机组成五大部件1、运算器 :也叫算数逻辑单元,完成对数据的各种常规运算,如加减乘除,也包括逻辑运 算,移位,比较等。2、控制器 :它是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算 机按照预先规定的目标和步骤有条不紊地进行操作及处理。3、存储器 :存储程序和各种数据。4、输入设备 :把人所熟悉的信息如,图片,声音,文字,转换为计算机能够识别的信息存储起来。5、输出设备 : 把计算机机能识别的信息转换为人能识别的信息,进行呈现。 一台计算机可以抽象成下图

2021-01-28 16:16:35 371

原创 【Linux】Linux 用户和用户组管理

Linux 用户和用户组管理Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个唯一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。实现用户账号的管理,要完成的工作主要有如下几个方面:用户账号的添加

2021-01-28 11:39:55 1527

原创 【Java网络编程】Netty 网络框架

Netty 网络框架Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。Netty 提供高性能和可扩展性,让你可以自由地专注于你真正感兴趣的东西,你的独特的应用!Netty 是一个高性能、异步事件驱动网络库,它提供了对 TCP、UDP 和文件传输的支持使(这里首先就要搞清楚异步的 NIO 框架是什么意思)用更高效的 socket 底层,对 selector 空轮询引起的 cpu 占用飙升在内部进行了处理,避免了直接使用 NIO 的陷阱

2020-10-29 20:21:58 1122 2

原创 【Java网络编程】常用的网络模型代码实例

常用的网络模型代码实例【Java网络编程】常用的网络模型1.1 BIO模型代码演示1.1.1 服务端代码演示//TCP协议代码public class BIOServer { private ServerSocket socket;//开发TCP的工具包 private final int port = 5676; public BIOServer() { try { //将服务器绑定到特定端口上 soc

2020-10-29 18:32:58 483 6

原创 【Java网络编程】常用的网络模型

常用的网络模型1.1 BIO 模型网络编程的基本模型是 C/S 模型,即两个进程间的通信。服务端提供 IP 和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连接,如果连接成功建立,双方就可以通过套接字进行通信。传统的同步阻塞模型开发中,ServerSocket 负责绑定 IP 地址,启动监听端口;Socket 负责发起连接操作。连接成功后,双方通过输入和输出流进行同步阻塞式通信。 简单的描述一下 BIO 的服务端通信模型:采用 BIO 通信模型的服务端,通常由一个独立的 Acc

2020-10-29 17:21:36 869 2

原创 【Java网络编程】 五种 IO 模型

五种 IO 模型我们在研究几种常见模型之前先要搞清楚如下几个概念:阻塞:当某个事件或者任务在执行过程中,它发出一个请求操作,但是由于该请求操作需要的条件不满足,那么就会一直在那等待,直至条件满足。非阻塞:当某个事件或者任务在执行过程中,它发出一个请求操作,如果该请求操作需要的条件不满足,会立即返回一个标志信息告知条件不满足,不会一直在那等待。同步:如果有多个任务或者事件要发生(主要指 IO 事件),这些任务或者事件必须逐个地进行并且必须应用程序参与,一个事件或者任务的执行会导致整个流程的暂时等

2020-10-28 21:14:50 267

原创 【Java网络编程】IP协议详解

IP协议详解了解IP地址之前,我们需要了解MAC地址,也就是物理地址,每一台机器都以偶唯一的MAC地址,MAC地址由厂商分配。MAC地址由厂商分配,那么我们无法通过MAC地址来获取该主机的网络地址,所以网络层就有了IP协议,制定了一套新地址,使得我们能够区分两台主机是否同属一个网络,这套地址就是网络地址,也就是所谓的IP地址。IP地址目前有两个版本,分别是IPv4和IPv6,IPv4是一个32位的地址,常采用4个十进制数字表示。IP协议将这个32位的地址分为两部分,前面部分代表网络地址,后面部分表示该

2020-10-28 18:15:36 539

原创 【Java网络编程】TCP协议详解

TCP协议详解在前面计算机网络概述中,我们知道了TCP是面向连接的,可靠的,数据传输服务的网络传输协议。而在TCP 协议特点中有几个关键的点,即:a、TCP 通信是需要建立连接的。b、数据的发送时全双工的。c、TCP 通信是可靠的。在进行Java网络编程时,我们经常通过TCP协议进行传输,把数据封装成报文传输,而报文的传输使格式化传输而TCP首部就决定了每一个消息的格式和类型。TCP 首部格式各个字段的作用与含义:a、源端口号和目的端口号。各占两个字节,我们知道端口号就是标识特

2020-10-28 14:52:23 941

原创 【Java网络编程】计算机网络概述

计算机网络概述网络概述什么是网络计算机网络由若干结点和连接这些结点的链路组成,计算机网络中的结点可以是计算机、集线器、交换机和路由器等。网络有什么作用信息的传递。当然我们要知道的是仅仅有网络是无法进行信息传递的,我们还需要在计算机上安装相应的软件才可以。什么叫做互联网如果把网络再通过路由器连接在一起就形成了互联网。世界上最大的互联网就是因特网。信息在网络中的传输流程由于网络是比较抽象的,所以我们在研究信息通过网络的传输过程时通常根据信息传递过程中的不同特点将网络分为若干层,分层去研究将抽象

2020-10-28 14:01:07 359

原创 【Java多线程】线程池

线程池线程池是在JDK 1.5之后出现的概念,它为我们提供了一个Executor接口用于创建线程池。在JDK 1.5之前,如果我们在并发编程的过程中需要实现多个线程的话,采用的是多线程计数的方式,而之所以出现了线程池的概念,原因就是因为多线程计数在部分条件下无法满足程序的要求。多线程计数能够最大限度发挥多核处理器的计算能力,但是对于多线程来说,并不是线程数量越多,程序运行的效率越高,那么如果随意的去创建线程的话,反而会对系统性能带来不利的影响,原因就是因为线程的数量与系统性能不是一个正比的关系,而是一

2020-10-21 15:10:02 125

原创 【Java多线程】阻塞队列

阻塞队列阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法,即针对一个有界队列,当前队列满时,添加元素的操作会被阻塞;当前队列空时,从队列中获取元素的操作也会被阻塞。1、支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。2、支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者

2020-10-19 22:27:20 156

原创 【Java多线程】线程安全的集合

线程安全的集合VectorVector集合是对ArrayList集合线程安全的实现,它们两者在方法的实现上没有什么太大的区别,最大的区别就是,Vector在方法前面加上了synchronized关键字,用于保证线程安全。【Java集合框架库】Vector类和Stack类Vector存在的问题:1、它的add()和get()方法都能够获取当前Vector对象的对象锁,但是有可能会发生读读互斥。2、当threadA在1下标处添加一个元素,threadB在2下标处修改一个元素时,同样有可能会发生

2020-10-18 21:56:28 11752 3

原创 【Java多线程】ReentrantLock

ReentrantLock在实现线程同步时,大多情况下使用的是Synchronized关键字实现,但是Synchronized的锁太过封闭,获得锁和释放锁都是系统自动的。所以为了更灵活的操作,在JDK1.5版本之后,就诞生了Lock接口以及其实现类。lock接口也是对资源上锁的一种工具,它不同于Synchronized的隐式上锁与解锁,lock接口中的获取锁和释放锁,是需要手动去操作的。Synchronized关键字的同步代码出现以下三种情况才会释放锁:1、同步代码块执行完成,自动释放锁。2、同

2020-10-18 17:47:14 339 4

原创 【Java多线程】线程通信

线程通信在客户端与服务端的通信过程中,一般情况下有两种通信模型,它们分别是同步阻塞模型和异步非阻塞模型。对于同步阻塞模型,当请求的事件出于某种原因没有返回结果时,此时线程将一直处于阻塞状态而不进行其他操作,例如我们去商场买电脑,我们需要等待卖家对我们的电脑做一系列的售后工作,此时我们并不能去做其他事情,只能等待卖家完成这些工作,这种模式就是同步阻塞模型。而对于异步非阻塞模型,当客户端请求事件时,服务器会先返回其事件所工作的线程工号,此时客户端可以继续进行其他操作,等待该事件处理完成,并通过工号查询所

2020-10-18 17:46:56 222 2

原创 【Java多线程】死锁

死锁多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。所谓死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。死锁中的经典例题:哲学家就餐问题相关链接:Java多线程:死锁造成死锁的必要条件互斥条件:某个资源在某一时间段内只能由一个线程占用。不可抢占条件:线程所得到的资源在

2020-10-16 20:32:59 186 2

原创 【Java多线程】悲观锁和乐观锁

悲观锁悲观锁:总是假设最坏的情况,每一次去拿数据都默认别人会修改,所以每次拿数据都会上锁,这样就会导致有其他人想要拿数据就会阻塞直到获取到这把锁。synchronized关键字的实现是悲观锁。悲观锁机制存在的问题:1、多线程竞争下,加锁、解锁都会导致比较多的上下文切换和调度延时,引起性能问题。2、一个线程池有锁会导致其他需要此锁的线程阻塞。3、数据量大时,独占锁回导致效率低下。4、如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级导致,引起性能问题。乐观锁乐观锁:每次那

2020-10-15 17:35:58 324

原创 【Java多线程】线程同步

线程同步首先,我们先来看一个Java多线程的实例,模拟银行叫号系统,代码如下://模拟银行叫号系统class Number extends Thread { private static int index = 1;//号码 //由于static变量的生命周期很长,同时共享资源或许会很多 //所以使用static修饰的共享资源对系统资源造成浪费 private String name; //柜台名称 private static final int MAX =

2020-10-14 20:29:24 230

原创 【JavaSE高级】Java8新特性 - Lambda表达式

Java8新特性 - Lambda表达式Java是面向对象语言,除了原始数据类型之处,Java 中的所有内容都是一个对象。而在函数式语言中,我们只需要给函数分配变量,并将这个函数作为参数传递给其它函数就可实现特定的功能。JavaScript 就是功能编程语言的典范(闭包)。Lambda 表达式的加入,使得 Java 拥有了函数式编程的能力。在其它语言中,Lambda 表达式的类型是一个函数;但在 Java 中,Lambda 表达式被表示为对象,因此它们必须绑定到被称为功能接口的特定对象类型。Lambd

2020-10-13 19:57:30 152

原创 【JavaSE高级】Java8新特性 - Stream

Java8新特性 - StreamJava8中有两个非常有名的改进,一个是Lambda表达式,一个是Stream。如果我们了解过函数式编程的话,都知道Stream真正把函数式编程的风格引入到了java中。这篇文章由简入繁逐步介绍Stream。Stream介绍Stream是一个流,在Java.util.Stream包路径下,他的主要作用就是对集合数据进行查找过滤等操作。通俗解释就是一种高效且易用的数据处理方式。大数据领域也有一个Steam实时流计算框架,不过和这个可不一样。别搞混了。Stream和Co

2020-10-13 17:30:27 231

原创 【JavaIO流】装饰器与适配器模式

装饰器与适配器模式在Java语言 I/O库的设计中,使用了两个结构模式,即装饰模式和适配器模式。在任何一种计算机语言中,输入/输出都是一个很重要的部分。与一般的计算机语言相比,Java将输入/输出的功能和使用范畴做了很大的扩充。因此输入输出在Java语言中占有极为重要的位置。Java语言采用流的机制来实现输入/输出。所谓流,就是数据的有序排列,流可以是从某个源(称为流源,或者 Source of Stream)出来,到某个目的(Sink of Stream)地去。根据流的方向可以将流分成输出流和输入流

2020-10-12 22:22:04 653

原创 【JavaIO流】RandomAccessFile类

RandomAccessFile类RandomAccessFile类创建的流称作随机流,与前面的输入输出流不同的是,RandomAccessFile类既不是InputStream类的子类,也不是OutputStream类的子类。但是RandomAccessFile类创建的流的指向既可以作为流的源,也可以作为流的目的地,换句话说,当准备对一个文件进行读写操作时,可以创建一个指向该文件的随机流即可,这样既可以从这个流中读取文件的数据,也可以通过这个流写入数据到文件。并且通过该类可以访问文件任意位置的信息。构

2020-07-24 20:09:28 392

原创 【JavaIO流】序列化与反序列化

序列化与反序列化

2020-07-23 21:32:13 245

原创 【Java集合框架库】Set集合

Set集合Set集合类似于一个罐子,程序可以依次把多个对象“丢进”Set集合,而Set集合通常不能记住元素的添加顺序。实际上Set就是Collection只是行为略有不同(Set不允许包含重复元素)。Set集合不允许包含相同的元素,如果试图把两个相同元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。Set集合的特征Set集合,基础自Collection。特征是插入无序,不可指定位置访问。Set集合的实现类可说是基于Map集合去写的。通过内部封装Map集

2020-07-23 14:43:08 220

原创 【JavaIO流】JavaIO中的常用处理流

JavaIO中的常用处理流在前面,我们了解了有关JavaIO流基础的使用,其中对于IO流来说最基础的四大基类就是InputStream、OutputStream、Reader、Writer。而我们对文件操作的最常用的子类就是FileInputStream、FileOutputStream、FileReader、FileWriter四大类,他们的用法基本上是完全一样的,只不过前两个是操作字节的,后两个是操作字符的。字节流和字符流的区别1、首先操作单元不同。字节流操作的单元是数据单元是8位的字节,字符流操

2020-07-22 16:08:26 390

原创 【JavaIO流】JavaIO流的使用

JavaIO流的使用IO流概念流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象。流的本质:数据传输。根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。流的作用:为数据源和目的地建立一个输送通道。IO流的分类按照不同的分类方式,可以把流分为不同的类型。常用的分类有三种。1、按照流的流向分,可以分为输入流和输出流。(相对于程序而言的输入输出)输入流:只能从中读取数据,而不能向其写入数据。把文件中的信息读取到程序中。输出流:只能向其写入数据,而不能向其

2020-07-21 15:18:49 413

原创 【Java相关练习】算法笔试练习题

算法笔试练习题题目描述根据同学的成绩给同学发苹果,要求:每个同学至少发一个;相邻的同学分数高的一定比分数低的苹果多,问你老师至少需要准备多少苹果?例如[1,0,1] --> 第一个人分2个,第二个人分1个,第三个人分2个,一共5个。例如[3,5,5] --> 第一个人分1个,第二个人分2个,第三个人分1个,一共4个。代码实现/** * 根据同学的成绩给同学发苹果, * 要求:每个同学至少发一个;相邻的同学分数高的一定比分数低的苹果多,问你老师至少需要准备多少苹果? * 例如[1

2020-07-21 14:00:27 218

原创 【JavaIO流】JavaIO流基础知识

JavaIO流基础知识流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。实际上,流的源端和目的端可简单地看成是字节的生产者和消费者,对输入流,可不必关心它的源端是什么,只要简单地从流中读数据,而对输出流,也可不知道它的目的端,只是简单地往流中写数据。流是一组有顺序的,有起点和终点的

2020-07-20 13:58:47 327 2

原创 【Java多线程】Java多线程基础知识

Java多线程基础知识多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。进程和线程的基本认识进程:进程是一个正在执行的程序,一个程序可以同时执行多个任务(线程)。进程独占内存空间,同时

2020-07-19 17:13:35 317

原创 【SpringMVC框架】RESTful及拦截器介绍

RESTfulRESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。RESTFul是一种软件架构风格,而不是标准。它只是提供了一种设计原则和约束条件,主要适用于客户端和服务端交互的软件。主要是基于HTTP协议实现。目的为了提高系统的可伸缩性,降低应用之间耦合度,方便框架分布式处理程序,基于这种风格可以使程序更加简单

2020-07-18 13:52:35 188

原创 【SpringMVC框架】异常处理机制

异常处理机制系统异常分为两类:预期异常和运行时异常。系统中dao层、service层、controller层出现异常时可以通过Throws Exception向上抛出,在Spring MVC中前端控制器将由异常处理器进行异常处理,SpringMVC 提供全局异常处理器进行统一处理,一个系统只有一个异常处理器。自定义异常类对不同的异常类型定义不同的异常类,继承Exception。/** * 自定义异常 * 针对预期的异常,需要在程序中抛出 */public class CustomExcep

2020-07-17 14:27:49 307

原创 【SpringMVC框架】SpringMVC中通过JSON进行数据交互

SpringMVC中通过JSON进行数据交互JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。JSON的数据交互在前后端是比较通用的,在前后端分离开发中尤其重要。下面我们来看看JSON在Sp

2020-07-17 14:04:14 236

原创 【SpringMVC框架】图片文件上传功能

图片文件上传功能Spring MVC中如何实现文件的上传和下载功能呢,我们以图片上传为例介绍一下它的使用步骤。相关依赖<!--文件操作依赖--><dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version></dependency><

2020-07-16 16:41:51 590

原创 【SpringMVC框架】参数绑定和返回值介绍

参数绑定和返回值介绍以一个Controller请求为例:import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndVie

2020-07-16 16:00:18 151

原创 【SpringMVC框架】SSM框架整合

SSM框架整合SSM框架整合是指整合Spring框架、SpringMVC框架和MyBatis框架。Spring 是一个开源框架, Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。 Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。然而,

2020-07-16 14:44:35 203

原创 【SpringMVC框架】SpringMVC相关配置分析

SpringMVC相关配置分析有关SpringMVC的基础知识及使用可以参考前两篇博客内容,这里简单介绍一下相关配置的源码分析以及具体实现方式。前端控制器的源码分析URL进入前端控制器的过程。前端控制器的实现类为:org.springframework.web.servlet.DispatcherServlet。在前端控制器类中会执行调用doService方法。protected void doService(HttpServletRequest request, HttpServletR

2020-07-16 11:44:57 105

原创 【SpringMVC框架】SpringMVC的基本使用操作

SpringMVC的基本使用操作这里是通过maven来管理SpringMVC框架。创建SpringMVC的项目引入SpringMVC的依赖jar包<!--Spring相关依赖--><!--Spring核心依赖jar包--><dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> &

2020-07-15 13:24:16 160

原创 【SpringMVC框架】SpringMVC框架介绍

SpringMVC框架介绍Spring MVC是一种基于Java,实现了Web的MVC设计模式,请求驱动类型的轻量级web框架,即使用了MVC架构模式的思想,将Web层进行指责解耦,基于请求驱动指的就是请求响应模型,框架存在的目的是帮助简化开发,Spring MVC简化了web开发。Java EE体系结构包括四层,从上到下为应用层,web层,业务层和持久层。Struts和Spring MVC是web层的框架,Spring是业务层的框架,Hibernate和Mybatis是持久层框架。MVC模式的演

2020-07-13 20:19:29 1850

原创 【Spring框架】Spring中涉及的设计模式

Spring中涉及的设计模式设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工

2020-07-13 16:51:51 474

空空如也

空空如也

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

TA关注的人

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