KBMMW 4.92.00 发布

简介: We are happy to announce the release of kbmMW Professional and Enterprise Edition. Yet again kbmMW continues to set the bar for what an n-tier p...
We are happy to announce the release of kbmMW Professional and
Enterprise Edition.

Yet again kbmMW continues to set the bar for what an n-tier product must
be capable of in the real world!

Keywords for this release:

- New memory debugging/leak detection functionality.
- Lots of performance optimizations.
- Extreme performance threadsafe lockfree arrays and dynamic arrays.
- Updated file log and tee log managers.
- Lots of other enhancements and additions to existing functionalty.
- Bug fixes

Look at end of post for detailed list of additions, changes and fixes.

Professional and Enterprise Edition is available for all with a current
active SAU.
If your SAU has run out, please visit our shop to extend it with another
12 months.

CodeGear Edition is available for free, but only supports a specific
Delphi/Win32 SKU, contains a limited feature set and do not include source.

Please visit https://portal.components4developers.com to download.

----

kbmMW is the premiere n-tier product for Delphi, C++Builder and FPC
on .Net, Win32, Win64, Linux, Java, PHP, Android, IOS, embedded devices,
websites, mainframes and more.

Please visit www.components4developers.com for more information about kbmMW.

----

Components4Developers is a company established in 1999 with the purpose
of providing high quality development tools for developers and
enterprises. The primary focus is on SOA, EAI and systems integration
via our flagship product kbmMW.

kbmMW is a portable, highly scalable, high end application server and
enterprise architecture integration (EAI) development framework for
Win32, ..Net and Linux with clients residing on Win32, .Net, Linux,
Unix, Mainframes, Minis, Embedded and many other places.
It is currently used as the backbone in hundreds of central systems, in
hospitals, courts, private, industries, offshore industry, finance,
telecom, governements, schools, laboratories, rentals, culture
institutions, FDA approved medical devices, military and more.

4.92.00 April 2 2016

  Important notes (changes that may break existing code)
  ======================================================
  * Changed TkbmMWAfterMessageProcessedEvent by adding argument
    var AAction:TkbmMWMessageProcessingSuccessAction

  New stuff
  =========
  - Added AWaitUntilConnected (default false) and
    AWaitUntilDisconnected (default false) to TkbmMWAMQPClient Connect/
    and Disconnect methods.
  - Generally slightly improved C++ support.
  - Added new TkbmMWDependency class for guaranteeing initialization and
    finalization order of units. Units depended on are initialized first
    and finalized later. Modified all kbmMW code to use dependency
    class.
  - Added new TkbmMWDebugMemory class for keeping track of memory
    allocations and leak detection. Enterprise Edition only.
    Include kbmMWDebugMemory as early as possible in your uses clause
    (but after FastMM if you are specifying that).
    See demo project (debugmemory) for usage.
  - Added compact stack version of TkbmMDebugStackTrace not requiring
    addition memory allocations while running.
  - Added support for global function in TkbmMWScheduler.Schedule.
  - Added PrevRunStamp in TkbmMWScheduledEvent.
  - Added TkbmMWInterlocked.Increment/Decrement for uint64.
  - Added TkbmMWLockFreeHashArray<T> where a custom value type can be
    used. key is still cardinal/uint64.
  - Added TkbmMWLockFreeHashArray64 (64 bit data value).
  - Added ResetEnum, Enum, Capacity, Count, AssignValue to all
    TkbmMWLockFreeHashArray implementations.
  - Added optional argument ACount:integer=0 to
    TkbmMWCustomThreadPool.PreAllocate.
    Can ask for preallocation of ACount instances (will be limited by
    max count defined for thread pool).
  - Added new TkbmMWLog data type: mwldtAllocation. It will be used by
    memory leak detection for reporting allocation leaks.
  - Added mwldtAllocation to TkbmMWLogDataType. Its used for filtering
    out memory allocation logs.
  - Added support for specifying max file size (in kB) for log and
    audit files in IkbmMWLocalFileLogManager. Default 1024 for log
    files and no max for audit.
    If file size is exceeded current file is renamed to .bak
    and a new file created. Only one backup file can currently exist.
  - Added support in IkbmMWTeeLogManager for AddLogManager and
    RemoveLogManagers.
    Allows for dynamically add and remove logmanagers to the tee log
    manager.
    Currently max 10 concurrent logmanagers are supported to be
    referenced by a tee log manager.
    Added overloaded constructors for referencing 0 to 4 exisitng log
    manager instances when creating a tee logmanager instance.
  - Added Tag:integer and Data:variant properties to
    IkbmMWScheduledEvent.
    Allows for tagging custom data to a scheduled event.
    Matching methods WithTag(..) and WithData(..) added for fluently
    typing.
  - Added PrevRunStamp:int64 property to IkbmMWScheduledEvent for
    obtaining info for when last run happened.
  - Added Schedule(AGlobalFunction:TkbmMWOnScheduledFunction) to
    TkbmMWScheduler.
  - Added ASpaceAsPlus:boolean (default true) to kbmMWEncodeEscapes
    method in kbmMWHTMLUtils.pas. If set to false, will not replace
    space with +.
  - Added delayed commit to TkbmMWCustomSAFServerTransport.
    This is to fix that message pops should not be committed until
    message has truely been processed. This especially relates to
    request that are looped thru the TkbmMWServer application server
    functionality. Earlier it was possible that messages were put into
    a holding pattern in the TkbmMWServer (while waiting to be
    processed) but thus have been popped off the inbound queue and
    committed and thus removed from it, before the application server
    actually had processed or failed processing the message.
  - Added server queue congestrion support on
    TkbmMWCustomSAFServerTransport.
    This ensures that request/service call messages will not overwhelm
    the server queue. Default is
    mwmqoFailOnCongestion,mwmqoDeleteInvalidMessage
    and max CPUCount*10 messages in queue. Default component name for
    the server queue is transport name+'_'+KBMMW_DEFAULT_SERVER_QUEUE.
    If congestion happens, the push on the server queue fails and
    message will automatically be rolledback on the source queue
    (typically the inbound queue) to ensure no messages are lost.
  - Added TkbmMWDebugStack.StackTraceAsString function to easily
    convert collected stack to printable string.
  - Added more features for obtaining a stacktrace.
  - Added TkbmMWInterlocked.Increment2,Decrement2,Exchange2,
    Add2,CompareAndExchange2 supporting TkbmNativeUInt.
  - Added TkbmMWInterlocked.Increment,Decrement supporting uint64.
  - Added TkbmMWLockFreeHashArray2<T> to kbmMWGlobal, which takes
    2 TkbmNativeUInt keys to reference data of type <T>.
  - Added TkbmMWDynamicLockFreeHashArray<T> descending from
    TkbmMWLockFreeHashArray<T>. It auto resizes to 150%
    when its getting to more than 60% of capacity.
  - Added TkbmMWLockFreeHashArrayNative descending from
    TkbmMWLockFreeHashArray2 referencing TkbmNativeUInt.
  - Performance optimized kbmMWGetCurrentThreadID for x86 and x64.
  - Added procedures LockedFreeNotification(AComponent: TComponent) and
         procedure LockedRemoveFreeNotification(AComponent: TComponent)
    to TkbmMWCustomConnectionPool. Use these instead of FreeNotification
    and RemoveFreeNotification to ensure threadsafety.
  - Added AddBatchedMessage method to IkbmMWCustomTransportStream.
  - Added DelayedCommitOwner property to IkbmMWCustomTransportStream.
    This can be used to identify the original source (holding) queue
    for the message.
  - Added mwmqoFailOnCongestion to TkbmMWMessageQueueOption.
    If a queue is getting congested this will lead to push returning
    false, and message not being pushed on queue.
  - Added IkbmMWMessageQueueCustomAction and descendants
    IkbmMWMessageQueuePushAction,
    IkbmMWMessageQueueTentativelyPopAction,
    IkbmMWMessageQueueCommitAction, IkbmMWMessageQueueRollbackAction,
    IkbmMWMessageQueueDeleteAction, IkbmMWMessageQueueRejectAction,
    IkbmMWMessageQueueStalledAction, IkbmMWMessageQueueCongestionAction,
    IkbmMWMessageQueueClearAction,
    IkbmMWMessageQueueTentativelyPushAction,
    IkbmMWMessageQueueCommitPushAction,
    IkbmMWMessageQueueRollbackPushAction
    Allows for any class to subscribe for various events on a
    message queue.
  - Added events OnPush,OnTentativelyPop,OnCommit,OnRollback,OnDelete,
    OnReject,OnStalled,OnCongestion,OnClear,OnTentativelyPush,
    OnCommitPush,OnRollbackPush to TkbmMWCustomMessageQueueAction.
  - Added mwpsaRetry to TkbmMWMessageProcessingSuccessAction.
    Controls if a failed message processing operation should be retried.

  Changes/minor additions
  =======================
  - Changed TkbmMWScheduler to preallocate at least 1 relaxed thread if
    any relaxed events have been defined, even if they are not to run
    yet. Purpose is to play nice with memory leak detection.
  - Changed TkbmMWLockFreeHashArray to inherit from generic version,
    and be named TkbmMWLockFreeHashArray32.
  - Changed TkbmMWCustomTransportStream to allow for BatchedMessages=nil
    to improve performance and memory usage.
  - Added check for out of memory conditions in TkbmMWBufferPages.
  - Added missing Occurs(const AOccurance:TkbmMWScheduleOccurance)
    method to IkbmMWScheduledEvent to be able to type fluently.
  - Changed KBMMW_THREAD_TIMEOUT_GRANULARITY to 50ms instead
    of 2000ms to ensure more smooth shutdown of threads.
  - Changed so TkbmMWThreadEntry.Create do not autostart inner thread.
  - Changed TkbmMWCustomThreadPool.Create to allow for specifying if to
    autostart threads created via pool.
  - Changed TkbmMWCustomThreadPool.PreAllocate to take optional
    arguments setting pool size and autostart option.
  - Improved early error detection in ReadSubjectHeader.
  - Changed TkbmMWAfterMessageProcessedEvent by adding argument
    var AAction:TkbmMWMessageProcessingSuccessAction
  - Changed TkbmMWCustomGroupedMultithreadMessageQueueProcessor by
    adding setters to numerous properties.
  - Changed TkbmMWMemoryQueue options to default not batch any messages.
  - Changed TkbmMWGroupedMessageQueueProcessorThread to default
    congest at 10 messages for normal priority messages.
    The default congestion treshold will be overwritten with QueueSize
    setting when the processor is started.
  - Improved Firemonkey support for TkbmMWJPEG.

  Fixes
  =====
  - Fixed problems with TkbmMWDateTime due to threadsafety issues in
    Embarcadero's TTimeZone.Local implementation, which could lead to
    various exceptions on some OS versions.
  - Fixed issue with SendPing resulting in index out of range due to
    missing unstreaming of request values.
  - Fixed multithreaded race condition on unhooking components from
    connectionpool.
  - Fixed bug where not all properties of a scheduled event was
    considered.
  - Fixed bug in TkbmMWScheduledEvents where precise event thread was
    not guaranteed started immediately.
  - Fixed shutdown problem in Indy 10 due to TerminateYarn bug.
  - Fixed potential race condition bug in TkbmMWFilePool.
  - Fixed bug in TkbmMWMREWLock and performance optimized it. Added a
    number of introspecting functions:
    ReadLockedBy, WriteLockedBy, LockedByAsString,
    WriteLockRecursiveCount, ReaderLockCount which can be used to query
    current status of a lock.
    Now kbmMW default uses TkbmMWMREWLock for all locking.
    This can be disabled by commenting
    {$IFDEF KBMMW_SUPPORT_FASTMRWSLOCK}
    in kbmMWConfig.inc.
  - Fixed memory leak in TkbmMWHashBuckets.
  - Fixed TkbmMWMemoryStream.Read when attempting to read 0 bytes.
  - Fixed bugs in TkbmMWCustomThread.Stop.
  - Fixed TkbmMWCipherCustomDES, TkbmMWCipherRijndael (AES) and
    TkbmMWCipherIDEA on 64 bit platforms.
  - Fixed TkbmMWCustomClient.SendPing without arguments not correctly
    sending NULL.
  - Fixed ftDateTime bug in UniDAC adapter.

目录
相关文章
|
算法
YOLOv8官方支持多目标跟踪 | ByteTrack、BoT-SORT都已加入YOLOv8官方
YOLOv8官方支持多目标跟踪 | ByteTrack、BoT-SORT都已加入YOLOv8官方
1809 0
|
1月前
|
存储 机器学习/深度学习 PyTorch
119_LLM训练的高效内存管理与优化技术:从ZeRO到Flash Attention
大型语言模型(LLM)的训练面临着前所未有的计算和内存挑战。随着模型规模达到数百亿甚至数千亿参数,高效的内存管理成为训练成功的关键因素之一。2025年,LLM训练的内存优化技术已经取得了显著进展,从ZeRO优化器到Flash Attention等创新技术,为训练超大规模模型提供了可能。
|
5月前
|
存储 安全 Java
String StringBuffer StringBuilder 区别详解与对比分析
本文详细解析了Java中String、StringBuffer和StringBuilder的区别,从可变性、线程安全性和性能三个方面进行对比,并结合具体应用场景分析了三者的适用范围。通过性能测试示例展示了它们在字符串拼接时的效率差异,同时提供了实际代码案例帮助理解。总结指出,String适合少量操作或线程安全场景,StringBuffer适用于多线程环境,而StringBuilder则在单线程下性能最优。开发者应根据需求选择合适的类以优化程序性能。文末还附有相关面试资料供参考。
1027 2
|
数据采集 TensorFlow 算法框架/工具
【大作业-03】手把手教你用tensorflow2.3训练自己的分类数据集
本教程详细介绍了如何使用TensorFlow 2.3训练自定义图像分类数据集,涵盖数据集收集、整理、划分及模型训练与测试全过程。提供完整代码示例及图形界面应用开发指导,适合初学者快速上手。[教程链接](https://www.bilibili.com/video/BV1rX4y1A7N8/),配套视频更易理解。
341 0
【大作业-03】手把手教你用tensorflow2.3训练自己的分类数据集
|
运维 监控 Devops
DevOps实践:持续集成与持续部署的黄金路径
在数字化时代,快速迭代和高质量软件交付成为企业竞争的核心。本文深入探讨了DevOps文化下,持续集成(CI)与持续部署(CD)的最佳实践,旨在为读者提供一套实现高效、自动化的软件发布流程的方法论。通过分析现代软件开发的挑战,结合具体案例,本文详细阐述了如何构建一个灵活、高效的CI/CD流水线,以及如何利用监控和反馈机制不断优化这一过程。文章不仅适合运维人员阅读,同时也为软件开发者和项目经理提供了宝贵的参考。
276 27
|
8月前
|
SQL 监控 数据库
如何解决 SQL Server 占用内存过多问题
SQL Server 占用过多内存会导致响应缓慢和查询性能低下。解决流程包括:1) 查看内存使用情况,2) 分析各数据库内存占用,3) 优化 SQL Server 配置(如限制最大内存),4) 优化查询(如创建索引),5) 持续监控效果。通过这些步骤可有效控制内存占用,提升系统性能。
1055 0
|
机器学习/深度学习 测试技术 TensorFlow
【大作业-01】花卉识别-基于tensorflow2.3实现
2021年6月18日更新:提供修复后的TensorFlow 2.3物体分类代码,支持自定义数据集训练。包含CSDN教程、B站视频、数据集及代码下载链接。示例项目为花卉识别,涵盖模型训练、测试、保存和使用,附带图形界面操作指南。
226 0
【大作业-01】花卉识别-基于tensorflow2.3实现
|
安全 API UED
WebSocket API 中的 close 事件是如何触发的?
【10月更文挑战第26天】close事件的触发涵盖了从正常的连接关闭到各种异常情况导致的连接中断等多种场景。通过监听close事件,开发人员可以在连接关闭时进行相应的处理,如清理资源、更新界面状态或尝试重新连接等,以确保应用程序的稳定性和良好的用户体验。
|
Prometheus 监控 Cloud Native
Grafana 入门指南:快速上手监控仪表盘
【8月更文第29天】Grafana 是一款开源的数据可视化和监控工具,它允许用户轻松地创建美观的仪表盘和图表,以便更好地理解和监控数据。无论您是需要监控系统性能指标、应用程序日志还是业务关键指标,Grafana 都能提供灵活而强大的解决方案。本指南将带领您快速上手 Grafana,包括安装、配置以及创建第一个监控面板。
3025 2
|
编解码 人工智能 PyTorch
Stable Diffusion如何生成高质量的图-prompt写法介绍
Stable Diffusion如何生成高质量的图-prompt写法介绍