自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1082)
  • 资源 (2)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Spring——基础面试题

1. 什么是Spring?Spring 是个 java 企业级应用的开源开发框架。Spring 主要用来开发 Java 应用,但是有些扩展是针对构建 J2EE 平台的 web 应用。Spring 框架目标是简化 Java 企业级应用开发,并通过 POJO 为基础的编程模型促进 良好的编程习惯。2. 使用Spring框架的好处是什么?轻量:Spring是轻量的,基本的版本大约2MB控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或者查找依赖的对象们面向切面编程(A

2020-09-17 22:25:21 244

原创 Redis——基础面试

1. 什么是Redis?简述它的优缺点Redis 的全称是:Remote Dictionary.Server,本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘 上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value DB。Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个

2020-09-14 17:51:28 45

原创 并发编程——面试题

Synchronized相关问题1. Synchronized 用过吗,其原理是什么?Synchronized是由JVM实现的一种实现互斥同步的一种方式,如果你查看被Synchronized修饰过的程序块编译后的字节码,会发现被Synchronized修饰过的程序块,在编译前后生成了monitorenter和monitorexit两个字节码指令。虚拟机执行到monitorenter指令时,首先要尝试获取对象的锁:如果这个对象没有锁定,或者当前线程已经拥有了这个对象的锁,把锁的计数器+1;当执行mon

2020-09-12 23:16:09 111

原创 悲观锁与乐观锁

悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里面就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上 锁,但是在更新的时候会判

2020-09-12 01:20:57 49

原创 JVM——基础面试题

1. 内存模型以及分区JVM分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,class类信息常量池(static常量和static变量)等放在方法区方法区:主要存储类信息,常量池,编译后的代码(字节码)等数据堆:初始化的对象,成员变量(非static),所有的对象实例和数组都要在堆上分配栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口等信息,局部变量表存放的是8大基础类型加上一个引用类型,所以还是一个指向地址的指针本地方法栈:主要为N

2020-09-09 22:21:12 69

原创 23种设计模式——知识要点

1. 单例模式(Singleton Pattern)定义:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)通用代码:(线程安全):public class Singleton { private static final Singleton singleton = new Singleton(); //限制产生多个对

2020-09-09 00:10:42 47

转载 Mysql——多表连接查询的执行细节

多表连接查询的执行细节create table a(a1 int primary key, a2 int ,index(a2)); --双字段都有索引create table c(c1 int primary key, c2 int ,index(c2), c3 int); --双字段都有索引create table b(b1 int primary key, b2 int); --有主键索引create table d(d1 int, d2 int); --没有索

2020-08-31 20:25:08 54

原创 MySQL——小表驱动大表

小表驱动大表准备两站表:CREATE TABLE `student` ( `id` int(11) NOT NULL, `no` varchar(20) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;INSERT INTO student VALUES(1, '0001', 'tom');INSERT INTO st

2020-08-31 16:20:27 53

原创 Kubernates——Pod定义详解

Pod定义详解yml格式的Pod定义文件的完整内容如下:apiVersion: v1kind: Podmetadata: name: string namespace: string labels: - name: string annotations: - name: stringspec: containers: - name: string image: string imagePullPolicy: [Always | Never | IfNtPresent

2020-08-29 09:14:29 55

原创 基于 Docker for MAC 的 Kubernetes 本地环境搭建与应用部署

基于 Docker for MAC 的 Kubernetes 本地环境搭建与应用部署查看Docker for mac支持的Kubernates版本:下载对应的镜像:阿里云执行脚本:./load_images.sh启动Kubernates(等待几分钟):验证集群状态:kubectl cluster-infokubectl get nodes如果勾选了Show system containers选项,可以使用docker ps命令看到自动安装的Kubernates相关容器:Doc

2020-08-28 15:51:26 88

原创 Kubernates——概述

Kubernates是什么Kubernetes是Google开源的容器集群管理系统。它构建在Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等一整套功能,本质上可看作是基于容器技术的Micro-PaaS平台,即第三代PaaS的代表性项目。Google从2004年起就已经开始使用容器技术了,于2006年发布了Cgroup,而且内部开发了强大的集群资源管理平台Borg和Omega,这些都已经广泛使用在Google的各个基础设施中,而Kubernetes的灵感来源于Google的

2020-08-28 13:08:20 62

原创 Docker——常见问题总结

镜像相关1. 如何备份系统中所有的镜像首先,备份镜像列表可以使用docker images|awk 'NR>1{print $1":"$2}'|sort > images.list导出所有镜像为当前目录下文件,可以使用如下命令:while read img; do echo $img file="${img/\//-}" sudo docker save --output $file.tar $imgdone < images.list将本地镜像文件导入为Docker

2020-08-27 12:37:24 134

原创 Docker——部署SpringBoot项目

1. 准备SpringBoot项目并打包@RestControllerpublic class DockerController { @GetMapping("/docker/hello") public String hello() { return "hello world!"; }}编写dockerfile# 基础镜像使用javaFROM java:8# 作者MAINTAINER acton <actonzhang@163.com&g

2020-08-27 10:05:25 68

原创 DockerFile——指令说明

指令说明Dockerfile中指令的一般格式为INSTRUCTION arguments,包括”配置指令“(配置镜像信息)和”操作指令“(具体执行操作)。配置执行1. ARG定义创建镜像过程中使用的变量。格式为ARG <name> [=<default value>] 。在执行docker build 时,可以通过-build-arg[=]来为变量赋值。当镜像编译成功后,ARG指定的变量将不再存在(ENV指定的变量将在镜像中保留)。Docker内置了一-些镜像创建变

2020-08-26 16:28:22 42

原创 Docker——端口映射与容器互联

端口映射实现容器访问1. 从外部访问容器应用:在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数来指定端口映射。当使用-P (大写的)标记时,Docker会随机映射一个49000~49900的端口到内部容器开放的网络端口。-p则可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器。支持的格式有:IP:HostPosrt:ContainerPortIP::Contain

2020-08-26 15:07:02 57

原创 Netty——经典面试题

TCP和UDP的根本区别TCP面向连接,如打电话要先拨号建立连接;UDP是无连接的,即发送数据之前不需要建立连接TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付TCP通过校验和、重传控制、序号标识、滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高要求的通信或广播通信每一条TCP连接只能是点到点的;UDP

2020-08-21 11:56:15 72

原创 SpringCloudAlibaba——Seata配置文件

Seata配置文件详解在${SEATA_HOME}\conf目录下有两个配置文件,分别是registry.conf和file.conf。registry.confregistry.conf包含两项配置:registry:表示配置Seata服务注册的地址,支持目前市面上所有主流的注册中心组件。它的配置非常简单,通过type指定注册中心的类型,然后根据指定的类型对应的服务地址信息,比如当type=nacos时,则匹配到Nacos的配置项如下:type="nacos"nacos { serverAd

2020-08-17 15:32:54 286

原创 SpringCloudAlibaba——Seata AT模式的实现原理

Seata AT模式的实现原理AT模式是基于XA事务模型演化而来的,所以它的整体机制也是一个改进版的两段提交协议。第一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。第二阶段:提交异步化,非常快速地完成。回滚通过第一阶段的日志进行反向补偿。以一个创建订单事务中的库存表tbl_repo来表述整个工作过程:AT模式第一阶段的实践原理:在业务流程中执行库存扣减操作的数据库操作时,Seata会基于数据源代理对源执行的SQL进行解析,代理的配置如下:@Beanpubli

2020-08-17 14:44:42 81

原创 SpringCloudAlibaba——编码方式配置Sentinel限流与熔断

Sentinel限流、熔断的实现流程定义资源定义限流、熔断规则检验规则是否生效定义资源方式一:使用@SentinelResource注解@GetMapping("testY")@SentinelResource(value = "testY", blockHandler = "testYHandler")public String testY(){ return "testY";}//限流后的处理方法public String testYHandler(BlockExce

2020-08-16 22:00:05 55

原创 SpringCloudAlibaba——Nacos Config实现原理解析

Nacos Config实现原理解析Nacos Config针对配置提供了4中操作。针对这4中操作,Nacos提供了SDK及Open API的方式进行访问。== 获取配置:从Nacos Config Server中读取配置==监听配置:订阅感兴趣的配置,当配置发生变化时可以收到一个事件:发布配置:将配置保存到Nacos Config Server中:删除配置:删除配置中心的指定配置:配置的CRUD对于Nacos Config来说,其实就是提供了配置的集中式管理功能,然后对外提供CRUD

2020-08-16 11:43:27 58

原创 SpringCloudAlibaba——Nacos实现原理详解

Nacos架构Provider APP:服务提供者Consumer APP:服务消费者Name Server:通过VIP(Virtual IP)或DNS的方式实现Nacos高可用集群的服务路由Nacos Server:Nacos服务提供者,里面包含的Open API是功能访问入口,Conig Service、Naming Service 是Nacos提供的配置服务、命名服务模块。Consitency Protocol是一致性协议,用来实现Nacos集群节点的数据同步,这里使用的是Raft算法(E

2020-08-16 10:56:24 612

原创 Mycat-Web——监控平台

Mycat-web简介Mycat-web是Mycat可视化韵味管理和监控平台,弥补了Mycat监控上的空表,帮Mycat分担统计任务和配置管理任务。Mycat-web引入了Zookeeper作为配置中心,可以管理多个节点。Mycat-web主要管理和监控Mycat的流量、连接、活动线程和内存等,具备IP白名单、邮件告警模块,还可以统计SQL并分析慢SQL和高频SQL导尿管。为优化SQL提供依据。配置使用1. 安装zookeeper并启动:2. Mycat-web安装:地址:http://dl.

2020-07-22 23:19:45 102

原创 Mycat——安全设置

权限配置1. user标签权限控制:目前Mycat对于中间件的连接控制并没有做太负责的控制,目前只做了中间件逻辑库级别的读写权限,是通过server.xml的user标签进行配置。<user name="mycat"> <property name="password">123456</property> <property name="schemas">TESTDB</property></user><user

2020-07-22 22:34:48 92

原创 Mycat——全局序列

全局序列在实现分库分表的情况下,数据库自增主键已无法保证主键的全局唯一。所以,Mact提供了全区sequence,并且提供了包含本地配置和数据库配置等多种实现方式。1. 本地文件原理:此方式MyCAT将sequence配置到文件中,当使用到sequence中的配置后,MyCAT会更下classpath中的 sequence_conf.properties文件中sequence当前的值。配置方式:#在sequence_conf.properties文件中做如下配置: GLOBAL_SEQ.HISID

2020-07-22 20:34:45 70

原创 Mycat——常用的分片规则

分片枚举通过在配置文件中配置可能的枚举id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存, 而全国省份区县固定的,这类业务使用本条规则,配置如下:<tableRule name="sharding-by-intfile"> <rule> <columns>user_id</columns> <algorithm>hash-int</algorithm> </rule></tab

2020-07-22 02:17:30 58

原创 Mycat——垂直拆分、水平拆分

垂直拆分(分库)一个书库由很多表构成,每个表对应不同的业务,垂直切分是指按照业务将表进行分类,分布到不同的数据库上面,这样也就将数据或者说压力分摊到不同的库上面,如下图:如何划分表:分库的原则:有紧密关联的表应该在一个库里,互相没有关联关系的表可以分到不同的库里。实现分库:客户表customer一个库;订单表orders、订单详细表orders_detail、订单转态表dict_order_type3个表一个库;schema配置文件:<!-- 3张表在dn1 --> <

2020-07-21 22:23:07 80

原创 Mycat——schemal、server、rule配置详解

schema.xmlSchema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。schema标签:schema 标签用于定义MyCat实例中的逻辑库,MyCat可以有多个逻辑库,每个逻辑库都有自己的相关配置。可以使用 schema标签来划分这些不同的逻辑库。如果不配置 schema 标签,所有的表配置,会属于同一个默认的逻辑库。<schema name="TESTDB" checkSQLschema="false"

2020-07-21 19:19:57 94

原创 Mycat——读写分离

MySQL主从复制已经通过docker配置了Mysql的主从复制:master: 3339端口slave:3340端口准备了一个test数据库,和一个stu表:master中数据:slave中数据:配置Mycatschema.xml<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/"&

2020-07-20 21:27:44 38

原创 Docker配置MySQL主从复制

拉取镜像使用mysql5.7版本docker pull mysql:5.7分别启动两个容器:Master:docker run -p 3339:3306 --name mymaster -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7Slave:docker run -p 3340:3306 --name myslave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7Master对外映射的端口是3339,Slave对外

2020-07-20 00:59:32 49

原创 Mycat——Mac环境搭建

下载解压前提:java环境、MySQL5.5以上;选择Mac版 地址修改配置wrapper.conf 修改用户信息wrapper.java.command=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin/javawrapper.working.dir=..server.xml <user name="mycat"> <property name="password">12

2020-07-19 22:24:38 113

原创 MyCat——概述

MyCat是什么MyCat是数据库中间件。1. 数据库中间件:中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部分之间的沟通。例子:Tomcat、Web中间件。数据库中间件:连接java应用程序和数据库。2. 为什么要用MyCat:Java与数据库紧耦合高访问并发对数据库的压力读写请求数据不一致3. 数据库中间件对比:Cobar:Cobar属于阿里B2B事业群,始于2008年,在阿里服役3年多,接管3000+个MySQL数据库的schema,集群日处理在线SQL请求50

2020-07-19 17:52:11 77

原创 面试题——Redis分布式锁

模拟并发抢票先在redis中存入一个ticket,值为50,作为被抢的票。抢票接口:@RestControllerpublic class TestController { @Autowired StringRedisTemplate template; @GetMapping("/test") public String test() throws InterruptedException{ int ticket = Integer.parse

2020-07-16 23:36:55 219

原创 面试题——垃圾回收器、Linux性能、Git命令

垃圾回收器目前为止还没有完美的收集器出现,更加没有万能的收集器,只是针对具体应用最合适的收集器,进行分代收集。4中主要垃圾收集器:查看默认垃圾收集器:java -XX:+PrintCommandLineFlags -version== Java的提供的垃圾回收器:==UseSerilGCUseParallelGCUseConcMarkSweepGCUseParNewGCUseParallelOldGCUseG1GCGC约定参数:DefNew (Default New

2020-07-15 21:49:17 52

原创 面试题——JVM参数、引用、OOM

JVM的参数类型1. 标配参数:在JDK各个版本之间稳定,很少有大的变化-version-helpjava -showversion2. X参数:-Xint 解释执行-Xcomp 第一次使用就编译成本地代码-Xmixed 混合模式(默认)3. XX参数:(重点)Boolean类型:公式:-XX:+或者- 某个属性值+表示开启,-表示关闭示例:是否打印GC收集细节开启: -XX:+PrintGCDetails关闭: -XX:-PrintGC

2020-07-14 21:34:38 55

原创 尚硅谷面试题——第一季(二)

MyBatis中实体属性与表中字段不对应书写SQL使用别名驼峰命名情况下,使用<setting name="mapUnderscreToCamelCase" value="true" />开启转换使用ResultMap手动转换Linux系统常用服务类命令centos6:service - 注册在系统中的标准化程序 - 有方便统一的管理方式 - service 服务名 start - service 服务名 stop - service 服务名 restart

2020-07-07 19:50:08 80

原创 尚硅谷面试题——第一季(一)

自增public class Increment { public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println("i=" + i);//4 System.out.println("j=" + j);//1 Syste

2020-07-06 23:16:49 158

原创 面试题——单例模式与反射、序列化

饿汉式立即加载,线程安全。public class Singleton { private static Singleton INSTANCE = new Singleton();//立即加载 private Singleton(){}; public static Singleton getInstance() { return INSTANCE; }}懒汉式延迟加载,线程不安全。public class Singleton { pri

2020-07-06 15:00:32 92

原创 Dubbo——消费者过滤器的实现原理

ActiveLimitFilter的实现原理和服务提供者端的ExecuteLimitFilter相似,ActiveLimitFilter是消费者端的过滤器,显示的是客户端的并发数。<!-- 限制com.foo.BarService的每个方法在每个客户端的并发执行数(或占用连接的请求数)不能超过10个 --><dubbo:service interface="com.foo.BarService" actives="10" />或<dubbo:reference inte

2020-07-04 01:16:20 176

原创 Dubbo——服务提供者过滤器实现的原理

服务提供者过滤器实现的原理@Activate注解上可以设置group属性,从而设定某些过滤器只有在服务提供者端才生效。AccessLogFilter的实现原理1. AccessLogFilter的使用:AccessLogFilter是一个日志过滤器,如果想记录服务每一次的请求日志,则可以开启这个过滤器。虽然AccessLogFilter有@Activate注解,默认会被激活,但还是需要手动配置来开启日志的打印。有两种方式来配置开启AccessLogFilter:<!-- ①将日志输出到应用本

2020-07-04 00:25:57 138

原创 Dubbo——过滤器概述

Dubbo过滤器概述Dubbo中的过滤器和Web应用中的过滤器的概念是一样的,提供了在服务调用前后插入自定义逻辑的途径。过滤器是整个Dubbo框架中非常重要的组成部分,Dubbo中很多功能都是基于过滤器扩展而来的。过滤器提供了服务提供者和消费者调用过程的拦截,即每次都执行RPC调用的时候,对应的过滤器都会生效。虽然过滤器的功能强大,但由于每次调用时都会执行,因此在使用的时候需要注意它对性能的影响。过滤器的使用一种方式是使用@Active注解默认启用;一种方式是在配置文件中配置;<!--

2020-07-03 23:06:22 103

vuedevtools安装.zip

用于Chrome本地安装vue-devtools,无脑安装!!!! 安装过程: 1.Chrome=》设置=》更多工具=》扩展程序 2.打开开发者模式 3.加载已解压的扩展程序=》选择解压后的文件夹 4.重启浏览器 5.如果失败,在加载后的vuedevtools设置页面开启“允许访问文件网址”

2019-10-27

软考历年真题.zip

2009年开始一直到2018年,历年的软考中级-软件设计师真题。历年的上午+下午真题,全部为PDF格式。题目清晰,完整。

2019-09-09

吴声子夜歌的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

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

TA关注的人 TA的粉丝

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