- 博客(530)
- 资源 (22)
- 收藏
- 关注
原创 奇技淫巧抢国补
尽管使用这奇技淫巧,依然还是没有抢到。不会是内定的吧。每天试试吧,也不知道哪一次就成功了呀。更多内容,欢迎关注我的微信公众号: 半夏之夜的无情剑客。
2025-10-01 13:02:04
1490
原创 验证码和滑块破解
Frida可视化工具Dwarf2已经开源,大家有什么问题,可以一起交流。本文内容仅用于学习,严禁用作非法目的。验证码作用验证码作为一种人机识别手段,其终极目的,就是区分正常人和机器的操作。 区分人机行为的作用不言而喻。互联行为的注册、登录、发帖、领优惠券、投票等等应用场景,都有被机器刷造成各类损失的风险,如果不对各类机器垃圾的行为加以防范,灌水内容、垃圾注册、恶意登录、刷票、撞库、活动作弊、垃圾广告、爬虫、羊毛党等用户行为一旦发生,将对产品自身发展、用户体验造成极大的影响。搞定验证码很多网站都使
2022-03-26 12:31:18
2996
2
原创 JavaScript回调函数以及一些思考
最终的一点,就是提高了程序的扩展性。只要签名符合callback格式函数,都可以使用test或者test2函数,极大的提高了代码的复用性和可扩展性能。仔细分析上面的代码,可以看出和设计模式中的模版模式很像。可以说是通过回调函数来替代了模版中的子类实现。本编以最简单的例子来说明回调函数的执行过程。典型的mvc中的controller和service,以及service和Dao是转调。这里是回调,简单点说是函数做为参数,对于面向对象语言,可以是接口,可以是委托(C#),对于C/C++语言可以是是(函数指针)。
2018-05-05 10:22:25
638
1
原创 编程入门(劝学)
【作者】荀子 【朝代】先秦 君子曰:学不可以已。 青,取之于蓝,而青于蓝;冰,水为之,而寒于水。木直中绳,輮以为轮,其曲中规。虽有槁暴,不复挺者,輮使之然也。故木受绳则直,金就砺则利,君子博学而日参省乎己,则知明而行无过矣。 故不登高山,不知天之高也;不临深溪,不知地之厚也;不闻先王之遗言,不知学问之大也。干、越、夷、貉(hé)之子,生而同声,长而异俗,教使之然也。诗曰:“嗟(jiē)尔君子
2018-01-21 15:46:57
718
原创 C语言中 .h文件和.c文件的区别
要理解.c文件与.h文件有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段2.词法与语法分析阶段3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息...
2017-08-06 18:16:12
65528
3
原创 OCCT画一个立方体
构造函数:只设置参数,(默认)调用Shell()/Solid():构建几何体 +Done()→调用Shape():检查IsDone(),如果false则调用Build()→Solid()→Done()→所以您的问题中的这三个函数确实都会设置myDone为true,确保后续的IsDone()调用返回正确状态。这是OCCT状态管理模式的核心机制。
2025-11-23 13:21:37
608
原创 如何让 C++ 无缝衔接 NumPy 的强大计算能力
本文介绍了使用Python C API和NumPy C API进行图像处理的优化方法。通过Py_Initialize()和np::initialize()初始化后,建议使用Py_intptr_t数组指定维度而非py::tuple,确保版本兼容性。示例代码展示了如何创建480x640x3的零值数组,并调用处理函数获取图像数据。这种方法避免了直接依赖Python版本特性,提供了更稳定的实现方案。
2025-11-14 21:40:13
121
原创 一次惊心动魄的现场死锁:串行方案终破循环等待
本文讨论了C++线程分离(detach)的风险及死锁问题。当线程独立运行循环时,资源可能被释放导致崩溃。通过案例分析发现,在DLL回调中重复加锁会引发死锁。文章提出队列+串行化解决方案:将回调事件放入队列,由独立线程处理,采用无锁队列算法避免竞争。同时展示了串行化机制的应用,既避免死锁又实现并行功能。虽然该无锁队列存在ABA问题,但发生概率极低。
2025-11-14 21:26:07
170
原创 Java和.NET的核心差异
历史背景:1995年,内存受限,网络计算技术架构:类文件格式,类加载器层次结构设计理念:灵活性优先,动态性,模块化生态系统:向后兼容,工具链,框架依赖。
2025-11-09 11:13:34
797
原创 Orleans GetGrain<T>(string) 底层原理
本文对比了Orleans异步执行模型与.NET中Task.Run/TaskFactory.StartNew的区别。Orleans采用单激活、回合制执行模型,建议使用自然的async/await方式编写逻辑。Task.Run和TaskFactory.StartNew虽然都能调度线程池任务,但后者默认使用当前调度器且需要手动Unwrap异步lambda。在Orleans中,随意使用这些方法会破坏回合调度的顺序性,导致状态安全风险。最佳实践是在Grain内优先使用async/await串行控制,仅在隔离CPU/阻
2025-10-31 22:21:32
274
原创 Orleans 的异步
本文对比了Orleans异步执行模型与.NET中Task.Run/TaskFactory.StartNew的区别。Orleans采用单激活、回合制执行模型,建议使用自然的async/await方式编写逻辑。Task.Run和TaskFactory.StartNew虽然都能调度线程池任务,但后者默认使用当前调度器且需要手动Unwrap异步lambda。在Orleans中,随意使用这些方法会破坏回合调度的顺序性,导致状态安全风险。最佳实践是在Grain内优先使用async/await串行控制,仅在隔离CPU/阻
2025-10-31 22:00:51
434
原创 wx.CallAfter 机制分析
机制通过事件循环和队列化处理的方式,提供了一种安全、高效的跨线程方法调用解决方案。它隐藏了线程同步的复杂性,让开发者能够专注于业务逻辑的实现,是 wxWidgets 框架中处理多线程 GUI 应用的重要工具。
2025-10-28 11:58:25
1033
原创 Orleans 自定义二进制协议在 TCP 上层实现的完整过程
Orleans 自定义二进制协议实现解析 协议架构 分层设计:上层应用协议(Grain路由/方法调度)+底层TCP传输层 消息结构:包含帧长度头、元数据头和消息体,支持压缩头信息 核心实现 消息序列化:采用二进制协议,小端序处理,包含消息ID、Grain地址等元数据 连接管理:支持连接池复用,自动维护连接健康状态 传输优化:禁用Nagle算法,支持KeepAlive和快速路径优化 处理流程 本地消息直接路由,跨节点消息通过TCP连接发送 自动处理目标节点失效情况
2025-10-27 19:58:09
599
原创 Orleans ILifecycleParticipant 生命周期管理详细分析
Orleans框架中的ILifecycleParticipant<TLifecycleObservable>接口是组件生命周期管理的核心机制。该接口定义了Participate方法,允许组件注册到生命周期观察者中,实现启动和关闭过程的标准化管理。相关接口包括ILifecycleObservable(定义订阅方法)和ILifecycleObserver(定义启动/停止回调)。框架通过ServiceLifecycleStage和GrainLifecycleStage枚举管理不同阶段的执行顺序,确保组
2025-10-26 13:29:37
655
原创 Orleans Grain Directory 系统综合分析文档
Orleans Grain目录系统架构分析摘要 本文档通过UML图示系统分析了Orleans分布式Grain目录的核心架构。主要包含: 核心接口层:定义IGrainDirectory、IGrainLocator等基础目录操作接口,支持注册、注销和查找功能 实现层: LocalGrainDirectory处理本地Grain目录管理 CachedGrainLocator提供带缓存的查找机制 分布式定位器(DhtGrainLocator)和客户端定位器(ClientGrainLocator)实现不同场景下的Gra
2025-10-25 23:18:58
449
原创 Orleans分布式系统架构详细分析
本文档结合Orleans源代码详细解释分布式系统架构图中的组件交互流程。该图展示了Orleans集群中两个节点(和)之间的通信机制,包括Grain定位、激活、消息传递等核心功能。服务发现:通过Directory服务实现Grain的定位智能放置:通过Placement服务决定Grain的激活位置可靠通信:通过Messaging服务处理跨节点通信透明调用:客户端无需关心Grain的具体位置这种设计实现了高可用性、可扩展性和透明性的分布式系统架构,是Orleans框架的核心优势所在。
2025-10-25 12:26:02
1002
原创 Orleans 客户端与 Silo 配置方式深度分析
客户端配置UseOrleans- Silo 服务器配置和UseOrleans是 Orleans 框架中两种不同的配置方式,分别对应客户端和服务器端的角色。它们在架构设计、服务注册、运行时行为等方面存在显著差异。正确选择和使用这两种配置方式对于构建高性能、可扩展的分布式应用程序至关重要。通过源码分析可以看出,Orleans 框架通过严格的互斥性检查和不同的服务注册机制,确保了配置的正确性和系统的稳定性。开发者应该根据应用的具体需求选择合适的配置方式。
2025-10-24 22:34:58
972
原创 Orleans 配置方式时序图
这些时序图清晰地展示了两种配置方式在初始化、服务注册、运行时行为等方面的差异,帮助开发者更好地理解何时使用哪种配置方式。设置 HasOrleansClientBuilder = "true"设置 HasOrleansClientBuilder = "true"设置 HasOrleansSiloBuilder = "true"设置 HasOrleansSiloBuilder = "true"注册 ClientMessageCenter。注册 IClusterClient。
2025-10-24 22:33:08
555
原创 Orleans + Kubernetes + Istio 服务网格集成深度解析
本文分析了Orleans分布式系统与Kubernetes和Istio的集成机制。通过Orleans源码解析,展示了Kubernetes环境下状态外置存储、动态服务发现和网络通信的实现原理。Orleans与Kubernetes的集成主要通过环境变量配置、集群成员管理和Pod-Silo对应关系实现。Istio则通过ServiceEntry和VirtualService增强服务发现和流量管理能力。这种架构结合了Orleans的有状态计算能力、Kubernetes的容器编排优势以及Istio的服务网格功能,构建出高
2025-10-23 21:50:48
652
原创 SignalR 协议深度分析
SignalR底层通信协议解析:通过握手协议建立连接后,支持WebSocket、长轮询等多种传输方式。核心是JSON/MessagePack格式的RPC消息交换,包含方法调用、流处理等9种消息类型。系统通过连接状态管理、错误处理机制和批处理优化确保可靠性,同时提供身份验证和日志调试支持。该协议实现了C#与JavaScript的双向方法调用,广泛应用于实时聊天、游戏和物联网等场景。
2025-10-22 23:04:27
407
原创 SignalR 底层原理详解
SignalR 架构采用客户端-服务器实时通信模型,通过 WebSocket 作为首选传输协议,并支持长轮询等回退机制。其核心 RPC 调用机制实现了双向通信:客户端通过 JSON 或二进制协议序列化消息,服务器端 SignalR Hub 路由到对应方法处理。架构包含连接生命周期管理、分组功能、自动重连机制和安全认证,支持消息批处理和连接池优化性能。服务端提供详细的日志记录和监控能力,确保实时通信的可靠性和可维护性。
2025-10-22 23:03:27
386
原创 Orleans Grain生命周期与架构设计手册
本手册全面覆盖了Orleans Grain的生命周期管理、架构设计和高级特性,结合源码实现提供了专业的技术参考。
2025-10-22 17:32:22
896
原创 Orleans 与 Kubernetes 结合的价值分析
故障检测的互补性Orleans:应用级别、业务逻辑级别Kubernetes:基础设施级别、系统级别结合:全方位故障检测自动恢复的完整性Orleans:只能检测和标记Kubernetes:提供完整的自动恢复结合:完整的故障处理生命周期运维效率的提升Orleans:需要大量手动干预Kubernetes:提供完全自动化结合:大幅提升运维效率服务可用性的保障Orleans:检测延迟高,恢复需要手动Kubernetes:检测快速,恢复自动结合:更高的服务可用性。
2025-10-21 22:15:24
1042
原创 Orleans 与 Kubernetes 完整集成指南
本文深入解析 Orleans 有状态系统与 Kubernetes 无状态平台的融合机制,通过源码分析展示两者如何协同工作,实现高可用、可扩展的分布式系统。
2025-10-21 22:05:42
602
原创 Orleans 可观测性实战:基于源码的指标与分布式追踪(含 Prometheus 集成)
I整理了一份基于源码的 Orleans 可观测性与 Prometheus 集成说明文档(含指标体系、关键代码位置、Tracing、实践建议与 PromQL 示例)。
2025-10-20 21:34:26
735
原创 Orleans 在 Kubernetes 上的部署配置
Orleans 在 Kubernetes 上的部署与运行机制摘要 Orleans 通过 Microsoft.Orleans.Hosting.Kubernetes 包提供 Kubernetes 托管支持,主要特性包括: 自动配置:自动设置 Silo 名称、IP 地址和监听端口(默认 11111/30000),并从 Pod 标签/环境变量获取集群 ID 和服务 ID 集群管理:启动时检测无效 Pod,运行时仅选取少量 Silo 作为观察者监视 K8s 事件,减轻 API Server 压力 必要配置:要求 Po
2025-10-20 21:24:17
905
原创 NSIS 环境变量陷阱:一不小心 PATH 就消失了
本文介绍了在NSIS中添加系统环境变量Path时可能遇到的问题及解决方案。直接修改注册表可能导致原有Path内容被覆盖,特别是当Path长度超过NSIS字符串限制时。推荐使用EnVar插件来安全地操作环境变量:通过AddValue添加路径,DeleteValue删除路径,并支持检查路径是否存在。这种方法避免了直接操作注册表的风险,确保环境变量修改的可靠性。
2025-10-20 11:39:33
852
原创 Orleans 序列化、Actor Placement 和 Actor 调用详细分析
Orleans分布式架构核心技术解析 Orleans框架的核心技术包括序列化机制、Actor放置策略和调用机制。在序列化方面,采用多层次架构,支持默认二进制、JSON和自定义编解码器,通过IFieldCodec接口实现高效类型处理。Actor放置策略包含随机、基于哈希、本地优先等多种方式,由PlacementService根据策略选择最优Silo。调用机制建立完整的请求-响应流程,支持远程方法调用和异步处理。整体架构实现了分布式Actor模型的高效运行,通过序列化优化、智能放置和可靠调用机制确保系统性能和可
2025-10-19 22:25:52
339
原创 Orleans流背压控制机制深度分析
Orleans流背压控制是一个多层次的流量控制机制,旨在防止系统在高负载下出现内存溢出、消息丢失或性能急剧下降。该机制通过智能的缓存管理、压力检测和流量控制,确保分布式流处理系统的稳定性和可靠性。智能压力检测:基于缓存桶和游标监控优雅降级:背压期间保持系统稳定自动恢复:压力缓解后自动恢复正常消息保护:确保消息不丢失性能优化:通过批处理和对象池提升效率该机制为分布式流处理系统提供了可靠的流量控制基础,是构建高可用、高性能流处理应用的重要保障。
2025-10-19 22:05:30
442
原创 Orleans StreamInstruments 作用分析
StreamInstruments是Orleans流系统的性能监控组件,基于.NET的System.Diagnostics.Metrics框架实现。它主要提供两类核心指标:1)发布-订阅指标,包括生产者/消费者的注册/注销及总数统计;2)持久流指标,涵盖拉取代理数、消息处理量及缓存大小等。通过计数器(Counter)和可观察仪表(ObservableGauge)两种指标类型,实时监控流系统的生产者活跃度、消费者订阅状态、消息吞吐量等关键性能参数。该组件与.NET Metrics原生集成,为系统运维提供容量规
2025-10-18 22:48:39
897
原创 Orleans 流系统握手机制流程图
可靠性:多重容错机制确保消息不丢失一致性:通过令牌机制保证消息顺序性能:按需投递,避免重复处理可扩展性:支持多消费者、多流并发可观测性:完善的日志和监控这个握手机制是 Orleans 流系统可靠性的核心保障,通过精心设计的流程和异常处理,确保了分布式环境下的消息可靠投递。
2025-10-18 22:25:05
202
原创 Orleans 流系统握手机制时序图
以下时序图展示了 Orleans 流系统中握手机制的完整流程,包括正常情况和异常情况的处理。这个握手机制确保了 Orleans 流系统在复杂的分布式环境中能够可靠、高效地处理消息投递。
2025-10-18 22:23:18
317
原创 Orleans 流系统握手机制详解
Orleans 流系统的握手机制是确保消息可靠投递的核心组件。它解决了分布式系统中消息投递的连续性、一致性和容错性问题。协商式设计:消费者和代理协商投递位置状态持久化:关键状态信息持久化存储容错优先:多重容错机制确保系统可用性性能优化:按需投递和状态缓存可观测性:完善的监控和日志记录这种设计使得 Orleans 流系统能够在复杂的分布式环境中提供可靠、高效的消息处理能力。
2025-10-18 22:21:45
855
原创 Orleans Stream SubscriptionId 生成机制详解
Orleans流系统中的subscriptionId通过两种机制生成:显式订阅使用随机GUID(最后字节高位设为0),隐式订阅基于确定性算法生成(最后字节高位设为1)。关键区别在于显式订阅需要代码调用,而隐式订阅自动匹配Grain类型和流命名空间。系统通过GUID最后字节的高位标记区分订阅类型,既保证了唯一性又支持灵活管理。这种设计平衡了性能与功能性,适用于不同订阅场景需求。
2025-10-18 22:05:00
349
原创 Orleans 流订阅类型检测机制详解
Orleans流订阅类型检测机制包含多层判断逻辑。编译时通过ImplicitStreamSubscriptionAttribute标记隐式订阅,运行时通过Grain类型和流命名空间匹配检查。系统还利用GUID最后字节的高位设置(0x80)来区分隐式/显式订阅。隐式订阅ID由Grain类型和流ID哈希生成,而显式订阅使用随机GUID。消息投递时通过订阅ID的位标记快速判断类型,确保消息正确路由。这种多层次的检测机制保证了流订阅系统的高效性和可靠性。
2025-10-18 21:55:33
310
原创 wxWidgets MainLoop 实现详解
本文深入分析了wxWidgets的事件循环(MainLoop)实现机制,通过类层次结构图、时序图和代码示例详细展示了其跨平台架构。核心内容包括:1)基于wxEventLoopBase的层次化设计;2)Windows平台的消息处理流程与预处理机制;3)线程安全实现;4)多平台实现对比;5)嵌套事件循环应用场景。文章还提供了代码优化建议和输入输出示例,帮助理解如何在实际开发中高效使用wxWidgets事件循环。该实现通过抽象接口与平台特定优化的组合,既保证了统一性又充分发挥了各平台优势。
2025-10-14 11:16:14
447
原创 Orleans 事务系统详细流程分析
Orleans事务系统采用分布式两阶段提交协议(2PC),为Grain状态提供ACID事务保证。系统核心组件包括事务客户端、代理、管理器、队列和资源等。事务执行流程分为三个阶段:启动阶段创建事务信息;读写操作阶段获取锁并执行操作;两阶段提交阶段包括准备阶段(协调参与者验证)和提交阶段(管理器执行最终提交)。系统通过读写锁控制并发,因果时钟维护时间顺序,确保事务的一致性和隔离性。
2025-10-13 00:26:40
891
原创 Orleans 事务系统时序图
本文展示了五种事务处理时序图:1)只读事务流程,包括读锁获取、数据读取和提交;2)读写事务的两阶段提交过程,含准备和提交阶段;3)事务中止场景,展示锁验证失败后的回滚流程;4)分布式事务协调机制,通过两阶段提交实现跨资源协调;5)锁管理场景,描述并发事务的锁竞争与排队机制。这些时序图完整呈现了事务处理的核心流程,包括锁管理、资源协调和状态持久化等关键环节。
2025-10-13 00:23:16
863
原创 Orleans 事务系统架构设计
Orleans事务系统采用分布式两阶段提交协议(2PC)实现ACID事务,为Grain提供强一致性保证。系统架构包含客户端应用、Orleans集群和存储层三个主要部分,核心组件包括TransactionClient(客户端事务接口)、TransactionAgent(事务协调中心)和TransactionManager(本地事务提交协调)。TransactionAgent负责启动新事务和协调分布式事务,TransactionManager处理两阶段提交和锁管理。系统支持多种存储后端(Azure Table、
2025-10-13 00:21:07
1413
原创 Orleans CodeGenerator
Orleans.CodeGenerator 技术概述 Orleans.CodeGenerator 是 Orleans 分布式框架的核心代码生成组件,它基于 Roslyn 编译器平台,在编译时自动生成序列化、代理调用等关键代码,以提升应用性能和类型安全。该组件采用模块化设计,包含序列化器生成器(SerializerGenerator)、拷贝器生成器(CopierGenerator)、代理生成器(ProxyGenerator)等多个专业子模块,支持带特性的类型、Grain接口、F#联合类型等多种目标。通过精细的
2025-10-12 11:42:39
674
百度地图隐藏无关区域
2017-10-11
在线预览完整实现.zip
2019-08-16
Builder模式
2017-09-03
原型模式代码
2017-09-11
抽象工厂模式代码
2017-08-31
mysql-connector-java-5.1.7-bin.jar
2017-10-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅