- 博客(537)
- 资源 (4)
- 收藏
- 关注
原创 Linux上TCP的几个内核参数调优
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。在此分享出来,希望对大家有所帮助。
2024-06-10 23:26:44
1021
原创 电商系统会员功能设计思路和具体实现
本文介绍了会员管理系统的分层架构设计与功能实现。系统采用Controller-Service-Mapper三层架构,整合Spring Security实现安全认证,使用Redis缓存优化性能。核心功能包括: 会员注册登录:支持手机验证码验证、密码加密存储 会员信息管理:包含基本信息、密码修改等功能 会员成长体系:通过等级、积分、特权等维度构建 会员行为管理:实现关注、收藏、浏览记录等功能 数据存储方案:MySQL存储核心数据,MongoDB处理行为记录 系统采用模块化设计,通过JWT保证接口安全,并针对高并
2025-09-26 06:27:09
777
原创 电商系统支付功能设计思路和具体实现
本文介绍了支付功能的设计与实现,采用分层架构和策略模式,支持多种支付方式。核心设计包括:1)配置管理模块处理支付参数;2)支付服务实现支付请求构建和回调处理;3)订单状态更新机制确保数据一致性。系统具备安全验证、事务处理、扩展性和容错能力,应用策略模式和门面模式简化调用流程,实现支付与业务逻辑解耦。
2025-09-24 11:05:47
524
原创 电商系统功能架构
本文概述了一个完整的电商系统功能架构,分为后台管理、前台商城和核心技术服务三大模块。后台管理系统包含用户权限、商品、订单、营销和内容管理五大功能板块;前台商城系统提供会员服务、商品展示、购物流程和促销活动等用户端功能;核心技术服务涵盖搜索、支付、缓存和消息服务等技术支持。系统采用模块化设计,具备完善的安全机制和性能优化措施,通过清晰的架构图和业务流程设计,实现了电商全流程的业务闭环和技术支撑。
2025-09-24 11:01:08
589
原创 电商订单功能设计和实现
订单模块采用分层架构设计,通过状态机管理订单生命周期(待付款、待发货、已发货等)。核心流程包括:订单生成前组装确认单信息、创建时校验库存并锁定、支付成功后更新状态扣减库存。系统通过RabbitMQ延迟队列处理超时订单自动取消,释放库存并返还优惠券。数据库设计包含订单主表(记录基本信息和状态)、订单商品表(记录商品明细)和操作历史表。关键点包括:订单号生成策略、事务一致性保障、库存先锁定后扣减机制。
2025-09-24 05:28:07
1105
原创 秒杀活动设计和实现
秒杀系统架构设计核心在于高并发处理与库存管控。采用分层校验策略,通过前端、服务端、数据库多层验证确保数据一致性。关键技术包括:时间有效性校验管理活动场次、Redis分布式生成订单号、数据库行级锁防超卖。性能优化方面实施缓存策略(Redis热点数据+本地缓存配置)和异步处理(订单创建与支付解耦),并通过消息队列处理超时订单。系统实现了秒杀活动的精细化时间管理、库存预占机制和分布式环境下的高可用性。
2025-09-24 04:57:26
590
原创 电商库存防止超卖机制
电商库存防超卖机制采用双重检查与数据库原子操作相结合的方式:1)下单前检查真实库存,2)通过数据库行锁和条件更新锁定库存(lock_stock),确保锁定库存不超过实际库存,3)支付成功后才扣减真实库存。系统维护stock和lock_stock两个字段,所有库存操作都在数据库层面通过带条件的UPDATE语句实现原子性,有效防止并发超卖。订单取消时释放锁定库存,支付失败则回滚操作,保证数据一致性。
2025-09-24 04:14:14
728
原创 【笔记】MCP-Servers FileSystem 启动命令
运行mcp server,模式stdio,允许访问目录:C:/Users/zhang。部署mcp代理,将stdio转换为sse,适配Agent。
2025-08-13 15:51:29
796
原创 RocketMQ源码解读-命名服务-NamesrvController
NamesrvController 是 Apache RocketMQ 中 Name Server 的核心控制器,负责协调和管理各个组件,确保 Name Server 的正常运行。RPCHook通过 NamesrvController 的协调,RocketMQ 的 Name Server 实现了高效的路由管理、可靠的配置维护和灵活的网络通信,成为集群中不可或缺的元数据枢纽。
2025-04-20 11:58:59
1272
原创 【笔记】ChatTTS本地部署CUDA 12.4+Triton-Windows(显著降低GPU内存)
在 HuggingFace 上下载 triton 的 Windows 包:https://hf-mirror.com/madbuda/triton-windows-builds。重启 PowerShell 或运行 refreshenv(如果安装了 chocolatey)使更改生效。打开 Andconda PowerShell Prompt。安装 Git 和 Miniconda。安装CUDA 11.8。模型摘要查看截图示例。
2025-03-30 18:28:29
1060
原创 DeepSeek 版本对比:基础版 vs 满血版 vs 蒸馏版
在模型推理(文本生成)阶段,还有一些用户可控制的参数会影响DeepSeek的输出性能,如温度(temperature)、采样阈值(top_p、top_k)、最大生成长度等。同时,由于经过强化学习,R1在回答问题时倾向详细的推理过程,对于非常简单的问题可能出现**“过度思考”**(输出冗长、不必要的步骤),需要在应用中加以控制。最新的DeepSeek版本(R1系列)提供了从数亿到数千亿参数的多档模型,再加上开源的优势,开发者能够根据自身场景选择适当的版本部署,并通过量化、微调等手段进一步优化性能和效果。
2025-03-03 10:24:26
4175
原创 小额批量支付系统(BEPS)的资金清算流程
例如,在一个清算周期内,A 银行发起的小额批量支付业务中,向其他银行的净支付金额为 100 万元,B 银行的净支付金额为 50 万元,C 银行的净收款金额为 80 万元。经过轧差清算,A 银行的清算账户被借记 100 万元,C 银行的清算账户被贷记 80 万元,B 银行因净支付 50 万元,其清算账户被借记 50 万元。
2024-08-12 08:43:00
1060
原创 大额实时支付系统(HVPS)的资金清算流程
主动退回仍在排队的贷记支付业务、即时转账业务和单边业务,但错账冲正、同城清算系统轧差净额等不可退回,必须当日清算。
2024-08-12 08:39:24
1749
原创 央行支付系统主要的资金清算方式
工作日期间5×21小时连续运行(大额支付系统运行时间为前一自然日20:30 - 当日17:15 ,运行工作日为国家法定工作日) ,特殊情况下可以根据央行的安排进行紧急清算等操作。:根据外币业务的特性和国际市场的时间等因素综合确定,通常在工作日的规定时间内进行主要清算处理等工作,同时也会根据特殊紧急情况等进行应急处理。:同小额批量支付系统一样基本是7×24小时运行(但实际中银行自身可能对一些业务时间有额外规定)。:实行7×24小时连续运行 ,为社会提供全天候的支付清算服务。
2024-08-12 08:34:21
1304
原创 【笔记】ReactiveRedisTemplate压测-单机20万QPS-实践
笔记】ReactiveRedisTemplate压测-单机20万QPS-实践
2024-08-11 21:03:31
383
原创 log4j2配置基础介绍
将日志请求插入应用程序代码需要大量的规划和努力。观察表明,大约4%的代码用于日志记录。因此,即使是中等规模的应用程序,其代码中也会嵌入数千条日志语句。鉴于其数量众多,必须能够在无需手动修改的情况下管理这些日志语句。使用XML、JSON、YAML或属性文件格式的配置文件。通过编程方式创建和实现。通过调用接口中暴露的API将组件添加到默认配置中。通过调用内部Logger类的方法。所有可用格式在功能上是等效的。例如,可以使用属性格式重写XML格式的配置文件,反之亦然,而不会损失任何功能。
2024-08-10 11:09:18
1421
原创 log4j2的RollingFileAppender
RollingFileAppender 是一种可以根据特定条件滚动生成新日志文件的输出源,它能够有效地管理日志文件,避免单个文件过大,并提供了灵活的文件命名和存储策略。TimeBasedTriggeringPolicy(基于时间的触发策略)SizeBasedTriggeringPolicy(基于大小的触发策略)来格式化日志事件,并且配置了基于时间的触发策略。)创建一个新的日志文件,文件命名模式为。的文件,并在每天(根据日期格式。被配置为将日志写入名为。灵活的文件命名和存储。
2024-08-10 10:11:55
1792
原创 log4j2的Appender基础介绍
功能:接受对其他 Appender 的引用,并在单独的线程上异步地将日志事件写入这些 Appender。注意,在写入这些 Appender 时发生的异常将对应用程序隐藏。配置参数:要异步调用的 Appender 的名称,可以配置多个。blocking:如果为true,当队列已满时,Appender 将等待直到有空闲位置。如果为false,当队列已满时,事件将被写入错误 Appender(如果配置了)。默认是true。
2024-08-10 09:53:51
1711
原创 Log4j2中RollingFile的文件滚动更新机制
RollingFileAppender是Log4j2中的一种能够实现日志文件滚动更新(rollover)的Appender。rollover的意思是当满足一定条件(如文件达到了指定的大小,达到了指定的时间)后,就重命名原日志文件进行归档,并生成新的日志文件用于log写入。如果还设置了一定时间内允许归档的日志文件的最大数量,将对过旧的日志文件进行删除操作。RollingFile实现日志文件滚动更新,依赖于TriggeringPolicy和RolloverStrategy。
2024-08-10 08:48:10
2360
原创 操作系统内核-TCP-调优实战-三次握手-宕机场景模拟演示
本文模拟三种宕机场景,分别演示实际测试效果和TCP调优实践。场景1:进程宕机,场景2:局域网操作系统宕机,场景3:广域网操作系统宕机,场景4:广域网操作系统宕机-调优化。
2024-07-28 17:02:47
424
原创 1 企业架构资产的价值
企业架构资产并不是一套静态的固定资产,它是一个企业的“孪生”,它用结构化的方式最大程度还原出一个企业本该有的样子,从规划的秒级反馈,到落地的秒级更新。最大限度让规划、变更和落地变得紧密。秒级的架构资产更新,让这“企业孪生”变为可能。免责声明:本文内容仅表明作者本人观点,并不代表Thoughtworks的立场。
2024-07-23 16:05:21
1754
原创 Netty中ChannelHandler的生命周期
首先我们先分析小网络连接的生命周期,连接建立 ---> 数据交互 ---> 连接断开,在数据交互阶段,包括从连接中读取数据和向连接中写入数据。知道了连接的生命周期,就可以按图索骥的在各个阶段进行想要的操作。而在Netty中,网络连接的不同生命周期都可以通过回调的方式来绑定相应的逻辑,这个回调接口就是。在使用Netty进行网络编程的时候,通常需要在网络连接的不同阶段进行相应的操作,比如在连接建立时,客户端向服务端发起认证,在接收到数据时对数据内容进行解析等等。那么,连接的不同阶段在netty中如何表示呢?
2024-07-21 11:06:11
608
原创 linux修改文件句柄数量
ulimit 命令身是分软限制和硬限制,加-H就是硬限制,加-S就是软限制。硬限制就是实际的限制,而软限制是警告限制,它只会给出警告。假如,我们设置进程打开的文件句柄数是1024 ,但是系统总线制才500,所以所有进程最多能打开文件句柄数量500。文件句柄限制,就是规定的单个进程能够打开的最大文件句柄数量(Socket连接也算在里面,默认大小1024)其实上面的修改都是对一个进程打开的文件句柄数量的限制,我们还需要设置系统的总限制才可以。liunx中文件句柄有两种,一种是用户级的,一种是系统级的。
2024-07-21 09:53:16
1554
原创 在 Linux 中,如何确定 optmem_max 的最佳值?
大多数发行版都考虑到了普通用户,而大多数普通用户,即使使用 Linux/Unix 作为服务器,也没有一个服务器群,它们之间有光纤 channel ,或者不需要 GB 的 IPC 传输的服务器进程.我对内核进行了 grep,但我找不到将 optmem_max 的默认值设置为 20480 的痕迹,这是我们系统上的默认值。20KB 的缓冲区对于“大多数”来说已经足够大了,它最大限度地减少了默认情况下所需的内核内存,而且配置起来也很容易,如果需要的话可以这样做。此外,我真的不明白 optmem_max 是什么。
2024-07-21 09:35:50
1061
原创 TransitiveThreadLocal线程间可传递的ThreadLocal实现
TransitiveThreadLocal可传递的ThreadLocal实现1. 通过一个全局ThreadLocal视图来缓存jvm所有线程的ThreadLocal2. 通过组合模式复用jdk底层能力,内部成员包含java.lang.InheritableThreadLocal可继承ThreadLocal对象,实现父子线程数据传递
2024-07-20 22:58:03
404
原创 SLF4J warning or error messages and their meanings
注意,诸如库或框架之类的嵌入式组件不应该声明对任何SLF4J提供程序的依赖,而应该只依赖SLF4J -api。以及slf4j-reload4j、slf4j-jdk14、slf4j-simple 2.0.0或更高版本之一。将slf4j-nop.jar、slf4j-simple.jar、slf4j-reload4j.jar、slf4j-jdk14.jar或logback-classic.jar等许多可用的提供程序中的一个(且只有一个)放在类路径上将解决这个问题。当在类路径上找不到SLF4J提供程序时报告。
2024-07-19 09:15:03
1483
原创 linux内核层丢包排查方法汇总
表示总的收包的错误数量,这包括 too-long-frames 错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。表示数据包已经进入了 Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃。
2024-07-18 00:48:04
2234
原创 Linux系统内核参数优化
在工作中,平常我们使用官方镜像安装的Linux系统(非自定制化的)系统内核考虑的是最通用的场景,通常设定都偏向稳定保守,比较典型的代表如红帽系列的RHEL、CentOS等。而在正式的生成环境使用中,服务器的CPU、内存等硬件配置都比较高,而安装系统时默认的系统内核参数设定并不符合用于支持高并发访问的业务服务器,因此我们需要根据实际的业务特性来对系统的默认内核参数设定加以优化,以便能充分发挥服务器的硬件计算处理能力,提高资源利用率的同时也给企业节省IT设备资源成本。
2024-07-17 22:53:57
349
原创 Why would “TCP Full Window” happen?
0我明白,“TCP Full Window”表示发送方发送的数据比多?但为什么会发生这种情况呢?发送方不应该只是能够发送?还是因为wireshark看到更多的数据在发送端排队?但是wireshark是怎么知道的呢?发送缓冲区?
2024-07-17 21:57:02
663
字符集与字符集编码详解
2014-12-04
60-Linux-Bash-Terminal-Keyboard-Shortcuts-1.pdf
2024-01-07
Bash-Terminal-Keyboard-Shortcuts-for-Navigation.pdf
2024-01-07
Bash-Terminal-Keyboard-Shortcuts-for-Control-Process.pdf
2024-01-07
Bash-Terminal-Keyboard-Shortcuts-for-History.pdf
2024-01-07
Bash-Terminal-Keyboard-Shortcuts-for-Editing.pdf
2024-01-07
Bash-Terminal-Keyboard-Shortcuts-for-Information.pdf
2024-01-07
Java-concurrent-collections-concurrenthashmap-blockingqueue.pdf
2023-12-30
TCP-IP详解卷1协议.pdf
2013-11-28
The Reverse C10K Problem for Server-Side Mashups.pdf
2024-06-09
中国小微经营者调查2023年一季度报告暨2023年二季度中国小微经营者信心指数报告.pdf
2024-05-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅