
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
MySql的索引是一种数据结构。它可以帮助数据库地查询、更新数据表中的数据。它类似于书籍的目录,通过指向数据行的位置,可以快速定位和访问表中的数据。那为什么使用索引呢?主要就是提升数据检索的效率刚才提到索引是一种数据结构,那它选择的是哪种数据结构呢?让我们一个一个地来看一下吧。
大堆的话,就把当前的最大值放到数组最后了(升序:由小到大),小堆就把当前的最小值放到数组最后(降序:由大到小)。与此同时的是,把值放到数组最后。可能会对堆的结构造成破环,所以需要继续向下调整,循环往复。这里升序排序代码:运行结果:时间复杂度:O(NlogN)空间复杂度:O(1)稳定性:不稳定(由于堆排序,最核心的操作是“建堆”,一旦建堆,原来值相同的元素,就不知道被调整到哪里了,它们之间的相对顺序
lambda是回调函数,它的执行时机是很久之后(操作系统真正创建出线程之后,才会执行),很有可能,后续线程创建好了,但是当前main的方法执行完了,isFinished销毁了。为了解决上述的问题,Java把被捕获的变量给拷贝一份,拷贝给lambda里面,所以外面的变量是否销毁,就不会影响lambda里面的执行了。但是,Thread对象的生命周期和系统中的线程的生命周期是不同的(可能存在Thread
当前IO流对象,read和write属于直接读写文件,效率比较低,要想提高效率:1)写代码的时候,手动创建缓冲区(byte[]),手动减少 read write次数2)使用标准库提供的“缓冲区流” BufferedStream,把InputStream之类的对象套上一层OK啦,到此结束!!!
既然要模拟阻塞队列,就得满足阻塞队列的特性,先来满足第一个线程安全的特性代码示例:当然也可以不用this,新建一个锁对象啥的也可以接下来,就得满足阻塞队列的第二个很长的特性了,就需要使用“wait 和 join了”对于入队,代码示例:所以:对于出队,代码示例:所以:假设有若干个线程使用这个队列,要么所有的线程阻塞在put,要么所有的线程阻塞在take,不可能有一些阻塞在put,有一些阻塞在take
既然要模拟阻塞队列,就得满足阻塞队列的特性,先来满足第一个线程安全的特性代码示例:当然也可以不用this,新建一个锁对象啥的也可以接下来,就得满足阻塞队列的第二个很长的特性了,就需要使用“wait 和 join了”对于入队,代码示例:所以:对于出队,代码示例:所以:假设有若干个线程使用这个队列,要么所有的线程阻塞在put,要么所有的线程阻塞在take,不可能有一些阻塞在put,有一些阻塞在take
通过多进程编程的方式,可以实现“并发编程”的效果。进程整体是一个比较“重”的概念,创建进程/销毁进程 开销比较大,尤其是频繁创建进程的时候(服务器开发)。所以为了解决问题,引入了线程(Thread),轻量级进程(创建 销毁的开销比较小)。







