随笔分类 -  java纯小白,绕行

上一页 1 2 3 4 5 6 7 ··· 9 下一页
廖雪峰Java11多线程编程-3高级concurrent包-6ExecutorService
摘要:1. 线程池 Java语言内置多线程支持: 创建线程需要操作系统资源(线程资源,栈空间) 频繁创建和销毁线程需要消耗大量时间 假设我们有大量的小任务,可以让它排队执行,然后在一个线程池里有少量的线程来执行大量的任务。 使用线程池来复用线程,可以非常高效的执行大量小任务。 线程池: 线程池维护若干个线 阅读全文
posted @ 2019-06-13 21:57 singleSpace 阅读(322) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-3高级concurrent包-5Atomic
摘要:1. Atomic java.util.concurrent.atomic提供了一组原子类型操作。如AtomicInteger提供了 1.1 无锁线程安全 Atomic类可以实现无锁(lock free)的线程安全(thread safe)访问 原理:CAS(Compare and Set)如果At 阅读全文
posted @ 2019-06-13 19:01 singleSpace 阅读(199) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-3高级concurrent包-4Concurrent集合
摘要:1. Concurrent 用ReentrantLock+Condition实现Blocking Queue。 Blocking Queue:当一个线程调用这个Queue的getTask()时,该方法内部可能让给线程变成等待状态,直到条件满足。线程被唤醒以后,getTask()才会返回。 而java 阅读全文
posted @ 2019-06-13 14:20 singleSpace 阅读(280) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-3高级concurrent包-3Condition
摘要:1.Condition实现等待和唤醒线程 java.util.locks.ReentrantLock用于替代synchronized加锁 但是synchronized可以使用wait和notify实现线程在条件不满足时的等待,条件满足时的唤醒。 如何使用ReentrantLock实现wait/not 阅读全文
posted @ 2019-06-12 22:21 singleSpace 阅读(213) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-3高级concurrent包-2ReadWriteLock
摘要:1.ReentrantLock的限制 ReentrantLock保证了只有一个线程可以执行临界区代码。 临界区代码:任何时候只有1个线程可以执行的代码块。 临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其 阅读全文
posted @ 2019-06-12 20:32 singleSpace 阅读(237) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-3高级concurrent包-1ReentrantLock
摘要:1.java.util.concurrent 线程同步: 是因为多线程读写竞争资源需要同步 Java语言提供了synchronized/wait/notify来实现同步 编写多线程同步很困难 所以Java提供了更高级的java.util.concurrent包: 更高级的同步功能 简化多线程程序的编 阅读全文
posted @ 2019-06-12 00:06 singleSpace 阅读(218) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-2线程同步-4wait和notify
摘要:1.多线程协调 synchronized解决了多线程竞争的问题,我们可以在synchronized块中安全的对一个变量进行修改,但是它没有解决多线程协调的问题。 例如设计一个TaskQueue,内部通过LinkedList()表示一个队列。addTask()将新任务放入队列,getTask()取出队 阅读全文
posted @ 2019-06-11 19:31 singleSpace 阅读(345) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-2线程同步-3死锁
摘要:在多线程编程中,要执行synchronized块,必须首先获得指定对象的锁。 1.Java的线程锁是可重入的锁 什么叫可重入的锁? 对同一个对象,同一个线程,可以多次获取它的锁,即同一把锁可以嵌套。 在add方法中,用synchronized获取了一个lock对象的锁,在synchronized代码 阅读全文
posted @ 2019-06-11 07:13 singleSpace 阅读(252) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-2线程同步-2synchronized方法
摘要:1.对Java方法进行加锁 Java使用synchronized对一个对象进行加锁,也就可使用synchronized对一个方法进行加锁。 在执行synchronized语句时,我们首先获得synchronized指定的锁。当我们添加synchronized语句块的时候,首先需要注意的是锁住那个对象 阅读全文
posted @ 2019-06-11 02:45 singleSpace 阅读(233) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-2线程同步-1同步代码块
摘要:1.线程安全问题 多个线程同时运行,线程调度由操作系统决定,程序本身无法决定。 如果多个线程同时读写共享变量,就可能出现问题。 假设有AddThread和DecThread,它们分别对同一个共享变量做加和减运算LOOP次,最终结果应该是0。但某些时候比如LOOP为10000时,结果是错误的。 jav 阅读全文
posted @ 2019-06-10 15:27 singleSpace 阅读(275) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-1线程的概念-5中断线程
摘要:1.中断线程: 如果线程需要执行一个长时间任务,就可能需要中断线程。场景:从网络上下载一个100M的文件,用户在下载过程中中断下载任务的执行。 中断线程就是其他线程给该线程发一个信号,该线程收到信号后结束执行run()方法 1.1中断线程 需要检测isInterrupted()标志,其他线程通过调用 阅读全文
posted @ 2019-06-09 20:15 singleSpace 阅读(271) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-1线程的概念-3线程的状态
摘要:1线程的状态 线程终止的的原因: run()或call()方法执行完成,线程正常结束 线程抛出一个未捕获的Exception或Error 直接调用该线程的stop()方法来结束该线程——该方法容易导致死锁,通常不推荐使用 1.1对已经死亡的线程调用start()方法使他重新启动,会引发Illegal 阅读全文
posted @ 2019-06-03 20:05 singleSpace 阅读(233) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-1线程的概念-2创建新线程
摘要:Java语言内置多线程支持: 一个Java程序实际上是一个JVM进程 JVM用一个主线程来执行main()方法 在main()方法中又可以启动多个线程 1.创建新线程 要启动一个线程,需创建一个线程对象。创建线程对象的方法有3种。 1.1 方法一:使用Thread创建线程 创建MyThread类: 阅读全文
posted @ 2019-05-24 04:07 singleSpace 阅读(509) 评论(0) 推荐(0)
廖雪峰Java11多线程编程-1线程的概念-1多线程简介
摘要:1.多任务 多任务就是同时运行多个任务,例如同时开启钉钉、百度网盘、火狐、谷歌、ps等。 现代操作系统(windows,MacOS,Linux)都可以执行多任务:操作系统执行多任务就是让多个任务交替执行,例如浏览器执行0.001秒,网盘执行0.001秒,钉钉执行0.001秒。因为任务的数量远远多余C 阅读全文
posted @ 2019-05-23 00:50 singleSpace 阅读(383) 评论(0) 推荐(0)
廖雪峰Java10加密与安全-6数字证书-1数字证书
摘要:数字证书: 非对称加密算法:对数据进行加密/解密 签名算法:确保数据完整性和抗否认性 摘要算法:确保证书本身没有被篡改 阅读全文
posted @ 2019-05-22 22:04 singleSpace 阅读(271) 评论(0) 推荐(0)
廖雪峰Java10加密与安全-5签名算法-2DSA签名算法
摘要:DSA DSA:Digital Signature Algorithm,使用EIGamal数字签名算法,和RSA数字签名相比,DSA更快。 DSA只能配合SHA使用: SHA1withDSA SHA256withDSA SHA512withDSA 代码演示: 总结: DSA是另一种签名算法 其他数字 阅读全文
posted @ 2019-05-22 13:53 singleSpace 阅读(318) 评论(0) 推荐(0)
廖雪峰Java10加密与安全-5签名算法-1RSA签名算法
摘要:1.数字签名 甲在发送加密消息的时候,还要发送自己的签名,而这个签名是用甲的privateKey计算的;而乙要验证这个签名是否是合法的,会用甲的publicKey去验证,如果验证成功,这个消息确实是甲发送的。 数字签名: 发送方用自己的私钥对消息进行签名:sig = signature(privat 阅读全文
posted @ 2019-05-16 22:51 singleSpace 阅读(363) 评论(0) 推荐(0)
廖雪峰Java10加密与安全-4加密算法-5非对称加密算法
摘要:1.非对称加密 非对称加密就是加密和解密使用的不是相同的密钥 方法1: 加密:用自己的私钥加密,然后发送给对方:encrypt(privateKeyA, message) s 解密:对方用自己的公钥解密:decrypt(publicKeyA, s) message 方法2: 加密:用对方的公钥加密, 阅读全文
posted @ 2019-05-15 20:20 singleSpace 阅读(311) 评论(0) 推荐(0)
廖雪峰Java10加密与安全-4加密算法-4密钥交换算法
摘要:1DH算法 1.1.原根公式:g^i mod P 条件:1 s decrypt(key,s) message 问题:如何传递密钥? 不给对方密钥,对方就不能解密;而直接传递密钥,会被黑客监听。 所以问题变成了:如果在不安全的信道上安全的传递密钥? 密钥交换算法,Differ Hellman算法,就是 阅读全文
posted @ 2019-05-14 12:47 singleSpace 阅读(523) 评论(0) 推荐(0)
廖雪峰Java10加密与安全-4加密算法-2口令加密算法
摘要:对称加密key是一个byte数组,如AES256算法的key是一个32字节的数组,普通的加密软件由用户输入加密口令。如果由用户输入口令,进行加密/解密,需要用到PBE算法。 1.PBE:Password Based Encryption 由用户输入口令,采用随机数杂凑计算出密钥再进行加密 Passw 阅读全文
posted @ 2019-05-13 21:19 singleSpace 阅读(622) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 ··· 9 下一页