一个程序猴子在创业的公司的一年,是如何从0到1

传说中有一只程序猴子,我们暂且叫他小C,小C在经历了一次创业失败之后,毕竟临近毕业,所以就需要寻找一份工作,作为一个实际项目经历丰富却不背理论的人,所以决定选择一家普通的小公司来工作。 原来只有小C一个后台研发,并且代码为0 入职前几天,小C还在想着,又回归平常的生活了。由于带团队久了,虽然独立解决问题的能力凶残了很多,但是毕竟没有人带,没法吸取前人的经验,并且正所谓当局者迷旁观者清,自己的不足也很难以发现。 但是入职之后,小C蒙了。后台就小C一个人,那就是说没人带小C啦。并且是没有代码的,然后API文档却已经写好的,然后APP端界面是已经完成的,并且他们是2个人。 ...

看完就会用的GIT操作图解分析

无论你是前端还是后台,无论是运维还是移动端研发,GIT是逃避不了的东西,当然你说你要用SVN,那不在这次的讨论范围之内。不多说,请看下文GIT图解分析,10分钟学会git操作,当然下面的教程是为实战为主,会跟你在别的网站看到的不一样。 1.GIT是啥玩意呀? 首先每一个项目,我们都把他变成一个git仓库。 一个git仓库包含无数分支,默认分支为master 每个分支都包含无数个版本库 每个版本库都包含无数个文件 注:具体包含关系看上图哈,看这图仅仅让你知道git的样子 我们为什么要用GIT呢? 我们可以每次修改一些文件之后,冻结住当前所有文件,然后定义成一个版本,让自己有一颗后悔药吃, ...

我的运维之路

下面写的是本人三年以来的部署经验,仅仅是个人经验之谈,如有不足欢迎指出。 直接把修改的文件覆盖线上文件 想想一开始的时候,刚学会独立开发一个网站,然后服务器跑一个tomcat,然后每次修改后都是打包成一个war,然后传上服务器覆盖,重启tomcat。 使用git来更新文件 因为后来使用php来开发,然后每次修改都会涉及一堆文件,然后那个时候由于上传的图片跟代码都在同一个目录,所以不能发布新版直接替换整个目录,但是一个一个文件的手工替换又很容易出现遗漏,而导致系统无法正常使用。 刚好这个时候学会使用git来管理代码,所以每次发布版本都是在服务器pull最新的代码,然后手动重启服务,这样子就避免了覆盖文件遗漏的问题。 进阶级使用git自动部署 上面两种阶段只能说是手工部署,完全还算不上运维。进阶版是如何出现的呢?某一段时间, ...

我是如何开发公司年会抽奖系统的?

需求出现 年会将近,而年会抽奖环节必不可少,但是抽奖系统却还没有。所以某一天,PM走过来说:小伙,手头的需求修完成了吧!在年会开始之前必须做出一个抽奖系统。这个系统很简单,后台可以设置总金额,然后每个用户可以获得的金额范围,金额派完则显示很遗憾没有中奖,还要设置抽奖活动时间。 需求分析 一看这东西,就觉得非常简单。最简单的一个方案,活动时间放在一个数据表,总金额和已经使用金额存放在一个表,已经派送的日志一个表。后台提供一个接口,客户端手动点击按钮,则发送一个请求。账号体系直接使用微信的oauth,接口首先判断活动有没有开始, ...

你真的懂redis吗?

缓存 我相信大部分互联网应用都是用redis作为缓存的,因为相对于memcached来说,redis的kv结构效率区别不大,并且还有hash这种方便的结构,并且redis还有持久化的能力,可以防止重启机器导致的数据丢失而造成数据击穿问题。 计数器 例如记录文章的点击数,用户每次访问文章就自增一。然后还可以利用自减操作来判断库存问题。由于是原子性操作,可以避免并发问题,而且性能很好。 队列 用做消息队列,在要求不高的情况下可以替代rabbitmq等消息中间件 由于redis把数据添加到队列是返回添加元素在队列的第几位,所以可以做判断用户是第几个访问这种业务 队列不仅可以把并发请求变成串行,并且还可以做队列或者栈使用 集合 可以保存一堆预生成的随机数 可以避免一些操作重复调用,因为加入集合的操作是返回true或者false 发布和订阅 ...