框架
java圈
熟悉spring、springboot、springcloud、设计模式、ddd思想
展开
-
缓存的基础知识,你们都了解了吗?
1、什么是缓存?1.1、定义存储在计算机上的一个原始数据的复制集,以便于访问。缓存是介于数据访问者和数据源之间的一种高速存储,当数据需要多次读取的时候,用于监控读取的速度。缓存是有读操作...原创 2020-07-07 07:58:13 · 1263 阅读 · 0 评论 -
系统架构知识是架构师的常识而不是能力
互联网系统面临的挑战高并发、大流量QPS:每秒钟请求或者查询的数量,在互联网领域,指每秒钟请求数(指HTTP请求)吞吐量:单位时间没处理的请求数量(通常由QPS与并发数决定)响应时间:从...原创 2020-07-01 07:26:19 · 1045 阅读 · 2 评论 -
实战项目:设计实现一个流程编排框架(测试)
上几篇文章主要讲了《实战项目:设计实现一个流程编排框架(分析)》《实战项目:设计实现一个流程编排框架(设计》《实战项目:设计实现一个流程编排框架(实现)》,我们今天主要讲一下基于分析、设...原创 2020-06-25 13:05:26 · 1240 阅读 · 0 评论 -
实战项目:设计实现一个流程编排框架(快速入门)
上几篇文章主要讲了《实战项目:设计实现一个流程编排框架(分析)》《实战项目:设计实现一个流程编排框架(设计》《实战项目:设计实现一个流程编排框架(实现)》,今天主要做一个快速入门手册。代...原创 2020-06-25 13:05:26 · 2566 阅读 · 1 评论 -
实战项目:设计实现一个流程编排框架(实现)
上两篇文章主要讲了《[实战项目:设计实现一个流程编排框架(分析)(https://mp.weixin.qq.com/s/veLQZJqYNKbYvuCi7Pf_nA)]》《实战项目:设计...原创 2020-06-24 08:52:11 · 5849 阅读 · 6 评论 -
重新定义软件架构
什么是软件架构?软件架构是整体结构与组件的抽象描述,用于指导大型项目在各个方面的设计;分析图解:1、一个架构最重要的是相关方,相关方包括客户、老板、开发人员、测试人员、运维人员,和项目有...原创 2020-06-07 16:50:20 · 351 阅读 · 0 评论 -
设计原则之依赖倒置
依赖倒置简介我们经常在框架开发过程中听说依赖倒置、依赖反转、控制反转、依赖注入、IOC一些名词,我们常听的这些名词和开发设计原则中的依赖反转原则是有关系,我们来看看这几个名词:控制反转(...原创 2020-06-14 11:36:17 · 389 阅读 · 0 评论 -
WEB框架搭建和配置说明
WEB框架是我们在项目中经常用到的一个框架,我们可以定位前端和后端的适配框架,前端请求发到的WEB容器,然后由WEB容器进行过滤,拦截,解析然后到业务逻辑;也就是说WEB容器是一个比较重要的组件,但是WEB组件是必须的,答案是否定的,我们还可以通过Reactive、socket去实现,但是现在WEB任然是大众所接受的一个框架,我们简单的介绍一下WEB框架的集成过程。新建工程准备工作:把IDEA打开,把MAVEN和JDK安装好;步骤:点击左上角File-settings选择新建项目NWE;原创 2020-05-28 07:32:14 · 507 阅读 · 0 评论 -
架构之基于接口编程
简介接口越抽象、越顶层、越脱离某一种实现的设计,越能提高代码的灵活性、越能应对为了需求的变化,好的代码设计,不仅能够应对当前的需求,而且在将来需求发生变化的时候,任然能够在不破坏原有设计的情况下灵活应对。抽象是提高代码的扩展性、灵活性、可维护性的有效手段。我们先来看一段代码:public class AliPayChannel { /** *支持宝支付 * @pa...原创 2019-11-28 19:07:46 · 1463 阅读 · 0 评论 -
springboot集成分布式事务Seata
简介github地址spring-boot-starter-seata:https://github.com/itrickzhang/spring-boot-starter-seataseata版本server和client版本为0.4.1,Seata 一直在快速迭代在1.0 之前都有可能出现协议不兼容 尽量使用版本号一致说明目前提供的示例是针对使用dubbo的服务,那Spring B...原创 2019-04-15 13:22:49 · 30218 阅读 · 29 评论 -
企业级基础框架搭建-前期准备
主流框架调研主流微服框架sofa开源地址:https://github.com/alipay/sofa-boot开源公司:蚂蚁金服框架简介:sofa是一系列基础组件统称,底层sofa-boot是以Spring Boot研发,提供健康检查、日志隔离、类隔离等能力;sofa-rpc高可扩展性、高性能、生产级的 Java RPC 框架,提供了丰富的微服务治理方案;sofa-tracer分布式系...原创 2019-04-01 17:00:11 · 953 阅读 · 0 评论 -
go语言实现数据库访问
文章目录新建工程项目Test-demo在src下面新建文件mysql.go下载驱动引入包新建数据库连接操作数据库新增查询修改删除其它定义方法调用输出结果完整代码前提新建数据库userinfo,新建脚本DROP TABLE IF EXISTS `userinfo`;CREATE TABLE `userinfo` ( `autid` int(11) NOT NULL AUTO_INCREM...原创 2018-12-28 13:24:05 · 6011 阅读 · 0 评论 -
centos7 docker 安装企业版kong
1、安装postgrespostgres最新版本docker run -d --name kong-ee-database \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ postgres2、把申请的license导入环境变量参考网站https://konghq.com/kon...原创 2018-08-02 08:52:43 · 2330 阅读 · 0 评论 -
java并发基础(一)——线程简介
1.1、什么是线程?操作系统调度的最小单元是线程,也叫轻量级进程,在一个进程里面可以创建多个线程,这些线程都拥有各自的计数器、堆栈、局部变量等属性,能够访问共享变量一个java程序从main()方法开始执行,执行的只一个main线程 package cn.sunline.demo.dem2;import java.lang.management.ManagementFacto...原创 2018-07-18 08:40:23 · 675 阅读 · 0 评论 -
springboot 集成log4j 进程关闭
1、报错信息2018-07-17 18:53:38,267 Thread-2 WARN Unable to register Log4j shutdown hook because JVM is shutting down. Using SimpleLogger2、pom依赖<dependencies> <dependency> <grou...原创 2018-07-17 19:01:29 · 5614 阅读 · 0 评论 -
spring创建事物
TransactionAspectSupport类里面的createTransactionIfNecessary方法用于创建事物1、使用DelegatingTransactionAttribute封装传入的TransactionAttribute实例用于提供更多的功能2、获取事物事物处理当然是以事物为核心,获取事物就是最重要的事情2.1、获取事物创建对应的事物实例,这里使用的是DataSource...原创 2018-07-09 09:11:04 · 1058 阅读 · 0 评论 -
事物增强器
TransactionInterceptor支撑着整个事物功能的架构,TransactionInterceptor继承自MethodInterceptor,改类是从invoke方法开始1、获取事物的属性对于事物处理来说,最基础或者说最首要的工作是获取事物属性2、加载配置中配置的TransactionManager3、不同的事物处理方式使用不同的逻辑4、在目标方法执行前获取事物并收集事物信息5、执行...原创 2018-07-09 09:07:34 · 838 阅读 · 0 评论 -
springmvc-DisPatcherServlet初始化
在springmvc中真正实现逻辑的是在DisPatcherServlet中进行的,DisPatcherServlet是实现servlet接口的实现类,init()方法在其父类HttpServletBean中1、封装及安正初始化参数主要是对初始化的参数进行封装2、将当前servlet实例转化成BeanWrapper3、注册相对应Resource的属性编辑器4、属性注入BeanWrappper为sp...原创 2018-07-09 09:04:55 · 1168 阅读 · 0 评论 -
容器扩展功能(三)-扩展功能
在进入函数postProcessBeanFactory前,spring已经对配置文件进行了解析,ApplicationContext的扩展功能由此扩展一、增加SPEL语言的支持类似OGNL表达式语言,以#{...}作为定界符默认可以使用#{bean.xxx}的形式调用相关的属性二、增加对属性编辑器的支持1、使用自定义属性编辑器通过集成ProoertyEditorSupport,重写setAsTex...原创 2018-06-27 09:33:11 · 907 阅读 · 0 评论 -
spring cloud集成MongoDB
1、pom依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency&...原创 2018-05-29 08:56:05 · 13012 阅读 · 3 评论 -
spring 源码环境搭建,gradle转eclipse
1、安装gradle环境1.1、下载gradle http://services.gradle.org/distributions/ 我选择的版本为gradle-4.61.2、配置环境变量 GRADLE_HOME = E:\System\gradle-4.6-bin\gradle-4.6 ,path添加%GRADLE_HOME%\bin1.3、验证 gradle -v2、源码2.1、下载...原创 2018-05-29 20:05:10 · 792 阅读 · 0 评论 -
bean的加载-从bean的实例中获取对象
无论是从缓存中获取到的bean还是通过不同的scope策略加载的bean都只是最原始的bean状态,并不一定使我们想要的bean1、对FactoryBean正确性进行验证如果指定的name是工厂相关,就是以&为前缀的而且beanInstance又不是FactoryBean的类型则验证不通过2、对非FactoryBean不做任何处理3、对bean进行转换3.1、首先需要加载bean3.2、然...原创 2018-06-21 09:05:00 · 1063 阅读 · 0 评论 -
解析及注册BeanDefinitions
1、前置XmlBeanFactory解析文件转换成Document后,然后提取及注册bean2、核心逻辑解析以前的版本处理profile属性、处理解析是在这个类里面进行处理,现在交给doRegisterBeanDefinitions(Element root)来做3、解析bean在解析完xml后,开始解析bean4、bean处理...原创 2018-06-07 08:54:49 · 835 阅读 · 0 评论 -
bean标签的解析及注册-BeanDefintion
1、介绍BeanDefintion是一个接口,主要有三种实现ChildBeanDefinition(子bean)、GenericBeanDefinition(创建实例)、RootBeanDefinition(父bean)1.2、创建实例GenericBeanDefinition代码createBeanDefinition作用就是实现该功能1.3、createBeanDefinition创建承载属性...原创 2018-06-14 09:34:34 · 731 阅读 · 0 评论 -
springmvc+jsp转spring boot结构,前后端分离
1、前端1.1、页面迁移到resourecs,这个位置可以自己定义1.2、加入插件<build> <plugins> <!-- spring dev --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId&g原创 2018-06-14 10:50:25 · 4615 阅读 · 1 评论 -
bean的加载-获取单例和准备创建bean
1、获取单例如果缓存中不存在已经加载的单例bean,就需要重头开始bean的加载过程,在spring中AbstracBeanFactory的 getSingleton的重载方法实现了bean的加载1.1、检查缓存是否已经加载过,spring3.2是直接使用synchronized锁定需要同步的变量,4.0之后Object singletonObject = this.singletonObject...原创 2018-06-22 09:00:09 · 836 阅读 · 0 评论 -
spring源码解析--基础容器XmlBeanFactory 加载过程
一、demo示例1、实体类package cn.jin.test;public class MyTestBean { private String str = "this is test"; public String getStr() { return str; } public void setStr(String str) { this.str = str; }...原创 2018-05-31 17:32:31 · 810 阅读 · 0 评论 -
bean标签的解析及注册——BeanDefinitionHolder
1、默认标签的解析在parseBeanDefinitions(root, this.delegate),主要对import、alias、bean、beans进行不同的处理2、bean标签解析bean解析最为复杂2.1、解析通过BeanDefinitionParserDelegate的parseBeanDefinitionElement进行元素解析,并返回BeanDefinitionHolder,通...原创 2018-06-08 09:11:59 · 3133 阅读 · 0 评论 -
bean标签的解析及注册-registerBeanDefinition
1、注册DefaultBeanDefinitionDocumentReader类下的processBeanDefinition方法里面的BeanDefinitionReaderUtils.registerBeanDefinition解析2、BeanDefinitionReaderUtils下面的registerBeanDefinition用于注册bean第一步使用beanName作为标识注册第二步...原创 2018-06-15 09:06:01 · 11238 阅读 · 0 评论 -
容器功能扩展(一)
spring中提供了另外一个接口ApplicationContext,用于扩展BeanFactory,ApplicationContext提供了更堵的扩展功能一、设置路径配置文件路径可以以数组的方式传入,解析及功能实现都在refresh()中实现多配置文件,同时支持系统变量二、扩展功能2.1、初始化前的准备工作,例如对系统属性或者环境变量就行准备和验证2.2、初始化BeanFactory,并进行X...原创 2018-06-25 09:11:28 · 756 阅读 · 0 评论 -
bean的加载
bean的加载过程比bean的解析复杂的多,主要是AbstractBeanFactory下面的doGetBean方法实现1、转换对应的beanName传入的参数可能是bean的别名,也可能是FactoryBean,所以需要在这里转换2、尝试从缓存中加载单例单例在容器中只会创建一次,后面直接获取bean就行了,首先尝试从缓存中拿,如果不成功就从singletonFactories,因为创建单例存在依...原创 2018-06-19 09:38:16 · 881 阅读 · 2 评论 -
容器的功能扩展(二)-环境准备和加载BeanFactory
一、环境准备prepareRefresh方法主要是做一些准备工作,比如对系统属性及环境变量的初始化验证1.1、initPropertySources复合spring的开放式结构设计,最大扩展spring的能力,可以根据自身的情况重写initPropertySources方法,进行个性化处理1.2、validateRequiredProperties对属性进行验证,如果重写方法initPropert...原创 2018-06-26 08:54:13 · 647 阅读 · 0 评论 -
bean的加载-缓存中获取单例bean
单例只会在容器里面创建一次,后续获取bean直接从缓存中尝试获取,如果没有在尝试从singletonFactories中获取,创建bean的时候可能会出现依赖注入的情况,为了避免循环依赖,在还没有创建bean之前就会把bean的ObjectFactory加到缓存,依赖时,直接使用ObjectFactory就可以了1、具体的实现方法2、主要分为以下步骤一、检查缓存中是否存在实例二、实例如果为空,则锁...原创 2018-06-20 08:53:40 · 832 阅读 · 0 评论 -
Netflix Conductor fork 扩展
定义:调度并行任务集参数:名称描述forkTasks任务列表。每一个子列表并行执行,子列表中的任务是以串行方式进行执行的例子:{ "name": "fork_join", "taskReferenceName": "forkx", "type": "FORK_JOIN", "forkTasks": [ [ { &quo原创 2018-04-08 10:11:49 · 1454 阅读 · 0 评论