数据结构(一)

2019-04-01
阅读 20 分钟
1.7k
算法的时间复杂度 通常用O(1),O(n),O(lgn),O(nlogn),O(n^2)等表示算法时间复杂度,大O描述的是算法运行时间和输入数据之间的关系。 看一个对输入数据进行求和的算法: {代码...} 第3行,对于nums中的每个数,都要进行这种操作,执行时间我们计为常量c1;第2行和第4行的执行时间计做常量c2; 得出该算法的运行时间与...

SpringCloud笔记

2019-02-27
阅读 28 分钟
5.9k
spring cloud面向开发人员,对分布式系统从编程模型上提供了强大的支持。可以说是分布式系统解决方案的全家桶,极大地降低了开发与构建分布式系统的门槛。

Nginx笔记(三)场景应用

2018-01-28
阅读 18 分钟
4.4k
静态资源web服务 Nginx作为保存静态资源的web服务,对静态资源直接做出响应。减少后端服务器的负载压力。 基础配置 配置实践 {代码...} {代码...} {代码...} {代码...} 验证结果 开启压缩 开启压缩,可以加快资源响应速度,同时节省网络带宽资源。 配置实践 {代码...} {代码...} {代码...} 相比图片,用文件来演示压缩,...

Nginx笔记(二)Nginx基础

2018-01-27
阅读 16 分钟
5.2k
nginx.conf是主配置文件,在文件尾通过include /etc/nginx/conf.d/*.conf引入了default.conf配置,组成完整的Nginx配置:

Nginx笔记(一)Nginx安装

2018-01-27
阅读 5 分钟
3.7k
环境准备 准备服务器centos7.2 确保有网络 {代码...} 确保yum可用 {代码...} 关闭iptables规则 {代码...} 关闭selinux策略 {代码...} 安装基础库 {代码...} 开始安装 访问Nginx官网[链接] 复制以下yum源 {代码...} 服务器上创建nginx的yum源 {代码...} {代码...} 验证yum源 {代码...} 从yum源安装nginx {代码...} 验证ng...

Redis笔记(四)主从复制

2017-12-17
阅读 3 分钟
2.2k
复制的配置 两种方式实现 slaveof命令方式 {代码...} 配置方式 {代码...} 复制演示 我们在同一台机器上演示,6379作为主,6380作为从。修改redis-6379.conf以下配置 {代码...} 修改redis-6380.conf以下配置 {代码...} 验证master节点 {代码...} 验证slave节点 {代码...} 验证主从复制 {代码...} 查看下日志 {代码...} {...

Redis笔记(三)Redis持久化

2017-12-06
阅读 8 分钟
11.7k
写日志方式任何数据的更新都记录在日志当中,某个时候要进行数据的恢复时,重走一遍日志的完整过程。例如MySQL的Binlog,HBase的HLog和Redis的AOF,就是这种方式。

Redis笔记(二)Redis其他功能

2017-12-02
阅读 4 分钟
2.8k
slowlog-log-slower-than:慢查询阈值(单位:微秒)slowlog-log-slower-than=0, 记录所有命令slowlog-log-slower-than<0, 不记录任何命令

zookeeper系列(八)zookeeper运维

2017-11-27
阅读 5 分钟
8.1k
dataDir内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上。

zookeeper系列(七)实战分布式命名服务

2017-11-27
阅读 4 分钟
8.4k
zookeeper的命名服务有两个应用方向,一个是提供类似JNDI的功能,利用zookeepeer的树型分层结构,可以把系统中各种服务的名称、地址以及目录信息存放在zookeeper,需要的时候去zookeeper中读取。

zookeeper系列(六)实战分布式队列

2017-11-27
阅读 7 分钟
11.7k
zookeeper系列(一)zookeeper必知zookeeper系列(二)实战master选举zookeeper系列(三)实战数据发布订阅zookeeper系列(四)实战负载均衡zookeeper系列(五)实战分布式锁zookeeper系列(六)实战分布式队列zookeeper系列(七)实战分布式命名服务zookeeper系列(八)zookeeper运维 分布式队列 在传统的单进程编程中...

zookeeper系列(五)实战分布式锁

2017-11-27
阅读 9 分钟
8.7k
我们常说的锁是单进程多线程锁,在多线程并发编程中,用于线程之间的数据同步,保护共享资源的访问。而分布式锁,指在分布式环境下,保护跨进程、跨主机、跨网络的共享资源,实现互斥访问,保证一致性。

zookeeper系列(一)zookeeper基础

2017-11-27
阅读 15 分钟
11.5k
zookeeper系列(一)zookeeper基础zookeeper系列(二)实战master选举zookeeper系列(三)实战数据发布订阅zookeeper系列(四)实战负载均衡zookeeper系列(五)实战分布式锁zookeeper系列(六)实战分布式队列zookeeper系列(七)实战分布式命名服务zookeeper系列(八)zookeeper运维 zookeeper集群配置 准备3台服务器...

zookeeper系列(四)实战负载均衡

2017-11-27
阅读 16 分钟
17.2k
图中左侧为ZooKeeper集群,右侧上方为工作服务器,下面为客户端。每台工作服务器在启动时都会去zookeeper的servers节点下注册临时节点,每台客户端在启动时都会去servers节点下取得所有可用的工作服务器列表,并通过一定的负载均衡算法计算得出一台工作服务器,并与之建立网络连接。网络连接我们采用开源框架netty。

zookeeper系列(三)实战数据发布订阅

2017-11-27
阅读 12 分钟
10.9k
多个订阅者对象同时监听同一主题对象,主题对象状态变化时通知所有订阅者对象更新自身状态。发布方和订阅方独立封装、独立改变,当一个对象的改变需要同时改变其他对象,并且它不知道有多少个对象需要改变时,可以使用发布订阅模式。

zookeeper系列(二)实战master选举

2017-11-27
阅读 7 分钟
12.6k
考虑7*24小时向外提供服务的系统,不能有单点故障,于是我们使用集群,采用的是Master+Slave。集群中有一台主机和多台备机,由主机向外提供服务,备机监听主机状态,一旦主机宕机,备机必需迅速接管主机继续向外提供服务。在这个过程中,从备机选出一台机作为主机的过程,就是Master选举。

Redis系列-Redis笔记(一)

2017-11-26
阅读 15 分钟
8.3k
Redis基础 Redis安装 {代码...} Redis启动方式 直接启动:redis-server 动态参数启动:redis-server --port 6380 指定配置文件启动:redis-server configPath 生产环境建议指定配置文件启动,单机多实例配置文件可以用端口区分开,比如像下面这样: {代码...} 暂时我们仅指定以下几项基础配置: {代码...} 用指定配置文...

ES6系列---类

2017-09-17
阅读 9 分钟
2k
大多数面向对象编程语言都支持类和类继承的特性,而JavaScript只能通过各种特定方式模仿并关联多个相似的对象。这个情况一直持续到ES5。由于类似的库层出不穷,最终ES6引入了类特性,统一了类和类继承的标准。

ES6系列---对象功能扩展

2017-09-02
阅读 5 分钟
2.4k
这段代码中的createPerson()函数创建的对象,其属性名与函数的参数相同,在返回的结果中,name和age分别重复了两遍,只是其中一个是对象属性名,另一个是为属性赋值的变量。

ES6系列---Set集合与Map集合

2017-08-30
阅读 5 分钟
6.1k
长久以来,数组一直是JavaScript中唯一的集合类型。如果开发者们需要使用非数值型索引,就会用非数组对象创建所需的数据结构,而这就是Set集合与Map集合的早期实现。

ES6系列---函数

2017-08-27
阅读 8 分钟
2.4k
对于函数的命名参数,如果不显式传值,则其默认值为undefined。因此经常是使用逻辑或操作符来为缺失的参数提供默认值。然而这个方式有缺陷,如果给第二个形参timeout传入值0,尽管这个值是合法的,也会被视为false值,对函数调用方来说,timeout非预期的被修改为2000。

ES6系列---解构

2017-08-21
阅读 7 分钟
2.5k
在编码过程中,我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段。ES6的解构特性,可以简化这项工作。解构是一种打破数据结构,将其拆分为更小部分的过程。

ES6系列---块级作用域

2017-08-20
阅读 4 分钟
1.9k
如果你不熟悉JavaScript,可能会认为只有当condition的值为true时才会创建变量value。事实上,在预编译阶段,JavaScript引擎会将上面的函数修改成下面这样:

ES6系列---迭代器(Iterator)与生成器(Generator)

2017-08-19
阅读 10 分钟
14.2k
在ES6之前,这种标准的for循环,通过变量来跟踪数组的索引。如果多个循环嵌套就需要追踪多个变量,代码复杂度会大大增加,也容易产生错用循环变量的bug。

React系列---React+Redux工程目录结构划分

2017-07-27
阅读 3 分钟
13k
按角色组织 如果你用MVC框架开发过应用,应该知道MVC框架之下,通常有这样一种代码组织方式: {代码...} Controller、Model、View分别代表三种模块角色。这种组织代码的方式叫做“按角色组织”。 因为MVC的影响深远,一些风格依然影响了前端人员的思维方式,在Redux应用的构建中,就有这种组织方式: {代码...} 角色如下:...

React系列---Redux高阶运用

2017-07-16
阅读 8 分钟
5.6k
在Redux架构中,reducer是一个纯函数,它的职责是根据previousState和action计算出新的state。在复杂应用中,Redux提供的combineReducers让我们可以把顶层的reducer拆分成多个小的reducer,分别独立地操作state树的不同部分。而在一个应用中,很多小粒度的reducer往往有很多重复的逻辑,那么对于这些reducer,如何抽取公...

React系列---FSA知识

2017-07-09
阅读 3 分钟
5.6k
action在Flux架构中是及其重要的概念,它是应用状态变化的必要条件,所有的状态都必须通过action触发。action的角色是状态变更信息的载体,是一个object,包含一个表示action type的字段,这是Flux对action的全部要求。不同于Flux作为架构思想的宽泛要求,在实际的开发中,我们往往希望打交道的同类实物有着类似的接口/...

React系列---Redux异步流

2017-07-09
阅读 5 分钟
7.2k
Redux单向数据流,由action对象开始驱动,每个action对象被派发到Store之后,被分配给reducer函数,reducer完成数据操作后立刻返回,reducer返回的结果又被拿去更新Store上的状态数据,更新状态数据的操作立刻会被同步给监听Store状态改变的函数,从而引发React视图组件的更新过程。

React系列---Webpack环境搭建(三)打包性能优化

2017-06-30
阅读 4 分钟
6.8k
实际项目,动辄上千个模块,打包花1分钟以上是很常见的。我们构建的时候,往往希望自己的代码和第三方库(vendors)可以分开打包,因为不涉及到升级第三方库时,就没必要每次浪费打包时间在这上面。

React系列---Webpack环境搭建(二)不同环境不同配置

2017-06-27
阅读 5 分钟
9.5k
React系列---Webpack环境搭建(一)手动搭建React系列---Webpack环境搭建(二)不同环境不同配置React系列---Webpack环境搭建(三)打包性能优化 实际项目中,往往不同环境有不同的构建需求。比如开发、测试和生产环境对应的后端接口地址不同,生产环境需要进行代码混淆、压缩等。 因此,往往还需要将webpack配置分成多...