不積跬步,無以至千里
不積小流,無以成江海

0%

背景

最近在做一款直播app,涉及到了IM通讯,实现直播群组聊天,IM注册、登录,改换头像、昵称等。用的是腾讯IM。

Api调用

准备工作

服务端需记录腾讯IM控制台里的sdk app id及应用的密钥

阅读全文 »

异常

异常1:

1
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.core.convert.ConversionService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=webFluxConversionService)}
阅读全文 »

开篇

Docker越来越受大家欢迎,越来越被越多的人使用。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。那么,其实在linux服务器上使用docker来部署java项目,其实是非常简单的。至于它的安装网上也都有,这里我就不卖瓜了😀。我想跟大家说的是平时我使用docker的几条命令。记住这几条常用命令基本就可以简单地运用docker发布运行java jar包了。

阅读全文 »

一次死活连不上某redis数据库,但是我又想把里面的数据弄出来,so,下面就只说一下我是怎么把redis数据从192.168.10.ss迁移到192.168.1.xxx上.
首先我要附上我的参考文章链接redis数据迁移
其次,附上我的命令:

阅读全文 »

苹果内购

在上一篇给大家描述了google支付的集成后,苹果内购也是必不可少的。就我而言,感觉苹果内购比google支付要简单容易得多,因为苹果内购撸代码前不需要配置准备,只需要在代码里集成就行了。废话少说,接下来还是分享一下我是如何集成苹果内购的。
首先需要一个苹果支付工具类,这里是IosVerifyUtil.java:

阅读全文 »

什么是消息队列

“消息队列(Message Queue)”是在消息的传输过程中保存消息的容器。在消息队列中,通常有生产者和消费者两个角色。生产者只负责发送数据到消息队列,谁从消息队列中取出数据处理,他不管。消费者只负责从消息队列中取出数据处理,他不管这是谁发送的数据。

阅读全文 »

ConcurrentHashMap与HashMap等的区别

1.HashMap
我们知道HashMap是线程不安全的,在多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。
2.HashTable
HashTable和HashMap的实现原理几乎一样,差别无非是
   HashTable不允许key和value为null
   HashTable是线程安全的
但是HashTable线程安全的策略实现代价却太大了,简单粗暴,get/put所有相关操作都是synchronized的,这相当于给整个哈希表加了一把大锁。
多线程访问时候,只要有一个线程访问或操作该对象,那其他线程只能阻塞,相当于将所有的操作串行化,在竞争激烈的并发场景中性能就会非常差。
3.ConcurrentHashMap
主要就是为了应对hashmap在并发环境下不安全而诞生的,ConcurrentHashMap的设计与实现非常精巧,大量的利用了volatile,final,CAS等lock-free技术来减少锁竞争对于性能的影响。
我们都知道Map一般都是数组+链表结构(JDK1.8该为数组+红黑树)。
高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
ConcurrentHashMap避免了对全局加锁改成了局部加锁操作,这样就极大地提高了并发环境下的操作速度,由于ConcurrentHashMap在JDK1.7和1.8中的实现非常不同,接下来我们谈谈JDK在1.7和1.8中的区别。

阅读全文 »