自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 元数据注册表MDR

因此,在实际应用中,元数据注册往往与主数据管理平台结合使用,前者提供上下文和参考信息,后者则执行数据的操作和控制。元数据注册表(Meta-data Registry, MDR)和主数据管理(Master Data Management, MDM)都是用于优化企业数据管理实践的重要工具,它们有各自的焦点和用途,但也有一些共性和差异。使用元数据注册(MDR)管理主数据在某些场景下是一个合理的选择,这是因为元数据管理和主数据管理虽然有不同的侧重点,但两者之间存在着紧密的关系和互补作用。

2024-03-10 16:25:32 907

原创 互操作性元模型框架MFI

OMG发布的ODM规范定义了使用多种语言描述的本体的元模型及其之间的映射。MFI-3表示了规范的元模型,它能够注册由ODM(本体定义元模型)或MDR标准扩充版等规范的本体描述元模型所描述的本体。因此,尽管两者在提升数据和系统的互操作性方面有着共同的目标,但元数据注册表侧重于数据层面的描述和管理,而元模型互操作框架更多地聚焦于模型和架构级别的互操作解决方案设计。MDR主要用于数据治理和标准化,支持企业内部或跨组织的数据共享和交换,确保数据的质量和准确性,并促进信息系统间的数据互操作性。

2024-03-10 11:22:08 879

原创 Web本体语言OWL

语义网是万维网联盟(W3C)提出的一种愿景,旨在增强现有Web的表达能力和智能处理能力,通过标准化的技术手段赋予网络数据更加精确和可计算的语义,使得机器能够更好地理解和处理这些数据。它的目标是建立一个全球数据网络,在这个网络中,信息不仅仅是文本和链接,而是结构化的、带有明确含义的数据。语义网是万维网的一个重要发展方向,为万维网上的知识表示、推理、交换和复用提供了基础。

2024-03-09 18:11:03 926

原创 模型驱动架构MDA

模型驱动工程(MDE, Model-Driven Engineering)是软件工程的一个分支,它将模型与建模拓展到软件开发的所有方面,形成一个多维建模空间,从而将工程活动建立在这些模型的映射和转换之上。[1] MDE的基本原则是将模型视为第一实体,将所有软件产物当做模型或模型要素。模型驱动工程(Model Driven Engineering, MDE)是一种软件开发范式,其核心思想是通过高层次的抽象模型来描述系统的行为和结构,然后利用模型转换和代码生成技术自动生成部分或全部实现代码。

2024-03-09 17:36:36 1240

原创 Groovy初探

groovy编译效果分析

2022-01-10 17:22:16 333

原创 动态语言Groovy核心原理

groovy 与java 最终都是以字节码的方式在JVM 上面执行。groovy并没有突破jvm的字节码语法机制.

2022-01-10 14:32:57 2329 1

原创 java原生动态代理JDK Proxy

JDK Proxy是我们最容易使用的代码自动生成方案

2022-01-09 17:40:05 944

原创 插入式注解API(Pluggable Annotation Processing API)

;在JDK 1.5之后,Java语言提供了对注解(Annotation)的支持,这些注解与普通的Java代码一样,是在运行期间发挥作用的。在JDK 1.6中实现了JSR-269规范JSR-269:Pluggable Annotations Processing API(插入式注解处理API)。提供了一组插入式注解处理器的标准API在编译期间对注解进行处理。Annotation Processor在编译期间而不是运行期间处理Annotation, Annotation Processor相当于编译器的一个插件

2022-01-08 22:07:50 1121

原创 Java动态编程技术

Java是一种静态显式强类型语言,导致java代码存在大量的模版化代码,一直被人诟病开发效率低.但java语言本身以及JVM生态提供了大量动态编程技术,可以大量减少模版化代码.本文尝试整理相关的技术.

2022-01-08 17:41:06 1075 1

原创 写给程序员看的项目管理入门

程序员从拿到一个需求到这个需求上线,除了写代码还有没有其他必须要做的事情?

2021-06-24 00:43:28 648 3

原创 JAVA并发编程与伪共享

伪共享原因缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。Java内存布局(Java Memory Layout)对于HotSpot JVM,所有对象都有两个字长的对象头。第一个字是由24位哈希码和8位标志位(如锁的状态或作为锁对象)组成的Mark Word。第二个字是对象所属类的引用。如果是数组对象还需

2020-07-14 18:10:35 171

原创 自建线程池优雅下线

自建线程池优雅下线什么场景下使用线程池什么场景下不要使用线程池常见线程池阿里线程开发规约多线程优雅下线线程池关闭创建线程池参数参考文献什么场景下使用线程池同步改异步提高并发吞吐量什么场景下不要使用线程池系统资源已经接近瓶颈(内存、CPU、IO)上游已经有多线程(多线程嵌套、在线程池中创建线程池)常见线程池(1) newFixedThreadPool建立一个线程数量固定的线程池,规定的最大线程数量,超过这个数量之后进来的任务,会放到等待队列中,如果有空闲线程,则在等待队列中获取,遵

2020-05-28 16:40:58 365

原创 优雅停机方案

springboot优雅停机概述线上重启面临的问题常见问题解决方案思路优雅停机相关知识Linux中断ShutdownHookSpringCloud对优雅停机的处理机制SpringBoot ApplicationContext生命周期Spring Bean生命周期服务注册生命周期Ribbon自动重试服务发现的心跳检测Ribbon负载均衡tomcat的响应机制Nginx的负载均衡策略传统架构的优雅停机...

2020-01-10 15:05:30 1493 1

原创 sonar扫描处理lombok问题

问题分析Sonar是应该静态代码扫描工具,默认根据源代码分析代码质量和潜在的问题。lombok是一个字节码增强工具,通过在编译期修改java class字节码实现简化代码的目的。所以默认情况sonar会将使用lombok @Data等注解的类识别为 代码坏味道 。SonarJava是sonar默认提供的Java语言分析器。SonarJava4.12以后增加了字节码分析能力,但到5.1才解决lom...

2019-11-20 12:26:08 5839 1

原创 《Spring响应式微服务》读书笔记

Spring响应式微服务: Spring Boot 2 + Spring 5+Spring Cloud 实战郑天民 著2019.6出版云原生基础理论云原生所需要的能力和特征The Twelve Factors12-Factors经常被直译为12要素,也被称为12原则,描述如何利用云平台提供的便利来开发更具可靠性和扩展性、更加易于维护的云原生应用。另外还有补充的三点:API...

2019-09-29 18:20:57 1016

原创 《持续演进的Cloud Native》读书笔记

《持续演进的Cloud Native: 原原生架构下的微服务最佳实践》王启军/著 (公众号:奔跑中的蜗牛)电子工业出版社2018.10出版Cloud Native的组成Cloud Native需要从架构、研发流程和团队文化三个角度来实现,三者需要相互配合,缺一不可。架构Cloud Native是以云和微服务架构为基础,云包含了敏捷基础设施及公共基础组件。同时还需要考虑架构的...

2019-09-29 15:14:58 557

原创 《领域专用语言实战》读书笔记

元编程:编写“编写代码”的代码。元编程可以通过编写程序来产生新的程序,也能改变已有程序的行为。常用的DSLDSL用途SQL关系型数据库Ant, Rake, Make几种用于软件系统构建的语言CSS, HTMLweb开发预言YACC, Bison, ANTLR几种用例生产语法分析器的语言RSpec、CucumberRuby环境下的行为驱动...

2019-09-28 17:55:43 416

原创 spring boot 最佳实践(十一)--使用RabbitMQ

Quick StartRabbitMQ三amqp协议的一个实现,spring boot提供了快速的接入方案.参考配置build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-amqp' testImplementation 'org.springframework.amq...

2019-09-26 18:18:23 1100

原创 spring cloud实战(五)UAA

我们以spring cloud security OAuth2.0+JWT为案例分析如何搭建自己的用户认证中心(UAA: User Account and Authentication)。spring cloud security的安全体系庞大而复杂。先看看关键的依赖包的关系:以上是搭建一个UAA所需要最核心的jar包,我等凡人实在无法在有限的时间内阅读完所有spring security的源...

2019-09-12 09:32:17 3521

原创 spring cloud实战(四)spring cloud gateway

需求我们使用spring cloud gateway搭建一个最简单的微服务通用访问网关(General Purpose Server-side API gateway)。需求整理如下:所有资源服务通过consul agent注册到consul server,springcloud gateway直接根据service name做应用上下文转发。安全认证中心在gateway后面,sprin...

2019-09-11 16:22:35 1905

原创 互联网安全认证的问题、场景及方案

在传统web开发B-S模型中,用户登陆后创建一个sessionId返回给Browser(User-Agent);在Browser每次请求后端Server时,根据sessionId获取用户登陆时的客户信息,从而实现安全认证(Authentication)。进入移动互联网时代我们需要对这个模型进行升级,从而实现更广泛的安全认证。在移动互联网开发中我们遇到的问题首先是RESTful无状态的架构风格变换...

2019-08-22 19:06:39 1104

原创 SpringCloud源码研读(四):ribbon

Ribbon运行时Bean做了命名空间隔离,给每个服务方定义一个独立的bean上下文。这样做是为了支持对某一个服务单独配置负载。比如负载算法,是否重试等,也可以为每一个服务实例化一个服务发现逻辑,可以最大化地将自由交给实现方。核心领域对象SpringClientFactory是Ribbon全局唯一的bean工厂,只有一个实例。通过getInstances(String name, Clas...

2019-08-17 17:24:41 279

原创 SpringCloud源码研读(三):consul

自动配置在spring-cloud-consul-discovery.jar!/META-INF/spring.factories中,有如下配置:org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.cloud.consul.discovery.RibbonConsulAutoC...

2019-08-17 17:17:16 1953 1

原创 spring cloud实战(三)consul

Consul 介绍Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具(比如 ZooKeeper 等)。使用起来也较 为简单。Consul 使用 Go 语言编写,因此具...

2019-08-15 10:22:45 2803

原创 spring cloud实战(二)open feign

Feign是一种声明式、模板化的REST客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,省略了大量的http请求代码。开始使用FeignSpring Cloud提供了完备的Feign配置启动功能。在pom.xml中引入Feign依赖,添加如下内容:<dependency&g...

2019-08-12 09:13:50 740

原创 @ConditionalOnClass(A.class)为什么不报错

问题说明条件加载是springboot自动配置的刚需,其中有两个条件@ConditionalOnClass和@ConditionalOnMissingClass非常特别,它是基于class类是否存在判断的。场景的使用场景如下:import A;import B;@Configurationclass C{ @Bean @ConditionalOnClass(A.clas...

2019-08-09 16:41:38 5869

原创 Spring Cloud源码研读(二):openFeign

Feign的工作原理openFeign为了实现高度的灵活和舒适的使用体验,使用了大量的设计模式。简直是设计模式学习的最佳范本。初始化过程@EnableFeignClients注解将类FeignClientsRegistrar注册到Spring中。当springboot应用启动时,FeignClientsRegistrar会扫描所有@FeignClients的注解的类,将这些接口bean注...

2019-08-08 16:47:02 296

原创 Spring Cloud源码研读(一):启动与Bean加载

SpringBoot启动核心逻辑通常最简单的springboot项目的总入口是如下写法。类上加注解@SpringBootApplication,然后直接调用静态方法SpringApplication#run(Class<?> primarySource,String… args):@SpringBootApplicationpublic class MyApplication {...

2019-08-07 20:05:40 567

原创 spring cloud实战(一)spring cloud config

项目模板客户端使用spring boot项目目录结构模板├ {projectRoot} ├ pom.xml ├ test │ └... └ src ├ main ├ java │ └ com... └ resources ├ bootstrap.yml ├ logback-spring.yml └ application-local.ym...

2019-06-03 18:13:10 275

原创 深入解析Jolt

Jolt概览:目前json数据已经逐步取代xml成为主流的数据交换和存储格式。在数据交互过程中经常遇到数据格式不一致的问题,在xml时代有XSTL(Extensible Stylesheet Language Transformation)可以实现,在json时代,我们可以用jolt。Jolt的核心功能:提供了一组转换,可以“链接”在一起形成整体JSON到JSON的转换。专注于转换JSO...

2019-05-23 15:38:28 7608

原创 Maven必知必会

maven是什么?Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具[百度百科]POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。Maven的核心功能...

2019-04-04 09:01:38 146

原创 springscurity实战

springscurity为我们提供了强大的内置功能,但在实际应用场景中依然需要做一定的定制开发和配置。本文尝试通过实战一起了解springscurity的内部世界。需求场景混合式开发APP(Hybrid APP)是目前移动互联网主流的前端框架,这样的前端框架对后端接口服务和安全控制有个性化需求,简单整理如下:动静分离,所有接口返回都是json无状态restful接口,没有会话保持手机...

2019-01-17 09:49:28 638

原创 springsecurity核心要义

springsecurity框架的核心组件SecurityContextHolder:提供对SecurityContext的访问SecurityContext:持有Authentication对象和其他可能需要的信息AuthenticationManager: 其中可以包含多个AuthenticationProviderProviderManager:AuthenticationMan...

2018-12-31 11:48:54 372

原创 互联网系统应用安全控制

面向互联网公网的接口服务,如果不加防护会导致数据泄露和商业风险。对重要的业务数据,需要做数据访问权限控制,只为特定客户或特定渠道提供授权登陆的访问。访问控制分为用户认证(authentication)和用户授权(authorization)。认证是指系统需要确认你是谁?,而授权是指在通过认证之后,你能干什么?核心概念用户认证关键对象Subject:主题,可以使用户,也可能是程序,都要去访问...

2018-12-25 10:38:26 1128

原创 java后端响应式编程从理论到实践

堵塞与非堵塞原理传统硬件的堵塞(IO)如下,从内存中读取数据,然后写到磁盘,而CPU一直等到磁盘写完成,磁盘的写操作是慢的,这段时间CPU被堵塞不能发挥效率。使用非堵塞(NIO)的DMA如下图:CPU只是发出写操作这样的指令,做一些初始化工作,DMA具体执行,从内存中读取数据,然后写到磁盘,当完成写后发出一个中断事件给CPU。这段时间CPU是空闲的,可以做别的事情。这个原理称为Zero.co...

2018-12-19 11:38:24 3149

原创 spring boot 最佳实践(十)-- spring data jpa

Quick start1.pom引用在spring boot中可以直接引入stater,该starter默认引入Hibernate依赖。&amp;amp;amp;lt;dependency&amp;amp;amp;gt; &amp;amp;amp;lt;groupId&amp;amp;amp;gt;org.springframework.boot&amp;amp;amp;lt;/groupId&amp;amp;amp;gt; &amp

2018-12-03 14:17:28 841

原创 java 持久化

#名词大作战##什么是JPAJPA(Java Persistence API )中文名Java持久层API,JPA通过注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。Hibernate3.2+、TopLink 10....

2018-12-03 11:52:53 3651

原创 事务(三)、弱一致性事务

书接上回,程序员穷开心通过数据库实现了转账事务的强一致性。沧海桑田,世事变幻,话说李雷又要向韩梅梅转账100元,但事情有了变化。故事的发展李雷账户在火星人民银行,韩梅梅搬到了水星,账户在水星人民银行。程序员穷开心在海绵宝第三方支付公司写程序。由于CAP悖论,火星人民银行和水星人民银行都不对外提供二阶段提交事务接口。CAP定理(帽子理论)定理:任何分布式系统只可同时满足CAP二点,没法三...

2018-10-06 14:33:44 1209

原创 事务(二)、强一致性事务

前文讲到程序员面对事务ACID特性如何实现一筹莫展,于是本文进入程序员穷开心的表演时间。众所周知,现代关系型数据库天然支持实物ACID,但数据库是怎样实现ACID的呢?** 数据库实现ACID的核心技术是并发控制和日志技术 **并发控制:保证并发操作的正确性(2PL)日志:保证故障场景下可恢复(Undo/Redo,WAL协议)现代数据库均基于Write ahead logging实现...

2018-09-18 17:55:27 1356

原创 事务(一)、事务概念入门

事务概念入门**事务(Transaction)**是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行线逻辑单元;是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作...

2018-09-18 15:05:54 500

空空如也

空空如也

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

TA关注的人

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