中文文档(很详细) Redisson的中文文档写的非常详细,所以本文主要记录简单使用过程中遇到的一些问题 1. 原生api的使用依赖引入: 12345<d
1. 需求分析难点在于,请求一个接口时,怎么确定当前请求的接口所对应的权限记录 request对象如下图: 所以可以根据request的path进行判断。 数据
LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。 Liqu
文章目标: 1、了解任务调度的应用场景和 Quartz 的基本特性 2、掌握 Quartz Java 编程和 Spring 集成的使用 3、掌握 Quartz
老版本的netty,AbstractChannelHandlerContext 有两个bool属性InBound 和outBound,InBound=true表
nacos通过pull+push结合的方式,来保证服务状态的更新,大致流程如下图所示 消费者应用启动时,会开启一个UpdateTask,每隔10s会向nacos
两种一致性策略如何在nacos中共存 或许会有疑问,为什么早先的cp模式的Zookeeper或者AP模式的Eureka,都只有支持CAP理论下大家常用的AP实现
注册中心需要的核心功能: 服务提供者将服务信息发布到注册中心,此处涉及到服务信息的数据结构设计及存储 服务消费者能够从注册中心获取所需服务的实例信息 注册中心需
单节点部署下载最新版本的nacos release包,官方给的百度云盘连接: https://pan.baidu.com/s/1186nmlqPGows9gUZ
https://developer.ibm.com/zh/articles/j-cn-with-reactor-response-encode/ 1. 理论基础
复习总结: 注解式事务是通过aop实现的,底层是cglib动态代理实现的 事务aop场景中的Advice是TransactionInterceptor Poin
目标: 1、掌握redis主从复制的配置和原理 2、掌握redis哨兵机制的原理和实战 3、掌握redis分布式的各种方案对比,包括客户端sharding、代理
SpringCloud-分布式事务Seate-ATSeata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布 式事务服务。在 Seata 开源之前,Seata 对应的内部版本在阿
目标: 1、读写分离 2、XA事务 3、总计架构流程分析
目标: 1、掌握不同数据分片策略的配置方式与特点 2、Mycat扩缩容与数据导入导出 3、理解Mycat注解的作用于应用场景 1. 分片策略详解1.1 Myca
目标: 1、通过实际案例掌握 Mycat 特性与详细配置含义 2、了解 Mycat 监控与日志查看 1. Mycat 概念与配置1.1 Mycat介绍与核心概念
目标: 1、理解分库分表的意义 2、理解数据切分的不同方式,以及带来的问题与解决方案 1、为什么要分库分表随着业务变得越来越复杂,用户越来越多,集中式的架构性能
我们在看框架源码的时候,如果没有注释,看起来会比较吃力。所以如果能够一边看源码一边自己加中文注释,下次阅读的时候就会轻松很多。 问题是:通过maven下载的ja
rpc 全称remote procedure call 远程过程调用,是一种分布式服务调用协议。 需求:分布式环境下,服务A想要调用服务B的某方法,就像调用自己
转载地址 CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻
贴一下配置好的logstash配置文件 12345678910111213141516171819202122input{ tcp{ por
ElasticSearch部署下载解压改配置文件/config/elasticsearch.yml 12345cluster.name: my-applicat
在一个完整的信息系统里面,日志系统是一个非常重要的功能组成部分。它可以记录下系统所产生的所有行为,并按照某种规范表达出来。我们可以使用日志系统所记录的信息为系统
全局ID的要求 全局唯一性 有序的递增性 高可用性 时间上的特性 全局ID的实现方式 UUID,32个字符, 4个横线 18 - 4-4-4- 12 UUI
原文链接 所谓热key问题就是,突然有几十万的请求去访问redis上的某个特定key。那么,这样会造成流量过于集中,达到物理网卡上限,从而导致这台redis的服
先上一张官网的架构图,本文将按照架构图中的组件逐一分析。 1. buffer pool按照局部性原理,将预期会使用到的数据缓存到内存中,避免每次读取数据都需要进
原文链接:https://mp.weixin.qq.com/s/-Hx2KKYMEQCcTC-ADEuwVA 为什么我的事务提交了,还会丢失数据呢? 这要从in
1、单实例安装1.1、下载redis下载地址在:redis.io 首页 如果从官网下载慢,可以把链接贴到迅雷下载,再传到虚拟机: 12cd /usr/local
Redis系统介绍: Redis的基础介绍与安装使用步骤Redis的基础数据结构与使用Redis核心原理Redis 5 之后版本的高可用集群搭建Redis 5
原文链接 发展史 1、 很久很久以前,Web基本上就是文档的浏览而已,既然是浏览,作为服务器,不需要记录谁在某一段时间里都浏览了什么文 档,每次请求都是一个新的
典型的事务场景:下单、转账 事物的定义:事务是DBMS执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成 MYSQL中支持事务的数据引擎:innodb n
重读总结: 事件传播方法,以fireChannelActive()为例,这个方法是定义在ChannelInboundInvoker接口中的,AbstractCh
数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询更新数据库表中数据 索引类型:normal普通索引、unique唯一索引、全文索引 普通索引:也叫
重读总结: 客户端的通道是由服务器创建的,当主线程监听到Accept事件,会进入事件处理流程,创建客户端通道 子通道的生命周期 创建——初始化——注册 创建,主
重读总结: 想要更好的理解服务启动流程,就要明白netty的线程模型——reactor模型,主线程负责接受新连接,只监听主线程selector上注册的ACCEP
netty的异步编程模型异步编程的目标是:提交一个任务给线程池,在任务执行期间,提交者可以执行其他的逻辑,当提交的任务执行完成,通知提交者来获取执行结果 net
1、时间计算上的优化ScheduledFutureTask使用一个成员变量deadlineNanos记录定时任务延迟执行的时间,所以延时时间是从创建任务开始计算
一个NioEventLoop对应于Reactor模型中的一个从Reactor线程,它持有一个Thread引用,可以简单将NioEventLoop理解为一个用于处
nio非阻塞牛逼在哪里? 要解答这个问题首先要清楚bio的痛点在哪里。 假如我们的服务使用bio模型,服务器启动之后需要一条线程一直监听端口上是否有连接请求发过
git上每次提交,Commit message 都包括三个部分:Header,Body 和 Footer。 12345<type>(<scop
从一个业务场景开始:从本地磁盘读取一个文件通过socket发送出去。(kafka消费场景) 传统的I/O接口处理流程如下:读文件到应用->应用打包文件到s
1.MAC安装步骤 从github上下载protobuf3 protobuf3下载地址 有很多语言版本的,mac下选择第一个。 下载下来后解压压缩包,并进入目录
1、String存储类型: 可以用来存储int、float、string 存储实现原理: redis是KV数据库,最外层是通过Hashtable实现的,我们称为
从理论上来说,设置过期时间是保证缓存数据库最终一致性的解决方案。在这种方案下,我们可以对存入缓存的数据设置过期时间,所有写操作以数据库为准,对缓存操作知识尽最大
本文围绕以下几个主题: 1、为什么使用redis2、使用redis有什么缺点3、单线程的redis为什么这么快4、redis的数据类型,以及每种数据类型的使用场
多个线程同时读写,读线程的数量远远⼤于写线程,你认为应该如何解决并发的问题?你会选择加什么样的锁? JAVA的AQS是否了解,它是⼲嘛的? 除了synchron
1. 分布式事务简介X/Open Distributed Transaction Processing Reference Model 是X/Open这个组织定
由于分布式消息队列对于可靠性的要求比较高,所以需要保证生产者将消息发送到broker之后,保证消 息是不出现丢失的,因此消息队列就少不了对于可靠性存储的要求。
阿里巴巴在2012年开源,2017年成为apache顶级项目 核心设计几件了kafka,所以我们在了解rockeetMq时会发现很多和kafka相同的特性。同时
1、安装docker第一步:卸载之前的docker 12345678sudo yum remove docker \ docker-client \ docke
需求:redis中缓存了一些状态量,业务需要时刻关注状态量变化 方案一:轮询检查(各方面性能太差) 方案二:redis提供的键空间通知机制(redis主动推送,
redis的数据持久化功能默认是没有开启的,当我们kill掉redis-server进程并重启后,此前所有的缓存数据都会丢失,所以为了防止redis服务器宕机而
MySQL8.0和MySQL5.7具有众多不同之处,此处不述。这里,只简单讲讲在安装过程中遇到的问题之一和解决办法: MySQL8.0安装完成之后的默认密码是多
SpringCloud-sleuth&zipkin实现链路监控在微服务系统中,随着业务的发展,系统会变得越来越大,那么各个服务之间的调用关系也就变得越来越复杂。一个 HTTP 请求会调用多个不同的微服务来处理返回最后的结果
SpringCloud-Gateway过滤器源码分析Spring-Cloud-Gateway的过滤器接口分为两种: GlobalFilter : 全局过滤器,不需要在配置文件中配置,作用在所有的路由上,最终通过G
为什么需要配置中心? 分布式微服务架构,当一个服务存在多个实例分布在不同的服务器上,需要对该服务进行配置变更时,需要逐个服务器进行配置,并需要重启服务。配置中心
在微服务架构中,每个服务都是一个可以独立开发和运行的组件,而一个完整的微服务架构由一系列独 立运行的微服务组成。其中每个服务都只会完成特定领域的功能,比如订单服
Hystrix实现核心 可配置化的降级策略 信号量、线程实现资源隔离,超时降级,熔断降级 HystrixCommandProperty 可以识别的降级边界 @H
1. 实体对象分类1.1 领域模型中的实体分类VO (View Object) 视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。 D
由于 RabbitMQ 实现了 AMQP 协议,所以 RabbitMQ 的工作模型也是基于 AMQP 的,理解这张图片至关重要。 rabbit的概念Broker
一、下载erlang和rabbitmq-server的rpm:erlang-19.0.4-1.el7.centos.x86_64.rpm rabbitmq-se
如何保证消息可靠性投递 从四个环节分析 生产者把消息发送到broker,怎么知道自己的消息有没有被broke接收? 消息从交换机路由到queue,如果消息没有办
*设计思想:*执行流程:Registry 名词 登记处、挂号处 Registration 名词 登记、注册、挂号 EurekaServiceRegistry 这
常用的注册中解决方案: Eureka 非持久化存储、ap模型、去中心化集群模式 Zookeeper zab协议 Consul Nacos Redis Etcd
一个topic的多个partition在物理磁盘上的保存路径,路径保存在 /tmp/kafka-logs/topic_partition,包 含日志文件、索引文
Feign能实现什么: 远程调用 负载均衡 在Feign之前,我们使用RestTemplate + Ribbon 来处理服务的远程调用和负载均衡,那为什么要重新
每个topic可以划分多个分区partition,同一个topic下的不同分区存储的消息是不重复的。在每个消息被分配给一个分区时,会生成一个偏移量offset,
客户端的负载均衡解决的问题:从配置文件或注册中心获取需要调用的服务列表,使用指定的算法选择一个服务实例,发送调用请求。 流程总结: 从RestTemplate.
kafka虽然可以对topic进行分片,但是对于partition来说,它还是单点的,当partition所在的broker宕机了,那么这部分消息就无法被消费。
当出现以下几种情况时,kafka会进行一次分区分配操作,也就是kafka consumer的rebalance 同一个consumer group内新增了消费者
每台主机都需要安装jdk 本文版本jdk-1.8.0_231 需要搭建好的zookeeper集群 本文zookeeper环境:192.168.2.112:218
1. 消息队列通信的模式通过上面的例子我们引出了消息中间件,并且介绍了消息队列出现后的好处,这里就需要介绍消息队列通信的两种模式了: 1.1 点对点模式如图所示
nio过程: channel注册到selector的时候会指定该通道需要selector监听的事件类型 发送程序使用channel向fd中写入数据,完成之后fd
Zookeeper的每一个节点,都是一个天然的顺序发号器。 在一个节点下面创建子节点时,只要选择的创建类型是有序(EPHEMERAL_SEQUENTIAL 临时
同步、异步,阻塞、非阻塞,这四种状态常分不清,主要是这四种状态的定义本身也不是很明确,所以各种解答的方式都有。常见的分类有以下: 同步阻塞IO — BIO (j
SpringCloud-分布式事务Seate-TCC1、基本流程AT就是把每个数据库当做一个 Resource,在本地事务提交时会去注册一个分支事务。 那么对应到 TCC 模式里,也是一样的,Seata 框架把每
1. 配置开机自启把zookeeper做成服务 1、进入到/etc/rc.d/init.d目录下,新建一个zookeeper脚本 1234[root@node1
分布式一致性问题: 1. 什么是 ZooKeeper1.1 ZooKeeper 的由来下面这段内容摘自《从Paxos到Zookeeper 》第四章第一节的某段内
Dubbo是以URL驱动的框架,因此本片将跟踪URL的传递以及处理来分析整个服务订阅的流程 消费者在createProxy()方法中,创建了第一个url URL
1、设计思想要实现服务消费,需要考虑以下问题: 生成远程服务的代理 获得目标服务的url地址 实现远程通信 实现负载均衡 实现集群容错 2、注解解析Dubbo的
dubbo在2.7版本之前只配备了注册中心,2.7中新增的功能-配置中心和元数据中心,因此dubbo现在拥有三大中心,指的是注册中心、元数据中心和配置中心。 注
SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services
复习总结: 1、 自适应扩展机制是为了能够在支持多协议的dubbo框架中根据配置灵活的加载对象,主要使用到了@SPI和@Adaptive两个注解 2、@SPI注
1 设计思想dubbo是基于url驱动的rpc框架 所以在服务启动之后,需要针对指定的协议生成url,若指定了多协议则生成多个url。 生成url并启动本地的服
由于dubbo社区较为活跃,版本更新快,在spring-cloud-alibaba之后,spring-boot-dubbo的使用有一些改动,本文代码示例基于du
ShardingSphere官网 1. 分片核心概念在我们用 Sharding-JDBC 之前,有一些核心概念是必须掌握的。 可以查看官网文档,很详细。 逻辑表
在Mybatis原生的API中,有三个对外提供的核心对象 SqlSessionFactory SqlSession getMapper()方法返回的代理对象(包
经过解析阶段,我们获得了一个填充完整的Configuration对象,对象中有一个名为mappedStatements的Map<String, Mappe
插件作用:在不修改mybatis代码和api调用方式的前提下,对调用进行拦截,增加一些特殊的需求 插件可以拦截的对象: Executor StatementHa
复习总结: mybatis通过sqlSession调用方法来执行sql查询,sqlSession是由单例对象sqlSessionFactory创建的 单例对象s
上下文刷新阶段主要做什么事呢? 注册beanDefinition。 beanDefinition来自哪里? 引用的spring-boot-starter jar
贴一段最常见的传统Jdbc数据访问代码: 1234567891011121314151617181920212223242526public class Jdb
在学习Context之前我们得先区分一下ApplicationContext和BeanFactory两者之间的关系。 在我们的理解中,容器应该是一个空间的概念,
环境对象用来干什么的? 环境对象用来收集项目的各种配置,并且可以做到在不同环境(开发环境、测试环境、生产环境)中,这些配置可以很方便的切换。 在数据结构的设计上
springboot启动过程分为几个步骤,准备环境-准备上下文-上下文刷新(ioc容器初始化),在每个步骤前后,主流程会触发一些事件的发布,启动初期注册好的一系
虚拟机-vagrant&virtualBox使用说明vagrant是一个工具,用于创建和部署虚拟化开发环境的,能与virtualVM、virtualBox等虚拟机软件搭配使用。 拿VirtualBox举例,Vir
参考: Vagrant的配置文件Vagrantfile详解 1、box设置1config.vm.box = "centos7" 该名称是再使
SpringCloud-服务降级组件Hystrix目标: 为了避免单点服务故障造成服务雪崩,需要引入服务熔断功能 Hystrix是在服务调用者中使用,所以调用链最底层的服务无需使用 虽然Eureka-clien
Zuul是Netflix开源的微服务网关,可以和Eureka、Ribbon、Hystrix等组件配合使用,Spring Cloud对Zuul进行了整合与增强。
http特点: 无连接 每次连接只处理一个请求 无状态 每次处理的都是单独的请求,没有上下文概念 可以传输多种数据类型 支持BS/CS http关键点1、URL
原文地址 1、缘起一切脱离业务的架构设计与新技术引入都是耍流氓。 引入一个技术之前,首先应该解答的问题是,这个技术解决什么问题。 就像微服务分层架构之前,应该首
基础概念: 方法区:jvm规范中的定义,指一片内存区域,用于存放加载到内存中的类信息、常量池等。 永久代:JDK1.7(含)之前方法区的实现方式,使用永久代实现
传统java编程中如果想要在程序中发起http请求有哪些做法?开源的http工具包有很多,OkHttp、HttpClient、jdk自带的等等,使用这些工具并不
对象内的布局是:最前面是对象头,有两个VM内部字段:_mark 和 _klass。 后面紧跟着就是对象的所有实例字段,紧凑排布,规则如下: 继承深度越浅的类所声
SpringBoot-注解@ConfigurationProperties的正确使用姿势1. 前言在编写项目代码时,我们要求更灵活的配置,更好的模块化整合。在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 applicat
为什么需要动态sql? 我们通常会把多种条件查询放在一个接口中,后端接口不知道前端回会传什么参数,所以要将所有的参数类型考虑在内,执行之前根据传入参数类型动态的
结构型—-装饰器模式也叫包装模式,是指再不改变原有对象的基础上将新功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原对象功能) 优点: 完全符合开闭原则
应用后台调用统一下单接口时需要指定回调的notify_url,微信支付平台执行统一下单后,会调用该url,发送一个异步通知给应用后台,同时后台需要调用查询微信后
一个问题引发的思考如果确定只装载100个元素,new HashMap(?)多少是最佳的,why?要解答这个问题,第一要知道HashMap的数据结构,第二再弄明白
@Transactional 注解什么情况下会失效? 数据库引擎不支持事务 @Transactional注解的方法,在类内部被调用 @Transactional
ShiroFilter的实现原理: Shiro对servlet容器的FilterChain进行了代理,在执行Servlet容器的Filter链之前,通过Prox
在涉及到密码存储问题上,应该加密 / 生成密码摘要存储,而不是存储明文密码。比如之前的 600w csdn 账号泄露对用户可能造成很大损失,因此应加密 / 生成
场景:用户的角色不同,有不同的接口访问权限。 支持多种登录方式(用户名登录、手机号登录、ldap登录) 支持密码散列存储 支持黑名单 防暴力破解 api限流 支
异步编程的目标是:提交一个任务给线程池,在任务执行期间,提交者可以执行其他的逻辑,当提交的任务执行完成,通知提交者来获取执行结果 jdk并发包中的异步编程是通过
垃圾对象检测: 引用计数 可达性分析 GC root由哪些对象组成 本地方法栈中引用的对象 虚拟机栈中引用的对象 方法区中类变量引用的对象 方法区中的常量引用的
1、类加载器的分类 Bootstrap ClassLoader 负责加载$JAVA_HOME中的 jre/lib/rt.jar里面所有的class 或者 Xbo
在JDK的并发包中提供了几个非常有用的并发工具类。CountDownLatch、CyclicBarrier和Semaphore提供了并发流程控制手段,Excha
我现在已经了解了类的装载机制,当需要装载一个class时,会经历以下步骤: 通过全类名获取字节码文件的字节流 将字节流所代表的静态存储结构转换为方法区的运行时数
下图描述的是jvm加载类过程的一个逻辑顺序,具体的执行顺序不一定如下图所示,不同版本的虚拟机有不同的实现方式,本文将按照逻辑顺序逐步分析类加载过程中都发生了什么
CSDN上亦山整理的文章,非常有助于理解,目录如下 《Java虚拟机原理图解》 1、class字节码文件 1.1、class文件基本组织结构 1.2、c
上篇文章详细的阐述了AQS在独占模式下的底层原理,本篇主要讲述共享式同步器的原理。 1. acquireShared(int)此方式是共享模式下线程获取贡献资源
Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器
参数验证是一个常见的问题,无论是前端还是后台,都需对用户输入进行验证,以此来保证系统数据的正确性。对于web来说,有些人可能理所当然的想在前端验证就行了,但这样
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内
阻塞队列常用于生产者-消费者场景。 BQ有4套出队入队操作: offer(e) & poll() 这套操作不会阻塞线程,队列满/空的时候返回特殊值 fa
并发编程-容器ConcurrentHashMap源码分析1.重要的属性首先来看几个重要的属性,与HashMap相同的就不再介绍了,这里重点解释一下sizeCtl这个属性。可以说它是ConcurrentHashMap中
阿里巴巴Java手册有一条: 【强制】线程资源必须通过线程池提供,禁止在应用程序中显示创建线程。 说明:使用线程池的好处是减少在创建和销毁线程上所花的时间以及系
1. 框架概述AQS是AbstractQueuedSynchronizer的简称,抽象队列同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类的实
批量插入12345678910111213@Insert("<script>" + "INSERT INTO patent_post_info(pa
本文基于spring-boot版本2.1.4.RELEASE首先使用spring-boot-starter-web构建一个web项目,编写代码如下: 12345
1 基础知识1.1 锁的宏观分类锁从宏观上分类,可以分为悲观锁与乐观锁。 乐观锁是一种乐观思想,认为读多写少,遇到并发写的可能性低。每次读数据的时候,都认为别的
中断标志就是线程对象的一个成员变量,它表示一个运行中的线程是否被被其他线程进行了中断操作。中断好比其他线程对该线程打了个招呼,其他线程通过调用该线程对象的int
ThreadLocal是一个本地线程副本变量工具类,ThreadLocal的实例代表了一个线程局部的变量,主要用于将私有线程和该线程存放的副本对象做一个映射,各
orm框架需要解决的问题之一就是数据库中的数据类型与java数据类型相互转换,以Mysql为例: JdbcType.Varchar类型与String类型需要相互
1. 线程状态转换重点注意: Waiting和 Blocked 从linux内核来看,线程Waiting和 Blocked都是等待状态,都是暂停线程,都需要进行
Mybatis-MyBatisGenerator的使用使用MyBatisGenerator可以根据数据库中的table自动生成entity、dao以及mapper映射器文件,简单配置就能实现 首先引入依赖: 123
1. 命名SpringBoot提供的starter以spring-boot-starter-xxx的方式命名的。 官方建议自定义的starter使用xxx-sp
1 概述1.1 简介1.1.1 名词解释公有IP地址:也叫全局地址,是指合法的IP地址,它是由NIC(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外
正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。 但很神奇的是:无论
java-SimpleDateFormat的用法以及线程安全开发中我们经常会用到时间相关类,我们有很多办法在Java代码中获取时间。但是不同的方法获取到的时间的格式都不尽相同,这时候就需要一种格式化工具,把时间显示成我们
在开发过程中,如果要测试某个service类的接口,按照以下流程操作: 引入依赖: 12345<dependency> <groupId>
结构型—享元模式,提高对象的复用性质,避免创建过多的重复对象 实现方式 池化,将享元对象存放到一个集合中,与工厂方法配合获取/回收享元对象 经典案例:抢票案例、
Delegate Pattern 又叫委托模式,是一种面向对象的设计模式,允许对象组合实现与及城乡同的代码重用。它的基本作用就是负责任务的调用和分配,是一种特殊
文章以jdk并发包中的一个策略模式实现作为开篇。 使用线程池处理并发任务时,当用户提交任务到线程池,线程池因为线程池已满或者线程池处于SHUTDOWN状态拒接任
@SpringBootApplication我们经常直接将@SpringBootApplication打在了主类上,其实更加清晰的写法应该是将主类和Spring
tail显示文件的末尾部分,默认显示10行 举例:看日志文件时 1tail -fn 30 xxxx.log
nohup 是 no hang up 的缩写,就是不挂断的意思。 nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以 使用
1.建表时创建12345678CREATE TABLE test( test_id SERIAL primary key , test_name charact
1、合成复用原则合成复用原则(Composite/Aggregate Reuse Principle,CARP) 是指尽量使用对象组合(has-a)/ 聚合(c
在java代码优化时一般会遵循一个原则, 尽量使用移位来代替’a/b’和’a*b’的操作,这两个操作代价很高,使用移位操作将会更快更有效。 1、三种移位操作 “
代理模式提供了目标对象另外的访问方式,在不修改目标类型的基础上对目标类型进行扩展,符合设计模式中遵循的开闭原则,对扩展开放,对修改关闭。 1. 静态代理静态代理
许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对
logback是java的日志开源组件,是log4j创始人写的,性能比log4j要好,目前主要分为3个模块 logback-core:核心代码模块 logbac
静态工厂和构造器有一个共同的局限性:不能很好的扩展到大量的可选参数。对于初始化参数很多的类,常规的做法是使用重载构造器,但是当参数很多的时候,客户端代码会很难写
1. 简单工厂根据客户端传入的参数进行判断,再决定创建哪种实例,缺点很明显: 传参错误则不能创建正确的实例 扩展需要修改工厂方法 2.工厂方法在工厂类中定义若干
1、简介Log4j有三个主要的组件: Loggers(记录器):日志类别和级别; Appenders (输出源):日志要输出的地方; Layouts(布局):日
1 java常用日志框架类别介绍 Log4j Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软
1. 下载选择zip格式的压缩包,解压到指定盘中D:\mysql-5.7 2. 配置环境变量MYSQL_HOME:D:\mysql-5.7在path 后面添加