一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Java

牢记这16个SpringBoot 扩展接口,写出更加漂亮的代码

Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。

龙生   25 Oct 2023
View Details

工作六年,我学会了用 Arthas 来辅助我的日常工作

客户线上问题,应该如何复现,让客户再点一下吗?
异常被吃掉,手足无措,看是哪个家伙写的,竟然是自己!
排查别人线上的 bug,不仅代码还没看懂,还没一行日志,捏了一把汗!
预发 debug,稍微时间长点,群里就怨声载道!
加日志重新部署,半个小时就没了,问题还没有找到,头顶的灯却早已照亮了整层楼……
线上机器不能 debug,也不能开 debug 端口,重新部署会不会破坏现场呢?
怀疑入参有问题,怀疑合并代码有问题,怀疑没有部署成功,全是问号……
一个问题排查一天,被 Diss 排查问题慢……

龙生   25 Oct 2023
View Details

2023 年微服务后端开发的 11 个最佳工具

微服务架构以将复杂的应用程序分解为易管理的服务而闻名,然而,管理微服务是一项具有挑战性的任务。为了确保开发工作流程的高效性,需要采用特定的工具。

在本文中,小编将为您介绍2023年最热的11款后端微服务开发工具,并全面介绍它们的基本功能和常见用例。不论您是经验丰富的微服务开发人员,还是初涉微服务领域的新手,本文都将为您提供宝贵的见解和剖析。

龙生   25 Oct 2023
View Details

Idea非常好用的插件总结和常用操作总结

Idea插件总结 自动生成文档注释 集成插件:Easy Javadoc 一个自动帮你完成JavaDoc注释的IDEA插件! 下载地址: 传送 使用说明: Windows: 鼠标放在方法上面,然后在按 Ctrl + **MAC:**鼠标放在方法上面,然后在按 command + \ 可以对文档注释中的作者名、日期格式等进行相关设置,还可以设置翻译渠道(如百度翻译、有道翻译等) 注释快捷展示 集成插件:Show Comment 在对项目不太熟悉的情况下,对于快速了解项目,梳理业务逻辑,此插件还是比较实用的,提升工程熟悉进度! 下载地址: 传送 配置: 彩色括号 集成插件:Rainbow Brackets Lite 彩虹括号,代码中存在多个括号,分不清范围,使用此插件可以一眼能看出来! 下载地址: 传送 区域代码高亮功能: Mac快捷键: cmd + 鼠标右键; **Windows快捷键:**Ctrl + 鼠标右键 彩色控制台 集成插件:Grep Console 可以通过expression表达式过滤日志、给不同级别的日志或者给不同pattern的日志加 下载地址: 传送 代码收藏夹 集成插件:iCode 它是一个代码片段收藏夹工具,页面十分简洁优雅,抛弃了传统的文件夹收藏的方式,通过标签做分类,支持标签和内容搜索。 时序图生成 集成插件:Sequence Diagram 软件背景图片由于需要绝对地址,每个人的电脑路径不一,所以请自行配置,菜单View找到最下面的set background img,选中背景图即可! 可以为输出的日志修改颜色,具体配置请在设置中Other Settings中找到GrepConsole即可! 下载地址: 传送 点击小扳手的图标,主要配置如下: call depth,用于配置调用深度,默认是5层; display only project classes ,勾选中表示仅展示本工程内的源码调用关系,不包含依赖包里的; skip getters/setters,勾选中表示时序图中会跳过get方法和set方法的调用关系; skip private methods,勾选中表示时序图中会跳过私有方法之间的调用关系; skip constructors,勾选中表示时序图中会跳过构造方法的调用关系; 阿里云智能编码插件 插件说明:智能编码,代码补全,代码搜索,代码示例搜索,代码文档搜索,代码生成 官网: 传送 Cloud Toolkit 插件说明:帮助开发者更高效地部署、测试、开发和诊断应用 官网: 传送 sh脚本(第一版): bash 复制代码

sh脚本(第二版): 第二版主要针对SpringBoot瘦身版使用 […]

龙生   25 Oct 2023
View Details

五个很实用的IDEA使用技巧

日常开发中,相信广大 Java 开发者都使用过 IntelliJ IDEA 作为开发工具,IntelliJ IDEA 是一款优秀的 Java 集成开发环境,它提供了许多强大的功能和快捷键,可以帮助开发者提高编码效率和质量。除了一些常见的技巧,如自动导包、智能补全、重构工具等。IntelliJ IDEA 还有一些不为人知的技巧,可能很多开发者都没有注意到或者使用过。本文就在为你介绍博主常用的五个 IntelliJ IDEA 使用技巧,希望能够给你带来一些工作效率上的提升。本文内容大纲如下:

注释对齐
快速创建包目录/文件夹
快付复制类代码生成 Java 类
多实例启动
分支比较

龙生   24 Oct 2023
View Details

你应该知道的 7 个很棒的 Java 项目

Java生态系统拥有庞大而多样化的开源项目,旨在满足几乎所有想象得到的需求。很容易错过其中一些伟大的项目。以下是七个开源Java项目,涵盖从全栈应用程序开发到微服务、Wasm和JVM替代方案的所有内容。 ▌Vaadin’s Hilla Hilla是一个全栈框架,具有基于Java的后端和JavaScript前端。它支持响应式前端框架React和Lit。Hilla让您使用一个简单的命令来构建一个新的全栈项目:npx @vaadin/cli init --hilla foundry-hilla。这是一个NPM命令,但它将部署一个标准的Maven布局,带有一个使用Vite构建的前端目录,一切都准备好与./mvnw脚本一起运行。 Hilla在两个应用程序部分之间强制执行类型,这意味着您的IDE可以检测并传播Java API和消耗它的TypeScript前端之间的更改。在这个框架中,自动完成和重构都可以正常工作。这个功能在全TypeScript世界中的感觉类似于tRPC。 Hilla还通过JPA(在Hibernate上)集成了一些SQL数据库,如MySQL和PostgreSQL。 它有点像jHipster,但更有见解。这意味着Hilla在可以将技术粘合在一起方面不太灵活,但它为您提供了更平滑的道路。Hilla得到了良好的维护和文档支持。如果您需要使用Java构建全栈应用程序,并且如果您喜欢React或Lit作为前端,那么Hilla是一个值得考虑的优秀框架。 ▌jHipster 继续全栈框架的主题,我们有jHipster。jHipster采用非常灵活的方法,可以将多种不同的技术统一到一个使用Java作为API中间件的协同堆栈中。您可以选择几个响应式前端和各种SQL和NoSQL数据存储。 与Hilla类似,jHipster首先通过NPM包jhipster-generator工具生成应用程序。生成器将引导您完成一个问卷调查,让您对其功能有一个很好的了解。 jHipster首先让您选择单片应用程序、微服务架构或网关,让您对该框架的范围有一些了解。如果您选择单片,您就可以使用Spring WebFlux将其变成响应式样式的应用程序。接下来,您可以选择不同的身份验证样式,如JWT或Oauth 2。然后,您可以从几个数据存储中选择,如SQL、MongoDB和Cassandra,然后是第二级应用程序缓存,如Ehcache、Memcached或Redis。 jHipster生成器接下来允许添加一些其他技术:Elasticsearch用于搜索引擎,使用Spring WebSocket的WebSockets,作为异步消息代理的Apache Kafka,以及使用OpenAPI-generator的API-first开发。接下来,您可以从几个前端框架中选择,并在需要时生成管理UI,以及几个主题。 jHipster还具有国际化和测试功能,并支持Maven和Gradle。 这是相当强大的。还可以生成域模型、数据结构和与之配套的UI。jHipster是构建许多类型的Java应用程序的绝佳选择。 ▌GraalVM GraalVM项目始于2018年3月,旨在提供更广泛的虚拟机实现。GraalVM可以做到JVM所能做的一切,甚至更多:它允许消耗各种语言,并输出到各种目标执行环境。它还包括几种编译器样式,包括可以增强性能的JIT(即时)编译器。 GraalVM可以运行任何编译为LLVM的语言,包括C、C++、Rust、Swift等。它还处理字节码语言,如Java、Scala、Kotlin和Groovy。它还支持JavaScript、Python、Ruby和R语言。(未来,我们可以希望看到GraalVM支持Zig。) 这意味着我们可以获得JVM的所有一次编写,随处运行的好处,适用于各种语言。例如,GraalVM可以接受使用GCC编译为LLVM字节码的C程序,并使用lli命令运行它。或者,GraalVM可以使用clang将C代码直接编译为可执行文件。GraalVM为许多(但不是所有)语言和平台输出独立的执行版本。 它还包括对许多目标二进制文件的支持,如Wasm、Linux变体、macOS、Windows、iOS和Android。对于许多目标,GraalVM支持无需安装GraalVM即可运行的本机映像。它还允许开发人员选择执行模式,如JIT编译、AOT编译和解释,以微调性能配置文件。 GraalVM得到了良好的维护和文档支持,并拥有一个活跃的社区。总的来说,它是一个引人注目的项目,正在逐渐成为一种通用语言工具。请访问GraalVM项目主页以了解更多信息。 ▌Micronaut Micronaut是Java开发的一种新方法,旨在面向现代云和无服务器环境。它具有丰富的功能,如用于脚手架、构建、执行和测试具有一系列集成技术的项目的命令行工具。也许最重要的是,Micronaut是围绕一个启用AOT的控制反转(IOC)框架设计的,可以在面对大型代码库时保持启动时间。 此外,它还支持面向微服务的功能,如服务发现、跟踪和容器化部署,因此Micronaut是现代Java开发的一个经过深思熟虑和引人注目的选择。 Micronaut提供了一个基于Web的项目设计工具,您可以使用它来了解可以插入Micronaut核心的工具范围。这个工具在精神上类似于Spring Initializr或jHipster的在线生成器,但它采用了自己的方式。Micronaut在其核心是反应式的,支持像RxJava和Reactor这样的反应式实现,其他所有内容都建立在这个中心支柱之上。Micronaut包括自己的反应式HTTP客户端。 Micronaut中的每个节点都是一个反应式组件,可以组合成更大的微服务架构,使用像ZooKeeper或Eureka这样的中央服务代理。 Micronaut使得采用最佳实践变得容易,它是一个类似于Spring的一站式框架,但更加专注于具体的实现细节。对于在基于Java的云和无服务器环境中工作的开发人员来说,这是一个令人心动的选择。 ▌MicroStream 在基于Java的面向对象持久性的演变中,MicroStream可能代表了最终的概念精炼。它以原样接受您的运行时对象图,并允许将其以面向对象编程语义持久化到任意数量的底层数据存储中。 MicroStream允许您保持在对象和属性的思维领域中,而框架则完成了大部分保存和恢复工作。作为开发人员,您仍然需要考虑元关注点,如获取策略和持久性边界,但这些定义简单,大部分不会干扰应用程序代码,应用程序代码的工作方式与不考虑持久性时一样。 MicroStream包括根的概念,它定义了持久化树的根。一个应用程序可以有多个根,如表1所示。 列表1. MicroStream保存和恢复数据 ini 复制代码

MicroStream是Java中有趣的新的面向对象持久性方法,对于任何新项目来说都值得一看。 ▌TeaVM 将Java编译为Wasm(WebAssembly)仍然是一项前沿技术,但是TeaVM使得这一点成为可能。TeaVM支持将Java字节码转换为JavaScript(类似于Google Web Toolkit)和Wasm。这些可以用于创建使用浏览器内部的Java代码和库的Web应用程序。 TeaVM的工作原理是首先将代码编译为低级中间表示形式,然后进一步优化并将其转换为WebAssembly指令。生成的代码非常高效,可以在支持WebAssembly的任何现代浏览器中运行。 TeaVM的主要优点之一是它对流行的Java框架(如Spring和Hibernate)的支持。开发人员可以使用这些框架构建复杂的全栈Web应用程序,然后将代码编译为Wasm以进行Web部署。 尽管TeaVM仍然是一个新兴的项目——创建者在日常工作中使用它,然后将修复和改进推送到开源存储库——但它似乎是目前从Java到Wasm的最佳路径。 总的来说,TeaVM是一个强大而灵活的工具,用于在Java中开发Web应用程序,并为在浏览器和其他Wasm环境中使用Java提供了一个有趣的途径。 ▌Apache Flink Flink于2011年开始,已经成长为领先的事件处理框架。许多知名公司如Airbnb和Netflix都在实时处理中使用它,并在相对容易管理的包中提供了很多强大的功能。 Apache Flink将容错和状态管理融入到分布式、容器友好的形式中。它可以自动缩放以处理动态负载。 虽然在Kubernetes中使用Docker运行Flink是典型的,但Flink也可以使用像Apache Beam这样的框架在AWS Lambda、Azure Functions和Google Cloud Functions等无服务器基础设施上运行。这提供了只支付处理期间使用的计算资源的好处,并允许更轻松、更高效的扩展。 Flink在内部具有很多功能,但简单的东西相当容易理解。例如,在表2中,Flink监视端口9999上的套接字,并计算接收到的文本中的单词,将数据输出到控制台。 列表2. 使用Flink进行简单文本处理

您可以看到Flink使用函数式风格,平台本身以可扩展、容错的方式将功能扩展到云基础设施中。总的来说,这是一个处理实时事件处理的令人印象深刻的项目。 作者:Matthew Tyson 更多技术干货请关注公号“云原生数据库” squids.cn,基于公有云基础资源,提供云上 RDS,云备份,云迁移,SQL 窗口门户企业功能, 帮助企业快速构建云上数据库融合生态。   作者:Squids数据库云服务提供商 链接:https://juejin.cn/post/7236021829000871995 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

龙生   24 Oct 2023
View Details

idea的这款代码提示插件爱了

前言 Idea 是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展,可以根据开发人员的需要进行定制和扩展,从而提高开发效率,今天我们就来介绍一款国产的代码编辑增强工具-Alibaba Cloud AI Coding Assistant。 什么是Alibaba Cloud AI Coding Assistant? Alibaba Cloud AI Coding Assistant 是一款在IntelliJ IDEA编辑器中的插件,这款插件是Alibaba的团队开发的,其官方介绍是:是一款AI编程手提供代码智能补全和代码示例搜索能力,帮你更快更高效地写出高质量代码。 为什么要使用它? 使用 Alibaba Cloud AI Coding Assistant 其主要有以下几个功能: 代码智能补全 通过学习海量优质的开源代码,代码智能补全让你编码如行云流水般自然高效,事半功倍地完成编码工作。 正如官网介绍的一样,它不仅可以联想到对应的类,更能给出更多的代码提示,比如这里。 海量代码示例搜索 提供代码示例搜索功能,当你需要实现不熟悉的功能时,无需跳出到浏览器中,在IDE内仅需通过简单的语言描述,即可参考海量高质量的开源代码示例,为你打造沉浸式编码体验。 我们可以点击右边的的插件图标按钮,在搜索框里面点击搜索。在code snippest选项卡中即可给你搜索到开源的相关代码示例或者相关的问题解答。 优质技术文档搜索 集成多种高质量中英文技术文档数据源,当遇到错误日志或技术难点时,在IDE内便可以轻松查阅技术文档,官方辅助伴你同行。 同样,点击右侧的 document 就能看到各个网站对这个问题的相关回答。可以说是非常方便了,不需要在浏览器和idea之间互相切换了。 其他特性 通过深度学习模型和语法分析相结合,提供更精准的代码推荐能力,让你的开发过程专注又轻松。 仅需轻量的系统资源消耗,即可享受强大的AI引擎带来的智能编码体验。 用户的隐私高于一切,代码智能补全基于离线模式,不会分享或向其它设备上传你的代码及个人信息。 如何安装…插件 windows用户打开IntelliJ IDEA编辑器,在菜单栏中选择“File” -> “Settings”;mac用户点击 “IntelliJ IDEA” -> “Settings” 。 在“Settings”窗口中,选择“Plugins”选项卡,然后点击“Marketplace”按钮。 在搜索框中输入“alibaba”,然后点击“Search”按钮,第三个既是我们需要的那个。 找到 Alibaba Cloud AI Coding Assistant ****插件后,点击“Install”按钮进行安装。 心得体会 目前关于GPT的代码提示插件,几乎都需要帐号登陆或者无法访问。可以说这款插件就显的很香了,无需注册即可使用。完全本地化,没有代码泄漏的风险。而且以后不排除这款插件会集成自己的AI大模型-「通义千问 」。 还在等什么,赶紧下载使用起来吧。 最后 本文主要介绍了Alibaba Cloud AI Coding Assistant 插件,希望对大家有所帮助,以上内容就到这里,感谢各位看官老爷们的观看,如果觉得写得好,给个赞支持一下哈!!! 作者:Aqoo 链接:https://juejin.cn/post/7226301946839023675 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

龙生   24 Oct 2023
View Details

logback配置文件

logback-spring.xml

 

龙生   24 Sep 2023
View Details

Logback使用conversionRule自定义字符的坑

Logback使用conversionRule自定义字符的坑 背景 想在logback输出的文件目录中加入ip,使用 <conversionRule conversionWord="ip" converterClass="com.test.config.LogIpConfig" />结果一直报错: There is no conversion class registered for conversion word [ip] [ip] is not a valid conversion word 原因 当需要在日志记录中添加自定义文本时,仅支持在<pattern>中添加ip或其他自定义的字段,不支持在目录或文件名<fileNamePattern>中使用。 可能是格式或类书写错误。如class路径错误,logger的name指向不存在的包名。 当使用失败时,建议使用删除大法,将各种配置都删除,只留下一个纯净的结构,如 http://logback.qos.ch/manual/layouts.html

 

  其他方法 如果想在文件目录或文件名中添加自定义字段,可以引入springboot中的参数<springProperty scope="context" name="LOG_HOME" source="logPath"/>,此处不展开。 如果需要使用springboot配置中不存在的参数,可以在logback-spring.xml中加入<define> 如

 

  即可在目录或文件名中添加自己想要的参数。   from:https://blog.csdn.net/NNNathan/article/details/114667320

龙生   07 Sep 2023
View Details
1 10 11 12 62