自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 收藏
  • 关注

转载 【Java 教程】一文带你全方位弄懂 Java8 流式操作!

什么是流式操作Java 8 API 添加了一个新的抽象称为流 Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API 可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate ope

2020-05-30 15:55:27 465

转载 你能讲讲 JVM 运行时内存空间吗

JVM内存空间JVM 规范在程序运行期间定义了不同的数据区域,有一些区域跟随 JVM 的创建销毁,而有些区域则是线程独有的,线程独有的区域会跟随线程的创建与销毁。在不同版本和不同厂商的 JVM 版本中都会有较大差异,本文基于 JDK8 HotSpot 虚拟机进行的总结。JVM 规范内的运行时数据区域程序计数器(The pc Register)JVM 支持多线程,每个线程都有自己的程序计数器。当线程执行中的时候,程序计数器会包含线程的执行点(前提是方法不是 native 方法)。虚拟机栈(Java

2020-05-30 15:32:03 239

转载 请站在 JVM 角度谈谈 Java 的锁?

并发是从 JDK 5 升级到 JDK 6 后一项重要的改进项,HotSpot 虚拟机开发团队在这个版本上花费了大量的资源去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁膨胀(Lock Coarsening)、轻量级锁(Lightweight Locking)、偏向锁(Biased Locking)等,这些技术都是为了在线程之间更高效地共享数据及解决竞争问题,从而提高程序的执行效率。存在的问题对于最开始(JDK1.5 之前),Java

2020-05-30 15:29:51 161

转载 问懵逼:直接IO、缓存IO、阻塞与同步?

Linux 基础知识回顾用户空间和内核空间现在操作系统都采用虚拟寻址,处理器先产生一个虚拟地址,通过地址翻译成物理地址(内存的地址),再通过总线的传递,最后处理器拿到某个物理地址返回的字节。对 32 位操作系统而言,它的寻址空间(虚拟存储空间)为 4G(2 的 32 次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用

2020-05-30 15:24:48 389

转载 问懵逼:说谁你对BIO、NIO、AIO的理解?

同步阻塞 I/O(BIO)同步阻塞 I/O,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制来改善。BIO 方式适用于连接数目比较小且固定的架构,这种方式对服务端资源要求比较高,并发局限于应用中,在 jdk1.4 以前是唯一的 io 选择,但程序直观简单易理解。BIO 图解:伪异步模型 IO也被成为 M:N 客户服务模型。即通过线程池模型的形式用 M 个线程来服务 N 个客户端的连接;其中

2020-05-30 15:22:43 266

转载 【后端教程】Java异常处理中对于finally的一些思考

一、前言因为这次面试有问到一些同学finally的问题,发现自己这块好像有点记不太清楚了,有的点可能还给人家说错了,一度弄得场面有些尴尬。所以说这篇文章深入研究一下finally的执行情况和返回值的情况。二、finally一定会执行吗?先给答案:肯定不是。我们可以看两种情况:1.在执行try块之前直接return,我们发现finally块是不会执行的public class TryCatchTest { private static int total() { int i = 11;

2020-05-30 15:16:03 134

转载 Java 私藏避坑绝技之奇数性、浮点数

奇数性看下面代码时候是否能判断参数 i 是奇数?1public static boolean isOdd(int i){ 2 return i % 2 == 1; 3}答案是:No!看似正确的判断奇数,但是如果 i 是负数,那么它返回值都是 false 造成这种现象的是 => 从思想上固化,认为奇数只在正数范围,故判断负数将报错,在 C++ 中也是,负数取余还是负。在 Java 中取余操作定义产生的后果都满足下面的恒等式:1//int数值a, 与非零int数值b 都满足下面的等式:2

2020-05-30 14:50:38 145

转载 【后端教程】利用 Arthas 精准定位 Java 应用 CPU 负载过高问题

作者:张云翔团队:安全技术最近我们线上有个应用服务器有点上头,CPU总能跑到99%,我寻思着它流量也不大啊,为啥能把自己整这么累?于是我登上这台服务器,看看它到底在干啥!以前碰到类似问题,可能会考虑使用top -Hp 加 jstack命令去排查,虽然能大致定位到问题范围,但有效信息还是太少了,多数时候还是要靠猜。今天向大家推荐一款更高效更精准的工具:Arthas!Arthas 是Alibaba开源的Java诊断工具,能够帮助我们快速定位线上问题。基本的安装使用可以参考官方文档:https://al

2020-05-29 16:17:11 251

转载 前端性能优化:当页面渲染遇上边缘计算

背景对于 web 页面来说,首跳场景(例如 SEO、付费引流)的性能普遍比二跳场景下要差。原因有多种,主要是首跳用户在连接复用,和本地资源缓存利用方面,有很大的劣势。首跳场景下,很多在端上的优化手段(预加载,预执行,预渲染等)无法实施。在客户端缓存能力无法利用的情况下,利用 cdn 距离用户近的特性,可以结合缓存做一些性能优化。思路思路 1:SSR为了性能优化考虑,我们一般都会通过服务端渲染(SSR) ,将首屏动态内容直接服务端输出。 这种方式的优点是一次 html 返回即可包含页面主体内容,不需

2020-05-29 15:29:15 231

转载 前端工程化下一站: IDE

随着前端开发的发展更迭,前端日常开发工作变得愈发复杂愈发深入,同时前端工程中从项目初始化、编译、构建到发布、运维也变得细化而成熟。日常前端工作的每个环节都涌现出丰富的工具、服务和解决方案来解决工程效率的问题。那么,前端工程化的下一阶段的突破口是什么,我们期望通过 IDE 的方式和视角来找寻答案。行业分析行业趋势其实 IDE 本身不是一个新兴的概念,在维基百科上能找到第一款的 IDE 是来自 55 年前为 BASIC 语言提供研发能力的一款软件工具(https://en.wikipedia.org/wi

2020-05-29 15:01:55 282

转载 KAITIAN IDE 是如何构建扩展能力极强的插件体系的?

VS Code 自 2015 年推出以来,由于其优越的性能表现和简洁的 UI 设计,迅速得到了开发者的青睐,特别是人数众多的前端开发者。究其原因,是因为 VS Code 优秀的插件架构,通过多进程的模型隔离了插件运行环境,插件进程无法影响主进程的运行效率,这也使得 VS Code 有良好的稳定性表现。今年下半年,有幸参与了开天 IDE 共建项目组, 打造阿里生态体系内的公共 IDE 底层。插件生态是其中最为重要的一环,能够无缝继承 VS Code 的插件生态对开天 IDE 来说非常重要的一部分。本文简要阐

2020-05-29 14:59:53 612 1

转载 为未来研发模式而生,KAITIAN IDE 在业务中的探索

在 19 年 5 月,由跨阿里巴巴经济体的 3 个前端团队组织在一起,经过一年的努力,产出了 IDE 的底层实现- KAITIAN 框架。与此同时,借助 KAITIAN 底层能力,体系内、外的研发场景也陆陆续续建设起来。在 IDE 框架完成了一些业务实践之后,我们对 KAITIAN 带来的研发场景下的业务价值以及发展的方向也有了更多的思考。冰山一角在经济体体系内,许多研发体系、平台借助 KAITIAN 底层,通过 KAITIAN 插件等方式将零散的研发模式进行了统一,将原有研发工作中的研发态与部署态、本

2020-05-29 14:53:30 365

转载 【后端教程】FEOP 接口描述

全称 Five-Elements-Operations 五元操作,由这五种基本操作可组合成用户的所有操作。submitTransactions(ops: IOperation[])UI 界面上用户的每一个操作,都会由逻辑层对本地的 Store 进行改变,并相应地生成一组 ops (IOperation[])。这一组 ops 发送到服务端,服务端则也会按照 ops 表示的意义来对数据库做相应地操作。IOperation 结构如下:interface IOperation { cmd: string

2020-05-28 19:26:18 649

转载 什么是纯函数,它是函数式编程的基础

纯函数是所有函数式编程语言中使用的概念,这是一个非常重要的概念,因为它是函数式编程的基础,它允许你创建简单和复杂的组合模式。纯函数背后的数学术语我就不说了,我直接说说说它们是什么以及它们的样子。你可以确定满足以下条件的函数是纯函数:它应始终返回相同的值。不管调用该函数多少次,无论今天、明天还是将来某个时候调用它。自包含(不使用全局变量)。它不应修改程序的状态或引起副作用(修改全局变量)。第一个条件:应始终返回相同的值以以下功能为例Math.cos(0) // 1无论今天,明天还是.

2020-05-28 17:18:58 176

转载 CSS中的间距,前端开发中各种设置间距的优点缺点及实例

来源:https://ishadeed.com/如果两个或多个元素很接近,那么用户就会认为它们以某种方式属于彼此。当对多个设计元素进行分组时,用户可以根据它们之间的空间大小来决定它们之间的关系。没有间距,用户将很难浏览页面并知道哪些内容相关而哪些内容无关。在本文中,我将介绍有关CSS中的间距,实现此间距的不同方法以及何时使用 padding 或 margin 所需的所有知识。相关文章:Web中的图像技术总结与实践,这篇文章总结了Web中的各种图片的使用技术、优点缺点和实践。目录间距类型.

2020-05-28 16:51:56 672

转载 温故知新 | Vue.js进阶必会,编写你的第一个Vue.js插件

创建自己的插件似乎是一项高级技术,但实际上比你想象的要简单得多。本文目录1.如何设置插件2.向插件添加功能2.1构建你的第一个插件2.2安装插件2.让它真正有用2.1声明全局属性2.2定义实例属性2.3建立全局过滤器2.4添加自定义指令2.5合并选项对象2.6我们最终的插件获取完整项目代码代码让我们开始吧!1.如何设置插件从广义上讲,我们的插件只是一个公开 install 方法的Javascript模块。该方法有两个参数

2020-05-28 16:34:42 151

转载 你不知道的CSS国际化

来源:https://www.chenhuijing.com作者:Chen Hui Jing我遇到过一些人,他们根本不认为CSS与国际化有关,但如果你仔细想想,国际化不仅仅是把你网站上的内容翻译成多种语言,然后就收工了。该内容的呈现方式有各种细微的差别,这些细微的差别会影响到母语人士使用您的网站的体验。对于国际化,没有统一的规范定义,但是W3C提供以下指导:国际化是指在设计和开发产品、应用或文档时,为不同文化、地区或语言的目标受众提供方便的本地化服务。这涉及的内容很多,从Unicode和字符.

2020-05-28 16:27:00 128

转载 HTML页面生成器:使用JavaScript和Node创建CLI

在第 42 期的文章:从零开始使用JavaScript制作自己的命令行(CLI工具) 中我们介绍如何从零开始制作CLI,算是一个入门前传,知道了怎么制作CLI后今天更进一步。在这篇文章中,我们将构建一个简单的CLI,允许用户生成HTML页面。我们首先要生成一个标准的空白页面,然后让用户输入参数,比如文件名和标题,先通过选项,然后通过提示问题让用户输入参数。创建 Hello World CLI创建用于编写CLI的文件夹。我将其命名为 html-generator-cli。打开一个终端,然后在此文件夹中运

2020-05-28 16:06:31 147

转载 5G与Wi-Fi6空口技术对比

*本文转载自公众号软硬结合部近半年来,5G网络的消息层出不穷,5G商用牌照正式发放,三大运营商表示要在今年年底前至少覆盖40个城市。在人们对5G展示最大热情的时候,Wi-Fi6也悄然出世。本文首先简要回顾Wi-Fi和蜂窝网络的发展,然后简要介绍了他们的技术特点,最后从技术的角度比较Wi-Fi6和5G,剖析其应用场景。一、两种无线通信1.1 Wi-Fi与蜂窝网络的发展长期以来,Wi-Fi和蜂窝网络就像移动设备上的两大高手,彼此势均力敌:一个主室内,一个主室外。多年来Wi-Fi以其流量便宜的特点,一直是蜂

2020-05-25 16:55:25 1386

转载 一图理解终端、会话、 进程组、进程关系

药不能停,直接进入正题,本文3分钟读完。文中涉及到的缩写如下:PID: 进程(process) IDPPID:父进程(parent process) IDPGID:进程组(process group) IDSID:会话(session )ID文中a.out对应的代码如下:a.out代码main(){ fork(); while(1);}实验方法:开一个terminal,运行三个a.out,得到3个进程组,6个a.out进程:关系图如下:

2020-05-25 16:13:09 268

转载 图文 | 任何人都能看懂的 Kubernetes 教程!

作者:刘志超来源:https://urlify.cn/yqEZ7f容器在我们尝试了解 Kubernetes 之前,让我们花一点时间来澄清容器是什么,以及它们为什么如此受欢迎。毕竟,在不知道容器是什么的情况下谈论容器编排器(Kubernetes)是没有意义的!容器“容器”是一个用来存放你放入的所有物品的容器。像应用程序代码,依赖库以及它的依赖关系一直到内核。这里的关键概念是隔离。将所有内容与其余内容隔离开,以便你更好地控制它们。容器提供三种隔离类型:工作区隔离(流程,网络)资源隔离(CP

2020-05-25 16:07:34 218

转载 NFV和SDN之间到底有什么关系?

NFV、SDN是近年来信息通信行业兴起的热门技术,拥有极高的人气。尤其是5G时代到来后,两者的出现频率更是激增。随着对这两个概念的深入了解,很多读者向我提出了这样的疑问——NFV和SDN好像根本没有什么关系啊,为什么两者经常会一起以“NFV/SDN”的名义出现?它们真的有联系吗?是什么样的联系呢?今天,小枣君就和大家聊聊这个话题。首先,我们先简单回顾一下,NFV和SDN到底是什么。**什么是NFV **NFV,全称是 Network Function Virtualization,网络功能虚

2020-05-25 16:03:55 585

转载 HTTPS 的 7 次握手以及 9 倍时延

HTTP 协议(Hypertext Transfer Protocol)已经成为互联网上最常用的应用层协议,然而其本身只是用于传输超文本的网络协议,不会提供任何安全上的保证,使用明文在互联网上传输数据包使得窃听和中间人攻击成为可能,通过 HTTP 传输密码其实与在互联网上裸奔也差不多。https-banner图 1 - HTTPS 协议网景(Netscape)在 1994 年设计了 HTTPS 协议,使用安全套接字层(Secure Sockets Layer,SSL)保证数据传输的安全[^1],随着

2020-05-25 15:55:39 241

转载 千万千万不要运行的 Linux 命令

文中列出的命令绝对不可以运行,即使你觉得很好奇也不行,除非你是在虚拟机上运行(出现问题你可以还原),因为它们会实实在在的破坏你的系统。所以不在root等高级管理权限下执行命令是很好的习惯。早晚有一天,Linux 系统会像 Windows 那样流行,用的人越来越多,包括对计算机不是很了解的人,本文的目的就是告诉大家:在Linux给你最大程度自由度的同时,也使得破坏系统变得更加容易,如果你不了解某些命令的意义,下载执行包含恶意命令的脚本,或者被骗运行某些命令,很容易让你哭都来不及。这并不是说明 Linux

2020-05-25 15:53:48 87

转载 可能是目前最全的讲 ICMP 的文章了

对于 ICMP 协议,你想知道的,可能包括以下几点:ICMP 是啥为啥需要 ICMPICMP 有哪些报文类型ICMP 报文格式长啥样有哪些命令用了 ICMPICMP 有哪些内核参数ICMP 的问题带着这些问题,下面我们就来一一解答。01 ICMP 是啥ICMP,全称是 Internet Control Message Protocol,即互联网控制报文协议,所谓控制,就是通过下发指令来感知和控制网络环境,所以它一定是配合一个无法感知网络环境的协议来工作的,

2020-05-25 15:49:33 546 1

转载 万字长文:新生代的开源监控系统 Prometheus 的问题和思考

监控系统的历史悠久,是一个很成熟的方向,而 Prometheus 作为新生代的开源监控系统,慢慢成为了云原生体系的事实标准,也证明了其设计很受欢迎。本文主要分享在 Prometheus 实践中遇到的一些问题和思考。几点原则监控是基础设施,目的是为了解决问题,不要只朝着大而全去做,尤其是不必要的指标采集,浪费人力和存储资源(To B商业产品例外)。需要处理的告警才发出来,发出来的告警必须得到处理。简单的架构就是最好的架构,业务系统都挂了,监控也不能挂。Google Sre 里面也说避免使用

2020-05-24 17:28:47 545

转载 K8S 中 scheduler 组件的选主逻辑

概述在 k8s 中,kube-scheduler 和 kube-controller-manager 两个组件是有 leader 选举的,这个选举机制是 k8s 对于这两个组件的高可用保障,虽然 k8s 的存储使用了 etcd,但并没有使用 etcd 来实现选主,而是对 endpoint 这个资源做抢占,谁想抢到并将自己的信息写入 endpoint的 annotation 中,谁就获得了主。因为项目中需要写一个 k8s 的插件,同样需要选主逻辑,因此复用了 k8s 中的这个方法,即kubernetes 的

2020-05-24 17:24:54 1892

转载 kubelet 原理解析六: 垃圾回收

概述在k8s中节点会通过docker pull机制获取外部的镜像,那么什么时候清除镜像呢?k8s运行的容器又是什么时候清除呢?api-server: 运行在master,无状态组件,go自动内存垃圾回收controller-manager: 运行在master,无状态组件,go自动内存垃圾回收,owner机制提供resource垃圾回收scheduler: 运行在master,无状态组件,go自动内存垃圾回收kube-proxy:运行在node,无状态组件,无垃圾收集需要kubelet:运行在

2020-05-24 17:23:14 210

转载 【后端教程】分布式系统中的一致性与共识算法

etcd 是线性一致性读,而 zk 却是顺序一致性读,再加上各种共识、强弱一致的名词,看的时候总会混淆,这篇文档就列举下分布式系统中的那些”一致性名词”,引用了很多其他的文章,不过会多出一些例子来帮助理解。什么是一致性在谈到一致性这个词时,你会想到CAP理论的 consistency,或者 ACID 中的 consistency,或者 cache一致性协议的 coherence,还是 Raft/Paxos 中的 consensus?一致性这个词在不同的领域具有不同的含义,毕竟这个中文词在英文中对应了不

2020-05-24 17:14:16 658

转载 解密 | 一桩由数据洁癖引发的DNS悬案

供稿 | eBay CIRE Team编辑 | 刘洋本文6197字,预计阅读时间15分钟更多干货请关注“eBay技术荟”公众号导读域名系统(Domain Name System,以下简称DNS)是互联网的核心协议之一,不管是日常上网还是编程开发,都离不开它,说它是互联网的一项重要基础设施也不为过。本文将通过追溯一段eBay DNS的陈年旧事,带你一起探究DNS中NS记录的工作原理。引子DNS中的记录存储在被称为“区域(zone)”的名字空间中(根据DNS实现的不同,可能具体表现为普通的文本文件,或.

2020-05-23 16:35:50 292

转载 重磅 | eBay提出强大的轻量级推荐算法——洛伦兹因子分解机

供稿 | eBay Search Science Team作者 | 徐粲然编辑 | 顾欣怡本文2770字,预计阅读时间9分钟更多干货请关注“eBay技术荟”公众号摘要推荐系统和点击率预测要求必须对用户行为的特征交互进行建模。近几年来,随着深度学习的发展,新兴的深度模型(例如DeepFM, xDeepFM和Deep & Cross)层出不穷,这也使得算力、模型容量和精度三者之间的权衡变得非常重要。**针对这类问题,eBay的研究员提出了一种被称作洛伦兹因子分解机的模型,曾发表于今年2月在纽约

2020-05-23 16:30:08 793

转载 敲黑板:分布式架构,刚性事务-2PC必须注意的问题!+3PC详细解说!

2PC必须注意的问题咱们上文介绍了分布式事务的常见方案、类型划分、2PC的起源和流程。但是不幸的是2PC还是存在几个问题:1、全流程的同步阻塞:不管是第一阶段还是第二阶段,所有参与节点都是事务阻塞型。当参与者占有公共资源时,其他第三方访问公共资源可能不得不处于阻塞状态。2、TM单点故障:由于全流程依赖TM的协调,一旦TM发生故障。参与者会一直阻塞下去。尤其在第二阶段,TM发生故障,那么所有的参与者还都处于锁定事务资源的状态中,而无法继续完成事务操作。所有参与者必须等待TM重新上线(TM重新选举)后才.

2020-05-23 16:24:43 207

转载 利用认知偏差打造用户体验

为什么大爷大妈们总对排队情有独钟,为什么平常不想要的东西一打折就买一堆…震惊!原来套路你的竟然都是自己的大脑!如今想要成为一名合格的用户体验设计师,首要就是对目标用户的理解和把控。而为了实现这一目标,掌握一些心理学知识就显得尤为重要。当我们能在设计中合理利用心理学的时候,就离创造出让用户感慨“深得朕心”的体验不远了。这次要介绍的是设计心理学中与我们日常生活密切相关的认知偏差 (Cognitive bias) ,了解它的基本定义之后再结合相关案例探讨如何在设计中利用认知偏差来创造更好的用户体验。01 什么

2020-05-23 15:48:50 588

转载 深度解码企业文化体系

没有企业文化的团队是没有灵魂的团队, 很多企业的老板都知道企业文化的重要性, 但是, 常常反映说, 企业文化做起来觉得很虚, 比较难落地, 常常停留在墙上、海报和活动。很多人一提到企业文化,就想到的是搞了多少场活动。要做好企业文化建设,有必要对企业文化的体系进行正确、全面、深入的理解。首先,什么是文化呢?文化就是一群人共同约定俗成的、默认的共同思想、共同行为。 比如说,我们过马路,小孩子都知道“红灯停、绿灯行”,那假设道路上很空旷,前后都看不到车行驶过来,你又很赶时间,那你会不会等绿灯开了,再过马路呢?.

2020-05-23 15:45:33 1434

转载 Flutter在PLUS业务中的探索和实践

2016年京东为向核心客户提供更优质的购物体验,特别推出京东PLUS会员,旨在全方位提升和丰富用户网购体验,目前京东PLUS会员已成为电商行业付费人数最多的会员体系。作为PLUS的前端开发,我们思考最多的就是如何让页面更快更好的呈现在用户面前,如何用技术为用户提供最好的购物体验。为什么会开始尝试Flutter目前PLUS业务前端技术栈选择是React,虽然我们在React性能优化上做了很多工作,但是由于WebView本身的局限性,和原生相比H5页面的渲染效率和 JavaScript 的执行能力都差一些,

2020-05-23 15:40:16 211

转载 你所不知道的 ChaosBlade 那些事

作者简介:肖长军,阿里巴巴技术专家,花名穹谷,多年应用性能监控研发和分布式系统高可用架构经验,现专注于混沌工程领域,具备多年混沌工程研发和实践经验。开源项目 ChaosBlade 的负责人,阿里云应用高可用服务(AHAS)产品研发,混沌工程布道师。项目背景阿里巴巴内部从最早引入混沌工程解决微服务的依赖问题,到业务服务、云服务稳态验证,进一步升级到公共云、专有云的业务连续性保障,以及在验证云原生系统的稳定性等方面积累了比较丰富的场景和实践经验。并且当时混沌工程相关的开源工具存在场景能力分散、上手难度.

2020-05-23 15:35:54 527

转载 详解中型系统如何一步步扩展:从1开始到支撑10万用户

许多初创公司都曾经历过 — 每天都有大量新用户在注册帐户,技术团队正在争分夺秒地保持系统运转。有问题是好事,但是关于如何将 Web 应用程序如何从 1 开始扩展到成千上万的用户的资料却很少。常见的技术方案局限于如何解决已有系统突然爆发流量,或者如何来系统定位瓶颈(通常两者兼有)。尽管如此,我也发现将一个 side project 扩展到一个支撑大量用户的项目其实是有律可循。本文以我们的照片分享网站 Graminsta 为例总结这些规律,介绍如何将一个系统从 1 扩展到 10 万用户。1个用户: 1台

2020-05-22 15:40:05 186

转载 解决并发编程之痛的良药--结构化并发编程

作者简介:曹家锋,Westar实验室技术专家。Westar实验室(westar.io),成立于 2018 年,关注于区块链及分布式前沿技术,包括区块链分层架构、二层路由,网络性能、智能合约、PoW 优化等。并发,是程序员在日常编程中难以绕开的话题,本文介绍一种并发编程范式-结构化并发(Structured Concurrency)。首先给出它的概念和现状,然后着重介绍 Rust 的一个实现 - task_scope,最后给出一个例子展示如何在实践中使用。The Pain of concurrency.

2020-05-22 15:30:16 345

转载 Rust Web框架怎么选?研究本文就够了!

作者简介:成锁元,Westar实验室技术专家。Westar实验室(westar.io),成立于 2018 年,关注于区块链及分布式前沿技术,包括区块链分层架构、二层路由,网络性能、智能合约、PoW 优化等。Rust语言这两年在“安全、并发、性能”方面吸足了眼球,但在主流的web应用领域表现如何?有哪些可以推荐的Web框架?下面就这个话题深入展开。背景Web框架我们先简单回顾下Web框架: Web框架主要用于动态Web开发,开发人员在框架基础上实现自己的业务逻辑。 Web框架需要实现接收到请求后,.

2020-05-22 15:25:07 1552

转载 新手眼中的 Rust 所有权规则

如果你有关注本人博客,那么很明显,从今年年初开始,我便开始学习 Rust。此文与之前风格略有不同,旨在总结阅读 Rust 书籍时遇到的要点。到目前为止,它包含了我对 Rust 所有权规则的所有理解。Rust 的主要亮点之一是它提供了内存安全性。通过提供编译时保证,将可能会导致内存错误的标志代码标记为编译时错误来做到这一点。编译时保证是通过所有权规则来实现。在这篇文章中,我总结了 Rust 所有权规则关键点,简述如下:值归变量所有。当变量超出使用范围时,变量值所占用的内存将被释放。变量值可以由其他变量

2020-05-22 15:22:45 118

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除