ZooKeeper 学习笔记:一

ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

原语: 操作系统或计算机网络用语范畴。是由若干条指令组成的,用于完成一定功能的一个过程。具有不可分割性·即原语的执行必须是连续的,在执行过程中不允许被中断。

ZooKeeper 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

查看更多

项目阶段性整理:第一阶段

接触这个项目到现在已经快一年的时间了,但是到目前才仅仅写出了一个连骨架都算不上的架子,说实话进度有点慢。

简单的整理一下项目开发到现在的一些关键点和之后的一个开发路线:

1. 关键点整理

1.1 技术栈运用

1.1.1 前端

基础:Vue 2.5.10 + Vue Router 3.0.1 + Vuex 3.0.1
UI:iView 3.2.2
框架:iView-admin 2.5 Vue-cli 3.0 + Webpack 4.0
CSS 预处理器:Less

1.1.2 后端

基础:Python 3.7.2
框架:Django 2.1.7 Django-REST-framework 3.9.2
API规范:RESTful

1.1.3 数据库

1.2 关键功能实现方式

1.2.1 认证问题「前后端分离后登录功能的实现」

后端采用 djangorestframework-jwt 包作为实现 JWT 的基础,在此之上建立 jwt_extend app 重写其中的部分功能实现 token 的生成、刷新与认证。

查看更多

Nginx 从入门到实践

基础篇

快速安装
配置语法
默认模块
Nginx 的 Log
访问限制
HTTP 请求和链接
请求限制与链接限制
access 模块配置语法
请求限制局限性
基本安全认证
auth 模块配置语法
安全认证局限性

场景实践篇

静态资源 WEB 服务
什么是静态资源
静态资源服务场景
静态资源服务配置
客户端缓存
静态资源压缩
防盗链
跨域访问
代理服务
负载均衡
缓存服务

深度学习篇

查看更多

前端工具整理

把比较热门的一些前端工具整理出来以加深自己对这些工具的理解。

webpack:

定位:一个现代 JavaScript 应用程序的静态模块打包器
主要功能:在内部创建一个依赖图,用于映射到项目需要的每个模块,然后将所有这些依赖生成到一个或多个 bundle
默认配置文件:webpack.config.js

Babel:

定位:一个 JavaScript 编译器
主要功能:主要用于在旧的浏览器或环境中将 ECMAScript 2015+ 代码转换为向后兼容版本的 JavaScript 代码
默认配置文件:babel.config.js .babelrc package.json

Gulp:

定位:用自动化构建工具增强你的工作流程!
主要功能:用自动化构建工具增强你的工作流程!
默认配置文件:gulpfile.js

Sass/Scss:

定位:CSS 的一个扩展,它使 CSS 的使用起来更加优雅和强大。

查看更多

webpack 4 入门

导读

写这篇文章是为了让自己在自学 webpack 的过程中有所产出,于是边读 webpack 中文文档 边写下了这篇文章,里面的很多实例都是直接挪用的文档中的实例,但在一些概念的理解上我加入了自己的想法「未必精确」,所以读的时候要抱着「怀疑的态度」。

文章内容不仅仅是简单的「概念堆叠」,还有一些「重点」概念的「深入理解」,不过篇幅有限我不希望这篇文章变成一份冗长的伪文档,所以全部的内容都是围绕 webpack 的 4个 核心概念延展开来的,每个配置后面我都会尽量跟上一个实例以更加形象的展示配置的具体作用。

站在我的角度上,读完这篇文章并不能让你精通 webpack 但是理解 webpack 中的重要概念,自己编写一个 webpack.config.js 配置文件还是可以的。

webpack 简介

本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(static module bundler)。在 webpack 处理应用程序时,它会在内部创建一个依赖图(dependency graph),用于映射到项目需要的每个模块,然后将所有这些依赖生成到一个或多个bundle。

查看更多

MacOS 下利用 pyenv 管理Python 版本和虚拟环境

pyenv 介绍

pyenvPython 版本管理工具。pyenv 可以改变全局的 Python 版本,安装多个版本的 Python,设置目录级别的 Python 版本,还能创建和管理 virtual python environments。所有的设置都是用户级别的操作,不需要 sudo 命令。

pyenv 主要用来管理 Python 的版本,比如一个项目需要 Python 2.x,一个项目需要 Python 3.x。 而 virtualenv 主要用来管理 Python 包的依赖,不同项目需要依赖的包版本不同,则需要使用虚拟环境。

pyenv 原理简介

pyenv 通过系统修改环境变量来实现 Python 不同版本的切换。而 virtualenv 通过将 Python 包安装到一个目录来作为 Python 包虚拟环境,通过切换目录来实现不同包环境间的切换。

pyenv 的美好之处在于,它并没有使用将不同的 PATH 植入不同的 shell 这种高耦合的工作方式,而是简单地在 PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而使后方的系统路径失效。

安装之前

不同系统请参考 Common build problems,安装必须的工具。

查看更多