自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(52)
  • 资源 (13)
  • 收藏
  • 关注

原创 Seata服务端(TC)源码分析

1. Seata的客户端启动流程自动加载各种Bean及配置信息 初始化TM 初始化RM(具体服务) 初始化分布式事务客户端完成,代理数据源 连接TC(Seata服务端),注册RM,注册TM 开启全局事务 执行业务方法 提交或回滚全局事务2. 基于SpringBoot自动装配 GlobalTransactionAutoConfiguration自动装配类 所以我们直接通过官方案例引入的Seata包,找到SpringBoot项目在启动的时候自动扫描加载类型的spring.facto

2022-04-26 21:30:44 1561

原创 Seata客户端源码分析

1. Seata的客户端启动流程自动加载各种Bean及配置信息 初始化TM 初始化RM(具体服务) 初始化分布式事务客户端完成,代理数据源 连接TC(Seata服务端),注册RM,注册TM 开启全局事务 执行业务方法 提交或回滚全局事务2. 基于SpringBoot自动装配 GlobalTransactionAutoConfiguration自动装配类 所以我们直接通过官方案例引入的Seata包,找到SpringBoot项目在启动的时候自动扫描加载类型的spring.facto

2022-04-25 21:37:13 2105

原创 分布式事务之Seata

1. 分布式事务简介分布式事务是在部署在多个设备上的多个应用间实现要么都成功要么都失败的语义,这些设备一般是通过网络通讯的。事务的特性事务的ACID特性, 一个完整的事务要求同时具备以下特性A(Atomic)原子性,就是数据不能被破坏,是完整的。C(Consistency)一致性, 数据在执行事务前后要求一致,执行分布在多个表中的数据也要要求一致。不能出现事务完成后。A表和B表数据对应不上的情况。I(Isolation)事务与事务之间要求数据不能相互干扰,不能看到其他事务运行中的状态

2022-04-22 21:14:34 2423 1

原创 4. Spring Cloud Gateway自定义Filter

1. Filter介绍Filter是实现在网关路由之前或之后加入一些逻辑,或者拦截过滤的工具, 称为过滤器。 在Spring Cloud Gateway中除了内置的Filter之外,也可以自定义Filter来实现自己想要的功能。原理图如下:2. 内置FilterSpring cloud gateway 内置了很多的filter,单一的有32种,全局的有9种。这个数量实在是太惊人了,而且用法都比较简单,所以这里大家可以自行根据官网给出的演示进行练习 官方网址:Spring Cloud Ga

2022-04-16 14:35:26 7133

原创 3. Spring Cloud Gateway之断言Predicate

1. 断言介绍网关中的Predicate灵感来自java8的新特性java.util.function.Predicate,可以理解为:当满足条件后才会进行转发,如果是多个Predicate,那就是满足所有条件才会转发2. 断言种类After:匹配在指定日期时间之后发生的请求。 Before:匹配在指定日期之前发生的请求。 Between:需要指定两个日期参数,设定一个时间区间,匹配此时间区间内的请求。 Cookie:需要指定两个参数,分别为name和regexp(正则表达式),也可以理解

2022-04-16 12:50:16 1843

原创 2. Spring Cloud Gateway入门

入门概念客户端向 Spring Cloud Gateway 发出请求。如果Gateway Handler Mapping确定请求与路由匹配,则将其发送到Gateway Web Handler 处理程序。此处理程序通过特定于请求的Fliter链运行请求。在过滤器链上线执行pre部分逻辑,然后执行代理服务,然后支线post部分逻辑。 所以在执行一个过滤器时流程是这样的 pre→proxied service→post,如下图所示:过滤器作用Filter在pre类型的过滤器可以做参数效验、权限..

2022-04-16 11:43:05 786

原创 1. API网关的由来

1. API网关的介绍 在互联网早期的时候,其实单web应用也能支撑用户的请求,因为请求量并不大。 但是随着需求的增多,单应用已无法承受更多的请求, 人们就把应用部署在多个服务器上,以支撑更多的用户请求,那这里就会产生一个问题,后端有多少服务器支撑用户并不需要,用户只会请求某个地址来获得服务,那么这个地址如何将请求转发到服务上以实现均衡的负载呢? 这就是网关需要做的事情。 为了解决这个问题,人们提出了网关(gateway)的概念,网关能够做为某种翻译器使用,它抽象出了一种可以到达资源

2022-04-11 22:53:52 1347 1

原创 14. Sentinel滑动时间窗口算法源码解析

上节课我们分析了Sentinel的滑动时间窗口算法原理,那么这节课我们来研究一下源码中的具体实现1. Sentinel中使用滑动时间窗的流程图从图中可以看出Sentinel在各种地方都使用了时间窗提供的数据。 也是依赖Sentinel的StatisticSlot提供数据由时间窗记录下来。2. 源码入口分析首先看StatisticSlot.entry方法中node.addPassRequest(count)方法,这里我之前就提到过用到了滑动窗口算法,那我们来具体分析// Stat..

2022-04-11 11:47:41 956

原创 15. 滑动时间窗口在流控FlowSlot中的使用源码解析

15. 滑动时间窗口在流控FlowSlot中的使用源码解析1. 分析入口源码之前我们通过分析源码已经知道了滑动窗口算法在Sentinel中的应用,那么这节课我们来研究一下流控的FlowSlot是如何使用的// FlowSlot.java@Overridepublic void entry(Context context, ResourceWrapper resourceWrapper, DefaultNode node, int count, boole

2022-04-11 11:47:06 603

原创 13. 滑动时间窗口算法概念原理

1. 时间窗介绍在之前的学习中,我们已经学习完成了Sentinel源码的Node关系、责任链调用,那么这节课我们就要学习Sentinel核心源码中的一个非常重要的算法“滑动时间窗口算法”,也就是结构图中的WindowLeapArray,它为Sentinel提供当前时间的数据支撑, 如当前QPS,请求数,异常数等。2. 固定时间窗口算法要学习滑动窗口,我们先要学习时间窗口算法,以循序渐进的方式了解滑动窗口,时间窗口算法也可以称之为:固定时间窗算法概念:固定时间窗口计数器算法思想:在固定..

2022-04-11 11:46:23 13484 5

原创 12. 熔断DegradeSlot解析

1. 介绍上一篇我们分析了流控FlowSlot的源码,接下来就是熔断DegradeSlot了,熔断通常是发生在调用其他服务时发生慢调用,或异常比例超过多少,或异常数超过多少,那就会通过Sentinel提供的熔断机制, 不调用远程的服务,使用一个兜底的熔断效果来替代。以保证系统的可用性。2. 代码分析//DegradeSlot.java@Overridepublic void entry(Context context, ResourceWrapper resourceWrapper, ..

2022-04-11 11:46:16 305

原创 11. 流控FlowSlot源码解析

介绍这个slot 对应我们在Dashboard中设定的流控规则, 主要根据预设的规则资料信息来进行流控,按照固定的次序,依次生效。如果一个资源对应两条或者多条流控规则,则会根据如以下次序依次检验,直到全部通过或者有一个规则生效为止: 指定应用生效的规则,即针对调用方限流的; 调用方为 other 的规则; 调用方为 default 的规则。 代码解析public class FlowSlot extends AbstractLinkedProcessorSlo..

2022-04-11 11:46:05 588

原创 10. 统计StatisticSlot源码解析

StatisticSlot 简介StatisticSlot 是 Sentinel 最为重要的类之一,其功能主要是各种维度的数据收集,之前两个Slot(NodeSelectorSlot和ClusterBuilderSlot)相当于都是检查并创建数据收集器, 而StatisticSlot 则是通过数据收集器来添加各种维度的数据,以便于给下次流控做数据参考。 这里的收集是发生在本次请求流控之后进行,会根据本次流控结果来进行收集。如下几种情况:记录数据时机没有产生流控: 记录请求线程数increaseT

2022-04-10 11:00:13 530

原创 9. ClusterBuilderSlot源码解析

ClusterBuilderSlot简介ClusterBuilderSlot是用于创建用于存储资源的统计信息以及调用者信息的ClusterNode ,例如该资源的 RT, QPS, thread count 等等,这些信息将用作为多维度限流,降级的依据;那我们来进行分析源码说明//ClusterBuilderSlot.javaprivate static volatile Map<ResourceWrapper, ClusterNode> clusterNodeMap = new

2022-04-10 10:59:40 354

原创 8. NodeSelectorSlot源码解析

官网有给出解释是:这个 Slot 主要负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流降级。这里是指的是我们在结构图中的Node的树状结构,这个树上的各种Node用于收集在不同维度上的数据,以供给流控使用。而NodeSelectorSlot是负责创建DefaultNode并添加到树结构中当请求进入流控逻辑后,会在内存中生成如下的结构 machine-root /

2022-04-10 10:58:33 249

原创 7. Sentinel SlotChain的创建和调用源码解析

7. Sentinel SlotChain的创建和调用源码解析1. 入口简介通过5小节,我们知道了是同SphU.entry方法来作为流控的入口的,也就是说该方法会执行流控相关逻辑,那么它是如何实现的呢? 通过Sentinel结构图我们知道它里面应该会构建一个调用链,这个调用链就是SlotChain,那么我们接下来着重解析这个调用链。2. 各种Slot介绍在 Sentinel里面,所有的资源都对应一个资源名称(resourceName),每次资源调用都会创建一个 Entry 对象,Entry

2022-04-10 10:57:42 392

原创 6. Sentinel构建上下环境Context源码解析

说明上下文Context是一次请求需要流控所需要的相关数据的封装, 这个对于流控来说至关重要。通过上节我们知道了,微服务中Sentinel如何开始流控的,但并没有创建上下文Context,我们知道没有创建时,它是会创建一个默认的Context,那么我们Sentinel是如何创建的呢?我们继续跟踪代码。跟踪步骤进入SphU.entry方法 进入Env.sph.entryWithType方法 通过跟踪,我们来到了CtSph.entryWithPriority方法中public class

2022-04-10 10:55:39 272

原创 5. SpringBoot项目的源码入口源码解析

微服务自动装配在微服务的使用Sentinel实际工作场景中,我们只需要引入对应依赖:spring-cloud-starter-alibaba-sentinel,就能使用流控了, 原因是引入后利用SpringBoot自动装配功能,所以在META-INF/spring.factories中有SentinelAutoConfiguration来实现流控Sentinel的自动装配。SentinelAutoConfiguration自动装配类中有如下代码自动注入Bean SentinelResourceA

2022-04-10 10:55:04 656

原创 4. 各种Node之间的关系说明

简要说明Node 接口定义了一个 Node 类所需要提供的各项指标数据统计的相关功能,为外部屏蔽滑动窗口的存在。提供记录请求被拒绝、请求被放行、请求处理异常、请求处理成功的方法,以及获取当前时间窗口统计的请求总数、平均耗时等方法。StatisticNode:统计节点,是Node的实现类,用于完成数据统计,是DefaultNode和ClusterNode的父类 EntranceNode:DefaultNode的子类,入口节点,一个Context会有一个入口节点,用于统计当前Context的总体流量数

2022-04-10 10:53:30 481

原创 3.核心入口代码SphU.entry说明

SphU是Alibaba Sentinel流控的入口类,用于对资源的访问控制, 简单使用如下@Testpublic void requestTest() { // Entry就是一个资源操作对象 Entry entry = null; try { //对资源(resource)进行检查,如果流控则抛出BlockedException //"resource"一般是请求路径或有SentinelResource注解类定义的访问资源

2022-04-10 10:51:13 3074

原创 2. 工作原理和核心概念

介绍Sentinel 的核心是将不同的 Slot 按照顺序串在一起(使用了责任链模式),这些不同的 Slot实现了不同的功能(限流、降级、熔断、系统保护)。Slot Chain 主要可以分为两部分:统计数据构建部分(statistic)和判断部分(rule checking)。核心结构如下图结构图说明通过上图可以看出,整个结构分为几大块Invocation Tree Node接口是Sentinel 里面的各种种类的统计节点,Invocation Tree 中就是各种Node,不同..

2022-04-10 10:48:37 197

原创 1. 源码下载使用IDEA打开

下载地址GitHub - alibaba/Sentinel at release-1.8https://github.com/alibaba/Sentinel/tree/release-1.8使用IDEA打开这里我们以版本1.8为例下载研究分析,下载完成后通过IDEA打开根目录下的pom.xml以项目的形式打开,会自动加载所有的依赖,完成后应该如下图:版本对照说明由于各种版本的差异和兼容性问题,微服务需要的各种组件的版本最好是官方推荐对应的版本,避免出现其他各种问题。具体参考如下..

2022-04-10 10:45:51 731

原创 15. Alibaba Sentinel 持久化限流规则

背景概述从之前学习得到的结果来看,每次重启应用后,在Sentinel中的限流配置都会丢失, 需要重新配置,这无疑是比较麻烦的,在生产环境中也是不可忍受的。 所以我们需要将配置存下来,保证应用重启后配置还在,而且能生效。Sentinel提供多种不同的数据源来持久化规则配置,例如:file,redis、nacos、zk等由于我们使用Sentinel时一般都会搭配Nacos来使用,所以把规则存在Nacos是一个上佳的方案, Nacos既是注册中心,又可以是配置中心,而Sentinel正是利用了配置中心

2022-04-05 14:27:18 920

原创 14. Alibaba Sentinel 整合OpenFeign

背景介绍OpenFeign用来调用服务是很方便的, Sentinel是用来做限流的,都是微服务的必备功能,但又都具备调用失败后降级的功能,那么我们整合了Sentinel和OpenFeign后, 如果都配备了降级功能, 框架该如何选择降级功能,是优先使用还是只选择了某个降级其他配置就失效了呢?&那么我们就来通过一个项目整合验证一下项目依赖 组件 版本 org.springframework.boot<br>spring-boot-starter-par

2022-04-05 13:28:26 792

原创 1. OpenFeign简单使用

1. OpenFeign简单使用概念OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求,用法其实就是编写一个接口,在接口上添加注解即可。可以简单理解它是借鉴Ribbon的基础之上,封装的一套服务接口+注解的方式的远程调用器。 不管是消费端还是服务提供方,需要书写的代码量也都很少, 比起Ribbon来说,更加的优雅

2022-04-05 07:39:24 893

原创 13. Alibaba Sentinel 资源定义@SentinelResource

介绍@SentinelResourceSentinel 提供了@SentinelResource注解用于定义资源,并提供了AspectJ的扩展用于自定义资源,处理BlockException等。字段名 解释 value 资源名称,必须项(唯一,不能为空) blockHandler 定义资源访问限制后的处理方法,如果不在当前Controller,单独通过blockHandlerClass定义了类的话,需要定义成静态的方法才行 blockHandlerClass ..

2022-04-04 22:32:10 787

原创 12. Alibaba Sentinel 系统保护规则

介绍Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能 保证系统整体的稳定性 保持系统最大吞吐量 系统保护规则是应用整体维度的,而不是资源维度的,并且仅对入口流量生效。入口流量指的是进入应用的流量,比如 Web 服务或 Dubbo 服务端接收的请求,都属于入口流量。系统规则支持一下..

2022-04-04 15:39:34 801

原创 11. Alibaba Sentinel 热点规则

1. 概念介绍何为热点?热点即经常访问的数据。有时候我们某个请求路径中的某个参数更甚至于某个参数值为热点数据。比如某个商品秒杀,或者说突然降价的热点商品数据, 或者微博中某个人的突发事件等。 这些数据在某一段时间突然暴增,可能会把系统压垮。 所以需要针对他们进行限流,不能影响其他同类。比如:商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制 用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模..

2022-04-03 16:48:28 232

原创 10. Alibaba Sentinel 熔断策略之异常数

10. Alibaba Sentinel 熔断策略之异常数1. 概念解释熔断策略异常数是以请求异常数量作为阈值,当单位统计时长(statIntervalMs)内请求数大于设置的最小请求数,并且异常请求数设置的异常数,则接下来的请求会自动熔断,熔断时间为设置的熔断时长。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若在HALF-OPEN状态下有一个请求正常响应 则结束熔断,否则继续熔断。具体设置如下图:字段说明表格字段名 说明 资源名 访问的请求路

2022-04-03 13:21:36 693

原创 9. Alibaba Sentinel 熔断策略之异常比例

1. 概念解释熔断策略异常比例是以请求异常数量的比例作为阈值,当单位统计时长(statIntervalMs)内请求数大于设置的最小请求数,并且异常请求数的比例大于比例阈值,则接下来的请求会自动熔断,熔断时间为设置的熔断时长。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若在HALF-OPEN状态下有一个请求响应时间小于 最大RT 则结束熔断,否则继续熔断。具体设置如下图:字段说明表格字段名 说明 资源名 访问的请求路径 熔断策略 熔断规..

2022-04-03 13:06:02 724

原创 8. Alibaba Sentinel 熔断策略之慢调用比例

1. 概念解释熔断策略慢调用比例是以慢调用数量的比例作为阈值,首先需要设置最大 RT(即最大的响应时间,用于鉴定是否是慢调用),请求的响应时间大于该值则统计为慢调用。当单位统计时长(statIntervalMs)内请求数大于设置的最小请求数,并且慢调用的比例大于比例阈值,则接下来的请求会自动熔断,熔断时间为设置的熔断时长。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若在HALF-OPEN状态下有一个请求响应时间小于 最大RT 则结束熔断,否则继续熔断。具体设置如下图:..

2022-04-03 12:24:28 1558 1

原创 7. Alibaba Sentinel 流控效果之排队等待

名词解释排队等待排队等待(匀速器):匀速排队,让请求以匀速的速度通过,阈值类型必须设置为QPS,否则无效官方文档:flow-control概念:匀速排队方式会严格控制请求通过的间隔时间,也即是让请求以均匀的速度通过,对应的是漏桶算法。这种方式主要用于处理间隔性突发的流量,例如消息队列。想象一下这样的场景,在某一秒有大量的请求到来,而接下来的几秒则处于空闲状态,我们希望系统能够在接下来的空闲期间逐渐处理这些请求,而不是在第一秒直接拒绝多余的请求(削峰填谷)。例图:匀速器它的..

2022-04-03 09:19:49 903

原创 Android Studio开发局域网其他设备如何连接官方模拟器

1. 背景现在的Android 官方的模拟器越来越好用了,而且Android Studio也默认集成了,使用起来是很方便的,但是苦于其他测试时,如果我们在应用中开放端口服务,那么局域网的其他设备就访问不到了。 这是因为android的模拟器没有提供桥接模式的方式, 模拟器的IP是对外隐藏的。 之前用Genymotion模拟器的时候,是可以设置成桥接模式然后使用局域网的IP地址的。 所以其他机器就能访问到。2. 解决方案adb forward解决方案介绍Android官方为我们提供一种Ad..

2022-04-02 17:44:34 2213

原创 6. Alibaba Sentinel 流控效果之预热Warn Up

名词解释预热Warm UpWarm Up:根据coldFactor(冷加载因子,默认3)的值,从阈值/codeFacotor,经过预热时长,才达到设置的QPS阈值官网手册地址:flow-control概念:Warm Up方式,即预热/冷启动方式。该方式主要用于系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮的情况。预热公式:初始阈值= 设定..

2022-04-01 22:54:16 761

原创 5. Alibaba Sentinel 流控规则之链路

1. 名词解释链路介绍链路是指调用路径, 假如某一个服务方法有多个调用来源, 如果我们只想限制来自于某一个来源的的调用路径, 就可以通过链路来限流,这个调用路径就是链路比如在一个微服务中,两个接口都调用了同一个Service中的方法,并且该方法用SentinelResource(用于定义资源)注解标注了,然后对该注解标注的资源(方法)进行配置,则可以选择链路模式。图解2. 具体演示1. 首先我们编写一个Service@Servicepublic class TestS..

2022-04-01 22:00:52 1326 1

原创 4. Alibaba Sentinel Dashboard 流控规则之关联

1. 关联概念官方解释:当关联的资源达到阈值时,就限流当前资源通俗解释来说,比如那我们的程序,现在有testA接口和testB接口,当testA关联的资源testB达到阈值后,就限流testA。例如在一个电商系统中,当支付系统达到阈值,就限流下单系统,防止更多的订单产生的支付打垮了支付系统。2. 具体演示资源入库代码当关联资源/testB的QPS阈值超时1时,就限流/testA,代码如下:package com.example.sentinel.service;import..

2022-03-31 23:30:15 464

原创 3. Alibaba Sentinel Dashboard 流控规则

Sentinel流控规则流控规则基本介绍名词解释资源名 : 唯一名称,默认请求路径 针对来源: Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源) 阈值类型/单机阈值: QPS(每秒钟的请求数量):当调用该API的QPS达到阈值的时候,进行限流 线程数:当调用该API的线程数量达到阈值的时候,进行限流 是否集群:当前不需要集群 流控模式: 直接:API达到限流条件时,直接限流 关联:当关联的资源达到阈值时,就限流自己 链路:..

2022-03-31 22:40:47 438

原创 2. Alibaba Sentinel IDEA 简单使用

Wolai 目录项目概述 IDEA创建微服务项目 查看结果项目概述需要启动nacos , 192.168.43.11:8848 需要启动sentinel-dashbord http://192.168.43.11:31808/#/login IDEA创建微服务项目,模块sentinel-service 启动微服务项目 然后去sentinel-dashbord查看情况步骤1和步骤2都提前完成了,需要的查看其他博文IDEA创建微服务项目模块sentinel-service..

2022-03-31 21:20:37 400

原创 1. Alibaba Sentinel Dashboard K8S安装

1. 什么是Sentinel分布式系统的流量防卫兵:随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel以“流量”为切入点,在流量控制、断路、负载保护等多个领域开展工作,保障服务可靠性。2. Sentinel官网GitHub - alibaba/Sentinel: A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微..

2022-03-30 21:59:36 1143

原创 Nacos客户端本地缓存和故障转移

在Nacos客户端从Server获得服务的时候,在某些时候出现了一些故障, 这时候为了保证服务正常,Nacos进行了故障转移,原理就是将之前缓存的服务信息拿出来用,防止服务出现问题,涉及到的核心类为ServiceInfoHolder和FailoverReactor。 本地缓存有两方面,第一方面是从注册中心获得实例信息会缓存在内存当中,也就是通过Map的形式承载,这样查询操作都方便。第二方面便是通过磁盘文件的形式定时缓存起来,以备不时之需。 故障转移也分两方面,第一方面是故障转...

2022-03-30 21:51:58 6570

分布式事务之Seata XA AT实战代码

具体使用,参考文章:https://blog.csdn.net/chyh741/article/details/124355241

2022-04-22

JAVA简单AOP切面编程;依赖注入;代码配置Bean源码

JAVA简单AOP切面编程;依赖注入;代码配置Bean源码 JAVA简单AOP切面编程;依赖注入;代码配置Bean源码

2017-10-07

手写Spring AOP源码

SpringAOP 切面编程 AOP源码 SpringAOP 切面编程 AOP源码 SpringAOP 切面编程 AOP源码

2017-10-06

JavaEE AOP源码

AOP 面向切面的编程思想。 Spring的主要特性之一,今天我整理了一下,小牛试刀,写了一个Demo分享给大家。 切面最主要的功能是在不影响主业务方法逻辑的情况下,在执行业务方法之前或之后加入执行代码。 在JavaEE中最常见的莫过于事务控制, 使得程序员只需关注核心业务逻辑,而无需关注事务相反非业务而又必须要的代码。 切面的主要组件有: 1、切面(@Aspect)。 2、切点(@Pointcut)、 3、通知方法(@Advise),主要有3个 1、执行前通知- @Before 2、执行后通知- @After 3、环绕通知- @Around

2017-10-06

零配置Maven+Spring MVC4.2.4+Hibernate5.2.10

零配置Maven+Spring MVC4.2.4+Hibernate5.2.10 零配置Maven+Spring MVC4.2.4+Hibernate5.2.10 零配置Maven+Spring MVC4.2.4+Hibernate5.2.10 零配置Maven+Spring MVC4.2.4+Hibernate5.2.10

2017-10-05

Android APK 加密 解密工具

Android APK 加密 解密工具 使用这个工具加密后 别人打开你的APK需要输入密码

2013-08-08

MkCodeTool Java代码生成软件

MkCodeTool Java代码生成软件

2010-12-04

MkCodeTool2010.623最新版本

新版本加入了. 添加新字段的功能. 可以很方便的加入你想要加入的新的字段. 通过MkCodeTool的自动生成代码功能,生成的Java代码相当规范且全部开源,代码采用SSH框架,且充分利用Java中的接口。使生成代码 和您写的代码完全分开。对于扩展和修改生成的代码相当容易。MkCodeTool生成的代码通俗易懂,只要稍微有点Java常识的人就可以使用 本软件来开发大型的Java项目,本工作室的开发团队汲取多位资深开发人员多年的项目开发经验开发出本软件,目前使用本软件的模式开发 的项目不下十个。使用本软件从最基本的VO对象到JSP页面的新增、删除、修改、查询等功能一起生产,代码功能一一俱全。您只需要稍微做 下界面的排版即可使用到实际的项目中了。 使用 MkCodeTool的优势 1.您将的生成Java代码根据的的数据库或者创建数据库表的SQL 2.MkCodeTool将您要写的代码严格分开,使您业务逻辑改变或者表字段更变的时候不会影响您写的任何代码。也是MkCodeTool的特色之一 3.您将非常容易的扩展您需要的业务逻辑,使用MkCode生成代码提供的方法 4.您将非常容易增加或者删除程序中对应于数据库表中的每一列,而不会影响您自己写的代码 5.您将轻而易举的就获得获得一个已经写好并且运行速度很快的并扩展相当简单的项目

2010-08-03

GWT 简单实例,包括添加/删除/修改/查询数据

GWT简单实例 包括添加/删除/修改/查询数据 技术层面使用了. GWT事件,GWT自定义组件,GWT的RPC传输.以及各种简单控件的使用. 很简单的

2010-07-27

MkCodeTool代码生成工具

通过MkCodeTool的自动生成代码功能,生成的Java代码相当规范且全部开源,代码采用SSH框架,且充分利用Java中的接口。使生成代码 和您写的代码完全分开。对于扩展和修改生成的代码相当容易。MkCodeTool生成的代码通俗易懂,只要稍微有点Java常识的人就可以使用 本软件来开发大型的Java项目,本工作室的开发团队汲取多位资深开发人员多年的项目开发经验开发出本软件,目前使用本软件的模式开发 的项目不下十个。使用本软件从最基本的VO对象到JSP页面的新增、删除、修改、查询等功能一起生产,代码功能一一俱全。您只需要稍微做 下界面的排版即可使用到实际的项目中了。 使用 MkCodeTool的优势 1.您将的生成Java代码根据的的数据库或者创建数据库表的SQL 2.MkCodeTool将您要写的代码严格分开,使您业务逻辑改变或者表字段更变的时候不会影响您写的任何代码。也是MkCodeTool的特色之一 3.您将非常容易的扩展您需要的业务逻辑,使用MkCode生成代码提供的方法 4.您将非常容易增加或者删除程序中对应于数据库表中的每一列,而不会影响您自己写的代码 5.您将轻而易举的就获得获得一个已经写好并且运行速度很快的并扩展相当简单的项目

2010-06-23

java图片灰度处理,java图片去色

图片去色,灰度处理,可以对图片进行灰度处理

2009-03-07

空空如也

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

TA关注的人

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