![](https://img-blog.csdnimg.cn/e26a89b499a64357911d694ad1e951c7.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA
文章平均质量分 80
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Monster_起飞
代码路上的小学生,主要涉及有Java、OutSystems、分布式、微服务、低代码等,热爱技术,乐于分享,一起成长,遇见未知的自己
展开
-
Springboot后台HTML/富文本转图片
项目场景:后台将html文件转换成图片资源。项目是老师布置作业给学生做,作业试题对接的是第三方题库的接口,但它们都采用题干为HTML格式,而我们传统的试题格式都是图片格式,则需要调用第三方题库后,将每个试题的题干富文本存入到HTML文件中,并引用第三方题库的富文本css样式适配题干原有的展示样式,最后拿整个HTML文件去转对应试题的图片。实现描述原文地址:https://blog.csdn.net/weixin_44249490/article/details/125572206?spm=1001.2014原创 2022-07-05 17:02:25 · 1083 阅读 · 2 评论 -
Java集成第三方支付宝(会员卡)——文档篇
https://opendocs.alipay.com/open/0201uk在上一篇Java集成第三方支付宝(商家劵)——文档篇有讲到,这里不在赘述。开发者可以通过国际标准的 OAuth2.0 授权机制,在用户授权的情况下,得到用于换取用户信息的令牌。拿到用户的授权令牌后,通过调用 alipay.user.info.share(支付宝会员授权信息查询接口)获取用户的公开信息。alipay.system.oauth.token(换取授权访问令牌)alipay.user.info.share(支付宝会员授权原创 2022-06-24 11:34:14 · 541 阅读 · 1 评论 -
Java集成云打印机(芯烨云)——文档篇
芯烨云自动接单自动打印,无需手机、电脑、人工,打印机在任何地方都可以打印订单,不受距离的限制。顾客通过微信、收银系统提交订单后,云打印机会在数秒内自动打印订单。真正省时、省力,为商家省去了大量的人力。https://www.xpyun.net/open/index.htmlJava集成云打印机(芯烨云)——代码篇到 admin.xpyun.net (以下统称‘芯烨云平台’)注册开发者账号,获得开发者ID(user)和开发者密钥(UserKEY ),开发者ID和开发者密钥是开发者接入API的重要身份识别参数。原创 2022-06-24 11:04:31 · 13168 阅读 · 1 评论 -
看完这篇,不信你还能不会用 MyBatis-Plus
MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特点:2、向数据库中添加数据3、创建一个SpringBoot项目并添加依赖4、配置数据库连接5、编写实体类6、编写UserMapper配置日志在启动@Test需要显示Sql的细节需要配置日志CRUD扩展插入操作数据库插入的id的默认值为:全局的唯一id默认 ID_WORKER 全局唯一雪花算法:我们需要配置主键自增:1、实体类字段原创 2022-06-14 18:14:30 · 621 阅读 · 6 评论 -
Java集成第三方支付宝(商家劵)——文档篇
商家券是支付宝为商家/服务商(ISV)提供的电子优惠券解决方案。商家/ISV 可在支付宝内通过该能力实现商家优惠券创建、投放、领取、核销的运营闭环,及券活动查询等管理操作。原创 2022-06-09 11:46:17 · 903 阅读 · 2 评论 -
Java 生成优惠劵码(唯一)
Java 生成优惠劵码(唯一)原创 2022-06-07 16:53:15 · 2524 阅读 · 1 评论 -
处理延时任务的常用几种解决方案
处理延时任务的常用几种解决方案前言数据库轮询原理优缺点Java延迟队列原理优缺点Reids监听失效key原理实现技术实现步骤创建监听类,实现MessageListener接口优缺点RocketMq延迟消息实现原理优缺点总结前言项目中经常会遇到如下的需求:创建订单30分钟未支付,订单自动取消。订单支付成功后,1分钟后给用户发送短信,提醒用户评价。…针对延时任务需求,我们可以采用如下的解决方案:数据库轮询原理通过一个线程定时的扫描数据库当天创建的订单,根据订单的创建时间来判断订单是否超时原创 2022-05-31 14:49:14 · 991 阅读 · 1 评论 -
Java集成第三方oss对象存储——文档篇
Java集成第三方oss对象存储——文档篇相关文章简介官方文档应用场景Web 配置操作添加依赖创建存储空间相关文章简介阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。您可以使用阿里云提供的API、S原创 2022-04-28 14:19:31 · 1014 阅读 · 0 评论 -
Java集成第三方OCR识别——文档篇
Java快速集成OCR文字识别相关文章简介官方文档Web 配置操作第一步:成为百度AI开放平台的开发者第二步:开通文字识别服务1. 领取免费测试资源2. 创建应用第三步:使用文字识别服务1. 添加OCR依赖2. 下载相关工具包2. 手写文字识别3. 获取access_token第四步:测试相关文章简介文字识别OCR(Optical Character Recognition)提供多场景、多语种、高精度的文字检测与识别服务,多项ICDAR指标居世界第一。广泛适用于金融服务、财税报销、法律政务、保险医疗、原创 2022-04-26 15:47:22 · 2147 阅读 · 1 评论 -
Stream in Java8
Stream in Java8什么是stream呢?创建Stream使用Stream过滤(filter)映射(map、flatMap)聚合(max/min/count)收集(collect)归集(toList/toSet/toMap)统计(count/averaging)排序(sorted)简单认识Java streamJava8出了一个stream流式编程,在开发中或多或少用到接触过。怎么说呢!举个例子把,一起我们在遍历一个集合的时候,我们是从外部去遍历的,然后才能拿到结果,这样来效率就会变得相对低一原创 2022-04-09 11:23:56 · 512 阅读 · 3 评论 -
Java 分布式生成ID—雪花算法
一、概述1、SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图:1位,不用。二进制中最高位为1的都是负数,但是我们生成的id一般都使用整数,所以这个最高位固定是0● 41位,用来记录时间戳(毫秒)。○ 41位可以表示241−12^{41}-1241−1个数字,○ 如果只用来表示正整数(计算机中正数包含0),可以表示的数值范围是:0 至 241−12^{41}-1241−1,减1是因为可表示的数值范围是从0开始算的,而不是1。○ 也就是说41位可以表示241−1原创 2022-04-01 10:32:07 · 5530 阅读 · 4 评论 -
如何做拆分服务?
如何拆分服务?在微服务的落地中,第一步就需要进行微服务的拆分,服务的拆分很困难也很重要,本文就讲讲怎么进行服务的拆分。技术发展到现在,还没有一个具体的,设计完善的标准方法来完成服务的拆分,服务的拆分是一门技术更是一门艺术。对于服务的拆分,有两种情况 :1、从零开始开发新的产品,采用微服务架构,进行服务拆分。2、将现有的单体架构的产品重构成微服务架构,进行服务拆分。如果做的是 ToB 业务,最终在企业内部私有化部署落地,那么在大多数的场景下,微服务拆分后系统的复杂度和引发的新问题会大于原创 2022-03-31 10:27:55 · 1513 阅读 · 1 评论 -
SpringBoot使用注解@Validated校验
Springboot中优雅进行字段校验前段时间提交代码审核,同事提了一个代码规范缺陷:参数校验应该放在controller层。到底应该如何做参数校验呢?来看一下吧。Controller层 VS Service层去网上查阅了一些资料,一般推荐与业务无关的放在Controller层中进行校验,而与业务有关的放在Service层中进行校验。那么如何将参数校验写的优雅美观呢,如果都是if - else,就感觉代码写的很low,还好有轮子可以使用。常用校验工具类使用Hibernate Validate引原创 2022-01-13 17:35:28 · 3629 阅读 · 4 评论 -
方法重写时需要注意的问题有哪些?
在面向对象编程中,方法重写(override)是一种语言特性,它是多态的具体表现,它允许子类重新定义父类中已有的方法,且子类中的方法名和参数类型及个数都必须与父类保持一致,这就是方法重写。方法重写最简单的示例如下,定义一个父类 Father 和子类 Son,父类中有一个 method 方法,而在子类中会重写 method 方法,具体实现代码如下。父类 Father 实现代码如下:/** * 父类 */ class Father { public void method(String原创 2021-12-30 11:30:11 · 1098 阅读 · 3 评论 -
巧用Redis,实现分布式锁
❤️yyds干货盘点❤️ 巧用Redis,实现分布式锁手写Redis分布式锁Redissonlock()lock(long leaseTime, TimeUnit unit)tryLock(long waitTime, long leaseTime, TimeUnit unit)RedLock红锁在之前并发系列的文章中,我们介绍了JVM中的锁。但是无论是synchronized还是Lock,都运行在线程级别上,必须运行在同一个JVM中。如果竞争资源的进程不在同一个JVM中时,这样线程锁就无法起到作用,必须原创 2021-12-22 17:22:40 · 1053 阅读 · 3 评论 -
别再用定时任务来关闭超时订单了
前言在电商、支付等领域,往往会有这样的场景,用户下单后放弃支付了,那这笔订单会在指定的时间段后进行关闭操作,细心的你一定发现了像某宝、某东都有这样的逻辑,而且时间很准确,误差在1s内;那他们是怎么实现的呢?业务场景我们以订单功能为例说明下:生成订单后一段时间不支付订单会自动关闭。最简单的想法是设置定时任务轮询,但是每个订单的创建时间不一样,定时任务的规则无法设定,如果将定时任务执行的间隔设置的过短,太影响效率。还有一种想法,在用户进入订单界面的时候,判断时间执行相关操作。一、定时任务一般情况下,最原创 2021-12-16 10:02:08 · 4255 阅读 · 5 评论 -
2023年最新Java JDK1.8的安装教程
前言JDK是 Java 语言的软件开发工具包,没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。本文将带你学习如何安装配置JDK环境变量。一、JDK下载1.官网下载点击官网下载地址往下划,找到自己电脑相对应的JDK,点击下载。勾选接受许可协议后点击下载会提示登录ORACLE账户,如果没有就用邮箱注册一个登录后就可以下载了二、安装步骤初学者建议傻瓜式安装,直接点击下一步即可。原创 2021-12-15 11:03:34 · 4659 阅读 · 4 评论 -
Mybatis原理及源码分析
作为Java程序员Mybatis应该是一个必会框架了,其源码体量只有Spring 的1/5,也是Hibernate的1/5 ,相比于其他流行框架Mybatis源码无疑是学习成本最低的,当做年轻人看的第一个框架源码,无疑是非常好的。整体架构对于一个陌生的事物切勿一头扎进细节里,我们先要观其大概看看架构脉络,MyBatis 分为三层架构,分别是基础支撑层、核心处理层和接口层。基础支撑层基础支撑层是这个Mybatis框架的基建,为整个Mybatis框架提供非常基础的功能。(篇幅有限下面我们只对部分模块原创 2021-10-26 15:31:26 · 767 阅读 · 2 评论 -
SpringSecurity系列之SpringBoot+CAS单点登录
某一个 Client 需要接入 CAS Server 进行验证,则该 Client 必须提前在 CAS Server 上配置其信息。这个信息既可以动态添加,也可以通过 JSON 来配置,后面松哥会教搭建如何动态添加,这里方便起见,我们还是通过 JSON 来进行配置。1.准备工作准备工作主要做两件事。1.1 服务记录某一个 Client 需要接入 CAS Server 进行验证,则该 Client 必须提前在 CAS Server 上配置其信息。这个信息既可以动态添加,也可以通过 JSON 来配置原创 2021-10-19 15:39:49 · 1169 阅读 · 4 评论 -
为什么有的团队严禁使用Lombok?
一、介绍Java,作为一款非常热门的编程语言,尽管它有着非常丰富的语言特性,完全面向对象编程,编程高度规范化,但是也有一个最受大家诟病的一个缺点:啰嗦,尤其是当你开发了很多年之后,你会明显的感受到,相比动态语言,java 定义变量之前,要先创建类,然后定义变量类型,每个类要写很多的get/set/toString/hashCode/equals等等方法。尤其是当一个实体类,高达几十个变量时,写完get、set方法之后,一个实体类的长度快接近一千行。为了避免写这些“罗嗦”的方法,很多程序员一直在寻觅着原创 2021-10-19 10:19:23 · 2427 阅读 · 0 评论 -
IDEA解决Java:程序包xxxx不存在的问题
前言有时候我们在导入程序之后,系统会给出错误提示:Java:程序包xxxx不存在,现在我这里有一招,就是使用IDEA自动导入Java程序包,这也是IDEA的一大优点。内容当出现如题所示的错误时候,不用着急,这是因为配置Java的程序包这块出现了错误,同时可能你还没有设置让IDEA自动加载Jar包,才会报出这种错误的。解决方式如下:File—>Setting—>Build,Execution,Deployment—>Maven—>Importing如上图配置好之后,点击app原创 2021-10-19 09:59:50 · 3368 阅读 · 2 评论 -
jackson使用@JsonSerialize格式化BigDecimal解决.00不显示问题
一、问题最近开发中使用BigDecimal这个数据类型返回json数据时出现了点问题:#1.前端第一次保存的时候穿过来的数据格式 240.00 240.77 #2.mysql数据库存储的数据格式(数据库字段已经设置了保留小数点后两位) 240 240.77 #3.java程序中查看从数据库中查询的回来的数据格式: 240.00 240.77 #4.返回前端的json字符串里的数据格式: 240 240.77 #4.前端想要的json字符串里的数据格式: 240.00 240.77由上面的一系列分析可知原创 2021-10-19 09:57:57 · 1909 阅读 · 2 评论 -
为何说KubeMQ会是Kafka的替代品?
为何说KubeMQ会是Kafka的替代品?现代应用是复杂的,有许多不同的活动部件。即使对于最基本的执行中心应用程序,前端接口也会触发支付处理事务,而支付处理事务又会触发制造和运输事件。这些服务需要一种可靠的方式彼此通信,而不管底层网络或其他服务的可用性如何。为了实现这种复杂的操作,必须有某种类型的服务“邮局”来跟踪所有请求和警报。实现这一目标的工具便是消息队列。消息队列是一种专门的应用程序,它充当分布式应用程序的不同服务之间或不同应用程序之间的中介。它将应用程序服务彼此分离,确保无论消息接收者是否原创 2021-10-19 09:46:09 · 810 阅读 · 0 评论 -
SpringBoot项目中Redis之管道技术
Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。环境:springboot2.3.9.RELEASE + redis3.2.100Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。服务端处理命令,并将结果返回给客户端。Redis 管道技术Redis 管道技术可以在服务端未响应时,客原创 2021-10-18 15:25:20 · 865 阅读 · 2 评论 -
分布式配置中心(Nacos、Apollo)选型比较
分布式配置中心(Nacos、Apollo)选型比较Apollo和Nacos生态支持都很广泛,在配置管理流程上做的都很好。Apollo相对于Nacos在配置管理做的更加全面;Nacos则使用起来相对比较简洁,在对性能要求比较高的大规模场景更适合。因为公司进行系统的服务化拆分,导致模块骤增,随之而来配置文件管理难度也随之增加,所以想采用一个配置集中管理的中间件。下面对市面比较流行的Naocs和Apollo从各方面进行比较。...原创 2021-10-18 14:06:37 · 3435 阅读 · 5 评论 -
对 Websocket 完全不懂,但又想搞个聊天室,行吗?
Websocket 的客户端并没有什么技术难点,就是浏览器 API 调用。只要你把通信机制够清楚,这玩意就没有不会,因为非常简单,我们直接选择纯手写就可以了,如果你想使用 Websocket-Node 客户端,确实还会更简单。回忆以下上一篇内容:《有了 HTTP 协议,为什么还需要 Websocket?》,了解一下 Websocket 的特点和通信原理,我们接着来看 Websocket 服务端与客户端实现。Websocket 服务端与客户端实现经过前面对通信过程的梳理,我们将 WebSocket 通原创 2021-10-18 10:40:40 · 2722 阅读 · 11 评论 -
有了 HTTP 协议,为什么还需要 Websocket?
WebSocket 是一种基于 TCP 连接上进行全双工通信的协议,相对于 HTTP 这种非持久的协议来说,WebSocket 是一个持久化网络通信的协议。WebSocket 是一种基于 TCP 连接上进行全双工通信的协议,相对于 HTTP 这种非持久的协议来说,WebSocket 是一个持久化网络通信的协议。它不仅可以实现客户端请求服务器,同时可以允许服务端主动向客户端推送数据。在 WebSocket API 中,客户端和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传原创 2021-10-18 10:35:17 · 3898 阅读 · 6 评论 -
三分钟实现 Spring Boot 集成 RabbitMQ,实现消息队列服务
Spring Boot提供了spring-bootstarter-amqp组件对消息队列进行支持,使用非常简单,仅需要非常少的配置即可实现完整的消息队列服务。消息中间件在互联网公司使用的越来越多,主要用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息队列实现系统之间的双向解耦,生产者往消息队列中发送消息,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到系统解耦的目的,也大大提高了系统的高可用性和高并发能力。接下来介绍Spring原创 2021-10-16 14:17:28 · 3388 阅读 · 6 评论 -
NetBeans、Eclipse和IntelliJ,哪个才是最优秀的Java IDE?
众所周知,集成开发环境(IDE)能够让程序员的日常编程过程,比起直接在文本编辑器上编写代码要容易得多。它不但可以及时推送各种代码建议,并且能够高亮地显示代码中的各种错误,最终让程序员交付出高质量的程序。而作为具有出色的开发能力的编程语言,Java已经被业界广为接受与使用。目前,我们可以轻松地获取到各种优秀的、基于Java的IDE,其中不乏NetBeans、Eclipse和IntelliJ。那么我们该如何在实际开发中进行选择呢?下面让我们一起来深入了解。NetBeansNetBeans拥有庞大的Jav原创 2021-10-16 13:59:10 · 1016 阅读 · 4 评论 -
Aop编程全解析
AOP是一种编程思想,一套规范。软件开发经历了面向过程编程时代,以C语言为代表,之后是面向对象编程时代,以Java语言为代表。在21世纪大牛们又提出了一种新的编程思想面向方面编程,即AOP理念,全称Aspect-Oriented Programming。AOP是第三代编程思想,到哪免不了都要问下。发展历史1997年在面向对象编程大会上Gregor Kiczales等人首次提出了AOP的概念,之后各大公司等分别加入研究。2001年Palo Alto研究中心发布了首个支持AOP的语言AspectJ原创 2021-10-09 15:43:37 · 1072 阅读 · 0 评论 -
部署应用服务器
一、Tomcat介绍Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的.原创 2021-10-09 11:07:33 · 882 阅读 · 0 评论 -
IDEA工具(阿里巴巴)代码规范检查插件
1.代码规范因为软件是需要人来维护的。这个人在未来很可能不是你。所以首先是为人编写程序,其次才是计算机不要过分追求技巧,降低程序可读性。简洁的代码可以让BUG无处藏身。要写出明显没有BUG的代码,而不是没有明显BUG的代码。2.标准相信大家现在或者以后都会接触比较大的项目,分工合作越来越精细。而大家的编码风格会各显色彩。我们需要一个公认的规范,这里小怪我以阿里巴巴的代码规范作为参考。一、《阿里巴巴Java开发手册》,改书详尽的描述了开发中的规范官方github地址:https://gith原创 2020-08-26 15:13:30 · 27292 阅读 · 7 评论 -
是的!JDK 17 来啦!
上个周末我发了一篇名为:Spring 官宣,干掉 Spring 5.3.x! 的技术快报,这篇文章主要介绍了 Spring Framework 6 和 Spring Boot 3 的最新消息。我在文中提到说:Spring Framework 6 和 Spring Boot 3 在运行时至少需要 JDK 17 。就在前天,Oracle 正式宣布推出 Java 17。是的!它来了!如官方所说:JDK 17 将取代 JDK 11 作为下一个长期支持的 JDK 版本。Java 17 提供了数以千计的性.原创 2021-09-29 14:03:23 · 495 阅读 · 0 评论 -
Java泛型的好处
泛型是java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。举个简单的例子,咱们创建一个值是Long型的map,那么Map<String,Long> thisMap =new HashMap<>();当给这个map里的值赋值其他类型时会报错,他只能赋值Long型。泛型的好处有哪些:1:类型安全,例如上边的map例子,能够控制咱们需要的类型2:消除强制类型原创 2021-09-24 14:42:08 · 1176 阅读 · 0 评论 -
Spring Boot 静态资源修改立即生效
前两天在玩spring boot的时候,发现修改静态资源时总是不能立即生效,弄了好长时间,今天将解决方案分享给大家,希望对大家有所帮助,废话少说,直接上教程第一步:项目maven中需要的maven包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>tru原创 2021-09-24 14:31:41 · 751 阅读 · 2 评论 -
记一次性能优化,单台4核8G机器支撑5万QPS,硬核!
前言这篇文章的主题是记录一次性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对不止一个解决方案。如何优化首先大家要明确的一点是,脱离需求谈优化都是耍流氓,所以有谁跟你说在xx机器上实现了百万并发,基本上可以认为是不懂装懂了,单纯的并发数完全是无意义的。其次,我们优化之前必须要有一个目标,需要优化到什么程度,没有明确目标的优化是不可控的。再然后,我们必须明确的找出性能瓶颈在哪里,而不能漫无目的的一原创 2021-09-23 11:47:46 · 737 阅读 · 0 评论 -
Springboot集成定时任务
dome1、配置在spring boot的启动类上加@EnableScheduling注解,允许支持@Scheduled:@SpringBootApplication@EnableSchedulingpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}2、任务原创 2021-08-06 17:19:40 · 799 阅读 · 2 评论 -
IDEA自动删除无用的“import“ 包
原创 2021-07-22 21:38:50 · 448 阅读 · 2 评论 -
Java集成第三方推送(极光推送)——开发篇
Java快速集成极光开发相关文档一级目录二级目录相关文档Java集成第三方推送(极光推送)——文档篇一级目录二级目录原创 2021-07-15 14:59:23 · 3657 阅读 · 6 评论 -
Java集成第三方推送(极光推送)——文档篇
Java快速集成极光文档相关文章简介消息形式官方文档工作原理原理图客户端原理服务器原理相关文章简介JPush 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手机平台。消息形式JPush 提供四种消息形式:通知,自定义消息,富媒体和本地通知。官方文档https://do.原创 2021-07-15 14:55:48 · 1295 阅读 · 2 评论