遍历

Linux事件驱动IO中select vs epoll

匿名 (未验证) 提交于 2019-12-02 21:56:30
背景 select 和epoll的背景不同,select是POSIX标准,代码移植性好,epoll是Linux标准,代码可移植性只在Linux操作系统之间。 触发条件 select只支持条件触发(level-triggered),epoll支持条件触发和边缘触发。   条件触发(level-triggered):当条件满足时,发生一个I/O事件。   边缘触发(edge-triggered):当状态改变时,发生一个I/O事件。 条件触发对编码代码的要求低,不容易丢事件,在大流量,高并发的环境下,效率不好,只要有数据没有处理,内核不断的通知你。 边缘触发,代码编写复杂,需要防止丢失事件,容易发生事件丢失的情况。 对文件描述符的处理 select最大支持1024个文件描述符,选择描述符时,遍历所有的描述符才能获取到哪些描述符有事件通知,效率低。 epoll对于描述符事件的选择不是遍历,是事件响应的,描述符上事件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高。 来源:博客园 作者: 好吧,就是菜菜 链接:https://www.cnblogs.com/shuiyonglewodezzzzz/p/11495161.html

Jquery遍历数组

匿名 (未验证) 提交于 2019-12-02 21:53:52
$().each()方法: $("ul>li>input:checked").each(function(i,el){ $(this).prop("checked",true); }); 在一个列表中,循环每一项用each是不错的,索引,元素都给遍历出来。 $.each()方法: 1. 处理一维数组,代码如下: $.each(["a","b","c"],function(i,el){ console.log(i+':'+el); }); 控制台输出:0:a 1:b 2:c 2.处理二维数组,代码如下: $(function () { $.each([["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]], function (i, el) { console.log(i+ ":" + el); //输出0:a,b,c 1:d,e,f 2:g,h,i 这时的i为数组下标,el相当于取这二维数组中的每一个数组 $.each(el, function (index, itemobj) { console.log(index + ":" + itemobj); }); }); //输出0.:a,b,c 0:a 1:b 2:c 1:d,e,f 0:d 1:e 2:f 2:g,h,i 0:g 1:h 2:i }); 3.该方法处理json数组

数组的遍历你都会用了,那Promise版本的呢

匿名 (未验证) 提交于 2019-12-02 21:53:52
这里指的遍历方法包括: map 、 reduce 、 reduceRight 、 forEach 、 filter 、 some 、 every 因为最近要进行了一些数据汇总, node 版本已经是8.11.1了,所以直接写了个 async/await 的脚本。 但是在对数组进行一些遍历操作时,发现有些遍历方法对 Promise 的反馈并不是我们想要的结果。 当然,有些严格来讲并不能算是遍历,比如说 some , every 这些的。 但确实,这些都会根据我们数组的元素来进行多次的调用传入的回调。 这些方法都是比较常见的,但是当你的回调函数是一个 Promise 时,一切都变了。 async/await Ϊ Promise 的语法糖 文中会直接使用 async/await 替换 Promise 1 let result = await func() 2 // => 等价于 3 func().then(result => { 4 // code here 5 }) 6 7 // ====== 8 9 async function func () { 10 return 1 11 } 12 // => 等价与 13 function func () { 14 return new Promise(resolve => resolve(1)) 15 } map map 可以说是对

java Listlterator和Iterator区别

匿名 (未验证) 提交于 2019-12-02 21:53:52
Listlterator和Iterator区别 不同点: 使用范围不同,Iterator可以应用于所有的集合,Set、List和Map和这些集合的子类型。而ListIterator只能用于List及其子类型。 ListIterator有add方法,可以向List中添加对象,而Iterator不能。 ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator不可以。 ListIterator可以定位当前索引的位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。 都可实现删除操作,但是ListIterator可以实现对象的修改,set()方法可以实现。Iterator仅能遍历,不能修改。 文章来源: java Listlterator和Iterator区别

Java List、Set和Map的区别及详细分析

匿名 (未验证) 提交于 2019-12-02 21:53:52
List:元素有放入顺序,元素可重复,和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。 Set:元素无放入顺序,元素不可重复,重复元素会覆盖掉,检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。(注意:元素虽然无放入顺序,但是元素在set中的位置是由该元素的HashCode决定的,其位置其实是固定的,加入Set 的Object必须定义equals()方法 ,另外list支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想要的值。) Map:适合存储键-值对的数据 List,Set都是继承自Collection接口,Map则不是 List List是继承于Collection接口,List是一个有序的集合,List允许存储项的值为空,也允许存储相等值的存储项。 List主要分为三类: ArrayList 、 LinkedList 和 Vector ArrayList :ArrayList是一个数组实现的列表,由于数据是存入数组中的,所以它的特点也和数组一样,查询很快,但是中间部分的插入和删除很慢,适用于多查找的场景; Vector :Vector就是ArrayList的线程安全版,它的方法前都加了synchronized锁,其他实现逻辑都相同;

《Java数据结构和算法》- 链表

匿名 (未验证) 提交于 2019-12-02 21:53:52
Q: 为什么要引入链表的概念?它是解决什么问题的? 数组作为数据存储结构有一定的缺陷,在无序数组中,搜索是低效的;而在有序数组中,插入效率又很低;不管在哪一个数组中删除效率都很低;况且一个数组创建后,它的大小是不可改变的。 在本篇中,我们将学习一种新的数据结构 ―― 链表,它可以解决上面的一些问题,链表可能是继数组之后第二种使用最广泛的通用存储结构了。 Q: 结点? 定义单链表结点的类定义如下: class Entry<E> { E mElement; Entry<E> mNext; public Entry(E element, Entry<E> next) { mElement = element; mNext = next; } } Q: 单链表? 构成链表的结点只有一个指向后继结点的指针域。 Q: 单链表的Java实现? 示例: SingleLinkedList.java LinkedList类只包含一个数据项mHeader,叫做表头:即对链表中第一个节点的引用。它是唯一的链表需要维护的永久信息,用以定位所有其他的链接点。从mHeader出发,沿着链表通过每个结点的mNext字段,就可以找到其他的结点。 注意,removeFirst()方法假定链表不是空的,因此调用它之前,应该首先调用empty()方法核实这一点。 Q: 如何查找和删除指定的结点? indexOf

Java Map遍历方式的选择

匿名 (未验证) 提交于 2019-12-02 21:53:52
1. 阐述   对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多。理由是:entrySet方法一次拿到所有key和value的集合;而keySet拿到的只是key的集合,针对每个key,都要去Map中额外查找一次value,从而降低了总体效率。那么实际情况如何呢?   为了解遍历性能的真实差距,包括在遍历key+value、遍历key、遍历value等不同场景下的差异,我试着进行了一些对比测试。 2. 对比测试   一开始只进行了简单的测试,但结果却表明keySet的性能更好,这一点让我很是费解,不都说entrySet明显好于keySet吗?为了进一步地进行验证,于是采用了不同的测试数据进行更详细的对比测试。 2.1 测试数据 2.1.1 HashMap测试数据 HashMap-1,大小为100万,key和value均为String,key的值为1、2、3……1000000: Map<String, String> map = new HashMap<String, String>(); String key, value; for (i = 1; i <= num; i++) { } HashMap-2,大小为100万,key和value均为String,key的值为50、100、150、200、……、50000000: Map

Java集合面试题

匿名 (未验证) 提交于 2019-12-02 21:53:52
Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。 随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。 集合框架的部分优点如下: (1)使用核心集合类降低开发成本,而非实现我们自己的集合类。 (2)随着使用经过严格测试的集合框架类,代码质量会得到提高。 (3)通过使用JDK附带的集合类,可以降低代码维护成本。 (4)复用性和可操作性。 Java集合框架的基础接口有哪些? Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口任何直接的实现。 Set 是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。 List 是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List更像长度动态变换的数组。 Map 是一个将key映射到value的对象.一个Map不能包含重复的key:每个key最多只能映射一个value。 一些其它的接口有Queue、Dequeue、SortedSet

Java之递归遍历文件目录

匿名 (未验证) 提交于 2019-12-02 21:53:52
levels 记录层数,用于控制深一层文件前的空格数量 public class DirectorList { private static Scanner sc; public static void main(String[] args) { String route = getRoute(); File file = new File(normRoute(route)); System.out.println(file.getName()); showFile(file, 1); } /* * 利用递归遍历所有子目录,levels记录文件夹的层数(控制空格长度,模拟分层效果 ) */ public static void showFile(File files,int levels){ //获取所有的文件列表 File[] arrFiles = files.listFiles(); String str = ""; //每向下延伸一层,文件前增加一层 for (int i = 0; i < levels; i++) { str += " "; } //增强for遍历文件数组 for (File childFile : arrFiles) { System.out.println(str + childFile.getName()); //如果file是目录,递归调用 if