自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 idea ctrl+alt+鼠标左键和ctrl+鼠标左键的作用和区别

ctrl+鼠标左键:进入接口,它是进入下一层ctrl+alt+鼠标左键:进入实现方法,它是进入最底层

2021-03-26 14:23:52 5083 1

原创 rabbitmq

1.rabbitmq 的使用场景有哪些?解耦,异步,削峰。2.rabbitmq 有哪些重要的角色?生产者:消息的创建者,负责创建和推送数据到消息服务器消费者:消息的接收方,用于处理数据和确认消息代理:就是RabbitMQ本身,用于扮演快递的角色,本身并不生产消息3.rabbitmq 有哪些重要的组件?ConnectionFactory(连接管理器):应用程序与RabbitMQ之间建立连接的管理器Channel(信道):消息推送使用的通道Exchange(交换器):用于接受

2021-03-04 11:19:08 148

原创 synchronized

1.synchronized不能被继承2.synchronized修饰方法或者普通变量,锁定的是当前对象。当修饰静态内容时,锁定的就是整个类(包含所有对象)3.在定义接口方法时不能使用synchronized关键字。构造方法不能使用synchronized关键字,但可以使用synchronized代码块来进行同步。4.无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类

2021-03-02 22:05:07 167

原创 JVM

1.说一下 jvm 的主要组成部分?及其作用?类加载器(ClassLoader):加载类文件到内存。Class loader只管加载,只要符合文件结构就加载,至于能否运行,它不负责,那是有Exectution Engine 负责的。垃圾回收器:垃圾回收器可以对堆、方法区、直接内存进行回收。执行引擎(Execution Engine):也叫解释器,负责解释命令,交由操作系统执行。本地库接口(Native Interface):本地接口的作用是融合不同的语言为java所用运行时数据区(Ru.

2021-02-26 21:18:41 94

原创 mybatis

1.mybatis 中 #{}和 ${}的区别是什么?#{}一般都是替换查询数据的id,username,password这种数据库字段${}一般都是替换查询语句的条件,order by之类的。#{}是预编译处理,${}是字符串替换。(1)mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值。(2)mybatis在处理${}时,就是把${}替换成变量的值。(3)使用#{}可以有效的防止SQL注入,提高系统安全性。原因在于:预编

2021-02-22 11:57:37 75

原创 hibernate

1.为什么使用hibernate?Hibernate封装了jdbc,使用hibernate可以减少连接数据库等繁琐重复的代码。Hibernate性能好,支持延迟检索,立即检索,一级缓存,二级缓存。2.延迟检索(懒加载)在使用hibernate的session.load(),query.iterate()等方法时,Hibernate返回的是一个空对象代理(除主键属性外都是null),并没有去查询数据库;而是在使用返回对象的时候才会去查询数据库,并将查询结果注入到该对象中;这种查询时机推迟到对象..

2021-02-22 11:53:48 71

原创 kafka

1.kafaka高产出的分布式消息系统。(A high-throughput distributed messaging system)2.它是一个典型的分布式的基于push-subscribe的消息系统,它具备快速、可扩展、可持久化的特点。什么叫push-subscribe消息系统:用户可以为服务器日志或者物联网设备创建不同主题(Topic) ,之后数据可以源源不断地发送到各个主题,后端数据仓库、流式分析或者全文检索等对接特定主题,服务器或者物联网设备是无需关心的。3.Kafka的做法是提供消

2021-02-22 11:51:05 64

原创 flink常用api详解

1.Flink提供了四种不同层级的API。低级API,核心API,Table API,SQL。2.Flink DataStream的常用API(主要分为三块):DataSource(程序的数据源输入),Transformation(具体的操作),Sink(程序的输出)3.Flink针对DataStream提供了大量的已经实现的DataSource (数据源)接口。如:基于文件: readTextFile (path)读取文本文件,文件遵循Text InputFormat逐行读取规则并返回。 基

2021-02-22 11:49:01 2426

原创 flink

FLINK1.第一代计算引擎:Hadoop。它将计算分为两个部分,Map和Reduce,不支持DAG框架2.第二代计算引擎:Tez,Oozie。大多数还是批处理的任务3.第三代计算引擎:以Spark为代表。Job内部的DAG支持(不跨越JOB)。强调实时计算4.第四代的计算引擎: Flink的诞生,就被归在了第四代。这应该主要表现在Flink对流计算的支持,以及更一步的实时性上面。当然Flink也可以支持批处理的任务,以及DAG的运算。5.Apache Flink是一个框架和分布式处理引

2021-02-22 11:46:38 90

原创 数据库及分布式事务

1.数据库的存储引擎(底层软件组织),数据库管理系统DBMS使用它增删改查,不同的存储引擎有不同的风格(存储机制,索引技巧,锁定水平),常用的存储引擎,MyIASM(默认),InnoDB,Memory,Archive,Federate2.MyIASM。它不支持数据库事务,行级锁,外键。特点:读取速度比InnoDB快,占用内存较少。Innodb寻址时先映射到块,再映射到行InnoDB:支持事务,崩溃修复能力,多版本并发控制,事务安全。InnoDB的底层存储结构是B+树。3.为什么InnoDB的存储

2021-02-22 11:44:33 166

原创 分布式及中间件

分布式1.分布式系统(distributed system)是建立在网络之上的软件系统,应运而生,为了满足互联网系统或者服务程序的高吞吐,高并发,强扩展,灵活部署及低延迟等急需解决的需求(分布式说白了就是把一切都分开,各司其职) 分布式:一个业务分拆多个子业务,部署在不同的服务器上(不同的服务器,运行不同的代码,为了同一个目的)2.分布式系统中,两台计算机功能相同(执行相同程序)叫集群 集群:同一个业务,部署在多个服务器上(不同的服务器运行同样的代码,干同一件事)3.分布式发展历程(1...

2021-02-22 11:33:25 1736 2

原创 reids核心线程IO模型与操作系统的多路复用

1.Redis是一个单线程程序,但是他的所有数据都在内存中,所以速度超快。但同时也容易造成卡顿2.redis单线程怎么处理那么多的并发客户端请求?多路复用技术+select系列的事件轮询API(Java NIO)3.传统IO:读写阻塞4.非阻塞IO不再阻塞读写,想读多少读多少,想写多少写多少。缺点:不知道何时读,何时写(用事件轮询API解决)5.最简单的事件轮询API----select函数,它是操作系统提供给用户程序的api。输入是读写描述符列表,输出是与之对应的可读可写事件。同时

2021-02-22 11:32:17 105

原创 Redis使用及数据结构

redis的五种基础数据结构,string,list,set,hash,zset。详情参见redis 字符串(动态,类似于Java的Array List,扩容加倍)结构应用非常广泛,一个常见的用途就是缓存用户信息。我们将用户信息结构体使用JSON序列化成字符串,然后将序列化的字符串塞进redis来缓存。那么取出用户信息就需要反序列化。 Redis的列表结构(list)常用作异步队列使用,将需要延后处理的任务结构体序列化成字符串塞进redis的列表,另一个线程从这个列表中轮询数据进行处理 Redis底层

2021-02-22 11:28:19 92

原创 redis核心

1.Redis核心----管道(pipeline):它本身并不是redis提供的技术,这个技术本质上是客户端提供的2.管道就是将request---->response---->request--->response改成了request---->request----->response---->response将写或读的操作串联在一起能极大的减少所需的时间(主要减少的IO时间)(管道中的指令越多,效果越好)3.Redis管道本质(1)客户端进程调用write

2021-02-22 11:26:54 333

原创 redis

1.redis是一种速度非常快的非关系型数据库,它可以存储键(key)与5钟不同类型的值(value)之间的映射,可以将存储在内存中的键值对数据持久化到硬盘中。2.redis是一个Key-Value存储系统 string(字符串) list(链表) set(集合) zset(有序集合) 他们都支持push/pop add/remove及交集,并集,差集及一些其他的丰富操作(原子操作),在此基础上,redis还支持各种排序,实现主(master)从(salve)同步3.CA...

2021-02-21 14:03:47 86

原创 计算机网络

1.OSI网络的七层架构从下到上主要包括物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。2.物理层:比特。主要作用是传输比特流。电流强弱与1,0之间相互转换(模数转换,数模转换)3.数据链路层:帧。主要作用是用于对数据包中的MAC地址进行解析和封装。4.网络层:数据包。主要作用是对数据包中的IP地址进行封装和解析。5.传输层:TCP,UDP。定义了传输数据的协议和端口号。主要用于数据分段,传输和重组。6.会话层:在传输层基础上建立连接和会话管理。在设备之间需要相互识别的可以是

2021-02-21 14:00:00 205

原创 zookeeper

zookeeper是中间件,分布式程序协调服务,为分布式提供一个统一的服务。配置维护,域名服务,组服务,分布式服务。 Zookeeper最重要的是解决了分布式事务,数据一致性的问题 Zookeeper协调各个子系统。 Zookeeper也可以看成是一种典型的分布式事务数据一致性的解决方案。 Zookeeper功能:统一配置管理,统一命名服务,分布式锁,集群状态 Zookeeper的树形的数据模型znode(包含存储数据和acl),znode最大存储不能超过1m znode有两种类型,epheme

2021-02-21 13:54:26 130

原创 Dubbo

​​​​1.Dubbo开源分布式服务框架,是一个高性能优秀的服务框架,使得应用可以通过高性能的RPC((Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务)实现服务的输入和输出,可以和Spring框架无缝集成。2.Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。3.单一应用架构:当网站流量很小时,只需要一个应用,将所有功能部署在一起。可以减少部署节点

2021-02-21 13:52:20 106 1

原创 nginx

习惯将nginx分为五大模块:核心模块,标准HTTP模块,可选HTTP模块,邮件服务模块,第三方模块。重要性依次递减 核心模块:提供了nginx最基本的核心服务。进程管理,权限控制,错误日志记录。 标准HTTP模块:支持标准的HTTP功能。 可选HTTP模块:扩展了HTTP的功能,提供一些特殊的服务 邮件服务模块:支持nginx的邮件服务 第三方模块:可以扩展nginx的服务器应用,可以完成开发者想要的功能 Nginx的web请求并行处理机制:1.多进程方式:每有一个请求,服务器主进程就建立一个

2021-02-21 13:46:19 106

原创 SpringMVC优化建议

1.@Controller尽量保持单例模式:就是说尽量不要使用全局变量,这样不仅可以减小创建和回收对象的开销,还可以保证线程安全2.处理请求方法上务必加上@RequestParam,不要用符合的类代替,可以避免SpringMVC使用asm框架读取Class文件3.缓存URL:Spring源码并没有缓存URL,每次请求Spring都会去匹配URL,如果将URL和方法的关系缓存起来,一定能带来性能的提升(此时就需要线程安全的问题了)...

2021-02-21 13:45:30 359

原创 Spring IOC

Java---SpringIoC(控制反转)******简单明了的解释:控制反转又称为依赖注入,主要为了降低类之间的耦合度,类A依赖类B的时候我们按传统写法就需要在类A里面调用类B对象的方法,而用SPRING的话,就相当于提供了一个接口,在类A里面调用这个接口就可以得到类B对象,不用NEW出类B的对象来。利用接口的原理来降低了耦合度(如果你熟习接口的设计和使用就会很清楚)。而为了实现上述原理,我们把他写成配置文件,然后在程序运行时用反射的方式来加载这个配置文件(用spring时就是用的反射机制运行时调

2021-02-21 13:44:50 53

原创 SpringAOP

1.面向切面编程(AOP)是OOP的延续(通过预编译和动态代理实现在不修改源代码的情况下,给程序动态添加功能)2.AOP设计模式追求的是调用者和被调用者之间的解耦(目前来看IoC体现在自动配置(AutoWired),AOP体现在方法调度) 1.前置通知 2.后置通知 3.环绕通知 4.后置抛出通知3.BeanFactory和ApplicationContext区别BeanFactory:是Spring里面最低层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能...

2021-02-21 13:43:42 51

原创 Spring Web MVC

1.框架作用:将Web层进行职责解耦2.前端控制器:DispatcherServlet(大脑),可以拆解为 1.Handler Mapping处理器管理 2.View Resolver视图解析器 3.页面控制器/动作/处理器为Controller接口(小脑)3.Spring Web MVC处理请求过程 1.从前端发来请求 2.大脑分析请求,然后交给小脑处理 3.小脑处理完毕后,将结果(html)返回给大脑 4.大脑将结果(html)发给视图解析器处理 5....

2021-02-21 13:43:02 139 1

原创 Spring介绍及设计模式

Spring----简化java开发1.基于pojo的轻量级和最小侵入性编程2.通过依赖注入和面向接口实现松耦合3.基于切面和惯例进行声明式编程4.通过切面和模板减少样板式代码Spring-----编程思想1.OOP---Object Oriented Programming(面向对象编程),用程序总结生活中的一切事物2.BOP---Bean Oriented Programming(面向Bean编程),面向Bean(普通的类)设计程序,解放程序员3.AOP----Aspect Oriente

2021-02-21 13:42:02 321

原创 java学习笔记

准备实习

2021-02-20 19:18:11 66

原创 并发和并行的区别

并发与并行都是强调同时执行。而他们两个并行代表的是真正的同时执行,并发只是可以宏观上认为是同时执行,并不是真正的同时执行。为什么呢?并发:多个线程任务通过一个cpu执行,所以这些线程任务只能通过切换执行来实现并发,只不过这些线程切换的速度很快,宏观上看似乎就是同时执行的,其实还是一个一个执行的,只不过可以切换执行。并行:多个线程任务通过多个cpu执行,真正意义上的同时执行。因为有多个cpu,一个cpu执行一个任务就好了。...

2021-02-19 17:50:13 380

原创 BIO,NIO,AIO的区别

首先,什么是io模型。模型即是解决一个问题的固定套路,io即是输入与输出,那么io模型就是解决输入与输出问题的一种固定套路。其次为什么要学习io模型,因为在输入与输出的过程通常很久,而在等待输入的过程中,cpu处于闲置状态,就造成了资源浪费,所以学习io模型,就是为了利用cpu在等待过程中做别的事。注意,IO其实有很多类型,例如 socket网络IO,内存到内存的copy,等待键盘输入,对比起来socket网络IO需要等待的时间是最长的,这也是咱们重点关注的地方关于阻塞与非阻塞:io模型分为阻塞io,非

2021-02-18 19:58:10 78

原创 抽象类和接口的区别

抽象类虽然不能实例化,但是它有构造方法,而接口没有。抽象类要被继承,接口要被实现。抽象类可以有默认方法,可以没有抽象方法,可以有main方法,可以运行。接口是方法的集合,它的变量只能是常量(public static final),不可运行,他的所有方法只能是抽象方法。...

2021-02-16 22:34:22 81

原创 String StringBuffer StringBuilder的区别

他们是Java中仅有的三种字符串操作类。String类是final修饰的Java类。StringBuffer线程安全,StringBuilder线程不安全,一般情况下,StringBuilder速度快于StringBuffer。而String就是一个字符串一个对象,两个相同的字符串会指向一个地址,对String对象的改变会生成新的String对象,再将指针指向该对象。StringBuffer、StringBuilder则不是,对他们两个的操作都是在一个对象上的操作。...

2021-02-16 21:30:06 47

原创 Math对象的ceil()、floor()、round()方法

ceil:向上取整,返回值float类型。floor:向下取整,返回值float类型。round:四舍五入,返回值int类型。关于ceil和floor,想象一条y轴,不论负数正数,都向y轴的上或下方向取整。而四舍五入的原理是,把当前数加0.5,再向下取整。如Math.round(-1.5)的值是-1...

2021-02-16 21:05:46 370

原创 equals和hashcode的关系

首先要明确,equals的优先级比hashcode高。我们需要确保当两个对象equals相等时,那么他们的hashcode一定相等。如果两个对象equals不相等,那么两个对象的 hashCode 方法不一定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。也就是说,若两个对象equals相等,则hashCode也相同。若equals不相同,则hashCode不需要确保一定不相同。反过来说若两个对象hashCode相同,则equals不一定返回tru

2021-02-15 22:13:58 5844

原创 == 和 equals 的区别

== 是一种运算符,速度快,他判断的是两个对象的地址是否相同。equals是超类Object的一个方法,它判断的是两个对象的内容是否相同。我们新建一个类时,它继承的equals方法默认比较的是地址空间是否相同,具体的比较方法需要我们自己实现。继承的equals方法默认比较的是地址空间是否相同,如下public boolean equals(Object obj) { return (this == obj); }...

2021-02-15 21:30:48 102

原创 JRE和JDK有什么区别

JRE: Java Runtime EnvironmentJDK:Java Development KitJRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JREJDK包含的基本组件包括:javac – 编译器,将源程序转成字节码jar –.

2021-02-15 21:14:11 228

原创 Scanner的next()方法、nextLine()方法、hasNext()方法

其实按照原理hasNext()因该写作nextHas(),就容易理解了(坑爹的英文)。

2021-01-28 19:13:42 743

原创 LinkedList的push add offer操作有什么不同

add(不带索引默认添加到链表的最后)与offer一样都是添加操作,唯一的区别就是offer没有带索引参数的方法。上面这两种操作方式是将LinkedList当作链表或队列来使用。而push操作是将LinkedList当作栈来使用。

2021-01-28 13:32:33 4091

原创 public protected default private的区别

private default protected public的级别是递增的。

2021-01-27 18:05:40 314

空空如也

空空如也

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

TA关注的人

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