docker安装nginx
docker安装nginx主要命令
拉取镜像
docker pull nginx
在宿主机创建目录用于挂载
#创建nginx的配置文件目录#创建nginx的日志文件目录#创建nginx的静态资源文件目录mkdir -p /home/nginx/conf mkdir -p /home/nginx/logmkdir -p /home/nginx/html#创建并启动nginx容器 宿主机的80端口(左)映射到容器的80端口(容器的端口不是乱填的根据官方镜像的设置) 也就是说访问服务器时,80端口的请求会转发给容器 --name 是容器名 自定义 -d nginx(-d nginx:versionNo)表示使用nginx镜像(不加版本号表示最新版镜像)docker run --name nginx -p 80:80 -d nginx#将容器内的文件拷贝到上面创建的文件中 (将容器内的文件内容拷贝到宿主机中来)docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.confdocker cp ng ...
对接微信扫码登录
在Vue页面中显示微信微信登录二维码
在vue项目中的index.html中引入微信登录js文件 (在index.html中的具体位置,测试时是放在html标签中)
<script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
在需要显示微信登录二维码的vue页面中的methods中创建添加一个函数,并且在mounted中调用该函数,并且还得在template标签中创建一个div,来放置显示的二维码图片(vue的基础语法)
login() { var obj = new WxLogin({ self_redirect: false, id: "login_container", appid: "appid", //填入你自己的appid scope: "snsapi_login", redi ...
二叉树笔记
平衡二叉树
平衡二叉树也叫做AVL树,任意一个节点的左右子树高度之差不超过1
2-3-4树
2-3-4树不属于二叉树 一个2-3-4树可以对应多个红黑树,但一个红黑树只对应一个2-3-4树
性质:
所有叶子结点的高度相同
节点的类型必须是2节点、3节点、4节点
2节点就是节点中只有1个元素,有2个子节点
3节点就是节点中只有2个元素,有3个子节点
4节点就是节点中只有3个元素,有4个子节点
2-3-4树的构造
2-3-4树是从下往上生长。这里我们以数组{1,2,3,4,5,6,7,8,9}为例子,来描述一下构造的主要过程。新节点的插入都是进行结合操作,结合后进行调整。
最开始元素1成为根节点,节点类型属于2节点。
元素2寻找插入位置,是元素1的右边,那么元素2就会元素1结合,此处由于结合后是3节点类型,不需要进行其他操作。
元素3寻找插入位置,是元素2的右边,那么元素3与元素1和元素2结合形成了一个4节点类型,也是不需要进行其他操作。
元素4也来了,他也要与元素1、2、3结合在一起,那么这时候就是一个4节点了,不符合2-3-4树,因此进行一次“提升”操作,将原来的4节点中的 ...
泛型笔记
泛型泛型类
定义形式 修饰符 class 类名 \< T,K,V… {} 其中T,K,V是自定义的随便写什么,但一般建议就写K、V、T等一个大写字母,毕竟本身含义就是泛型,没必要用特殊的标识符啥的定义。两边的空格数没有规定,连在一起或者分开都行 一般就与类名挨着,与左大括号间隔一个空格。泛型只在编译阶段起作用,运行阶段不起作用
定义与使用package ljb;/** * @author 李家宝 * @date 2023/7/30 15:46 */public class Test<T> { T name; public T getName() { return name; } public void setName(T name) { this.name = name; } public static void main(String[] args) { Test<String> test = ...
关于静态变量、内部类的详细说明
静态变量
静态变量只能定义在方法之外、类中。静态方法、成员方法、main方法中都不能定义静态变量。但是可以被以上三个方法访问。
静态方法四不
不能定义静态变量 (方法的共同点)
不能定义静态内部类 (方法的共同点)
不能访问非静态变量 (成员变量)
不能调用非静态方法 (成员方法)
四能 (上面四条逆否)
能定义非静态内部类 理解为可以在静态方法中定义局部内部类
…
成员方法二不
不能定义静态变量
不能定义静态内部类
五能
能访问静态变量
能调用静态方法
能访问成员变量
能调用成员方法
能定义局部内部类
静态方法和成员方法总结
不管是静态方法还是成员方法中,都不能定义static修饰的变量、类。也即静态变量和静态内部类
不管是静态方法还是成员方法中,都可以出现局部内部类。
局部内部类
局部内部类就和方法中的局部变量一样,作用范围是方法内,无法在外边访问,随方法调用的结束而消亡。别妄想将局部内部类作为返回值返回。
成员内部类
和成员变量很类似,只不过它是一个类,不是一个变量。成员变量、成员方法这些都属于类的实例对象,成员内部类也不例外。在本类中, ...
排序算法笔记
快速排序思路:(升序)
快速排序使用递归的思想,先在原数组中找一个基准值(要用一个变量保存起来),一般是第一个或者最后一个元素。(可以减少交换次数)
使用两个指针(普通变量i,j即可)分别指向第一个和最后一个元素。
如果选择第一个元素作为基准值,那么就从右边开始扫描,比较右指针指向的数与基准值的大小,如果小于基准值,那么将右指针指向的值赋给左指针(A[i]=A[j],不用担心A[i]原来的值被覆盖,因为最开始左指针指向基准值,且用变量保存了。那右指针A[j]不需要变吗?不需要!按理说是要把基准值赋给A[j],但是没有必要)然后左指针就右移动一位,并开始比较左指针与基准值的大小关系,如果大于基准值,就将左指针的值赋给右指针(A[j]=A[i]),然后右指针左移一位。重复操作,直到i=j,而i,j的值就是最终基准值的位置
在扫描的过程中也就是移动指针时,左指针右移要找比基准值大的数,没找到就一直右移。右指针左移要找比基准值小的数,没找到就一直左移。最终就是要让小于基准值的数在左边,大于基准值的数在右边。
代码/** * 递归调用 * @param A 待排序数组 * @par ...
算法分析与设计基础第3版
算法分析与设计基础第3版
算法设计与分析基础笔记
递归算法数序分析在计算一些常用算法的时间复杂度时,经常涉及到递归,因此也就离不开递归算法的分析
先看一个例子计算函数的时间复杂度
void fun(int n){ if(n<=0){ return 1; }else{ return n*f(n-1); }}
上面函数的基本操作就是做乘法,所以计算函数的时间复杂度,其实就是计算乘法的操作次数。
假设M(n)代表传入参数n时,函数进行乘法操作的次数,所以有
M(n)=
\begin{cases}
0\quad\textcolor{orange}{n=0}; \\
M(n-1)+1\quad\textcolor{orange}{n>0};\\
\end{cases}其中加1是指将n乘以f(n-1)。所以根据上面的公式得
\begin{aligned}
M(n)&=M(n-1)+1\\
&=M(n-2)+1+1\\
&=M(n-3)+1+1+1\\
&=M(n-4)+1+1+1+1\\
&=···\\
&=M(0)+n\\
& ...
project
课程预览
前端通过通过点击课程的预览按钮,进入预览页面。前端传递课程id,访问内容管理服务的CoursePublishController,根据课程id,将课程的师资信息,营销信息、基本信息、课程计划信息查询并组装。
组装后的信息通过freemarker模版引擎将数据渲染到course_template.ftl上,然后返回给前端。
进入预览页面,查看视频,会发送两次请求,先根据课程id到内容管理服务的CourseOpenController查询课程信息,这里调用的查询方法和第一步一样(没必要差这么全吧)。第二次将课程计划绑定的媒资id发送媒资管理服务的MediaOpenController,查询媒资的访问url,返回前端,以便播放。
课程提交审核
为实现审核过程中可以修改,设计了课程预发布表,机构人员可以随意修改课程计划、课程基本信息等。提交时,将这些信息组合起来存入预发布表。审核人员审核预发布表中的内容,审核中时,要把预发布表中的审核状态设置为审核中。
点击提交审核课程,传递课程id,访问CoursePublishController的方法,将课程的各种信息组装起来存入课程预发 ...
test
这是测试用例System.out.println("hello java");
ReentrantLock和Synchronized的区别
ReentrantLock是一个类。synchronized是一个Java关键字
前者可重入 后者不可重入
前者获取锁失败可以返回 后者会阻塞
前者需要手动释放锁 后者自动释放锁
如何在4小时内睡满8小时
这是一个智障问题
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 post$ hexo new "My New Post"
More info: Writing
Run server$ hexo server
More info: Server
Generate static files$ hexo generate
More info: Generating
Deploy to remote sites$ hexo deploy
More info: Deployment