Git实现自动化部署

业务需求 随着项目业务越来越复杂,参与开发的人越来越多,代码管理,部署就会越来越复杂。传统手动部署变的不可靠,容易出错,而且浪费大量时间。有没有什么办法制动部署呢?这了介绍利用git hook完成制动部署。 当然,制动化部署是DevOps的重要部分。 关于钩子(hooks) 客户端钩子 客户端钩子分为很多种。 下面把它们分为:提交工作流钩子、电子邮件工作流钩子和其它钩子。脚本写在工作区的.g...

继续阅读 »

定向广告系统开发需考虑的要素

简单描述一下何为定向广告 什么是定向广告? 简单来说,就是将广告推给特定属性和行为的人群。 定向广告系统与传统广告系统区别 传统广告系统一般是广告位买断制,全量展示。而定向广告系统一般需大数据计算,投放比较精细。 定向广告系统,需大量数据和用户支撑,也需要有大量广告主形成良性竞价平衡。不然会出现价格低,数据难看等情况。 定向广告系统不是以广告位为投放单位,而是以创意为基本投放单位。一个创意...

继续阅读 »

Elasticsearch教程 — 集群/分片/副本/水平扩容/优化

集群安装与配置 单台节点往往性能有限、磁盘有限、并发有限。 修改集群文件目录中每个节点的 config/elasticsearch.yml 配置文件 #节点 1 的配置信息: #集群名称,节点之间要保持一致 cluster.name: my-elasticsearch #节点名称,集群内要唯一 node.name: node-1001 node.master: true node.data:...

继续阅读 »

优秀的ssh工具推荐

Xshell + Xftp 付费软件,不过有家庭免费版 https://www.xshellcn.com/xshell.html 此软件是在公司中使用的软件,公司电脑配置差。打开占用内存 30M左右。只能运行在windows环境中。需要说明一下的是,以前这两款软件爆出过收集用户信息的丑闻了的。 tabby 开源工具 https://github.com/Eugeny/tabby 经过...

继续阅读 »

API接口设计规范

概述 这篇文章分享 API 接口设计规范,目的是提供给研发人员做参考。 规范是死的,人是活的 路由命名规范 参考RESTful设计规范:RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。 版本号 版本号通常使用v1,v2表示。在代码中表现通常以模块形式存在。 例如模块目录:api/modules/v1 URL设计 RESTful的核心思想就是,客户端发出的数据...

继续阅读 »

驾校考试科目4易错点整理

科目一 假1吊2撤3醉5逃终身 驾驶拼装报废车。罚款200-2000并吊销执照,收缴车辆强制报废 超速50%,罚款200-2000并吊销执照 两证两标一牌:机动车上路行驶携带,驾驶证、行驶证、检验合格标志、保险标志、车牌 特殊天气,同向行驶,近距离不能使用远光灯 夜间通过无指示灯的路口时,使用交替灯光提醒其他车辆,但有行人时,使用进光灯 无中心线城3公4,有中心线城5公7。记忆的时候记住3...

继续阅读 »

简单并行开发流程

开发流程的用途 公司经常有萌新来实习,为了尽快让其了解功能开发的整个流程,于是做了这个图,方便大家理解开发的整个流程,哪个阶段有哪些人参与,或者同一时间哪些事情可以并行完成 详细流程

继续阅读 »

APP端扫一扫技术文档

CPSAPP端扫码相关知识 CPSAPP二维码内容专属字符串 二维码内容字符串由两部分组成路由|随机token 例如:login|ET822N04S41EFWRH。当然这里如果结构很复杂,推荐使用json 路由 路由是一个字符串,二维码字符串|前部分的字符串login,路由字符串决定了处理类。例如login指定了扫码登录相关的处理类。 随机token 16位随机字符串,大写。例如:ET822...

继续阅读 »

内部MySql使用规范

数据库环境 prod:线上环境,只允许管理员操作且要做操作记录方便回滚。 dev:开发环境,开发可读写,可修改表结构。且使用版本控制系统记录sql操作记录,方便上线时统一修改数据库。 命名规范 基本命名规则 使用有意义的英文词汇,词汇中间以下划线分隔,避免使用保留字 只能使用英文字母,数字,下划线,并以英文字母开头 库、表、字段全部采用小写,不要使用驼峰式命名 数据库、表,一律使用前缀...

继续阅读 »

微服务架构与RPC框架讲解

服务端架构的演变 微服务定义 维基上对其定义为:一种软件开发技术 - 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。 后端架构演变 单体架构 业务初期用户...

继续阅读 »

摇一摇事件 DeviceOrientation 和 DeviceMotion

起因 在做大屏幕项目时,与用户互动部分包括摇一摇功能,但发现页面中摇一摇在手机上无效,怎么调试都不管用。查了半天资料才清楚其原因,于是记录下来。 设备方向和运动监听 html 5 提供了一些方法在移动端获得设备方向及运动(因为他是依赖传感器硬件的,pc没有也不存在抱着台式机跑来跑去场景)。传感器包括陀螺仪、加速器和磁力仪(罗盘)。 DeviceMotionEvent 事件 在设备发生摆动、运...

继续阅读 »

Elasticsearch教程 — Document APIs

Elasticsearch文档的操作可以理解成MySQL中的增删改查操作。 单个文档操作 # 索引中添加数据,如果目标索引的文档已存在,则更新文档并增加版本。当不指定id时为创建文档。 PUT /<target>/_doc/<_id> POST /<target>/_doc/ PUT /<target>/_create/<_id>...

继续阅读 »

feed流系统的设计

什么是feed流系统 feed是将用户主动订阅的若干消息源组合在一起形成内容聚合器,帮助用户持续地获取最新的订阅源内容。 有哪些明显的feed流的: 最早的 RSS(简易信息聚合),可以将其他多个网站的内容聚合到一起统一阅读。 好友动态(微博、朋友圈) feed变种(私信、通知、群聊) 个性化推荐(抖音、头条) 个人首页的历史消息 APP上消息红点数量或显示最后一条消息 feed流系统特...

继续阅读 »

Elasticsearch教程 — Query DSL

查询语句核心语法部分 查询注意事项 text类型的查询都是基于分词后的词条查询的,例如"abcd"分词后"ab,cd"如果term查询"bc"就查不到。 query(查询)和filter(过滤)的区别 查询语句可同时存在query和filter。 query的查询字段会进行相关性_score的计算,而filter仅仅用来筛选。 Elasticsearch会自动缓存常用的过滤器,以提高性...

继续阅读 »

Elasticsearch教程 — Search APIs

搜索 API 用于搜索和聚合存储在 Elasticsearch 索引和数据流中的数据。时ES的核心语法之一。 核心搜索 # 搜索 # <target>(可选,字符串)要搜索的数据流、索引和别名的逗号分隔列表。支持通配符(*)。要搜索所有数据流和索引,请省略此参数或使用*或_all。 # 查询参数、查询正文参数很多,参考文档 # https://www.elastic.co/gui...

继续阅读 »

分布式ID生成器

需求背景 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求。此时一个能够生成全局唯一ID的系统是非常必要的。 特点 全局唯一,不能出现重复。 高性能,分布式系统中通常每秒会有很多数据产生。 单调递增,保证下一个ID一定大于上一个ID,这样可以保证某些索引快速建立。例如B-tre...

继续阅读 »

基础数据平台建设的构想

企业发展到一定阶段后多数企业的现状 初创公司的核心是做好产品服务好用户,当企业发展到一定阶段,业务开始多元化,通常的做法是将子业务分离到子公司/部门完成,随着子公司/部门越多,产生的数据以及复杂度也会大幅度增加。我们会发现个部门与子公司间的协作会越发的困难,数据逐渐专有化,达不到最佳利用。这时候我们就需要考虑建设基础数据平台了 各种概念的理解 数据库: 数据仓库: 数据中台: 元数据:描述...

继续阅读 »

Elasticsearch教程 — Index APIs

类比MySQL,其主要操作是对表的增删改查,对于ES那么就是对索引的操作(index APIs)以及搜索(Search APIs)。搞清楚这两个知识点基本使用ES就没多大的问题了。当然这两个知识点只是ES的小部分功能,但是最重要。我们就从这两方面开始学起。 索引管理 约定: 指的是:索引名/数据流名/别名。 指的是:索引名 # 创建索引 PUT /<索引名> { # 索...

继续阅读 »