设计模式——七大设计原则
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# ...
Redis入门
10d688e9b3a56c6732a35d72db2325f85a7558f166d72241a414660f4ebba530cbc3e1cf3793d5bf41741bfcb3103cf3e82ced35d1bea91a41e464e0f0d143910a540b8434e452b240a7c74688a2e8c7a08139c5f4367e7ee20514364524cec106ff2a825b164ba1c76688ca8ad416a3144b18900c68dd67acb3434dae0cc8418ae8a6e707489f629a8afa009304b24300ac67c97cae5f942571ea2507ff51be5351f119b72df54ae15363096dbc0dceefcb4017f46f61d86abe951bb5a095ad93f75e682f84620a6c767b72602b884799eacdc060ea020117dba43936e09365b8de4cf349564470fd5e89769d40cf140e2e646b2b523cf0e ...
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 ...
无题
一、区别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`;
...
无题
Python之异常(try的用法)1、什么是异常?程序在运行的时候,如果python解释器遇到一个错误,会停止程序的执行,并且提示一些错误的信息,这就是异常。
我们在程序开发的时候,很难将所有的特殊情况都处理,通过异常捕获可以针对突发事件做集中处理,从而保证程序的健壮性和稳定性。
在程序开发中,如果对某些代码的执行不能确定(程序语法完全正确)可以增加try来捕获异常。
2、异常处理语句 try…except…finally
except 语句不是必须的,finally语句也不是必须的,但是二者必须要有一个,否则就没有try的意义了。
except语句可以有多个,Python会按except语句的顺序依次匹配你指定的异常,如果异常已经处理就不会再进入后面的except语句。
except语句可以以元组形式同时指定多个异常,参见示例代码。
except语句后面如果不指定异常类型,则默认捕获所有异常,你可以通过logging或者sys模块获取当前异常。
如果要捕获异常后重复抛出,请使用raise,后面不要带任何参数或信息。
不建议捕获并抛出同一个异常,请考虑重构你的代码。
不建议在不 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment