info

scala中的Type使用

本小妞迷上赌 提交于 2020-02-29 21:56:51
trait Base { val name: String } case class S( name: String, age: Int ) extends Base case class F( name: String, tel: Long ) extends Base case class Info[T <: Base]( b: T, time: String ) object Test extends App { override def main(String args): Unit = { val i = Info(F("Jim", 23212341), "15:15:30") i match { case info @ Info(b: F, time) => println(s"F info: $info") case info @ Info(b: S, time) => println(s"S info: $info") } } } 一、scala 使用 generic 通用类型如何做模式匹配 上述的case class Info在模式匹配时,需要使用 case info @ Info(b: S, time) => 代替传统的 case info:Info => 如果用下面的,编译时会有警报 non variable type-argument String in

Spring Boot 2.0 WebFlux 快速入门实践

*爱你&永不变心* 提交于 2020-02-29 17:16:57
02:WebFlux 快速入门实践 Spring Boot 2.0 spring.io 官网有句醒目的话是: BUILD ANYTHING WITH SPRING BOOT Spring Boot (Boot 顾名思义,是引导的意思)框架是用于简化 Spring 应用从搭建到开发的过程。应用开箱即用,只要通过一个指令,包括命令行 java -jar 、 SpringApplication 应用启动类 、 Spring Boot Maven 插件等,就可以启动应用了。另外,Spring Boot 强调只需要很少的配置文件,所以在开发生产级 Spring 应用中,让开发变得更加高效和简易。目前,Spring Boot 版本是 2.x 版本。Spring Boot 包括 WebFlux。 Spring Boot 2.0 WebFlux 了解 WebFlux ,首先了解下什么是 Reactive Streams。Reactive Streams 是 JVM 中面向流的库标准和规范: 处理可能无限数量的元素 按顺序处理 组件之间异步传递 强制性非阻塞背压(Backpressure) Backpressure(背压) 背压是一种常用策略,使得发布者拥有无限制的缓冲区存储元素,用于确保发布者发布元素太快时,不会去压制订阅者。 Reactive Streams(响应式流) 一般由以下组成: 发布者

ListView中getView的原理+如何在ListView中放置多个item

烂漫一生 提交于 2020-02-29 16:59:51
ListView 和 Adapter 的基础 工作原理: ListView 针对List中每个item,要求 adapter “给我一个视图” (getView)。 一个新的视图被返回并显示 如果我们有上亿个项目要显示怎么办?为每个项目创建一个新视图?NO!这不可能! 实际上Android为你缓存了视图。 Android中有个叫做Recycler的构件,下图是他的工作原理: 如果你有10亿个项目(item),其中只有可见的项目存在内存中,其他的在Recycler中。 ListView先请求一个type1视图(getView)然后请求其他可见的项目。convertView在getView中是空(null)的。 当item1滚出屏幕,并且一个新的项目从屏幕低端上来时,ListView再请求一个type1视图。convertView此时不是空值了,它的值是item1。你只需设定新的数据然后返回convertView,不必重新创建一个视图。 请看下面的示例代码,这里在getView中使用了System.out进行输出 public class MultipleItemsList extends ListActivity { private MyCustomAdapter mAdapter; @Override public void onCreate(Bundle

Python爬虫进阶 | 某音字体反爬分析

痴心易碎 提交于 2020-02-29 16:55:28
字体反爬案例 爬取一些网站的信息时,偶尔会碰到这样一种情况:网页浏览显示是正常的,用 python 爬取下来是乱码,F12用开发者模式查看网页源代码也是乱码。这种一般是网站设置了字体反爬。 1. 准备url 网址: https://www.iesdouyin.com/share/user/88445518961 2. 获取数据 分析字体加密方式 任务:爬取个人信息展示页中的关注、粉丝人数和点赞数据,页面内容如图 下 所示。 在编写代码之前,我们需要确定目标数据的元素定位。定位时,我们在 HTML 中发现了一些奇怪的符号,HTML 代码如下: 页面中重要的数据都是一些奇怪的字符,本应该显示数字的地方在 HTML 中显示的是""。 要注意的是,Chrome 开发者工具的元素面板中显示的内容不一定是相应正文的原文,要想知道 "" 符号是什么,还需要到网页源代码中确认。对应的网页源代码如下: </span><span class="follower block"> <span class="num"> <i class="icon iconfont follow-num">  </i> <i class="icon iconfont follow-num">  </i> <i class="icon iconfont follow-num">  </i> <i class=

【python模块】logging模块

三世轮回 提交于 2020-02-29 16:52:31
Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,Socket等,甚至可以自己实现具体的日志记录方式。 模块提供logger,handler,filter,formatter。 logger:提供日志接口,供应用代码使用。logger最长用的操作有两类:配置和发送日志消息。可以通过logging.getLogger(name)获取logger对象,如果不指定name则返回root对象,多次使用相同的name调用getLogger方法返回同一个logger对象。 handler:将日志记录(log record)发送到合适的目的地(destination),比如文件,socket等。一个logger对象可以通过addHandler方法添加0到多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。 filter:提供一种优雅的方式决定一个日志记录是否发送到handler。 formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。 1、简单的将日志打印到屏幕 import logging logging.debug('This

MySQL AHI 实现解析

瘦欲@ 提交于 2020-02-29 13:00:08
版权声明:本文由 musazhang 原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/904925001482373849 来源:腾云阁 https://www.qcloud.com/community 前言     MySQL 定位用户记录的过程可以描述为:打开索引 -> 根据索引键值逐层查找 B+ 树 branch 结点 -> 定位到叶子结点,将 cursor 定位到满足条件的 rec 上;如果树高为 N, 则需要读取索引树上的 N 个结点并进行比较,如果 buffer_pool 较小,则大量的操作都会在 pread 上,用户响应时间变长;另外,MySQL中 Server 层与 Engine 之间的是以 row 为单位进行交互的,engine 将记录返回给 server 层,server 层对 engine 的行数据进行相应的计算,然后缓存或发送至客户端,为了减少交互过程所需要的时间,MySQL 做了两个优化: 如果同一个查询语句连续取出了 MYSQL_FETCH_CACHE_THRESHOLD(4) 条记录,则会调用函数 row_sel_enqueue_cache_row_for_mysql 将 MYSQL_FETCH_CACHE_SIZE(8) 记录缓存至 prebuilt->fetch

python通用读取vcf文件的类(可以直接复制粘贴使用)

旧城冷巷雨未停 提交于 2020-02-29 12:24:58
前言   处理vcf文件的时候,需要多种切割,正则匹配,如果要自己写其实会比较麻烦,并且每次还得根据vcf文件格式或者需要读取的值不同要修改相应的代码。因此很多人会选择一些python的vcf的库,但是首先你得安装这个库, 并且有一些库它固定了能够读的内容,如果你的vcf的信息不在它固定的里面,就读不出来。比如最近我想读一个样本的AF,但是它放在最后样本的GT那列,不在INFO那一列,有一些库竟然无能为力。   因此我写了这个通用的读vcf的类,直接复制粘贴这部分代码就可以方便的用这个类进行vcf文件的读取,过滤,写出等操作。 使用说明 首先复制类的代码,后面就可以直接用了 import sys import os import subprocess class Record(object): ''' One line information in vcf file ''' def __init__(self, line): info = line.split("\t") self.line = line self.CHROM = info[0] self.POS = info[1] self.ID = info[2] self.REF = info[3] self.ALT = info[4] self.QUAL = info[5] self.FILTER = info[6]

xcode lldb gdb调试

拥有回忆 提交于 2020-02-29 08:12:50
应用调试: 1 xcode gdb/lldb调试命令 命令 解释 break NUM 在指定的行上设置断点。 bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序。 clear 删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。 continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。 display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成。 file FILE 装载指定的可执行文件进行调试。 help NAME 显示指定命令的帮助信息。 info break 显示当前断点清单,包括到达断点处的次数等。 info files 显示被调试文件的详细信息。 info func 显示所有的函数名称。 info local 显示当函数中的局部变量信息。 info prog 显示被调试程序的执行状态。 info var 显示所有的全局和静态变量名称。 kill 终止正被调试的程序。 list 显示源代码段。 make 在不退出 gdb 的情况下运行 make 工具。 next 在不单步执行进入其他函数的情况下,向前执行一行源代码。 print EXPR 显示表达式 EXPR 的值。 print-object 打印一个对象 print (int) name 打印一个类型 print

第一个python网络爬虫总结

守給你的承諾、 提交于 2020-02-29 07:02:17
这个程序其实就是模仿用户的网页访问操作。 先从主页上获取大的商品分类,再一级一级地遍历所有的小分类。在最后得到商品列表,再遍历每个商品页,从商品页是抓取有效的信息。 这里,我对一些关键点做个总结,以便以后用到好回顾。 一,怎么访问网页? # 根据url获取网页正文 def get_webpage(url): headers = {\ 'User-Agent' : 'Mozilla/5.0 (X11; Linux i686; rv:34.0) Gecko/20100101 Firefox/34.0',\ 'Accept' : 'text/html',\ 'Connection' : 'keep-alive'} try: request = urllib2.Request(url, None, headers) response = urllib2.urlopen(request, timeout=120) webpage = response.read() response.close() return webpage #except urllib2.HTTPError, e: # print('HTTPError: ' + str(e.code)) #except urllib2.URLError, e: # print('URLError: ' + str(e.reason))

idea 创建简单的webdemo

£可爱£侵袭症+ 提交于 2020-02-28 22:29:29
1.start.spring.io 简单的web例子 打开IDE中的项目,并在src/main/java/com/example/demo文件夹中找到DemoApplication.java文件。现在通过添加额外的方法和注释来更改文件的内容 2.例子的Demo1Application.java package com.example.demo1; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class Demo1Application { public static void main(String[] args) {