面包屑思维模型实战模型错题集结构手册流程手册自我检测专题模块
-
微信小程序前端微信小程序前端易错点收集查看
-
css/less/sass样式控制在开发过程中的一些样式控制bug规避查看
-
tp5开发小程序tp5开发小程序时错误积累查看
-
PHP错题集PHP在实际开发过程中遇到的问题查看
-
MySql数据库使用MySql在实际开发中遇到的错误总结查看
-
TP5错题集积累tp5框架在实际开发过程中遇到的问题查看
-
uni-app爬坑主要用于uni-app项目中遇到的一些问题查看
-
Vue.js易错收集vue.js项目常见错误收集整理查看
-
uni-app开发微信小程序uni-app开发微信小程序的一些爬坑积累查看
-
LinuxLinux在部署、开发、运维时遇见的错误积累查看
-
安全设计常见安全设计查看
-
Redis项目中使用redis的相关错误积累查看
-
前端特效前端特效相关错题集查看
最新博文
-
Nginx配置文件
NginxNginx默认的配置文件是在安装目录下的 conf目录下
配置文件中有很多#号,该符号表示注释内容,去掉所有以 #开头的段落,精简之后的配置文件内容如下(PS:其实注释掉的地方,都是一些功能的使用代码,需要用到的时候,取消注释即可):
# 主进程叫master,负责管理子进程,子进程叫worker
# worker_processes配置项表示开启几个业务进程,一般和cpu核数有关
worker_processes 1;
events {
worker_connections 1024;
}
http {
# include表示可以引入其他文件,此处表示引入http mime类型
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 虚拟主机,可以配置多个
server {
listen 80;
server_name localhost;
location / {
# 路径匹配之后,哪个目录下去匹配相应的网页,html是相对路径
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}去掉注释信息后,可以将 nginx.conf 配置文件分为三部分:
全局块
event块
http块
一.全局块
从配置文件开始到events块之间的内容。主要会设置一些影响Nginx服务器整体运行的配置指令
(1)配置运行Nginx服务器的用户(组);
(2)允许生成的 worker process 数;
(3)进程PID存放路径;
(4)日志存放路径和类型;
(5)配置文件的引入
二.event块
涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括
(1)是否开启对多 work process下的网络连接进行序列化
(2)是否允许同时接收多个网络连接
(3)选取哪种事件驱动模型来处理连接请求
(4)每个 work process 可以同时支持的最大连接数等
三.http块
这部分是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
需要注意的是:http 块也可以包括 http 全局块、server 块。下面的反向代理、动静分离、负载均衡都是在这部分中配置
每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。而每个server块也分为全局server块,以及可以同时包含多个locaton块。
location块
一个 server 块可以配置多个 location 块。
这块的主要作用是:
(1)基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string)
(2)对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配
(3)对特定的请求进行处理
(4)地址定向、数据缓存和应答控制等功能
(5)还有许多第三方模块的配置也在这里进行。
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
# 若请求路径像这样:www.xxxx/img/example.png
# 则访问/img/目录下的文件时,nginx会去/var/www/image/img/目录下找文件
location /img/ {
root /var/www/image;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
阅读更多风口下的猪2022-12-17【Nginx】
-
Nginx简介及使用场景
NginxNginx (“engine x”)是一个高性能的HTTP和反向代理服务器。
特点是占有内存少,并发能力强,事实上ngimx,的并发能力确实在同类型的网页服务器中表现较好
Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率﹐能经受高负载的考验,有报告表明能支持高达50, 000个并发连接数。
Nginx作用:反向代理、负载均衡、动静分离等一.反向代理
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址
如果客户端用代理,则是正向代理。如果服务器端用代理,客户端无感,则是反向代理
二.负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,由反向代理服务器将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
三.动静分离
在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
阅读更多风口下的猪2022-12-17【Nginx】
-
element-select数据回显时,显示value而不显示label
element出现element-select数据回显时,显示value而不显示label的情况。主要原因是对应回显数据不是字符类型(很可能是整型)。
解决方式是回显数据对应字段转为字符类型即可
阅读更多风口下的猪2022-12-05【element】
-
tp6原生查询防止sql注入
thinkphp原生查询,不建议通过拼接sql语句和输入参数的方式执行,容易被sql注入。
sql注入一般会采用预编译的方法和存储过程来防止。
tp6原生执行实现预编译,可以通过query()、execute()绑定参数来实现。
Db::query("select * from think_user where id=? AND status=?", [8, 1]); // 命名绑定 Db::execute("update think_user set name=:name where status=:status", ['name' => 'thinkphp', 'status' => 1]);
阅读更多风口下的猪2022-11-19【thinkphp】
-
安全设计----服务器板块---1禁用root权限(1)添加ssh用户并获得root权限
安全设计创建用户并获得用户权限,主要分两步:创建角色和获得权限
(1)useradd/passwd命令创建角色并设置密码
#useradd
阅读更多风口下的猪2022-10-21【安全设计】
-
mysql全文索引梳理
MySQLmysql全文索引是居于ES和like模糊查询之间的一个解决方案。ES对内存需求太大(至少4G),like模糊查询又太消耗性能。
一.硬性条件
要使用mysql全文索引需要以下几个条件
(1)mysql版本必须大于5.7.6
(2)查询字段必须加FULLTEXT索引
(3)该字段FULLTEXT索引必须配套使用全文解析器ngram
二.索引建立方法
(1)alter方式
ALTER TABLE 表名 ADD FULLTEXT INDEX 索引名称 (字段1,字段2,字段3) WITH PARSER ngram;
注意:后面要加上WITH PARSER ngram 才可以进行中文检索,ngram是一个全文解析器
例如:
ALTER TABLE diary ADD FULLTEXT INDEX full_diary_title(title) WITH PARSER ngram;
三.注意点
mysql原生全文解析器(ngram)
MySQL 中使用全局变量ngram_token_size来配置ngram中n的大小,它的取值范围是1到10,默认值是2。通常ngram_token_size设置为要查询的单词的最小字数。如果需要搜索单字,就要把ngram_token_size设置为1。在默认值是2的情况下,搜索单字是得不到任何结果的。因为中文单词最少是两个汉字,推荐使用默认值2。如果你想查询到单个字,那么我们需要设置为1。ngram_token_size的值设置的越小,全文索引占用的空间也越小。一般来说,查询正好等于ngram_token_size的词,速度会更快,但是查询比它更长的词或短语,则会变慢。
show VARIABLES like 'ngram_token_size'; 可以看的我的分词长度为2 也就是说如果输入“我爱学习”四个字,那么就会拆分成 “我爱”,“爱学”,“学习”,最小两个字进行检索,但MySQL默认此长度为4,搜索较长的字符没有问题,搜索四个字以下的内容就不能正常使用了。
修改方法:在my.ini文件下的 [mysqld] 下面加上 ngram_token_size = 2 即可,当然也可以设置成1。如果是Linux系统则修改my.cnf文件。
修改完成后重启 MySQL服务,重新建立倒排索引后方可生效。
四.使用查询方法
$sqlStr="SELECT * FROM `".self::TABLE_ITEM."` WHERE `is_del`=0 AND MATCH(`content`) AGAINST('".$params['keyword']."' IN BOOLEAN MODE)";
$res=Db::query($sqlStr);
阅读更多风口下的猪2022-10-17【MySQL】
-
并发解耦用于异步编程
软件开发异步不可控,项目需多个异步请求完成后,再执行下一操作。除了aync/await+promise来解决外,还可以通过并发解耦的方式实现。
即并发+watch监听
每个异步完成后,往监听的数组中添加一个元素,当监听数组的长度等于并发异步数时,再执行下一步操作
watch:{
process_load:{
handler(newVal,oldVal) {
var that=this;
if(newVal.length==2){
this.$nextTick(()=>{
setTimeout(()=>{
that.getDom();
},500);
})
}
},
immediate: true,
deep: true
},
}this.$api(url).then((res)=>{
if(res.data.code!=1000){return that.$msg.fail(res.data.msg)}
that.toTemp(picUrl,(temp)=>{
res.data.data.pic=temp;
that.main=res.data.data;
that.process_load.push('1');
});
});
阅读更多风口下的猪2022-10-11【软件开发】
-
小程序将网络图片转为base64
uni-app采用arraybuffer转成base64
let toBase64Url;
uni.request({
url:$picUrl,
method: 'GET',
responseType: "arraybuffer",
success: async res => {
let base64=wx.arrayBufferToBase64(res.data); //把arraybuffer转成base64
toBase64Url='data:image/jpeg;base64,'+base64; //不加上这串字符,在页面无法显示
$callback(toBase64Url);
}
});
阅读更多风口下的猪2022-10-10【uni-app】
-
微信/QQ小程序网络图片-canvas时不显示的问题
uni-app
阅读更多风口下的猪2022-10-10【uni-app】
-
组件通过qq.createSelectorQuery().select()不能获取到自己板块的id,但是能获取到父主页面的id
uni-app
阅读更多风口下的猪2022-10-10【uni-app】
-
源生组件的z-index问题
uni-appradio、canvas等源生组件在真机环境下,默认会最高层级。也就是说在canvas上面通过z-index设置的元素,都会在真机环境下被覆盖。解决方案是使用cover-view和cover-image标签,代替view和image标签
阅读更多风口下的猪2022-10-07【uni-app】