optional

Java 8 Optional. Why of and ofNullable?

大兔子大兔子 提交于 2020-05-10 07:08:15
问题 I have a question regarding Java 8's Optional, the purpose of which is to tackle NullPointerException exceptions. The question is, what is the reason for having both types to let us choose: Optional.of(T value) <-----non-null value, null value will throw NPE Optional.ofNullable(T value) <----- nullable value Because what I expect is, when I use: Optional.of(nullValue); It won't throw a NullPointerException . Expanded my question after some replies: Why would people opt for Optional instead of

LCD MIPI DSI简析系列之二【转】

百般思念 提交于 2020-05-09 17:48:23
转自: https://blog.csdn.net/liwei16611/article/details/70245686 MIPI DSI 协议标准支持两种模式:Command模式和Video模式。 1 Command 模式 只有当LCD面板带有显示控制器和帧缓冲区的时候才能使用Command模式。数据传送的格式一般是在像素数据后跟着命令参数(如果有的话)和命令。主机端可以读写LCD控制器的寄存器和帧缓冲区的内容。 每一帧数据开始传输的时间可以由TE信号(由LCD面板输出)来控制也可以使用其的外接管脚,TE线或是直接通过DSI接口传送的TE 触发信息。 1.1 TE 控制信号 为了使用CMD模式,LCD屏需要内置一个时序控制器和缓冲区存储空间(一般为RAM)。为了防止出现Tearing Effect(切屏或分屏)LCD屏需要把它的时序事件信息传递给主机端。在CMD模式下传送这种时序事件可以通过3种方式来实现: • 自动模式:当DSI_VC_TE_i[31]寄存器的TE_START位被设置成0x1的时候软件开始传送数据(这种情况下DSI_VC_TE_i[30]即TE_EN位必须要被置成0x0)。一旦数据传送完成TE_START位会被硬件自动清零。这种模式让数据的传送可以通过软件应用来手动控制或是使用TE中断来控制。如果数据传送跟TE信号不匹配,就有可能会出现切屏或分屏现象。 •

Java自动化测试框架-04

僤鯓⒐⒋嵵緔 提交于 2020-05-09 16:15:03
转自: https://www.cnblogs.com/du-hong/p/11718894.html 简介 按照上一篇的计划,这一篇给小伙伴们分享一下测试方法。 一、设置参数 测试方法是可以带有参数的。每个测试方法都可以带有任意数量的参数,并且可以通过使用TestNG的@Parameters向方法传递正确的参数。 设置方式有两种方法:使用testng.xml或者Data Providers 。 (一)使用 testng.xml 设置参数 这种方法让我们在testng.xml文件中,定义简单的参数,然后在源码文件引用这些参数。 1.如果只使用相对简单的参数,可以在 testng.xml文件中指定: package hongge; import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; import hongge.TestSum; /** * @author 北京-宏哥 * * java自动化测试交流群:694280102 * * Java自动化测试框架-03 - TestNG之Test Method篇 * * 2019年10月23日 */ @Parameters({ "first-name" }) @Test public void testSingleString

mysql 8 系统保留关键字

ぃ、小莉子 提交于 2020-05-09 14:09:59
mysql 8 中的系统保留关键字 在mysql中建表时,一定要注意避免使用系统的保留关键字,不然可能数据表创建成功了,但是在使用环节(增删改查)等,造成极大的不变,重则甚至返工修改字段。 所以,在建表前一定要排查一下建表字段是否与mysql保留关键字是否冲突,尤其是一些常用的因为单词。 关键字收集 A ACTIVE ADMIN ARRAY ATTRIBUTE B BUCKETS C CLONE COMPONENT CUME_DIST (R) D DEFINITION DENSE_RANK (R) DESCRIPTION E EMPTY (R) ENFORCED ENGINE_ATTRIBUTE EXCEPT (R) EXCLUDE F FAILED_LOGIN_ATTEMPTS FIRST_VALUE (R) FOLLOWING G GEOMCOLLECTION GET_MASTER_PUBLIC_KEY GROUPING (R) GROUPS (R) H HISTOGRAM HISTORY I INACTIVE INVISIBLE J JSON_TABLE (R) JSON_VALUE L LAG (R) LAST_VALUE (R) LATERAL (R) LEAD (R) LOCKED M MANAGED MASTER_COMPRESSION_ALGORITHMS

Spring Data JPA - Named query ignoring null parameters

夙愿已清 提交于 2020-05-09 05:43:11
问题 I have the following repository: @Repository public interface EntityRepository extends JpaRepository<Entity, Long> { List<Entity> findAllByFirstId(Long firstId); List<Entity> findAllBySecondId(Long secondId); List<Entity> findAllByFirstIdAndSecondId(Long firstId, Long secondId); } The constructor implementing an interface generated with io.swagger:swagger-codegen-maven-plugin uses Optional<Long> as optional request parameters (the underlying service uses also the same parameters):

【国际】交易所订单类型

让人想犯罪 __ 提交于 2020-05-08 16:29:30
前言 随着交易的频繁度和金额,参与交易人的各种多样化,简单的限价和市价交易明显已经不太满足用户需求了,今天就探讨一下交易订单类型 实例 先说说今天有些什么内容: import java.util.Arrays; import java.util.Optional; /*** * Order type collection * @author kinbug */ public enum OrderType { GTC(0), // Good till Cancel - 正常的限价单 GTD(1), // Good till Date - 交易者指定交易日之前有效,之后撤销 IOC(2), // Immediate or Cancel - 立即成交否则取消指令 FAK(3), // Fill and Kill - 指定价位成交,剩余自动撤销 FOK(4), // Fill or Kill - 指定价位全部成交,否则自动撤销 MTM(5), // Mark to market - 市价转限价 MPO(6), // Market protection Order - 市价保护单,成交到设置的保护价位置,未成交部分转为临界值得限价单。 LCE(7), // lceberg order - 冰山单 SLO(8), // stop limit order - 止损限价单 SWP(9); //

Spring Boot (3) 热部署devtools

别说谁变了你拦得住时间么 提交于 2020-05-08 10:57:14
热部署:当发现程序修改时自动启动应用程序。 spring boot为开发者提供了一个名为spring-boot-devtools的模块来使sring boot应用支持热部署,提高开发者的开发效率,无需手动重启spring boot应用程序。 devtools的原理   深层原理是使用了两个ClassLoader,一个ClassLoader加载那些不会改变的类(第三方jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader会被丢弃,重新创建一个restart ClassLoader,由于需要加载的类比较少,所以实现了较快的重启时间。 在pom.xml中添加依赖: <!-- 热部署 --> < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-devtools </ artifactId > < optional > true </ optional > </ dependency > 编译节点添加: < build > < plugins > < plugin > < groupId > org.springframework.boot </

springboot pom问题及注解

懵懂的女人 提交于 2020-05-08 10:29:39
springboot pom不需要指定版本号 springboot会自己管理版本号 <!-- 支持热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional> true </optional> </dependency> 注意 : 更改完java代码需要重新编译 ctrl+f9,否则依然没用 @Component 加载到容器中 @ConfigurationProperties(prefix = "person") 加上该注解后,就会注入在application.properties中server开头的属性 @Configuration 加上这个的类代表spring IOC容器 这个相当于bean @Import 多个配置文件整合在一起中间用逗号隔开 @SpringBootTest 配置文件属性的读取 @RunWith(SpringRunner.class) 当一个类用@RunWith注释或继承一个用@RunWith注释的类时,               JUnit将调用它所引用的类来运行该类中的测试而不是开发者去在junit内部去构建它。我们在开发过程中使用这个特性。

Exception in thread "main" java.lang.ClassCastException

老子叫甜甜 提交于 2020-05-08 10:26:21
启动springboot时,报这个错Exception in thread "main" java.lang.ClassCastException 原因:热部署搞的, <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> 所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。对于Java应用程序来说,热部署就是在 运行时 更新Java类文件。在基于Java的 应用服务器 实现热部署的过程中,类装入器扮演着重要的角色。大多数基于Java的应用服务器,包括EJB服务器和Servlet容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个新的类装入器实例,就可以 将类 再次装入一个正在运行的应用程序。 所以没有它又不行,只能在配置文件中加一句 <optional>true</optional> 这样就能正常运行了。 来源: oschina 链接: https://my.oschina.net/u/4337340/blog/3436585

java版本lambda表达式详解(java7和java8比较)

房东的猫 提交于 2020-05-08 10:21:57
什么是Lambda? 我们知道,对于一个Java变量,我们可以赋给其一个 “值” 。 如果你想把 “一块代码” 赋给一个Java变量,应该怎么做呢? 比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的Java变量: 在Java 8之前,这个是做不到的。但是Java 8问世之后,利用Lambda特性,就可以做到了。 当然,这个并不是一个很简洁的写法。所以,为了使这个赋值操作更加elegant, 我们可以移除一些没用的声明。 这样,我们就成功的非常优雅的把“一块代码”赋给了一个变量。 而“这块代码”,或者说“这个被赋给一个变量的函数”,就是一个Lambda表达式 。 但是这里仍然有一个问题,就是变量aBlockOfCode的类型应该是什么? 在Java 8里面, 所有的Lambda的类型都是一个接口,而Lambda表达式本身,也就是”那段代码“,需要是这个接口的实现。 这是我认为理解Lambda的一个关键所在,简而言之就是, Lambda表达式本身就是一个接口的实现 。直接这样说可能还是有点让人困扰,我们继续看看例子。我们给上面的aBlockOfCode加上一个类型: 这种只有 一个接口函数需要被实现的接口类型,我们叫它”函数式接口“。 为了避免后来的人在这个接口中增加接口函数导致其有多个接口函数需要被实现,变成"非函数接口”,我们可以在这个上面加上一个声明