苏富仕的博客

-4


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 公益404

CAS机制

发表于 2018-01-24
前言在jdk 5 之前,在多线程编程的时候,为了保证多个线程对一个对象同时进行访问,我们需要加同步锁synchronized,保证对象在使用时的正确性,但是加锁机制会导致如下几个问题: 在多线程竞争下,加锁和释放锁会导致较多的上下文切换,引起性能问题 多线程可以导致死锁的问题 多线程持有的锁会导致 ...
阅读全文 »

Glide框架源码解析

发表于 2018-01-23
概要Glide是一个快速高效的android图片加载库,注重于平滑的滚动。Glide提供了易用的API,高性能、可扩展的图片解码管道,以及自动的资源池计数。 Glide支持拉取,解码和展示视频快照,图片,和GIF动画,开发者甚至可以插入和替换成自己喜爱的任何网络栈。默认情况下,Glide使用的是一个 ...
阅读全文 »

JVM内存模型

发表于 2018-01-23
概述JVM会将Java进程所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途、创建 、销毁时间。 对象和类的数据存储在3个不同的内存区域,堆、方法区、本地区。 堆内存存放对象以及数组的数据,方法区存放类的信息(包括类名、方法、字段)、静态变量、编译器编译后的代码,本地区包含线程栈、本地方 ...
阅读全文 »

ThreadLocal原理

发表于 2018-01-16
前言ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 ...
阅读全文 »

Executor多线程框架

发表于 2018-01-16
前言在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终奔溃。Java线程既是工作单元,也是执行单元。 new ...
阅读全文 »

了解Web及网络基础

发表于 2018-01-06
HTTP协议与Web 当在浏览器的地址栏内输入URL时,信息会被送到服务器,然后从服务器端获取文件资源等信息,浏览器通过解析服务器返回的内容,就可以将其显示在Web页面上。像这种通过发送请求获取服务器资源的Web浏览器等,都可称为客户端。 Web使用一种名为HTTP的协议作为规范,完成从客户端到服务 ...
阅读全文 »

Java泛型

发表于 2018-01-05
概要泛型在Java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。 泛型的定义 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参,而顾名思义,参数化类型就是将类型原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可 ...
阅读全文 »

Java与C++

发表于 2018-01-05
概要Java并不仅仅是C++语言的一个变种,它们在某些本质问题上有根本的不同。 Java比C++程序可靠性更高。C++语言在提供强大的功能的同时也提高了程序含bug的可能性,Java语言通过改变语言特性来大大提高了程序的可靠性。 Java语言不需要程序对内存进行分配和回收。Java丢弃了C++中很 ...
阅读全文 »

JVM类加载机制

发表于 2018-01-01
概述Java虚拟机通过装载、连接和初始化一个类型,使类型可以被正在执行的Java程序使用。 装载:把二进制形式的Java类型读入Java虚拟机中 连接:把装载的二进制形式的类型数据合并到虚拟机的运行时状态中去 验证:确保Java类型数据格式正确并且适合于Java虚拟机使用 准备:负责为该类型分配它 ...
阅读全文 »

注解与依赖注入框架

发表于 2017-11-28
前言在许多程序设计语言中,比如Java、C#。依赖注入是一种比较流行的设计模式,在android开发中也有很多实用的依赖注入框架,可以帮助我们少些一些样板代码,达到各个类之间解耦的目的。 注解从JDK 5开始,Java增加了注解,注解就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并 ...
阅读全文 »
1234…6
sufushi

sufushi

这是苏富仕的博客

54 日志
8 标签
GitHub
© 2018 sufushi
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.3