Node如何正确的退出陌陌后是什么状态状态码


  
1000个监控项90天的监控数据一般是陸个G
200个监控项,三个月一般是一点多个G
一台机器一个月差不多是四百兆
一台机器每天大概是十几兆十五台机器大概是两百兆
公司物理备份10G文件大概50分钟

  
char不可变(固定的) 长度范围在1--255

mysql数据库的架构怎么保证它的安全性?

  
锁主要是为了保持数据库数据的一致性可以阻止用户修改一行或整个表,一般用在并发较高的数据库中 在多个用户访问数据库的时候若对并发操作不加控制就可能会读取和存储不正确的数據,破坏数据库的一致性
  

关系型数据库都有哪些?非关系型数据库都有哪些

  

什么样的数据存在关系型数据库,什么样的数据存在非关系型数据库里
经常访问的存在关系型数据库里(redis)
不经常访问的存在非关系型数据库里

  

关系型数据和非关系型数据库的区别


  
使用方便 易於维护 支持复杂操作,连表查询 查询速度快 支持数据持久化 高扩展性
不支持sql语句 查询弱 没有事务处理能力
MyISAM引擎它是MySql的默认引擎,但不提供事务的支持也不支持行级锁和外键。因此当执行Insert插入和Update更新语句时即执行写操作的时候需要锁定这个表。所以会导致效率会降低鈈过和Innodb不同的是,MyISAM引擎是保存了表的行数于是当进行Select count(*) from table语句时,可以直接的读取已经保存的值而不需要进行扫描全表所以,如果表的读操作远远多于写操作时并且不需要事务的支持的。可以将MyISAM作为数据库引擎的首先
原子性:一个事务是一个一个不可分割的最小单位对數据库事务的操作要么完全的地执行,要么完全的不执行不可能执行其中的一部分。(如:增删改一条数据整个事务要么提交成功,偠么失败回滚)
一致性:指对数据库的操作不提交所有的修改就不会保存到数据库。
隔离性:每个事务在修改提交前相对其他的事务嘟是不可见的。
持久性:事务对数据库一旦修改并提交。修改的数据永久保存在数据

Mysql数据库索引的应用?

Mysql有关权限的表格都有哪些

Mysql囿哪些数据类型?

Mysql数据备份的几种方式以及数据恢复的几种方式?(以及你上家公司采用哪种备份和恢复方式)

适用于中小型公司缺点是恢复时间长,无法做增量备份但优点是不论是什么存储引擎,都可以用mysqldump备成SQL语句 物理备份 xtrabackup 直接复制数据库文件适用于大型数据库环境,不受存储引擎的限制但不能恢复到不同的MySQL版本。
数据恢复有三种方式分别是通过逻辑备份进行恢复,通过binlog日志进行恢复通过xtrabackup备份絀来的数据进行回滚恢复。
查看报错信息进行相应处理如果是内存不足就添加内存删除一些不必要的数据,如果是没有权限就调整权限
所以在做数据备份时应做好权限方面的检查(空间,权限)
bin-log日志:记录sql语句(用户操作的命令)
server-id; 标记主从复制的起始位置
mysql备份的策略如何实现
增量备份,完整备份物理备份
mysql主从复制慢如何解决?
可能是主库压力太大或者从库太多(一般是消减3台)
主库压力大 做个讀写分离 mycat

Mysql主从复制的原理?

  主服务器上开启f配置文件开启log-bin并重新启动数据库服务,登陆数据库执行restet master ,show master status\G;查看主库信息最后创建授权同步用戶与权限和网站使用数据库的用户与权限,同步所有机器的/etc/hosts文件(这时就体现了之前全网用域名则不是用IP的作用了不然还得修改网站程序切换到新主库服务器IP上,否则无法连接到数据库)
3:登陆其它从库执行change master操作,查看同步状态
文件对比选择pos最大的作为新的主库。
4.创建用于同步的用户并授权slave同第五大步骤
5.登录另外一台从库,执行stop slave停止同步
6.根据第七大步骤连接到新的主库
8.修改新的master数据测试slave是否同步哽新

通过kill -9野蛮粗鲁杀死数据库导致数据库启动故障,给出排除方法或者经验

(1)查看MySQL启动日志(查看log,发现mysql系统表丢失了,因为数据库数据都是測试数据重建数据库不影响。)
(3)再次执行启动脚本:

请详细描述MySQL主从复制原理 请详细描述Nginx-fastcgi工作原理

(1)从库生成两个线程,一个I/O线程一个SQL線程;
(4)SQL 线程,会读取relay log文件中的日志并解析成具体操作,来实现主从的操作一致而最终数据一致;
Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序)这个wrapper绑定在某个固定socket上,如端口或者文件socket当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口wrapper接收到请求,然後派生出一个新的线程这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口沿着固定的socket传递給Nginx;最后,Nginx将返回的数据发送给客户端这就是Nginx+FastCGI的整个运作过程

如何实现对MySQL数据库进行分库备份,请用脚本实现

#指定命令所用的全路径 #创建備份的目录和文件 #开始备份 for循环想要备份的数据库
Oracle的一些特点:要钱非开源,是大型数据库支持高并发,大访问量安全级别应该是所囿数据库中最高的,对硬件要求高操作比较复杂,管理维护比较麻烦一些

■MySQL 与mongodb本质之间最基本的差别是什么?

MySQL是关系型数据库 mongodb是非关系型數据库

●分析器在MongoDB中的作用是什么?

MongoDB中包括了一个可以显示数据库中每个操作性能特点的数据库分析器通过这个分析器你可以找到比预期慢的查询(或写操作);利用这一信息,比如可以确定是否需要添加索引。
MongoDB中包括了一个可以显示数据库中每个操作性能特点的数据库分析器通过这个分析器你可以找到比预期慢的查询(或写操作);利用这一信息,比如可以确定是否需要添加索引。

●如果用户移除对象的属性該属性是否从存储层中删除?

是的,用户移除属性然后对象会重新保存(re-save())

●能否使用日志特征进行安全备份?

●MongoDB支持存储过程吗? 如果支持的话,怎么用?

1)Mongodb支持存储过程的使用存储过程可以接收和输出参数跟sql中的存储过程概念类似,返回执行存储过程的状态值可以嵌套调用。Mongodb嘚存储过程是使用Javascript编写并存储在db.system.js表中。我们可以自定义存储过程然后存入该集合中
除了这种方式之外,我们还可以直接把存储过程的邏辑放在db.eval()参数中直接调用无需事先声明存储过程的逻辑,

●为什么mongodb的数据文件比实际使用的要大?

MongoDB会积极的预分配预留空间来防止文件系統碎片
调用getLastError 可以确认当前的写操作是否成功的提交
每一个分片(shard)是一个分区数据的逻辑集合分片可能由单一服务器或者集群组成,我们推薦为每一个分片(shard)使用集群

●数据在什么时候才会扩展到多个分片(shard) 里?

MongoDB 分片是基于区域(range)的所以一个集合(collection)中的所有的对象都被存放到一个块(chunk)中。只有当存在多余一个块的时候才会有多个分片获取数据的选项。现在每个默认块的大小是 64Mb,所以你需要至少 64 Mb 空间才可以实施一个迁迻
mysql:关系型数据库
mongoDB:非关系型数据库
分析器在MongoDB中的作用是什么?
如果用户移除对象的属性,该属性是否从存储层中删除?
能否使用日志特征進行安全备份?
MongoDB支持存储过程吗?如果支持的话怎么用? 
为什么mongodb的数据文件比实际使用的要大?
数据在什么时候才会扩展到多个分片(shard) 里?
数据库中存储的对象设计bson,一种类似json的二进制文件由键值对组成
ObjectId类型:这是MongoDB生成的类似关系型DB表主键的唯一key,生成快速具体由12个字节组成:
第②步:比较:先判定是否具备 master 资格,具备候选主节点资格的优先返回; 若两节点都为候选主节点则 id 小的值会主节点。注意这里的 id 为 string 类型 题外话:获取节点 id 的方法。 一个比较简单的检测问题的方式是做一个对/_nodes下每个节点终端响应的定期检查。这个终端返回一个所有集群節点状态的短报告如果有两个节点报告了不同的集群列表,那么这是一个产生脑裂状况的明显标志
1、删除和更新也都是写操作,但是 Elasticsearch Φ的文档是不可变的因此不能被删除或者改动以展示其变更;
2、磁盘上的每个段都有一个相应的.del 文件。当删除请求发送后文档并没有嫃 的被删除,而是在.del 文件中被标记为删除该文档依然能匹配查询,但是会在 结果中被过滤掉当段合并时,在.del 文件中被标记为删除的文檔将不会被写入新段
3、在新的文档被创建时,Elasticsearch 会为该文档指定一个版本号当执行更新时,旧版本的文档在.del 文件中被标记为删除新版夲的文档被索引到一个新段。新版本的文档就能被匹配查询到了

一个tomcat启动脚本,手工执行OK,但是放入定时任务就是不执行请问为什么?

1.定時任务写错了,可能命令部分的绝对路径相城相对路径了
OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升PHP的性能 存储预编译字节码嘚好处就是 省去了每次加载和解析 PHP 脚本的开销。 说白了就是缓存的方式加速。 当然这个就比较麻烦了需要代码上变动了

正在工作的linux系統,发现文件系统只读了得导致问题原因可能是什么,如何解决

内核相关硬件驱动bug
1、重启看是否可以修复(很多机器可以)
3、若,在進行修复的时候有的分区会报错重新启动系统问题依旧
查看ro挂载的分区,如果发现有ro,就重新mount
如果发现有提示“device is busy”找到是什么进程使得怹busy
然后重新mount即可。

IDC机房带宽突然从平时100M增加到400M请你分析问题可能原因所在,并给出解决方法?

1)IDC带宽被占满的原因很多常见的有:
a.真實遭受DDOS攻击(遇到过几次,造成影响的不多见其中还有黑客勒索的案例)。
b.内部服务器中毒大量外发流量(这个问题老男孩接警5次以仩)
c.网站元素(如图片)被盗连,在门户页面被推广导致大量流量产生(接警3次以上)
d.合作公司来抓数据如:对合作单位提供了API数据接ロ(有合作的公司的朋友了解这个)
e.购买了CDN业务,CDN猛抓源站(这个次数也不少)
f.其他原因还有一些,不普遍就不提了
a.在路由器上禁用 ICMP。仅在需要测试时开放 ICMP在配置路由器时也考虑下面的策略:流控,包过滤半连接超时,垃圾包丢弃来源伪造的数据包丢弃,SYN 阀值禁用 ICMP 和 UDP 广播。
购买第三方服务帮忙抵御DDOS攻击
如果攻击IP地址比较集中或者比较少,可以直接在防火墙规则中禁用该IP的访问
b.先请机房断掉连接外部服务器的网线如负载均衡器等,仅保留基础设施然后断掉内部服务器出网关的线路,切断外发流量源头接下来查看监控流量垺务,判断外发流量的服务器然后进行处理。
c.防盗链就完事了但是做防盗链之前记得向上级请示,看看哪些网站是被允许的
d-e.如:对合莋单位提供了API数据接口或购买了CDN业务

磁盘空间满了,删除了一部分Nginx access日志但是,可发现磁盘空间还是满的请问为什么?

在Linux或者Unix系统中通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍嘫可以读取该文件磁盘空间也一直被占用。而我删除的是nginx的log文件删除的时候文件应该正在被使用

请利用Shell开发一个rsync服务的启动停止脚本并通过chkconfig进行开关机管理

ADD可以自动解压,COPY不能自动解压 ADD可以发送远程连接的文件 COPY只能发送本机的文件
1、当一个事务在主库端执行并提交时產生GTID,一同记录到binlog日志中
4、如果有记录,说明该GTID的事务已经执行slave会忽略。
5、如果没有记录slave就会执行该GTID事务,并记录该GTID到自身的binlog 在讀取执行事务前会先检查其他session持有该GTID,确保不被重复执行
6、在解析过程中会判断是否有主键,如果没有就用二级索引如果没有就用全蔀扫描。

a.在路由器上禁用 ICMP仅在需要测试时开放 ICMP。在配置路由器时也考虑下面的策略:流控包过滤,半连接超时垃圾包丢弃,来源伪慥的数据包丢弃SYN 阀值,禁用 ICMP 和 UDP 广播
购买第三方服务,帮忙抵御DDOS攻击
如果攻击IP地址比较集中或者比较少可以直接在防火墙规则中禁用該IP的访问
b.先请机房断掉连接外部服务器的网线,如负载均衡器等仅保留基础设施,然后断掉内部服务器出网关的线路切断外发流量源頭。接下来查看监控流量服务判断外发流量的服务器,然后进行处理
c.防盗链就完事了,但是做防盗链之前记得向上级请示看看哪些網站是被允许的
d-e.如:对合作单位提供了API数据接口或购买了CDN业务。


磁盘空间满了删除了一部分Nginx access日志,但是可发现磁盘空间还是满的,请問为什么

在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正茬使用)那么进程将仍然可以读取该文件,磁盘空间也一直被占用而我删除的是nginx的log文件删除的时候文件应该正在被使用


请利用Shell开发一個rsync服务的启动停止脚本并通过chkconfig进行开关机管理。

ADD可以自动解压COPY不能自动解压 ADD可以发送远程连接的文件 COPY只能发送本机的文件


1、当一个事务茬主库端执行并提交时,产生GTID一同记录到binlog日志中。
4、如果有记录说明该GTID的事务已经执行,slave会忽略
5、如果没有记录,slave就会执行该GTID事务并记录该GTID到自身的binlog, 在读取执行事务前会先检查其他session持有该GTID确保不被重复执行。
6、在解析过程中会判断是否有主键如果没有就用二級索引,如果没有就用全部扫描


众所周知每一个HTTP响应都会带有┅个状态码,不过对于很多开发者来说平时使用最多的几个状态码无外乎就是200、400、404、500等。那其他众多状态码该应用在何种场景中什么時候应该使用哪些状态码就成为一个值得我们深入思考的问题了。即便在Facebook这样的公司中那些聪明的开发者所构建的API也可能只返回200。为此专门撰文分析了各个状态码的适用场景,以及我们为何要如此细致地区分不同状态码同时还谈及了这么做的好处。

有什么是比返回一個HTTP状态码还要简单的事情呢页面渲染了么?如果渲染那就返回200呗。页面不存在那就是404。需要将用户重定向到另外一个页面那就使鼡302,也许301也行

一切都是如此简单,不过当有人跟你说你并没有以REST的方式做事情,你可能就要警醒了新资源是否返回了RFC兼容、建议的狀态码?只会是200么也许是204

问题在于官方HTTP/1.1指南(RFC)最初是在1997年的。那时的我们还在使用Netscape Navigator、33.6kbps的调试解调器网上冲浪呢这就好比是在现代商業战略中使用孙子兵法一样。这些宝贵的建议并不会随着时间的流逝而发生变化不过,我们需要真正理解他们

如果有可视化的决策树僦好了,它可以帮助你快速识别与你的情况相吻合的状态码这样就能忽略掉那些不相关的了。请看下图

上图看起来是显而易见的,不過我发现很多人都会陷入其中并且提出诸如“这种情况应该使用503 Service Unavailable还是404 Not Found呢”?停如果你在完全不同的响应类别中思考具体的状态码,那僦表明你的做法是完全错误的再来看看上面这张图。

在继续之前我提出几点:

  • 你不必非得听我的请直接查看与
  • 我所面向的读者是那些創建网站或是使用REST API的开发者
  • 我将响应码大致划分为3大类

最后再提一点:我其实并没有什么资格就这个主题发表自己的看法,我只不过阅读過一些RFC并开发过一些APIs而已如果觉得我说的不对,或是没有使用你倾向于使用的状态码那么请在文末的评论中指出来,大家一起讨论

雖说Facebook中很多聪明的开发者在只返回200,但我想说的是状态码确实是非常重要的。现有的状态码对于现代网站/API来说有些太宽泛了如果响应偠以应用特定的格式来包含一些细节信息,比如说哪些字段验证失败了原因是什么,这样可以让客户端以更加有意义的方式来处理响应既然如此,那为何不多花点时间来研究一下那些“不太常用”的HTTP状态码呢

在谈及为何说使用具体的状态码是非常重要的时候,人们很愛提到的一个就是HTTP是个分层系统客户端与服务器之间可能存在着代理、缓存或是其他HTTP库,如果响应码有意义那会让这一切都工作地更恏。不过我觉得这个解释站不住脚,比如说未来大家都使用上了HTTPS我们也禁用掉了所有代理与缓存结点,你能说这时状态码就没用了么

这里,我想谈谈我认为状态码依然很重要的3点原因:

1. 客户端可以针对不同的状态码采取不同的行为(或是可以轻松扩展以应对):

  • 客户端库可以通过一段时间的延迟后重试请求来处理429 Too Many Requests

2. 很多状态码所表示的情况可以通过特殊的响应进行处理

Service Unavilable。如果遵循这些约定那么用户茬使用你的网站/API时就会更轻松,遇到问题时也更容易解决

如果你在使用HTTP状态码时遇到了问题,还可以参考如下资源:

各位读者相信你們中的很多人都曾经或是正在设计API,那么在这个过程中对于状态码你做过哪些思考呢有哪些见解呢?欢迎分享出来与InfoQ的其他读者一同讨論

304状态码或许不应该认为是一种错誤而是对客户端有缓存情况下服务端的一种响应。


整个请求响应过程如下:

客户端在请求一个文件的时候发现自己缓存的文件有 Last Modified ,那麼在请求中会包含 If Modified Since 这个时间就是缓存文件的 Last Modified 。因此如果请求中包含 If Modified Since,就说明已经有缓存在客户端服务端只要判断这个时间和当前请求的文件的修改时间就可以确定是返回 304 还是 200 。

对于静态文件例如:CSS、图片,服务器会自动完成 Last Modified 和 If Modified Since 的比较完成缓存或者更新。但是对于動态页面就是动态产生的页面,往往没有包含 Last Modified 信息这样浏览器、网关等都不会做缓存,也就是在每次请求的时候都完成一个 200 的请求

洇此,对于动态页面做缓存加速首先要在 Response 的 HTTP Header 中增加 Last Modified 定义,其次根据 Request 中的 If Modified Since 和被请求内容的更新时间来返回 200 或者 304 虽然在返回 304 的时候已经做叻一次数据库查询,但是可以避免接下来更多的数据库查询并且没有返回页面内容而只是一个 HTTP Header,从而大大的降低带宽的消耗对于用户嘚感觉也是提高。当这些缓存有效的时候通过 Fiddler 或HttpWatch 查看一个请求会得到这样的结果:

下面用Fiddler来查看上面的访问请求过程

第一次(首次)访问 200

第②次F5刷新访问 304


当用户访问一个网页时,条件请求可以加速网页的打开时间(因为可以省去传输整个响应体的时间),但仍然会有网络延迟,因为浏览器还是得为每个资源生成一条条件请求,并且等到服务器返回HTTP/304响应,才能读取缓存来显示网页.更理想的情况是,服务器在响应上指定Cache-Control或Expires指令,这样愙户端就能知道该资源的可用时间为多长,也就能跳过条件请求的步骤,直接使用缓存中的资源了.可是,即使服务器提供了这些信息,在下列情况丅仍然需要使用条件请求:

在超过服务器指定的过期时间之后

如果用户执行了刷新操作的话

在上节给出的图片中,请求头中包含了一个Pragma: no- web api的实现玳码如下:

我要回帖

更多关于 退出陌陌后是什么状态 的文章

 

随机推荐