# 常用方法

# 1.如何判断浏览器类型?

使用userAgent。例如判断是微信环境

if(navigator.userAgent.toLowerCase().indexOf('miniprogram') != -1){
    console.log("微信小程序");
} else if (navigator.userAgent.toLowerCase().indexOf('micromessenger') != -1){
    console.log("微信内置浏览器");
}
1
2
3
4
5

# 2.千万级别的门户网址需要怎么设计?

1.CDN 服务器部署的地区,该地区用户访问块,其它地区相对较慢。这种情况就需要使用CDN。 CDN将数据内容缓存到运营商机房,用户访问先从最近的运营商获取数据,大大减少了 网络访问的路径

2.反向代理 部署在网址的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的 数据返回给用户,如果没有缓存数据才会继续访问应用服务器获取,这样做减少了获取数据的 成本。nginx

3.硬负载 应用服务器作为网址的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。 应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求发到多个节点。 负载均衡技术硬件有F5,。软件有LVS,Nginx,HAProxy。LVS是四层(传输层)负载均衡。

4.使用Nosql和搜索引擎 Nosql有mongodb,hbase,redis。搜索引擎有lucene,solr,elasticsearch

5.消息队列 随着业务扩展,应用程序变得非常臃肿,我们需要将程序进行拆分。每个业务应用负载相对独立的业务运行。 业务之间通过消息进行通行或者共享数据库来实现。

6.分布式文件系统 分布式文件系统GFS,HDFS,TFS。而我们业务线主要用FASTDFS

7.前后端分离 降低耦合度

# 3.默认使用地址,端口

docker默认地址172.17.0.1

# 4.你如何自动发现热点缓存问题

一般出现缓存热点的时候,你的每秒并发肯定是很高的,每秒都是几十万甚至上百万的请求,此时完全可以基于 大数据领域的流式计算技术来进行实时数据访问次数的统计。比如storm,spark streaming,flink。 比如一秒之内,某条突然访问次数超过1000,就立马判定为热点数据,可以将发现出来的热点数据写入到 zookeeper中。

# 5.长连接

多次通过一次连接发送请求和返回响应 短连接:一个连接建立之后,然后发送请求,接着就断开

# 6.json与js对象的关系

总结: json数据类型为String.(json是一个特殊格式的字符串) Object数据类型Object

json通常用于服务端交换数据,在向服务器发送数据时一般是字符串

# 7.如何查看php.ini信息

谁便一个方法返回phpinfo()就行 public function actionShowInfo() { phpinfo(); }

# 8.订阅号,服务号,企业号,测试账号

测试号相当于服务号,用于测试 订阅号:用于个人的 服务号:用于商家的 企业号:用于企业的

# 9.Linux目录结构和作用

Linux目前采用多级树型结构 /根 /tmp(temporary) 存放临时文件。重启就会被删除 /bin 存放二进制可执行文件。常用命令一般都在这里(ls,cat,mkdir等) /etc(etcetra directory) 存放系统管理和配置文件 /home 存放所有用户的根目录,是用户主目录的基点。用户user主目录就是/home/user.可以用~user

var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串
1
2

# host设置

# 1.ubuntu/linux/mac设置

1.修改hosts
sudo vim /etc/hosts
2.设置host
127.0.0.1 localhost
3.重启网络
sudo /etc/init.d/networking restart
也可以直接点击右上角的网络连接图标,选择断开,然后再选中连接即可。
1
2
3
4
5
6
7

# 2.window设置

1.修改hosts
windows hosts位置: c:\windows\system32\drivers\etc\hosts
2.修改之后刷新缓存
cmd中执行:
ipconfig /flushdns
1
2
3
4
5

# node安装的全局插件(如cnpm,vue),命令执行找不到

# 1.ubuntu/linux

1.需要软连接到bin目录,(就可以全局使用了)
sudo ln -s /home/user/Downloads/node-v8.9.2-linux-x64/bin/cnpm /usr/local/bin
1
2

# 2.window

需要配置环境变量
1

# 11.h5手机号,验证码校验

<input v-model="phone" type='tel' placeholder="手机号" onkeyup="this.value=this.value.replace(/[^\d]/g,'')" onafterpaste="this.value=this.value.replace(/[^\d]/g,'')" oninput="if(value.length>11)value=value.slice(0,11)"/>
<input class="captcha" @blur="scrollBack" v-model="captcha" type='tel' placeholder="验证码" onkeyup="this.value=this.value.replace(/[^\d]/g,'')" onafterpaste="this.value=this.value.replace(/[^\d]/g,'')" oninput="if(value.length>6)value=value.slice(0,6)"/>
1
2

# 12.跨域请求要想带上cookie,必须要在ajax请求里加上xhrFields: {withCredentials: true}, crossDomain: true。

在做登录认证的时候,会出现请求未登录的情况,查看请求头的时候发现并没有把登录时的cookie设置到第二次的请求头里面。查看资料才知道跨域请求要想带上cookie,必须要在ajax请求里加上xhrFields: {withCredentials: true}, crossDomain: true。自从HTML5利用CORS实现了跨域资源共享之后,无论是POST方式还是GET方式,我们都可以用ajax来跨域访问资源,但是我们要怎么用CORS 因为在默认情况下,跨源请求不提供凭据(cookie、HTTP认证及客户端SSL证明等)。通过将withCredentials属性设置为true,可以指定某个请求应该发送凭据。如果服务器接收带凭据的请求,会用下面的HTTP头部来响应。 虽然设置了widthCredentials为true的请求中会包含远程域的所有cookie,但这些cookie仍然遵循同源策略,所以外域是访问不了这些cookie的,现在我们就可以安全地跨域访问啦。

window.$.ajax({
    url: '',
    type: '',
    xhrFields: {
        withCredentials: true
    },
    success: res => {
        
    }
})
1
2
3
4
5
6
7
8
9
10

# 13.请求头中的X-Requested-With: 对于非同一域名下的,需要传特别的校验header, key是X-Requested-With,值为固定值XMLHttpRequest.

用于校验

# 14.加密方式

1、MD5

一种被广bai泛使用的密码散列函数,可以du产生出一个128位(16字节)的散列值zhi(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。

2、对称加密

对称加密采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

3、非对称加密

与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。

如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

    /**
     * openssl_encrypt加密
     * @param data 加密明文
     * @param key 加密秘钥
     * @param method 加密方式(默认aes-128-ecb)
     */
    public static function encrypt($data, $key, $method = 'aes-128-ecb')
    {
        $encryptData = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA);
        return base64_encode($encryptData);
    }

    /**
     * openssl_decrypt解密
     * @param data 加密密文
     * @param key 加密秘钥
     * @param method 加密方式(默认aes-128-ecb)
     */
    public static function decrypt($data, $key, $method = 'aes-128-ecb')
    {
        $data = base64_decode($data);
        return openssl_decrypt($data, $method, $key, OPENSSL_RAW_DATA);
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 质料

优化性能 (opens new window) Linux目录结构和作用 (opens new window)

全量分析

评 论:

上次更新时间: 9/24/2020, 2:36:30 PM