精华内容
下载资源
问答
  • 本文主要讲了单片机串行和并行口的区别,希望对你的学习有所帮助。
  • 串行和并行区别,超详细!

    千次阅读 2021-02-05 22:28:27
    Stream中有两个函数parallel()sequential(),分别代表了并行和串行串行比较好理解,就是在主线程上按顺序执行逻辑代码,那么并行呢?那么我们要来说说什么是并行和并发,以前我们的CPU是单核的,多个任务是通过...

    串行执行

    **First😗*我们来说说Stream的并行和串行。Stream中有两个函数parallel()和sequential(),分别代表了并行和串行,串行比较好理解,就是在主线程上按顺序执行逻辑代码,那么并行呢?那么我们要来说说什么是并行和并发,以前我们的CPU是单核的,多个任务是通过划分时间片轮训来执行任务,这样的逻辑叫做并发。现代的CPU的多核的,有多少个核心就可以同一时间可以运行更多的任务,所以并行和并发大家就明白了。
    second:多个线程访问同一个类的synchronized方法时, 都是串行执行的 ! 就算有多个cpu也不例外 !
    synchronized方法使用了类java的内置锁, 即锁住的是方法所属对象本身. 同一个锁某个时刻只能被一个执行线程所获取,
    因此其他线程都得等待锁的释放. 因此就算你有多余的cpu可以执行, 但是你没有锁, 所以你还是不能进入synchronized方法执行, CPU因此而空闲.
    如果某个线程长期持有一个竞争激烈的锁, 那么将导致其他线程都因等待所的释放而被挂起,
    从而导致CPU无法得到利用, 系统吞吐量低下. 因此要尽量避免某个线程对锁的长期占有 !

    package Demo3;
    
    public class SyncMethod {
        public synchronized void syncMethod2() {
            try {
                System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 已经获取内置锁`SyncMethod.this`)");
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 即将释放内置锁`SyncMethod.this`)");
        }
    
        public synchronized void syncMethod1() {
            System.out.println("######################## (syncMethod1, 已经获取内置锁`SyncMethod.this`, 并即将退出)");
        }
      
    
    }
    
    ```java
    package Demo3;
    
    public class Thread1  extends Thread {
    
        SyncMethod syncMethod;
    
        public Thread1(SyncMethod syncMethod) {
            this.syncMethod = syncMethod;
        }
    
        @Override
        public void run() {
            syncMethod.syncMethod2();
        }
    }
    
    
    
    
    
    package Demo3;
    
    public class Thread2 extends Thread {
        SyncMethod syncMethod;
    
        public Thread2(SyncMethod syncMethod) {
            this.syncMethod = syncMethod;
        }
    
        @Override
        public void run() {
            System.out.println("Thread2 running ...");
            syncMethod.syncMethod1();
        }
    }
    
    
    package Demo3;
    
    public class Test2 {
        public static void main(String[] args) throws InterruptedException {
            SyncMethod syncMethod = new SyncMethod();
            Thread1 thread1 = new Thread1(syncMethod);
            Thread2 thread2 = new Thread2(syncMethod);      
            thread1.start();    //先执行, 以便抢占锁
            Thread1.sleep(500); //放弃cpu, 让thread1执行, 以便获的锁
            thread2.start(); //在syncMethod1()方法获得锁时, 看看syncMethod2()方法能否执行
    
    
    //        new Thread(()->{syncMethod.syncMethod2();}).start();
    //        new Thread(()->{syncMethod.syncMethod1();}).start();
    
        }
    }
    @@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 已经获取内置锁`SyncMethod.this`)
    Thread2 running ...
    @@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 即将释放内置锁`SyncMethod.this`)
    ######################## (syncMethod1, 已经获取内置锁`SyncMethod.this`, 并即将退出)
    

    多个线程访问同一个类的synchronized方法时, 都是串行执行的,很显然有长达5秒钟的时间空缺,另一个线程竟然没有加入,因此其他线程都得等待锁的释放.。因此就算你有多余的cpu可以执行, 但是你没有锁, 所以你还是不能进入synchronized方法执行, CPU因此而空闲。
    因此是串行执行。
    **

    并行执行

    **

    package Demo3;
    
    public class SyncMethod2 {
        private Object lock1 = new Object();
        private Object lock2 = new Object();
    
        public void syncMethod2() {
            synchronized (lock1) {
                try {
                    System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 已经获取内置锁`SyncMethod.this`)");
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 即将释放内置锁`SyncMethod.this`)");
            }
        }
    
        public void syncMethod1() {
            synchronized (lock2) {
                System.out.println("######################## (syncMethod1, 已经获取内置锁`SyncMethod.this`, 并即将退出)");
            }
        }
    }
    
    
    package Demo3;
    
    public class Thread21 extends Thread {
        SyncMethod2 syncMethod2;
    
        public Thread21(SyncMethod2 syncMethod2) {
            this.syncMethod2 = syncMethod2;
        }
    
        @Override
        public void run() {
            syncMethod2.syncMethod2();
        }
    }
    
    
    package Demo3;
    
    public class Thread22 extends Thread {
        SyncMethod2 syncMethod2;
    
        public Thread22(SyncMethod2 syncMethod2) {
            this.syncMethod2 = syncMethod2;
        }
    
        @Override
        public void run() {
            System.out.println("Thread22 running ...");
            this.syncMethod2.syncMethod1();
        }
    }
    
    
    package Demo3;
    
    public class Test22 {
        public static void main(String[] args) {
            SyncMethod2 syncMethod2 = new SyncMethod2();
            Thread21 thread21 = new Thread21(syncMethod2);
            Thread22 thread22 = new Thread22(syncMethod2);
            thread21.start();    //先执行, 以便抢占锁
            thread22.start(); //在syncMethod1()方法获得锁时, 看看syncMethod2()方法能否执行
        }
    }
    @@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 已经获取内置锁`SyncMethod.this`)
    Thread22 running ...
    ######################## (syncMethod1, 已经获取内置锁`SyncMethod.this`, 并即将退出)
    @@@@@@@@@@@@@@@@@@@@@@@@ (syncMethod2, 即将释放内置锁`SyncMethod.this`)
    
    

    显然是并行执行命令。

    1.Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称“对象锁”。

    情况1:同一个对象在两个线程中分别访问该对象的两个同步方法

    结果:会产生互斥。

    解释:因为锁针对的是对象,当对象调用一个synchronized方法时,其他同步方法需要等待其执行结束并释放锁后才能执行。

    情况2:不同对象在两个线程中调用同一个同步方法

    结果:不会产生互斥。

    解释:因为是两个对象,锁针对的是对象,并不是方法,所以可以并发执行,不会互斥。形象的来说就是因为我们每个线程在调用方法的时候都是new 一个对象,那么就会出现两个空间,两把钥匙,

    2.Synchronized修饰静态方法,实际上是对该类对象加锁,俗称“类锁”。

    情况1:用类直接在两个线程中调用两个不同的同步方法

    结果:会产生互斥。

    解释:因为对静态对象加锁实际上对类(.class)加锁,类对象只有一个,可以理解为任何时候都只有一个空间,里面有N个房间,一把锁,因此房间(同步方法)之间一定是互斥的。

    注:上述情况和用单例模式声明一个对象来调用非静态方法的情况是一样的,因为永远就只有这一个对象。所以访问同步方法之间一定是互斥的。

    情况2:用一个类的静态对象在两个线程中调用静态方法或非静态方法

    结果:会产生互斥。

    解释:因为是一个对象调用,同上。

    情况3:一个对象在两个线程中分别调用一个静态同步方法和一个非静态同步方法

    结果:不会产生互斥。

    解释:因为虽然是一个对象调用,但是两个方法的锁类型不同,调用的静态方法实际上是类对象在调用,即这两个方法产生的并不是同一个对象锁,因此不会互斥,会并发执行。

    展开全文
  • 主要介绍了JDK8并行流及串行区别原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 今天小编就为大家分享一篇python 多线程串行和并行的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 串行并行区别

    千次阅读 2019-08-15 11:30:19
    1.并行传输: 字符编码的各位(比特)同时传输。 特点: (1)传输速度快:一位(比特)时间内可传输一个字符,并行口传输8位数据一次送出.; (2)通信成本高:每位传输要求一个单独的信道支持;因此如果一个字符包含...

    1.并行传输:
    字符编码的各位(比特)同时传输。
    特点:
    (1)传输速度快:一位(比特)时间内可传输一个字符,并行口传输8位数据一次送出.;
    (2)通信成本高:每位传输要求一个单独的信道支持;因此如果一个字符包含8个二进制位,则并行传输要求8个独立的信道的支持;
    (3)不支持长距离传输:由于信道之间的电容感应,远距离传输时,可靠性较低。
    (4)针脚:针脚多
    (5)用途:多用作打印机、扫描仪等接口

    2.串行传输:
    将组成字符的各位串行地发往线路。
    特点:
    (1)传输速度较低,一次一位,串行口传输方式为数据排成一行、一位一位送出接收也一样;
    (2)通信成本也较低,只需一个信道。
    (3)支持长距离传输,目前计算机网络中所用的传输方式均为串行传输。
    (4)针脚:针脚少
    (5)用途:只用作控制接口
    方式: 串行传输有两种传输方式:
    (1)同步传输
    (2)异步传输

    在这里插入图片描述

    展开全文
  • 串行和并行区别

    千次阅读 2013-06-25 21:52:24
    并行通信传输中有多个数据位,同时在两个设备之间传输。发送设备将这些数据位通过 对应的数据线传送给接收设备,还可...串行数据传输时,数据是一位一位地在通信线上传输的,先由具有几位总线的计算机内的发送设备,

    并行通信传输中有多个数据位,同时在两个设备之间传输。发送设备将这些数据位通过 对应的数据线传送给接收设备,还可附加一位数据校验位。接收设备可同时接收到这些数据,不需要做任何变换就可直接使用。并行方式主要用于近距离通信。计算 机内的总线结构就是并行通信的例子。这种方法的优点是传输速度快,处理简单。

    串行和并行区别 - PETER  - Peter

    串行数据传输时,数据是一位一位地在通信线上传输的,先由具有几位总线的计算机内的发送设备,将几位并行数据经并--串转换硬件转换成串行方式,再逐位经 传输线到达接收站的设备中,并在接收端将数据从串行方式重新转换成并行方式,以供接收方使用。串行数据传输的速度要比并行传输慢得多,但对于覆盖面极其广 阔的公用电话系统来说具有更大的现实意义。

    串行和并行区别 - PETER  - Peter
    串行数据通信的方向性结构有三种,即单工、半双工和全双工。
    串行和并行区别 - PETER  - Peter

    串行和并行区别 - PETER  - Peter

    串行和并行区别 - PETER  - Peter

    串行传输和并行传输的区别

    从技术发展的情况来看,串行传输方式大有彻底取代并行传输方式的势头,USB取代IEEE 1284,SATA取代PATA,PCI Express取代PCI……从原理来看,并行传输方式其实优于串行传输方式。通俗地讲,并行传输的通路犹如一条多车道的宽阔大道,而串行传输则是仅能允 许一辆汽车通过的乡间公路。以古老而又典型的标准并行口(Standard Parallel Port)和串行口(俗称COM口)为例,并行接口有8根数据线,数据传输率高;而串行接口只有1根数据线,数据传输速度低。在串行口传送1位的时间内, 并行口可以传送一个字节。当并行口完成单词“advanced”的传送任务时,串行口中仅传送了这个单词的首字母“a”。


    根据组成字符的各个二进制位是否同时传输,字符编码在信源/信宿之间的传输分为并行传输和串行传输两种方式。

    1、并行传输:
    字符编码的各位(比特)同时传输。
    特点:

    (1)传输速度快:一位(比特)时间内可传输一个字符;

    (2)通信成本高:每位传输要求一个单独的信道支持;因此如果一个字符包含8个二进制位,则并行传输要求8个独立的信道的支持;

    (3)不支持长距离传输:由于信道之间的电容感应,远距离传输时,可靠性较低。

    2、串行传输:

    将组成字符的各位串行地发往线路。



    特点:

    (1)传输速度较低,一次一位;

    (2)通信成本也较低,只需一个信道。

    (3)支持长距离传输,目前计算机网络中所用的传输方式均为串行传输。

    方式: 串行传输有两种传输方式:

    1、同步传输

    2、异步传输



    pata(ide), SATA接口的区别以及SATA的优势

    IDE接口很宽,大概5CM宽,线缆也很宽,一根线缆有3个接口,一个接主板,两个接硬盘(可以接两个硬盘);SATA接口比较窄,1CM多一点,一根线 缆只有2个接口,一个接主板,一个接硬盘(只能接一个硬盘)。另外,同品牌、同一代、同容量、同缓存容量的硬盘,SATA接口的比IDE接口的稍微贵一点 点,几十元左右。



    ------------------------------------

    IDE接口:
    IDE的英文全称为“Integrated Drive Electronics”,即“电子集成驱动器”,它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。把盘体与控制器集成在一起的做法减少 了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,因为硬盘生产厂商不需要再担心自己的硬盘是否与其它厂商生产的控制器 兼容,对用户而言,硬盘安装起来也更为方便。IDE这一接口技术从诞生至今就一直在不断发展,性能也不断的提高,其拥有的价格低廉、兼容性强的特点,为其 造就了其它类型硬盘无法替代的地位。
    IDE代表着硬盘的一种类型,但在实际的应用中,人们也习惯用IDE来称呼最早出现IDE类型硬盘ATA-1,这种类型的接口随着接口技术的发展已经被淘汰了,而其后发展分支出更多类型的硬盘接口,比如ATA、Ultra ATA、DMA、Ultra DMA等接口都属于IDE硬盘。此外,由于IDE口属于并行接口,因此为了和SATA口硬盘相区别,IDE口硬盘也叫PATA口硬盘。
    PATA的全称是Parallel ATA,就是并行ATA硬盘接口规范,也就是我们现在最常见的硬盘
    接口规范了。PATA硬盘接口规模已经具有相当的辉煌的历史了,而且从ATA33/66一直发展
    到ATA100/133,一直到目前最高的ATA150。

    SATA接口:
    使用SATA(Serial ATA)口的硬盘又叫串口硬盘,是未来PC机硬盘的趋势。2001年,由Intel、APT、Dell、IBM、希捷、迈拓这几大厂商组成的Serial ATA委员会正式确立了Serial ATA 1.0规范,2002年,虽然串行ATA的相关设备还未正式上市,但Serial ATA委员会已抢先确立了Serial ATA 2.0规范。Serial ATA采用串行连接方式,串行ATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。
    串口硬盘是一种完全不同于并行ATA的新型硬盘接口类型,由于采用串行方式传输数据而知名。相对于并行ATA来说,就具有非常多的优势。首先,Serial ATA以连续串行的方式传送数据,一次只会传送1位数据。这样能减少SATA接口的针脚数目,使连接电缆数目变少,效率也会更高。实际上,Serial ATA 仅用四支针脚就能完成所有的工作,分别用于连接电缆、连接地线、发送数据和接收数据,同时这样的架构还能降低系统能耗和减小系统复杂性。其次,Serial ATA的起点更高、发展潜力更大,Serial ATA 1.0定义的数据传输率可达150MB/s,这比目前最新的并行ATA(即ATA/133)所能达到133MB/s的最高数据传输率还高,而在Serial ATA 2.0的数据传输率将达到300MB/s,最终SATA将实现600MB/s的最高数据传输率。-------------------------------SATA与IDE接口硬盘哪个更快?SATA 接口比同转速的IDE接口的传输速度要快,价格比较同容量同转速同品牌的硬盘便宜80-150块钱左右,而且内置高速缓存通常都在8M以上,而普通IDE缓存都在2M左右,相差甚远;
    更大的区别在于:
    一、(SATA不依赖于系统总线的带宽,而是内置时钟。第一代SATA内置1500MHz时钟,可以达到150M字节/秒的接口带宽。由于不再依赖系统总线频率,每一代SATA升级带宽的增加都是成倍的:第二代300M字节/秒(即SATA-II),并且支持热插拔;

    二、SATA不再使用过时的并行总线接口,转用串行总线,整个风格完全改变。
    SATA与原来的IDE相比有很多优越性,最明显的就是数据线从80 pin变成了7 pin,而且IDE线的长度不能超过0.4米,而SATA线可以长达1米,安装更方便,利于机箱散热。除此之外,它还有很多优点:
    (1)、一对一连接,没有主从盘的烦恼;而IDE一个接口只能接两个IDE设备,而且还要分主从设备,如果一个接口接上两个IDE设备后就会共同分享这一带宽,从而速度大幅度下降;
    (2)、每个设备都直接与主板相连,独享150M字节/秒带宽,设备间的速度不会互相影响。
    (3)、SATA提高了错误检查的能力,除了对CRC对数据检错之外,还会对命令和状态包进行检错,因此和并行ATA相比提高了接入的整体精确度,使串行ATA在企业RAID和外部存储应用中具有更大的吸引力。
    (4)、SATA的信号电压最高只有0.5伏,低电压一方面能更好地适应新平台强调3.3伏的电源趋势,另一方面有利于速度的提高。
    (5)、SATA II可以通过Port Multiplier,让每一个SATA接口可以连接4-8个硬盘,即主板有4个SATA接口,可以连接最多32个硬盘。
    (6)、还有一个非常有趣的技术,叫Dual host active fail over。它可以通过Port Selector接口选择器,让两台主机同时接一个硬盘。这样,当一台主机出现故障的时候,另一台备用机可以接管尚为完好的硬盘阵列和数据;
    (7)、SATA-II在SATA的基础上加入NCQ原生指令排序、存储设备管理(Enclosure Management)、底板互连、数据分散/集中这四项新特性。提高读盘效率,减少磁头的内外圈来回摆动次数;
    (8)、SATA-I代需要在安装操作系统前用SATA接口驱动程序软盘引导计算机,然后安装,且CMOS设置较为复杂,而SATA-II的出现,在许多主板生产厂商的支持下,已经不需要驱动软盘的引导可直接由主板识别,且CMOS设置也更为简单,自动化程序提高。

     

    展开全文
  • 74HC595 - 串行并行

    2020-07-14 17:44:36
    1、串行并行 引脚图 逻辑框图 2、功能注释 芯片主要分为移位寄存器锁存寄存器两大部分。移位寄存器存储串行输入的数据,锁存寄存器锁存移位寄存器内的数据。 1)SHIFT CLOCK:移位时钟输入引脚,上升沿将...
  • java8串行和并行区别 4个Java垃圾收集器–错误的选择如何严重影响性能 在2014年,对于大多数开发人员来说,还有两件事仍然是个谜:垃圾收集了解异性。 由于我对后者知之甚少,所以我认为我会对前者大吃一惊,...

    java8串行和并行的区别

    Blog_Trash-1

    4个Java垃圾收集器–错误的选择如何严重影响性能

    在2014年,对于大多数开发人员来说,还有两件事仍然是个谜:垃圾收集和了解异性。 由于我对后者知之甚少,所以我认为我会对前者大吃一惊,尤其是因为在该领域中,Java 8发生了一些重大变化和改进,尤其是去除了PermGen和一些新的和令人兴奋的优化(有关此方面的更多信息,请参见结尾)。

    当我们谈论垃圾收集时,我们绝大多数人都知道这个概念,并将其应用到日常编程中。 即使这样,很多事情我们还是不了解,那时候情况就变得很痛苦。 关于JVM的最大误解之一是它有一个垃圾收集器,实际上它提供了四种不同的垃圾收集器,每种垃圾都有其独特的优缺点。 使用哪种选择不是自动的,而是由您自己决定的,吞吐量和应用程序暂停之间的差异可能会很大。

    这四种垃圾收集算法的共同点是它们是代生成的,这意味着它们使用古老的假设(即堆中的大多数对象是短寿命的,应Swift回收)将托管堆分成不同的段。 由于这也是一个广为人知的领域,因此我将直接介绍不同的算法,以及它们的优缺点。

    1.串行收集器

    串行收集器是最简单的一种,您可能不会使用,因为它主要是为单线程环境(例如32位或Windows)和小型堆而设计的。 该收集器会在工作时冻结所有应用程序线程,这使它在所有目的和用途上都无法在服务器环境中使用。

    使用方法:您可以通过打开-XX:+ UseSerialGC JVM参数来使用它,

    2.并行/吞吐量收集器

    接下来是并行收集器。 这是JVM的默认收集器。 就像它的名字一样,它的最大优点是使用多个线程来扫描并压缩堆。 并行收集器的不利之处在于,在执行次要或完全GC收集时,它将停止应用程序线程。 并行收集器最适合可以容忍应用程序暂停并试图优化以减少由收集器引起的CPU开销的应用程序。

    3. CMS收集器

    紧跟在并行收集器之后的是CMS收集器(“ current-mark-sweep ”)。 该算法使用多个线程(“并发”)在堆(“标记”)中扫描可回收(“清扫”)未使用的对象。 在以下两种情况下,该算法将进入“世界停止”(STW)模式:初始化根的初始标记(从线程入口点或静态变量可以访问的旧代对象),以及应用程序更改状态时在算法同时运行时堆,迫使它返回并进行最后的修改以确保标记了正确的对象。

    使用此收集器时,最大的担忧是升级失败 ,在这种情况下,收集年轻一代和老一代之间出现了种族状况。 如果收集器需要将年轻物体提升给老一代,但又没有足够的时间清理空间,则必须首先这样做,这将导致完整的STW收集-这就是CMS收集器的初衷阻止。 为确保不会发生这种情况,您可以增加旧一代的大小(或为此增加整个堆的大小),或者为收集器分配更多的后台线程,以便他与对象分配率竞争。

    与并行收集器相比,此算法的另一个缺点是,它使用更多的CPU,以便通过使用多个线程来执行扫描和收集,从而为应用程序提供更高级别的连续吞吐量。 对于大多数长时间运行的服务器应用程序而言,这不利于应用程序冻结,这通常是一个不错的选择。 即使这样, 默认情况下不会启用该算法。 您必须指定XX:+ USeParNewGC才能真正启用它。 如果您愿意分配更多的CPU资源以避免应用程序暂停,那么这可能是您可能要使用的收集器,假设您的堆大小小于4Gb。 但是,如果大于4GB,则可能要使用最后一种算法-G1收集器。

    4. G1收藏家

    JDK 7更新4中引入的Garbage first收集器(G1)旨在更好地支持大于4GB的堆。 G1收集器利用多个后台线程来扫描它划分成区域的堆,范围从1MB到32MB(取决于堆的大小)。 G1收集器旨在首先扫描那些包含最多垃圾对象的区域,并为其命名(垃圾优先)。 使用–XX:+ UseG1GC标志打开此收集器。

    这种策略有可能在后台线程完成对未使用对象的扫描之前耗尽堆,在这种情况下,收集器将不得不停止应用程序,这将导致STW收集。 G1还具有另一个优点,即它可以在移动过程中压缩堆,这是CMS收集器仅在完整STW收集期间执行的操作。

    在过去的几年中,大堆一直是一个有争议的领域,许多开发人员从每台机器模型的单个JVM转移到每台机器具有多个JVM的更多微服务,组件化体系结构。 这是由许多因素驱动的,包括希望隔离不同的应用程序部分,简化部署并避免通常将应用程序类重新加载到内存中所带来的成本(在Java 8中实际上已得到改进)。

    即便如此,涉及到JVM的最大驱动程序之一还是希望避免大堆发生的长时间“停止世界”暂停(在大型集合中可能要花费几秒钟)。 诸如Docker之类的容器技术也加快了这一步,使您能够相对轻松地在同一台物理计算机上部署多个应用程序。

    Java 8和G1收集器

    Java 8 update 20刚刚推出的另一个漂亮的优化是G1收集器字符串重复数据删除 。 由于字符串(及其内部char []数组)占用了我们的大部分堆内存,因此进行了新的优化,使G1收集器可以识别在整个堆中重复多次的字符串,并更正它们以指向同一内部char []数组,以避免同一字符串的多个副本无效地驻留在堆中。 您可以使用-XX:+ UseStringDeduplication JVM参数来进行尝试。

    Java 8和PermGen

    Java 8中最大的更改之一是删除了堆中的permgen部分,该部分传统上分配给类元数据,内部字符串和静态变量。 传统上,这将要求开发人员使用的应用程序会加载大量的类(对于使用企业容器的应用程序很常见),以专门针对堆的这一部分进行优化和调整。 多年来,它已成为许多OutOfMemory异常的来源,因此(如果是非常不错的)添加JVM(主要是)要多加注意。 即使这样,它本身也可能不会减少开发人员将其应用程序分离到多个JVM中的浪潮。

    这些收集器中的每一个都通过一系列的拨动开关进行不同的配置和调整,每一个都有可能增加或减少吞吐量,所有这些都取决于应用程序的特定行为。 在下一篇文章中,我们将研究配置这些策略的关键策略。

    同时,您最想了解关于不同收藏家之间差异的哪些事情? 在评论部分打我!

    补充阅读

    1. InfoQ上对G1收集器进行了非常深入的深入审查。
    2. Java性能–权威指南。 我最喜欢的Java性能
    3. 有关CodeCentric 博客上有关字符串重复数据删除的更多信息。

    翻译自: https://www.javacodegeeks.com/2014/09/garbage-collectors-serial-vs-parallel-vs-cms-vs-g1-and-whats-new-in-java-8.html

    java8串行和并行的区别

    展开全文
  • 对于已经(仍在)使用SRAM的高性能(主要是缓存)应用而言,与串行接口相比,并行接口拥有明显优势。但这种情况似乎即将改变。  尽管能够提供高于串行接口的性能,但并行接口也有劣势。其中明显的是,无论是从...
  • 使用CGLIB实现串行程序的异步并行执行,博客地址:http://blog.csdn.net/yangzl2008/article/details/50489583
  • 第29卷第4期 攀枝花学院学报 2012年8月 VoL 29No4 of JournalPanzhihua University Au昏2012 自然科学研究 基于VHDL的并行串行转换器算法模型 曾日 仅技 (攀枝花学院电气信息工程学院ItJ sl攀枝花617000) 摘要以...
  • 串行和并行

    千次阅读 2019-07-31 19:21:31
    串行传输:串行传输即串行通信,是指使用一条数据线 将数据一位一位地依次传输,每一个数据占据一个固定的时间长度,其只需要少数几条线就可以...区别串行传输的速度比并行传输的速度要慢的多,但是费用低并行传输...
  • 串行和并行接口模式是A/D转换器诸多分类中的一种,但却是应用中器件选择的一个重要指标。在同样的转换分辨率及转换速度的前提下,不同的接口方式不但影响了电路结构,更重要的是将在高速数据采集的过程中对采样周期...
  • 主要介绍了python 串行执行和并行执行实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 同步 所有的操作都做完,才返回给用户。这样用户在线等待的时间过长,用户体验不好,也就是会有一种卡死了 ...的感觉)。...这就是异步同步的差异。但是用户没有卡死的感觉, 一般会有系统提示词,告诉你
  • 多实例还有并行串行区分。以下解释一下什么是并行串行 并行代表同时进行,如把任务分给5个人来处理,这5个人同时会收到任务,并且可以同时处理,不受各自的影响。 串行代表工作或任务由一个人完成后,再由另一...
  • 摘要:串行和并行接口模式是A/D转换器诸多分类中的一种,但却是应用中器件选择的一个重要指标。在同样的转换分辨率及转换速度的前提下,不同的接口方式不但影响了电路结构,更重要的是将在高速数据采集的过程中对...
  • 串行和并行区别.docx
  • 分别使用串行并行方法计算矩阵乘法,对比两者的执行时间
  • 串行和并行区别

    千次阅读 2017-02-09 09:13:40
    并行串行 分类:默认栏目计算机系统的信息交换有两种方式:并行数据传输方式和串行数据传输方式。并行数据传输是以计算机的字长,通常是8位、16位、32位为传输单位,一次传送一个字长的数据。它适合于外部设备与CPU...
  • 在这篇文章中我不去给大家说并行传输和串行传输的概念,说了也未必能记住,所以我就用大白话给大家说清楚二者的区别。 假设我手里有4颗子弹,第一种情况我可以用四把枪分别把它们打出去,这就是并行;同样是手里的...
  • 一组需要强大计算能力的算法,通过串行和并行编程来实现,比较结果,工具,技术目标解决方案。 该项目使用随机数来计算问题,以证明并展示并行编程的功能。 并且用于实现。 nn 串行和并行的类似knn的问题解决方案...
  • 电脑上的串行和并行接口

    千次阅读 2020-05-27 00:25:56
    可以分为串行和并行 串行是指一个一个比特按照时间顺序传输,并行是多个比特通过多条信道同时传输 处于经济上的考虑远距离通讯一般使用串行传输 2.电脑上的一些常见接口 串行: 采用RS232协议的HDMI接口 usb...
  • 关于CRC校验码的详尽分析描述,对串行和并行的原理进行了阐述,然后利用Quartus软件绘制出电路原理图,有设计的总结以及详细的仿真过程。
  • iOS 多线程 同步异步 串行和并行

    千次阅读 2018-07-06 18:58:38
    串行和并行、同步异步,这四个词同时出现的地方是dispatch_queue。NSOperationQueue贴心的隐藏了这些东西,已经不需要我们来操心了。所以下面会使用dispatch_queue来展开。线程,线程是程序执行流的最小单元。 ...
  • 串行并行和并发

    2020-01-18 14:28:27
    串行并行和并发 并行和并发 并发:1.一个处理器。2.逻辑上的同时运行 并行:2.多个处理器。2.物理上的同时运行 并发:一个咖啡机,交替 并行:多个咖啡机 并行:真正的“同时”运行,在同一时刻,有...
  • 对于已经(仍在)使用SRAM的高性能(主要是缓存)应用而言,与串行接口相比,并行接口拥有明显优势。但这种情况似乎即将改变。  尽管能够提供高于串行接口的性能,但并行接口也有劣势。其中最明显的是,无论是从...
  • 串行和并行的总结

    千次阅读 2020-06-30 18:23:14
    一、parallel并行 并行AB 二、sequential串行 A串行B

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 141,679
精华内容 56,671
关键字:

串行和并行的区别