• 理解Spring Cloud Hystrix

    = 792

    本文出自:【InTheWorld的博客】 (欢迎留言、交流)

    hystrix-logo-tagline-640

    Spring Cloud“全家桶”风头正劲,Hystrix作为服务容错保护组件也是挺有名气。最近我有在看一些Spring Cloud的内容,其中就包括Hystrix。这里我打算从宏观理论和微观实现两个部分来分析Hystrix。

    1. Hystrix的宏观知识

    首先是宏观理论了,先抛出两个问题。Hystrix的设计目的是什么?应该怎么完成这些目标?针对第一个问题,我们首先需要明确的是微服务架构应该是有一定的容错性的,而服务不可用的问题是客观存在的。而且这些服务错误常常会恶化和扩散,结果造成更严重的负面影响。所以在无法绝对保证[……]

    Read more

  • 基于OpenGL ES实现多媒体全景渲染

    = 1398

    本文出自:【InTheWorld的博客】 (欢迎留言、交流)

    panorama

    近几年来,VR型的多媒体变得越来越常见。在YouTube上就有很多360度视频,很多地图产品也提供全景街道图。作为开发者,我们不禁要想如何实现多媒体的全景渲染呢?

    其实,渲染VR的多媒体其实并不难,这里就以360度视频为例介绍一下。我也没有尝试过从头写一个360视频渲染库(目前能力和精力都不太允许),所以这篇博客其实是基于开源库的——https://github.com/ashqal/MD360Player4Android。此外,我不准备详细去介绍这个库怎么使用,而是基于它分析整个渲染流程。

    全景视频一般由鱼眼镜头产生,鱼[……]

    Read more

  • Java线程池、Executor原理分析

    = 2207
    本文出自:【InTheWorld的博客】 (欢迎留言、交流)thread_pool1. 线程池作用与基本知识

    在开始之前,我们先来讨论下“线程池”这个概念。“线程池”,顾名思义就是一个线程缓存。它是一个或者多个线程的集合,用户可以把需要执行的任务简单地扔给线程池,而不用过多的纠结与执行的细节。那么线程池有哪些作用?或者说与直接用Thread相比,有什么优势?我简单总结了以下几点:

    • 1. 减小线程创建和销毁带来的消耗

    对于Java Thread的实现,我在前面的一篇blog中进行了分析。Java Thread与内核线程是1:1(Linux)的,再加上Thread在Java层与C++层都有不少成员数据,所以Ja[……]

    Read more

  • JVM原理与实现——Reference

    = 1173

    本文出自:【InTheWorld的博客】 (欢迎留言、交流)

    duke_beer1. Reference的基本介绍

    reference的中文含义是“引用”。由于本文所基于的HotSpot虚拟机主要使用C++开发,因此我担心有人会把C++的引用和这里的reference混为一谈。所以,我会尽量使用reference(首字母小写)来表述”引用“这个概念。通常我们写下如下的语句: Object obj; 其实就是定义了一个reference。我可以很直白的说出一个结论——在32位机器上HotSpot的reference就是一个32bit的指针。如下图所示,reference指向一个堆空间的实际对象。这种常用的re[……]

    Read more

  • JVM原理与实现——Synchronized关键字

    = 1524

    本文出自:【InTheWorld的博客】 (欢迎留言、交流)

    openJDK_gitar

    在多线程的Java程序中,Synchronized关键字是经常出现的。这篇文章里,我们就来研究一下它的实现原理。比如以下的示例程序:

    public class SynchronizedTest {
        int syncFunc() {
            synchronized(this) {
                int a = 0;
                return a;
            }
        }
    }
    

    对应的字节码如下:

    Compiled from "SynchronizedTest.java"
    pu[......]

    Read more

  • JVM原理与实现——Thread

    = 1363

    本文出自:【InTheWorld的博客】 (欢迎留言、交流)

    Jaa

    前言

    之前研究OpenJDK的时候,并没有注意Java线程模型方面的东西。最近在学习一些Java并发方面的知识时,关于JVM线程实现原理的疑问又浮上心头。昨天晚上,突然想起以前研究OpenJDK的资料还在,于是开始在OpenJDK的源码里面研究Thread的实现。搞到凌晨三点多,差不多弄清楚了一个大概,这篇博文就主要把把相关的知识点记录下来。

    1. Java中Thread

    对于Java开发者来说,java.lang.Thread的确是再熟悉不过了。Java多线程程序都是通过它来实现功能的。有关Thread的使用方式,这里[……]

    Read more

  • Spring Session加Redis

    = 1194

    本文出自:【InTheWorld的博客】

    redis-spring-boot

    session是一个非常常见的概念。session的作用是为了辅助http协议,因为http是本身是一个无状态协议。为了记录用户的状态,session机制就应运而生了。同时session也是一个非常老的概念了,使用session的方法也是多种多样。就Java来说,servlet的标准本身是包含session的,Tomcat会把session的信息存储在服务器内存里,Request提供了获取session的方法。

    然而,前文所述的session机制其实是有不少缺点的。首先就是session数据没有一定的持久化机制,而且难以实现应用服务器的水平扩展[……]

    Read more

  • 使用JWT实现安全认证——基于Angular2和Spring

    = 1572

    本文出自:【InTheWorld的博客】

    json_web_token

    安全认证一直都是应用非常重要的一环,并且随着移动app和SPA的不断发展,基于token的认证正不断成为主流。JSON Web Tokens是一种简单好用的认证方法,一个JWT类型的token一般由三部分组成,分别是Header、Payload和Signature,当然有时候会加一个token前缀。

    以下图为例,分析一下JWT的结构:

    image

    首先,前面的“Bearer ”是token前缀,后面的内容中由两个”.”分割成为了三份。它们便分别对应Header,Payload和Signature。

    • Header:记录token算法和类型的字段
    • [……]

    Read more

  • MongoDB与Spring Boot

    = 389

    本文出自:【InTheWorld的博客】

    MongoDB作为一种NoSQL数据库产品,其实已经非常著名了。去年,由于MongoDB安全认证的薄弱,上万家公司中招。虽然是一则负面新闻,但是也从侧面说明了MongoDB的流行程度。下图是DB-Engines统计的2017年5月全球数据库引擎使用排名。从图中可以看出,mongoDB位列总榜第五,非关系数据库第一,非常靠前的排名。

    db_engine_ranking

    我个人对mongoDB并不是非常熟悉,但是经过一段时间的了解,对mongoDB的特性还是有了一些简单的理解,这里记录一二。

    1. 首先,mongoDB作为一种非关系型数据库,它最大的特点就是Schema非常的弱。换而言[……]

    Read more

  • Android之视频编解码

    = 1646

    media

    不吹不黑,我的多媒体基础非常之薄弱,自己也意识到这方面的知识要恶补。最近由于工作上的需求,我也在弄编解码的东西。这篇blog主要的目的就是把最近理解到的东西记录下来,主要内容包括MediaExtractor、MediaCodecs以及Android上的硬件加速。

    • MediaExtractor

    为什么要从MediaExtractor开始说起呢?其实有两方面的原因,首先是它比较简单,其次它常常是视频编解码的第一个步骤。从功能上讲,MediaExtractor其实就是一个高配InputStream。它的作用就是读取音视频文件,然后按照一定的格式输出出来。废话不多说,我们先看一段使用的[……]

    Read more

第 2 页,共 8 页12345...最旧 »