- 博客(561)
- 资源 (52)
- 收藏
- 关注
原创 Seata 基于改良版雪花算法的分布式 UUID 生成器分析
一般来说,除了“全局唯一”这个基本属性之外,还会要求生成出来的 ID 具有“递增趋势”,这样的好处是能,从而减少数据库的 IO 压力,提升服务的性能。雪花算法,就是一个能生产生成算法。
2023-09-22 15:04:02
812
1
转载 Spring boot 如何优雅停机
什么叫优雅停机?简单的说,就是向应用进程发出停止指令之后,能保证正在执行的业务操作不受影响,直到操作运行完毕之后再停止服务。停止接收新的访问请求正在处理的请求,等待请求处理完毕;对于内部正在执行的其他任务,比如定时任务、mq 消费等等,也要等当前正在执行的任务执行完毕,并且不再启动新的任务当应用准备关闭的时候,按需向外发出信号,告知其他应用服务准备接手,以保证服务高可用如果暴力的关闭应用程序,比如通过。
2023-04-29 11:45:00
587
原创 常见内存溢出与CPU 100%问题
另外提一个参数也很有用,正常来说如果程序出现 OOM 之后,就是有代码存在内存泄漏的风险,这个时候即使能对外提供服务,其实也是有风险的,可能造成更多的请求有问题,所以该参数非常有必要,可以让 K8S 快速的再拉起来一个实例。因为 “AaAa” 和 “BBBB” 的 hash 值相同,会定位到用一个 bucket 中,这样就形成了 CAS 嵌套,产生死循环问题。通过 print 命令将线程 PID 转为 16 进制,根据该 16 进制值去打印的堆栈日志内查询,查看该线程所驻留的方法位置。
2023-04-29 09:30:00
1668
转载 线程池抛出异常 捕获不到怎么办
https://mp.weixin.qq.com/s/VfReAqovJwmn5IoadC_7ug,郎涯进行简单排版与补充在实际开发中,我们常常会用到线程池,但任务一旦提交到线程池之后,如果发生异常之后,怎么处理?怎么获取到异常信息?在了解这个问题之前,可以先看一下 线程池的源码解析,从源码中我们知道了线程池的提交方式:submit 和execute 的区别,接下来分别使用他们执行带有异常的任务!看结果是怎么样的!运行结果:可以看到:submit 不打印异常信息,而 execute 则会打印异常信息。
2023-04-28 11:45:00
1454
原创 分布式事务TCC 你真的理解了吗
Try(尝试)阶段: 在转账场景下,Try 要做的事情是就是检查账户余额是否充足,预留的资源就是转账资金Confirm(确认)阶段: 如果 Try 阶段执行成功的话,Confirm 阶段就会执行真正的扣钱操作Cancel(取消)阶段:释放 Try 阶段预留的转账资金一般情况下,当我们使用TCC模式的时候,需要自己实现tryconfirmcancel这三个方法,来达到最终一致性。也就是说,正常情况下会执行tryconfirm,如下图所示。出现异常的话会执行trycancel,如下图所示。因此,
2023-04-28 08:45:00
806
转载 10种神级性能优化手段
以 ROI 的视角看软件开发,初期人力成本的投入,后期的维护成本,计算资源的费用等等,选一个合适的方案而不是一个性能最高的方案。本篇结合个人经验总结了常见的性能优化手段,这些手段只是冰山一角。在初期就设计实现出一个完美的高性能系统是不可能的,随着软件的迭代和体量的增大,利用压测,各种工具(profiling,vmstat,iostat,netstat),以及监控手段,逐步找到系统的瓶颈,因地制宜地选择优化手段才是正道。有利必有弊,得到一些必然会失去一些,有一些手段要慎用。切忌过早优化、过度优化。
2023-04-27 23:50:02
318
原创 消息中间件如何选型 图解 Kafka vs RabbitMQ vs RocketMQ 的差异
Why choose RocketMQComparing RocketMQ, Kafka, and RabbitMQ
2023-01-17 08:30:00
902
转载 「springcloud 2021 系列」配置中心 Apollo Nacos Config 如何选型
Nacos 使用起来比较简单,并且还可以直接用来做服务发现及管理。Apollo 只能用来做配置管理,使用相对复杂一些
2023-01-16 12:00:00
441
原创 一张图了解浏览器存储 Cookies vs Web Storage vs IndexedDB
【代码】一张图了解浏览器存储 Cookies vs Web Storage vs IndexedDB。
2023-01-16 08:30:00
353
转载 「springcloud 2021 系列」注册中心的服务注册与发现 ZooKeeper Consul Nacos 如何选型
如果服务信息发生变更,注册中心会将变更推送给相关联的服务,更新服务地址信息,无需手动更新,也不需要重启服务,这些对开发者来说完全是无感的。微服务架构下,一个系统通常由多个微服务组成(比如电商系统可能分为用户服务、商品服务、订单服务等服务),一个用户请求可能会需要多个服务参与,这些服务之间互相配合以维持系统的正常运行。每个服务节点在启动运行的时候,会向注册中心注册服务,也就是将自己的地址信息(ip、端口以及服务名字等信息的组合)上报给注册中心,注册中心负责将地址信息保存起来,这就是。
2023-01-15 23:25:17
396
原创 Redis 如何解决内存占用过大、不释放的问题
下图中每个参数具体的含义,Redis 官方文档有详细的介绍:https://redis.io/commands/INFO。如果你采用的是高可用架构的 Redis 集群的话,你可以将碎片率过高的主节点转换为从节点,以便进行安全重启。值就是内存碎片的大小!这不仅包括内存碎片,还包括其他进程开销,以及共享库、堆栈等的开销。意味着你使用 Redis 存储实际大小 2G 的数据需要使用大于 3G 的内存。常用的过期数据的删除策略就两个(重要!,它表示当运行内存超过最大设置内存时,不淘汰任何数据,但新增操作会报错!
2023-01-01 09:11:01
8241
原创 字节京东互联网大厂为什么使用 clickhouse
*郭东东:**ClickHouse 在字节的应用场景比较多,比如我负责的数据应用平台,基本上很多底层技术都非常多地依赖 ClickHouse 提供的能力,比如 BI 分析能力、AB 实验的分析能力、行为分析能力等等,包括商业化层面的广告效果分析,也都是依赖 ClickHouse 的。
2022-12-09 17:00:00
1017
原创 clickhouse doris 实时OLAP数据库的对比与选型
ClickHouse 是俄罗斯的搜索公司 Yandex 开源的 MPP 架构的分析引擎,号称比事务数据库快 100-1000 倍,团队有计算机体系结构的大牛,最大的特色是高性能的向量化执行引擎,而且功能丰富、可靠性高。Apache Doris 是由百度贡献的开源 MPP 分析型数据库产品,分布式架构简洁,易于运维。单表性能 ClickHouse 更好,无论是查询延时还是并发能力多表性能 Doris 优势更明显。
2022-12-09 12:44:59
2879
转载 Java 零拷贝是什么
什么是零拷贝传统的 IO 执行流程零拷贝相关的知识点回顾零拷贝实现的几种方式java 提供的零拷贝方式零拷贝字面上的意思包括两个,“零”和“拷贝”:合起来,那零拷贝就是不需要将数据从一个存储区域复制到另一个存储区域。做服务端开发的小伙伴,文件下载功能应该实现过不少了吧。如果你实现的是一个web程序,前端请求过来,服务端的任务就是:将服务端主机磁盘中的文件从已连接的 socket 发出去。关键实现代码如下:传统的 IO 流程,包括 read 和 write 的过程。流程图如下:[外链图片转存失败,源站可能有
2022-12-07 08:00:00
429
原创 MySQL 你所不知道的 SQL 使用技巧
仅当列的组合重复时,行才被视为重复,因此我们 在 子句中使用了运算符删除重复数据MySQL 为您提供了 可用于快速删除重复行的语句。以下语句删除重复行并保留最高 ID:UUID在 MySQL 中,UUID 值是一个 128 位数字,表示为五个十六进制数字的 utf8 字符串,格式如下:要生成 UUID 值,请使用以下 函数:将 UUID 用作主键具有以下优点:除了优点,UUID 值也有一些缺点:将数据从现有表复制到新表的完整命令如下:请注意,上面的语句只是复制表及其数据。它不会复制与表
2022-12-06 08:00:00
1096
原创 如何简单理解大数据
这就要说道数据库的主从备份机制,一般本身就是拿主库的 binlog 同步到备份库,刚好有一个叫 canal的工具可以把自己伪装成备份库,来拉取主库的 binlog,再解析、包装最后抛出,就相当于实时拿到数据了!订单数据插入数据库时一般会有binlog,即记录插入、更新或删除的数据,我们只要能实时拿到这一条 binlog,就相当于拿到了实时数据。出现了,Spark 是替代 MR 的,意图解决所有大数据计算问题,它会为 SQL 生成有向无环图,加上各种算子和宽窄依赖的优化,使得计算速度达到了新的高度。
2022-11-26 22:13:27
1041
原创 快速使用Amazon MemoryDB并构建你专属的Redis内存数据库
说到云厂商,大家可能第一反应是阿里云、华为云、腾讯云等,国内阿里云是市场份额占用最多的,但全球范围的云计算市场份额,亚马逊才是老大哥:目前亚马逊云科技提供了 100 余种产品的免费套餐。其中,计算资源 Amazon EC2 首年 12 个月免费,750 小时/月;存储资源 Amazon S3 首年 12 个月免费,5GB 标准存储容量;数据库资源 Amazon RDS 首年12个月免费,750 小时;Amazon Dynamo DB 25GB 存储容量永久免费等等。它有三种不同类型的免费优惠可供选择:免费试
2022-06-22 22:09:54
5896
原创 Navicat连接Oracle数据库报错ORA-28547或ORA-03135
Navicat Preminm 12 or 15 连接 Oracle 数据库时,报错:Oracle Instant Client 的版本不对确定了 Oracle 数据库的版本后,下载 Oracle Instant Client 客户端下载网址:https://www.oracle.com/cn/database/technologies/instant-client/downloads.html选择对应操作系统的 Oracle Instant Client 客户端,如 windows下载对应版本
2022-06-19 13:19:48
2480
转载 实战 工作中常见的设计模式
平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢,我觉得,最好的方式就是:使用设计模式优化自己的业务代码。今天跟大家聊聊日常工作中,我都使用过哪些设计模式。假设有这样的业务场景,大数据系统把文件推送过来,根据不同类型采取不同的解析方式。多数的小伙伴就会写出以下的代码:这个代码可能会存在哪些问题呢?说得专业一点的话,就是以上代码,违背了面向对象编程的开闭原则以及单一原则。如果你的代码就是酱紫:有多个等条件分支,并且每个条件分支,可以封装起来替换的,我们就可以使
2022-06-17 08:00:00
1127
原创 ApiPost 前后端协作开发神器 Postman+Swagger+Mock+Websocket的完美替代品
ApiPost =Postman+Swagger+Mock+Websocket,前端、后端、测试同时编辑,内容实时同步。15 人以下的团队和个人完全免费,针对高校和培训机构也是完全免费的,企业也可以根据需要进行私有化部署。
2022-05-06 08:02:42
6273
1
原创 主流数据库/国产数据库有哪些 如何适配国产数据库
主流数据库介绍Relational DBMS基于关系模型的数据库,关系模型折射现实世界中的实体关系,将现实世界中各种实体及实体之间的关系通过关系模型表达出来,最大特点就是事务的一致性。Key-value Stores一种非关系数据库,它使用简单的键值方法来存储数据,具有极高的并发读写性能。Document Stores一种非关系数据库,可以在海量的数据中快速的查询数据。通常数据表示为 JSON 文档,因为开发人员将其数据模型视为文档更为直观。Time Series DBMS一种非关系数
2022-04-08 12:15:00
5860
原创 springboot+proguard+maven 实现代码混淆 看这一篇就够了
使用 proguard 混淆代码只能增加阅读和理解的难度, 并不能百分百保证代码安全。常用的应用场景是项目需要部署到客户机器上,一定程度上防止代码泄露。proguard 简介ProGuard 是一个混淆代码的开源项目,它的主要作用是混淆代码,ProGuard 包括以下 4 个功能:压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性(Attribute)优化(Optimize):对字节码进行优化,移除无用的指令混淆(Obfuscate):使用 a,b,c,d 这样简短而.
2022-03-28 12:00:00
11591
16
转载 「springboot 2.x 系列」再用 @Async 创建线程以后就不用来了
在很久很久之前,我有一段痛苦的记忆。那种被故障所驱使的感觉,在我脑海里久久无法驱散。原因无它,有小伙伴开启了线程池的暴力使用模式。没错,就是下面这篇文章。夺命故障 ! 炸出了投资人!我有必要简单的复述一下。其主要原因,就是开发人员,在每一次方法调用里,都创建了一个单独的线程池去处理。这样的话,如果请求量一增加,整个操作系统的压力就会耗尽,最终所有的业务都无法响应。我一直认为这是一个非常偶发的低级错误,发生频率非常的低。但随着这样的故障越来越多,xjjdog 认识到这是一个普遍的现象。以异步性能优
2022-03-04 10:31:11
302
2
原创 「springcloud 2021 系列」RocketMQ 如何快速实现微服务消息机制
RocketMQ 介绍详解了解可以查看如下文档:rocketmq 基础知识RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用、手游、视频、物联网、车联网等。具有以下特点:能够保证严格的消息顺序提供丰富的消息拉取模式高效的订阅者水平扩展能力实时的消息订阅机制亿级消息堆积能力如何选择 RocketMQ
2022-02-15 12:00:00
2410
原创 「springcloud 2021 系列」Spring Cloud Gateway + OAuth2 + JWT 实现统一认证与鉴权
通过认证服务进行统一认证,然后通过网关来统一校验认证和鉴权。将采用 Nacos 作为注册中心,Gateway 作为网关,使用 nimbus-jose-jwt JWT 库操作 JWT 令牌理论介绍Spring Security 是强大的且容易定制的,基于 Spring 开发的实现认证登录与资源授权的应用安全框架SpringSecurity 的核心功能:Authentication:身份认证,用户登陆的验证(解决你是谁的问题)Authorization:访问授权,授权系统资源的访问权限(解
2022-02-15 08:30:00
18325
31
原创 「springcloud 2021 系列」Seata 彻底解决分布式事务问题
分布式事务单体应用单体应用中,一个业务操作需要调用三个模块完成,此时数据的一致性由本地事务来保证。微服务应用随着业务需求的变化,单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证。在微服务架构中由于全局数据一致性没法保证产生的问题就是分布式事务问题。简单来说,一次业务操作需要操作多个数据源或需要进行远程调用,就会产生分布式事务问题。Seata 简
2022-02-14 12:00:00
1000
原创 「springcloud 2021 系列」openfeign结合nacos进行声明式服务调用
源码地址:https://github.com/langyastudio/langya-tech/tree/master/spring-cloud从 SpringCloud 2020 版本开始 ribbon 默认被 移除,替代品为 spring-cloud-loadbalancer工作流程openFeign 服务调用(spring cloud 2020 开始使用 spring-cloud-loadbalancer 作为负载均衡组件)如何接入通过修改官方示例 nacos-discovery-
2022-02-14 08:30:00
1292
原创 「springcloud 2021 系列」Spring Boot Admin 最简单的微服务应用监控
源码地址:https://github.com/langyastudio/langya-tech/tree/master/spring-cloudSpring Boot Admin 简介SpringBoot 应用可以通过 Actuator 来暴露应用运行过程中的各项指标,Spring Boot Admin 通过这些指标来监控SpringBoot 应用,然后通过图形化界面呈现出来。Spring Boot Admin 不仅可以监控单体应用,还可以和 Spring Cloud的注册中心相结合来监控微服务应用。
2022-02-13 12:00:00
454
原创 「springcloud 2021 系列」gateway新一代API网关服务
Spring 在因 Netflix 开源流产事件后,在不断的更换 Netflix 相关的组件,比如:Eureka、Zuul、Feign、Ribbon 等,Zuul 的替代产品就是 SpringCloud Gateway,这是 Spring 团队研发的网关组件,可以实现安全认证、限流、重试、支持长连接等新特性。背景说明如果有三个服务 account-service,product-service,order-service。现在有客户端 WEB应用 或 APP应用 需要访问后端服务获取数据那么就需要在客户
2022-02-12 08:30:00
2566
原创 「springcloud 2021 系列」nacos配置管理 这样用就对了
源码地址:https://github.com/langyastudio/langya-tech/tree/master/spring-cloud服务配置Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置,Nacos Client 从 Nacos Server 端获取数据时,调用的是此接口 ConfigService.getConfig(String dataId, String group, long timeoutMs)。group 默认为 DEFAULT_GR
2022-02-11 08:30:00
699
原创 「springcloud 2021 系列」nacos服务注册与发现 看这一篇就够了
Nacos 官方文档Nacos 简介Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理:如 Kubernetes Service、gRPC & Dubbo RPC Service、Spring Cloud RESTful ServiceNacos 具有如下特性:服务发现和服务健康监测支持基于 DNS 和基于 RPC 的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请
2022-02-10 08:30:00
1547
原创 「springcloud 2021 系列」sentinel实现熔断与限流 原来这么简单
Sentinel 简介随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。特性丰富的应用场景:承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀,可以实时熔断下游不可用应用完备的实时监控:同时提供实时的监控功能。可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况广泛的开源生态:提供开箱即用的与
2022-02-09 17:29:50
1193
原创 「springcloud 2021 系列」Spring Cloud Alibaba 介绍
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加少量注解和配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。https://github.com/alibaba/spring-cloud-alibaba/wiki主要功能
2022-02-09 17:21:03
1345
原创 「springboot 2.x 系列」filter 过滤器如何正确使用
Filter vs Interceptor vs Listener过滤器(Filter)当你有一堆东西的时候,你只希望 选择 符合你要求的某一些东西。定义这些要求的工具,就是过滤器拦截器(Interceptor)在一个流程正在进行的时候,你希望 干预 它的进展,甚至终止它,这是拦截器做的事情监听器(Listener)当一个事件发生的时候,你希望获得这个事件发生的详细 信息,而并不想干预这个事件本身的进程,这就要用到监听器FilterRegistrationBean在 Spri
2021-12-14 18:30:00
810
原创 「springboot 2.x 系列」如何使用缓存缓解数据库压力
源码:https://github.com/langyastudio/langya-tech/tree/springboot/cacheMySQL 查询缓存来自:https://mp.weixin.qq.com/s/LZBctWNWi3qehb-dgUCmxQMySQL 的 QueryCache 缓存的是 SQL 语句文本以及对应的结果集。QueryCache 版本里程:4.0 推出5.6 默认禁用5.7 deprecated8.0 RemovedQueryCache 介绍M.
2021-10-28 17:42:53
461
原创 Java Annotation注解总结
使用注解注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”。注解则可以被编译器打包进入class文件,是一种用作标注的“元数据”。注解类型从JVM的角度看,注解本身对代码逻辑没有任何影响,如何使用注解完全由工具决定。Java的注解可以分为三类:第一类是由编译器使用的注解,例如:@Override:让编译器检查该方法是否正确地实现了覆写@SuppressWarnings:告诉编译器忽略此处代码产生的警告这类注解不会被编译进入.class文件,它们在编译后就被编译器扔掉了。第
2021-10-21 11:00:37
301
原创 Java Reflection反射机制 一篇就懂了
反射是为了解决在运行期,对某个实例一无所知的情况下,如何调用其方法反射机制优缺点:优点可以让咱们的代码更加灵活、为各种框架提供开箱即用的功能提供了便利缺点让我们在运行时有了分析操作类的能力,这同样也增加了安全问题。比如可以无视泛型参数的安全检查(泛型参数的安全检查发生在编译时)。另外,反射的性能也要稍差点,不过,对于框架来说实际是影响不大的。Java Reflection: Why is it so slow?应用场景像咱们平时大部分时候都是在写业务代码,很少会接触到直接使用反.
2021-10-21 10:57:59
370
原创 Java IO流学习总结(1万字)
序列化 vs 反序列化如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。简单来说:序列化: 将数据结构或对象转换成二进制字节流的过程反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应
2021-10-21 10:47:06
535
1
原创 Java Generics泛型 看这一篇就够了
Java使用擦拭法实现泛型,编译器内部永远把所有类型T视为Object处理使用泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型就是编写模板代码来适应任意类型泛型的好处是使用时不必对类型进行强制转换,它通过编译器对类型进行检查注意泛型的继承关系:可以把ArrayList向上转型为List(T不能变!),但不能把Li.
2021-10-21 10:41:09
775
最简单的基于FFmpeg的推流器(以推送RTMP为例)
2015-03-27
VS2010 VS2012 VS2013 VS2015 VS2017 VS2019代码自动注释插件Doxygen
2015-03-13
PCM声音波形显示 多份资料集合 超值!
2014-11-10
GDI+教程(C++中文版) SDK原版
2014-07-31
基于c++音频波形图的显示 很好用
2014-07-23
AForge.NET帮助文档 2.2.5 最新版
2014-07-19
AForge.NET Framework-2.2.5.zip 源码+示例 支持Framework4.0 最新版
2014-07-19
WeifenLuo.WinFormsUI.Docking.dll 源码+示例 支持framwork4 最新版
2014-07-19
ArcGIS.10.2.License.Manager+Crack
2013-09-17
Visual Studio.NET使用技巧手册 很好很强大
2013-07-02
C# 浏览图片的控件 很好很强大
2013-07-01
VC助手(visual assist x 10.7.1925.0)支
2013-06-17
fences win7栅栏 桌面图标分类管理工具
2013-06-16
ImageMagick 最新版
2013-05-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人