自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 tcp/ip细节

读到后应该主动调用close,进入last_ack且等待ack后进入closed, 注意长期处于close_wait一般是应用层写的不好(没有去读,读到eof也不close)linger开启,linger时间大于0: close等待fin的ack或超时到来,发送缓冲区未发出数据会发的,若close是超时返回会发reset。被动方:收到fin-很快会回ack,进入close_wait(等待应用层调用close),此时应用层可读可写,但终归会读到fin/eof,一般很少,可能批量或混在发送包里微微延迟。

2024-04-07 16:50:18 655 1

原创 mybatis mybatis plus

如mybatis的配置,可以在容器内定义一个Configuration对象(承接mybatis前缀配置), 然后将此对象注入SqlSessionFactoryBean,mybatis类似-定义MybatisConfiguration对象,或者直接生成相关对象并设置。mybatis用的配置前缀为mybatis,mybatis-plus为mybatis-plus,存在大量使用mybatis-plus的项目配的是mybatis前缀配置(错误)多数据源一般通过spring的手动定义bean来实现。

2023-02-21 11:27:50 296

原创 trace相关杂谈

客户端:arms sdk/agent,otel sdk/agent,arms agent+otel sdk(注意arms agent对otel sdk做了处理,arms和otel不同上下文,需将arms agent的外层点和otel sdk内层点合为一体)问题:sdk很薄,实际在agent增强了,sdk很弱,没错,你只能获取traceId/spanId/span属性+改变span的属性,无法新增span,无法自定义指标。opencensus-trace+metric规范,agent+collector。

2022-09-27 11:01:31 560

原创 spring cloud-配置动态刷新

RefreshScope:定义scope为refresh的bean,定义cglib代理bean,代理bean的每次方法调用-beanFactory-scope-找到被代理bean并调用其方法。nacos:长轮询发现某dataId+group配置变更,listener发布refreshEvent。2 RefreshScope内bean摧毁,摧毁后下次代理上方法调用会重新生成,@Value重新注入。配置文件变更+手动调用/actuator/refresh发布refreshEvent。

2022-09-06 16:44:00 748

原创 证书-ssl

PKI: public key infrastructure ,CA: certificate authority,即发证机构,含多层结构,CA的证书可用于验证CA颁发的证书的有效性。ssl单向认证和双向认证:单向-服务端有证书,双向-客户端服务端都有证书,如https多为单向,根据是否要验证对方的证书最多能涉及到四个证书。证书:公钥, 持有者信息,有效期,签发者(上级CA)信息,原始数据,hash函数,签名(原始-hash-上级CA私钥加密)等。自签名证书:非受信CA颁发的证书,比如咱们企业颁发的证书。.

2022-08-26 13:51:23 603

原创 rocketmq各类问题

死信队列也可以消费,可按死信topic,自定义消费组消费,这个时候基本要人工干预,找出无法正常消费的原因。消费组除了消费普通topic外,也会订阅其对应的重试topic。重试是先投递到延迟队列然后到重试队列,失败16次后到死信队列。每个消费组有其对应的重试和死信队列(topic)...

2022-08-09 18:05:43 89

原创 设计各类问题

单例,工厂方法/抽象工厂,模板方法,策略,享元,责任链,代理,装饰,观察者,适配器。观察者ApplicationEvent,ApplicationListener。简单工厂BeanFactory,传参不同(beanid)获取不同对象。策略spring访问底层资源的Resource接口。装饰Wrapper,Decorator类。1spring用到哪些设计模式。工厂方法FactoryBean。单例bean默认单例。2你常用哪些设计模式。...

2022-07-25 23:10:53 71

原创 一致性hash

均衡性问题加入新节点必定导致部分缓存数据失效(无法命中),这部分访问会落到新节点(重新加载数据),但新节点承担了原来某节点一半工作,导致这两个节点负载为其他节点一半,为缓解这种不均衡现象,虚拟节点(一个缓存服务器占用几个虚拟节点),这样新加缓存服务器会减少各其它服务器压力。解决分布式缓存的问题。在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。即普通hash,&或取模,映射关系大量改变,而一致性hash只影响单个节点。...

2022-07-25 17:17:28 77

原创 DDD分析

而基于充血模型(RichDomainModel)DDD正好相反,数据和对应的业务逻辑被封装到同一个类中。因此,这种充血模型满足面向对象的封装特性,是典型的面向对象编程风格。传统的mvc框架的开发,因为po对象只包含属性和setter、getter,不包含业务逻辑,叫做贫血模式;这种写法实际上并不符合面向对象的特性,实际是面向过程的写法。...

2022-07-24 23:55:49 337

原创 服务的发展演变

serverless无服务器架构,基于云原生(云原生的高级版本),一般云原生虽然弹性好,扩缩容方便,但我们仍需要关注服务器的使用情况,而serverless无需关注服务器,按照流量自动扩缩容(tpp),faas(函数)相对轻量,更适合serverless,baas(后端应用)相对重量,适合性稍微差点,即serverless很明显就是随着流量不断快速的扩缩容,一个很重启动很慢的东西显然没那么适合。...

2022-07-24 22:51:48 237

原创 限流算法说明

3漏桶请求来先缓存在桶内,桶有大小,请求来太多超过桶大小丢弃,以固定速率放行请求(桶有个固定大小的漏洞)注意漏桶-平滑突发流量,用于自己作为调用方保护被调用方,令牌桶-应对突发流量,自己作为被调用方应对突发流量。4令牌桶桶里有令牌,桶按固定速率生成令牌,令牌数量不可超过桶容量,请求来能获取到令牌即可同行,否则限流。1固定窗口若上一个窗口的尾部和下一个窗口的头部都存在大量请求,限流没达到效果。上面算法中,漏桶是唯一支持能缓存请求,排队等待的,其余都直接拒绝。...

2022-07-22 00:52:33 60

原创 分布式事务

此规范定义了TM,RM,AP,定义了它们之间交互的接口规范,大部分RDBMS如mysql都实现了XA规范,可作为RM使用实现具体交互细节在2pc3pc协议中体现2pcprepare/commit,未收到commit一直等(资源独占的性能问题,阻塞,不一致,单点)3pccanCommit/preCommit/doCommit,多了询问和参与者超时机制,第三阶段参与者超时未收到commit/abort直接提交,解决了2pc的诸多问题3pc是不是还有不一致问题?...

2022-07-21 23:34:49 129

原创 秒杀系统设计

3mq限流秒杀成功(抢到了redis内库存)后异步将流量转向其他系统(成功后的流量没那么大,但对于其他系统来说可能也扛不住),接到秒杀请求完成基本校验转异步(即抢库存操作竞争就不会太激烈)2动态生成下单页面url避免用户直接访问或在活动开始前访问下单页面,下单页面url可加随机数,活动开始后服务端生成。2后端限流sentinel等做好系统限流保护,直接失败用户重试可能加剧流量,排队等待放内存里逐渐处理。2lua脚本保证原子性,避免超卖判断库存大于0,然后减1,并发时出现减为负数。......

2022-07-21 16:35:55 107

原创 redis-其它

2redis事务multi/exec,没什么原子性,当成批量操作即可,某命令执行失败后面命令依然执行,先入列到exec才执行,结合watch机制可保证被watch的key从watch到exec期间不变事务才执行(隔离),无法回滚。这里的原子性分两点谈1隔离,批量操作不可分割,不会并发修改到我的数据2回滚,某命令失败回滚到初始状态。3lua脚本执行时不会有其他脚本或redis命令同时执行(隔离),失败后异常后面命令不执行,无法回滚。...

2022-07-21 00:34:45 195

原创 记一次hbase写入慢排查分析

版本:1.2.6现象:hbase写入耗时长,单机slow put数量上升,单机flush慢,内存达到高水位block request至高水位下(内存达到低水位会不断flush至低水位下),目前24G内存,高水位9.6G(240.4),低水位7.68G(9.60.8)具体分析:1 flush慢并非写入hdfs慢,怀疑是scan耗时太长,甚至可能死锁了2 flush的size大很好理解,并不是说达到128MB立即就flush了,是扔到flush队列了,flush队列可能有普通region的flush(队列,

2022-07-07 11:11:13 1651

原创 es-集群随笔(需再整理)

集群发现机制每个node配置部分其他节点,通过gossip互相认识,选举master,master会ping其他节点,维护和同步集群的状态es7:type消亡,即默认为_doces6和7 在集群通信层面区别_version与_primary_term和_seq_no区别get和search区别coordinate node:无法配置,每一个node都有此功能ingest node:ingest pipelinediscovery.zen.ping.unicast.hosts (推荐设置为所有的mas

2022-07-07 10:51:14 90

原创 redis锁

redis

2022-07-04 20:37:57 141

原创 常见算法题-面试用

1 两个单向链表是否相交及找到第一个交点相交意味着Y型,即后面一段是相同的,分别遍历两链表,若尾节点相同,则相交,遍历时记录链表长度,长的链表先走长度差后两链表同时遍历

2022-04-22 22:55:36 375

原创 CAP-常见系统分析

一致性:分布式系统,同步存在延迟,各节点的数据一定是不一样的读一致性:两次读取数据一致写一致性/读写一致性:写成功本身可以看成一个读操作,写完能看到,类似于两次读取结果一致多客户端,多节点将整个问题复杂化了客户端视角的读一致性:单个客户端两次读取(可能不同节点)一致,全局视角的读一致性:不同客户端同时两次读取一致客户端视角的写一致性:单个客户端写完自己能读,全局视角的写一致性:某客户端写完所有客户端都能读取到kafka:acks=-1(all)+同步发送 保证全局写一致,只能看到同步过的数据(h

2022-04-22 22:03:12 315

原创 分布式常见问题

分布式id:1 mysql自增字段或序列:可通过步长增加性能,如一次取1000,这1000客户端内存中分配2 uuid3 snowflake:64位的long,0 (1位)+ timestamp (41位)+ machine id (10位) + seq no (12位,支持每个节点每毫秒产生4096个序列号)缺点:没有全局时钟(即B比A生成更晚,但B的时钟更早,生成的小),系统时间回拨可能会产生重复id...

2022-04-21 20:33:04 109

原创 spring-boot类加载体系

spring-boot有自己的类加载器:加载BOOT-INF下所有类,一般来说所有类+jar都会copy到BOOT-INF下,JarLauncher启动spring-boot+tomcat+jar:spring-boot classloader加载BOOT-INF下所有类+资源(包括前端资源),tomcat生成了TomcatEmbeddedWebappClassLoader(其加载路径为WEB-INF),其parent为spring-boot的classloader,tomcat的classloader很

2022-03-28 16:38:58 1827

原创 hbase 常见问题

1 HBase什么时候做minor major compact我们都知道compact分为两类,一类叫Minor compact ,一类叫Major compact,两者有什么区别呢?两者的区别在于:Minor compact只是进行文件merge操作,而Major compact除了做文件Merge操作,还会将其中的delete项删除。hbase为了防止小文件(被刷到磁盘的menstore)过多,以保证保证查询效率,hbase需要在必要的时候将这些小的store file合并成相对较大的store

2022-01-19 10:15:54 879

原创 kafka消息拉取

整体在循环中:循环的跳出条件-拉取到消息了或时间(pollTimeout)到了返回的数量有限制-maxPollRecords,若当前客户端内存有数据但数量不足maxPollRecords,有多少返回多少,若超过maxPollRecords,返回maxPollRecords若当前无数据,或返回用户之前(为了流水线操作,提前发请求,下次用户poll就可以读到数据了),构建fetch request并poll1 本质是多个请求,每个请求到不同node,每个node的请求含多个partition,通过minB

2021-11-01 14:37:56 1305

原创 flink-概述

operator并行度相同+forward可合并,此时Task是一个operator chain,含main operator时间/计数 滚动/滑动 注意滚动不重叠,滑动需指定滑动步长 会话窗口(一段时间无数据进入结束窗口)Event/Ingestion/Window Processing Time,多用event timewatermark: 当event time=x的事件到达,认为event time=x-watermark的事件都到达了,注意不一定是event timeoperator

2021-10-12 17:37:54 185

原创 quartz

主线程:QuartzSchedulerThread1 获取triggernext_fire_time时间范围:起始: 当前时间-misfireThreshold(60s), 终止:当前时间+idleWaitTime(30s)+timeWindow(0)状态:waiting批次大小:maxBatchSize(1)排序:next_fire_time 增序,即一般取next_fire_time最小的那条注意:若misfire_instr=-1(ignore),则不加起始时间判断,即ignore的tri

2021-09-26 12:23:55 783

原创 es-各类问题

es默认行为,默认可搜索(index默认true),默认不存储(store默认false),默认_source开启,默认新字段加入mapping(dynamic默认true)所以几乎不用设置mapping的properties,设置只是为了指定类型

2021-08-12 18:48:14 181

原创 InvocationTargetException/UndeclaredThrowableException

InvocationTargetException: 反射调用抛出,target为真实异常UndeclaredThrowableException:jdk代理抛出,只有出现非接口定义的checkedException(非runtime非Error)才会抛出,undeclaredThrowable为真实异常

2021-08-02 17:27:17 198

原创 子查询锁表问题

1 发现insert on duplicate key update (主键或唯一索引相同update) lock wait timeout,此表上一直有锁定2 发现执行了 delete from client_config_report where ip not in(select ip from client_heartbeat_report)针对类似子查询,官网说明如上rc下非锁定读,rr下按next key lock的读锁单个sql本身作为一个事务,锁在事务结束后释放3 不建议使用这样的

2021-08-02 14:03:54 196

原创 云原生杂谈

kube-proxy 拦截的是进出 Kubernetes 节点的流量,而 sidecar proxy 拦截的是进出该 Pod 的流istio使用k8s CRD api配置Init容器(启动后很快终止) : 修改iptables 来截获流量转发给 proxy (流出pod,流入pod)Proxy容器:pilot-agent进程生成静态配置,启动并监控proxy进程,上报指标,proxy进程执行转发VirtualOutboundListener(15001) 按实际端口转发对应 Outbound lis

2021-08-02 09:56:35 433

原创 kafka- zk+controller - consumer rebalance

zk+controller:controller通过抢占zk节点选举topic/partition/replica/broker变动:一般先zk,controller监听zk,本地Partition/ReplicaStateMachine处理,元数据同步至其他broker+更新zkconsumer rebalance:每个broker都是group coordinator位点存储:0.9之前是zk,之后内置topic消费组位点存储在内置topic的partition为P,P的leader所在节点为.

2021-07-29 16:15:09 140

原创 beanPostProcessor加载顺序引发的问题

PersistenceExceptionTranslationPostProcessor需要Environment类型bean,遍历到recentOrderRepository(用户bean),需要ESMapperProxyFactory(FactoryBean)来生成,为了type check,即通过FactoryBean的getObjectType来确定recentOrderRepository是否是Environment类型,生成ESMapperProxyFactory,此bean的构造器注入需

2021-06-02 10:45:29 311

原创 zk详解分析

zk3.5之前不支持动态扩容,需要集群停止服务,修改配置文件后重新部署zk3.5之后支持动态扩容,可以先启动新机器,然后一台一台的重启旧机器即可,保证新增后集群为奇数且重启机器不过半ServerCnxnFactory/ServerCnxn: 默认NIO实现,用于接收客户端连接,一Accept线程,多Select线程,业务线程池具体处理,一般流程:NIOServerCnxn.doIO-ZooKeeperServer.processPacket-firstProcessor.processRequest

2021-05-11 18:01:50 397

原创 backlog

backlog用于设置accept queue,而accept函数是从accept queue获取连接(阻塞式)具体可见https://www.cnblogs.com/qiumingcheng/p/9492962.html

2021-05-08 15:03:35 120

原创 c3p0

PooledDataSource(ComboPooledDataSource,PoolBackedDataSource) 用户使用的DataSourceC3P0PooledConnectionPoolManager(简称PoolManager)含多个auth(username+password)对应的Pool,基本上用的都是默认authC3P0PooledConnectionPool(简称Pool)ResourcePool(BasicResourcePool,ResourcePoolFactory):

2021-04-22 15:55:48 356

原创 DruidDataSource

DruidDataSourceinitialSize minIdle(最小值) maxActive(最大值) poolingCount(池内的) maxActive(借出的)一般来说poolingCount+maxActive和minIdle和maxActive比较,以前有个maxIdle,现在不用了,导致有些和minIdle比较的逻辑有问题我们用connections这个数组,poolingCount就是现在的位置,总是在尾部取放,栈结构Lock,notEmpty和emptyDruidPoole

2021-04-20 17:38:16 1628

原创 mysql jdbc driver

核心类:ConnectionImpl StatementImpl MysqlIODriver.connect建立了真实连接并mysql handshake(先获取了服务端信息,后user,password认证)jdbc规范不要求,但mysql driver实现线程安全,每个连接都有一把锁ConnectionPropertiesImpl里有各mysql jdbc url属性prepareStatement客户端开启,客户端每次拼接好sql,发给服务端,服务端不感知,和普通sql执行一样服务端开启,

2021-04-15 20:48:52 1004

原创 jdbc异常规范

SQLException:sqlState规范定义的状态,errorCode具体db的返回码,mysql driver根据sqlState返回具体的SQLException的子类(具体见SQLError类)JDK 1.6 - JDBC4(判断是否存在java.sql.NClob类):jdbc4定义了SQLException 的多个子类mysql driver 在jdbc4按子类的实现返回,之前按SQLException的子类返回jdbc4异常类型分析SQLRecoverableException(m

2021-04-06 10:37:24 90

原创 DHCP/Netbios

DHCP服务器(路由器):用于分配ip/子网掩码/网关地址/dns,不启用这些需手动设置netbios:提供主机名(netbios名)和ip的映射,host解析:local host name —>hosts file—>dns server—>netbios name cache—>wins server—>broadcast—>lmhost file后面四个都是netbios,后面三个的顺序根据节点类型可配置cache来自于后面三个的结果wins serve

2021-03-29 15:51:13 540

原创 Http

1 form-data用于各种参数和文件上传webflux的webClient可用BodyInserters.fromMultipartData和MultipartBodyBuilder来构建请求头Content-Type: multipart/form-data; boundary=----XXXXXXXX请求体:----XXXXXXXXContent-Disposition: form-data; name=“file”; filename=“aa.txt”Content-Type: ap

2021-03-24 11:14:15 1332

原创 spring web+spring cloud gateway

spring-web:定义了@RequestMapping,@RestController,WebHandler, WebFilterspring-webmvc: 核心DispatcherServlet,和servlet容器(tomcat/jetty)天然契合spring-webflux: 核心DispatcherHandler(WebHandler), 多WebFilter一WebHandler处理DispatcherHandler:多HandlerMapping+多HandlerAdapter+

2021-03-18 11:22:43 541

opengl和3ds转换的文件

将3ds文件转入opengl中,可以实现3ds文件在opengl中的操作和运行

2012-10-29

空空如也

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

TA关注的人

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