首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何加快大型遗留应用程序开发速度?

作者 | Michael Shpilt 译者 | Sambodhi 策划 | 凌敏 本文深入探讨了大型企业和遗留应用程序开发速度缓慢现象,并分析了导致这一问题根本原因。...初创公司通常具有灵活性和迅速响应特点,而大型公司则在开发庞大应用程序时进展较为缓慢。这些大型应用可能由数百名开发者耗费数年甚至几十年时间开发而成,例如亚马逊市场、AutoCAD 或各种操作系统。...一些大型项目被称为 “遗留应用程序”,因为它们采用旧技术、积累了大量技术债务,难以进行修改。然而,进展缓慢、有传统感项目并不仅限于企业、老系统,甚至不仅限于大型开发团队。...此外,致力于一个不断变化目标,一个正在积极开发项目是困难,而且优化速度通常慢于新问题出现速度。 所以,我们如何处理这些问题呢?当一个应用程序变得足够庞大时,其中一些问题似乎是无法避免。...你可以查看这个简短 Java 编码指南,或者如果你睡不着觉的话,可以看看这个长达 82 页 C++ 编码指南。

9610

WPF 如何确定应用程序开启了 Pointer 触摸消息支持

因为 WPF 在开启 Pointer 和没有开启基础表现几乎相同,因此从业务层很难了解到当前是否开启了 Pointer 消息。...本文从开发者角度,通过 Windows 消息判断当前是否开启 Pointer 支持 在 win10 支持默认把触摸提升 Pointer 消息 告诉大家如何在 Win10 下让 WPF 在 .NET 4.7...和以上框架支持 Pointer 消息 那么如何确定这个 WPF 程序我写对了,开启了 Pointer 消息?...可以通过监听 Window 消息,如果能收到 Pointer 消息,那么算开启成功 不需要在用户端判断,用户端只需要判断 运行系统是 Windows 10 Creators Update 1703...因此本文更多是给开发端,开发时候通过此方法可以确定是否开启了 Pointer 消息 在 WPF 添加窗口消息钩子方法 这篇博客告诉大家如何拿到窗口消息 在这个基础上,尝试在拿到消息判断是否 Pointer

62420
您找到你想要的搜索结果了吗?
是的
没有找到

Java并发:如何确定线程池线程数目

IO密集型任务如何确定线程数目 ---- IO密集型任务对CPU使用率比较低,IO处理时间稍长,IO阻塞期间导致线程空余,所以通常线程数目较多,一般为CPU核心数目的两倍。...java.lang.Runtime#availableProcessors * 2 CPU密集型任务如何确定线程数目 ---- CPU密集型任务也叫计算密集型任务,即需要大量计算而非常消耗CPU资源任务...混合型任务如何确定线程数目 ---- 混合型任务即少量消耗CPU,又大量消耗IO任务。一般我们微服务系统就属于这种。...java提供 java.util.concurrent.ThreadPoolExecutor 可以动态调整核心线程数和最大线程数,但是队列好像不支持动态调整,需要我们自己实现。...由于Java中协程还没出现,可以考虑使用go语言中原生支持协程,去实现一些高性能服务。 ----

20520

FastAPI(40)- 大型应用程序项目拆分

背景 假设要搭建一个测试平台,那么整个项目的 API 数量肯定很多个,他们不可能放在同一个文件中 FastAPI 提供了一个方便工具来构建应用程序,同时保持所有的灵活性 项目架构 假设结构如下 . ├...── items.py │ │ └── users.py │ └── internal │ ├── __init__.py │ └── admin.py main:应用程序主入口...,会添加所有子路由 dependencies:存放应用程序要用到依赖项 routers:子路由,根据模块划分,比如 users 存放用户信息相关路由,items 存放其他内容路由 internal...127.0.0.1", port=8080, debug=True, reload=True) 重点 使用 app.include_router() 可以将每个 APIRouter 添加到主 FastAPI 应用程序中...,它将包括来自该路由器所有路由作为它一部分 它实际上会在内部为 APIRouter 中声明每个路径操作创建一个路径操作,因此,在幕后,它实际上会像所有东西都是同一个应用程序一样工作 使用 app.include_router

1.3K10

Java如何加快大型集合处理速度

作者 | Nahla Davies 译者 | 明知山 策划 | 丁晓昀 本文讨论了 Java Collections Framework 背后目的、Java 集合工作原理,以及开发人员和程序员如何最大限度地利用...默认情况下,流是串行。 5 通过并行处理来提升性能 在 Java 中处理大型集合可能很麻烦。虽然 Streams 简化了大型集合处理和编码工作,但并不总是能保证性能上提升。...众所周知,网站用户只会等待几秒钟加载时间,然后他们就会离开。因此,为了提供最好用户体验并维护开发人员提供高质量产品声誉,开发人员必须考虑如何优化大型数据集合处理。...虽然并行处理并不总能保证提高速度,但至少是有希望。 并行处理,即将处理任务分解为更小块并同时执行它们,提供了一种在处理大型集合时减少处理开销方法。...但是,初学者和中级开发人员应该重点了解哪些操作可以从 Java 原生并行处理特性中受益。 6 结论 在大数据世界里,想要创建高性能网页和应用程序,必须找到改进大量数据处理方法。

1.8K30

如何唯一确定一个 Java 类?

今天偶然想起之前和朋友讨论过一个问题:如何唯一确定一个 Java 类?我相信大多数朋友遇到这个问题回答都是:类全路径呗。...但事实上,唯一确定一个 Java 类,单单靠类路径是不够,还要多加上一个东西:类加载器。也就是说,类加载器 + 类路径才唯一确定一个 Java 类。 为了证明我所说,我们来做一个简单实验。...但是 obj 对象却不是 UniqueClass 类实例。这就验证了我说法,即:类加载器 + 类路径才唯一确定一个 Java 类。...其实在 Java 语言中,还有一个与之非常类似的情况:如何唯一确定类中一个方法?按照我们一直以来直觉,我们会回答:方法名、形参类型、形参个数。...最后让我们来总结一下:在 JVM 中,类路径和类加载器唯一确定一个 Java 类,方法名、形参类型、形参个数、返回参数类型唯一确定一个 Java 类中方法。

1K30

如何确定线程池大小?

通常有点年纪程序员或许都听说这样一个说法 (其中 N 代表 CPU 个数) CPU 密集型应用,线程池大小设置为 N + 1 IO 密集型应用,线程池大小设置为 2N 这个说法到底是不是正确呢?...其实这是极不正确。那为什么呢? 首先我们从反面来看,假设这个说法是成立,那我们在一台服务器上部署多少个服务都无所谓了。因为线程池大小只能服务器核数有关,所以这个说法是不正确。...,只要知道这个查询 DB 耗时(CPU IO time),计算时间不就出来了嘛,我们看一下怎么才能简洁,明了记录 DB 查询耗时。...CPU 个数 cat /proc/cpuinfo| grep "processor"| wc -l 总结 合适配置线程池大小其实很不容易,但是通过上述公式和具体代码,我们就能快速、落地算出这个线程池该设置多大...不过最后最后,我们还是需要通过压力测试来进行微调,只有经过压测测试检验,我们才能最终保证配置大小是准确

2.4K10

如何提升Java应用程序性能

我们首先将介绍如何定义可度量性能指标,然后看看有哪些工具可以用来度量和监控应用程序性能,以及确定性能瓶颈。 我们还将看到一些常见Java代码优化方法以及最佳编码实践。...它功能很丰富,对确定应用程序性能基线很有帮助。 Retrace关键组件之一是它代码分析功能,它能够在不减慢应用程序情况下收集运行时信息。...Retrace能帮助我们快速确定应用程序为什么会出现如下性能问题: 某个SQL语句是否会拖慢系统速度? Redis突然变慢了吗? 特定HTTP Web服务宕了,还是变慢了?...例如,下面的图形展示了在一段给定时间内速度最慢组件。 代码级别的优化 负载测试和应用程序监控对于确定应用程序一些关键性能瓶颈非常有用。...JDBC性能 关系型数据库是Java应用程序中另一个常见性能问题。为了获得完整请求响应时间,我们很自然地必须查看应用程序每一层,并思考如何让代码与底层SQL DB进行交互。

1.4K80

如何提升Java应用程序性能

介绍 在这篇文章中,我们将讨论几个有助于提升Java应用程序性能方法。我们首先将介绍如何定义可度量性能指标,然后看看有哪些工具可以用来度量和监控应用程序性能,以及确定性能瓶颈。...我们还将看到一些常见Java代码优化方法以及最佳编码实践。最后,我们将看看用于提升Java应用程序性能JVM调优技巧和架构调整。...它功能很丰富,对确定应用程序性能基线很有帮助。 Retrace关键组件之一是它代码分析功能,它能够在不减慢应用程序情况下收集运行时信息。...例如,下面的图形展示了在一段给定时间内速度最慢组件。 ? 代码级别的优化 负载测试和应用程序监控对于确定应用程序一些关键性能瓶颈非常有用。...JDBC性能 关系型数据库是Java应用程序中另一个常见性能问题。为了获得完整请求响应时间,我们很自然地必须查看应用程序每一层,并思考如何让代码与底层SQL DB进行交互。

1.4K70

如何确定线程池大小?

通常有点年纪程序员或许都听说这样一个说法 (其中 N 代表 CPU 个数) CPU 密集型应用,线程池大小设置为 N + 1 IO 密集型应用,线程池大小设置为 2N 这个说法到底是不是正确呢?...其实这是极不正确。那为什么呢? 首先我们从反面来看,假设这个说法是成立,那我们在一台服务器上部署多少个服务都无所谓了。因为线程池大小只能服务器核数有关,所以这个说法是不正确。...,只要知道这个查询 DB 耗时(CPU IO time),计算时间不就出来了嘛,我们看一下怎么才能简洁,明了记录 DB 查询耗时。...CPU 个数 cat /proc/cpuinfo| grep "processor"| wc -l 总结 合适配置线程池大小其实很不容易,但是通过上述公式和具体代码,我们就能快速、落地算出这个线程池该设置多大...不过最后最后,我们还是需要通过压力测试来进行微调,只有经过压测测试检验,我们才能最终保证配置大小是准确

1.4K30

如何确定Kaizen实施机会?

虽然Kaizen最终目标是每天逐步持续改进,但你必须从某个地方开始。当您第一次开始实施Kaizen时,您可能需要进行流程审查,以确定最初改进机会。以下是审查流程以获得可能改进一些基础知识。...绘制流程图-获取流程图/流程图以及可能存在任何工作说明、控制计划或其他流程文件。如果您没有流程图,请构建一个流程图。彻底了解流程的当前状态,了解真正发生了什么。如果你不理解你过程,你就无法改进它。...这工作是怎么做/应该怎么做?流程步骤多久执行一次/需要多久执行一次?继续回顾流程和每个流程步骤,直到您涵盖了每个步骤。学会超越当前状态,展望未来改进过程。我们必须摆脱“我们总是这样做”咒语。...允许这种态度只会阻止对流程任何更改或改进。通过执行流程审查并提出正确问题,您将能够:从流程中删除任何不需要步骤或任务。确定哪些工序必须分开进行,哪些工序可以并行完成。...重新安排工序顺序,以减少浪费;在许多情况下,对操作顺序或顺序稍加改变就能使我们减少浪费时间和精力。

39640

如何确定Pod内网域名

内网域名解析 内网域名解析,顾名思义是通过内网DNS服务器在局域网内做域名解析。 内网域名解析好处: 1、较高性能和较低延迟; 2、能够有效地防范外部攻击,解决劫持问题。...原因也很简单,就是数据包在网络设备上传输路径短了。 另外内网网络质量是可控,大多数情况下都比外网好些,即使不好也很容易换个比较好设备来解决。...如何确定K8s应用内网域名 K8s应用内网域名是由K8s集群内部域名解析服务来进行解析,整个过程都在K8s集群内。...K8s中应用全限定域名由三部分组成: 1、应用在K8s中定义服务名 2、应用在K8s集群中命名空间 3、集群本地服务名称中使用可配置集群域后缀。 示例: 一个ServiceYAML定义文件。...另外,应用K8s内网域名是ping不通 小技巧: 所有的K8s应用都有YAML定义文件。

1.7K20

如何检测Java应用程序安全漏洞?

Java应用程序安全漏洞可以由以下几种方式进行检测: 1、静态代码分析工具 静态代码分析工具可以扫描整个代码库,尝试识别常见安全问题。...这些工具可模拟黑客攻击,并通过验证输入处理方式,是否可以引起漏洞或者异动条件。 3、漏扫工具 漏洞扫描器是检测网络上计算机及其软件系统漏洞一种自动化工具。...5、渗透测试 渗透测试是指在授权范围内利用恶意攻击者使用工具和技术来评估网络、应用程序以及操作系统中安全性。渗透测试可以帮助您确定系统中存在什么漏洞以及潜在攻击者可以如何入侵您系统。...总之,安全问题是Java应用程序需要考虑一个关键问题。通过综合使用以上列举方式,Java应用程序安全性可以被更好保障。...同时,我们应该一直注意并及时更新软件组件库,并采用文档化最佳实践,如加强访问控制、修补已知漏洞等方式来保持应用程序安全。

30130

(七)线程池大小如何确定

简单说,就是需要大量输入输出,不如读文件、写文件、传输文件、网络请求。 如何确定线程池大小? 线程数不是越多越好。...在《Java并发编程实践》中,是这样来计算线程池线程数目的: 一个基准负载下,使用 几种不同大小线程池运行你应用程序,并观察CPU利用率水平。...: Nthreads = Ncpu x Ucpu x (1 + W/C) CPU数量是确定,CPU使用率是目标值也是确定,W/C也是可以通过基准程序测试得出。...这个经验公式原理很简单,T个线程,每个线程占用PCPU时间,如果刚好占满C个CPU,那么必有 T * P = C。 如果一个web程序有CPU操作,也有IO操作,那该如何设置呢?.../www.zyiz.net/tech/detail-121726.html 如何合理地估算线程池大小?

1.4K10

CAPTAIN HOOK - 如何(不)寻找 JAVA 应用程序漏洞

寻找 Java 应用程序漏洞好时机!在过去几个月里,我一直在尝试构建一个名为Captain Hook工具,它使用动态方法来查找大型闭源 Java 应用程序一些有趣(安全方面)特性。...要求 由于 Synacktiv 专家在寻找大型 Java 项目中漏洞时将使用 Captain Hook,它应该: 易于在目标应用程序上设置。 易于使用,直观。...然后它可以由 CLI 控制,例如使用 TCP 套接字: 我认为这些将是我可能需要所有工具,以便在 Java 应用程序中采用这种动态方法进行漏洞研究。 但是等等……你如何缓解漏洞发现?...目标 0 - 选择一个典型目标 为了创建一个工具来帮助审计人员发现大型闭源 Java 应用程序漏洞,其中很大一部分是识别典型大型闭源 Java 应用程序”并尝试使用我工具重新发现公共漏洞。...由于 Java Frida 绑定内部机制目前还没有文档,所以我花了很长时间调试这个问题,最后发现在使用 Frida 重新实现设置断点方法时发生冲突(无论顺序如何两者中)。

77210

如何解决Java应用程序IO性能问题?

Java应用程序I/O性能问题通常与以下几个方面有关: 1、磁盘和网络I/O速度较慢。 2、缓存未被充分利用。 3、I/O操作阻塞线程,导致应用程序整体响应变慢。...解决这些问题需要采取不同策略: 1、使用合理调用方式:使用Java NIO(New I/O)等高效I/O框架可以提高I/O性能。...Java NIO中使用了非阻塞I/O以及选择器(Selector)等机制,可以显著提升I/O处理速度。当然,要考虑到实际情况复杂程度,具体选择什么方案需要根据实际业务需求而定。...4、使用非阻塞IO方式:Java NIO可通过使用Selector,Channel等API实现非阻塞IO。 5、使用缓存加速读写:对于高吞吐IO操作,最好在内存中开启缓存,减少磁盘IO访问。...总之,要解决Java应用程序I/O性能问题,需要从多个方面进行优化,例如考虑精细控制线程、缓存数据、提高计算机硬件配置、使用异步处理等一系列方案,以达到合理使用系统资源、确保快速响应客户端目标。

31710

图纸有公差如何确定尺寸?

P – 实际位置。 位置计算公式(不含 MMC/LMC) 如果 PTP,则位置不符合要求。 带 MMC/LMC 位置公式很简单。...步骤 3 — 根据零件特征和条件类型,从下表中获取补偿公差 (BT)。 步骤 4 – 获取具有补偿公差 TP = TP + BT 如果 P<=TP,则该特征在允许位置范围内。...最大实体条件(MMC) 表示具有最大体积/尺寸特性最大或最小允许容许度。 在孔里 ,MMC=根据公差允许最小直径。 在轴上 ,MMC=根据公差允许最大直径。...将真实位置与MMC结合起来是非常有用。当该特性尺寸处于其最大实体条件时,考虑最大允许位置偏差。当零件测量尺寸和它MMC之间差异增加时,你会在位置上使用更大公差。...这个额外公差范围被称为补偿公差。 什么是补偿公差? 由于该特性相对于其最大物质条件尺寸,补偿公差增加了允许位置偏差。最小加成公差是零,最大公差是零件大小公差域。

6910

如何确定Kafka集群适当topicspartitions数量

在一个Kafka集群中如何选择topics/partitions数量 翻译自How to choose the number of topics/partitions in a Kafka cluster...: kafka基本运行原理 kafka性能如何 kafka为何效能好 kafka有哪些瓶颈 目前在Kafka 2.0版本中已经支持单集群200KPartition数量,这真是可喜可贺啊~~~...每个Partition可以达到吞吐量取决于诸于batch size, 压缩codec, ack级别,复本数等一系列配置。消费者吞吐量经常受限于应用程序处理message消费逻辑有多快。...为了避免这种情况,一种通常作法是提前多分配一些Partition,基本上,你可以根据未来1到2年吞吐量来确定Partition数量,这样来使Partition数量在一个长时期内保持不变。...更多Partition数量可能需要客户端使用过多内存 使用Java SDK时,生产者会按partition来缓存发送消息,当消息累积到一定数量或者到达一定时间后,这此累积消息将被移出缓存并被批量发送

2.4K20

如何确定DevOps变更优先级?

DevOps影响了整个SDLC,那么我们如何确定我们在何时应该首先完成哪些工作呢? ? 自动化一切!有多少人听过这句话?有多少人被要求从事这项工作?...也许您甚至想自己自动化一些事情,但是却没有足够时间完成工作? 任何IT项目都在努力获取正确数量资源,并在正确时间进行正确工作。那么,您如何才能帮助和交流现在应该解决最高优先级问题呢?...虽然一个企业生产量多少会取决于其生产能力,但是必须努力产生对其产品潜在需求。 对于工程团队而言,这实际上意味着我们需要了解是否确实有解决这些痛点需求,或者这仅仅是单一资源所苦苦挣扎事情。...也许是因为只有一个人需要这样做,并且从来没有遇到过完成工作后问题? 尽管我无法描述所有可能情况并给出示例,但我最佳建议是从时间,人员和金钱方面考虑您痛点。...参与某事的人越多,花费时间越多通常意味着更多经济影响。经济影响越大,首先解决问题就越痛苦且最可行。 改进 ? 解释这一点最简单方法是将其称为概念证明阶段。花时间创建和定义计划。

64530
领券