optional

Java8 新特性(三)

前提是你 提交于 2020-04-18 10:08:25
日期时间对象 关于日期时间的操作可以分为两种: 转换:与字符串的互相转换,与时间戳的互相转换 计算:计算两个时间点之间的间隔、时间点与时间段的计算(计算下周N、下个月D日、去年M月D日等等) Java8 提供了三个类: LocalDate 、 LocalTime 、 LocalDateTime ,它们的形式如 2020-01-01 、 12:30:00 、 2020-01-01 12:30:00 创建对象 获取类对象的方法非常非常简单 LocalDate now = LocalDate.now(); LocalDate ld = LocalDate.of(2019, 1, 1); // 获取年月日 now.getYear(); now.getMonthValue(); // 如果你调用了 now.getMonth() ,那么它将返回给你一个大写的英文月份单词 now.getDayOfMonth(); // 顾名应该思义 getDayOfWeek(); getDayOfYear(); // 设置年月日 LocalDate ld1 = ld.withYear(2021); // 2021-01-01 LocalDate ld2 = ld.withMonth(12); // 2019-12-01 LocalDate ld3 = ld.withDayOfMonth(12); // 2019

2020你还不会Java8新特性?(学习过程记录)

冷暖自知 提交于 2020-04-18 08:25:25
Java8(1)新特性介绍及Lambda表达式 这,仅是我学习过程中记录的笔记。确定了一个待研究的主题,对这个主题进行全方面的剖析。笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长。不止是技术。 前言: 跟大娃一块看,把原来的电脑拿出来放中间看视频用 --- 以后会有的课程 难度 深入Java 8 难度1 并发与netty 难度3 JVM 难度4 node 难度2 spring精髓 难度1 课程中提到的知识: 前后端分离的开发,是靠node当做中间的 netty,已经成为国内外互联网公司的标配。会涉及底层的源代码的理解。 JVM 涉及的东西比较多。虽然天天用,但是没有深入理解过。各种锁,可见性等。与计算机原理息息相关的。 圣思园主要面对与已经工作的。大部分为一线的开发人员。 课程一定是完整的。由浅入深的。一定要有一种耐心。 对于基础不好的,可以看看以前面授的时候录制的视频。不懂的一定要多查资料。 在讲课过程中的设计思路:4000块钱的收费标准。 jdk8 介绍:Java 8可谓Java语言历史上变化最大的一个版本,其承诺要调整Java编程向着函数式风格迈进,这有助于编写出更为简洁、表达力更强,并且在很多情况下能够利用并行硬件的代码。本门课程将会深入介绍Java 8新特性,学员将会通过本门课程的学习深入掌握Java 8新增特性并能灵活运用在项目中

https://github.com/appleboy/gin-jwt包函数的执行顺序

蹲街弑〆低调 提交于 2020-04-18 06:54:46
这个还是比较正规的, 但看代码时,需要了解函数的执行顺序。 token生成: Authenticator-》PayloadFunc token验证: IdentityHandler-》Authorizator Login request flow (using the LoginHandler) PROVIDED: LoginHandler This is a provided function to be called on any login endpoint, which will trigger the flow described below. REQUIRED: Authenticator This function should verify the user credentials given the gin context (i.e. password matches hashed password for a given user email, and any other authentication logic). Then the authenticator should return a struct or map that contains the user data that will be embedded in the jwt token.

深入探索Java设计模式(五)之构建器模式

梦想的初衷 提交于 2020-04-18 00:13:51
抽丝剥茧 细说架构那些事——【优锐课】 简单的程序不需要大量的设计过程,因为它们只关注有限的解决方案,仅使用几个类。大型程序专注于广泛的设计,该设计比好的设计范例的任何其他属性都更能利用可重用性。宏伟的想法不仅是为当前问题提供解决方案,而且是创建一种设计,为将来的变化奠定基础。复杂的程序需要数千行代码以及对象和用户之间的大量交互。这些类型的解决方案通常在使用数千台柜员机操作的空中交通管制系统和银行系统中找到。本文是在学习完优锐课JAVA架构VIP课程—【框架源码专题】中《学习源码中的优秀设计模式》后写下的学习感悟。在这里,我们探索一种称为“构建器模式”的设计模式,并使用Java代码示例对其进行实现。 深入探索Java设计模式(一)之单例模式 深入探索Java设计模式(二)之策略模式 深入探索Java设计模式(三)之装饰器模式 深入探索Java设计模式(四)之享元模式 总览 有效的软件设计不仅可以满足当前的要求,而且可以构成未来更改和开发的基础。说起来比在实际应用中做起来容易。但是,设计模式无疑在很大程度上减轻了代码设计的负担。模式是用于构建灵活且可维护的软件的成熟架构。它通过一套标准的规范和实践大大降低了代码的复杂性。 有许多可用的设计模式,开发人员可以根据代码流的最佳表达选择一种。不选择不符合你需求的产品几乎是不可能的。实际上

.NET Core 3.x之下的配置框架

霸气de小男生 提交于 2020-04-17 16:38:41
原文: .NET Core 3.x之下的配置框架 一.配置框架的核心类库 # 首先我们使用.NET Core的配置框架需要安装额外的NuGet扩展包,下面是列举最常用的几个扩展包以及所对应的配置功能 NuGet Package Description Microsoft.Extensions.Configuration 配置框架的核心库,提供有关Configuration的抽象类和实现类 Microsoft.Extensions.Configuration.CommandLine 能够使用命令参数进行配置 Microsoft.Extensions.Configuration.EnvironmentVariables 能够使用环境变量进行配置 Microsoft.Extensions.Configuration.Json 能够使用json文件进行配置 Microsoft.Extensions.Configuration.Xml 能够使用xml文件进行配置 Microsoft.Extensions.Configuration.Ini 能够使用Ini文件进行配置 Microsoft.Extensions.Configuration.Binder 支持强类型对象绑定配置 二.一个Configuration的构建 #

netcore 非注入全局获取配置文件

孤街浪徒 提交于 2020-04-15 10:19:27
【推荐阅读】微服务还能火多久?>>> 在netcore开发中,最常见的就是注入,比如想获取appsettings.json的内容,我们就需要去注入,然后在controller里面去获取,但是我们如果想要在service中使用appsettings.json的内容,这样就是一个问题,并且每个controller去注入也是非常麻烦的事情 下面的注入的(这种方法百度一下可以出来几百条相同的搜索结果。。。参见 https://www.cnblogs.com/ideacore/p/6282926.html ) services.AddOptions(); services.Configure <AppSettings>(Configuration.GetSection( " AppSettings " )); 然后获取使用 我想要在service类库里面使用,这时该如何使用哪? 直接上代码: public class AppSettings { public string TestString { get ; set ; } public string ConfigVersion { get ; set ; } public string connectionString { get ; set ; } public string RedisExchangeHosts { get ; set

netcore 非注入全局获取配置文件

不问归期 提交于 2020-04-15 09:07:22
【推荐阅读】微服务还能火多久?>>> 原文: netcore 非注入全局获取配置文件 在netcore开发中,最常见的就是注入,比如想获取appsettings.json的内容,我们就需要去注入,然后在controller里面去获取,但是我们如果想要在service中使用appsettings.json的内容,这样就是一个问题,并且每个controller去注入也是非常麻烦的事情 下面的注入的(这种方法百度一下可以出来几百条相同的搜索结果。。。参见 https://www.cnblogs.com/ideacore/p/6282926.html ) services.AddOptions(); services.Configure <AppSettings>(Configuration.GetSection( " AppSettings " )); 然后获取使用 我想要在service类库里面使用,这时该如何使用哪? 直接上代码: public class AppSettings { public string TestString { get ; set ; } public string ConfigVersion { get ; set ; } public string connectionString { get ; set ; } public string

Flink SQL 解析复杂(嵌套)JSON

独自空忆成欢 提交于 2020-04-13 19:54:18
【今日推荐】:为什么一到面试就懵逼!>>> 在 Flink 1.10 的 Table API 和 SQL 中,表支持的格式有四种: CSV Format JSON Format Apache Avro Format Old CSV Format 官网地址如下: https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/connect.html#table-formats 我用 JSON Format 比较多,也有嵌套的JSON 数据需要解析,大概描述一下。 以下内容来下官网介绍: JSON格式允许读取和写入与给定格式 schema 相对应的JSON数据。 格式 schema 可以定义为Flink类型,JSON schema 或从所需的表 schema 派生。 Flink类型启用了更类似于SQL的定义并映射到相应的SQL数据类型。 JSON模式允许更复杂和嵌套的结构。 如果格式 schema 等于表 schema,则也可以自动派生该 schema。 这只允许定义一次 schema 信息。 格式的名称,类型和字段的顺序由表的 schema 确定。 如果时间属性的来源不是字段,则将忽略它们。 表 schema 中的from定义被解释为以该格式重命名的字段。 大概意思就是,flink 在解析json的时候

SpringBoot应用篇(一):自定义starter

安稳与你 提交于 2020-04-13 18:31:34
【今日推荐】:为什么一到面试就懵逼!>>> 一、码前必备知识 1、SpringBoot starter机制   SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。SpringBoot提供了针对日常企业应用研发各种场景的spring-boot-starter依赖模块。所有这些依赖模块都遵循着约定成俗的默认配置,并允许我们调整这些配置,即遵循“约定大于配置”的理念。 2、为什么要自定义starter   在我们的日常开发工作中,经常会有一些独立于业务之外的配置模块,我们经常将其放到一个特定的包下,然后如果另一个工程需要复用这块功能的时候,需要将代码硬拷贝到另一个工程,重新集成一遍,麻烦至极。如果我们将这些可独立于业务代码之外的功配置模块封装成一个个starter,复用的时候只需要将其在pom中引用依赖即可,SpringBoot为我们完成自动装配,简直不要太爽。 3、自定义starter的案例   以下案例由笔者工作中遇到的部分场景   ▲

appium---Activity

有些话、适合烂在心里 提交于 2020-04-13 16:00:46
【今日推荐】:为什么一到面试就懵逼!>>>   在做自动化的过程中,我们都会发现每次都要从头开始点,一直要点到最后,如果中间出现错误,就需要重现去点,这样很麻烦也很费时间,今天我们来认识一种非常简单的方法,想要测试那个页面,我们就直接跳转到哪个页面进行测试。 Activity Activity是Android系统中的四大组件之一,可以用于显示View。几乎所有的Activity都是对于用户进行交互的,如果还不懂的话,页面,我们所看到的app中的页面就属于一个Activity。其中Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器。 言归正传,我们继续说我们的想要每次都启动到我们想要的页面,既然前面也说了,每个页面都表示一个Activity,那么我么可以通过Activity的方式来进入 获取Activity的方法 通过adb方式获取Activity # 通过adb方式获取Activity # 方法一: adb shell dumpsys activity top | findstr ACTIVITY # 方法二: adb shell dumpsys activity | findstr " mFocusedActivity " # 方法三: adb shell dumpsys