摘要:
什么是线程池 在真实的生产环境中,可能需要很多的线程来支撑整个应用,当线程数量非常多时,反而会耗尽CPU资源,如果不对线程进行控制和管理,反而会影响程序的性能,线程开销主要包括: 创建与启动线程的开销 线程销毁的开销 线程调度的开销 线程数量受限CPU处理器数量 线程池就是有限使用线程的一种常用 阅读全文
摘要:
1.线程组 类似于计算机中,使用文件夹管理文件,也可以使用线程组来管理线程,在线程组中定义一组相似的线程,在在线程组中也可以定义子线程组。 Thread类有几个构造方法允许在创建线程时指定线程组,如果在创建线程时没有指定线程组,则该线程就属于父线程所在的线程组,JVM在创建main线程时会为 阅读全文
摘要:
单生产和消费模式 在Java中,负责产生数据的模块的是生产者,负责使用数据的模块是消费者,生产者消费者解决数据的平衡问题,即先有数据才能使用,没有数据时消费者需要等待。 例如:有一个饭店,它有一个厨师和一个服务员,服务员必须等厨师把菜做好了,通知到服务员才能上菜,然后返回继续等待,厨师代表生产者,服 阅读全文
摘要:
ThreadLocal的使用 除了控制资源访问外,还可以通过增加资源来保证线程安全,ThreadLocal主要解决为每个线程绑定自己的值,相当于增加了一个副本,在进行数据库访问的时候,多个线程需要自己独立的 static 成员变量吗,那就需要使用ThreadLocal。 什么是Lock显示锁 锁分为 阅读全文
摘要:
什么是等待通知机制 在单线程中,要执行的操作需要满足一定条件才能执行,可以把这个操作放在if语句块中。 在多线程编程中,可能A线程的条件没有满足只是暂时的,稍后其他的线程B可能会更新条件使得A线程的条件得以满足,可以将A线程暂停,直到它的条件得到满足之后再将A线程唤醒 Atomic{ while(条 阅读全文
摘要:
字符和字符串 1.1 ASCLL码 键盘中有一些字符数字,还有在屏幕总无法打印出来的,用于控制计算机的字符,上下键,Delete等等 由于计算机硬件只能识别0101这样的二进制数,所以用一定规则映射成0101这样的二进制数 常用控制字符共128个 =7位的二进制编码=27=128 一个bit表示0和 阅读全文
摘要:
进位计数制 1.1 最古老的技术方法 数值想要表示的数字越大,罗马数值就不行了 1.2 十进制计数法 十进制:975=9x102+7x101+5x100 1.3 r进制计数法 以小数点为中心,左边为正,右边为负,由此类推得其他进制 为什么计算机会使用二进制计数: 了使用两个稳定状态的物理器件表示 0 阅读全文
摘要:
BCD码 BCD:用二进制编码的十进制 每四个二进制数对应16种状态的十种,还剩下6种 1.1 8421码的映射关系: 985十进制数在计算机中是用:1001 1000 0101二进制位保存的 计算机中5+8 是怎么样计算的 ? 但是在8421码中没有1101这个范围,8421码中1010~1111 阅读全文
摘要:
定点数的表示 定点数:小数点的位置不固定 浮点数:小数点的位置不固定 1.1 无符号数 整个机器字长的全部二进制均为数值位,没有符号位,相当于数的绝对值 1001 1100(二进制)=156(十进制) 表示范围: 8位二进制数:28种不同状态 0000 0000 ~1111 1111=0-255=2 阅读全文
摘要:
循环冗余校验码 1.1 循环冗余校验码的基本思想 数据发送、接受方约定一个“除数”,数据出错导致余数改变,导致检测错误 K个信息位+R个校验位作为“被除数”,添加校验位后需保证除法的余数为0 收到数据后检查余数是否为0 对应CRC码:101001 001 可检测出所有奇数个错误 可检测出所有双比特的 阅读全文