
Java
文章平均质量分 85
Li_Xiang_996
这个作者很懒,什么都没留下…
展开
-
Vert.x,应用监控 - 全链路跟踪,基于Zipkin
Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),能够收集服务间调用的时序数据,提供调用链路的追踪。Zipkin每一个调用链路通过一个trace id来串联起来,通过trace id,就能够直接定位到这次调用链路,并且可以根据服务名、标签、响应时间等进行查询,找出哪些耗时比较长的链路节点。当用户发起一次调用时,Zipkin的客户端(Brave)会在入口处为整条调用链路生成一个全局唯一的trace id, 一个trace id代表一个完整的调用链。原创 2024-11-08 18:51:24 · 811 阅读 · 0 评论 -
Vert.x,应用监控 - 基于Micrometer / Prometheus
Micrometer为市场上主流的监控(子)系统提供了一个简单的"门面",目前Micrometer支持的监控系统包括:Atlas, Datadog, Graphite, Ganglia, Influx, JMX, and Prometheus. Micrometer实现了运行指标监控的一个门面设计模式(Facade Pattern),你可以用SLF4J来理解Micrometer,只不过slf4j用于管理程序日志,而micrometer用于管理程序运行指标。原创 2024-11-07 17:10:34 · 656 阅读 · 0 评论 -
Vert.x,认证与授权 - 基于JWT的身份认证
JSON Web Token(JWT)是一种用于安全传输(JSON格式)信息的开放标准(RFC7519),JWT常用于身份验证和信息交换,JWT通过数字签名确保信息的安全性和完整性。JWT可以使用对称密钥(HMAC算法),也可以使用非对称加密的密钥对(RSA或ECDSA)对要传递的信息进行签名和验证。推荐使用非对称加密算法进行签名,这种方式更安全(有利于保护密钥),非对称方式只有在生成JWT时候需要私钥加签,验证JWT时候只需要公钥。原创 2024-11-01 11:35:39 · 898 阅读 · 0 评论 -
Vert.x,认证与授权 - 基于Session的身份认证
认证逻辑非常简单:取出用户提交的用户名和密码,与服务器保存的用户名密码进行比对,如果一致就通过身份认证,并生成用户服务器权限(User)对象,绑定到RoutingContext,返回登录成功信息给浏览器;基于会话的身份认证,因为登录信息存放在服务器会话,所以不能跨服务器/域(目前已有多种成熟的解决共享session方案,如通过Redis),当服务器重启后,所有用户需要重新登录。访问管理源页面(/hr/admin.html),如果未登录,则跳转登录页面,如果当前是user登录,会提示没有权限。原创 2024-10-22 09:37:01 · 427 阅读 · 0 评论 -
Vert.x,Web - Router
Vert.x-Web是用于构建Web应用程序的一系列模块,可以用来构建经典的服务端Web应用, RESTful应用, 实时的(服务端推送)Web应用,或任何您所能想到的Web应用类型。Vert.x Web的设计是强大的,非侵入式的,并且是完全可插拔的,可以只使用您需要的部分。Vert.x Web不是一个Web容器。要使用Vert.x Web,需要添加"vertx-web"依赖:</</</</原创 2024-10-10 11:07:33 · 867 阅读 · 0 评论 -
Vert.x, 简介
Vert.x是Eclipse基金会下的一个开源项目,基于Eclipse Public License(EPL)2.0和Apache License 2.0双重许可,是一个基于JVM的用于构建响应式(reactive)应用程序的工具包。Vert.x基于Netty,但不仅仅局限于开发可扩展的高性能网络服务器和客户端。原创 2024-09-18 18:54:41 · 1017 阅读 · 0 评论 -
为“自研”的KV数据库编写JDBC驱动
所以我们需要在META-INF/services/目录里创建一个以服务接口命名的文件, 文件名为"java.sql.Driver"的文件, 该文件内容为接口实现类: ‘org.littlestar.propsjdbc.Driver’。一觉醒来,受到梦的启发,自研了一套K/V数据库系统,因为"客户"一直催促我提供数据库的JDBC驱动,无奈之下,只好花费一个上午的时间为用户编写一个。经过"客户"专家组评审,这套数据库系统测试符合预期,达到了业界领先水平,喜提6000w马内,实现人生财富自由。原创 2024-04-02 15:39:08 · 360 阅读 · 0 评论 -
Java Thread Dump分析 - 记一次(连接池的)连接不释放问题。
Java Thread Dump分析个人心得体会。原创 2022-06-01 19:06:40 · 2553 阅读 · 1 评论 -
Spring基础入门10 - 微服务与Restfull API
微服务架构是一种软件架构模式/风格, 并不是某个具体的框架和技术。微服务架构提倡将大的系统构建成一系列按业务功能划分的, 可独立运行的, 自治微服务(子系统)。各个服务彼此之间职责明确, 分工协作。在传统的单体式架构中, 所有的模块代码存放在一个应用中, 所有的数据存则放在一个数据库中。在这种模式下,随着需求的不断增加, 业务功能增加到一定程度,单体应用变得越来越庞大和臃肿,可维护性逐渐降低,灵活性降低,代码发布频率越来越慢,新功能交付效率也变得越来越低下。微服务架构可以帮助我们克服旧架构所面临的挑战,原创 2022-03-25 16:39:41 · 2242 阅读 · 0 评论 -
Spring基础入门9 - 使用Spring Boot编写Web应用
关于WebApplicationTypeSpring的主要开发场景是Web应用,我们将上例改成一个Web应用, 我们首先通过Sping Tools插件添加一个"Spring Web"依赖。添加完成后,插件在pom.xml文件添加了"spring-boot-starter-web"依赖,并在resources目录下创建了"static"和"templates"子目录。这时我们的代码不做任何修改,再运行一次我们的程序,程序不再像之前一样自动退出,通过程序输出, 程序启动了一个嵌入的Tomcat Web服务原创 2022-03-17 16:08:17 · 759 阅读 · 0 评论 -
Spring基础入门8 - Spring Boot
Spring Boot入门1原创 2022-03-17 09:48:29 · 501 阅读 · 0 评论 -
Spring基础入门7 - JPA/Hibernate
1. 数据访问层 (DAO模式)通常我们的应用都要使用数据,涉及到大量的数据存取, 对于企业级应用,数据存放在关系型数据库是最常用的方案。前文提到Spring MVC将前端展现与业务逻辑分离,为了让程序结构更清晰,我们还会将数据访问从业务逻辑中也分离出来,做为一个数据访问层(持久化数据层)。这样我们就获得了一个J2EE经典的三层架构: 表现层 - 业务逻辑层 - 数据访问层。数据访问层通常使用的DAO模式进行封装,DAO模式主要包括三部分:DAO接口: 对需要的数据库操作的接口,提供外部(业务逻原创 2022-02-08 16:38:28 · 1089 阅读 · 0 评论 -
Spring基础入门6 - Spring JDBC
JDBC(Java DataBase Connectivity)是一套Java访问关系型数据库的标准, JDBC只定义接口,具体实现由各个厂商(框架)负责。 Spring使用的是javax.sql.DataSource接口获取数据库连接, DataSource代表一个数据源(获取数据库工厂),相较于直接通过java.sql.Driver获取数据库连接(通常是通过DriverManager根据SPI规范查找Drive实现, 并调用匹配的Driver创建连接),DataSource最大的优势就是可以实现连接池。原创 2022-01-28 18:59:33 · 1292 阅读 · 0 评论 -
Spring基础入门5 - Spring MVC
1. Spring MVC简介1.1. MVC设计模式MVC(Model View Controller),是一种设计模式。所有设计模式归的目的根结底都是解耦,MVC模式也不例外, 那么MVC模式要解的是什么耦合呢? MVC的设计意图是要将前展示与业务逻辑分离出来。在Spring MVC,将Web应用程序抽象成职责不同3种角色:Model, View和Controller。Controller层不会负责具体的页面渲染(不包含页面如何展示的代码), 而是接收用户的URL请求(POST/GET),执行业务原创 2022-01-27 17:29:44 · 504 阅读 · 0 评论 -
Spring基础入门4 - Spring MVC
前面章节学习了Spring框架的IoC和AoP, 接下了学习使用Spring开发J2EE Web应用程序。一个J2EE Web应用程序需要符合J2EE的相关规范, 并部署运行在符合J2EE规范的容器中, 如(Apache Tomcat)。本文将简单的介绍Eclipse Web应用开发环境的构建。开发环境:JDK 8+Eclipse IDE for Enterprise Java and Web DevelopersApache Tomcat 9.X开发工具建议使用Eclipse for J2E原创 2022-01-24 11:49:34 · 336 阅读 · 0 评论 -
Spring基础入门3 - AoP
上文我们一起学习了Spring IoC控制反转,下面我们继续学习一下AoP(Aspect Orient Programming), 面向切面编程。AoP同样是一种设计思想,AoP要达到的效果是,在不修改源代码的前提下,为系统中的业务组件添加某种功能增强。AoP实现分为:静态AoP和动态AoP。静态AoP在编译阶段对程序源代码进行修改, 生成了静态的静态AoP代理类, 来实现增强功能的织入;动态AOP在运行阶段对动态生成代理对象(使用JDK动态代理或CGlib动态地生成AoP代理类), 来实现增强功能原创 2022-01-21 10:10:29 · 336 阅读 · 0 评论 -
Spring基础入门2 - IoC容器
在上文介绍了Spring IoC容器的基本用法,下面做一个稍微复杂点的例子,学习以下Spring的IoC和AoP的“实际”使用。我们假设有一个在线商城OnlineStore, 在线商城需要提供一些银行相关服务。(假设)因为银行服务的实现是容易变化的,后续可能会变更不同的服务提供商(实现),所以在设计上我们需要将银行服务抽象为接口BankingService,这样OnlineStore依赖的是稳定的接口,而不是具体变化的实现, 实现了解耦。package org.littlestar.learning.pa原创 2022-01-20 10:52:48 · 254 阅读 · 0 评论 -
Spring基础入门1 - IoC容器
1. Spring简介Spring是一个开源, 一站式的, 轻量级的Java企业应用开发框架。Spring框架是一个企业应用开发框架, 简单来说就是开发服务器端应用的框架;Spring是轻量级的框架, 与传统的EJB类似, Spring框架也是采用容器来管理应用对象(Bean), 但是从大小与开销两方面而言Spring都是轻量的, 完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布;Spring是一站式(full-stack)的框架, Spring非常全面, 无缝整合了各种优秀开源原创 2022-01-20 09:55:35 · 315 阅读 · 0 评论 -
使用Springboot重写了EventCentral。
Springboot重写EventCentral。原创 2022-01-17 11:01:38 · 479 阅读 · 0 评论 -
如何使用工具提高Java代码的质量(基于Eclipse)-3
评判代码质量, 性能是一个重要的考量。大多数的软件都会对响应时间和吞吐量有要求。对应用程序进行性能测试是检验产品性能的重要手段, 而在编码阶段我们也需要对一些关键或者频繁调用的代码进行性能测试, 以验证代码的性能; 当对已有的接口实现添加新的业务逻辑时, 我们也需要通过测试来评估变更带来的性能影响; …我们常规的做法是在代码的开始位置记录下开始时间戳(例如通过System.currentTimeMillis()),再在结束位置记录结束时间戳, 通过计算时间差来获得执行时间。更优雅的做法是通过第三方的Com原创 2021-08-16 16:51:43 · 577 阅读 · 0 评论 -
如何使用工具提高Java代码的质量(基于Eclipse)-2
软件测试是保证软件质量, 提高软件可靠性的关键, 软件企业都非常注重测试, 江湖上一个流传非常广的一个传说是"微软公司的测试人员与开发人员比例一般为1:1, 甚至在Windows 2000开发团队中, 有1800个测试人员, 900个开发人员, 测试人员与开发人员比例为2:1…"软件测试是个很大的话题, 上文提到的PMD进行代码审查(Code Review), 是一种静态测试,测试不需要执行代码; 而对应的另一种动态测试, 测试需要实际运行程序, 动态测试又分白盒, 黑盒。黑盒测试通常也称功能测试原创 2021-08-04 15:42:02 · 315 阅读 · 0 评论