设计模式
1、设计模式的概念1.1 产生背景“设计模式“最初并不是出现在软件设计中,而是在建筑领域的设计中
1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。
1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面向对象软件的基础》一书,在此书中收录了 23 个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。这 4 位作者在软件开发领域里也以他们的“四人组”(Gang of Four,GoF)著称。
1.2 概念软件设计模式(Design pattern),又称设计模式,是一套被反复 ...
RESTful风格开发防SQL注入
在Spring Boot开发的RESTful风格后端项目中,SQL注入仍然是一个潜在的安全风险,尤其是当未正确处理用户输入时。以下是有关SQL注入如何发生及其防范措施的详细说明。
SQL注入概述SQL注入攻击是指攻击者通过在应用程序中输入恶意的SQL代码来操控数据库查询,从而获取、修改、删除数据,或执行其他恶意操作。通常发生在应用程序直接使用用户输入来构建SQL查询时。
SQL注入示例假设我们有一个简单的RESTful API来获取用户信息,URL为/users?id=1,处理这个请求的代码如下:
12345678910111213@RestControllerpublic class UserController { @Autowired private JdbcTemplate jdbcTemplate; @GetMapping("/users") public List<Map<String, Object>> getUser(@RequestParam String id) { ...
Spring5
1. Spring1.1 简介
Spring:春天
2002,首次推出了Spring的出行:interface21框架!
Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,雨2004
年3月24日,发布了1.0正式版
Rod Johnson,SpringFarmework创始人
spring理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架!
SSH:Struct2 + Spring + Hibernate (Spring没出来以前)
SSM:SpringMvc + Spring + Mybatis
官网: https://spring.io/projects/spring-framework#overview
GitHub:https://github.com/spring-projects/spring-framework
123456<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><d ...
Vue3
认识Vue31. Vue2 选项式 API vs Vue3 组合式API1234567891011121314<script>export default { data(){ return { count:0 } }, methods:{ addCount(){ this.count++ } }}</script>
12345<script setup>import { ref } from 'vue'const count = ref(0)const addCount = ()=> count.value++</script>
特点:
代码量变少
分散式维护变成集中式维护
2. Vue3的优势
使用create-vue搭建Vue3项目1. 认识create-vue
create-vue是Vue官方新的脚手架工具,底层切换到了 vite ...
SpringCloud
认识微服务服务架构演变单体架构单体架构:将业务中的所有功能集合在一个项目中开发,打包成一个包部署
优点:
架构简单
部署成本低
缺点:
耦合度高
分布式架构分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务
优点:
降低服务耦合度
有利于服务升级扩展
缺点:
服务调用关系错综复杂
分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考:
服务拆分的粒度如何界定?
服务之间如何调用?
服务的调用关系如何管理?
服务之间的健康状态如何感知?
微服务微服务:是一种经过良好架构设计的分布式架构方案,微服务架构特征:
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
自治:团队独立、技术独立、数据独立,独立部署和交付
面向服务:服务提供统一标准的接口,与语言和技术无关
隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。
因此,可以认为微服务是一种经过良好架构设计的分布式 ...
Nginx
简介Nginx概念Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中变现较好
Nginx专为性能优化而开发,性能是其最重要的考量,事实上非常注重效率,能经受高负载的考验,有报告表民能支持高达50000个并发连接数。
反向代理正向代理
在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问
反向代理
我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真实服务器IP地址
正向代理:隐藏客户端
反向代理:隐藏服务端
负载均衡负载均衡是在支持应用程序的资源池中平均分配网络流量的一种方法
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
不使用负载均衡的情况:
使用负载均衡的情况:
动静分离为了加快网站的解 ...
SpringSecurity
前置知识1、掌握Spring框架
2、掌握SpringBoot使用
3、掌握JavaWeb技术
SpringSecurity简介概要Spring 是非常流行和成功的 Java 应用开发框架,Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。
正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”(或者访问控制),一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权 (Authorization)两个部分,这两点也是 Spring Security 重要核心功能。
用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。通俗点说就是系统认为用户是否能登录
用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会 ...
Docker
Docker概述Docker为什么出现?一款产品:开发 – 上线 两套环境!应用环境、应用配置
开发 — 运维。 问题:我在我的电脑上能运行 ! 版本更新,导致服务器不可用! 对一般运维来说,考研就是十分大?
环境配置是十分的麻烦,每一个机器都要部署混啊经(集群Redis、ES、Hadoop….) 费时费力
发布一个项目(jar + (Redis MySQL、jdk、ES)),项目能不能都带上环境安装打包?
之前在服务器配置一个应用的环境 Redis MySQL jdk ES hadoop ,配置超麻烦,不能跨平台
Windows,最后发布到Linux!
传统:开发jar,运维来做
现在:开发打包部署上线,一套流程做完
java – apk – 发布(应用商店) — 张三使用apk — 安装即可用
java — jar(环境)—- 打包项目带上环境(镜像)—(Docker仓库:商店) — 下载我们发布的镜像 — 直接运行即可
Dcoker 给以上的问题,提出了解决方案!
Docker的思想就是来源于集装箱
JRE – 多个应用(端口冲突) — 原来都是交叉的!
Docker的核心思 ...