- 博客(25)
- 资源 (7)
- 收藏
- 关注
原创 消息推送和短信发送的实现方案
本文主要是将目前的消息模块做一个总结,分为短信发送、APP的消息推送两个部分。短信发送采用的是第三方的API(阿里大于短信平台),APP的消息推送采用的是极光的消息推送平台。只是介绍一个大概的流程,细节方面相对少一些。消息发送流程.png有消息发送需求后,直接实例化msg或者sms,通过调用封装好的方法分别放到appMsgQueue...
2020-08-20 16:17:25
435
原创 Java 8 Stream详解
概述继Java 8系列之Lambda表达式之后,我们来了解Stream。Stream 是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找、遍历、过滤以及常见计算等。聚合操作为了学习聚合的使用,在这里,先定义一个数据类:public class Student { i...
2018-11-05 19:24:48
214
转载 Optional避免空指针的用法
Optional避免空指针的用法从一个简单的用例开始。在 Java 8 之前,任何访问对象方法或属性的调用都可能导致 NullPointerException:String isocode = user.getAddress().getCountry().getIsocode().toUpperCase();在这个小示例中,如果我们需要确保不触发异常,就得在访问每一个值之前对其进行明确地检...
2018-11-05 16:57:37
2800
原创 SpringContextHolder使用报错及@Lazy使用
今天在使用SpringContextHolder来获取一个bean的时候出现错误,报错如下:java.lang.IllegalStateException: applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder. at org.apache.commons.lang3.Validate.validSt...
2018-11-05 16:54:48
5182
原创 Redis保护模式配置引起的问题
在新服务器上Jedis jedis = pool.getResource()报错:redis.clients.jedis.exceptions.JedisDataException:DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specif...
2018-11-05 16:33:32
3418
转载 ArrayList源码解析
package java.util;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.UnaryOperator;public class ArrayList<E> extends AbstractList<E> ...
2018-11-05 16:29:51
118
原创 消息推送和短信发送的实现方案
消息推送和短信发送的实现方案本文主要是将目前的消息模块做一个总结,分为短信发送、APP的消息推送两个部分。短信发送采用的是第三方的API(阿里大于短信平台),APP的消息推送采用的是极光的消息推送平台。只是介绍一个大概的流程,细节方面相对少一些。消息发送流程:有消息发送需求后,直接实例化msg或者sms,通过调用封装好的方法分别放到appMsgQueue和smsQueue。 ...
2018-11-05 16:26:39
8596
原创 Java设计模式
设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者...
2018-08-08 21:51:00
104
原创 SQL中varchar类型在where中注意事项
起因: 事情是这样的,今天在写sql的时候,table中有一个字段是platform,本来的意思是:0安卓,1苹果。但是由于是测试环境,我在仿造数据的时候将一些数据的platform写成了IOS。 SQL: select * from table where platform=1 这时报了个没有这个字段的错误。改成如下sql后没有异常: select * from table...
2018-08-08 17:26:48
2604
原创 BigDecimal的divide方法报错
报错: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 报错语句: a.divide(b)); 原因:JAVA中如果用BigDecimal做除法的时候一定要在divide方法中传递第二个参数,定义精确到小数点后几位...
2018-08-08 17:20:46
1961
原创 对接阿里大于短信平台报错
阿里大于api地址:https://help.aliyun.com/document_detail/55284.html?spm=a2c4g.11186623.6.557.oWGgY5 maven依赖:<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-...
2018-08-08 17:05:20
1622
原创 BigDecimal的divide方法报错
报错:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.报错语句:a.divide(b));原因:JAVA中如果用BigDecimal做除法的时候一定要在divide方法中传...
2018-08-03 15:10:00
1280
原创 Java 8 日期和时间的API
java.time包:这是新的Java日期/时间API的基础包,所有的主要基础类都是这个包的一部分,如:LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration等等。所有这些类都是不可变的和线程安全的,在绝大多数情况下,这些类能够有效地处理一些公共的需求。Instant——它代表的是...
2018-07-31 22:10:00
158
原创 Quartz实现跑批
Quartz介绍1.特点(1)强大的调度功能:作为spring默认的调度框架,很容易与spring集成,实现灵活可配置的调度功能;还提供了调度运行环境的持久化机制,可以保存并恢复调度现场,即使系统因故障关闭,任务调度现场数据并不会丢失。(2)灵活的应用方式:允许开发者灵活的定义触发器的调度时间表并可以为触发器和任务进行关联映射。(3)分布式和集群...
2018-07-30 22:27:00
392
原创 SpringContextHolder使用报错
今天在使用SpringContextHolder来获取一个bean的时候出现错误,报错如下:java.lang.IllegalStateException: applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder. at org.apache.common...
2018-07-25 22:53:00
2814
原创 SQL中varchar类型在where中注意事项
事情是这样的,今天在写sql的时候,table中有一个字段是platform,本来的意思是:0安卓,1苹果。但是由于是测试环境,我在仿造数据的时候将一些数据的platform写成了IOS。//sqlselect * from table where platform=1这时报了个没有这个字段的错误。改成如下sql后没有异常://sqlse...
2018-07-25 22:52:00
1308
原创 Java 8 Stream方法
concatconcat方法将两个Stream连接在一起,合成一个Stream。若两个输入的Stream都时排序的,则新Stream也是排序的;若输入的Stream中任何一个是并行的,则新的Stream也是并行的;若关闭新的Stream时,原两个输入的Stream都将执行关闭处理。示例:Stream.concat(Stream.of(1, 2, 3)...
2018-07-24 22:22:00
104
原创 Java 8 Stream详解
概述继Java 8系列之Lambda表达式之后,我们来了解Stream。Stream 是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找、遍历、过滤以及常见计算等。聚合操作为了学习聚合的使用,在这里,先定义一个数据类:public ...
2018-07-23 21:53:00
86
原创 ArrayList源码解析
package java.util;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.UnaryOperator;public class ArrayList<E> extends Abst...
2018-07-20 23:49:00
122
原创 Redis保护模式配置引起的问题
新项目搭建了个新的测试服务器,但是项目发布上去以后Redis一直不好用,查看日志后发现在getResource时报错:redis.clients.jedis.exceptions.JedisDataException:DENIED Redis is running in protected mode because protected mode is...
2018-07-19 11:27:00
885
原创 Java8 接口的默认方法和静态方法
今天面试的时候被问到Java中接口中定义的方法是否支持方法体,印象中不能,然而Java 8以后是可以的!!!Java 8使用两个新概念扩展了接口的含义:默认方法和静态方法。默认方法使得接口有点类似traits,不过要实现的目标不一样。默认方法使得开发者可以在 不破坏二进制兼容性的前提下,往现存接口中添加新的方法,即不强制那些实现了该接口的类也同时实现这个...
2018-07-18 20:39:00
124
原创 Spring AOP 的实现方式(以日志管理为例)
1.为什么需要AOP假如我们应用中有n个业务逻辑组件,每个业务逻辑组件又有m个方法,那现在我们的应用就一共包含了n*m个方法,我会抱怨方法太多。。。现在,我有这样一个需求,每个方法都增加一个通用的功能,常见的如:事务处理,日志,权限控制。。。最容易想到的方法,先定义一个额外的方法,实现该功能,然后再每个需要实现这个功能的地方去调用这个额外的方法。这种做法...
2018-07-17 16:20:00
210
原创 Optional避免空指针的用法
从一个简单的用例开始。在 Java 8 之前,任何访问对象方法或属性的调用都可能导致 NullPointerException:String isocode = user.getAddress().getCountry().getIsocode().toUpperCase();在这个小示例中,如果我们需要确保不触发异常,就得在访问每一个值之前对其进行...
2018-07-13 20:59:00
140
原创 Java 8 Lambda表达式
Lambda表达式Lambda在Java里终于出现了,基本可以说Java里面最让人期待的就是这个了。它允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理:函数式开发者非常熟悉这些概念。在lambda中我们遵循如下的表达式来编写:expression = (variable) -> action最简单的Lambda表达式可由...
2018-07-11 20:58:00
91
原创 对接阿里大于短信平台报错
阿里大于api地址:https://help.aliyun.com/document_detail/55284.html?spm=a2c4g.11186623.6.557.oWGgY5maven依赖<dependency> <groupId>com.aliyun</groupId> <a...
2018-07-09 17:51:00
483
Java数据结构和算法 中文高清版
2018-08-09
Effective Java中文高清版
2018-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人