杏仁技术站

其他

Java 类型系统从入门到放弃

对程序员来说,编译器(的类型检查器)是一种财富,是你的武器,我们应该掌握语言的类型系统,并且让它更好的为我们服务,保证程序的安全性(正确性),在编译阶段就将犯错的可能性扼杀掉(即:将
2019年3月13日
其他

零基础玩转 Serverless

注册AWS除了邮箱、地址、手机号(用于接受语音验证码)等基本信息之外,还需要绑定一张信用卡(银联、MasterCard、VISA),绑卡过程中会发生一笔1美元的信用卡预授权扣费。
2018年12月11日
其他

三大报表:财务界的通用语言

而现金流量表则不同,它是基于收付实现制的,也就是说,它是以真的有钱进账,或钱款汇出的时间点进行统计的。在这个视角下,它会将经营、投资、融资三者按实际进入与流出的现金流进行调整,像之前提到的
2018年11月29日
其他

基于 Apollo 的 配置中心 Matrix 2.0 实践总结

打包与配置注入耦合,意味着打包与环境耦合,一个环境对应一个包(镜像),这其实违背了容器的"一份镜像到处运行"的理念,即:镜像与环境无关,应用需要什么环境的配置,在启动阶段确定(注入)就可以了。
2018年11月14日
其他

ZooKeeper 分布式锁实践(下篇)读写锁

的能力远不止于此,就像前面提到的它能够十分轻松地实现诸如:数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁、分布式队列这些小菜,不得不佩服
2018年11月7日
其他

ZooKeeper 分布式锁实践(上篇)排它锁

我们是企鹅杏仁的信息科技团队,我们用技术改变世界。在这里,我们会分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎大家一起来交流。
2018年11月6日
其他

浅析 InnoDB 存储引擎的工作流程

分配的内存池比较大,这时候可能你的脏页数据会很难达到最大脏页比,这时候你的数据基本上都在缓冲池中,可能需要很长一段时间才会到数据库磁盘文件中,也就是脏页的刷新速度会很低(MySQL
2018年10月31日
其他

使用 RabbitMQ 实现 RPC

pendingReply);PendingReply中有一个BlockingQueue存放响应信息,在发送完请求信息后调用BlockingQueue的pull方法并设置超时时间来获取响应:
2018年10月25日
其他

原来你是这样的 Stream —— 浅析 Java Stream 实现原理

就像小作坊发展到一定程度要变成大工厂才能满足市场需求一样。大工厂和小作坊除了规模变大、工人不多之外,最大的区别就是多了流水线。流水线可以将工人们更高效的组织起来,使得生产力有质的飞跃。
2018年10月18日
其他

分布式锁实践之一:基于 Redis 的实现

解锁成功更进一步这个分布式锁的实现,有一个比较明显的缺陷,就是等待锁的进程无法实时的知道锁状态的变化,从而及时的做出响应。我们不妨思考一下,通过什么方式可以实时、高效的获得锁的状态?
2018年9月27日
其他

介绍一个 MySQL 自动化运维利器 - Inception

/*--user=zhufeng;--password=xxxxxxxxxxx;--host=xxxxxxxxxx; --enable-check;--port=3456;*/
2018年9月19日
其他

小程序中 Redux 的使用

http://www.ruanyifeng.com/blog/2016/09/redux_tutorial_part_one_basic_usages.html
2018年9月12日
其他

小型大写字母的用武之处

Mancha」意为「来自曼查的骑士吉诃德大人」,在后文中仅用「Qᴜɪxᴏᴛᴇ」来代指。而对于像中文这样,将姓氏排在名前面的顺序,有时也会使用小型大写字母,来特意标注出哪部分是姓氏,如「Mᴀᴏ
2018年8月28日
其他

React Native 项目整合 CodePush 完全指南

react-native-code-push@5.1.4工程配置(Android)如果工程创建的时候比较早,可能是使用命令create-react-native-app来创建的,则需要在根目录执行:
2018年8月22日
其他

震惊!JavaScript 竟然可以类型推断!

我们是企鹅杏仁的信息科技团队,我们用技术改变世界。在这里,我们会分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎大家一起来交流。
2018年8月15日
其他

如何进行系统分析与设计

具体到系统的用户,还需要细分到角色,即使有些角色实际可能是同一个人。比如对于门诊,可能有护士、顾问或系统管理员等等,可以进行不同的操作。需求范围简单话用一个列表即可,复杂的系统可以考虑使用用例图。
2018年8月1日
其他

ConcurrentHashMap 的 size 方法原理分析

我们是企鹅杏仁的信息科技团队,我们用技术改变世界。在这里,我们会分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎大家一起来交流。
2018年7月24日
其他

从 ThreadLocal 的实现看散列算法

我们是企鹅杏仁的信息科技团队,我们用技术改变世界。在这里,我们会分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎大家一起来交流。
2018年7月19日
其他

理清 Promise 的状态及使用

我们是企鹅杏仁的信息科技团队,我们用技术改变世界。在这里,我们会分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎大家一起来交流。
2018年7月12日
其他

逻辑思维:理清思路,表达自己的技巧

此外,在理由的陈述中还需注意理由与结论的关联。因为理由是结论的支撑,理由推导得到结论的逻辑被听众理解是你的结论被理解的重要前提。下面介绍两种主要的理由推导结论的逻辑:
2018年7月4日
其他

Actor 模型及 Akka 简介

我们是企鹅杏仁的信息科技团队,我们用技术改变世界。在这里,我们会分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎大家一起来交流。
2018年6月27日
其他

中文房间之争-浅论到底什么是智能

质问:如果我们用非生物的方式,模拟出了一个和大脑神经元一模一样工作的装置,它拥有智能吗?想像一下西部世界中接待员脑中的白色装置,就可以认为是这个,显然西部世界里的机器人,比上面硅谷中的那个
2018年6月20日
其他

从零搭建一个基于Istio的服务网格

安装完kubectl,接下来就是在本地搭建Kubernetes集群,Minikube是最简单的一种搭建方式,它通过VM模拟了一个单节点的Kubernetes集群。官方文档给出了Mac下的安装命令。
2018年6月13日
其他

容器管理利器:Web Terminal 简介

总结上述仅仅是描述了一个最基本的实现,完全是为了抛砖引玉,后续可以通过在中间层添加一些扩展,比如,用户权限的分配,与自己环境中的容器编排引擎集成等,最终作为
2018年6月7日
其他

单元测试——工程师 Style 的测试方法

年前后,大部分互联网公司的系统部署还是通过手工的方式进行的,往往要在半夜上线系统。但是之后持续集成、持续交付的理念不断推广,部署过程越来越灵活、顺畅。而单元测试则是持续集成和持续交付里重要的一环。
2018年5月29日
其他

理解 RabbitMQ Exchange

协议中的核心思想就是生产者和消费者的解耦,生产者从不直接将消息发送给队列。生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机。先由
2018年5月22日
其他

iOS 下的图片处理与性能优化

在一些场景中,我们需要手动去判断图片数据的格式,以进行不同的处理。一般来说,只要拿到原始的二进制数据,根据不同压缩格式的编码特征,就可以进行简单的分类了。以下是一些图片框架的常用实现,可以复制使用:
2018年5月15日
其他

不懂产品的研发,不是好 CTO

同样的道理,产品经理不能仗着自己懂一点技术,就对研发同学指手画脚。懂技术是为了排除需求中的隐患,更好的和研发沟通,提升工作效率。了解一些基础技术架构即可,不要沉迷于技术实现,否则,就是本末倒置。
2018年5月8日
其他

技术选型的艺术

技术选型对于广大程序员,特别是互联网公司的技术负责人或者架构师来说,一定不陌生。小到日常开发中的一个工具库的选择,大到整个系统语言、架构层面的选择,都是技术选型的范围。今天我们就简单聊聊技术选型。
2018年5月2日
其他

服务网格:微服务进入2.0时代

多语言支持不足:对于稍具规模的团队,尤其在高速成长的互联网创业公司,多语言的技术栈是常态,跨语言的服务调用也是常态,但目前开源社区上并没有一套统一的、跨语言的微服务技术栈。
2018年4月27日
其他

Apache Common Pool2 对象池应用浅析

我们是杏仁医生的技术团队,我们用技术改变世界。在这里,我们会分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎大家一起来交流。
2018年4月19日
其他

函数扩展

于是我就想用一个简单的方式来解决这个问题。一个简单粗暴的解决方案就是导出时对字符串进行处理,将一些特殊字符替换掉,或者前后用"包起来。但是这样的话,需要所有下载
2018年4月11日
其他

Linux 的 IO 通信 以及 Reactor 线程模型浅析

我们是杏仁医生的技术团队,我们用技术改变世界。在这里,我们会分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎大家一起来交流。
2018年3月28日
其他

浅谈 BI 与数据分析的可视化

某家中药销售公司,当前与五家合作方合作。运营人员经常会有需要分析:不同厂家的销售排名、不同剂型的销售排名,不同厂家下的剂型销售排名等。这里我们通过维度下钻、上卷与切换,使之在一个图表中实现。
2018年3月21日
其他

iOS 照片涂鸦功能的实现

}性能问题?上面的代码,虽然实现了需求,但是从代码里也能看到,不断的进行数组操作、调用drawRect,连撤销操作都不是移除最后一条路径而是先清空页面绘制将余下的路径重新绘制。看到这里,就算对
2018年3月15日
其他

捋一捋 App 性能测试中的几个重要概念

我们是杏仁医生的技术团队,我们用技术改变世界。在这里,我们会分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎大家一起来交流。
2018年3月6日
其他

所谓 Serverless,你理解对了吗?

中的函数)。如同一个单体应用可以按业务模块拆分成多个微服务,一个微服务也可以按使用场景拆分成多个函数。比如一个广告微服务,至少可以拆分出实时竞价、展示计数、报表查询等多个函数。也就是说,FaaS
2018年2月28日
其他

JVM 揭秘:一个 class 文件的前世今生

的常量池。常量池的头两个字节表明了常量池中常量项的个数,因为只有两个字节所以常量项是有数量限制的。具体多少个可以自行计算。常量项个数后面紧跟的就是各个常量项了。每个常量项都有一个
2018年1月24日
其他

Android 图片编辑的原理与实现——涂鸦与马赛克

那么为什么会有这两个问题呢?因为图片编辑从一开始的设计思路几乎是紧贴微信的,背景图层是可以随时缩放移动的(和其他图片编辑有些区别,很多是不可以在编辑时缩放移动的),因此绘制计算难度大增。
2018年1月17日
其他

微服务环境下的集成测试探索(二)—— 契约式测试

SpringBootTest.WebEnvironment.NONE)@AutoConfigureStubRunner(repositoryRoot="http://",
2018年1月10日
其他

微服务环境下的集成测试探索(一) —— 服务 Stub & Mock

现在微服务很流行,企业架构微服务化的确能解决不少问题,但是在微服务环境下,服务之间的依赖以及由此造成的开发、测试和集成的问题,一直都是微服务最大的痛点。
2018年1月9日
其他

Objective-C 里的语法糖

之所以叫「语法」糖,不只是因为加糖后的代码功能与加糖前保持一致,更重要的是糖在不改变其所在位置的语法结构的前提下,实现了运行时等价。可以简单理解为,加糖后的代码编译后跟加糖前一摸一样。
2018年1月3日
其他

Facebook、Google、Amazon 是如何高效开会的

然而,许多人却会对会议有抵触情绪。冗长的节奏,即兴的跑题,敌对的氛围,模糊的结论……这些都让会议要不然变得漫长而无效,要不然变得沉闷而无趣。那么,如果才能开一场高效的会议呢?一起来看看科技巨头,如
2017年12月27日
其他

谈谈到底什么是抽象,以及软件设计的抽象原则

单一职责是指一个模块应该只做一件事,并把这件事做好。其实对照应抽象的定义,可以发现这个原则本身就是抽象的核心体现。如果一个类包含了很多方法,或者一个方法特别长,就要引起我们的特别注意了。例如下面这个
2017年12月19日
其他

后端系统的缓存使用浅谈

在系统中,有些数据量不大、不常变化,但是访问十分频繁,例如省、市、区数据。针对这种场景,可以将数据加载到应用的内存中,以提升系统的访问效率,减少无谓的数据库和网路的访问。
2017年12月14日
其他

从 React 到 Preact 迁移指南

我们是杏仁医生的技术团队,我们用技术改变世界。在这里,我们会分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎大家一起来交流。
2017年12月12日
其他

如何成为一名数据分析师:数据的初步认知

众数真正的价值,不在于数值型数据中的使用而在于用在类别型的数据中。在数值型数字中,可能因为数字精度太细,导致数字出现次数都很少,几乎没有众数;而类别型数据中,众数有时会比较具有代表性。比如:系统每
2017年12月7日
其他

复杂业务状态的处理:从状态模式到 FSM

我们平常在开发业务模块时,经常会遇到比较复杂的状态转换。比如说用户可能有新注册、实名认证中、已实名认证、禁用等状态,支付可能有等待支付、支付中、已支付等状态。OA
2017年12月5日
其他

聊聊移动端跨平台数据库 Realm

一般来说要写全递归升级的所有版本分支,做好每个版本的清理工作,以免发生意外(比如版本2比版本1删除了字段A,版本3又添加回来,用户如果直接从版本1升级到版本3,则会有脏数据)。
2017年11月28日
其他

苹果在医疗健康领域的三个 Kit

面向的对象是开发者,它们的存在,大大降低了开发者的门槛。现在,医院里的医生、大学里的医学教授、国际医学中心的科研小组,拥有丰富的临床知识和经验却不一定会编程的他们,现在也有可能做出一个自己的
2017年11月21日