我们在进行数据库的设计的时候,很多情况下表中的字段都是用的是字符串类型的数据,其中就有四种选择char
,varchar
,nchar
,nvarchar
,我们该如何选择?
四种类型的详细说明
char
:固定长度,非Unicode字符数据(对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节)。用来存储定长数据,长度为n个字节,n的取值范围为1至8,000,存储大小是n个字节。
varchar
:可变长度,非Unicode字符数据(对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节)。用来存储变长数据,长度为n的字节,n的取值范围为1至8,000,max指示最大存储大小是2^31-1个字节,存储大小是输入数据的实际长度加2个字节,所输入数据的长度可以为0个字符。
nchar
:固定长度,Unicode字符数据。n个字符,n值必须在1到4,000之间(含)。存储大小为两倍n字节。
nvarchar
:可变长度,Unicode字符数据。n个字符,n值在1到4,000之间(含)。max指示最大存储大小为2^31-1字节,存储大小是所输入字符个数的两倍+2个字节,所输入数据的长度可以为0个字符。
Unicode或非Unicode的区别
非Unicode:
char
,varchar
Unicode:
nchar
,nvarchar
数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储,如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。
Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,比如
nchar
,nvarchar
,这两种类型使用了Unicode字符集。
直接上代码,亲测可用。
我们经常通过缓存技术来加快网站的访问速度,从而提升用户体验。HTTP协议中也规定了一些和缓存相关的Header,来允许浏览器或共享高速缓存缓存资源。这些Header包括:
Last-Modified 和 If-Modified-Since
ETag 和 If-None-Match
Expires
Cache-Control
以上Header又可以分成两种类型:
协商缓存:浏览器发送验证到服务器,由服务器决定是否从缓存中读取,如 1 和 2 。
强缓存:浏览器验证缓存的有效性,然后决定是否从缓存中读取数据,如 3 和 4 。
本文将会分别介绍这四种配置的作用以及可能产生的影响。
本文介绍SpringBoot如何使用阿里巴巴Nacos做配置中心。
Nacos简介
Nacos是阿里巴巴集团开源的一个易于使用的平台,专为动态服务发现,配置和服务管理而设计。它可以帮助您轻松构建云本机应用程序和微服务平台。
Nacos基本上支持现在所有类型的服务,例如,Dubbo / gRPC服务,Spring Cloud RESTFul服务或Kubernetes服务。
尤其是使用Eureka注册中心的,并且担心Eureka闭源的开发者们,可以将注册中心修改为Nacos,本文主要介绍Nacos配置中心的使用。
nacos官网
vue-cli写完的静态页面我们在node环境中引入没有问题,但是打包后放在Apache环境下,路径却有问题了.
如一个简单css语句
1 | .welcome { width: 420px; height: 235px; background: url(../img/welcome.jpg) 0 0 no-repeat; |
但是打包后路径成了却出现404访问不到的问题。
解决的办法很简单
一次项目中使用开源nginx反向代理NTLM的windows身份验证出现反复登陆框,最终分析属于keepalive 在NTLM认证过程中发生变化导致。
如采用nginx plus版本,可以直接在在upstream区域添加专用的语句 ntlm;
1 | upstream http_backend { |
如果不是nginx plus版本,就可以直接放弃了.
根据网上其他教程配置,可以实现登录功能,但存在bug.
因为上游链接和客户端链接没有绑定(参考上面ntlm参数说明),可能出现A用户获取B用户登录信息的问题(多用户同时访问系统时).
为什么会出现跨域问题
出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)。
什么是跨域
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。
当前页面url | 被请求页面url | 是否跨域 | 原因 |
---|---|---|---|
http://www.test.com/ | http://www.test.com/index.html | 否 | 同源(协议、域名、端口号相同) |
http://www.test.com/ | https://www.test.com/index.html | 跨域 | 协议不同(http/https) |
http://www.test.com/ | http://www.baidu.com/ | 跨域 | 主域名不同(test/baidu) |
http://www.test.com/ | http://blog.test.com/ | 跨域 | 子域名不同(www/blog) |
http://www.test.com:8080/ | http://www.test.com:7001/ | 跨域 | 端口号不同(8080/7001) |