- 博客(34)
- 问答 (1)
- 收藏
- 关注
原创 Kafka 生产者投递内存池源码剖析
在申请内存的时候如果申请的内存大小大于指定的内存块大小就会抛出异常,无法申请。如果是等于poolableSize的话,就会判断free中是否有,有的话就直接从free中取出,没有的话再去申请(这个free可以里面为一个缓存,每次归还的时候会归还到free中(前提free中的ByteBuffer的大小和poolableSize一致))。如果申请的时候内存不足,会等待(Deque waiters),当归还的时候会唤醒等待的节点然后再去分配内存。如果需要再本地调试的时候 (可以使用如下代码进行debug)
2024-01-21 14:39:36
652
原创 ZAB算法
zab协议全称为zookeeper atomic boradcast(原子广播协议)zab协议是借鉴Paxos的思想来实现的一种保证分布式架构中数据一致性的算法zab的协议包含两种 一种是原子广播协议 一种是崩溃恢复协议。
2024-01-19 17:28:04
721
原创 Raft算法
随后领导者执行的数据被更新,并且通知所有跟随者这条事务操作已经提交执行,收到消息后跟随者也会提交刚才执行的事务操作,将数据更新。那么此时呢 node1 node2 node3会因为接收不到领导者的心跳 然后重新选举出来一个leader(node1)会将投票请求发送给node2 此时node1获得了node2的投票也获得到了自己的。直到大多数节点将该操作写入到各自本地日志,并且收到这些节点的确认消息,此刻领导者的这个事务操作就。并且会撤回之前没有提交的数据,并将自己的操作日志与新领导的操作日志更新匹配。
2024-01-16 13:12:18
405
原创 java日志报警接入钉钉
思路 目前java应用都是大多数使用logback,可以自定logback appender来对日志进行拦截,既然是报警只拦截ERROR即可,具体怎么处理是接入钉钉,还是企业微信,或者邮件根据具体需要处理即可。
2021-12-15 15:30:09
826
原创 mongb 增删改查基本语法内嵌文档基本语法
//查询collection的所有数据 -> mysql select all//db.user_integral_info.find({})//查询gainValue = 25的数据//db.user_integral_info.find({gainValue:30})// 大于 小于 不等于//lt gt//db.user_integral_info.find({gainValue:{KaTeX parse error: Expected 'EOF', got '}' at posi
2021-09-27 14:43:59
230
原创 积分系统设计与开发
近期在做APP的积分模块,有一些总结,希望能帮助到大家。概念介绍:积分事件: 获取/消费积分的行为称之为积分事件积分获取: 由APP相关系统触发,或其他系统触发积分消费: 用积分兑换产品积分到期: 积分时效性,定时跑批处理表设计:积分事件表: 有些基础字段就没有在此列出了event_code事件编码event_type事件类型获取积分 | 消费积分event_subject事件主题event_describe事件描述cons
2021-09-27 14:26:33
1794
原创 在线画ER图
在线画ER图 https://dbdiagram.io/d/6147f64a825b5b0146097d05Table t_event {id integer [pk]event_code varchar [not null, unique]}Table t_integral {id integer [pk]integral_code varchar [not null, unique]event_code varchar [not null, unique]}Table t_inte
2021-09-20 10:55:31
5622
原创 多线程案例
package com.current.demo;import java.io.IOException;import java.util.LinkedList;import java.util.PriorityQueue;import java.util.Queue;import java.util.Random;import java.util.concurrent.*;/**程序描述: 随机生成多个客户 业务员管理器会根据客户的数量分配不同业务员的数量 当客户逐渐变
2021-06-06 01:00:24
123
原创 DelayQueue
DelayQueue是一个延迟队列队列中的元素需实现Delayed接口 Delayed实现了ComparTogetDelay 返回元素剩余的时间compareTo 比较器这样一个队列我们关心是如何实现延迟?实际上在offer的时候会加锁 ReentrantLock如果是第一个元素会放到【0】的位置如果不是新加的元素就会和前一个元素比较,如果时间小于前一个节点就会和前一个节点换位置,否则就会放到目前节点。take元素会从第一个拿,因为入队已经是排好序的了,同时也会加锁,如果没有过期的元素就会
2021-05-18 21:56:57
121
原创 CurrentLinkedQueue原理解析
ConcurrentLinkedQueue前置需要先了解的:for(;????;第一个; 代表初始化 只会执行一次复杂运算: //需自己套入参数去分析p = (t != (t = tail)) ? t : head;p = (p != t && t != (t = tail)) ? t : q;---------------------- offer 只分析offer ------------------------------构造函数: head = tail
2021-05-15 20:43:08
365
原创 AQS解析
AQS源码解析比如有3个线程获取锁 我们以Lock来做分析,去看AQS的源码A B C 3个线程A线程是第一个 会被标记为独占线程 当然默认是非公平的setExclusiveOwnerThread(Thread.currentThread()); exclusiveOwnerThread = thread; /** * The current owner of exclusive mode synchronization. 独占模式同步的当前所有者。 此时链表头部尾部
2021-05-09 21:11:13
125
原创 谷粒商城遇到的问题
SAAS-NODE环境安装错误Vue sass-node模块安装错误 报错Window SDK招不到[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yQBra7GL-1620136872909)(C:\Users\gengxiao\AppData\Roaming\Typora\typora-user-images\image-20210503114639423.png)]这几个都安一下 即可[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V
2021-05-04 22:01:50
1298
原创 Fegin
Fegin是一个声明式的HTTP调用框架。为什么是声明式的呢,其实在我们开发过程中一般都是声明一个接口,用@FeginClient标识,接口中的方法与调用方Controller保持一致,如参数,SpringMVC注解这样的。Fegin底层的调用方式是基于HTTP的,默认是使用JDK自带的通信框架,一般可以用HttpClient或OkHttp来进行替换Fegin底层的通信方式,引入pom,在yml文件开启即可。@FeginClient有很多参数,如url是指定服务的调用地址({url:https%3A//网页
2021-03-15 09:16:27
649
转载 JWT优缺点
基于session和基于jwt的方式的主要区别就是用户的状态保存的位置,session是保存在服务端的,而jwt是保存在客户端的。JWT的优点:可扩展性好 应用程序分布式部署的情况下,session需要做多机数据共享,通常可以存在数据库或者redis里面。而jwt不需要。无状态 jwt不在服务端存储任何状态。RESTful API的原则之一是无状态,发出请求时,总会返回带有参数的响应,不会产生附加影响。用户的认证状态引入这种附加影响,这破坏了这一原则。另外jwt的载荷中可以存储一些常用信息,用于交换信
2021-01-26 18:26:59
5790
1
转载 reids6.0安装报错
因工作需要,在一台云服务器上安装redis服务器系统为centos7,直接在redis官网查找地址,wget、tar后,执行马克命令时发现报错 serverLog(LL_NOTICE,"The server is now ready to accept connections at %s", server.unixsocket);
2020-10-26 22:41:00
390
原创 服务器查看日志几种方式
从后往前看:打开日志文件shift+g 定位到最后一行crtl+b像上看看最后几百行: tail -n 100 文件名实时看: tail -f 文件名上下翻动看: less -n 文件名向上: b 数字+b 向上键向下: f或空格 数字+f或空格 向下键退出: q日志关键字查询: cat -n 日志文件 | grep “关键字”...
2020-10-19 08:56:11
2413
原创 ElementUi Table复选框回显
ElementUi Table复选框回显UI代码: <el-table :data="acctSettleHangAccountList" style="width:700px;" height="300" ref="multipleTable" tooltip-effect="dark" @selection-change="auditTableHandleSelectionChange" :reserve-selection="tr
2020-10-10 18:17:01
1522
原创 记一次netty ByteBuf内存泄漏
netty-server服务端在接收数据的时候会将数据转换为ByteBuf,然后对数据处理。今天程序跑了很久,突然发现日志打印内存泄漏,当时在想,这个程序功能很单一,为什么会内存泄漏呢,后来看代码,发现有ByteBuf,但还是很疑惑,我以为netty会自动回收,后来看了博客,有些人说业务中的ByteBuf需要我们自己去回收。代码片段:public void channelRead(ChannelHandlerContext ctx, Object msg){ByteBuf buf = null;tr
2020-07-25 20:00:51
629
原创 如何让两个线程交替执行
public class Test07 {volatile boolean flag = false;public static void main(String[] args) { Test07 t7 = new Test07(); new Thread(()->{ int i = 65; while(i < 85){ synchronized (t7){ try{
2020-06-05 21:28:28
498
原创 netty实现简单的rpc通信
公共接口public interface HelloService {String hello(String msg);}生产者公共接口的实现public class HelloServiceImpl implements HelloService {@Overridepublic String hello(String msg) {System.out.println(“收到客户端消息=” + msg);//根据msg返回不同的结果if(msg != null){return “你
2020-05-29 12:13:42
157
原创 stream替代双层for循环
这是在处理业务中遇到的:数据如下:public class Book {private String bookId;private String name;private String depName;private String authDepName;public String getBookId() { return bookId;}public void setBookId(String bookId) { this.bookId = bookId;
2020-05-29 12:12:00
2946
原创 使用mybatis plus查询的啥时候 日期报错
原因mybatis plus使用的是localDate将driub升级为1.0.18即可解决问题
2020-05-29 11:51:21
627
原创 ArrayList和HashMap到底有什么区别?
以下为个人理解:ArrayList :数组HashMap: 数组+键值对所以说在java集合体系其实集合也可以按照某种维度来分为两类:单列集合 双列集合ArrayList是属于单列集合HashMap: 是属于双列集合两者的add数据的方式是不同的:ArrayList添加数据是会根据底层数组下标去添加的HashMap是根据添加数据的key经过计算去添加到对应位置的怎么计算的,我这里简单的讲一下:hashMap会拿到key的hashcode,经过扰动函数后拿到对应的hash值,通过(n-
2020-05-29 10:29:55
2423
原创 过滤器
很久之前学习记的笔记 当时看的是崔希凡老师的javaweb视频 现在在b站就有,学习javaweb的同学可以去看下,讲的很好,很有意思过滤器 (Filter)JavaWeb三大组键1.都需要再web.xml中进行配置 ServletListener (2个感知监听器不需要配置)Filter2.过滤器它会在一组资源(jsp, servlet,css, html)等等的前面执行它可以...
2020-04-28 21:20:03
148
原创 @ConditionalOnExpression注解使用方式
@ConditionalOnExpression("’KaTeX parse error: Expected 'EOF', got '&' at position 37: …('rabbitmq') &̲& ('{sms.consumer.state:0}’ != 0)")
2020-04-28 21:13:08
2020
原创 JAVA中将标准的IEEE754 4字节16进制数据转换为float类型数据
代码如下:byte[] bys = {0x41,(byte) 0x36,(byte) 0x66,(byte) 0x66};ByteArrayInputStream byteArrayInputStream =new ByteArrayInputStream(bys);DataInputStream dataInputStream =new DataInputStream(byteArra...
2020-04-28 21:11:09
1438
原创 JAVA中关于float浮点数转换为IEEE754标准4字节16进制数据转换方式
关于解析的具体写法是从一篇文章中摘取下来的原文url:https://blog.csdn.net/mhl29/article/details/51406834具体代码:public class TestMain {public static void main(String[] args) { Float f = 11.4f; String s = floatToIEEE...
2020-04-28 21:08:46
2278
2
原创 ajax的使用
Ajax是什么?Asynchronous javascript and xml 异步的js和xml它能使用js访问服务器 而且是异步访问服务器给客户端的响应一般是整个页面 一个html完整页面 但在ajax中 因为是局部刷新 那么服务器就不用再响应整个页面 而只是数据text: 纯文本xmljson 它是js提供的数据交换格式 它在ajax中最受欢迎异步交互和同步交互:同步...
2020-01-10 17:11:38
102
原创 cmd启动数据库找不到路径问题
在cmd启动数据库时 提示找不到文件路径: 本人遇到此问题是因为 刚开始将mysql默认装到了C盘 后来转到了D盘 就遇到此问题了: 因此 记录一下: 解决方案如下: 仅供各位参考: 修改 my.ini文件中: basedir="D:/MySQL/MySQL Server 5.5/" datadir="D:...
2019-04-08 17:00:54
1263
空空如也
jquery ajax nginx 解决跨域问题
2022-07-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人