next

Stop Iteration error when using next()

做~自己de王妃 提交于 2021-02-09 09:27:44
问题 I am not able to clarify my self over the use of next() in python(3). I have a data : chr pos ms01e_PI ms01e_PG_al ms02g_PI ms02g_PG_al ms03g_PI ms03g_PG_al ms04h_PI ms04h_PG_al 2 15881989 4 C|C 6 A|C 7 C|C 7 C|C 2 15882091 4 A|T 6 A|T 7 T|A 7 A|A 2 15882148 4 T|T 6 T|T 7 T|T 7 T|G and I read it like: Works fine c = csv.DictReader(io.StringIO(data), dialect=csv.excel_tab) print(c) print(list(c)) Works fine c = csv.DictReader(io.StringIO(data), dialect=csv.excel_tab) print(c) keys = next(c)

Stop Iteration error when using next()

纵饮孤独 提交于 2021-02-09 09:17:17
问题 I am not able to clarify my self over the use of next() in python(3). I have a data : chr pos ms01e_PI ms01e_PG_al ms02g_PI ms02g_PG_al ms03g_PI ms03g_PG_al ms04h_PI ms04h_PG_al 2 15881989 4 C|C 6 A|C 7 C|C 7 C|C 2 15882091 4 A|T 6 A|T 7 T|A 7 A|A 2 15882148 4 T|T 6 T|T 7 T|T 7 T|G and I read it like: Works fine c = csv.DictReader(io.StringIO(data), dialect=csv.excel_tab) print(c) print(list(c)) Works fine c = csv.DictReader(io.StringIO(data), dialect=csv.excel_tab) print(c) keys = next(c)

201771010113 李婷华 《面向对象程序设计(Java)》第八周总结

假装没事ソ 提交于 2021-02-09 09:02:29
一.理论知识部分 1.Java 为了克服单继承的缺点, Java 使用了接口, 一个类可以实现一个或多个接口。 2. 在 Java 程序设计语言中,接口不是类,而是对类 的一组需求描述,由常量和一组抽象方法组成。 接口中不包括变量和具体实现的方法。 3. 只要类实现了接口,则该类要遵从接口描述的统 一格式进行定义,并且可以在任何需要该接口的 地方使用这个类的对象。 4. 接口声明方式: public interface 接口名。 接口体中包含常量定义和方法定义,接口中只进 行方法的声明,不提供方法的实现。 类似建立类的继承关系,接口也可以扩展。 5. 接口的 扩展方法: public interface 接口 1 extends 接口 2 6. ( 1 )通常接口的名字以 able 或 ible 结尾; ( 2 )可以使用 extends 来继承接口的常量和抽象方 法,扩展形成新的接口; ( 3 )接口中的所有常量必须是 public static final ,方法必须是 public abstract ,这是 系统默认的,不管你在定义接口时,写不写 修饰符都是一样的。 7.接口的实现:在类声明时用 implements 关键字声明使用一个或 多个接口。 一个类使用了某个接口,那么这个类必须实现该 接口的所有方法,即为这些方法提供方法体。 一个类可以实现多个接口

PlanetTogether APS安装与配置

别来无恙 提交于 2021-02-09 08:18:34
一、 PT 安装 1、PT Server与Client的下载 下载网址: https://download.planettogether.com/ 2、 安装 .net framework 4.6.2 安装 PT Server与PT 客户端,前提是安装.net framework4.6.2(文件名:NDP462-KB3151800-x86-x64-AllOS-ENU),下载链接为: https://www.microsoft.com/zh-cn/download/details.aspx?id=53345 ;如果是在 Windows Server2012的系统下安装.net framework4.6.2需要安装更新KB2919355,可以在控制面板中检查更新并安装对应的更新,也可以在网站下载(下载网址: https://www.microsoft.com/en-us/download/details.aspx?id=42334 ),离线安装,这个更新大小为 690M,安装比较慢;然而安装KB2919355的先决条件是需要先安装更新KB2919442(下载网址: https://www.microsoft.com/en-us/download/details.aspx?id=42153 ),否则有可能安装 KB2919355提示“此更新不适用你的计算机”;确保安装上.net

ES6 Map 原理

霸气de小男生 提交于 2021-02-09 08:05:01
ES6的Map的键可以是任意的数据结构,并且不重复。 那么map的底层原理是啥呢? Map利用链表,hash的思想来实现。 首先,Map可以实现删除,而且删除的数据可以是中间的值。而链表的优势就是在中间的任意位置添加,删除元素都非常快,不需要移动其他元素,直接改变指针的指向就可以。 。 而在存储数据很多的情况下,会导致链条过长,导致查找效率慢,所以我们可以创建一个桶(存储对象的容器),根据hash(把散列的值通过算法变成固定的某值)来平局分配数据,防止链条过长。 如下图:桶里面有3个位置,每一个位置都是一个对象,通过next属性指向下一个对象来把没有关联的对象联到一起。 把Map属性值和属性名都存到对象的值里。 简单模拟Map,代码如下: function Mymap() { //构造函数 this.init(); } //初始化函数,创建桶(数组),每个位置都是一个对象,每个对象的属性上设置next属性,并且初始化为null。 Mymap.prototype.init = function () { this.tong = new Array(8); for (var i = 0; i < 8; i++) { this.tong[i] = new Object(); this.tong[i].next = null; } }; //添加数据。 Mymap.prototype

scrapy-Redis 分布式爬虫

扶醉桌前 提交于 2021-02-09 00:10:48
案例1 :(增量式爬取)京东全部图书,自己可以扩展 爬取每一本电子书的评论 1.spider: # -*- coding: utf-8 -*- import scrapy from copy import deepcopy import json import urllib class JdSpider(scrapy.Spider): name = ' jd ' allowed_domains = [ ' jd.com ' , ' p.3.cn ' ] start_urls = [ ' https://book.jd.com/booksort.html ' ] def parse(self, response): dt_list = response.xpath( " //div[@class='mc']/dl/dt " ) # 大分类列表 for dt in dt_list: item = {} item[ " b_cate " ] = dt.xpath( " ./a/text() " ).extract_first() em_list = dt.xpath( " ./following-sibling::dd[1]/em " ) # 小分类列表 for em in em_list: item[ " s_href " ] = em.xpath( " ./a/@href " )

vite2 vue3-ts 添加router, vuex和alias

旧街凉风 提交于 2021-02-08 23:36:34
原文链接: vite2 vue3-ts 添加router, vuex和alias 安装 yarn add vue-router@4 yarn add vuex@next https://next.vuex.vuejs.org/installation.html https://github.com/vuejs/vue-router-next https://next.router.vuejs.org/ https://next.vuex.vuejs.org/installation.html vuex store import { createStore } from "vuex"; const defaultState = { count: 0, }; const store = createStore({ state() { return defaultState; }, mutations: { increment(state: typeof defaultState) { state.count++; }, }, getters: { double(state: typeof defaultState) { return 2 * state.count; }, }, }); export default store; app.vue <template> <el

scrapy和scrapy-redis的区别

血红的双手。 提交于 2021-02-08 23:03:55
scrapy是一个python爬虫框架,爬取的效率极高,具有高度的定制性,但是不支持分布式。而scrapy-redis是一套基于redis库,运行在scrapy框架之上的组件,可以让scapy支持分布式策略 Slaver端共享Master端redis数据库里的item 队列、请求队列和请求指纹集合。 选择redis数据库的原因:   redis支持主从同步,而且数据都是缓存在内存中的,所以基于redis的分布式爬虫,对请求和数据的高频率读取效率都非常高     scrapy-redis和scrapy的关系就像电脑和固态硬盘一样,是电脑中的一个插件,能让电脑更快的运行     scrapy是一个爬虫框架,scrapy-redis则是这个框架上可以选择的插件,它可以让爬虫跑得更 解释说明: 从优先级队列中获取requests对象,交给engine engine将requests对此昂交给下载器下载,期间会通过downlomiddleware的process_request方法 下载器完成下载,获得response对象,将该对象交给engine,期间会经过downloadmiddleware的process_response()方法 engine将获得的response对象交给spider进行解析,期间会经过spidermiddleware的process_spider_input(

面试题思考:java中快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?

三世轮回 提交于 2021-02-08 21:05:42
一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。 原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变modCount的值。每当迭代器使用hashNext()/next()遍历下一个元素之前,都会检测modCount变量是否为expectedmodCount值,是的话就返回遍历;否则抛出异常,终止遍历。 注意:这里异常的抛出条件是检测到 modCount!=expectedmodCount 这个条件。如果集合发生变化时修改modCount值刚好又设置为了expectedmodCount值,则异常不会抛出。因此,不能依赖于这个异常是否抛出而进行并发操作的编程,这个异常只建议用于检测并发修改的bug。 场景:java.util包下的集合类都是快速失败的,不能在多线程下发生并发修改(迭代过程中被修改)。 二:安全失败(fail—safe) 采用安全失败机制的集合容器,在遍历时不是直接在集合内容上访问的,而是先复制原有集合内容,在拷贝的集合上进行遍历。 原理:由于迭代时是对原集合的拷贝进行遍历,所以在遍历过程中对原集合所作的修改并不能被迭代器检测到

栈(基于数组&基于链表)与队列(基于数组&基于链表)

微笑、不失礼 提交于 2021-02-08 17:11:59
一、栈     1、栈(stack)是一种线性存储结构 栈中的数据元素遵守先进后出的原则,FILO结构 限定只能在栈顶进行插入与删除操作 栈的操作包括压栈出栈     2、栈的常用操作 压栈(push) 弹栈或出站(pop) 求栈的大小 判断栈是否为空 获取栈顶元素的值     3、栈的常见分类 基于数组的栈,以数组为底层数据结构,通常以数组头为栈底,数组头到数组尾为栈顶的生长方向 基于单链表的栈,以链表为底层的数据结构时,以链表头为栈顶,便于节点的插入与删除,压栈产生的结点将一直出现在链表的头部     4、使用标准库的栈时,需要包含对应的头文件, 1 #include<stack> 2 stack< int > s; 3 s.empty(); 4 s.size(); 5 s.top(); 6 s.push(); 7 s.pop(); 基于数组的栈 1 #include <stack> 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 stack< int > mystack; 8 int sum = 0 ; 9 for ( int i = 0 ; i <= 10 ; i++ ){ 10 mystack.push(i); 11 } 12 cout << " size is " << mystack