- 博客(424)
- 资源 (27)
- 收藏
- 关注

原创 【物联网】EMQX(二)——docker快速搭建EMQX 和 MQTTX客户端使用
在上一篇文章中,小编向大家介绍了物联网必然会用到的消息服务器EMQ,相信大家也对EMQ有了一定的了解,那么接下来,小编从这篇文章正式开始展开对EMQ的学习教程,本章节来记录一下如何对EMQ进行安装。
2023-12-17 14:38:14
4567

原创 【Minio】新一代自建文件系统——Minio
说到文件,我们做技术开发,经常会把文件放到文件服务。常用的文件服务我们一般会用自建的,或者是云文件服务。常见的自建文件服务,一般我们会做机器挂载、自建文件服务器;而云文件服务,我们一般会用到第三方的文件服务,如七牛,阿里文件服务,或者是各种第三方的CDN。这里呢,我们就跟大家来说一下自建文件服务。在小编前面的博客中介绍过FastDFS。从搭建的博客中,大家可以感觉到,FastDFS搭建就比较复杂,处理文件也比较复杂。所以呢,在后面技术方案迭代中,Minio就孵化出来了。
2022-11-06 22:05:17
1586

原创 BloomFilter怎么用?使用布隆过滤器来判断key是否存在?
今天跟一个同事聊了一个问题,说最近在做推荐,如何判断用户是否看过这个片段呢?想了一下,正好可以使用布隆过滤器来完成这个需求。布隆,可不是LOL的布隆。我们的这个布隆是一个叫布隆的外国人,在1970年提出的一种方案:如果判断这个key不存在,那么就一定不存在,如果key存在,那么有可能不存在。所以不存在的时候,你永远可以详细布隆。布隆过滤器是一个高空间利用率的概率性数据结构,由Burton Bloom于1970年提出,用于测试一个元素是否在集合中。新创建的布隆过滤器是一串被置为0的Bit数组(假设有m位),
2022-07-13 22:47:06
35769

原创 【MQ】kafka(四)——kafka消费者如何消费的?如何防止重复消费?如何顺序消费?
前面博客小编向大家分享了 kafka如何保证消息不丢失?,基本是从producer和broker来分析的,producer要支持重试和acks,producer要做好副本和及时刷盘落地。这篇博客呢,就跟大家一起聊一下 kafka 消费者如何消费的?如何避免重复消费?消费流程:一般我们消费测试是不会变的,都使用默认的,也就是第一种,range策略。默认策略,保证基本是均衡的。计算公式 :n = 分区数/消费者数m = 分区数%消费者数前m个消费者,消费n+1个,剩余的消费n个eg:12个par
2022-07-10 15:13:32
38128

原创 【MQ】kafka(三)——如何保证消息不丢失?如何解决?
前一篇博客我们介绍了生产者为什么发送消息的吞吐量这么大,其实就是因为,生产者提供了内存缓冲区,把消息打包再发送,从而提高了吞吐量。那么,消息发送过去,到了broker就算是成功了吗?会不会丢失呢?这篇博客,就向大家介绍一下 kafka在什么情况下会出现消息丢失以及解决方案。首先我们还是要看一下,kafka的架构图:因为我们有三个角色:生产者,broker,消费者。消费者是消费消息,一般不会丢失,那么消息丢失就会出现在 生产者和 broker之间。当我们在配置生产者的时候,我们会有一个配置文件,这个配置文
2022-07-10 10:58:00
36062

原创 【MQ】kafka(二)——生产者写入为什么这么快?为什么吞吐这么高?
前面一篇博客,小编向大家宏观介绍了kafka是什么,在系统中干什么,以及一些kafka相关的名词介绍。这篇博客呢,小编就向大家介绍一下,生产者怎么把消息发到broker的?以及生产者发送的方法为什么吞吐量这么高?小编遇到的项目中,一般高峰期的时候,速度是7300条/秒,当搞活动的时候,速度会更高。我们先来看一下生产者写入数据的流程,然后再来分析一下生产者的内存模型。这里如果我们开启了acks = -1 的情况下, 要等所有的follower都要拉去日志完毕后,leader才会返回ack。其他问法:
2022-07-09 22:37:01
35371

原创 mongodb监听oplog 全量+增量同步
一、前言前一个项目中,涉及到了一次数据迁移,这次迁移需要从mongodb迁移到另一个mongodb实例上,两个源的数据结构是不一样的。涉及到增量和全量数据迁移,整体迁移数据量在5亿左右。本篇即讲理论,也讲实战,往下看↓!二、迁移思路通常的增量和全量迁移,思路基本一致:在开启全量的时候,开始增量监听,记录下增量的主键id当全量执行结束的时候,从新跑一边记录的增量主键id的记录,根据getbyId查询一下最新的记录,再upsert到新库中。思路就是这么样的。三、同步实战全量同步全量的操作
2022-02-17 19:21:17
4409

原创 PMP(二)——项目运行环境
一、前言 项目运行环境是项目健康生张的土壤,包含:事业环境因素,组织过程资产,组织系统。二、全局观三、介绍事业环境因素组织内愿景、使命、价值观、企业内部软件 硬件条件组织外法律、法规、标准、规范、市场、经济、自然环境组织过程资产过程、政策和程序模板 手册 指南 流程 政策 程序eg:项目立项要那些步骤验收要满足什么?PMO整理的计划模板,操作手册,管理指南组织知识库知识、经验、教训、数据、信
2021-11-07 19:48:37
496
1

原创 PMP(一)——项目管理介绍
一、前言 本节带来,项目管理介绍。二、内容2.1 项目 项目是为创造独特的产品、服务或成功而进行的临时性工作。就是三个特点: 独特性,临时性,不确定性。项目VS运营项目运营独一无二重复多次有始有终持续不断成功就成功逐步渐进责权不均衡责权均衡临时组织稳定组织效果向导效率向导不确定性确定
2021-11-07 19:17:50
10606

原创 PMP 项目管理师 认识和学习路线规划
一、什么是PMP? 什么是pmp呢?project management professional 项目管理专业人士资格认证。由美国项目管理协会(Project Management Institute,简称PMI)发起的,严格评估项目管理人员知识技能是否具有高品质的资格认证考试。全球206个国家认可 总的来说呢,pmp是一个项目管理认证的考试
2021-11-07 16:43:50
35717
1

原创 List<对象> 取其中的某个属性 List<id>
public class UserEntity implements Serializable { private Integer id; /** * 用户名 */ private String userName; /** * 用户手机号 */ private String phone;} public static void main(string args[]){ List&l
2021-10-21 15:36:23
1601

原创 es 修改 mapping 字段类型
一、原索引PUT my_index{ "mappings": { "_doc": { "properties": { "create_date": { "type": "date", "format": "yyyy-MM-dd ||yyyy/MM/dd" } } } }}二、创建新索引PUT my_index2{ "mappings": {
2021-08-06 16:44:00
13517
1

原创 java上传excel以及解析
一、前言在写管理后台的需求的时候,经常会用到上传excel的功能,需要我们解析Excel的内容,导入数据等。二、上传上传到文件服务器,文件服务有相关的上传接口,需要我们调用API上传。 @PostMapping("/v100/uploadFile") @ResponseBody public BaseResponse<String> uploadFile(HttpServletRequest request,
2021-07-23 10:42:50
21142

原创 ES计算余弦相似度
一、前言最近在项目中做数据推荐的功能,比如,猜你喜欢。主动给用户推荐用户喜欢的商品。如何判断某个商品是不是用户喜欢的呢?在调研过程中,发现es可以做相似度的计算,相似度可以表示用户对某个商品的喜爱程度。下面我就介绍一下如何实现的。二、数据源要进行数据计算,首先是要有数据基础。我们的数据源是什么呢?我们目前数据来源是用户行为。我们会采集用户近100天的用户行为。根据用户行为计算出用户的向量。比如我们会统计用户浏览行为,点击行为,分享行为等,根据这些行为的数据,来计算出用户的向量。当然我们计算的是多维度的
2021-07-19 17:53:14
18371
1

原创 JRebel热部署,从此告别一遍一遍重启项目
一、前言 在使用idea开发的时候,本地debug,每次修改完代码,都要重新重启才能生效。特别烦。每次都重启,非常恶心,效率不高。为了解决这个问题,向大家推荐一个idea的插件—— JRebel。二、JRebel是什么? JRebel是一套JavaEE开发工具。 Jrebel 可快速实现热部署
2021-06-08 18:07:05
17122

原创 【Java】Jvm调优——结合项目总结调优心得
一、前言 java 做到一定程度就会对jvm有一定的了解,了解运行时内存是什么样的,了解类加载机制等等。如果要做的更好的话,就要了解jvm性能调优的内容了。在这篇博客,小编结合自己的项目经验,对jvm调优的一些技巧做一些总结。当然现在的水平也是有一定限制的,希望有问题的地方,可以指出。二、根据什么来判断有性能问题?&nbs...
2021-01-05 14:01:43
13313
2

原创 【分库分表】sharding-jdbc + spring boot对大表进行分库分表
一、前言&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;最近小编跳槽了,刚好入职了一家移动互联网公司。非常的幸运。来新公司后的第一个项目就是对通知服务进行优化改进,其中,一个业务就是当用户登录的时候,就会登录访问通知表,根据用户id加载通知信息。由于通知量已经上亿了,在查询的时候是非常慢的。&amp;nbsp;
2020-08-13 13:22:25
13489
5

原创 Mysql:Incorrect string value: ‘\xF0\x9F\x8D\x83\xF0\x9F...‘ for column 问题解决方案
一、前言 今天生产上出现一个问题,更新数据库的时候,没有更新成功,经过定位问题,发现是update的sql报错了。 错误信息是:Mysql:Incorrect string value: '\xF0\x9F\x8D\x83\xF0\x9F...' for column 二、原因和解决方案 &nbs
2020-07-06 17:52:07
12504

原创 gh-ost 生产字段增删改,加索引不死锁解决方案
gh-ost介绍 在做功能迭代的时候,我们总会遇到生产的数据库表结构不适合的时候。往往我们要添加字段,添加索引,修改字段等操作。但是如果生产的数据量是很大的,我们对表结构进行修改的时候会引起死锁,甚至会引起宕机。 这个时候,有一种解决方案,gh-ost,可以在不发生死锁的前提下,把数据表结构修改成功。gh-ost原理  
2020-07-01 18:59:26
16093

原创 并发编程(六)——java中锁怎么使用?
Java锁的深度化 当多个请求同时操作数据库时,首先将订单状态改为已支付,在金额加上200,在同时并发场景查询条件下,会造成重复通知。SQL:Update悲观锁与乐观锁 悲观锁悲观的认为每一次操作都会造成更新丢失问题,在每次查询时加上排他锁。 每次去拿数据的时候都认为别人会修改,所以每次在
2020-06-22 13:33:25
15242

原创 并发编程(五)——线程池及原理剖析
线程池什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源, &nbs
2020-06-15 17:01:29
14791

原创 centos 安装 sz rz
一、首先安装lrzszyum -y install lrzsz二、 上传文件,执行命令rz,会跳出文件选择窗口,选择好文件,点击确认即可rz三、下载文件,执行命令szsz这样子就可以很简单的上下传文件了。
2020-06-10 10:28:03
2592

原创 并发编程(四)——JUC并发包常用方法介绍
并发包(计数器)CountDownLatch CountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表
2020-06-05 09:58:49
15418

原创 并发编程(三)——多线程之间如何实现通讯
多线程之间如何实现通讯什么是多线程之间通讯? 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。画图演示多线程之间通讯需求 需求:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作。 代码实现基本实现 &nb
2020-06-04 13:05:10
14839

原创 并发编程(二)——内存模型
并发编程之多线程线程安全什么是线程安全?为什么有线程安全问题? 当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。 案例:需求现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果。代码:public class ThreadTrain impleme
2020-06-02 10:29:08
2423

原创 并发编程(一)——多线程快速入门
线程与进程区别 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。 使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等
2020-06-01 10:09:15
2606

原创 【java8】 list to map
Map<String, String> courseNoTitleMap = listBOList.stream().collect(Collectors.toMap(CoursePriceInfoResultBO::getCourseNo, CoursePriceInfoResultBO::getTitle, (a, b) -> b));(a, b) -> b) 的意思是,(oldValue, newValue) -> newValue)...
2020-05-13 13:38:21
2510

原创 【java】-XX:-OmitStackTraceInFastThrow只有空指针,没有堆栈信息
-XX:-OmitStackTraceInFastThrow
2020-05-10 21:43:21
6262

原创 【Linux】查看存储空间命令整理
一、前言在使用centos的时候空间慢慢的都满了,满了后也不知道怎么处理、怎么查看。正好总结一下。二、命令查看磁盘空间使用:df -h查询目录下各个文件夹的占用存储大小:du -sh *查看内存使用情况:free -h三、小结以后用到更多命令再总结。不怕不知道,就怕不知道。...
2019-11-11 13:35:44
5186

原创 【mybatis】异常invalid comparison: java.util.Date and java.lang.String
原因主要是我要判断的是Date类型,但是在mybatis中使用了字符串的判断方式,这样就是错误的。就会报这个错误。解决方案<if test="createTime != null and createTime !='' " > create_time = #{createTime,jdbcType=TIMESTAMP}</if>改为<if t...
2019-11-07 18:42:08
400

原创 【java】String[] 转 list
str = “google”;//第一种:将字符串用split转成String数组,用Collections的addAll方法添加全部元素到list;String[] arr = str.split("");ArrayList list3 = new ArrayList();Collections.addAll(list3, arr);//第二种,Arrays.asList();//这...
2019-11-02 13:29:17
5398

原创 【java】使用Validate对javaBean进行校验
一、前言现在写代码,避免不了校验,比如校验字段是否为空呀、校验是否大于某个值呀、校验是否是email格式呀等等。现在写基本就是if … else …验证代码繁琐,重复劳动方法内代码显得冗长每次要看哪些参数验证是否完整,需要去翻阅验证逻辑代码二、基本上所有方法,开始的时候都要进行一下判断,这样重复代码很多。为了优化出更加简洁的代码。我们可以使用......
2019-10-24 20:24:17
1991
1

原创 【Nginx】Nginx如何配置指定接口的跳转
一、前言 最近项目上线,做的是重构的项目,需要把老接口的流量切到新接口上,客户端一直访问的是老接口的url,没有办法改变,如果要做处理,就可以使用nginx把要访问的url跳转到新的接口上。 比如:老接口要访问 http://gateway.i...
2019-10-11 20:39:50
7709
2

原创 mysql全文索引使用
一、前言 在以前的博客中小编介绍过mysql的执行流程,索引优化等。正好前一段时间项目有一个新的需求,就重新调研了一下mysql的全文索引,并对mysql的全文索引进行了压测,看看性能怎么样。以判断是否使用。——可想而知,性能不是很好。 下面小编就向大家再说说mysql的全文检索。 &nbs......
2019-04-29 10:27:33
40983
2

原创 springboot 使用 策略模式 去除过多的 if else 或 swich case!
一、前言 最近写代码的过程中,发现业务逻辑很多的时候,总会有很多的 if ... else,很多的 if ...else,有的时候就会丢去某些逻辑。有的时候也会用到swich case 来区分不同类型下执行不同的方法。但是往往这种情况的时候,会显得一个方法的代码非常长。为了破解这样的嵌套。我们可以使用策略模式来解决。本篇小编将......
2019-04-21 15:36:33
9411
2

原创 Redis队列使用
一、前言 前一段时间,项目中要开发一个活动,为了提高接口的吞吐量,把一些完成后的操作使用异步的方法来操作。刚开始的时候想的是使用一个异步的方法,处理方法完成后的其他操作。但是在压测的时候发现,并发量很多的时候,线程池就会被沾满了,然后所有的操作都会堆积在这里,吞吐量就下来了。为了解决这个问题。就想用队列来处理,但是为了这么一个......
2019-04-19 19:52:51
2634

原创 joda-time 时间处理工具
一、前言 说到java的时间处理,我们一般用到的有java.util包里面的Date 和 Calendar 类里面的方法。在使用过程中,或多或少也感觉到了其中的不方便。就促使我们一起找一些其他的方法来代替这些。 在本文中,小编就找来了Joda-tim...
2019-04-12 15:14:05
3427
Google 二维码显示 core zxing
2017-10-05
commons-fileupload-1.3.3
2017-09-14
jstl.jar使用的jar包
2017-09-14
net.sf.json jar
2017-09-14
jsoup相关jar
2017-09-12
C++知识点总结
2016-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人