technology

A collection of 15 posts

「技术笔记」数据库系统概念-事务transaction 总结
数据库

「技术笔记」数据库系统概念-事务transaction 总结

一、定义 事务(transaction):需要具备ACID特性(原子性、一致性、隔离性、持久性) 二、为什么 为什么要有「事务」? 事务是关系型数据库引入的概念,一个现实的业务操作往往关联多处数据,需要在数据库层面提供一种底层的逻辑保障,确保对数据的操作符合一定的特性,简化业务逻辑。 事务transaction解决以下问题: 逻辑操作的原子性(atomicity):一系列的逻辑操作要么成功的反应在数据库中,要么完全不反映在数据库中(意味着如果有任何一处失败,整个操作需要回滚)。 数据约束的一致性(consistency):数据库的表之间存在各种约束条件,比如主键约束、外键约束等,

  • Hao Hu
「技术笔记」简易用户行为跟踪系统接口设计 2018.03
technology

「技术笔记」简易用户行为跟踪系统接口设计 2018.03

愿景 搭建一套简单、高效的用户行为记录及分析工具,为产品功能升级、运营电销转化用户购买行为提供数据支撑。 友盟的数据统计功能太弱了,第三方产品如神策数据、growingio功能还比较完善,不过费用上不适合现有产品规模,后续看需求情况再考虑。 基本场景 用户打开app,app自动同步NTP服务器时间 用户使用app进行了多个操作 app自动记录了用户的操作序列,连同时间戳、device信息、app版本信息发送给了「User Track Server」 backend将关键api调用结果,连同时间戳、用户信息发送给「User Track Server」 「User Track Server」

  • Hao Hu
「研发规范」团队成员基于fastlane+match统一iOS证书以支持CI
technology

「研发规范」团队成员基于fastlane+match统一iOS证书以支持CI

背景 为了支持CI持续集成,让Argo能够实现自动构建;同时避免证书混乱,实现自动管理。 整体方案 工具:fastlane + match 证书:公钥和私钥都有match统一管理,统一分发。 开发状态下(development),团队所有成员使用XCode的automatically manage signing自动管理certificates和provisioning profile。 持续集成状态下(appstore & testflight),由match管理。 match实现原理 match使用的是一个私有的git管理所有certificates和provisioning file。私有的git保存的说有内容都是通过OpenSSL加密的,密码不能外泄。 团队成员需要做的 Step1:

  • Hao Hu
「技术笔记」XCode + fastlane + jenkins 自动构建 2018.02
technology

「技术笔记」XCode + fastlane + jenkins 自动构建 2018.02

背景 需要在一台全新的独立mac设备上进行CI,这台设备命名为 Argo。平时大家开发使用Xcode,开启Automatically manage signing,自动构建使用Jenins+fastlane+match在Argo上进行。自动构建的Debug版本放在内部的http服务器上供大家使用xcode安装,自动构建的Relese版本通过fastlane自动上传到testflight,供测试。 原理 jenkins自动构建ios及android架构图 xcode+fastlane+jenkins工作图 准备工作 Argo上的环境准备: XCode 9.2 + Command Line Tools rbenv + ruby 2.

  • Hao Hu
「研发规范」版本号命名规范 2017.12
technology

「研发规范」版本号命名规范 2017.12

版本号命名规则 版本格式:主版本号.迭代版本号.补丁版本号 [. 编译版本号 ],版本号递增规则如下: 主版本号:产品进行了非常大规模的改动,比如重构、产品对客户带来了显著变化。主版本号改变需要通过评审确定。 迭代版本号:当你做了迭代式的产品功能新增,功能显著变化。 补丁版本号:当你做了产品修复,或者迭代式非显著功能新增。 编译版本号:根据Git提交次数进行确定,具体命令参考后文。 编译版本号可以加到“主版本号.迭代版本号. 补丁版本号”的后面,作为延伸。 主版本号 ...... 迭代版本号 ...... 每次发布增加1,

  • Hao Hu
「研发规范」Gitflow工作流规范 2017.12
technology

「研发规范」Gitflow工作流规范 2017.12

1.Summary2.Branches主干分支:永远存在,互相平行。master:产品发布分支,从develop分支合并过来。合并develop分支需要在git服务器上提交merge request。develop:所有协作者要交付的最新的代码辅助分支:用来团队协作、特性跟踪、版本发布,最终将被删除的分支。所有分支最终合并到develop。为了便于管理,当前需要push到远程服务器,合并到develop之后进行删除。  feature:具体的功能点分支,每一个功能点从develop分支拉取一个feature分支,完成之后合并到develop分支。新分支命名规则:前缀“feature-”,后面部分任意。 release:预发布分支,

  • Hao Hu
「技术笔记」VIM常用插件配置 2017.10
technology

「技术笔记」VIM常用插件配置 2017.10

前言 从12年到17年一直用的Mac Air,最近听说MBP重量、体积已经跟Air差不多了,正好该换笔记本了,入手了一台比较高配的MBP,i5+16G+512G SSD,视网膜屏幕看着清晰太多了。麻烦的是用了这么多年的环境又要重新配置一遍,iterm2+zsh+vim是首先要搞定的。欣喜发现,有个哥们做了个vim的package叫 Ultimate vimrc,扩展性不错,把以前需要自己做的事打包了,节省了不少时间,备注一下Ultimate vimrc集成的插件。 vim插件 以下大部分插件使用Ultimate vimrc会自动安装,配置文 ~/.vim_

  • Hao Hu
「技术笔记」利用Certbot免费升级站点到https(Let's Encrypt CA)2017.10
technology

「技术笔记」利用Certbot免费升级站点到https(Let's Encrypt CA)2017.10

Let's Encrypt CA 项目简介 EFF全称Electronic Frontier Foundation,是一个国际知名的民权组织,旨在维护互联网上的公民自由、提供法律援助、监督执法机构,总部设在美国。2015年,Mozilla、思科、Akamai、IdenTrust、EFF和密歇根大学研究人员一起发布 Let's Encrypt CA 项目,计划为网站提供免费SSL证书,加速将Web从HTTP过渡到HTTPS。 部署HTTPS的最大障碍是HTTPS所需证书的复杂性、官僚主义和费用,Let’s Encrypt项目的目标是解决这些问题,将证书安装的时间减少到20到30秒。

  • Hao Hu
「技术笔记」tmux安装及配置 2017.08
technology

「技术笔记」tmux安装及配置 2017.08

前言 ssh连接云服务器,从12年开始一直用的screen,最近发现tmux功能更强大,换个轮子。记录下相关的操作及配置。 简单介绍下:tmux,全称terminal multiplexer,tmux是screen的替代品,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台,且无需担心掉线。相对于Screen,它支持屏幕切分,而且具备丰富的命令行参数,使其可以灵活、动态的进行各种布局和操作。 安装 自动安装 $ yum install tmux # linux, 目前大部分的centos上的源版本是1.8,建议源码安装最新版 $ brew install

  • Hao Hu
「技术笔记」推荐算法总结 2015.10.23
technology

「技术笔记」推荐算法总结 2015.10.23

前言 从数据、算法的角度汇总,并根据当前业务需求进行分析。 数据 物品 被推荐的对象集;物品具有复杂性、有效用的特点。 复杂度低且价值小的物品:新闻、网页、书籍、光盘、电影 复杂度高且价值大的物品:数码相机、手机、个人电脑。最复杂的是保险政策、金融投资、旅游和工作。 物品集可以用各种信息表示:电影的种类(喜剧、悲剧)、导演信息、演员信息,评论抽象 用户

  • Hao Hu
「技术笔记」Java Hotspot GC性能优化 2013.07
technology

「技术笔记」Java Hotspot GC性能优化 2013.07

Introduction Hotspot是一款java虚拟机:Java( tm) HotSpot( tm) virtual machine Hotspot默认的collector把堆分为3个generation,young generation, tenured generation 和 permanent generation。绝大多数空间分配都是在young generation中完成的,young generation中的objects生命周期很短。在young generation中存活在下来的object会被挪到tenured generation. Young generation: smaller, collected more often, copying

  • Hao Hu