自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 thingsboard 源码核心ActorSystem

thingsboard ActorSystem 示意图

2024-01-02 22:59:34 383

原创 thingsboard 源码目录解读及菜单预览

thingboard 源码目录和菜单预览

2022-07-23 00:59:00 1121

原创 ThingsBoard 源码编译3.3.0

ThingsBoard是一个开源物联网平台,可实现物联网项目的快速开发、管理和扩展。

2022-07-22 21:07:40 1889

原创 自己觉得不错的源码分析专栏

源码分析专栏收藏

2022-07-22 20:04:57 359

原创 JAVA线程间的同步与通信-synchronized

JAVA线程间的同步与通信-synchronized介绍实现机制原理线程中断(interrupt)清除中断状态方法抛出InterruptedException,并且清除中断状态锁升级锁的升级过程Java 对象头全局安全点(safepoint)偏向锁(多线程竞争可以考虑禁用)批量重偏向批量重偏向的原理轻量级锁重量级锁锁的其他优化介绍线程状态 /* Java thread status for tools, * initialized to indicate thread 'not yet

2021-11-05 00:59:18 252

原创 JVM垃圾回收-三色标记法

JVM垃圾回收-三色标记法JVM垃圾回收简单回顾如何确定垃圾引用计数法可达性分析GC roots第一次标记第二次标记三色标记法三色标记算法思想多标漏标CMS 之 Increment UpdateCMS 收集过程写屏障G1 之 SATBG1 收集Card Table(多种垃圾回收器均具备)RSet(Remembered Set)CSet(Collection Set)youngGCOld GC 之 并发标记周期SATB(Snapshot At The Beginning),JVM垃圾回收简单回顾关于垃

2021-11-03 23:51:45 630

原创 JAVA内存模型

JAVA内存模型线程间通讯jmm 八种操作有序性内存屏障happens-before原则可见性总线嗅探机制volatile原子性锁线程间通讯Java 里面进行多线程通信的主要方式就是共享内存的方式,而scala语言采用线程间发消息机制进行通信。具体共享的内存,参考jvm 内存结构来看:#JMM解决什么问题JMM研究的是在多线程下Java代码的执行顺序,以及共享变量的读写。在多线程下,对共享变量读写的场景下,代码的执行结果可能和自己的期望结果不一致。为什么会产生这种现象呢?共享变量内存读写,

2021-11-02 23:54:20 161

原创 消息队列服务 RabbitMQ

消息队列服务 RabbitMQ消息发布消费为什么选择RabbitMQmq优点相对缺点常用消息队列服务对比消息队列RabbitMQ基本对象交换机类型的路由特点Directfanouttopic头交换机(headers exchange)实际中使用最少交换机性能如何确保消息可靠性消息发送阶段mq broker 高可用普通集群模式镜像集群模式:消息消费阶段消费消息异常失败重复消费消息消息发生堆积监控与告警:消息发布消费简单模型:为什么选择RabbitMQmq优点1.解耦合,使系统于系统之前的通信更加灵

2021-11-02 14:54:39 1601

原创 redis 客户端的选择

redis 客户端的选择选型:jedisredission特性luttuce选型:jedis在线网址:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html比较全面的提供了Redis的操作特性,使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。不支持lua脚本redissionred

2021-11-02 00:59:14 230

原创 redis使用总结

REDIS 使用总结Redis基本数据类型字符串链表linkedlist字典hashtable跳跃表skiplist整数集合intset压缩列表ziplistredis 数据结构redis 为什么这么快redis 持久化RDBAOFredis 过期删除策略和内存淘汰机制惰性删除定期删除内存淘汰机制redis 高可用主从架构哨兵集群节点槽slot故障转移缓存击穿缓存穿透缓存雪崩Redis基本数据类型字符串redis没有直接使⽤C语⾔传统的字符串表示,⽽是⾃⼰实现的叫做简单动态字符串SDS的抽象类型。C语

2021-11-02 00:44:27 156

原创 mysql 使用总结-事务和加锁

mysql 使用总结mysql 引擎索引innodb 事务事务基本特性隔离级别:实现原理MVCC一条update 是怎么执行的?mysql锁mysql具体锁:锁机制:不加锁情况:加锁死锁日志状态输出时间查看错误日志输出位置获取死锁信息mysql 引擎myisam 是5.1版本之前的默认引擎,⽀持全⽂检索、压缩、空间函数等,但是不⽀持事务和⾏级锁,所以⼀般⽤于有⼤量查询少量插⼊的场景来使⽤,⽽且myisam不⽀持外键,并且索引和数据是分开存储的。innodb 是基于聚簇索引建⽴的,和myisam相反

2021-11-02 00:14:14 756

原创 Spring boot 启动 tomact 流程源码

启动流程spring boot tomcat 自动装配tomcat 主要组件启动流程Connector 组件获取网络数据流程Endpoint - AcceptorEndPoint - PollerProcessorAdaptercontainerspring boot tomcat 自动装配springboot 入口ServletWebServerFactoryAutoConfiguration,如下图,不再详细介绍。TomcatServletWebServerFactoryCustomizer

2021-09-17 02:32:58 243

原创 Java NIO

Java NIO 三大组件,Buffer 缓冲区, Channel 通道,Selecter 多路复用器选择器

2021-09-16 18:50:02 94

原创 问题排查:发红包一段时间就不能用了

问题:小红包服务一段时间就不能用了,红包发不出去。。。临时接受排查任务,对项目并不熟悉,首先从日志开始。。。服务器日志:从日志看是access_token 失效导致,并查看pod里内存使用,排除内存溢出情况。部署情况猜测 :维护access_token更新机制出来问题查看项目源代码WorkQyConfigScheduler 类,进行access_token更新机制@Scheduled(cron = "0/30 * * * * ?")public v...

2021-09-14 19:13:24 143

原创 raft 演示动画

地址http://thesecretlivesofdata.com/raft/

2021-06-09 10:08:38 68

原创 有n个台阶,每次走1或2个台阶,一共有几种走法? 排列组合来实现

面试XXX金服面试算法题有n个台阶,每次走1或2个台阶,一共有几种走法?用了2个小时,写了排列组合的实现算法。发现原来是 斐波那契数列 。。。。。。可是。。。可但是。。。/** * 有n个台阶,每次走1或2个台阶,一共有几种走法? */private static long calc(int count) { //计算出每步2个台阶, 最大走的次数step2 ...

2020-04-10 22:43:15 2048 1

转载 MySQL索引及其实现原理(基于MyISAM及InnoDB引擎)

1 数据结构及算法基础1.1 索引的本质官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构本质:索引是数据结构查询是数据库的最主要功能之一。我们都希望查询速度能尽可能快,因此数据库系统的设计者会从查询算法角度优化最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的好在CS的发展提供了很多...

2020-02-20 11:33:49 513

转载 MySql数据库之【索引和锁】

一、索引使用索引为什么可以加快数据库的检索速度啊? 为什么说索引会降低插入、删除、修改等维护任务的速度。 索引的最左匹配原则指的是什么? Hash索引和B+树索引有什么区别?主流的使用哪一个比较多?InnoDB存储都支持吗? 聚集索引和非聚集索引有什么区别? ........ 1.1聊聊索引的基础知识首先Mysql的基本存储结构是页(记录都存在页里边):各个数据...

2020-02-20 11:23:20 243

转载 YModem协议

YModem协议YModem协议是由XModem协议演变而来的,是一种发送并等待的协议,即发送方发送一个数据包以后,都 要等待接收方的确认。如果是 ACK 信号,则可以发送新的包。如果是 NAK 信号, 则重发或者错误退出。每包数据可以达到1024字节,是一个非常高效的文件传输协议所用到的符号#define MODEM_SOH 0x01 //数据块起始字符#define MODEM...

2019-06-21 10:15:50 3156

原创 IOT透传数据,使用mqtt通讯协议,qos = 1。网络不畅时,坐限流处理。

IOT透传数据,使用mqtt通讯协议,qos = 1。网络不畅时,客户端做限流处理。初始化:AtomicInteger limit = 0; canSendTime = loadCanSendTime(); if(null == canSendTime){canSendTime = now();}发出任何条指令,toSend: if(...

2019-04-30 11:12:26 2173

原创 关于skywalkig抽样数的设置问题

关于skywalkig抽样数的设置问题关于agent.sample_n_per_3_secs 配置项的设置通过配置 Config.Agent.SAMPLE_N_PER_3_SECS 属性,设置 每3秒,收集 TraceSegment的条数。默认情况下,agent.sample_n_per_3_secs = -1,代表在不超过内存Buffer区(5*300TraceSegment)的前提下,...

2018-11-16 14:55:10 6529

转载 为什么要采用微服务?

 未拆分微服务的单体应用复杂性高 :以百万行级别的单体应用为例,整个项目包含的模块非常多,模块的边界模糊,依赖关系不清晰,代码质量参差不齐,混乱地堆砌在一起……整个项目非常复杂。技术债务:随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多。部署频率低:而在单体应用中,每次功能的变更或缺陷的修复都会导致我们要重新部署整个应用。全量部署的方式耗时长、影响范围大、风...

2018-08-09 22:16:29 1725

转载 spring cloud config center Git SSH configuration

官方的Git SSH configuration,企业git私服的配置仓库,可以参考配置Git SSH configuration using propertiesBy default, the JGit library used by Spring Cloud Config Server uses SSH configuration files such as ~/.ssh/known_...

2018-07-01 23:52:22 1095

转载 Spring Boot 使用 Druid 和监控配置

Spring Boot 使用 Druid 和监控配置Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能。业界把 Druid 和 HikariCP 做对比后,虽说 HikariCP 的性能比 Druid 高,但是因为 Druid 包括很多维度的统计和分析功能,所以这也是大家都选择使用它的原因。下面来说明如何在 Spring Boot 中配置使用Druid1...

2018-07-01 23:37:40 142

原创 springboot 项目改进成多个数据源时遇到的问题

之前使用mybatis注解创建动态的sql语句,把相关jar包添加到springboot项目中使用,springboot中@SpringBootApplication默认scanBasePackages是当前包可以修改增加相关的多个包名@SpringBootApplication(scanBasePackages = {"xyz.ccw.cloud"})增加DataSourceUs...

2018-07-01 23:22:01 1132

原创 mybatis 从3.2.8升级到3.4.5,拦截器 SqlInterceptor需要改动的地方

  SqlInterceptor implements Interceptor需要改动的点 @Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class }) })增加Integer参数 @Intercepts({ @Signat...

2018-07-01 22:52:59 1516

转载 springcloud 配置中心 SSH 密钥验证

摘录Config 配置中心 小结SSH 密钥验证配置:公钥在git账号个人中心设置,github有单独的ssh设置条目,tfs在安全设置;不同平台可能不一样,自寻; 私钥开头和结尾前一行需要\n,中间行需要 \ 连接;要保证秘钥内容是绿色有效值文本; 目前网上关于SSH配置的博文较少,我所见几篇都是yml格式且是官方文档原文,如有问题欢迎联系spring.cloud.conf...

2018-06-29 12:57:04 4259 5

转载 JDK1.8 JVM内存模型

一、JDK1.8 JVM内存模型概览这里介绍的是JDK1.8 JVM内存模型。1.8同1.7比,最大的差别就是:元数据区取代了永久代。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存。二、各区域介绍1. 程序计数器每个线程一块,指向当前线程正在执行的字节码代码的行号。如果当前线程执行的是n...

2018-06-25 23:46:40 354

原创 蓝牙自动重连

1利用系统中的自动重连getDevice().connectGatt(context, autoConnect, coreGattCallback);private BleGattCallback coreGattCallback = new BleGattCallback() { @Overridepublic void onDisConnected(Blueto...

2018-06-20 23:38:14 6075

转载 为什么使用redis

1、为什么使用redis分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。因此,这个问题主要从性能和并发两个角度去答。回答:如下所示,分为两点(一)性能如下图所示,我们在碰到需要执行耗时特别久,且结果不...

2018-06-15 11:22:30 184

翻译 eureka 配置

# 端口server.port=6001eureka.instance.hostname=localhost#In standalone mode, you might prefer to switch off the client side behaviour, so it doesn’t keep trying and failing to reach its peers#在单机情...

2018-06-07 10:44:13 453

转载 xtrabackup 数据库备份

Percona XtraBackup是一款基于MySQL的热备份的开源实用程序,它可以备份5.1到5.7版本上InnoDB,XtraDB,MyISAM存储引擎的表,Xtrabackup有两个主要的工具:xtrabackup、innobackupex  (1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表  (2)innobackupex则封装了...

2018-06-07 10:43:39 163

原创 并发测试未通过,自己使用jmeter寻找性能瓶颈

检查是否有大循环重复产生新对象实体。检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存...

2018-06-07 10:41:24 5028

原创 Database access problem. Killing off this connection and all remaining connections in the connection

<property name="connectionTimeoutInMs" value="10000"/><property name="maxConnectionAgeInSeconds" value="600"/>连接池最大连接时间要小于数据库中最大连接保持时间(wait_timeout连接等待时间)。否则数据库超时时,会断开连接,BoneCP连接池依然会把已...

2018-06-07 10:24:25 6211 7

转载 CentOS搭建Git服务器及权限管理

CentOS搭建Git服务器及权限管理声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考。1. 系统环境系统: Linux:CentOS 7.2 64位由于CentOS已经内置了OpenSSH,如果您的系统没有,请自行安装。查看ssh版本$ ssh -V# 输出以下表示没问题,可以继续。 版本可能不一致,能用即可。OpenS...

2018-06-02 21:08:33 1083

转载 Redis配置文件详解

 Redis配置文件详解 redis是一款开源的、高性能的键-值存储(key-value store),和memcached类似,redis常被称作是一款key-value内存存储系统或者内存数据库,同时由于它支持丰富的数据结构,又被称为一种数据结构服务器(data structure server)。 编译完redis,它的配置文件在源码目录下 redis.conf  ,将其...

2018-04-10 16:44:21 97

原创 javaCRC8计算的坑

c语言的crc8uint8_t calcCRC8(uint8_t *ptr, uint8_tlen){uint8_t crc;uint8_t i;    crc = 0;   while(len--) {      crc ^= *ptr++;      for(i = 0; i &lt; 8; i++) {         if(crc &amp; 0x0...

2018-04-06 19:47:51 2092

转载 优秀技术人的管理陷阱

优秀技术人的管理陷阱写在前面  几乎每一位做软件开发的技术人,都听过类似这样的话,“30 岁以后,身体比不过 20 几岁的年轻人,需要转型做管理了”。这句话理解起来是没有问题的。的确年龄越大身体就越比不过自己 20 多岁的时候,拼体力不够,但拼经验也完全够资格去带领年轻的团队上战场搏杀了,不过这里面的“管理”一词,不单单是管人,我认为赋予了太多的内涵,之后我慢慢说道。  另外也有相反的...

2018-04-04 17:24:48 140

原创 spark1.5.1源码学习初探

如果hadoop源码中的Hadoop RPC通信把你搞得晕头转向,来搞spark吧。spark是scala语言实现的,早期的通讯使用的是akka通讯,后面默认是netty,spark2.X将彻底被弃用(说的重点不是netty代替了akka,而是akka让十分方便我们了解spark通讯细节)。第一  scala语言比java更简洁;第二  akka通讯框架,更方便查找sender和recei...

2018-04-01 23:02:40 187

原创 elasticsearch 体验,

elastic search 是高可用、开源、富文本的搜索和分析引擎。支持大数据量快速近实时的存储、搜索和分析。通常用作支持复杂查询的底层引擎/技术,为具有复杂搜索特性和需求的应用程序提供动力。官网网站中的 Elasticsearch documentation解说的十分详细。但都是英文的,没办法外国人写的,先学习借鉴吧。--index mapping-- curl -XPUT http...

2018-03-31 18:38:39 208

汇编语言程序设计(3)廖建明 5-23题答案

汇编语言程序设计(3)廖建明 5-23题答案

2013-04-20

空空如也

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

TA关注的人

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