某小公司RESTful、共用接口、前后端分离、接口约定的实践
上次那篇我是如何重构整个研发项目,促进自动化运维DevOps的落地?中提到restful接口重构具体详细内容没有写出来,今天补上。前言随着互联网高速发展,公司对项目开发周期不断缩短,我们面对各种需求,使用原有对接方式,各端已经很难快速应对各种需求,更难以提高效率。于是,我们不得不重新制定对接规范、开发逻辑以便快速上线项目。我们的目标尽可能的缩小沟通的成本,开最少的会,确定大部分的事。花最少的时间写
上次那篇我是如何重构整个研发项目,促进自动化运维DevOps的落地?中提到restful接口重构具体详细内容没有写出来,今天补上。前言随着互联网高速发展,公司对项目开发周期不断缩短,我们面对各种需求,使用原有对接方式,各端已经很难快速应对各种需求,更难以提高效率。于是,我们不得不重新制定对接规范、开发逻辑以便快速上线项目。我们的目标尽可能的缩小沟通的成本,开最少的会,确定大部分的事。花最少的时间写
为了这篇文章,我前后写了将近十篇文章铺垫,才将这篇整体重构思想引出。背景先说下背景,我们是一家小公司,虽然打着做产品的旗帜,但是每个客户都有大量的个性化功能,这里指各个客户的java端、Android端、ios端(大部分功能代码是相同的,个性化功能代码不同)。我之前是做Android的,实践证明,特殊情况下,只有我们Android组可以随意切换到任意一家客户,任意一版本的代码。并且修复一处公共bu
Linux 系统为 CentOS Linux release 7.4.1708手贱、手贱、手贱 删了python 导致yum不可用。百度一大圈,重装yum和python后,老是报各种各样的错。历经磨难,终于自己总结了一套,亲测可用,分享一下。首先卸载现有python rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps #卸载pyth
网络上虽然已经有了很多关于程序员的话题,但大部分人对这个群体还是很陌生。我们在谈论程序员的时候,究竟该聊些什么呢?各位程序员大佬们,请让我听到你们的声音!不管你是前端开发、后端研发、测试开发、移动端开发、全栈工程师、运维工程师、网络工程师、架构师、研发经理还是其他职位,不管你在做Android开发 、iOS开发、U3D 、COCOS2DX、 自动化测试、功能测试、性能测试、白盒测试、灰盒测试、黑盒
我是谁?我从哪里来?我要到哪里去?有一种说法,人的一生,要死去三次。第一次,当你的心跳停止,呼吸消逝,准确的说是脑死亡,你在生物学上,你的肉体被宣告了死亡;第二次,当你下葬,人们穿着黑衣出席你的葬礼,他们宣告,这一刻你的身份在这个社会上抹去,你在这个社会上不复存在,你悄然离去;第三次死亡,是这个世界上最后一个记得你的人,把你忘记,于是,你就真正的死去,消失在历史长河中,整个宇宙都不再和你有关。作者
一、幂等性概念 在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数. 更复杂的操作幂等保证是利用唯一交易号(流水号)实现.我的理解:幂等就是一个操作,不论执
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。 以下是本文的目录大纲:概述框架
在具备了volatile、CAS和模板方法设计模式的知识之后,我们可以来深入学习下AbstractQueuedSynchronizer(AQS),本文主要想从AQS的产生背景、设计和结构、源代码实现及AQS应用这4个方面来学习下AQS,文章耗时一个月,所以篇幅有点长,需要一点耐心。 1 、AQS产生背景 通过JCP的JSR166规范,Jdk1.5开始引入了j.u.c包,这个包提供了一系列支
1、shutdown()问:shutdown()有什么功能?答:阻止新来的任务提交,对已经提交了的任务不会产生任何影响。当已经提交的任务执行完后,它会将那些闲置的线程(idleWorks)进行中断,这个过程是异步的。问:如何阻止新来的任务提交?答:通过将线程池的状态改成SHUTDOWN,当再将执行execute提交任务时,如果测试到状态不为RUNNING,则抛出rejectedExecution,
原子性Java 的原子性就和数据库事务的原子性差不多,一个操作中要么全部执行成功或者失败。JMM 只是保证了基本的原子性,但类似于 i++ 之类的操作,看似是原子操作,其实里面涉及到:获取 i 的值。自增。再赋值给 i。这三步操作,所以想要实现 i++ 这样的原子操作就需要用到 synchronized 或者是 lock 进行加锁处理。如果是基础类的自增操作可以使用 AtomicInteger 这