java
文章平均质量分 76
北纬@叶枫
这个作者很懒,什么都没留下…
展开
-
函数式编程(五)Stream副作用(Side Effects)
在Java 8的Stream中,副作用(Side Effects)是指对外部状态产生影响的操作。由于Stream的设计目标是支持函数式编程风格,强调无状态和不可变性,因此副作用是需要尽量避免的。总之,为了遵循函数式编程的原则,应尽量避免在Stream操作中引入副作用。通过使用纯函数、不可变对象和谨慎使用副作用操作,可以确保Stream的操作具有可预测性、可维护性和可测试性。原创 2023-09-01 10:50:02 · 439 阅读 · 0 评论 -
函数式编程(四)Stream流使用
在使用stream之前,先理解Optional。Optional是Java 8引入的一个容器类,用于处理可能为空的值。它提供了一种优雅的方式来处理可能存在或不存在的值,避免了空指针异常。OptionalOptional可以包含一个非空的值,也可以表示为空。避免空指针异常:通过使用Optional,可以避免在访问可能为空的值时出现空指针异常。显式判断:使用Optional需要显式地判断值是否存在,以便进行相应的处理。Optional提供了一系列的函数式操作方法,如map()filter()原创 2023-09-01 10:48:59 · 282 阅读 · 0 评论 -
函数式编程(三)Stream流处理器
Stream是Java 8引入的一个用于处理集合数据的API。它提供了一种流式操作的方式,可以对集合进行过滤、映射、排序、聚合等各种操作,使得代码更加简洁、易读和易维护。Stream提供了一种流式操作的方式,可以对集合中的元素进行连续的操作,而不需要使用传统的循环和条件语句。Stream使用惰性求值的方式,只有在终止操作时才会执行实际的计算。这样可以避免不必要的计算,提高程序的性能。Stream使用内部迭代的方式,隐藏了迭代的细节,使得代码更加简洁和易读。Stream。原创 2023-09-01 10:40:16 · 278 阅读 · 0 评论 -
函数式编程(二)Lambda表达式
Lambda表达式是Java 8引入的一种函数式编程特性,它可以用于替代匿名内部类或重复的代码块,使代码更加简洁和易读。LambdaLambda表达式的语法由箭头符号(->)分隔为两部分:左侧是参数列表,右侧是方法体。例如,是一个简单的Lambda表达式。Lambda表达式通常与函数接口()一起使用。函数接口是只有一个抽象方法的接口,可以用作Lambda表达式的目标类型。例如,RunnableComparator等都是函数接口。Lambda表达式的参数列表可以为空,也可以包含一个或多个参数。原创 2023-09-01 10:39:38 · 218 阅读 · 0 评论 -
函数式编程(一)函数接口
函数式接口(Functional Interface):函数式接口是一种只包含一个抽象方法的 Java 接口。必需是Java 接口。有且只有一个抽象方法(函数式方法),但不一定只有一个方法(可包含多个非抽象方法)是可选的,但加上该标注编译器会帮你检查接口是否符合函数接口规范。就像加入@Override标注会检查是否重载了函数一样。定义的函数式接口用于帮助实现 Lambda 函数。比较函数,用于对某些对象集合进行总排序。比较器可以传递给排序方法(如或),以便精确控制排序顺序。原创 2023-09-01 10:36:19 · 1219 阅读 · 0 评论 -
SpringBoot中的条件注解底层是如何实现的?
SpringBoot内部提供了特有的注解:条件注解(Conditional Annotation)。比如: @ConditionalOnBean @ConditionalOnClass @ConditionalOnExpression @ConditionalOnMissingBean等。 条件注解存在的意义在于动态识别(也可以说是代码自动化执行)。比如@ConditionalOnClass会检查类加载器中是否存在对应的类,如果有的话被注解修饰的类就有资格被Sprin转载 2020-05-13 16:01:45 · 291 阅读 · 0 评论 -
如何解决代码中if…else 过多的问题
前言if...else 是所有高级编程语言都有的必备功能。但现实中的代码往往存在着过多的 if...else。虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性、可维护性造成很大伤害,进而危害到整个软件系统。现在软件开发领域出现了很多新技术、新概念,但 if...else 这种基本的程序形式并没有发生太大变化。使用好 if...else 不仅对于现在,而且对于将来...转载 2020-05-08 11:02:50 · 352 阅读 · 0 评论 -
可以提高千倍效率的Java代码小技巧
前言代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必...转载 2019-12-24 17:36:42 · 193 阅读 · 0 评论 -
八点建议写出优雅的 Java 代码
在每一位刚入行的程序员的心中,编写程序都是一门神圣的艺术创作。他们无不希望自己的代码作品既简洁清晰,又可读性强,而且还具有一定的容错能力。本文将为您带来八点建议和技巧,以帮助您编写出简洁、干练的 Java 代码。其中的有些可能会让你觉得有些不可思议,但是请相信我,如下的每一条我都亲身实践过的。1.使用 IntelliJ IDEA 作为您的集成开发环境 (IDE)虽然我已经使用了...转载 2019-12-14 14:52:05 · 259 阅读 · 0 评论 -
为什么 ConcurrentHashMap 的读操作不需要加锁?
目录前言ConcurrentHashMap的简介get操作源码volatile登场是加在数组上的volatile吗?用volatile修饰的Node总结前言我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢?...转载 2019-12-07 16:36:49 · 147 阅读 · 0 评论 -
如何设计一个安全的对外接口?
前言最近有个项目需要对外提供一个接口,提供公网域名进行访问,而且接口和交易订单有关,所以安全性很重要;这里整理了一下常用的一些安全措施以及具体如何去实现。安全措施个人觉得安全措施大体来看主要在两个方面,一方面就是如何保证数据在传输过程中的安全性,另一个方面是数据已经到达服务器端,服务器端如何识别数据,如何不被攻击;下面具体看看都有哪些安全措施。1.数据加密我们知道数据在传输过程...转载 2019-12-02 15:20:26 · 362 阅读 · 0 评论 -
@Configuration在SpringBoot中是如何被处理的?
从SpringApplication开始一般情况下启动SpringBoot都是新建一个类包含main方法,然后使用SpringApplication.run来启动程序:@SpringBootApplicationpublic class AutoConfigApplication { public static void main(String[] args){ ...转载 2019-11-28 12:54:28 · 364 阅读 · 0 评论 -
springboot apollo 自动刷新
目录1、引入依赖2、配置文件3、设置配置文件4、需要自动刷新的类5、实现自动刷新1、引入依赖 <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-core&...原创 2019-11-27 10:49:54 · 1781 阅读 · 0 评论 -
StringBuilder和StringBuffer的区别
StringBuilder和StringBuffer的区别在哪里?当接触这个问题的时候,我们可能第一反应就是,StringBuilder是线程不安全的,StringBuffer是线程安全的为什么StringBuilder是线程不安全,StringBuffer是线程安全?针对这个问题,大部分的人可能就无言以对了,我们只知道StringBuilder是线程不安全的,StringBuffer...原创 2019-08-30 11:19:45 · 31684 阅读 · 7 评论 -
异常使用规范
1、【强制】java类库中定义一类RuntimeException可以通过预先检查进行规避,而不应该通过catch来处理比如:IndexOutOfBoundsException,NullPointerException等等。说明:无法通过预检查的除外,如在解析一个外部传来的字符串形式数字时,通过catch NumberFormatException 来实现正例:if(null != ob...原创 2019-08-12 15:32:03 · 404 阅读 · 0 评论 -
基于snowflake的ID生成器
/** * 基于snowflake的ID生成器 * @author farrellz * @date 2016年9月27日 */public class IDGenerator { private final long twepoch = 1288834974657L; private final long workerIdBits = 5L; private final lo原创 2016-09-27 16:04:26 · 533 阅读 · 1 评论 -
Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2016-09-27 17:03:51 · 564 阅读 · 0 评论 -
spring+mybatis+sharding-jdbc
由于公司业务的拓展,单表数据已经超过几千万行,通过数据库的优化已经不能满足速度的要求。分库分表提到了日程上,必须解决。恰好看到当当开源了其Sharding-JDBC组件,摘抄一段介绍:https://github.com/dangdangdotcom/sharding-jdbcSharding-JDBC直接封装JDBC API,可以理解为增强版的JDBC驱动,旧原创 2016-10-28 16:15:21 · 5964 阅读 · 0 评论 -
sharding-jdbc使用限制
使用限制JDBC未支持列表Sharding-JDBC暂时未支持不常用的JDBC方法。DataSource接口不支持timeout相关操作Connection接口不支持存储过程,函数,游标的操作不支持执行native的SQL不支持savepoint相关操作不支持Schema/Catalog的操作不支持自定义类型映射Statement和Prepa原创 2016-10-28 17:26:19 · 11580 阅读 · 2 评论 -
sharding-jdbc SQL支持详细列表
SQL支持详细列表由于SQL语法灵活复杂,分布式数据库和单机数据库的查询场景又不完全相同,难免有和单机数据库不兼容的SQL出现。 本文详细罗列出已明确可支持的SQL种类以及已明确不支持的SQL种类,尽量让使用者避免踩坑。 其中必然有未涉及到的SQL欢迎补充,未支持的SQL也尽量会在未来的版本中支持。全局不支持项动态表未配置逻辑表和真实表对应关系的真实表,称为转载 2016-10-28 17:27:17 · 7630 阅读 · 2 评论 -
Spring mvc中集成Junit4测试
相信各位程序猿在开发过程中都会使用junit,一下就是我对于junit的个人总结:Junit 单元测试能够很轻易的对单个类进行测试,相对于在每个类中增加了一个main方法,它是一种无状态或者状态确定的单元测试,对于测试含有大量的复杂的类之间有依赖关系的测试,还是比较麻烦,而spring mvc提供了大量类之间的管理,使类之间的关系完全透明化,显然,如果junit4 能够支持spring原创 2016-10-28 17:32:35 · 694 阅读 · 0 评论 -
高并发下的SimpleDateFormat
废话不多说,先上代码package z.farrell.framework.utils;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.concurrent.ExecutorService;import jav原创 2017-01-13 15:15:01 · 2826 阅读 · 5 评论 -
读写分离
package z.farrell.framework.core.datasource;/** * * 读/写动态数据库 决策者 * 根据DataSourceType是write/read 来决定是使用读/写数据库 * 通过ThreadLocal绑定实现选择功能 * * Created by farrell on 2017/1/6. */public class ReadW原创 2017-01-13 11:03:33 · 494 阅读 · 0 评论 -
微信公众号JSAPI支付对接
微信公众号JSAPI支付对接事宜公众号授权公众号授权UML 图流程图公众号支付开发步骤业务流程API列表统一下单微信内H5调起支付查询订单代码微信公众号JSAPI支付对接事宜相信各位程序员在开发过程中或多或少会有想关于支付对接的一些需求 本文主要总结在微信公众号对接过程中出现的一些注意事项:公众号授权公众号授权代码块例如:/** * 获得引导关注者打开的页面地址 *原创 2017-11-14 17:18:31 · 2394 阅读 · 0 评论 -
SpringBoot2.0集成shardingsphere分库分表组件
目前sharding-jdbc已经正式更改为shardingsphere,shardingsphere官方网站:http://shardingsphere.io/index_zh.html本篇博客主要介绍springboot以配置的形式集成shardingsphere,仅供大家参考1、创建springboot工程可以直接使用Spring Initializr生成项目2、添加依赖...原创 2019-08-12 11:53:58 · 3117 阅读 · 0 评论 -
shardingsphere如何支持utf8mb4
我们在使用mysql的过程中,由于业务需求,在创建database中有时候需要支持特殊表情符号存储,比较直接简单的方式就是设置database的编码格式为utf8mb4那么在使用shardingsphere进行分表分库的时候,如何让shardingsphere也支持utf8mb4呢?查看shardingsphere的源码,我们可以看到shardingsphere对于datasource进行...原创 2019-08-12 14:35:27 · 1614 阅读 · 0 评论 -
log日志输出规范
目录1、Log的用途2、记录Log日志的基础原则2.1、日志级别划分2.2、日志对性能的影响2.3、什么时候输出日志2.3.1、系统启动参数、环境变量2.3.2、异常捕获2.3.3、函数获得期望之外的结果时2.3.4、关键操作2.4 日志输出的内容3 日志API规范3.1Log对象的声明和初始化3.2不得使用System.out, Sy...原创 2019-08-12 15:16:48 · 10438 阅读 · 0 评论 -
时间处理工具类
/** * @filename DateUtils.java * @version www.mindai.com * @date 2016年5月31日 */package com.mjkf.framework.utils.date;import java.math.BigDecimal;import java.text.DateFormat;imp原创 2016-09-27 15:49:10 · 481 阅读 · 0 评论