optional

Java 8 新特性

孤街醉人 提交于 2020-08-14 06:08:04
Java 8 新特性 1.写在前面 自学Java已经快要一年了,一直用的都是Java8,在虎牙实习参与的项目中,大量地使用到了Java8的新特性:Lambda表达式和Stream流式计算,它们脱离了数据库层面的运算,直接在内存中对数据做过滤、统计等操作,给应用程序的效率带来了极大的提升。今天趁着需求写完了的空闲时间,来学习并总结一下Java 8的新特性。 2.Lambda 表达式 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 使用 Lambda 表达式可以使代码变的更加简洁紧凑。 基本的语法格式为: ( parameters ) - > expression 或 ( parameters ) - > { statements ; } 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。 简单实例: // 1. 不需要参数,返回值为 5 ( ) - > 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x - > 2 * x

Linux学习之路-Linux-yum命令【8】---20171217

我与影子孤独终老i 提交于 2020-08-14 03:59:20
yum yum: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具 [root@Centos7~]#which yum /usr/bin/yum yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下) http:// https:// ftp:// file:// yum客户端配置文件: /etc/yum.conf:为所有仓库提供公共配置 /etc/yum.repos.d/*.repo:为仓库的指向提供配置 yum软件的配置信息 yum的repo配置文件中可用的变量: $releasever: 当前OS的发行版的主版本号 $arch: 平台,i386,i486,i586,x86_64等 $basearch:基础平台;i386, x86_64 $YUM0-$YUM9:自定义变量 [root@Centos7~]#cat /etc/yum.conf 查看yum的默认信息 [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 * 是否保留rpm文件* debuglevel=2 logfile=/var/log/yum.log exactarch

最快的 Google Fonts

风流意气都作罢 提交于 2020-08-14 01:05:20
一般来说,今天的 Web 字体速度比以往任何时候都更快。浏览器厂商在进一步规范 FOUT/FOIT 行为,新一代 font-display 规范也开始普及,看来性能(和用户体验)终于成为了人们关注的焦点。 本文最初发布于 csswizardry.com 网站,经原作者授权由 InfoQ 中文站翻译并分享。 FOUT:无样式文本闪现,Flash of Unstyled Text FOIT:不可见文本闪现,Flash of Invisibale Text FOFT:伪文本闪现,Flash of Faux Text 人们一般认为自托管字体是最快的选项:相同来源意味着较少的网络协商,可预测的 URL 意味着我们可以 preload(预加载),自托管意味着我们可以设置自己的 cache-control(缓存控制)指令( https://csswizardry.com/2019/03/cache-control-for-civilians/ ),而完整所有权可以减少将静态资产留在第三方源上的风险( https://csswizardry.com/2019/05/self-host-your-static-assets/ )。 然而,像谷歌字体(Google Fonts)这种服务的便利性也是不可小觑的。他们能够为特定用户代理和平台量身打造体积最小巧的字体文件,再加上由谷歌 CDN

VBA有效工时计算

心不动则不痛 提交于 2020-08-13 20:43:52
Type ClassInfo start_time As String core_start_time As String end_time As String noon_break_start_time As String noon_break_end_time As String evening_break_end_time As String End Type Private Function get_class_info(class As Integer) As ClassInfo '获取班次信息 Dim class_info As ClassInfo Select Case class Case 0 class_info.start_time = "08:30:00" class_info.core_start_time = "09:30:00" class_info.end_time = "18:00:00" class_info.noon_break_start_time = "12:00:00" class_info.noon_break_end_time = "13:30:00" class_info.evening_break_end_time = "18:30:00" Case 1 class_info.start_time = "08:00:00"

详解Python中re.sub--转载

人盡茶涼 提交于 2020-08-13 17:01:46
【背景】 Python中的正则表达式方面的功能,很强大。 其中就包括re.sub,实现正则的替换。 功能很强大,所以导致用法稍微有点复杂。 所以当遇到稍微复杂的用法时候,就容易犯错。 所以此处,总结一下,在使用re.sub的时候,需要注意的一些事情。 解释具体的注意事项之前,先把其具体的解释贴出来: re.sub re. sub ( pattern , repl , string , count=0 , flags=0 ) Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl . If the pattern isn’t found, string is returned unchanged. repl can be a string or a function; if it is a string, any backslash escapes in it are processed. That is, \n is converted to a single newline character, \r is converted to a carriage return, and so

python时间序列分析

前提是你 提交于 2020-08-13 14:44:23
题记: 毕业一年多天天coding,好久没写paper了。在这动荡的日子里,也希望写点东西让自己静一静。 恰好 前段时间用python做了一点时间序列方面的东西,有一丁点心得体会想和大家分享下。在此也要特别感谢 顾志耐和 散沙 ,让我喜欢上了python。 什么是时间序列 时间序列简单的说就是各时间点上形成的数值序列,时间序列分析就是通过观察历史数据预测未来的值。在这里需要强调一点的是,时间序列分析并不是关于时间的回归,它主要是研究自身的变化规律的(这里不考虑含外生变量的时间序列)。 为什么用python    用 两个字总结“情怀”,爱屋及乌,个人比较喜欢python,就用python撸了。能做时间序列的软件很多,SAS、R、SPSS、Eviews甚至matlab等等,实际工作中应用得比较多的应该还是SAS和R,前者推荐 王燕写的《应用时间序列分析》,后者推荐“ 基于R语言的时间序列建模完整教程 ”这篇博文( 翻译版 )。python作为科学计算的利器,当然也有相关分析的包:statsmodels中tsa模块,当然这个包和SAS、R是比不了,但是python有另一个神器:pandas!pandas在时间序列上的应用,能简化我们很多的工作。 环境配置    python推荐直接装Anaconda,它集成了许多科学计算包,有一些包自己手动去装还是挺费劲的

Java8中你可能不知道的一些地方之Optional实战

我是研究僧i 提交于 2020-08-13 12:32:45
Optional<T>类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念。并且可以避免空指针异常。 Optional对象构建&值获取方法 实例代码如下 Optional<String> optional = Optional.of("java8"); // NullPointerException空指针异常 值不能为空 optional = Optional.of(null); optional = Optional.ofNullable("java8"); System.out.println(optional.get()); System.out.println(optional.orElse("java")); System.out.println(optional.orElseGet(()-> "java")); System.out.println(optional.orElseThrow(()->new RuntimeException())); // 值可空 推荐使用 optional = Optional.ofNullable(null); // 运行时抛出NoSuchElementException异常 System.out.println(optional

VictoriaMetrics vmalert 使用

隐身守侯 提交于 2020-08-13 09:40:08
以下是关于vmalert 的使用,主要是测试下各个组件的集成 环境准备 注意环境集成了vmauth,vmagent 等好多VictoriaMetrics的组件,基本上就是一个比较完备的prometheus集成环境了 docker-compose 文件 说明目前vmalert 通过vmauth 会有错误异常,应该属于编码问题 version: "3" services: vmstorage: image: victoriametrics / vmstorage ports: - 8482: 8482 - 8400: 8482 - 8401: 8482 volumes: - . / strgdata: /storage command: - '--storageDataPath=/storage' vmagent: image: victoriametrics / vmagent volumes: - . / prometheus. yml: /etc/ prometheus / prometheus. yml ports: - 8429: 8429 command: - - promscrape. config = /etc/ prometheus / prometheus. yml - - remoteWrite. basicAuth. username = dalong -

Java代码精简之道

痴心易碎 提交于 2020-08-13 09:37:06
前言 古语有云: 道为术之灵,术为道之体;以道统术,以术得道。 其中:“道”指“规律、道理、理论”,“术”指“方法、技巧、技术”。意思是:“道”是“术”的灵魂,“术”是“道”的肉体;可以用“道”来统管“术”,也可以从“术”中获得“道”。 在拜读大佬“孤尽”的文章《 Code Review是苦涩但有意思的修行 》时,感受最深的一句话就是:“优质的代码一定是 少即是多 的精兵原则”,这就是大佬的代码精简之“道”。 工匠追求“术”到极致,其实就是在寻“道”,且离悟“道”也就不远了,亦或是已经得道,这就是“工匠精神”——一种追求“以术得道”的精神。 如果一个工匠只满足于“术”,不能追求“术”到极致去悟“道”,那只是一个靠“术”养家糊口的工匠而已。作者根据多年来的实践探索,总结了大量的Java代码精简之“术”,试图阐述出心中的Java代码精简之“道”。 1.利用语法 1.1.利用三元表达式 普通: String title; if (isMember(phone)) { title = "会员"; } else { title = "游客"; } 精简: String title = isMember(phone) ? "会员" : "游客"; 注意:对于包装类型的算术计算,需要注意避免拆包时的空指针问题。 1.2.利用for-each语句 从Java 5起,提供了for-each循环

JDK1.8新特性之(二)--方法引用

丶灬走出姿态 提交于 2020-08-13 08:12:41
在上一篇文章中我们介绍了JDK1.8的新特性有以下几项。 1.Lambda表达式 2.方法引用 3.函数式接口 4.默认方法 5.Stream 6.Optional类 7.Nashorm javascript引擎 8.新的日期时间API 9.Base64 并且学习了JDK1.8最重要的特性-- Lambda表达式 , 这一篇学习 方法引用。 首先介绍方法引用是啥? 方法引用单从“引用”二字不难理解,我们经常拿毛主席的”不管黑猫白猫能抓住老鼠的猫就是好猫“这句话来说事情,这里就是引用了毛主席的话。那么方法引用就是拿过其他地方已经存在的方法,我们拿过来使用,在这里可以理解成Lambda表达式的一种特殊用法。只是我们得按照一定的规则来用。也就是我们接下来要重点要学习的内容: 方法引用的方式 接下来先列出方法引用的方式。 总体来说方法引用有三种方式,分别如下。 1.普通方法引用 1.1 实例方法引用(通过实例对象) 对象::实例方法名; 1.2 静态方法引用 类名::静态方法名; 1.3 实例方法引用(通过类名) 类名::实例方法名; 注:上面两种实例方法引用的不同之处,通过下面代码详细说明。 2.构造器引用 类名::new; 3.数组引用 类型::new; 下面重点通过实例来学习上面的集中形式。 1.1 实例方法引用(通过实例对象) 下面通过最简单的打印输出语句来理解实例方法引用。 1