自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吴代庄的博客

欢迎访问我的博客

  • 博客(244)
  • 收藏
  • 关注

原创 系统架构设计师——信息系统架构设计(一)

美国国防部开发的C4ISR是美国国防信息基础设施的核心组成部分,它整合了多个系统,以支持战略和战术决策。这一系统的开发可以视为早期信息系统架构设计的典范,专注于如何通过集成不同的信息技术来实现复杂的军事操作需求。Zachman框架由John Zachman于1987年提出,其架构设计理念影响了后续多个架构框架的发展。

2024-09-04 07:15:00 1038

原创 系统架构设计师——层次式架构设计理论与实践

层次式体系结构是一种将系统组织成多个层次的设计方法,每个层次为上层提供服务,并作为下层的客户。这种结构有助于实现关注点分离,使得每个组件只负责本层的逻辑,从而提高了系统的可维护性和可扩展性。在层次式体系结构中,每一层最多只影响两层,只要给相邻层提供相同的接口,就可以允许每层用不同的方法实现。这种设计为软件重用提供了强大的支持。同时,由于组件的划分很容易明确组件的角色和职责,因此也比较容易开发、测试、管理和维护。

2024-09-03 07:30:00 710

原创 系统架构设计师——信息系统

资源三大流ERP系统整合了物流、信息流和资金流,确保这些资源在企业内部顺畅流动并高效利用。管理理论和管理思想ERP融合了现代管理理论,如供应链管理(SCM)、客户关系管理(CRM)和商业智能(BI),旨在通过科学的管理思想提高企业效益。发展历程从最初的物料需求计划(MRP)到制造资源计划(MRPⅡ),再到今天的ERP,该系统经历了多次演变,目前正融入人工智能和云计算等新技术。

2024-09-03 07:15:00 653

原创 系统架构设计师——系统性能

这些方法分别通过直接获取理想数据、应用衍生出的复合指标公式、程序测试以及仪器测试来评估性能指标。计算方法在工程和科学领域内扮演着至关重要的角色,它涵盖了对各种指标的具体评估方式。

2024-09-02 07:15:00 681

原创 系统架构设计师——信息系统概述

信息系统是一个复杂的集成体,它结合了计算机硬件、网络和通信设备、计算机软件、信息资源、信息用户以及规章制度,旨在高效地处理和管理信息流。这个系统不仅仅是技术的组合,还涉及到使用这些技术的人和他们制定的规章,确保信息的有效和安全流通。:信息系统的输入功能是指从外部或内部源收集数据的过程。这些数据可以是事务数据、文档、图像等任何形式的原始事实或观察结果。输入的数据需要通过键盘、扫描仪、传感器或其他设备转换成机器可读的形式,以便系统处理。:存储是信息系统保存数据和信息的功能。

2024-09-02 07:15:00 755

原创 系统架构设计师——架构评估(二)

对场景进行分类,生成特定体系结构的场景描述列表,然后逐一评估这些场景,并分析它们之间的相互作用。:在收集和分析场景后,设计师将最高级别的场景映射到所描述的架构中,并解释相关架构是如何帮助实现这些场景的。ATAM的评估结果包括简洁的架构描述、清晰的业务目标、用场景集合捕获的质量属性、确定的敏感点和权衡点集合、有风险决策和无风险决策、风险主题的集合。:项目决策者从业务的角度介绍系统的概况,包括系统的主要功能、技术或管理或经济和政治方面的限制、与项目相关的业务目标和上下文、关键干系人以及架构的驱动因素。

2024-08-30 07:30:00 943

原创 系统架构设计师——系统工程学

基于模型的系统工程(MBSE)是一种系统化的方法,它通过形式化、图形化、关联化的建模语言和工具,支持系统的需求分析、设计、验证和确认等活动。从概念设计阶段开始,贯穿整个产品或系统的生命周期,包括设计开发和后续的各个阶段。MBSE的核心思想可以概括为以下几点:**形式化建模方法:**使用标准化的建模语言,如SysML(系统建模语言),来确保模型的一致性和精确性。**图形化表示:**通过可视化的图形来表达系统的结构、行为、需求等,使复杂的系统信息更易于理解和沟通。

2024-08-30 07:15:00 1196

原创 系统架构设计师——特定领域软件体系结构DSSA

在软件工程领域,特定领域软件架构(DSSA)是一种针对特定应用领域的软件架构方法。

2024-08-29 07:15:00 637

原创 系统架构设计师——架构评估(一)

可用性是软件系统的一个重要质量属性,它确保了系统能够在预期的时间内正常运行和提供服务。提升可用性的策略通常包括错误检测、错误恢复和错误避免三个方面。提升安全性是软件系统设计中至关重要的一环,尤其是在网络互联的环境下。提升性能是软件系统中至关重要的方面,尤其是在高负载和高并发的场景下。可修改性是软件系统的一个重要质量属性,它指系统能够容易地被修改、扩展或维护。

2024-08-29 07:15:00 1224

原创 系统架构设计师——微服务架构

微服务架构是一种将单一应用程序作为一套小服务的开发方法,每个服务运行在其独立的进程中,并通常围绕特定的业务功能进行构建。这些服务可以通过轻量级的通信协议(如HTTP/JSON)进行交互和数据交换。

2024-08-28 07:15:00 970

原创 系统架构设计师——其他架构模式

MVC模式将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。这种分离有助于提高代码的可维护性、可扩展性和可复用性。确实,使用MVC模式设计表现层带来了多方面的优势,您列举的这些优点非常到位。

2024-08-28 07:15:00 643

原创 系统架构设计师——轻量级架构

您提到的三层架构模式包括表现层、业务逻辑层和持久层,每一层都有其特定的职责和功能。

2024-08-27 07:15:00 1564

原创 系统架构设计师——SOA面向服务的架构

SOA是一种设计方法,其中业务功能被封装为可重用的服务。这些服务通过定义良好的接口和协议进行交互,独立于编程语言和部署平台。

2024-08-27 07:15:00 658

原创 系统架构设计师——架构风格

软件体系结构风格是指在软件架构设计中,针对特定应用领域所采用的一套惯用模式,这些模式定义了系统的组织方式。

2024-08-24 22:20:15 1250

原创 系统架构设计师——基于架构的软件开发方法

基于体系结构的软件设计(Architecture-Based Software Design,ABSD)方法是一种以软件架构为中心的设计方法论,它强调在软件开发过程中早期和持续地关注软件体系结构。

2024-08-23 07:30:00 1988

原创 系统架构设计师——软件架构基本概念

*软件架构是软件开发中的一个核心概念,它主要关注软件构件的结构、属性和交互作用。

2024-08-23 07:15:00 679

原创 系统架构设计师——信息系统基础知识

信息化是指利用信息技术和信息系统收集、处理、存储、传输、分析和利用数据和信息的过程。信息化对于提高组织的效率、竞争力和创新能力至关重要。

2024-08-22 07:15:00 479

原创 系统架构设计师——信息系统应用

旨在提升企业的操作效率和决策质量。ERP系统通过整合主要的业务流程:物流、资金流和信息流,帮助企业各部分之间实现信息共享和流程优化。:物流涉及产品从原材料到最终用户的整个物理流转过程。这包括供应链中的采购、生产、仓储和配送等环节。在ERP中,物流管理模块帮助企业控制和管理库存水平,优化库存位置和移动路径,从而减少运输成本和提高响应速度。:资金流描述了资金在供应链中的流动路径,它通常与物流相反。例如,当产品售出时,资金流向公司,而当购买原材料或服务时,资金流出。

2024-08-22 07:15:00 839

原创 系统架构设计师——系统测试

黑盒测试将软件看作是一个不透明的黑盒,完全不考虑(或不了解)程序的内部结构和处理算法,而只检查软件功能是否能按照SRS的要求正常使用,软件是否能适当地接收输入数据并产生正确的输出信息,软件运行过程中能否保持外部信息(例如,文件和数据库等)的完整性等。自顶向下的单元测试是一种测试策略,从软件结构的顶层开始,并在逐步向下的层次中进行。在这种方法中,底层的函数或模块首先被测试,这些测试通常不需要依赖其他未测试的模块。系统测试是测试整个软件系统的过程,包括所有集成的模块、子系统和软硬件环境。

2024-08-21 07:15:00 1702

原创 系统架构设计师——系统运行与维护

软件维护是软件生命周期中持续最长、成本最高的阶段。

2024-08-21 07:15:00 282

原创 JDK源码——String相关

String类别不可变字符串可变字符串可变字符串与同步性能因为不可变,拼接字符串效率较低,每次拼接都会生成新的String对象。在单线程中,相比String效率更高,因为可以直接在原字符串上进行修改,不需要创建新对象。由于添加了同步,所以在多线程环境中是安全的,但在单线程中比StringBuilder慢。线程安全线程安全,因为是不可变的不是线程安全的线程安全修改方式不能被修改可以被修改可以被修改常见用途适用于少量字符串操作和值的比较适用于大量字符串操作且不需要考虑线程安全的场景。

2024-08-16 07:15:00 786

原创 Idea开发代码注释规范

注释风格:尽量保持注释简洁明了,避免过多的冗余信息。注释应该遵循一致的风格,例如使用英文标点符号和空格。注释更新:当代码发生变化时,确保相应的注释也得到更新,以保持代码和注释的一致性。

2024-08-16 07:15:00 299

原创 JDK源码——线程安全的双端队列

和都是 Java 集合框架中的双端队列实现。它们都允许在两端插入和移除元素,并且是线程安全的。

2024-08-14 07:15:00 682

原创 JDK源码——ThreadLocal

remove(): 移除当前线程的局部变量值。调用此方法后,当前线程将不再持有任何局部变量值。set(T): 为当前线程设置一个新的局部变量值。参数T是要设置的值的类型。get(): 获取当前线程的局部变量值。返回类型为T。withInitial(Supplier): 创建一个新的ThreadLocal实例,其初始值由提供的Supplier提供。这个方法返回一个新的ThreadLocal对象,其类型为S。

2024-08-14 07:15:00 923

原创 JDK源码——线程安全的队列

clear()方法没有参数且返回类型为void,意味着它不返回任何值;element()方法同样没有参数,但返回类型为E,表示它返回队列中的元素;extends E>)方法接受一个集合作为参数,并且返回类型为boolean,表示它将多个元素添加到队列中并返回操作是否成功;remove()方法返回类型也是E,但它从队列中移除并返回头部元素;add(E)方法接受一个元素作为参数,返回类型为boolean,表示它尝试将元素添加到队列中并返回是否成功。

2024-08-12 07:15:00 1136

原创 JDK源码——同步类

初始化:创建一个CountDownLatch实例时,需要指定一个计数器(count)的值。这个值表示需要等待的操作数量。减少计数器:当一个操作完成时,调用CountDownLatch的countDown()方法,将计数器的值减1。阻塞等待:在计数器值为0之前,调用await()方法的线程会被阻塞。一旦计数器的值变为0,所有等待的线程将被唤醒并继续执行。重置:CountDownLatch没有提供重置计数器的方法。如果需要重新开始等待,需要重新创建一个新的CountDownLatch实例。

2024-08-12 07:15:00 935

原创 JDK源码——locks包(二)

这是一个实用工具类,提供基本的线程阻塞原语,如park()和unpark(),用于创建自定义的同步机制。

2024-08-10 08:00:00 714

原创 JDK源码——locks包(一)

这是一个抽象类,提供了锁的拥有者信息。它主要是为了创建具有所有权功能的同步器,例如信号量和事件计数。:这是一个受保护的方法,用于设置当前拥有独占访问权限的线程。传入一个线程对象作为参数,如果传入null,则表示没有线程拥有访问权限。:这是一个受保护的方法,用于获取当前拥有独占访问权限的线程。如果没有线程拥有访问权限,返回null。这是一个为一系列所设计的抽象框架,比如信号量、事件等,其中操作长整型值。它提供了一个基于FIFO的阻塞队列,可以用于构建锁定和相关的同步器。

2024-08-10 07:30:00 1163

原创 JDK源码——Atomic包(二)

允许对指定类的实例中的int类型字段进行原子更新。这意味着在多线程环境下,你可以安全地更新这个字段,而不会导致不一致或者竞态条件的问题。

2024-08-09 07:15:00 967

原创 JDK源码——Atomic包(三)

允许你原子地更新一个引用类型的变量。这意味着在多线程环境下,你可以安全地更新这个引用,而不会导致不一致或者竞态条件的问题。它通常用于实现简单的并发数据结构,如原子计数器、状态标志等。是一个泛型类,用于实现一个线程安全的引用类型。

2024-08-09 07:15:00 1084

原创 JDK源码——Atomic包(一)

Atomic包是Java在并发编程中的重要工具,它利用CAS(Compare-And-Swap)机制保证操作的原子性,同时避免了重量级锁的使用,提高了并发性能。Atomic包中的类通过底层处理器提供的原子指令实现,但不同的CPU架构可能提供的原子指令不同,有时可能需要某种形式的内部锁,因此不能绝对保证线程不被阻塞。

2024-08-08 23:23:08 774

原创 JVM手册——JVM相关配置

通过这个选项,你可以设置一个目标,使得应用程序在垃圾收集上花费的时间占总运行时间的比例尽可能小。:这个选项提供了更详细的垃圾收集日志,包括每一代的回收情况、回收所花费的时间、以及堆的使用情况等。这些选项允许开发者和系统管理员根据应用的具体需求和性能目标,精细地控制并行和并行压缩收集器的行为,从而优化应用的性能和响应时间。这些选项允许开发者和系统管理员根据应用的具体需求和性能目标,精细地控制CMS收集器的行为,从而优化应用的性能和响应时间。正确的线程数可以提升收集效率,减少垃圾收集对应用的影响。

2024-08-08 07:15:00 581

原创 Java HotSpot虚拟机中的内存管理手册阅读笔记

并行收集器是为充分利用多核CPU服务器而设计的,它通过并行执行垃圾收集任务来提高应用程序的吞吐量。尽管它可以减少年轻代收集的暂停时间,但在老年代收集时仍可能面临较长的暂停。因此,它适合那些可以容忍暂停的批量处理型应用程序。在选择垃圾收集器时,应根据应用程序的具体需求和运行环境来决定是否使用并行收集器。

2024-08-07 23:29:08 747

原创 Java多线程学习——JDK工具篇

四种常见的线程池分别是:newCachedThreadPool:创建一个可缓存的线程池,它会根据需要创建新线程,但如果线程空闲时间超过60秒,则会被回收。这种类型的线程池适用于执行大量短期异步任务的场景。newFixedThreadPool:创建一个固定大小的线程池,所有线程都是核心线程。当线程池中的线程都在执行任务时,新的任务会等待队列中的任务完成后再执行。这种类型的线程池适用于执行长期运行的任务。

2024-08-07 07:15:00 559

原创 Java多线程学习——基础篇

线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,但可以访问同属进程下的所有资源。协程则是一种用户级的轻量级线程,完全由用户控制,上下文切换速度快,开销小。:进程是计算机程序关于某个数据集的一次运行活动,是操作系统资源分配和调度的独立单位。每个进程都拥有独立的内存空间,进程间的切换开销较大,但相对安全和稳定。:线程是进程中的一个实体,它不拥有系统资源但可访问进程资源。同一进程内的多个线程共享内存和资源,线程间的切换开销较小。

2024-08-06 07:15:00 875

原创 Java多线程学习——原理篇

重排序是指编译器、运行时或处理器为了优化指令的执行顺序,而对代码中的指令进行重新排序的过程。重排序的主要目的是提高代码的执行效率,例如通过更好地利用CPU资源和减少阻塞时间。Happens-before原则是JMM中用于定义操作之间顺序的一项规则,它保证了操作的可见性、有序性和原子性。

2024-08-06 07:15:00 778

原创 系统架构设计师——软件开发方法分类

软件开发方法是指软件开发过程所遵循的办法和步骤,从不同的角度可以对软件开发方法进行不同的分类。

2024-08-02 07:30:00 869

原创 记录一次Dump文件分析之旅

在分析dump文件时,我们建议尝试使用多个工具,以便从不同角度深入分析问题。若存在内存泄漏,可以直接借助JProfiler来识别问题线程和相关对象。如果未发现明显异常,那么可能需要采用其他软件进行进一步分析。事实上,后来发现在IntelliJ IDEA中也能查看完整的对象情况,包括那些等待回收的对象,这为我们的分析提供了更多便利。

2024-07-31 07:30:00 425

原创 Java8文档阅读——工具篇

启动一个图形化控制台,用于监控和管理 Java 应用程序。jconsole的参数如下:-interval=n:设置更新间隔为n秒(默认为4秒)。-notile:初始时不平铺窗口(适用于两个或更多连接)。-pluginpath plugins:指定要搜索JConsole插件的目录或JAR文件列表。

2024-07-25 07:15:00 724

原创 Java并发编程实战读书笔记(四)

Java内存模型(JMM)是通过各种操作来定义的,包括对变量的读/写操作、监视器的加锁和释放操作,以及线程的启动和合并操作。JMM为程序中的所有操作定义了一个偏序关系,称为Happens-Before。要确保执行操作B的线程看到操作A的结果(无论A和B是否在同一个线程中执行),在A和B之间必须满足Happens-Before关系。如果两个操作之间缺乏Happens-Before关系,那么JVM可以对它们任意地重排序。

2024-07-24 07:30:00 502

Java建造者模式示例

建造者模式是一种创建型设计模式,用于将复杂对象的构建与其表示分离,使得相同的构建过程可以创建不同的表示。在Java中,StringBuilder类是建造者模式的一个典型应用。 StringBuilder类用于创建和操作动态字符串。它内部使用数组来存储字符,并通过append()方法添加新的字符或字符串。当数组容量不足以容纳更多字符时,StringBuilder会自动扩容,这是建造者模式的一个应用。

2024-08-12

Java工厂模式:简单工厂、工厂方法模式、抽象工厂模式代码示例

工厂模式是Java设计模式中的一种创建型模式,旨在提供一种将对象创建与其实现分离的机制,增加软件的灵活性和可维护性。在Java中,工厂模式分为三种:简单工厂、工厂方法模式和抽象工厂模式。 **简单工厂模式** 是最基本的工厂模式,它由一个工厂类根据传入的参数决定创建哪一种产品类的实例。简单工厂容易实现,但违反开闭原则,即新增产品类时需要修改工厂类代码。 **工厂方法模式** 实现了开闭原则,它定义了一个创建对象的接口,但将实际创建工作推迟到子类中去实现。这样,新增产品时只需增加相应的产品类和具体工厂类,原有工厂类无需修改。每个具体产品都有一个对应的具体工厂,使得系统具有更好的灵活性和可扩展性。 **抽象工厂模式** 进一步扩展了工厂方法模式,用于创建一系列相关或依赖的对象。在抽象工厂模式中,每个抽象产品都对应一个抽象工厂,而每个具体工厂都能创建属于同一产品族的所有产品。这有助于将产品族的创建逻辑封装在一起,但新增产品族时需要修改抽象工厂接口,违反了开闭原则。

2024-08-12

设计模式-Java单例模式的各种实现实例

单例模式(Singleton Pattern)是一种常用的软件设计模式,它保证一个类仅有一个实例,并提供一个访问该实例的全局访问点。这种模式通常用于需要频繁地创建和销毁的对象,以减少系统性能开销。 单例模式的优点: 对于频繁使用的对象,可以缩减系统的开销,特别是当对象需要频繁地进行销毁和创建时,单例模式无疑能提供更好的性能。 单例模式具有一定的“防并发作用”,由于单例模式只生成一次实例化对象,可以减少系统内存的开销,特别是对于多线程单例,即可以在系统启动时完成实例化,避免对资源的重复占用。 单例模式可以作为程序中的“全局锁”,方便控制并发。

2024-08-06

esper官网文档中英文对照801-900页

Esper是一个事件流处理和复杂事件处理(CEP)的引擎。它作为一个实时事件驱动框架,当事件流中有特定事件发生时,能够触发自定义

2024-06-03

esper官网文档中英文对照401-600页

Esper是一个事件流处理和复杂事件处理(CEP)的引擎。它作为一个实时事件驱动框架,当事件流中有特定事件发生时,能够触发自定义

2024-06-02

esper官网文档中英文对照201-400页

Esper是一个事件流处理和复杂事件处理(CEP)的引擎。它作为一个实时事件驱动框架,当事件流中有特定事件发生时,能够触发自定义的动作(POJO)。Esper被设计用于处理大量事件的关联,尤其适用于那些无法用传统数据库架构高效处理的场景。

2024-06-02

esper官网文档中英文对照1-200页

Esper是一个事件流处理和复杂事件处理(CEP)的引擎。它作为一个实时事件驱动框架,当事件流中有特定事件发生时,能够触发自定义的动作(POJO)。Esper被设计用于处理大量事件的关联,尤其适用于那些无法用传统数据库架构高效处理的场景。

2024-06-02

高级信息系统项目管理师英语单词

"高级信息系统项目管理师",这是计算机技术与软件专业技术资格(水平)考试(简称软考)中的一个高级资格认证。软考是由中国人力资源和社会保障部、工业和信息化部共同组织的国家级考试,旨在对全国计算机与软件专业技术人员的职业资格与技术水平进行科学、客观、公正的评价与认定。

2024-06-02

Spring Boot+Mybatis集成H2数据库示例

内容概要:本指南介绍了如何在Spring Boot应用中集成Mybatis框架,并使用H2内存数据库作为数据存储方案。具体包括添加H2数据库依赖、配置Spring Boot的数据源连接信息、对Mybatis进行基本设置,以及如何初始化和操作数据库。 适用人群:该教程适合已具备基础Java和Spring Boot开发经验的开发者,尤其是需要快速构建轻量级应用原型,或是希望在单元测试中模拟数据库行为的开发人员。 场景目标:通过集成Spring Boot+Mybatis+H2,可以简化数据库操作层的开发工作,提高开发效率。特别是在无需持久化数据至物理硬盘,仅需临时存储数据的场景(如演示环境、功能测试)下,H2内存数据库能提供便捷、高效的解决方案。同时,由于H2支持Web控制台,使得数据管理和查询更加直观方便。

2024-03-22

spirngboot对接Kafka示例

该示例文件是一个基于Spring Boot框架的应用程序,用于演示如何与Kafka进行集成。通过该示例,你可以学习如何使用Spring Kafka库来实现与Kafka的消息传递。 在该示例中,首先需要配置Kafka的相关信息,包括Kafka服务器地址、端口号等。然后,通过创建一个Kafka生产者和一个Kafka消费者来实现消息的发送和接收。 在生产者方面,你可以编写代码来创建一个消息,并将其发送到指定的Kafka主题(topic)中。你可以设置消息的键(key)和值(value),并选择性地指定分区(partition)和时间戳(timestamp)。 在消费者方面,你可以编写代码来订阅一个或多个Kafka主题,并实现对接收到的消息的处理逻辑。你可以选择使用注解或编程方式来定义消息处理方法,并可以设置消费者的组(group)、偏移量(offset)等属性。 除了基本的消息发送和接收功能,该示例还可以演示如何处理消息的序列化和反序列化、如何处理消息的批量发送和接收、如何处理消息的确认机制等。 总之,该示例文件提供了一个简单而全面的Spring Boot与Kafka集成示例,可以

2024-03-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除