学习如何部署配置nginx
学习如何部署配置nginx一、 Nginx是做什么的?Nginx 是一个HTTP和反向代理服务器,一个邮件代理服务器和一个通用的TCP/UDP代理服务器。
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.
作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
在项目使用中,使用最多的三个核心功能是静态服务器、反向代理和负载均衡。
二、 Nginx的常用命令
启动
直接使用nginx启动
使用systemctl ...
关于DDD领域驱动设计
什么是领域驱动设计领域驱动设计是由Eric Evans提出的,目的是对软件涉及的领域进行建模,以应对系统规模过大引起的软件复杂性问题。整个过程为研发团队和领域专家一起通过通用语言描述领域知识,从领域知识中提取和划分为一个个子领域,包括核心子领域、通用子领域和支撑子领域,并在子领域上建立模型,在重复以上步骤。这样周而复始,构建出符合当前领域的模型。
开发目标
拒绝小单体,拒绝污染功能与服务,拒绝增加一个月的功能排期。
设计出高可用、符合互联网高速迭代的应用服务。
物料化、组装化和可编排的服务,提高人效。
服务架构1. 应用层(application)
应用服务位于应用层。用来表述应用和用户行为,负责服务的组合、编排和转发,负责处理业务用例的执行顺序以及结果的拼装。
应用层的服务包括应用服务和领域事件相关服务。
应用服务可对微服务内的领域服务以及微服务外的应用服务进行组合和编排,或者对文件、缓存等基础层数据直接操作形成应用服务,对外提供粗粒度的服务。
领域事件服务包括两类:领域事件的发布和订阅。通过事件总线和消息队列实现异步数据传输,实现微服务之间的解耦。
2. 领域层(domain) ...
SpringMvc的原理
SpringMVC是什么: springMVC是一个MVC的开源框架,springMVC=struts2+spring,springMVC就相当于是Struts2加上sring的整合,但是这里有一个疑惑就是,springMVC和spring是什么样的关系呢?这个在百度百科上有一个很好的解释:意思是说,springMVC是spring的一个后续产品,其实就是spring在原有基础上,又提供了web应用的MVC模块,可以简单的把springMVC理解为是spring的一个模块(类似AOP,IOC这样的模块),网络上经常会说springMVC和spring无缝集成,其实springMVC就是spring的一个子模块,所以根本不需要同spring进行整合。
SpringMVC的原理图:
看到这个图大家可能会有很多的疑惑,现在我们来看一下这个图的步骤:(可以对比MVC的原理图进行理解)
第一步:用户发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者注解进行查找
第三步 ...
关于数据库的索引
什么是索引索引(Index)是帮助MySQL高效获取数据的数据结构。索引在数据量较小时用处不大;但当数据库数据量非常大(百万级以上)时,索引可以极大地提升数据的查询速度。InnoDB引擎索引底层实现默认的数据结构是BTree。
如何创建索引方法一:在创建表时,使用SQL语句给某一字段创建某种类型的索引。(详见:索引的分类)
方法二:在表创建完成后,使用SQL语句给某一字段添加索引或修改某一字段的索引。
1CREATE 索引类型 INDEX `索引名称` ON `表名`(`字段名`); -- 给某个表的某个字段添加某种类型的索引
1ALTER TABLE `数据库名称`.`表名` ADD 索引类型 INDEX `索引名称` (`字段名`); -- 修改某个表的某个字段的索引
方法三:在创建表时或在表创建完成后,使用可视化工具给某一字段添加某种类型的索引。
索引的分类
主键索引(PRIMARY KEY)
创建命令格式:
1PRIMARY KEY(`字段名称`)
注意:
主键是区分表中每行数据的唯一标识。
一个表只能有一列作为主键。
一个表中各行的主键值是唯一的。
唯一索引(UNI ...
模板模式
什么是模板模式模板模式又叫模版方法模式(Template Method Pattern),是指定义一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板模式使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤,属于行为型设计模式。
模板模式的核心设计思路是通过在抽象类中定义抽象方法的执行顺序,并将抽象方法设定为只有子类实现,但不设计独立访问的方法。
总结模板模式在定义统一结构也就是执行标准方面非常方便,能很好地做到后续的实现者不用关心调用逻辑,按照统一方式执行即可。类的继承者也只需要关心具体的业务逻辑实现即可。另外,模板模式也是为了解决子类通用方法,放到父类中优化设计。让每一个子类只做子类需要完成的内容,而不需要关心其他逻辑。再提取公用代码,行为由父类管理,扩展可变部分,也就非常有利于开发拓展和迭代了。
策略模式
什么是策略模式策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。策略模式是一种行为模式,也是替代if…else的利器。它能解决的场景一般包括具有同类可替代的行为逻辑算法,例如:不同类型的交易方式(信用卡、支付宝、微信)、生成唯一ID策略(UUID、DB自增、DB+Redis、雪花算法和Leaf算法)等。
优点和缺点优点:
1、 策略模式提供了管理相关的算法族的办法。策略类的等级结构定义了一个算法或行为族。恰当使用继承可以把公共的代码转移到父类里面,从而避免重复的代码。
2、 策略模式提供了可以替换继承关系的办法。继承可以处理多种算法或行为。如果不是用策略模式,那么使用算法或行为的环境类就可能会有一些子类,每一个子类提供一个不同的算法或行为。但是,这样一来算法或行为的使用者就和算法或行为本身混在一起。决定使用哪一种算法或采取哪一种行为的逻辑就和算法或行为的逻辑混合在一起,从而不可能再独立演化。继承使得动态改变算法或行为变得不可能。
3、 使用策略 ...
工厂模式
前言粗暴的开发方式可以归纳为三步:定义属性,创建方法,调用展示。虽然初次实现很快,但是不便于后期维护和拓展。真正好的代码不只为了完成现有功能,更会考虑后续拓展。
什么是工厂模式工厂模式也叫简单工厂模式,是创建型设计模式的一种,这种设计模式提供了按需创建对象的最佳方式。同时,这种创建方式不会对外暴露创建细节,并且会通过一个统一的接口创建所需的对象。它的主要意图是定义一个创建对象的接口,让其子类自己决定将哪一个工厂实例化,工厂模式使创建过程延迟到子类中进行。
优点与缺点优点:避免创建者与具体的产品逻辑耦合;满足单一职责,每一个业务逻辑实现都在自己所属的类中完成;满足开闭原则,无须更改调用方式就可以在程序中引入新的产品类型。
简单的说,就是为了给代码结构提供扩展性,屏蔽每一个功能类中的具体实现逻辑。这种方式便于外部更加简单地调用,同时也是去掉众多if…else的最佳手段。
不过这种设计模式也有缺点,比如需要实现的类比较多、难以维护、开发成本高等,但这些问题都可以通过结合不同的设计模式逐步优化。
新服务器安装docker并配置宝塔面板
前言前两天看到华为云有个服务器优惠活动,50块就可以买一个1核2G的服务器。我阿里云的服务器是2核2G的,折腾到现在,配置已经有点不够用了,趁着这次活动就买了一个华为云的服务器。
一年前自己还是个小萌新,阿里云的宝塔面板还是用的公共镜像帮装好的。随着技术的成长,在Linux上直接安装的宝塔面板让我觉得软件环境有点乱,在做博客项目升级的时候渐渐接触到docker,宝塔对主机控制度较高,依赖关系复杂,而 Docker 可以保证宝塔服务不影响到宿主机其他服务。认识到docker的方便之后,这个新的服务器自然得先装docker再装宝塔啦。
安装docker系统要求官网提示如果要安装 Docker Engine,您需要一个 CentOS 7 以及以上的稳定版本。
查看centos系统内核版本
12[root@ecs-21523 ~]# uname -aLinux ecs-21523 3.10.0-1160.53.1.el7.x86_64 #1 SMP Fri Jan 14 13:59:45 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
先确定是否 Cent ...
大三下软件工程课程笔记
软件工程要点
软件是指令的集合,数据结构和软件描述信息的集合
软件与硬件的区别:软件不会磨损,但会退化,退化的根本原因是不断变更
软件工程是(1)将系统化的,规范的,可量化的方法应用于软件的开发,运行和维护.(2)对(1)中方法的研究
工程化:系统化的,规范的,可量化的
软件工程是一种层次化的技术,包含工具,方法,过程,质量关注点。
软件工程的三要素:工具,方法,过程
软件过程是工作产品构建是所执行的一系列活动,动作和任务的集合
五种通用过程框架活动:沟通,策划,建模,构建,部署
软件工程整体实践的原则:存在价值;保持简洁;保持愿景;关注使用者;面向未来;提前计划复用;认真思考
四种过程流:线性过程流;迭代过程流;演化过程流;并行过程流;
惯用过程模型:瀑布模型;V模型;增量过程模型;原型模型,螺旋模型;并发模型
专用过程模型:基于构件;形式化方法模型;面向方面
统一建模语言UML
UP统一过程的五个阶段:起始阶段;细化阶段;构建阶段;转换阶段;生产阶段
UP的五个阶段不是顺序进行,而是阶段性的并发进行
敏捷原则(12条)
普遍存在的变更是敏捷的基本动力
需求工程是一个软件工程的动作, ...
使用Python标准库turtle画了一颗树
前言今天的Python课讲到第八章Python计算生态。
Python诞生至今,由于其简洁性,易读性,可拓展性,以及开源模式,Python官方和广大用户一起建立起了以标准库和第三方库为代表的大规模编程计算生态,可以说是相当的强大。
课后胡老师给我们留了作业,要用turtle库画一颗树
就是类似这样的
具体实现一开始我画的并不好,各种奇形怪状的图案,可惜了没有截图,随着代码的修改完善,那些画成奇怪图案的代码被优化后就不存在了。
交作业后老师在课堂上说我写的代码挺好的,之后有同学来问我要源码
下面就直接放最后交作业的代码了
源码:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311 ...