![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
文章
java圈
熟悉spring、springboot、springcloud、设计模式、ddd思想
展开
-
系统架构知识是架构师的常识而不是能力
互联网系统面临的挑战高并发、大流量QPS:每秒钟请求或者查询的数量,在互联网领域,指每秒钟请求数(指HTTP请求)吞吐量:单位时间没处理的请求数量(通常由QPS与并发数决定)响应时间:从...原创 2020-07-01 07:26:19 · 1032 阅读 · 2 评论 -
实战项目:设计实现一个流程编排框架(测试)
上几篇文章主要讲了《实战项目:设计实现一个流程编排框架(分析)》《实战项目:设计实现一个流程编排框架(设计》《实战项目:设计实现一个流程编排框架(实现)》,我们今天主要讲一下基于分析、设...原创 2020-06-25 13:05:26 · 1222 阅读 · 0 评论 -
实战项目:设计实现一个流程编排框架(快速入门)
上几篇文章主要讲了《实战项目:设计实现一个流程编排框架(分析)》《实战项目:设计实现一个流程编排框架(设计》《实战项目:设计实现一个流程编排框架(实现)》,今天主要做一个快速入门手册。代...原创 2020-06-25 13:05:26 · 2522 阅读 · 1 评论 -
实战项目:设计实现一个流程编排框架(实现)
上两篇文章主要讲了《[实战项目:设计实现一个流程编排框架(分析)(https://mp.weixin.qq.com/s/veLQZJqYNKbYvuCi7Pf_nA)]》《实战项目:设计...原创 2020-06-24 08:52:11 · 5782 阅读 · 6 评论 -
重新定义软件架构
什么是软件架构?软件架构是整体结构与组件的抽象描述,用于指导大型项目在各个方面的设计;分析图解:1、一个架构最重要的是相关方,相关方包括客户、老板、开发人员、测试人员、运维人员,和项目有...原创 2020-06-07 16:50:20 · 335 阅读 · 0 评论 -
框架设计之设计模式
来源于架构师训练营第三章,总结。我们都知道设计模式和基础设计原则是架构师掌握的基础知识,就是学java的人掌握java语法一个道理,那我们在日常开发工作中又怎么对待设计模式呢?我们会刻意...原创 2020-06-22 08:00:00 · 523 阅读 · 1 评论 -
实战项目:设计实现一个流程编排框架(分析)
最近几篇文章,我会带大家一起设计一个流程编排框架,从项目的分析、设计、实现、重构、测试方面去了解整个编排框架,也会用到一些设计开发原则及设计模式,话不多说,我们先来看下编排框架的一个背景...原创 2020-06-20 08:47:05 · 4923 阅读 · 0 评论 -
架构师训练营第一章总结
什么是软件架构?软件架构是整体结构与组件的抽象描述,用于指导大型项目在各个方面的设计;分析图解:1、一个架构最重要的是相关方,相关方包括客户、老板、开发人员、测试人员、运维人员,和项目有关的人都可以称之为相关方;2、相关方的关注点产生架构需求,整个架构基于关注点做分析;3、整个过程是为相关方做系统,系统提供的能力应该满足相关方;4、架构是系统的技术支持和实现,所有系统都是由架构支撑;5、架构升级需要架构文档的支撑,构架文档主要对相关方输出,作为架构的标准支撑;6、架构文档需要架构视图的组成原创 2020-06-10 16:45:04 · 388 阅读 · 0 评论 -
Daemon线程
1、简介Daemon线程是一种支持类型的线程,因为它主要被用作程序中后台调度以及支持性工作,这意味着,当一个java虚拟机中不存在非Daemon线程的时候,JAVA虚拟机将会退出,可以通过调用Thread.setDaemon(true)将线程设置为Daemon线程注意:Daemon属性需要在启动线程之前设置,不能再线程启动之后设置2、使用Daemon线程被用作完成支持性工作,但是在...原创 2018-07-19 08:59:51 · 3692 阅读 · 0 评论 -
Lock接口
锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。在lock接口出现之前程序是靠synchronized关键字实现锁功能,lock接口提供了与synchronized关键字类似的同步功能,只是在使用的过程中需要显示的获取和释放锁。缺点:缺少隐士获取释放锁的便捷性有点:拥有锁获取与释放的可操作性,可中断的获取硕=锁以及超市获取锁等特性适合Lock的...原创 2018-07-25 09:04:02 · 1405 阅读 · 0 评论 -
volatile和synchronized关键字
java支持多个线程访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝,所以在程序执行的过程中,一个线程看到的变量并不一定是最新的volatile:用来修饰成员变量,告知程序对成员变量的访问均需要从共享内存中获取,而对它 的改变必须同步刷新回共享内存,保证所有线程对变量访问的可见性synchronized:用于修饰方法或者同步块的形式使用,主要确保多个线程在同一时刻,只能有...原创 2018-07-20 08:58:47 · 1125 阅读 · 0 评论 -
go语言panic函数详解
程序异常被叫做panic,直译为运行时恐慌当panic被抛出异常后,如果我们没有在程序中添加任何保护措施的话,程序就会打印出panic的详细情况之后,终止运行panic: runtime error: index out of rangegoroutine 1 [running]:main.main()D:/go_workspace/Golang_Puzzlers/src/puzz...原创 2019-01-03 08:55:26 · 10958 阅读 · 0 评论 -
java并发基础(一)——线程简介
1.1、什么是线程?操作系统调度的最小单元是线程,也叫轻量级进程,在一个进程里面可以创建多个线程,这些线程都拥有各自的计数器、堆栈、局部变量等属性,能够访问共享变量一个java程序从main()方法开始执行,执行的只一个main线程 package cn.sunline.demo.dem2;import java.lang.management.ManagementFacto...原创 2018-07-18 08:40:23 · 661 阅读 · 0 评论 -
java内存模式-volatile
一、volatile写-读的内存语义定义:当写一个volatile变量时,JVM会把线程对应的本地内存中的共享变量值刷新至主内存volatile读的内存语义:当读一个volatile变量时,JVM会把该线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量总结:1、线程A写一个volatile变量,实质上是线程A向接下来要读volatile变量的某个线程发出消息2、线程B读一个volati...原创 2018-07-12 08:59:16 · 681 阅读 · 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 · 5565 阅读 · 0 评论 -
spring创建事物
TransactionAspectSupport类里面的createTransactionIfNecessary方法用于创建事物1、使用DelegatingTransactionAttribute封装传入的TransactionAttribute实例用于提供更多的功能2、获取事物事物处理当然是以事物为核心,获取事物就是最重要的事情2.1、获取事物创建对应的事物实例,这里使用的是DataSource...原创 2018-07-09 09:11:04 · 1052 阅读 · 0 评论 -
事物增强器
TransactionInterceptor支撑着整个事物功能的架构,TransactionInterceptor继承自MethodInterceptor,改类是从invoke方法开始1、获取事物的属性对于事物处理来说,最基础或者说最首要的工作是获取事物属性2、加载配置中配置的TransactionManager3、不同的事物处理方式使用不同的逻辑4、在目标方法执行前获取事物并收集事物信息5、执行...原创 2018-07-09 09:07:34 · 827 阅读 · 0 评论 -
springmvc-DisPatcherServlet初始化
在springmvc中真正实现逻辑的是在DisPatcherServlet中进行的,DisPatcherServlet是实现servlet接口的实现类,init()方法在其父类HttpServletBean中1、封装及安正初始化参数主要是对初始化的参数进行封装2、将当前servlet实例转化成BeanWrapper3、注册相对应Resource的属性编辑器4、属性注入BeanWrappper为sp...原创 2018-07-09 09:04:55 · 1155 阅读 · 0 评论 -
为什么要使用ConcurrentHashMap
在线程并发中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率非常低1、线程不安全的HashMap在多线程,使用HaspMap就行put操作会引起死循环,导致cpu100%。所在在并发情况不能使用HashMappackage com.demo.demo4;import java.util.HashMap;import java.util.UUID;...原创 2018-07-26 09:01:36 · 2611 阅读 · 1 评论 -
线程等待通知机制
等待通知机制,是指一个线程A调用了对象O的wait方法进入等待状态,而另一个线程调用了对象O的notify或者notifyAll方法,线程A收到通知后从对象O的wait方法返回,进而执行后续操作方法名称 描述 notify() 通知一个在对象上对待的线程,使其从wait方法返回,而返回的前提是该线程获取到了对象的锁 notifyAll() 通知所有等待在该对象上的线程...原创 2018-07-23 09:06:01 · 1260 阅读 · 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 · 2299 阅读 · 0 评论 -
mysql 删除数据库恢复
这几天看到几篇关于数据恢复的文件,没有实际操作过,先留着,关键时候可以保命。原文:https://dba.stackexchange.com/questions/23251/is-there-a-way-to-recover-a-dropped-mysql-database链接:http://dba.stackexchange.com/questions/23251/is-翻译 2018-02-05 16:39:05 · 6233 阅读 · 0 评论 -
利用jdk1.8的stream,让你的代码上升一个层次
文章公众号连接:https://mp.weixin.qq.com/s/m5Knf35LFH5DZEiqUsUMqw简介jdk1.8新增了一个接口类stream,和我们之前接触的字节流概念不一样,stream相当于高级版的Iterator,可以通过lambada表达式对集合就行各种遍历高效的聚合操作,或者大批量的数据操作。stream:数据串行操作parallelStream:并行操作,在多...原创 2019-06-06 16:31:19 · 471 阅读 · 0 评论 -
Spring boot集成Nacos-配置中心详解
该文档是基于spring cloud版本进行开发。Nacos持久化可以参考:https://mp.weixin.qq.com/s/6khhRU46J2kFJKUBuDyTGQ项目集成依赖最新版本可以参考https://github.com/spring-cloud-incubator/spring-cloud-alibaba/releases<dependency> <...原创 2019-04-15 13:46:41 · 10124 阅读 · 0 评论 -
nacos持久化及服务注册
#一、Nacos服务端安装最新版本下载地址:https://github.com/alibaba/nacos/releases访问:http://127.0.0.1:8848/nacos用户名/密码:nacos/nacos二、Nacos持久化nacos默认是把数据保存在本地磁盘文件读取mysql脚本脚本在下载的服务端\nacos\conf\nacos-mysql.sqlmysq...原创 2019-04-15 13:42:52 · 4239 阅读 · 0 评论 -
基于Nacos实现Spring Cloud Gateway实现动态路由
简介该文档主要介绍以Nacos为配置中心,实现Spring Cloud GateWay 实现动态路由的功能。Spring Cloud Gateway启动时候,就将路由配置和规则加载到内存里,无法做到不重启网关就可以动态的对应路由的配置和规则进行增加,修改和删除。通过nacos的配置下发的功能可以实现在不重启网关的情况下,实现动态路由。集成Spring Cloud GateWay集成spri...原创 2019-04-15 13:38:23 · 46363 阅读 · 21 评论 -
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 · 30161 阅读 · 29 评论 -
springboot源码解析-SpringApplication
说明用过springboot的人应该都知道SpringApplication做boot的一个启动点,但是有多少人知道这个类做了多少事情?我们来看下源码里面的解释:可以通过java主程序(main)来启动spring应用,执行时需要按照以下步骤执行:1、创建一个实例应用也就是程序;2、注册一个资源文件来执行spring属性也就是ResourceLoader需要做的事情;3、刷新应用程序的...原创 2019-04-17 08:37:13 · 564 阅读 · 0 评论 -
企业级基础框架搭建-前期准备
主流框架调研主流微服框架sofa开源地址:https://github.com/alipay/sofa-boot开源公司:蚂蚁金服框架简介:sofa是一系列基础组件统称,底层sofa-boot是以Spring Boot研发,提供健康检查、日志隔离、类隔离等能力;sofa-rpc高可扩展性、高性能、生产级的 Java RPC 框架,提供了丰富的微服务治理方案;sofa-tracer分布式系...原创 2019-04-01 17:00:11 · 937 阅读 · 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 · 5985 阅读 · 0 评论 -
容器扩展功能(三)-扩展功能
在进入函数postProcessBeanFactory前,spring已经对配置文件进行了解析,ApplicationContext的扩展功能由此扩展一、增加SPEL语言的支持类似OGNL表达式语言,以#{...}作为定界符默认可以使用#{bean.xxx}的形式调用相关的属性二、增加对属性编辑器的支持1、使用自定义属性编辑器通过集成ProoertyEditorSupport,重写setAsTex...原创 2018-06-27 09:33:11 · 902 阅读 · 0 评论 -
bean的加载-缓存中获取单例bean
单例只会在容器里面创建一次,后续获取bean直接从缓存中尝试获取,如果没有在尝试从singletonFactories中获取,创建bean的时候可能会出现依赖注入的情况,为了避免循环依赖,在还没有创建bean之前就会把bean的ObjectFactory加到缓存,依赖时,直接使用ObjectFactory就可以了1、具体的实现方法2、主要分为以下步骤一、检查缓存中是否存在实例二、实例如果为空,则锁...原创 2018-06-20 08:53:40 · 821 阅读 · 0 评论 -
容器的功能扩展(二)-环境准备和加载BeanFactory
一、环境准备prepareRefresh方法主要是做一些准备工作,比如对系统属性及环境变量的初始化验证1.1、initPropertySources复合spring的开放式结构设计,最大扩展spring的能力,可以根据自身的情况重写initPropertySources方法,进行个性化处理1.2、validateRequiredProperties对属性进行验证,如果重写方法initPropert...原创 2018-06-26 08:54:13 · 636 阅读 · 0 评论 -
kafka+elasticsearch+logstash+kibana环境搭建
环境准备jdk1.8、kafka2.11(kafka-manage可选)、zookeeper3.4.10、logstash5.4.6、kibana5.4.6、elasticsearch(head插件,ik中文分词插件)1、jdk安装yum install java-1.8.0-openjdk2、安装kafka修改配置文件vi /usr/local/kafka/config/server.prope...原创 2018-03-31 12:19:50 · 2359 阅读 · 1 评论 -
Netflix Conductor fork 扩展
定义:调度并行任务集参数:名称描述forkTasks任务列表。每一个子列表并行执行,子列表中的任务是以串行方式进行执行的例子:{ "name": "fork_join", "taskReferenceName": "forkx", "type": "FORK_JOIN", "forkTasks": [ [ { &quo原创 2018-04-08 10:11:49 · 1436 阅读 · 0 评论 -
spring cloud整合thymeleaf,实现简单登录
1、pom依赖<!-- springboot模板 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependen...原创 2018-03-01 16:36:59 · 4984 阅读 · 6 评论 -
spring cloud 使用maven-assembly-plugin打zip包
1、pom文件<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <confi原创 2018-02-27 09:28:07 · 1941 阅读 · 5 评论 -
spring boot + Schedule简单定时任务实现
1、启动类加注解@EnableSchedulingpackage cn.sunline.insd.sso.service;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.sp原创 2018-02-05 15:30:14 · 1043 阅读 · 1 评论 -
spring cloud log4j日志输出到同步kafka
1、jar包依赖 org.springframework.kafka spring-kafka org.apache.kafka kafka-clients 0.9.0.12、application.yml配置文件#指定log配置#需要把日志传到kafka用文件log4j2-kafka.xml,如果不用则使用log4j2-pro.xm原创 2018-02-05 15:59:44 · 4092 阅读 · 0 评论 -
spring boot +commons-io实现文件监控
1、pom文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://mave原创 2017-12-19 08:49:30 · 7895 阅读 · 0 评论