Other

Nginx开源版本安装与配置

Nginx开源版本安装与配置 目录Nginx开源版本安装与配置1 版本区别2 安装开源版本2.1 下载与解压2.2 编译安装2.3 启动与常用命令3 防火墙3.1 关闭防火墙3.2 禁止开机启动3.3 放行80端口4 将nginx做成服务,方便管理4.1 创建脚本文件4.2 确定脚本内容4.3 重新加载服务4.4 启动服务并设置开机启动5 配置5.1 安装目录5.2 初始配置文件5.3 最小化配置文件5.4 最小配置5.4.1 worker_processes5.4.2 worker_connections5.4.3 include mime.types;5.4.4 default_type application/octet-stream;5.4.5 sendfile on;5.4.6 keepalive_timeout5.4.7 虚拟主机5.4.8 server_name5.5 反向代理5.6 基于反向代理的负载均衡5.7 负载均衡策略5.8 location匹配规则5.9 动静分离欢迎大家留言,以便于后面的人更快解决问题!另外亦欢迎大家可以关注我的微信公众号,方便利用零碎时间互相交流。共勉! 1 版本区别 Nginx开源版 http://nginx.org/ Nginx plus 商业版 https://www.nginx.com openresty http://openresty.org/cn/ Tengine http://tengine.taobao.org/ 2 安装开源版本 2.1 下载与解压 下载地址:http://nginx.org/en/download.html 拷贝到虚拟机:/root/tool目录下 解压: tar -zxvf nginx-1.20.2.tar.gz 在/usr/local下创建文件夹:mkdir nginx 返回压缩包所在目录,将解压后内容移动到创建的文件夹内:mv nginx-1.20.2 /usr/local/nginx 2.

在Windows上安装Jdk

前提工作: 1、查看windows系统是多少位的:此电脑(右键)——属性 (win10系统)  2、在想安装的盘中创建好jdk的安装文件夹   下载jdk: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html (jdk官网)    安装:双击jdk安装包  更改jdk的安装路径,也可以默认安装在c盘,我的路径是:D:\code\install\JAVA\jdk (后面配置环境变量有用)  更改jre安装路径(也可以默认安装路径),我的路径是:D:\code\install\JAVA\jre   3、设置环境变量 此电脑—(右键)属性—高级系统设置—环境变量—(下面)系统变量 在系统变量中,先找找看命名有没有跟下面的名称重复,如果没有,则:新建 变量名中输入JAVA_HOME(名字可以自己去),变量值中输入jdk的根目录   D:\code\install\JAVA\jdk 在系统变量中,查看是否有“CLASS_PATH”变量,如果没有,则:新建 变量名中输入CLASS_PATH(不可随意更改),变量名中输入 .;%JAVA_HOME%\lib; (注意:此变量值以英文句点符号开始,以分号结束。中间的JAVA_HOME是引用了前面设置的路径,所以如果前面的变量名是别的,也要改) 然后点击确定,返回环境变量对话框。     在系统变量中,找到Path变量,点击编辑按钮,在弹出的对话框中的变量值的最后,一定是最后,添加如下字符串:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin。(注意:前面第一个是分号) 如果没有Path变量,则添加Path变量,添加步骤和前面一样,不再重复。    然后确定返回到桌面,然后打开“命令提示符”(以管理员的身份运行),输入java –version ,出现下图所示输出,则说明jdk安装成功。     卸载jdk可以去控制面板中卸载一下两个文件;     

codeforces1335B

#include<bits/stdc++.h> using namespace std; const int N = 30; char arr[N]; int main(){ int t; cin>>t; while(t--){ int n,a,b; cin>>n>>a>>b; int x=0; for(char i = 'a';i<='z';i++) arr[x++]=i; for(int i=0,j=0,cnt=0;i<n;j++){ if(j==n) break; cout<<arr[i]; if(i<b-1) i++; if(cnt==a-1){ i=0; cnt=0; } else cnt++; } cout<<endl; } return 0; }

常用类

目录常用类Object类getClass()方法hashCode方法toString()方法equals()方法finalize()方法包装类类型转换与装箱、拆箱整数缓冲区String类字符串池常用方法可变字符串四个常用方法BigDecimalDateCalendarSimpleDateFormatSystem类 常用类 Object类 超类、基类,所有类的直接或间接父类,位于继承树的最顶层 任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承 Object类中所定义的方法,是所有对象都具备的方法 Object类型可以储存任何对象 作为参数,可接受任何对象 作为返回值,可返回任何对象 getClass()方法 public final Class<?> getClass(){} 返回引用中存储的实际对象类型 应用:通常用于判断两个引用 中实际储存对象类型是否一致 package usedClass; public class Application1 { public static void main(String[] args) { Student s1=new Student(23,小明); Student s2=new Student(18,小红); Class c1=s1.getClass(); Class c2=s2.getClass(); if(c1==c2){ System.out.println(属于同一个类); }else{ System.out.println(不属于同一个类); } } } 输出结果: 属于同一个类 hashCode方法 public int hashCode(){} 返回该对象的哈希码值 哈希值根据对象的地址 或 字符串 或 数字使用hash算法计算出的int类型的数值 一般情况下相同对象返回相同哈希码 toString()方法 public String toString(){} 返回该对象的字符串表示(表现形式) 可以根据程序需求覆盖该方法,如:展示对象各个属性值 equals()方法 public boolean equals(){} 默认实现为(this == obj),比较两个对象的地址是否相同 可进行覆盖,比较两个对象的内容是否相同 finalize()方法 当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列 垃圾对象:没有有效引用指向此对象时,为垃圾对象 垃圾回收:由GC销毁垃圾对象,释放数据存储空间 自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象 手动回收机制:使用System.

【FreeRTOS学习笔记】空闲任务

硬FAULT调试方法网站链接: (25条消息) KEIL中HardFault_Handler的调试方法(stm32x0xx_it.c)_昵名不能为空的博客-CSDN博客     设置SysTick _Load成功:   发现PendSV悬起但没有进入:    可是有时候又能进入:   悬起一次忽略了还好,连着悬起四五次都无响应,这样的应用实在难以接受,是对单片机硬件的了解还不够,还是在线调试出了问题? 更改代码,把延时改的长一点:观察任务延时的计数减少   通过软件仿真,发现一直卡在空闲任务,估计就是PendSV没有执行,等复习一下编程手册再来学习。

洛谷P2679 子串

题目链接  算是一个计数类的\(dp\),首先我们先确定状态数有多少个,一个是字符串\(a\)现在匹配到了第几位,一个是字符串\(b\)现在匹配到了第几位,另一个就是我们现在分成了多少组从字符串\(a\)中挑选出一段子串。这三个状态是最直接的状态,还有另一个就是我们是否要选择当前的字符\(a[i]\)来进行匹配,这个只有两种可能也就是选或不选两种,我们分别用\(0\)和\(1\)来表示选或不选的决策。 对于我们状态转移的过程中只会出现两种可能也就是\(a[i] == b[j]\)或者\(a[i] \neq b[j]\)这两种可能。 如果是\(a[i] == b[j]\)这种情况。  我们可以选择选当前的位置上的\(a[i]\)去匹配,也可以不选择,这就又是两种决策了,所以这个状态我们在转移的时候选或不选两种都是要更新的。 如果是选就是 dp[i][j][p][1] = dp[i - 1][j - 1][p][1] + dp[i - 1][j - 1][p - 1][1] + dp[i - 1][j - 1][p - 1][0]; 其中dp[i][j][p][1]表示的是在我们选择用当前的\(a[i]\)去和\(b[j]\)匹配并且将\(a[i]\)放在当前的子串中,dp[i - 1][j - 1][p][1]表示的是使用匹配前一次的状态并且使用当上一个字符的方案数,dp[i - 1][j - 1][p - 1][1]表示的是将当前匹配上的字符纳入上一次的子串中,并且使用上一次的字符的方案数,dp[i - 1][j - 1][p - 1][0]表示的就是使用匹配前一次的状态并且不使用上一次匹配的字符的方案数。 如果不选择当前的字符,那就是 dp[i][j][p][0] = dp[i - 1][j][p][0] + dp[i - 1][j][p][1]; 表示的就是没有使用字符,并且\(b\)串匹配的长度还是\(j\)的方案数。 如果是\(a[i] \neq b[j]\)这种情况的话  我们只能选择不匹配的情况,转移方程同上。还有就是因为匹配不上所以这一次如果是选的这个字符的话,那么方案数一定是0,所以还有一个赋值的过程

Oracle存储过程创建及调用

为了测试Oracle存储过程,我分别在window和Linux上都装了数据库的服务端,但刚开始我并不知道我装的是啥,也不知道服务端,客户端,客户端工具都分别是干啥的。刚开始,我在Linux系统上折腾了两天,把Oracle的服务端装好了,但我发现我没Scott用户,于是上网找教程,但奇怪的是运行脚本也没用,翻了好多个博客,偶然发现是因为我在安装时选择了装成容器型数据库,其实我感觉也没啥影响,但碍于网上容易找到的资料都是有Scott用户的,于是我删了数据库,开始重装,我只删了示例,然后装好之后,就碰到了各种问题,因为和原来的实例名不一样,我刚开始连不上数据库,然后折腾了半天,我连上了一个idle实例,运行脚本时报错,提示我没log on 还是啥的,我又查了资料,要start up,但我start up 是总提示不能创建某个文件,我找了半天,看网上资料显示要查询当前控制文件目录,我找了目录,然后按给出的路径去找,好家伙,俩控制文件都丢了,我又搜控制文件丢了咋整,然后按网上给的方法,去找,然而找到一半我发现,我好像删的时间过长,以至于找不到记录,然后又开始搜其他的方法,偶然看到可以用备份,于是我按照路径,找了一个备份,然后将它改名,复制到数据库里给出的控制文件的路径上,重新登陆数据库,好家伙,提示我容器数据库安装有错误。然后我把Oracle数据库完全从我Linux上卸载了。然后又上网找了分安装指南,这次我换成了rpm安装包,和我第一次安装的时候用的一样,这是我第四次装Oracle了,然后我按照说明把它给装完了,但说明后面还有一段是用Navicate连接数据库的,我不知道是不是属于安装的一部分,暂时没管。 转回我windows系统上,由于我用命令行创建存储过程时漏了一个“/“,导致我认为不能通过命令行直接创建存储过程,应该要借助一个有界面的工具,开始上网搜,于是我先后整了PL/SQL,sql server,Navicate,然后我发现,这三个好像与用途都是一样的,作为客户端工具连接数据库,问题来了,我就是连不上我的数据库,但在我不断上网瞎搜的情况下,我终于发现命令行是可以直接创建存储过程的,只需要在最后一行加一个”/“。 下面是一些存储过程示例: 语法: ************************************************************************************************************************ create or replace procedure <procedure_name> [(<parameter list>)] as|is <local variable statements> --创建过程,可指定运行过程需传递的参数 begin <executable statements> --包括在过程中要执行的语句 [exception <exception handlers>] --处理异常 end;**************************************************************************************************************************** 创建无参存储过程: create or replace procedure first_proc is begin dbms_output.put_line('我是存储过程'); dbms_output.put_line('hello everyone!'); end; 调用无参存储过程: begin first_proc; end;或者:exec first_proc; 创建带输入参数存储过程: create or replace procedure second_proc ( v_empno in empnew.empno%type ) is begin --根据员工号删除指定的员工信息 delete from empnew where empno = v_empno; --判断是否删除成功 if sql%notfound then --创建我们自己的异常条件,当Oracle不会抛出它们时 -2000至20999之间 raise_application_error(-20008,'指定删除的员工不存在!

Django设置 DEBUG=False后静态文件无法加载解决

问题描述: 调试阶段一直是在Debug=True运行的,都正常。 关闭了Debug后,出现了一个问题。就是静态文件找不到了,「img、css、js」都提示404,无法准确的访问 static 静态文件。 环境是:Python3.8.6 Django2.2 出现的问题根本原因是:当我们在开发django应用时如果设置了 DEBUG = True,那么django便会自动帮我们对静态文件进行路由;但是当我们设置DEBUG = False后,这一功能便没有了,此时静态文件就会出现加载失败的情况,想要让静态文件正常显示,我们就需要配置静态文件服务了。参考官方文档https://docs.djangoproject.com/en/2.0/howto/static-files/ 解决方法 修改App setting.py STATIC_URL = '/static/' STATIC_ROOT = 'static' ## 新增行 STATICFILES_DIRS = [ os.path.join(BASE_DIR, '/static/'), ##修改地方 ] 修改urls.py from django.views import static ##新增 from django.conf import settings ##新增 from django.conf.urls import url ##新增 urlpatterns = [ path('admin/', admin.site.urls), ## 以下是新增 url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='static'), ] 重启django项目,就可以运行了。

IaaS、PaaS、SaaS

 IaaS 我想到了阿里云的ECS云服务器 PaaS 我想到了微信小程序的云开发,以往开发小程序没有serverless时,只能算IaaS SaaS 我想到了淘宝店铺、有赞商城、微信小商店,都是可以直接打着自己的品牌来给客户提供使用   参考资料: http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html  

如何在react中配置使用less

1、解包webpack配置文件 使用create-react-app 创建的项目默认是看不到webpack配置文件webpack.config.js的,需要先解包暴露出来,然后才能修改里面的配置信息。  运行命令: yarn eject 注意:此命令一旦运行会修改package.json 文件此过程不可逆 可能遇到得问题 windows执行此命令会提示 yarn : 无法加载文件 C:\Users\cdb\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。    解决办法: 管理员身份运行powershell 执行以下命令: set-ExecutionPolicy RemoteSigned  2、安装less与less-loader 命令:npm install less-loader less --save  3、修改webpack.config.js   找到下面这段代码: const cssRegex = /\.css$/; const cssModuleRegex = /\.module\.css$/; const sassRegex = /\.(scss|sass)$/; const sassModuleRegex = /\.module\.(scss|sass)$/; 在此代码下添加 const lessRegex = /\.less$/; const lessModuleRegex = /\.module\.less$/; 搜索oneof 往下翻找到关于sass配置得部分 如下图   复制一份 ,将sass改为less  到此react使用less 配置完成。