自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 RabbitMQ常见幂等性、可靠性、顺序性问题及解决方案

在数学和计算机科学中,幂等运算可以多次应用而不改变初始应用后的结果。在消息队列服务中,幂等性用于处理相同消息的重复消费。消费者重复消费一条消息,最终消费结果与初次消费结果相同,重复消费不会对业务系统造成负面影响。例如:消费者根据扣款信息扣减订单货款,付款金额为100元,但由于网络问题,消息重复发送给消费者。结果就是消息被重复消费,但是只扣了一次货款,订单只有一次100元的扣款记录。该例子在消息消费过程中实现了消息幂等性,扣费满足业务需求。

2022-12-17 16:37:36 1550 1

原创 RabbitMQ概念入门

在介绍RabbitMQ之前我们首先需要对消息队列中间件和AMQP协议做简单了解。支持多种消息传递协议,除了AMQP外,还支持通过插件支持STOMP协议和MQTT3.1协议拥有丰富的交换器类型,可以满足大部分使用需求支持多语言开发、多种部署方式可以通过集群来实现高可用性和高吞吐,还可以通过Federation插件来连接跨机房跨区域的不同版本的服务节点插拔式的身份验证和授权,支持TLS和LDAP能够使用多种方式进行监控和管理,如HTTP API、命令行工具和UI界面。

2022-12-16 18:04:55 179

原创 Redis中bitmap使用详解

Redis除了提供5种基本数据结构之外,还在这些基本数据结构之上提供了一些高级功能,如geo、hyperloglog、pub\sub,本文主要介绍了bitmap的使用方式和常见业务场景。

2022-12-14 19:00:39 3416

原创 布隆过滤器详解

假设有以下需求:在用户注册时,判断输入的用户名是否已被注册?首先我们想到的是用HashMap存储所有用户名,使得查询操作在O(1)时间复杂度完成,但他的缺点是内存占用过高,当数据量上亿时HashMap对内存要求很高。此时布隆过滤器就可以帮助我们高效的完成该功能。布隆过滤器(Bloom Filter)是一种节省空间的概率数据结构,由一个很长的二进制向量和一系列随机映射函数组成,主要用于判断一个元素是否在一个集合中。例如,判断用户名是否可能。

2022-12-13 17:49:39 1885

原创 常见单例模式

单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁的创建对象造成内存资源浪费,单例模式可以让程序员仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。

2022-12-11 00:09:18 119

原创 Java中的Semaphore信号量机制

信号量机制是一种通过使用计数器来控制共享资源访问的机制,计数器计数的是共享资源的访问许可,如果计数器大于0则允许访问,如果为0,则拒绝访问。Java在java.util.concurrent包中提供了Semaphore类实现该机制。通常,在线程想要访问共享资源时,会用到Semaphore获取许可。Semaphore一共有两个构造函数:此处peimits用于指定初始许可数,也就是说它代表了同一时刻可以并发访问共享资源的最大线程数,默认情况下Semaphore使用的是非公平锁,通过将fair参数设置为true

2022-12-05 15:34:59 299

原创 git rebase 与 Git merge的区别

Git merge是git中的合并技术之一,其特点是分支上的提交日志是完整的。例如,下图中master分支上有3个commit分别为1、2、3,而功能分支提交了A、B两个commit。如果执行merge操作,那么提交A、B将合并为4提交到master分支。优点:commit完整,log日志详尽,有助于了解每次合并发生的时间和方式的完整历史缺点:日志混乱,不是很人性化Git rebase与Git merge类似,都可以实现分支的一个合并操作,不同的是rebase合并后修改了日志。引入rebase操作的

2022-12-04 22:58:02 633

原创 读写锁-ReadWriteLock

什么是读写锁,读写锁使用示例,读写锁实现原理

2022-12-03 23:36:57 153

原创 SQL里查询某一字段最大最小值

1.先排序,再查找select * from 表名 order by 字段名 asc limit 0,12.使用min,max函数select * from 表名 where (字段名 in (select max(字段名) from 表名))

2020-12-15 22:58:27 3436

原创 java的Volatile关键字底层原理剖析

待补充

2020-12-13 23:46:44 138 1

原创 什么是悲观锁与乐观锁

什么是悲观锁与乐观锁何谓悲观锁与乐观锁悲观锁乐观锁何谓悲观锁与乐观锁悲观锁总是假设最坏的情况,即每次取数据都假设别人会修改,所以每次取数据都会加锁,传统关系型数据库用到了很多这种锁机制,比如行锁、表锁、读锁、写锁等,java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。乐观锁总是假设最好的情况,即每次取数据都假设别人不会修改,所以取数据不会加锁,但是在更新时会和初始数据做对比,比较读取期间是否有改动,若没有更改则完成更新,若有更改则重新读取。可以使用版本

2020-11-23 23:16:42 99

原创 paho.mqtt.c使用教程

paho.mqtt.c使用教程交叉编译OpenSSL和paho.mqtt.c对于该步骤,可参考下方链接,博主说的很详细,亲测可用交叉编译OpenSSL和paho.mqtt.c运行环境部署本人采用的是libpaho-mqtt3cs.so库——支持ssl加密的同步mqtt通讯paho库,将相关库文件:libpaho-mqtt3cs.so、libpaho-mqtt3cs.so.1、libpaho-mqtt3cs.so.1.3放到/lib目录下使用paho相关api进行代码编写对于该步骤可参考华为

2020-08-12 14:33:13 602

原创 递归与分治策略

合并排序1.普通合并排序(运用递归与分治)时间:O(nlogn) 空间:O(n)代码实现引用:代码实现2.消除递归的合并排序(运用分治)算法思想:先将待排序数组分别划分为长度为1的数组进行两两合并,然后将合并好的数组在进行两两合并,直到合并到只有一个数组为止3.自然合并排序(运用分治)算法思想:先将待排序数组遍历一遍,找出已经有序的子序列,然后将有序的子序列进行合并排序...

2020-01-05 21:49:53 98

原创 使用Eclipse的JET技术做代码生成

使用步骤:1.新建JET文件:新建一个以.jet为后缀名的文件,这个文件一般存放在templates文件夹中,该文件即为模板文件2.在jet文件开头处加入配置代码(该配置代码和JSP代码格式十分相似):<%@jet package=“com.formaltech.smave.ics.ethercat.core.jet” imports=“java.util.Map” ...

2019-12-16 18:58:13 565

转载 JAVA 8新特性:接口中定义default和static方法

**JAVA 8新特性:接口中定义default和static方法****1.接口增强**java 8对接口做了进一步增强:a.在接口中可以添加和使用default关键字修饰的非抽象方法。即(默认方法或扩展方法)b.接口里可以生命静态方法,并且可以实现****2.默认方法(或扩展方法)**Java 8 允许给接口添加一个非抽象的方法实现,只需要使用 default 关键字...

2019-09-26 19:49:24 1151

转载 javaFx:使用弹出对话框 Alert

javaFx8 自带的对话框非常好用,类似的使用方式如下:/** * 弹出一个通用的确定对话框* @param p_header 对话框的信息标题* @param p_message 对话框的信息* @return 用户点击了是或否*/public boolean f_alert_confirmDialog(String p_header,String p_message){...

2019-09-03 23:10:31 3059

原创 使用java Mail实现发邮件功能

需求:每天下午5点定时查询数据库统计生产数据,写入excel后发送给客户。这里记录一下发邮件的源码和一些注意事项:遇到的坑:发邮件功能还是比较简单的,唯一要注意邮箱要设置为支持smtp(简单邮件传输协议)服务,要不然邮件无法发送源码:package com.formaltech.SITS.utility;import javax.activation.DataHandler;...

2019-08-23 22:28:33 356

原创 python中导入模块的2种方式

1.import 模块名 [as 别名]这种方式导入的是该模块的所有对象(一般不推荐使用,会降低查询效率且有可能不同模块的同名对象冲突),使用时必须需要在对象名前加上模块名作为前缀(模块名.对象名),别名的作用是代替模块名。例:>>import math>>math.sin(0.5)2.from 模块名 import 对象名[as 别名]这种方式仅导入明确指定的...

2019-07-15 22:55:37 416

使用paho-mqtt-c做的mqtt通讯

本人使用paho-mqtt-c做的mqtt连接以及发布订阅功能,包含了遗嘱、自动重连、ssl加密等功能

2020-08-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除