自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (2)
  • 收藏
  • 关注

原创 公式排序算法实际运用

试想下这个么个场景:用户可以自己配置多个公式,公式与公式之间又有依赖关系。比如A=B+C ,B=C+D。需要做个算法来排序这些公式。实际我们可以分为两个步骤来看这个问题。1,配置的公式之间不能死循环依赖。比如A=B+C ,B=A+C。这种A依赖于B,那就的先算B。但是B又依赖于A,的先算A。这就成了死循环,这种必须检测出来,提示用户配置错误。2,依赖的公式之间必须要排序,这样才能保证计算结果正确。比如:A=B+C ,B=C+D。那么公式排序下来B=C+D就要先算,A=B+C就的后算。

2024-03-11 13:23:15 229

原创 kafka高水位和leader epoch

高水位表示分区下副本消息到哪里是算正常提交的。比如如下图:leader副本写到8了,follower副本也写到8,那么这个8就代表要求的副本都写入了。消息到8这里才算提交成功,后面的15写入了也不算提交成功,消费端只能看到8以前的数据。只有要求的副本都写入15后,高水位才会变为15。所以也可以说高水位表示消息的可见性。后面的LEO表示当前副本消息的最后日志位置,高水位(HW)和LEO结合才能完成副本的同步。

2024-03-06 14:44:56 373

原创 kafka消费者重平衡是什么?怎么避免?

消费者重平衡是指主题下的分区怎么分配给消费者的过程。下面这个图可以看出该过程:原来有2个消费者,3个分区,其中一个消费者肯定就的处理2个分区了。那么当新加入消费者时,则每个消费者就只处理一个分区了。处理这个分区过程的叫协调者,协调者就在broker端。当发生重平衡时,所有消费者都不能收到消息,所以发生这个过程是非常严肃的。

2024-03-02 11:14:18 518

原创 kafka同步副本集及关键参数

如果副本超过10秒没有发起数据拉取操作,则认为该副本太落后了,剔出同步副本集。当leader副本挂了时,会从候选副本集中选者一个当leader副本继续对外提供服务。那么这个候选副本其实就是同步副本集,如果副本的数据和leader副本数据差太多时,该副本会被踢出同步副本集,如果数据追上来了则又加入该副本集。min.insync.replicas=3 最少同步副本集个数,当同步副本集个数大于等于该数时才算写入成功。acks=all或-1时,必须等到同步副本集都成功写入时,才响应成功。最高持久性,最低吞吐量。

2024-02-29 18:16:55 522

原创 一文读懂kafka内部怎么运行的

跟随副本只会在leader副本的broker挂了时,候选为leader副本。你看架构图中的partition0、partition1、partition2分属于不同的broker,当partition0的broker挂了时,那么partition1,partition2的机器会基于zookeeper选举为新的leader,从而继续提供服务。元信息里包含了broker列表,分区列表,副本列表等信息,可以理解为主题分区及副本的映射关系。相同的key则会落到同一个分区上,那么相同的key也就有了顺序性。

2024-02-28 17:36:05 439

原创 设计原则回顾

对新增的功能,尽量不是去改现有的代码,而是直接扩展新的代码。使用小而精的接口,替换大的接口。多态也是很多设计模式、设计原则、编程技巧的代码实现基础,比如策略模式、基于接口而非实现编程、依赖倒置原则、里式替换原则、利用多态去掉冗长的 if-else 语句等。比如一个类又在干订单的事,又在干运单的事,那么它就不符合这个原则。抽象讲的是如何隐藏方法的具体实现,让调用者只需要关心方法提供了哪些功能,并不需要知道这些功能是如何实现的。多态是指,子类可以替换父类,在实际的代码运行过程中,调用子类的方法实现。

2024-02-23 17:27:56 316

原创 redis:数据倾斜是什么?怎么应对热点数据?

要知道什么是数据倾斜就的搞清楚redis是怎么存储和访问数据的。数据会按照一定的规则分布到不同槽上,然后槽又落在不同的机器节点上。比如把key进行crc16函数计算后的值对槽取模,然后槽会分配到不同的节点上。然后存取都会到对应的节点上去进行处理。

2024-02-22 16:53:24 660

原创 Redis高性能原理

redis大家都知道拥有很高的性能,每秒可以支持上万个请求,这里探讨下它高性能的原理。单线程架构和io多路复用技术。

2024-02-22 11:28:55 404

原创 缓存使用常见思路及问题

缓存是我们用来减少数据库访问的常见操作,里面的一些常见思路及问题这里总结下。下面以redis举例。

2024-02-19 18:32:42 541

原创 高并发系统:常见的设计思路

高并发的书籍文章其实有很多,我们工作中也或多或少遇到过一些。今天这里总结下常见的思路。

2024-02-18 17:27:26 299

原创 分布式事务:2PC、3PC、TCC、zab协议回顾

当一个投票周期结束时,你会对比自己的投票池,看你收到了几个票,投出去了几个票,你是否满足票数过半。当过半的跟随者都写入时成功时,leader会让跟随者提交数据,这时跟随者才提交数据。所以写入性能不会很高,是单机的。这种情况,跟随者会将自己没提交的提交了,然后进行选举,有高事务ID的跟随者会当选leader。阶段一:协调者发送事务的请求到事务的执行方,执行方执行事务并记录undo和redo,但不提交事务。阶段二:协调者发送事务的请求到事务的执行方,执行方执行事务并记录undo和redo,但不提交事务。

2024-01-29 20:37:19 333

原创 分布式事务理论基础

比如订单转运单场景下,订单是一个服务,运单也是一个服务。分区网络故障是不能排除的,所以一般是AP和CP组合。但是注意P只是要考虑的一种情况,当没发生网络分区时,AC也是正常的。一致性(C):指在分布式系统中,所有节点在同一时刻存储的数值是一样的。AP组合牺牲一致性,这里说的一致性只是暂时的放弃,其实还有最终一致性。eureka采用的是ap组合,牺牲了数据一致性。现在的互联网开发中基本都会用到微服务架构,那么其中涉及的一些理论基础是必须要掌握的,这里总结下方便回顾。指数据的中间状态,就像上面的支付中一样。

2024-01-24 21:56:44 367

原创 故障排查及处理

kafka的消息积压情况,es的负载情况。比如5分钟以内的建单量,或者5分钟内某关键接口的调用量等。如果是某个服务的很多节点都负载变高了,且流量也变大了。有些陈年老代码里面的查询,走的是大表的全表扫描。我就遇到过很多线上故障:比如每个用户的缓存过期时间设置的一样,那么同时过期会导致大量请求走到数据库,数据库负载一下就拉高了。看各自项目的报错基本都报的什么有一个初步的判断。2)查看数据库的负载情况。突然收到某服务的告警,然后引发了更多服务的告警。想要得心应手的处理故障,那么故障前的准备是必不可少的。

2024-01-21 16:41:49 405

原创 mongodb 常用语法

客户编号" : {$addToSet : "$customer_a_pt"} //还可以某字段加入set。"_id":{"group_id":"$group_id"},//分组字段。"求和":{$sum:1}//求和,"$sort":{"求和":-1}//倒排序。$match:{//查询条件。db.表名.aggregate([

2023-06-30 16:33:04 75

原创 spring aop 原理学习笔记

spring aop 原理

2022-07-24 22:35:03 114

原创 BeanDefinition学习笔记

spring BeanDefinition

2022-07-19 21:52:49 223

原创 redis分布式锁原理及Redisson怎么实现

redis分布式锁+redisson实现

2022-06-08 16:59:09 371

原创 mybatis原理梳理

SqlSessionFactoryBuilder 是配置文件解析的入口插件只需要实现xxx接口

2022-06-07 12:36:54 200

原创 spring cloud feign+ribbon运行原理

feign+ribbon运行原理

2022-05-16 22:55:21 657 1

原创 spring cloud + eurka 优雅停机

方案背景:如果项目采用spring cloud+eurka注册中心架构,网关会从注册中心拉取最新的服务列表。服务发版本时,会有流量从网关打到已经下线的pod上。究其原因是从eurka注册中心检测到服务下线,到网关拉取最新的服务列表,这个过程实际比较耗时。说白了就是网关不能及时检测到服务已经下线了。这中间网关还是会把流量请求到以下线的服务上,造成请求的失败。这个就是为什么要做优雅停机的原因。但是基于eurka的这种注册中心做到实时检测很难。我们可以曲线救国。具体实现方式: ...

2022-05-06 22:47:57 690

原创 spring boot 接入cat监控 spi扩展配置方式 不用client.xml

最近要接入cat监控,不想用默认的xml配置方式。所以研究了下源码,发现可以用java spi方式实现ClientConfig。Cat.java private static ClientConfig getSpiClientConfig() { //spi加载方式 ServiceLoader<ClientConfigProvider> clientConfigProviders = ServiceLoader.load(ClientConfigProvi

2022-04-26 22:22:58 800

原创 mysql 常见优化手段及死锁优化整理

mysql 常见优化手段整理

2022-04-17 11:57:45 922

原创 redis常用数据结构适用场景总结

redis常用数据结构及适用场景总结

2022-04-14 23:07:08 819

原创 redis存储关系性数据库数据

最近公司数据库内存占用比较高,一直在着手寻找解决方案。虽然大家都知道系统架构有很多不合理的地方,但是我们是金融公司,系统庞大,业务牵扯繁多,大家都不敢轻易对系统动大手术。    最后决定先给数据库中常用的一些静态表先加一层缓存。抛开数据库优化配置不说,数据库访问量下来了,内存肯定也不会高到哪里去。    因为这里缓存以后会存储更多需要精细化控制的表信息,而且结合分布式场景的需要,所

2017-04-24 10:19:40 5493 1

原创 android开发之sax解析xml文档

做android开发的掌握一两种解析xml的技术是很重要的,今天和大家分享下,怎么在android中利用SAX解析xml。      这里不对sax做过多的介绍,推荐读者去查看:点击打开链接。这样我们的内容就变的简单了。下面先看一下我们要解析的xml文档内容:Zeng

2011-07-20 16:21:35 1554

原创 android开发之SQLite数据库 增、删、改、查

学习android开发不可避免的会涉及数据库的使用,android使用的是SQLite数据库。对于SQLite数据库的基本星系

2011-07-12 15:03:07 46451 1

原创 android开发之蓝牙初步 扫描已配对蓝牙、更改蓝牙可见性、搜索外部蓝牙设备

这两天我学习了android蓝牙的一些简单操作,今天和大家分享一下。一,获得BluetoothAdapter对象BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();二,判断当前设备中是否有蓝牙设备if(a

2011-07-11 16:20:35 17158 2

原创 android开发之wifi网络操作初步

一,先了解wifi是什么Wi-Fi是一种可以将个人电脑、手持设备(如PDA、手机)等终端以无线方式互相连接的技术。比较常见的就是一个无线路由器,在它发出的无线电波有效范围内都可以通过wifi方式连接到网络,如果无线路由器连接了一条ADSL线路或者其他的上网线路,则又被称为“热点”

2011-07-07 12:33:56 9234 5

原创 android开发之socket通信 向PC机发信息 获取本机IP

今天早早的就完成了任务,给大家分享一下socket编程。android中使用的是java的socket模型,如果你学过java网络编程,那么你对它一定不陌生。今天我主要使用TCP协议实现通信的。小知识点:UDP协议和TCP协议的不同。UDP是把数据都打成数据包

2011-07-06 18:01:47 41888 22

原创 android开发之Widget AppWidgetProvider 桌面短信

今天了解了哈AppWidgetProvider 这个东西,很好耍。下面讲下怎样实现:1,编写一个类继承AppWidgetProvider 类        AppWidgetProvider 类继承了BroadcastRecevier类,可以复写onUpdat

2011-07-05 21:27:23 3254

原创 android开发之下载文本、音乐文件

今天和大家分享一下在android上怎么下载文件到手机上。主要有两点大类容:一,通过Http协议下载文件。创建一个HttpURLConnection对象HttpURLConnection urlConn = (HttpURLConnection) url

2011-07-03 20:54:14 7986

原创 android开发之广播机制一 初学乍道

       广播机制是android开发中一个不可或缺的好东西,今天我们就来看看广播机制到底是怎么个东西。广播由某个事件触发,然后系统就发出广播,系统只管发广播而不会管之后的事。比如:系统电量过低这个事件就会触发系统发出广播。发出广播后,由广播接收器来接收。在系统里注册了很多广播接收器,广播接收器会判断发来的广播是否符合自己的注册类型,如果符合就会调用对应的广播接收器类来操作。下面就来看看代码是

2011-07-02 18:13:47 1886 1

原创 android开发之滑动手势翻图 滑动手势监听

       今晚就再整理点有用的东西,这是关于手势滑动的例子:虽然网上也有,但是我还是整理了下,希望对读者有帮助:下面贴出代码:package android.apps;import java.io.File;import java.util.ArrayList;import java.util.List;import android.app.Activity;impor

2011-06-04 01:23:00 27834 12

原创 android开发之简单图片浏览器 读取sdcard图片+形成缩略图+Gallery

     这几天闲着没事就学着做个图片浏览器,做的很简漏,但是还是可以和大家分享一下。其中值得和大家说到的重点有:一,读取SD卡上面的图片信息 //想要的返回值所在的列 String[] projection = { MediaStore.Images.Thumbnails._ID}; //图片信息存储在 android.provider.MediaStore.Images.Thu

2011-06-04 00:42:00 19414 15

原创 android开发之MediaPlayer+Service MP3播放器

前段时间刚学习Android时就觉得MediaPlayer是个很神奇的东西,就试着做了个简单的音乐播放器。支持后台播放、进度条拖放、音量控制、读取sdCard音乐文件进行播放等。下面贴出重要点。 播放音乐文件是调用android的MediaPla

2011-05-27 18:23:00 33819 22

原创 android开发之Activity与Service绑定

android之activity绑定service

2011-05-26 22:37:00 18449 5

android 简单图片浏览器 学习的好资料 手机通过调试

读取查找数据库 读取sdcard图片+缩略图+GridView +Gallery 适合学习者使用 注释写的很全 手机通过调试

2011-06-04

android MP3播放器

Mediaplayer+Service实现的MP3播放器。支持后台播放、进度条刷新、音量控制及其他基本功能。注释写的比较全,适合大众口味。

2011-05-27

空空如也

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

TA关注的人

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