CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。

而每一次的上下文切换过程都会给系统带来一定的资源和时间的开销,这也是我们需要关注上下文切换的原因。

在Linux中,按照特权等级会将进程运行空间分为用户态和内核态,而只有内核态可以访问所有资源(包括内存,寄存器等硬件设备)。

阅读全文 »

日常工作中,经常要观测系统的各项指标使用情况,判断服务是否处于健康运行状态。观测期间,时常会想到每个指标都是如何获取的,代表着什么含义。

于是萌生了写这个系列博客的想法,本篇博客会从系统层面,Java应用层面分析命令行工具输出的含义以及用法,同时也会结合实际案例讲解。

系统内存指标

free命令及参数说明

为了便于理解,我们先来看一下常用的free命令输出的各项指标:

阅读全文 »

背景

在项目中,我们作为kafka message消费处理并转发的平台服务,被external consumer“吐槽”消费处理并转发的速度太慢了,从开始consume到全部publish out的整个流程需要7个小时。

External consumer要求我们需要在2小时内将所有相关消息处理并publish out。

本文主要讲解如何不改动insert代码逻辑,只需修改配置,即可完成batch insert性能优化。对于batch delete的重构只会给出解决方案。

下面先给出优化前后处理单条数据流的结果对比图:

阅读全文 »

概述

有些 Web 应用是纯前端应用,没有后端。这时就不能用上面的方式了,必须将令牌储存在前端。RFC 6749 就规定了第二种方式,允许直接向前端颁发令牌。这种方式没有授权码这个中间步骤,所以称为(授权码)”隐藏式”(implicit)。

阅读全文 »

概述

授权码(authorization code)方式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。

这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。

阅读全文 »

1. 什么是OAuth

开放权限(Open Authorization, OAuth) 是一种资源提供商用于授权第三方应用代表资源所有者获取有限访问权限的授权机制。由于在整个授权过程中,第三方应用都无须触及用户的密码就可以取得部分资源的使用权限,所以OAuth是安全开放的。

阅读全文 »

1. 什么是跨域

我们平常所说的跨域实际上都是在讨论浏览器行为,包括各种WebView容器等(其中,以XmlHttpRequest的使用为主)。由于JavaScript运行在浏览器智商,所以Ajax的跨域成为”痛点”。

实际上,不仅不同站点间的访问存在跨域问题,同站点间的访问可能也会遇到跨域问题,只要请求的URL与所在页面的URL首部不同即产生跨域,例如:

阅读全文 »
0%