设计模式——单例设计模式
单例设计模式1、设计模式概述和分类(三种类型共23种)设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案,设计模式代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的实验和错误总结出来的。设计模式的本质是提高软件的维护性,通用性和扩展性,并降低软件的复杂度。
【1】创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。创建型模式主要关注点是”怎样创建对象?”,它的主要特点是”将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。
【2】结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。【3】行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)。
2、单例模式所谓类的单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。单例模式有 ...
设计模式——UML类图
UML类图1、UML基本介绍【1】UML——Unified modeling language(统一建模语言),是一种用于软件系统分析和设计的语言工具,它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息,它用于帮助软件开发人员进行思考和记录思路的结果。【2】UML从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等9种图。【3】UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等。【4】使用UML来建模,常用的工具有Rational Rose,也可以使用一些插件来建模。
2、类图的概述类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。
在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解。
类图是系统分析和设计阶段的重要产物,是系统编码 ...
设计模式——七大设计原则
0、设计模式分类
创建型模式
用于描述”怎样创建对象”,它的主要特点是”将对象的创建与使用分离”。GoF(四人组)书中提供了单例、原型、工厂方法、抽象工厂、建造者等5种创建型模式。
结构型模式
用于描述如何将类或对象按某种布局组成更大的结构,GoF(四人组)书中提供了代理、适配器、桥接、装饰、外观、享元、组合等7种结构型模式。
行为型模式
用于描述类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务,以及怎样分配职责。GoF(四人组)书中提供了模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等11种行为型模式。
在软件开放中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据7条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。
1、单一职责原则【1】基本介绍对类来说的,即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2。
【2】以交通工具案例讲解1234567891011121 ...
前后端分离开发及相关工具使用
1、前后端分离开发【1】介绍前后端分离开发,就是在项目开发过程中,对于前端代码的开发由专门的前端开发人员负责,后端代码则由后端开发人员负责,这样可以做到分工明确、各司其职,提高开发效率,前后端代码并行开发,可以加快项目开发进度。目前,前后端分离开发方式已经被越来越多的公司所采用,成为当前项目开发的主流开发方式。
前后端分离开发后,从工程结构上也会发生变化,即前后端代码不再混合在同一个maven工程中,而是分为前端工程和后端工程。
【2】开发流程前后端分离开发后,面临一个问题,就是前端开发人员和后端开发人员如何进行配合来共同开发一个项目?
可以按照如下流程进行:
接口(API接口)就是一个http的请求地址,主要就是去定义:请求路径、请求方式、请求参数、响应数据等内容。
【3】前端技术栈开发工具
Visual Studio Code
hbuilder
技术框架
nodejs
VUE
ElementUI
mock
webpack
2、Yapi【1】介绍YApi是高效、易用、功能强大的api管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以 ...
Mysql主从复制与读写分离
Mysql主从复制与读写分离1、Mysql主从复制【1】介绍MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。
MySQL复制过程分为三步:
master将改变记录到二进制日志(binary log)
slave将master的binary log拷贝到它的中继日志(relay log)
slave重做中继日志中的事件,将改变应用到自己的数据库中
【2】配置-前置条件提前准备号两台服务器,分别安装Mysql并启动服务成功。
主库Master:192.168.138.100
从库Slave:192.168.138.101
【3】配置-主库Master第一步:修改Mysql数据库的配置文件/etc/my.cnf
123[mysqld]log-bin=mysql-bin # [必 ...
Nginx从入门到会用
Nginx从入门到会用1、Nginx概述【1】Nginx介绍Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。
官网:https://nginx.org/
【2】Nginx下载和安装可以到Nginx官方网站下载Nginx的安装包,地址为:https://nginx.org/en/download.html
123456789101112131415161718# 安装过程# 1、安装依赖包yum -y install gcc pcre-devel zlib-devel openssl openssl-devel# 2、下载Nginx安装包wget https://nginx.org/download/nginx-1.16.1.tar.gz# ...
linux软件安装
linux软件安装1、软件安装方式【1】二进制发布包安装软件已经针对具体平台编译打包发布,只要解压,修改配置即可。
【2】rpm安装软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题。
【3】yum安装一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题。
【4】源码编译安装软件以源码工程的形式发布,需要自己编译打包。
2、安装jdk12345678910111213# 解压安装包tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local# 配置环境变量,使用vim修改/etc/profile文件,在文件末尾加入以下配置JAVA_HOME=/usr/local/jdk1.8.0_171PATH=$JAVA_HOME/bin:$PATH# 重新加载profile文件,使更改的配置立即生效source /etc/profile# 检查安装是否成功java -version
3、安装Tomcat12345678910111213141516171 ...
Redis入门
10d688e9b3a56c6732a35d72db2325f85a7558f166d72241a414660f4ebba530cbc3e1cf3793d5bf41741bfcb3103cf3e82ced35d1bea91a41e464e0f0d143910a540b8434e452b240a7c74688a2e8c7a08139c5f4367e7ee20514364524cec106ff2a825b164ba1c76688ca8ad416a3144b18900c68dd67acb3434dae0cc8418ae8a6e707489f629a8afa009304b24300ac67c97cae5f942571ea2507ff51be5351f119b72df54ae15363096dbc0dceefcb4017f46f61d86abe951bb5a095ad93f75e682f84620a6c767b72602b884799eacdc060ea020117dba43936e09365b8de4cf349564470fd5e89769d40cf140e2e646b2b523cf0e ...
无题
一、区别innerHTML:
在控件中加html代码 ,就是设置一个元素里面的HTML,标签对文本信息有效。
innerHtml获取的是标签内的标签元素包括文本。
innerTEXT:
打印标签之间的纯文本信息,显示标签,标签无效,低版本的火狐浏览器不支持。
innerText 获取的是某个元素内的文本,不管这个元素内还有没有标签,它获取的只是文本,不管标签。
value:
显示双引号中的全部内容,显示标签,标签无效。
value获取的是具有value属性标签的value值,div标签没有value属性,所以就获取不到;具有value属性的标签如input标签,button标签。
123456789<div id="clickMe">关注 <span>1111</span></div><script> console.log(div.innerText) //打印输出的是:关注1111 console.log(div.innerHtml) //打印输出的是:关注<s ...
无题
Mac OS 上设置 JAVA_HOME1、一些历史,过去Mac上的Java都是由Apple自己提供的,只支持到Java6,并且OS X 10.7开始系统并不自带(而是可选安装)。后来Apple加入OpenJDK继续支持Java6,而Java7将由Oracle负责提供
2、根据苹果官方说明,Mac OS X 10.5及以后的版本应该使用 /usr/libexec/java_home 命令来确定 JAVA_HOME ,而在此之前的版本由于没有这个命令,则应该使用固定的 /Library/Java/Home目录。最佳方式:1export JAVA_HOME=`/usr/libexec/java_home`
3、另外,你还可以这样用,来选择不同的Java版本:12345export JAVA_HOME=`/usr/libexec/java_home -v 1.6`;或者export JAVA_HOME=`/usr/libexec/java_home -v 1.7`;或者export JAVA_HOME=`/usr/libexec/java_home -v 1.8`;
...