数据结构与算法
摆烂了挺久,零零散散的终于完成数据结构与算法的部分内容学习,不过感觉这玩意仿佛就学习的那一段时间记得比较
清楚,过段时间就忘了干净了,还是比较难消化的。抛开学习上的事情以外,因为这疫情的持续影响最近感觉挺多事情
都不太顺利,无论是求职还是生活的各方面,自己正如11、12月寒冬中熄灭的火种一般,也许这就是所谓的时代的一粒
沙,落在每个人肩头都是一座大山,唉。
数据结构1.线性结构
特点:数据元素之间存在一对一的线性关系
有两种存储结构:
顺序存储结构
顺序存储的线性表称为顺序表,其中存储的元素的内存空间都是连续的
链式存储结构
链式存储的线性表称为链表,其中的存储元素的内存空间不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息
线性结构常见的有:数组、队列、链表和栈
2.非线性结构
非线性结构有:二维数组、多维数组、广义表、树结构、图结构
稀疏数组定义:当一个数组内的大部分元素都为0,或都是同一个值时,可以考虑使用稀疏数组保存这个数组
处理方法:①记录数组总共几行几列,有多少个不同的值
②把不同值元素的行列值记录在一个小型数组中,从而缩小程序 ...
设计模式
前置概念
什么是设计模式?
设计模式就是把一些重复的问题进行统一的处理,提升代码的可靠性
设计模式的要求
①面向接口编程而不是对实现编程
②优先使用对象组合而不是继承
设计模式的六大原则
①开闭原则:对扩展开放,对修改关闭。即允许对现有的功能扩展但不允许修改之前的内容
②里氏代换原则:任何父类可以出现的地方都允许其子类出现
③依赖倒转原则:针对接口编程,依赖于抽象接口而不依赖于具体
④接口隔离原则:要求多个接口之间保持隔离,是为了降低类之间的耦合度
⑤最少知道原则:一个实体应当减少与其他实体之间发生的相互作用,让多功能模块保持相对独立
⑥合成复用原则:尽量使用合成/聚合的方式,而不是使用继承,换句话来说就是少用继承
设计模式创建型模式
什么是创建型模式(Creational Patterns)
这种类型的模式提供了一种在创建对象的同时隐藏创建对象的过程,而不是使用new运算符直接实例化对象。
工厂模式
什么是工厂模式(Factory Pattern)
创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
目的和使用场景
在明 ...
如何在Linux上部署SpringCloud项目?
部署前的准备工作1.服务器:服务器选择的是华为云的服务器,配置如下
2.部署之前需要提前在服务器上安装jdk、mysql、nacos、redis、nginx、node.js
具体工具的安装步骤可移至 –> Centos7安装工具 按照需要进行安装
后端工程打包①前提准备
工程目录
各个模块关系分析
②将被依赖但不需要打包的模块在install到本地maven仓库
③配置父工程的pom文件
12345678910111213141516171819202122232425262728293031323334353637383940414243<!-- 修改打包为pom --><groupId>top.year21.onlineedu</groupId><artifactId>online_edu_parent</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><!-- ...
SpringCloud + Vue + Nuxt + ElementUi 前后端分离开发的B2C项目
项目简介项目功能点本项目分为了 后台管理系统 和 前台用户系统
后台管理系统
1.登录模块,实现对登录者ip和登录地址的显示
2.权限管理模块(基于SpringSecurity框架实现)
①后台权限列表管理:后台管理列表的增删改查
②角色管理:后台管理系统角色的增删改查以及对不同的角色赋于不同查看后台管理列表的权限
③用户管理:登录该系统的用户的增删改查以及为不同用户分配不同角色
3.讲师管理模块
①讲师列表常规的分页查询、模糊查询、添加、删除、修改等操作
4.课程分类模块
①课程分类的添加(通过easyExcel读取上传的excel表中数据实现)
②使用树形结构展示课程分类的列表以及搜索当前存在的课程分类
5.课程管理模块
①课程列表常规的分页展示、特定查询、添加、删除、修改等操作
②添加课程,通过以下步骤完成:填写课程信息 –> 添加课程大纲 –> 课程信息确认 –> 最终发布
③课程图片和视频添加功能,可以添加课程图片和视频(基于阿里云oss和视频点播实现)
6.统计分析模块
①统计数据生成
②统计数据展示(基于ECharts实现)
7.banner管理 ...
其他技术
阿里云OSS
对象存储 OSS 是一种海量、安全、低成本、高可靠的云存储服务。
官方文档 –> Java Sdk
①引入oss的依赖到pom文件中
123456<!-- 阿里云oss依赖 --><dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>最新版本</version></dependency>
②配置application.yml
12345678#阿里云 OSS配置信息aliyun: oss: file: endpoint: oss-cn-guangzhou.aliyuncs.com #节点地域 keyid: LTAI5tHuNsemaiLnP3yro4vD #访问id keysecret: ed1Zxok1SklTEI40HhRKkJeRcQdyWc #访问密码 ...
前端技术
ES6
什么是ECMAScript?
ECMAScript 6.0(简称ES6),它的出现使得Js语言可以用来编写复杂的大型应用程序
ECMAScript和JavaScript的关系?
ECMAScript是一套标准,而JavaScript是这套标准的实现
基本语法1.var let const关键字
1234567891011121314151617<script> /*es6定义变量,以及其定义的变量特定 var定义的变量是全局变量,没有作用域范围限制,且同个变量名var可以声明多次。 let定义的变量是局部变量,有作用域范围限制,且同个变量名let只能声明一次。 const定义的变量是全局常量,没有作用域范围限制,在定义时必须赋值, 且声明之后不能改变其值,和java中的static final修饰的变量一致 */ { var a = 10; let b = 20; const c = 30; } console.log(a); ...
SpringCloud
微服务理论简介概念:微服务架构是一种架构模式,它提倡将单一的应用程序划分为一组小的服务,服务之间互相协调,互相配合,
为用户提供最终价值,每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作,(一般基于
HTTP协议的RESTful API),每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、测试环境等。
且应当尽量避免统一的集中式的服务管理机制,对具体的一个服务而言,应根据业务来进行构建。
SpringCloud = 分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体
父工程搭建①创建maven父工程
②修改父工程pom文件
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899<?xml ...
CAS与自旋锁
CASCAS –> Unsafe –> CAS底层思想 –> ABA问题 –> 原子引用更新 –> 如何规避ABA问题
CAS底层原理
简单来说就是Unsafe类+CAS思想(自旋)
1234567891011121314151617181920212223public class CASDemoClass { public static void main(String[] args) { //AtomicInteger原子类 //设置主内存的初始值为5 AtomicInteger atomicInteger = new AtomicInteger(5); /* compareAndSet()方法 参数说明: 1.int expect 期望值 2.int update 更新值 这里的期望值指的是与原先从主内存中读取的值进行比较的值,更新值是值即将要修改成的值 方法返回值说明: true表示 ...
Centos7安装工具
安装 mysql
步骤
123456789101112131415161718192021222324252627282930313233343536373839404142431、到官方网站需要下载的指定版本本次以Centos7为例,因此选择Red Hat Enterprise Linux 7 / Oracle Linux 7(x86,64-bit)https://downloads.mysql.com/archives/community/2、同通过xftp或者虚拟机vmshare功能上传到linux服务器上指定目录 本次上传到/opt目录3、解压mysql-8.0.26-1.el7.x86_64.rpm-bundletar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar4、安装解压出来的这些选项,其余的不用管mysql-community-commonmysql-community-libsmysql-community-clientmysql-community-server5.依次安装上述的包rpm -ivh mysql-comm ...
Nginx
nginx介绍1.nginx的概念
nginx专为性能优化而开发,它也是高性能的 HTTP 和反向代理的服务器,处理高并发的能力非常好
2.正向/反向代理
正向代理代理的对象是客户端,反向代理代理的对象是服务端
3.负载均衡
将从客户端发来的请求分发到多个服务器上,将原先请求集中到单个服务器上的情况
改为将请求分发到多个服务器上,将负载分发到不同的服务器
负载均衡的体现
4.动静分离
动静分离简单来说就是将动态请求和静态请求进行分开,把动态页面和静态页面的请求由不同的
服务器来解析,加快解析速度,以降低原来单个服务器的压力
安装nginx1.进入nginx官网 –> 官方下载网址
12345678910111213141516171819202122232425262728293031323334//安装nginx之前需要先安装相关的依赖和库yum -y install gcc-c++ zlib-devel openssl-devel libtool//进入usr/local目录cd /usr/local//通过命令下载nginx安装包wget http:/ ...