1、同步异步的概念
在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
临界区、互斥、信号量和事件:
临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资 源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。
互斥量:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享 .互斥量比临界区复杂。因为使用互斥不仅仅能够在同一应用程序不同线程中实现资源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享。
信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目 。信号量对象对线程的同步方式与前面几种方法不同,信号允许多个线程同时使用共享资源,这与操作系统中的PV操作相同。它指出了同时访问共享资源的线程最大数目。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。
事件:通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作 。
2、多线程的生产者消费者模型
生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列(这里可以考虑线程池,优化性能),消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,这个缓冲区是需要加锁的,以此平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。
3、重入锁、信号量
所谓重入锁,指的是以线程为单位,当一个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,而其他的线程是不可以的。注意三点:
*synchronized 和 ReentrantLock 都是可重入锁
*可重入锁的意义在于防止死锁
*实现原理实现是通过为每个锁关联一个请求计数和一个占有它的线程
信号量不一定是锁定某一个资源,而是流程上的概念,比如:有A,B两个线程,B线程要等A线程完成某一任务以后再进行自己下面的步骤,这个任务 并不一定是锁定某一资源,还可以是进行一些计算或者数据处理之类。
互斥量用于线程的互斥,信号量用于线程的同步,信号量还能用于进程间通信
4、数据库的作用
数据库将各种数据有序的管理起来,并对其他应用提供统一的接口和服务。
数据库的主要作用是:存储信息、结构化数据、提供索引快速查询
5、对称加密与非对称加密
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)
非对称加密为数据的加密与解密提供了一个更安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。
比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。目前最常用的非对称加密算法是RSA算法。
6、数字签名、ssl、https
数字摘要就是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。“数字摘要“是https能确保数据完整性和防篡改的根本原因。
数字签名技术就是对“非对称密钥加解密”和“数字摘要“两项技术的应用,它将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性(注意,数字签名只能验证数据的完整性,数据本身是否加密不属于数字签名的控制范围)。
还有漏洞存在的可能么?有,漏洞不在数字签名技术本身,而在它所依赖的密钥,只有密钥是真实可靠的前提下,使用数字签名才是安全有效的。考虑这种可能的情况:在上述发送方向接收方传送报文的例子中,如果发送方所持有的公钥来路有问题或是被替换了,那么,持有对应私钥的冒充接受方就有可能接收到发送方发送的报文。
我们需要有一个权威的值得信赖的第三方机构(一般是由政府审核并授权的机构)来统一对外发放主机机构的公钥,只要请求方这种机构获取公钥,就避免了上述问题的发生。这种机构被称为证书权威机构(Certificate Authority, CA),它们所发放的包含主机机构名称、公钥在内的文件就是人们所说的“数字证书”。
SSL协议在握手阶段使用的是非对称加密,在传输阶段使用的是对称加密,也就是说在SSL上传送的数据是使用对称密钥加密的!这并不奇怪,因为非对称加密的速度缓慢,耗费资源。https则是ssl+http的实现。
7、hash散列与非对称加密
对称加密(DES、3DES、AES),(可逆)
在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥,而这样在分布式网络系统中,每对用户使用对称加密算法时,都需要使用其他人不知道且惟一的密钥,这就会使得发收信双方所拥有的密钥数量成几何级数增长,密钥的管理便成为用户的负担。
特点:算法公开、计算量小、加密速度快、加密效率高,但安全性得不到保证及密钥管理繁琐
非对称加密(RSA、DSA、ECC),( 可逆)
在非对称加密算法中,使用一对公钥和私钥。公钥用于加密文件,私钥用于解密文件。在发信方向收信方发送密钥时,就只需要知道收信方的公钥,然后用收信方的公钥来加密文件即可,而收信方也只有用其公钥对应的私钥才能解密文件。
特点:安全性得到了提升,密钥的管理也变得轻松了很多
散列算法(MD5、SHA),(不可逆)
散列算法是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。这样安全性得到了进一步的提升,但加密性强的散列一定是不可逆的,意思是说通过散列结果,无法推出任何部分的原始信息。
网友评论