express框架之跨域请求

express.js跨域请求代码如下:

1
2
3
4
5
6
7
8
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type", "application/json;charset=utf-8");
next();
});

按照上面的代码,即可解决跨域问题。

jQuery和js之Cookie实现

Web开发者的朋友们基本上都知道,jQuery是对js的封装。今天之所以想讲解这个问题,主要是因为Cookie用的还是比较多,应用场景除了老生常谈的购物车,还有就是用户状态(以我之前开发的一个项目除了session和token外,还有一个加密cookie,双重保护,确保系统安全)。

SpringBoot之静态资源放行

为了提高开发效率,编写对应的代码生成器。代码生成器主要有两个方面,一个是在线Web,另外一个是运行某个类。

使用的技术是SpringBoot+MyBatis-Plus+MySQL+JDK8。

在编写在线代码生成器的时候,正好遇到一个小问题,那就是静态资源无法访问。

以SSM(Spring+SpringMVC+MyBatis/MyBatis-Plus)框架来说,通常要想对静态资源放行,最简单直接的办法是使用*.do。

StringRedisTemplate操作Redis

在说到StringRedisTemplate操作Redis数据的时候,我们顺便谈谈StringRedisTemplate和RedisTemplate的区别。

一、StringRedisTemplate和RedisTemplate的区别

区别如下:
1.两者关系是StringRedisTemplate继承RedisTemplate。

从StringRedisTemplate源码即可看出,如下图所示:

2.两者的数据是不共通的,也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。

3.使用的序列化类不同。
使用的序列化哪里不同?如下所示:
(1)RedisTemplate使用的是JdkSerializationRedisSerializer 存入数据会将数据先序列化成字节组然后再存入Redis数据库。
(2)StringRedisTemplate使用的是StringRedisSerializer。

Could not get a resource from the pool 错误解决

错误关键信息:Could not get a resource from the pool

通常原因是因为远程服务器上的redis没有配置好。

解决方案如下:
(1)将redis.conf中的bind:127.0.0.1注释掉;
(2)将redis.conf中的protected-mode yes改为protected-mode no

按照上述的解决方案是可以解决这个问题的。但是以SpringBoot为例,这样做仍然无法解决问题,原因是因为application.yml中的redis配置有误造成的。

大型网站技术架构演化

一、大型网站软件系统的特点

1.高并发、大流量

a.什么是高并发?

高并发是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理多个请求。