- 博客(66)
- 收藏
- 关注
原创 idea类已经存在却报错
由于这个项目是由老项目复制过来后,再继续开发新的功能,很多同事导入后,都爆出新的类找不到。而且这些同事都是开发过老项目的人,很容易猜想出应该是idea的缓存问题导致报错。在idea中导入新的项目,很多类都飘红报错,mvn compile可以通过,可能是因为idea缓存问题导致。解决办法:file-》invalidate caches-》invatlidate and restart 即可。
2024-03-28 09:34:02 1116
原创 一文读懂java的dto、dao、vo、bo、do、po、pojo
在java编程中我们常常需要做数据交换,那么在数据交换过程中就需要使用到实体对象,这就不可避免的使用到vo、dto、po等实体对象,在java中都属于pojo的范畴,至少在不同场景下使用所表达的含义不同,其中常用的就是视图层和后端交互用vo,后端和持久化交换用dto、rpc等数据交换用dto等。
2024-03-28 09:29:16 14607 3
原创 sonar权限设置
sonar设置查看指定项目的报告权限,在sonar报告查看的场景中,如果需要给外部人员提供某个项目的报告,又不想他能看到代码等其他管理员的权限时,我们可以通过权限模板的方式进行设置。某种情况下,项目的名称是按一定规则生成的,如集成到流水线中,可能就是以流水线名称开头的,这种场景就可以使用如下方式解决。
2024-03-15 11:38:11 674
原创 04锁机制-分布式锁
分布式锁是一种用于分布式系统中实现对共享资源的访问控制的锁机制。在分布式系统中,由于多个节点同时访问共享资源,可能会出现并发访问的问题,例如数据不一致、资源竞争等。分布式锁可以确保在任意时刻只有一个节点的一个线程能够获取锁,从而保证共享资源的一致性和可靠性。唯一性:在分布式系统中,锁的获取和释放需要保证唯一性,即同一时刻只有一个节点能够持有锁。原子性:锁的获取和释放操作需要是原子性的,即不会出现竞态条件,保证操作的一致性和可靠性。
2024-03-01 17:26:31 1000
原创 03多线程-Java锁的种类
在非公平锁中,一个线程请求锁时,如果锁当前是空闲的,则该线程可以直接获取锁,不管其他线程是否在等待获取锁。与公平锁相比,非公平锁可以提高系统的吞吐量,但可能会导致某些线程长时间等待锁的情况。公平锁是一种保证锁获取的顺序与线程请求的顺序一致的锁机制。在公平锁中,当一个线程请求锁时,如果当前锁被其他线程占用,则该线程会被放入等待队列中,等待其他线程释放锁后再获取锁。分段锁可以减小锁的粒度,提高并发性能。相对于轻量级锁和偏向锁而言,重量级锁的实现更加复杂,性能开销也更高,因为它涉及到线程的阻塞和唤醒操作。
2024-03-01 10:08:05 925
原创 03多线程-synchronized的理解
synchronized 是 Java 中用于实现线程同步的关键字,它可以应用在方法和代码块上,用于保证多个线程之间对共享资源的安全访问,其底层原理是通过对象的锁信息和监视器来实现线程的互斥访问和同步操作。
2024-02-28 14:36:35 1066
原创 03多线程-用ReentrantLock实现生产者和消费者模式
ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源重复加锁,即当前线程获取该锁再次获取不会被阻塞。在java关键字synchronized隐式支持重入性,synchronized通过获取自增,释放自减的方式实现重入。与此同时,ReentrantLock还支持公平锁和非公平锁两种方式。
2024-02-28 08:40:32 1012
原创 多线程-了解BlockingQueue的实现方式-线程安全队列
BlockingQueue是Java并发包中提供的一个接口,是实现生产者消费者模式的关键组件之一,是一个基于阻塞机制实现的线程安全的队列,阻塞机制的实现是通过入队列出队列时加锁的方式实现的。作为生产者消费者中间的通讯通道,使得当多个生产者、多个消费者之间的操作是线程安全的。
2024-02-23 10:52:06 1503
原创 多线程-Java的经典实现-生产者和消费者模式
生产者和消费者模式是一种经典的并发编程模式,用于解决生产者和消费者之间的生产和消费问题。在该模式中,生产者负责生产数据并将数据放入共享的缓冲区(或队列)中,而消费者则负责从缓冲区中取出数据并进行消费。生产者和消费者之间通过共享的缓冲区进行通信,但彼此之间并不直接进行通信。
2024-02-22 16:56:56 800
原创 Java多线程
线程是寄生于进程中,是进程中的实际运作单位,每个线程有自己的堆栈空间和程序计数器,本篇文章从进程到线程,分析了线程的生命周期、关键概念、Java中的实现以及适用场景。
2024-02-22 16:43:06 800
原创 11如何管理技术债务
技术债务,又为技术债、设计债或代码债,是信息技术领域中编程和软件工程中的一个概念。它源自开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,选择了短期内能加速软件开发的方案,从而在未来给自己带来了额外的开发负担。这些技术妥协包括编码实践、设计决策、架构选择、性能优化等方面的取舍,它们通常违反了最佳实践或质量标准。
2023-10-18 17:38:30 360
原创 10架构管理之公司整体技术架构
公司整体技术架构是一个公司在技术层面上的蓝图,它包括了硬件、软件、网络、数据和流程等多个方面,旨在确保企业技术资产的一致性、可扩展性和可维护性。通过有效的架构管理,企业可以提高产品质量、降低运营成本、优化资源利用。技术架构管理还能有效减少系统复杂性,提高系统的可维护性和可靠性,从而确保企业业务的稳定运行。
2023-10-10 15:14:25 996
原创 09架构管理之工作量评估评审
工作量评估是项目管理中的重要环境之一,属于计划过程域中,是确定完成特定任务或项目所需的时间、资源和人力的过程。它旨在估计完成项目各个阶段或任务所需的工作量。工作量评估有助于项目计划、资源分配、成本控制和风险管理。通常情况下,工作量以人/天、人/月、人/年的形式来衡量工作量评估评审顾名思义,就是对工作量评估的过程、结果进行评审,判断该工作量评估的准确性、合理性,为项目管理工作做好把关,是项目管理工作中的重要一环。工作量评估评审是一个持续改进的过程,它有助于提高项目管理的质量和效率。
2023-09-14 18:05:24 392
原创 Python的get请求报错Error: Unexpected status code 400
Python的request包做post请求遇到错误:Error: Unexpected status code 400,如何解决
2023-09-12 15:08:45 528
原创 08架构管理之架构检查方法
架构检查是软件开发过程中的一项重要活动,它旨在评估和审查系统的整体架构,以确保系统的设计和架构满足质量、性能、可维护性和安全性等方面的要求意义:架构检查有助于早期发现系统设计中的问题和潜在风险。通过审查设计文档、模拟和测试,可以在实际开发之前识别和解决潜在的设计缺陷,减少后期的修复成本和风险。在开发过程中及时发现系统中存在的问题,及时进行修复,从而保证软件系统的稳定性和可靠性。架构检查有助于确保系统的整体质量。
2023-09-09 11:53:17 455
原创 07架构管理之架构评审方法
架构评审是在软件开发过程中,对系统设计和架构进行系统性、全面性审查的过程。它旨在确保系统的整体设计满足业务需求、技术要求,并符合最佳实践。架构评审不仅仅关注技术方面,还包括系统的性能、安全性、可扩展性等方面的考虑。架构评审是确保软件项目成功的关键步骤之一。通过采用不同的评审方法,团队可以发现问题、降低风险,并在早期阶段做出调整,从而构建出高质量、可维护的软件系统。在实践中,根据项目的需求和特点选择适合的评审方法,并将其纳入项目开发流程中,将会为项目的成功奠定坚实的基础。
2023-09-06 07:44:20 1626
原创 06架构管理之技术栈选型
在一个公司或者一个团队中,每个人熟悉的技术栈可能千差万别,A项目可能会用vue+springboot开发,B项目可能用react+SSH开发,不能说谁比谁好,但是同一个公司或团队,使用不同的技术栈,对于团队的协作、维护成本的节约都没有好处。在架构管理工作中,技术栈选型时一项非常重要的工作,它直接影响到公司整体的技术人员结构,对于一个公司,做好公司的技术栈选型,意味着公司技术栈的统一,公司的架构选型统一。如何做好技术栈选型,要考虑的因素比较多,如当前技术人员的技术技能,当前项目的需求、公司投入等等。
2023-09-04 10:09:47 530
原创 看看我是如何调戏ChatGPT的
正确的回答是,你提到的句子"无边落木萧萧下,不尽长江滚滚来"出自唐代诗人杜牧的《秋夕》。正确的回答是,你提到的句子"无边落木萧萧下,不尽长江滚滚来"出自唐代诗人王勃的《滕王阁序》。正确的回答是,你提到的句子"无边落木萧萧下,不尽长江滚滚来"出自唐代诗人王勃的《滕王阁序》。如果我之前的回答有误,那是由于我的错误理解或者混淆,而不是出于任何考验的目的。我已经重新检查,你提到的句子"无边落木萧萧下,不尽长江滚滚来"实际上出自唐代诗人王勃的《滕王阁序》。
2023-09-01 16:43:25 150 1
原创 百度的AI画图和讯飞的AI画图目前就这样了
今天接到百度的短信,说给我一个搜索AI的测试权限,心血来潮,让AI给我做个画,百度和讯飞来做个PK,结果都不敢恭维哈,双方都有待提高,加油!
2023-08-31 17:03:22 406
原创 企业架构师,和技术架构师、java架构师有什么区别
这些职位都涉及到系统架构和设计,但侧重点和范围不同。企业架构师从战略层面考虑整体业务和技术,技术架构师关注系统的技术选型和设计,而Java架构师则专注于基于Java技术的应用架构。不同的项目和组织可能会根据需要设定不同的职位名称和职责,因此确切的角色可能会有所不同。
2023-08-31 15:13:12 172
原创 推荐两款开源的绘制流程图软件
目前流程图绘制软件非常多,包括本机安装的、web端的都有,如Visio、Graphviz、processOn等等。但是几乎都是收费的。本文给大家介绍两款优秀的开源免费的流程图绘制软件。
2023-08-30 16:03:28 2750
原创 09微服务架构常见框架
springcloud现在有很多版本,如:springcloud Azure,springcloud Alibaba,Spring Cloud AWS等等。但是他们的整体架构基本类似,基础单元都是构建于springboot之上。是微服务系统的一站式解决方案,微服务框架中常见的组件如:服务发现注册、配置、消息、负载均衡、熔断、限流、监控等在各个框架中都有。国内用的比较多的是springcloud 原生和springcloud Alibaba。我们这边以springcloud Alibaba为例做相应的介绍。
2023-08-28 14:35:00 3501
原创 05架构管理之持续集成-DevOps的理解与实现
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。(Dev) and结合以上概念了解到,DevOps是一种促进开发、测试和运维团队紧密合作的问号和实践。旨在消除传统开发、测试和运维之间的壁垒,加强协作,实现软件交付流程的自动化和优化,以快速、稳定地交付高质量的软件。
2023-08-25 09:30:04 639
原创 04架构管理之分支管理实践-一种git分支管理最佳实践
对于架构管理、研发管理中,分支管理是公司研发过程中必不可少的一个实践。本文主要是根据个人及公司实践,来说明下具体的分支管理方法,这里的分支指的git仓库的代码分支。分支管理方法有很多,大家可以自行定义,只要能够完成研发协作即可。
2023-08-23 14:17:38 1308
原创 get Error: aborted,net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 问题解决
连接后台找到gateway的日志,tailf下看看,结果日志不动,停留在中文12点45分。再看system服务的日志,也一样停留在12点45分。由于该系统业务重要性一般,根据公司实际情况,就只部署了一个服务,都在一台机器上。页面上用开发者工具查看请求和报错信息,发现一个请求所有字典数据的接口没有反馈数据,导致页面渲染的时候读不到数据报错。查接口反馈没有数据,Could not get response,但是接口状态码是200,先说结论:由于磁盘空间满导致部分数据接口无法正常反馈结果。其他接口又是正常的。
2023-08-21 17:51:47 594
原创 面试题-幂等消息处理如何实现的
它通常用于描述某种操作或函数多次应用于自身时产生相同结果的性质。简单来说,一个操作或函数被称为幂等的,如果对它进行任意次重复操作,结果都不会改变。给定一个集合S和一个函数f,如果对于S中的任意元素x,都有f(f(x)) = f(x),则称f是S上的幂等函数。这个定义非常简单,但是它却有着深刻的内涵。幂等消息处理是指对于一个给定的消息,无论这个消息被发送多少次,处理时产生相同的结果,不会导致重复操作或数据不一致,系统的状态都能保持一致,不会产生副作用。
2023-08-21 09:15:23 229
原创 08微服务的网关设计
微服务网关(Microservices Gateway)是微服务架构中的一个关键组件,作为系统与外部世界的接口,负责管理和处理微服务之间的通信、路由、负载均衡、认证、安全等功能。它充当了微服务架构的入口,为客户端提供了一个统一的API,隐藏了内部微服务的复杂性,提供了一致的访问方式。
2023-08-18 19:19:05 766
原创 07微服务的事务管理机制
在单体应用程序中,事务通常是在单个数据库或单个操作系统中管理的,而在微服务架构中,事务需要跨越多个服务和数据库,这就使得事务管理变得更加复杂和困难。
2023-08-16 09:36:12 1139
原创 03架构管理之测试管理
软件测试是提升软件质量的有效手段,那么如何做好软件测试呢?这就用到软件测试管理的相关知识了。测试管理是对软件测试过程的管理,给测试过程制定相应的制度规范,让测试工作有序高效的执行,是软件测试管理的职责。
2023-08-15 09:55:50 1110
原创 02架构管理之研发管理
研发管理(Research and Development Management,R&D Management)是一种系统性的管理活动,是以产品开发流程为基础的项目管理体系,旨在规划、组织、协调和监督研发项目,对研发项目的人员、计划、质量、成本等进行综合管理,从而打造高效能的研发团队,更好更快地实现项目目标。研发管理的本质是从流程化,标准化,制度化等维度建立管理机制。最终的核心目标是通过管理的法治建立标准化的操作规范,再通过标准化的规范提升人员的协作效率、监督机制、系统稳定性/安全性等。
2023-08-13 21:09:00 222
原创 01架构管理职责及工作内容
架构师大家可能听的比较多,也比较了解这个职位,可是对于架构管理来说,大家可能就比较陌生了, 在《05如何做微服务架构设计》这篇文章里,我们已经解释了什么是软件架构,那么对于架构师来说,顾名思义就是做软件架构的人,是负责设计和规划软件系统整体结构和组织方式的专业人员,软件架构师需要有深厚的技术知识和经验,同时具备良好的沟通和领导能力。对于架构管理来说,主要是对软件的架构设计、规划、开发、测试、上线等整个软件开发过程的管理。
2023-08-11 08:30:00 605 1
原创 06微服务间的通信方式
百度百科的解释:通信是指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递,从广义上指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法、任意媒质,将信息从某方准确安全地传送到另方。维基百科的解释:通信是发送者通过某种媒体以某种格式来传递信息到收信者以达致某个目的。广义上,任何信息的交通都是通信,狭义上的通信专指以电为载体进行的信息交流,所以很多时候,“通信”与“电信”的含义相近,不特别加以区分。通信技术拉近了人与人之间的距离,提高了通信的效率,深刻的改变了人类的沟通方式。
2023-08-10 07:52:10 2262
原创 05如何做微服务架构设计
对于一个程序员来说,他的终极目标,绝大部分可能就是架构师,公司里总会有那么几个神秘人物以架构师的title存在,要想成为架构师,首先得了解神秘是架构,那么到底什么是架构呢?维基百科、百度等都有很多回答,但是我同意《微服务架构模式》这本书的作者克里斯·理查森(Chris Richardson)的观点:计算机系统的软件架构是构建这个系统所需的一组结构,包括软件元素、它们之间的关系以及两者的属性。也就是说软件架构师要做的就是将系统拆分成不同的软件元素、设计出它们直接的关系、以及各个元素的属性。
2023-08-08 08:07:34 237
原创 04什么场景要用到微服务
只有当业务规模发展到一定程度,业务复杂度对于单体应用很难应付的时候,拆分出来的模块能够相对独立解耦且可以独立迭代交付时。我们可以考虑采用微服务架构设计,总之,选择微服务架构时,需结合实际需求和团队技术水平,权衡利弊,合理规划和设计微服务架构。
2023-08-06 11:56:33 2461
原创 面试题-springcloud中的负载均衡是如何实现的?
负载均衡,从字面含义可以理解将负载均衡的分配到各个工作进程中,在计算机领域,负载均衡是非常重要而常见的技术,旨在提高系统的性能、可用性和可靠性。当一个系统服务,需要多台服务器同时提供服务时,负载均衡可以根据一定的算法和策略将请求分发给这些服务器,使得每台服务器的负载尽量保持平衡,避免某台服务器过载而导致性能下降或故障。负载均衡根据逻辑处理的所属不同,分为客户端负载均衡和服务端负载均衡。
2023-08-05 18:42:50 1250
原创 03微服务到底是什么
微服务(Microservice)是一种以服务为中心的软件架构模式,按照我们之前文章的讨论,他是为了解决单体应用复杂度问题的一个手段,将复杂的单体应用,通过不同的方法拆分成合理的一系列微小的服务,每个服务负责一个特定的业务功能,可以独立开发、部署和扩展,独自为一个进程,可以是不同的语言开发,服务间采用轻量级的通讯协议如http、消息队列等进行交互,多个服务组合形成一个微服务体系,服务间松耦合并高度自治。
2023-08-04 21:02:49 1068
原创 02单体应用真的是地狱吗
单体应用(Monolithic Application)是指将整个应用程序作为一个单一的代码库和部署单元的软件架构模式。在单体应用中,所有的功能模块、组件和服务都集中在一个应用中,它们共享同一个数据库和资源。
2023-08-04 14:46:15 484 1
原创 01微服务架构的前世今生
顾名思义,单体应用就是只有一个应用,覆盖了所有业务模块,包含前端、后台、数据库等。独立部署在web容器中,对外提供服务。随着访问量不断增大,单体应用越来越力不从心,大家想到的就是通过集群来提高应用的并发能力,集群确实能解决一部分问题,然而随着并发越来越高,数据库逐渐成为了瓶颈,扩大数据库连接数、提升数据库机器性能再到数据库做ha,再到数据库分库分表。
2023-08-03 18:15:06 271
原创 工作中使用基本类型的数据好还是包装类好
在Javabean中,如果使用基础类型,如表示温度的时候我们用int类型,当我们不给这个自动赋值的时候,我们如果获取这个字段值则会出现0的值,但是这并不是我们想要的正确值。而如果我们使用包装类型的话,当我们获取的时候,返回的是null,则说明我们没有赋值。包装类型和基本类型在使用中最大的区别就是基础类型有默认值,包装类型没有默认值。javabean中,推荐使用包装类型。局部变量中,推荐使用基本数据类型。...
2022-08-18 17:24:43 918 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人