
软件架构
文章平均质量分 87
offbye
西涛,全栈工程师,架构师,Android和HTML5专家。熟悉Java、Android、JavaScript、Python、Swift等技术。目前专注手机端侧人工智能研究,熟悉tensorflow
展开
-
What‘s New in Dubbo3
Dubbo3 相比 2.7 版本进行了全面的升级,以下是新增的一些核心特性全新服务发现模型相比于 2.x 版本中的基于接口粒度的服务发现机制,3.x 引入了全新的基于应用粒度的服务发现机制, 新模型带来两方面的巨大优势:进一步提升了 Dubbo3 在大规模集群实践中的性能与稳定性。新模型可大幅提高系统资源利用率,降低 Dubbo 地址的单机内存消耗(50%),降低注册中心集群的存储与推送压力(90%), Dubbo 可支持集群规模步入百万实例层次。打通与其他异构微服务体系的地址互发现障碍。新模型使得转载 2021-08-08 13:08:06 · 408 阅读 · 0 评论 -
架构蓝图--软件架构 “4+1“ 视图模型
引言我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点。通过仔细地观察这些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图。方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机吗?或仅仅是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物。是否架构只需要单个的架构样式?有时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程、运行效率、开发策略和团队组织等。有时架构并不能解转载 2021-01-19 17:44:36 · 1114 阅读 · 0 评论 -
RESTFUL API 安全设计
0x01 REST API 简介REST的全称是REpresentational State Transfer,表示表述性无状态传输,无需session,所以每次请求都得带上身份认证信息。rest是基于http协议的,也是无状态的。只是一种架构方式,所以它的安全特性都需我们自己实现,没有现成的。建议所有的请求都通过https协议发送。RESTful web services 概念的核心就是“资源”转载 2016-05-04 14:22:03 · 3564 阅读 · 0 评论 -
Python读取iOS安装包IPA中的信息和图片
最近需要对所有的iOS和Android工程通过jenkins持续集成,软件的编译、打包、企业分发版的ipa发布都需要自动化。在做ipa自动化发布时,需要拿到一个app里面相关的信息,比如显示名称、版本号、bundle identifier等等。 然后在Jenkins构建任务中通过增加Python脚本针对每个版本生成IPA,plist和包含itms安装链接的网页。首先需要对iOS ipa包的结构有些原创 2016-05-28 21:23:48 · 6629 阅读 · 1 评论 -
F8App-ReactNative项目源码分析2-服务器端
近期开始研究Facebook f8app项目,目标是理解Facebook官方React Native f8app的整体技术架构,给公司目前几个的React Native项目开发提供官方经验借鉴,并对原生开发和React Native开发进行框架层面的融合。 研究了f8app的项目结构后,发现f8app服务器端的代码比较少,并且弄清楚数据模型和接口协议,对于后面理解客户端的实现有帮助原创 2016-05-18 22:21:40 · 5558 阅读 · 0 评论 -
F8App-ReactNative项目源码分析1-初体验
近期开始研究Facebook f8app项目,目标是理解Facebook官方React Native f8app的整体技术架构,给公司目前几个的React Native项目开发提供官方经验借鉴,并对原生开发和React Native开发进行框架层面的融合。原创 2016-05-18 22:26:47 · 7066 阅读 · 3 评论 -
我在系统设计上犯过的14个错
在上篇《架构师画像》的文章中提到了自己在系统设计上犯过的一些错,觉得还挺有意义的,这篇文章就来回顾下自己近八年来所做的一些系统设计,看看犯的一些比较大的血淋淋的错误(很多都是推倒重来),这八年来主要做了三个基础技术产品,三个横跨三年的大的技术项目(其中有两个还在进行中),发现大的错误基本集中在前面几年,从这个点看起来能比较自豪的说在最近的几年在系统设计的掌控上确实比以前成熟了很多。第1个错在设计服转载 2016-07-14 18:06:44 · 2304 阅读 · 0 评论 -
JWT安全验证常见疑问解答
最近做基于BFF架构的分布式移动端API接口的系统设计。工作过程中发现有些工程师对JWT安全验证的认识存在一些偏差,重复讲解实在太麻烦了,在这里把关于JWT常见的一些疑问统一回答下吧。什么是JWT?JSON Web Token (JWT)是一种基于 token 的认证方案。 JSON Web Tokens are an open, industry standard RFC 7519 metho原创 2016-07-05 12:18:14 · 10775 阅读 · 2 评论 -
HTTP状态码大全
HTTP状态码大全完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b3Iub3JnLw%3D%3D在线查阅。HTTP 1.1的状态码被标记为新特性,因为许多浏览器只支持 HTTP 1.0。你应只把状态码发送给支持 HTTP 1.1的客户端,支持协议版本可以通过转载 2016-08-10 14:48:26 · 844 阅读 · 0 评论 -
Node.js中使用redis数据库的正确姿势
Redis是一个常用的Nosql数据库,一般用来代替Memcached做缓存服务,同时它也支持数据的持久化,有着比较广泛的应用场景。在Java中使用redis我们已经比较熟悉了,那么在node.js和koa.js框架中使用Redis的正确姿势是怎样的呢? Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有原创 2016-09-06 18:06:38 · 17505 阅读 · 0 评论 -
学会“投机取巧”——Redis之父九条忠告,如何成为“一打十”的程序员
坊间流传着“十倍程序员”的传说,所谓“十倍程序员”是指在同样时间内可以做“普通”程序员十倍的工作的程序员,而所谓“普通”是指那些擅长自己的领域,但不具有“十倍程序员”那样特殊魔力的程序员。更准确地说,普通程序员就是指那些具有平均编程效率的专业程序员。在程序员群体中,对于“十倍程序员”的存在持有极度分化的观点:一些人认为这样的人绝不存在,另一些人则认为不仅存在,而且甚至存在“百倍程序员”。如果你认为转载 2017-05-07 21:41:15 · 1421 阅读 · 0 评论 -
The Netflix stack, using Spring Boot - Part 2: Hystrix
Netflix has always been a proud contributor to the open source world. It's fascinating to see how each of their libraries facilitate a lot of tasks and can help create your development in a tremendous转载 2017-07-08 14:47:40 · 1140 阅读 · 0 评论 -
架构师的必备素质和成长途径
2016年11月18-20日SDCC 2016中国软件开发者大会,易宝支付CTO陈斌给我们带来了“架构师的成长之路”的演讲。主要谈及了架构师的必备素质和成长途径及给准架构师的建议。它山之石可以攻玉,尽管每个架构师都有自己的成长路径,但是了解其他架构师的成长之路,对未来想成为架构师的人有一定的借鉴价值。首先以我自己的成长过程为例,描述一下我的架构师之路。图1 我的架构师之路1989年研究生毕业后进入转载 2017-07-31 22:53:12 · 1262 阅读 · 0 评论 -
关于 Token,你应该知道的十件事
原文是一篇很好的讲述 Token 在 Web 应用中使用的文章,而这是我和 Special 合作翻译的译文。1. Token 应该被保存起来(放到 local / session stograge 或者 cookies)在单页应用程序中,有些用户刷新浏览器后会带来一些跟 token 相关的问题。而解决方法很简单:你应该把 token 保存到起来:放到 session storage, local转载 2016-05-04 14:16:21 · 3749 阅读 · 0 评论 -
程序员的成长和代码行数的关系
我的朋友Clift Norris发现了一个基本常数,我称之为Norris常数,一个未经培训的程序员在他或她遇到瓶颈之前能写出的平均代码量。Clift估计这个值是1500行。超过这个数以后,代码会变得如此混乱,以至于本人都无法轻而易举的进行调试和修改。作为一名技术领导我明白我主要的贡献是对那些同事觉得非常重要但不能证明其合理的需求说“不”。但真正的诀窍是知道什么需求增加了线性的复杂度(只和自身相关)和指数级复杂度(和别的需求有关联)。两者都因该去避免,但后者需要更令人信服的理由。转载 2016-05-04 12:39:03 · 1644 阅读 · 1 评论 -
HTTP 2.0的那些事
在我们所处的互联网世界中,HTTP协议算得上是使用最广泛的网络协议。最近http2.0的诞生使得它再次互联网技术圈关注的焦点。任何事物的消退和新生都有其背后推动的力量。对于HTTP来说,这力量复杂来说是各种技术细节的演进,简单来说是用户体验和感知的进化。用户总是希望网络上的信息能尽可能快的抵达眼球,越快越好,正是这种对“快”对追逐催生了今天的http2.0。1. HTTP2.0的前世http2.0转载 2016-02-03 09:53:16 · 1086 阅读 · 0 评论 -
Hybrid App开发git多分支代码版本管理实践
项目使用HTML5开发HybridApp, 代码管理使用git,如何针对HybridApp的跨平台的特点进行版本管理呢,web部分ios和Android基本相同,但各自有些特别的修改适配,使用2个git目录管理代码显然是愚蠢的,会增加很多不必要的代码合并工作,我们可以利用git的分支方便的管理代码。 我们的实践是master分支管理ios代码,因为先开发的ios版本,后面使用新的android分支管理Android的代码,platform/android 和platform/ios由各自的分支管理原创 2014-05-30 11:01:36 · 4871 阅读 · 0 评论 -
gulp自动化任务脚本在HybridApp开发中的使用
目前做前端开发的同学可能都熟悉grunt,fis之类的自动化构建工具,其实在HybridApp开发中我们也可以使用这些工具来简化我们的工作,gulp就是一个比grunt,fis都先进的构建工具,用好gulp可以简化我们的工作流程,提升产品质量。本文会详细的说明我们移动App项目gulp的使用经验,部分关于gulp的介绍来自国外网站。 gulp是 Fractal公司发布的一个新的基于nodejs的构建系统,目标是取代Grunt,成为最流行的JavaScript任务运行器。目前ionic框架默认原创 2014-06-20 12:36:55 · 3148 阅读 · 0 评论 -
软件架构设计-五视图方法论
1)物理架构 物理架构的目的是确定物理节点和物理节点的拓扑结构;其中物理节点包括服务器、PC机、专用机、软件安装部署烧写以及系统软件的选型;拓扑结构明确物理节点的关系。2)运行架构 运行架构的目的是确定控制流和控制流的组织;其中控制流包括进程、线程、服务程序;控制流组织包括系统的启动与停机、控制流通讯、同步与加锁。3)开发架构 开发架构的目的是确定程序转载 2014-07-14 16:45:46 · 4721 阅读 · 1 评论 -
HTTPS的七个误解(译文)
作者: 阮一峰开发网页的时候,往往需要观察HTTP通信。我使用的工具主要有两个,在Firefox中是Firebug,在IE中是Fiddler。但是,一直听别人说,付费软件HttpWatch是这方面最好的工具。前几天,HttpWatch的官方网志刊登了一篇好文章,澄清了一些HTTPS协议容易产生误解的地方。学习之后,我增长了不少网页加密通信的知识。我觉转载 2014-08-14 10:32:39 · 1227 阅读 · 1 评论 -
软件架构师应该知道的 97 件事笔记
1.客户需求重于个人简历不要为了学习新的知识或丰富自己的简历而选择新技术解决问题,要尽量选择切合实际的技术解决客户的难题。脚踏实地的为客户着想,选择正确的方案可以降低项目的压力,团队工作起来更开心,客户也会更满意,从而你也会有更充裕的时间学习新的知识。2.简化根本复杂性,消除偶发复杂性根本复杂性是问题本身就很复杂,所以它是无法避免的。偶发复杂性是在解决根本复杂性的过程中衍生的,转载 2014-11-19 11:17:44 · 2530 阅读 · 0 评论 -
Git的最佳实践git-flow
最近接触了了git flow,看了《a-successful-git-branching-model》及《why-arent-you-using-git-flow》,才真正了解到,这真算得上是使用Git的最佳实践啊。这是一篇译文(原文在此),当时我从这篇文章开始初识git-flow,经过一段时间的实践后,觉得git-flow非常棒,我决定在团队里面推行,我需要写一篇使用的教程,重新读这转载 2014-12-18 15:24:19 · 2075 阅读 · 0 评论 -
HTML5移动应用开发为什么需要引入前端工程化
使用HTML5和Javascript开发的移动应用,和典型的现代Web前端项目一样,有着大量的Javascript,HTML和CSS代码,因此前端工程化在HTML5移动应用开发中同样有着重要意义,可以避免大量重复性的工作,提供效率和质量,优化产品的性能。 目前前端工程化比较通用的框架主要有国外的grunt,gulp,百度的F.I.S等,这些框架基本上都是基于Node.原创 2015-05-11 21:51:22 · 2436 阅读 · 0 评论 -
基于Spring Boot,Security和JWB的REST接口的无状态认证
Stateless Spring Security Part 2: Stateless AuthenticationPosted on October 6, 2014 by Robbert van WaverenThis second part of the Stateless Spring Security series is about exploring me转载 2015-08-11 13:08:19 · 6550 阅读 · 0 评论 -
NodeJs使用json web token验证REST服务
做了这么长时间的web开发,从JAVA EE中的jsf,spring,hibernate框架,到spring web MVC,到用php框架thinkPHP,到现在的nodejs,我自己的看法是越来越喜欢干净整洁的web层,之前用jsf开发做view层的时候,用的primefaces做的界面显示,虽然primefaces的确提供了很大的便利,可以让开发人员专注于业务逻辑开发,这样其实就省去了前端开转载 2015-08-13 19:39:04 · 15145 阅读 · 0 评论 -
JSON Web Token (JWT) 简介
JSON Web Token (JWT) 是一种基于 token 的认证方案。JSON Web Token 的结构一个 JWT token 看起来是这样的:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEzODY4OTkxMzEsImlzcyI6ImppcmE6MTU0ODk1OTUiLCJxc2giOiI4MDYzZmY0Y转载 2015-08-13 19:41:00 · 7444 阅读 · 2 评论 -
Android微信智能心跳方案
https://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207243549&idx=1&sn=4ebe4beb8123f1b5ab58810ac8bc5994前言:在13年11月中旬时,因为基础组件组人手紧张,Leo安排我和春哥去广州轮岗支援。刚到广州的时候,Ray让我和春哥对Line和WhatsApp的心跳机制进行分析。我和春哥抓包测试了差不多转载 2015-09-02 14:28:38 · 2396 阅读 · 1 评论 -
微信公众平台接入经验分享,纯干货
这篇文章是千米移动团队半年多时间使用微信平台开发多租户微店系统相关经验的分享与记录,涉及微信JSSDK,消息推送,微店支付等方面,微信开发的坑实在太多了,早期的时候官方文档也有不少问题。 文章后面还会持续更新修正。 希望对想了解使用微信平台的小伙伴们有些帮助,能够少走些弯路,少踩些坑。为何要关注微信巨大流量入口相对于App,用户使用成本低微信公众号服务号与订阅号的区别服务号:服务号主要面向企业,为原创 2015-09-30 11:00:20 · 5709 阅读 · 2 评论 -
进程间的通信方式汇总
最近在设计一个多进程的系统,主进程和子进程的通讯和调用方式是其中的一个关键问题,程序需要考虑跨平台和跨语言,后台守护进程和UI界面,子进程管理等,对可靠性要求高,还是很复杂的。今天掰一掰进程间通信的问题原创 2014-07-15 19:17:50 · 1744 阅读 · 0 评论