• 高并发Java(9):锁的优化和注意事项

    1. 锁优化的思路和方法 在高并发Java(1):前言中有提到并发的级别。 一旦用到锁,就说明这是阻塞式的,所以在并发度上一般来说都会比无锁的情况低一点。 这里提到的锁优化,是指在阻塞式的情况下,如何让性能不要变得太差。但是再怎么优化,一般来说性能都会比无锁的情况差
    发表于1年前 阅读( 2146 ) 评论( 0 )
  • Tomcat5.5(6.0)配置-多域名绑定和虚拟目录

    Tomcat5.5 (6.0)配置-多域名绑定和虚拟目录 需要修改配置文件:Tomcat 5.5(6.0)\conf\server.xml server.xml 的修改方式如下: 1.如果你要绑定网站,首先是要把tomcat的默认访问端口8080,修改成80 原始: <Connector port="8080" maxHttpHeaderSize="8192"
    发表于1年前 阅读( 2053 ) 评论( 0 )
  • 高并发Java(8):NIO和AIO

    IO感觉上和多线程并没有多大关系,但是NIO改变了线程在应用层面使用的方式,也解决了一些实际的困难。而AIO是异步IO和前面的系列也有点关系。在此,为了学习和记录,也写一篇文章来介绍NIO和AIO。 1. 什么是NIO NIO是New I/O的简称,与旧式的基于流的I/O方法相对,从名字看,
    发表于1年前 阅读( 2403 ) 评论( 0 )
  • 高并发Java(7):并发设计模式

    1. 什么是设计模式 在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题 ,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领 域引入到计算机科学的。 著名的4人帮:?Erich Gamma,Richard Helm, Ral
    发表于1年前 阅读( 2565 ) 评论( 0 )
  • 高并发Java(6):JDK并发包2

    1. 线程池的基本使用 1.1.为什么需要线程池 平时的业务中,如果要使用多线程,那么我们会在业务开始前创建线程,业务结束后,销毁线程。但是对于业务来说,线程的创建和销毁是与业务本身无关的,只关心线程所执行的任务。因此希望把尽可能多的cpu用在执行任务上面,而不是用在
    发表于1年前 阅读( 2436 ) 评论( 0 )
  • 高并发Java(5):JDK并发包1

    在高并发Java(2):多线程基础中,我们已经初步提到了基本的线程同步操作。这次要提到的是在并发包中的同步控制工具。 1. 各种同步控制工具的使用 1.1 ReentrantLock ReentrantLock感觉上是synchronized的增强版,synchronized的特点是使用简单,一切交给JVM去处理,但是功能
    发表于1年前 阅读( 2199 ) 评论( 0 )
  • 高并发Java(4):无锁

    在高并发Java(1):前言中已经提到了无锁的概念,由于在jdk源码中有大量的无锁应用,所以在这里介绍下无锁。 1 无锁类的原理详解 1.1 CAS CAS算法的过程是这样:它包含3个参数CAS(V,E,N)。V表示要更新的变量,E表示预期值,N表示新值。仅当V 值等于E值时,才会将V的值设为N,
    发表于1年前 阅读( 2284 ) 评论( 0 )
  • 深入研究Block捕获外部变量和__block实现原理

    前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这个新功能“Blocks”。从那开始,Block就出现在iOS和Mac系统各个API中,并被大家广泛使用。一句话来形容Blocks,带有自动变量(局部变量)的匿名函数。 Block在OC中的实现如下: struct Block_la
    发表于1年前 阅读( 2055 ) 评论( 0 )
  • 高并发Java(3):Java内存模型和线程安全

    网上很多资料在描述Java内存模型的时候,都会介绍有一个主存,然后每个工作线程有自己的工作内存。数据在主存中会有一份,在工作内存中也有一份。工作内存和主存之间会有各种原子操作去进行同步。 下图来源于这篇Blog 但是由于Java版本的不断演变,内存模型也进行了改变。本文
    发表于1年前 阅读( 1946 ) 评论( 0 )
  • 高并发Java(2):多线程基础

    1. 什么是线程 线程是进程内的执行单元 某个进程当中都有若干个线程。 线程是进程内的执行单元。 使用线程的原因是,进程的切换是非常重量级的操作,非常消耗资源。如果使用多进程,那么并发数相对来说不会很高。而线程是更细小的调度单元,更加轻量级,所以线程会较为广泛的
    发表于1年前 阅读( 1992 ) 评论( 0 )
  • 高并发Java(1):前言

    1、关于高并发的几个重要概念 1.1 同步和异步 首先这里说的同步和异步是指函数/方法调用方面。 很明显,同步调用会等待方法的返回,异步调用会瞬间返回,但是异步调用瞬间返回并不代表你的任务就完成了,他会在后台起个线程继续进行任务。 1.2 并发和并行 并发和并行在外在表
    发表于1年前 阅读( 2028 ) 评论( 0 )
  • 如何正确地写出单例模式

    单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可
    发表于1年前 阅读( 1831 ) 评论( 0 )
  • 为何一直推荐WebRTC

    ? 本文为了缅怀为音视频通讯做出突出贡献的年轻英才-雷霄骅,真是天妒英才!!! ? 开头有点伤感,做为一名工作在前线的IT技术人员,听到这个消息心里总是有点不好受的,如果各位有幸读到这篇文章请牢记:注意休息,工作是干不完的,身体才是革命的本钱。跟小雷同志最后一次博
    发表于1年前 阅读( 1749 ) 评论( 0 )
  • Linux 终于足够好,可以取代 Windows 了吗?

    据数据分析公司 Net Market Share 声称,Linux 桌面操作系统的使用率已达到了2%。对这款开源操作系统来说,这可是前所未有的成就。 这个数字并没有把安卓算作 Linux。这表明,更多的用户扎堆涌向传统的 Linux 桌面。 1. Linux 用起来很容易。 坊间有一种误解,他们认为 Linux
    发表于1年前 阅读( 1890 ) 评论( 0 )
  • Android6.0动态权限申请步骤以及需要注意的一些坑

    因为工作需要,简单研究了一下Android6.0权限申请,在Google提供的sample的基础上,写了一个简单的demo。算是自己的笔记吧,可能会比较混乱,主要是方便以后查看。后期有别的问题,随时更新~ 本demo github下载地址!!! Google提供的demo的下载地址 6.0权限的基本知识,以下
    发表于1年前 阅读( 2396 ) 评论( 0 )