🐼 Deque
type
status
date
slug
summary
tags
category
icon
password
Property
 
Queue是队列,只能一头进,另一头出。如果把条件放松一下,允许两头都进,两头都出,这种队列叫双端队列(Double Ended Queue),学名Deque
Java集合提供了接口Deque来实现一个双端队列,它的功能是:
  • 既可以添加到队尾,也可以添加到队首;
  • 既可以从队首获取,又可以从队尾获取。
 
比较QueueDeque出队和入队的方法:
notion image
对于添加元素到队尾的操作,Queue提供了add()/offer()方法,而Deque提供了addLast()/offerLast()方法。添加元素到对首、取队尾元素的操作在Queue中不存在,在Deque中由addFirst()/removeLast()等方法提供。
Deque接口实际上扩展自Queue
因此,Queue提供的add()/offer()方法在Deque中也可以使用,但是,使用Deque,最好不要调用offer() ,而是调用offerLast()
表单验证
type
status
date
slug
summary
tags
category
icon
password
Property
 
 
notion image
 
数组
type
status
date
slug
summary
tags
category
icon
password
Property
 
JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素。
要取得Array的长度,直接访问length属性:
直接给Arraylength赋一个新的值会导致Array大小的变化:
Array可以通过索引把对应的元素修改为新的值,因此,对Array的索引进行赋值会直接修改这个Array
 
如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化:
大多数其他编程语言不允许直接改变数组的大小,越界访问索引会报错。然而,JavaScript的Array却不会有任何错误。在编写代码时,不建议直接修改Array的大小,访问索引时要确保索引不会越界。
🐼 Stack
type
status
date
slug
summary
tags
category
icon
password
Property
 
栈(Stack)是一种后进先出(LIFO:Last In First Out)的数据结构。
只能不断地往Stack中压入(push)元素,最后进去的必须最早弹出(pop)来。
Stack只有入栈和出栈的操作:
  • 把元素压栈:push(E)
  • 把栈顶的元素“弹出”:pop()
  • 取栈顶元素但不弹出:peek()
 
在Java中,用Deque可以实现Stack的功能:
  • 把元素压栈:push(E)/addFirst(E)
  • 把栈顶的元素“弹出”:pop()/removeFirst()
  • 取栈顶元素但不弹出:peek()/peekFirst()
设置浏览器地址栏上的URL
type
status
date
slug
summary
tags
category
icon
password
Property
 
 
总结,有哪些方法可以通过浏览器往服务器发请求?
  1. 表单form的提交
  1. 超链接。<a href="http://localhost:8080/oa/save?username=zhangsan&password=123">用户只能点击这个超链接</a>
  1. document.location
  1. window.location
  1. window.open("url")
  1. 直接在浏览器地址栏上输入URL,然后回车(这个也可以手动输入,提交数据也可以成为动态的)
以上所有的请求方式均可以携带数据给服务器,只有通过表单提交的数据才是动态的。
 
 
🍂 进度条
type
status
date
slug
summary
tags
category
icon
password
Property
 
JProcessBar、ProcessMonitor、BoundedRangeModel实现进度条
进度条是图形界面中广泛使用的GUI 组件,当复制一个较大的文件时,操作系统会显示一个进度条,用于标识复制操作完成的比例 : 当启动 Eclipse 等程序时, 因为需要加载较多的资源 , 故而启动速度较慢 , 程序也会在启动过程中显示一个进度条 , 用以表示该软件启动完成的比例 ……

创建进度条

使用JProgressBar创建进度条的步骤:
  1. 创建JProgressBar对象
    1. 设置属性
      1. 获取和设置当前进度条的进度状态
         
        🦛 Concurrent集合
        type
        status
        date
        slug
        summary
        tags
        category
        icon
        password
        Property
         
        前面已经通过ReentrantLockCondition实现了一个BlockingQueue
        BlockingQueue的意思就是说,当一个线程调用这个TaskQueuegetTask()方法时,该方法内部可能会让线程变成等待状态,直到队列条件满足不为空,线程被唤醒后,getTask()方法才会返回。
        因为BlockingQueue非常有用,所以我们不必自己编写,可以直接使用Java标准库的java.util.concurrent包提供的线程安全的集合:ArrayBlockingQueue
        除了BlockingQueue外,针对ListMapSetDeque等,java.util.concurrent包也提供了对应的并发集合类。归纳一下:
        notion image
        使用这些并发集合与使用非线程安全的集合类完全相同。我们以ConcurrentHashMap为例:
        因为所有的同步和加锁的逻辑都在集合内部实现,对外部调用者来说,只需要正常按接口引用,其他代码和原来的非线程安全代码完全一样。即当我们需要多线程访问时,把:
        改为:
        🍃 AWT中常用组件
        type
        status
        date
        slug
        summary
        tags
        category
        icon
        password
        Property
         

        基本组件

        notion image
        notion image
         
         

        对话框Dialog

        Dialog 是 Window 类的子类,是 一个容器类,属于特殊组件 。 对话框是可以独立存在的顶级窗口, 因此用法与普通窗口的用法几乎完全一样,但是使用对话框需要注意下面两点:
        • 对话框通常依赖于其他窗口,就是通常需要有一个父窗口;
        • 对话框有非模式(non-modal)和模式(modal)两种,当某个模式对话框被打开后,该模式对话框总是位于它的父窗口之上,在模式对话框被关闭之前,父窗口无法获得焦点。
        notion image
        用户注册的表单
        type
        status
        date
        slug
        summary
        tags
        category
        icon
        password
        Property
        notion image