11 2016 档案
摘要:Thread: 窗口1卖掉了1张票,剩余票数为:4 窗口1卖掉了1张票,剩余票数为:3 窗口1卖掉了1张票,剩余票数为:2 窗口1卖掉了1张票,剩余票数为:1 窗口1卖掉了1张票,剩余票数为:0 窗口3卖掉了1张票,剩余票数为:4 窗口2卖掉了1张票,剩余票数为:4 窗口3卖掉了1张票,剩余票数为:
阅读全文
摘要:代码: 2代: using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Text; using System.Web; using NPOI.HPSF; usin
阅读全文
摘要:思路1:可以用hash表来存储数组中的元素,这样我们取得一个数后,去判断sum - val 在不在数组中,如果在数组中,则找到了一对二元组,它们的和为sum,该算法的缺点就是需要用到一个hash表,增加了空间复杂度。 思路2:同样是基于查找,我们可以先将数组排序,然后依次取一个数后,在数组中用二分查
阅读全文
摘要:Java的Object类 调用这些方法的当前线程必须拥有此对象监视器,否则将会报java.lang.IllegalMonitorStateException exception wait; Object的wait方法有三个重载方法,其中一个方法wait() 是无限期(一直)等待,直到其它线程调用no
阅读全文
摘要:在什么情况下使用线程池? 1.单个任务处理的时间比较短 2.将需处理的任务的数量大 使用线程池的好处: 1. 降低资源消耗: 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。2. 提高响应速度: 当任务到达时,任务可以不需要等到线程创建就能立即执行。3. 提高线程的可管理性: 线程是稀缺资源,
阅读全文
摘要:类的加载: 类的初始化: 类什么时候才被初始化:1)创建类的实例,也就是new一个对象2)访问某个类或接口的静态变量,或者对该静态变量赋值3)调用类的静态方法4)反射(Class.forName("com.lyj.load"))5)初始化一个类的子类(会首先初始化子类的父类)6)JVM启动时标明的启
阅读全文
摘要:Java的内存分配和回收也主要在Java的堆上进行的,Java的堆中存储了大量的对象实例,所以Java的堆也叫GC堆。 Java在垃圾收集的过程中,主要用到了分代收集算法,具体有复制、标记清除、标记压缩三种实现算法 1. 标记 - 清除算法 标记清除算法是最基础的收集算法,其他收集算法都是基于这种思
阅读全文
摘要:在String类中 native关键字是干嘛的? Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。 可以将native方法比作Java程序同C程序的接口 这
阅读全文
摘要:Lock与Synchronized的区别: 1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现; 2)synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLo
阅读全文
摘要:同步阻塞io(BIO)、伪异步io(PIO)、非阻塞io(NIO)、异步io(AIO)的概念及区别? 同步阻塞io(BIO):服务器端与客户端通过三次握手后建立连接,连接成功,双方通过I/O进行同步阻塞式通信。 弊端:1,读和写操作是同步阻塞的,任何一端出现网络性能问题,都会影响另一方。2,一个链路
阅读全文
摘要:Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。 从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实
阅读全文
摘要:在JDK1.8的Iterator接口中 发现多了default修饰的具体的实现方法。 因为接口有语法限制,所以要直接改变/扩展接口内的方法变得非常困难。 在尝试强化Java 8 Collections API,让其支持lambda表达式的时候,就面临了这样的挑战。为了克服这个困难,Java 8中引入
阅读全文
摘要:Map:键必须是唯一 同步方法:Map m = Collections.synchronizedMap(new TreeMap(...)); Hashtable:基于散列表的实现 允许空键空值 线程安全 HashMap:基于散列表的实现 允许空键空值 线程不安全 (与Hashtable基本一致) T
阅读全文
摘要:一、List:、有顺序以线性方式存储,可以存放重复对象 线程安全方法:List list = Collections.synchronizedList(new LinkedList(...)); LinkedList:双向链表实现存储 索引数据慢插入数度较快 线程不安全(比安全性能好) ArrayL
阅读全文
摘要:Set:无顺序,不包含重复的元素 HashSet:为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。 TreeSet: 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。 LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素
阅读全文
摘要:一、List:、有顺序以线性方式存储,可以存放重复对象 线程安全方法:List list = Collections.synchronizedList(new LinkedList(...)); LinkedList:双向链表实现存储 索引数据慢插入数度较快 线程不安全(比安全性能好) ArrayL
阅读全文
摘要:通过分析Hashtable就知道,synchronized是针对整张Hash表的,即每次锁住整张表让线程独占, ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。 ConcurrentHashMap内部使用段
阅读全文
摘要:synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这
阅读全文
摘要:ifconfig eth0 192.168.1.223 切换到root账号开始是$符号输入su输入root密码转换成# 就变成了root账号 dr 查看盘符ls /etc/ 查看etc文件夹下面的文件ls /bin/ 查看bin文件夹下面的文件 ls 对应 list ls -a 查询所有的文件 a是
阅读全文
摘要:HashMap: 在这里提到了两个参数:初始容量,加载因子。 这两个参数是影响HashMap性能的重要参数,其中容量表示哈希表中桶的数量,初始容量是创建哈希表时的容量, 加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度,它衡量的是一个散列表的空间的使用程度,负载因子越大表示散列表的装填程度
阅读全文
摘要:HashMap中的put方法 key为null: 获取Entry的第一个元素table[0],并基于第一个元素的next属性开始遍历,直到找到key为null的Entry,将其value设置为新的value值。如果没有找到key为null的元素,则调用如上述代码的addEntry(0, null,
阅读全文
摘要:idea可以自动优化导入包,但是有多个同名的类调用不同的包,必须自己手动Alt+Enter设置 设置idea导入包 勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用到的包。 勾选标注 2 选项,IntelliJ IDEA 将在我们书
阅读全文