JAVA基础学习笔记
咖喱东东
程序员菜鸟
展开
-
一图回答面试题:Spring IOC容器构建的过程
前言:这个题很常见,但网上要么长篇冗余,晦涩难懂,要么寥寥几段,不知所云,故出此图,一图以蔽之,全文背之即可。思路:Spring IOC的构建过程主要调用 AbstractApplicationContext.refresh()方法,该方法refresh()由12个子方法组成,列出如下:...原创 2021-04-24 17:22:19 · 430 阅读 · 0 评论 -
Redis面试:分布式锁
分布式锁基本用法解决超时问题分布式锁面试指数:5/5问题场景:例如一个简单的用户操作,一个线程去修改用户的状态,首先从数据库中读出用户的状态,然后在内存中进行修改,修改完成后,再存回去。在单线程中,这个操作没有问题,但是在多线程中,由于读取、修改、存 这是三个操作,不是原子操作,所以在多线程中,这样会出问题。对于这种问题,我们可以使用分布式锁来限制程序的并发执行。基本用法分布式锁实现的思路很简单,就是进来一个线程先占位,当别的线程进来操作时,发现已经有人占位了,就会放弃或者稍后再试。在原创 2020-12-03 17:22:37 · 490 阅读 · 2 评论 -
error Couldn't find package "negotiator@0.6.2" required by "accepts@~1.3.7" on the "npm" registry.
问题原因:npm未更新解决方案:# linux 系统命令sudo npm install npm -g# windows 系统命令npm install npm -g原创 2019-11-21 16:43:53 · 5421 阅读 · 0 评论 -
Java后端面试系列-数据库篇
Java后端面试系列-数据库篇1 概述1.1 关系型数据库主要考点1 概述1.1 关系型数据库主要考点原创 2020-07-01 23:17:35 · 1423 阅读 · 1 评论 -
Java后端面试系列-Linux篇
Java后端面试系列-Linux篇Linux的体系结构如何查找特定的文件?检索文件内容对文件内容做统计批量替换文本内容Linux的体系结构体系结构主要分为用户态(用户上层活动)和内核态内核:本质是一段管理计算机硬件设备的程序系统调用:内核的访问接口,是一种能再简化的操作公用库函数:系统调用的组合拳Shell:命令解释器,可编程如何查找特定的文件?find语法 find path [options] params作用:在指定的目录下查找文件// 在当前目录下查找指定文件名的文原创 2020-06-30 09:14:40 · 693 阅读 · 0 评论 -
基于Canal实现敏感操作感知
本文主要内容:简单介绍Canal及其工作原理,并实现了感知数据库敏感操作。文章目录1. 是什么?2. 工作原理3. 搭建环境3.1 Java开发环境配置3.2 Mysql环境配置3.2 配置Canal服务端4 开始实现感知敏感操作5. 附录 - 相关命令1. 是什么?canal,中文:管道/运河,主要用途是用于MySQL数据库增量日志数据的订阅、消费和解析。2. 工作原理canal 模拟MySQL salve的交互协议,把自己伪装成MySQL slave,向MySQL master发送dum.原创 2020-06-05 10:33:36 · 922 阅读 · 0 评论 -
认认真真学习zookeeper(三)
本文内容包括:文章目录1. zookeeper 开源客户端curator介绍1.1 curator简介1.2 连接到ZooKeeper1.3 新增节点1.4 更新节点1.5 删除节点1.6 查看节点1.7 查看子节点1.8 检查节点是否存在1.9 watcherAPI1.10 事务1.11 分布式锁2. zookeeper四字监控命令2.1 conf命令1. zookeeper 开源客户端curator介绍1.1 curator简介 curator是Netflix公司开源的一个zookeepe.原创 2020-06-03 23:10:05 · 946 阅读 · 0 评论 -
认认真真学习zookeeper(二)
本文内容包括:文章目录1. zookeeper 事件监听机制1.1 watcher概念1.2 watcher架构1.3 watcher特性1.4 watcher接口设计1. zookeeper 事件监听机制1.1 watcher概念 zookeeper提供了数据的发布/订阅功能,多个订阅者可同时监听某一特定主题对象,当该主题对象的自身状态发生变化时(例如节点内容改变、节点下的子节点列表改变等),会实时、主动通知所有订阅者 zookeeper采用了Watcher机制实现数据的发布/订阅功能.原创 2020-06-03 13:59:52 · 793 阅读 · 0 评论 -
认认真真学习zookeeper(一)
文章目录1. zookeeper简介1.1 什么是zookeeper1.2 zookeeper应用场景1.3 zookeeper的设计目标2. zookeeper的数据模型1. zookeeper简介1.1 什么是zookeeperzookeeper官网:https://zookeeper.apache.org/ZooKeeper由雅虎研究院开发,是Google Chubby的开源实现,后来托管到Apache,于2010年11月正式成为Apache的顶级项目。大数据生态系统里的很多组件的命名都是原创 2020-06-02 20:32:54 · 1025 阅读 · 0 评论 -
消息队列学习-ActiveMQ(五)
消息队列学习-ActiveMQ(五)10 ActiveMQ的消息存储和持久化10.1 官网10.2 是什么10.3 有哪些10.3.1 AMQ Mesage Store(了解)10.3.2 KahaDB消息存储(默认)10.3.3 JDBC消息存储10.3.4 LevelDB消息存储(了解)10.4 JDBC存储消息10.5 JDBC Message store with ActiveMQ Journal10.5.1 是什么10.5.2 说明10.5.3 配置10.6 ActiveMQ持久化机制小总结10原创 2020-05-31 14:10:15 · 984 阅读 · 0 评论 -
消息队列学习-ActiveMQ(四)
消息队列学习-ActiveMQ(四)8 SpringBoot整合ActiveMQ8.1 队列(Queue)8.1.1 队列生产者8.1.2 队列消费者8.2 主题发布订阅(Topic)8.2.1 Topic生产者8.2.2 Topic消费者8 ActiveMQ的传输协议8.1 面试题8.2 官网8.3 是什么8.4 有哪些8.4.1 Transmission Control Protocol(TCP)默认8.4.2 New I/O API Protocol(NIO)8.4.3 AMQP协议8.4.4 Sto原创 2020-05-31 07:57:17 · 918 阅读 · 1 评论 -
消息队列学习-ActiveMQ(三)
消息队列学习-ActiveMQ(三)6 ActiveMQ的Broker6.1 是什么6.2 使用不用的配置文件启动实例6.3 嵌入式Broker6 ActiveMQ的Broker6.1 是什么相当于一个ActiveMQ服务器实例说白了,Broker其实就是实现了用代码的形式启动ActiveMQ将MQ嵌入到Java代码中,以便随时用随时启动,在用的时候再去启动这样能节省了资源,也保证了可用性。6.2 使用不用的配置文件启动实例./activemq start xbean:file:/myactiv原创 2020-05-30 10:52:33 · 485 阅读 · 0 评论 -
消息队列学习-ActiveMQ(二)
消息队列学习-ActiveMQ(二)5 JMS规范和落地产品5.1 是什么5.1.1 JavaEE5.1.2 JMS5.2 MQ中间件的其他落地产品5.3 JMS的组成结构和特点5.3.1 JSM message消息头组成5.4 JMS的可靠性5.5 JMS的点对点总结5.6 JMS的发布订阅总结5 JMS规范和落地产品5.1 是什么5.1.1 JavaEEJavaEE 是一套使用Java进行企业级应用开发的一直遵守的13个核心规范工业标准。JavaEE平台提供了一个基于组件的方法来加快设计、开发、原创 2020-05-29 23:47:05 · 500 阅读 · 0 评论 -
消息队列学习-ActiveMQ(一)
消息队列学习-ActiveMQ1. 前言1.1 是什么1.2 消息中间件的**特性要求**:1.3 产品**种类**1.4 **能干嘛**2. 安装步骤1. 前言1.1 是什么MQ = 消息中间件1.2 消息中间件的特性要求:api发送和接受MQ的高可用性MQ的集群和容错配置MQ的持久化延迟发送/定时投递签收机制Spring整合…1.3 产品种类KafkaRabbitMQRocketMQActiveMQ其他1.4 能干嘛存在的问题:系统之间接口耦合比较严原创 2020-05-15 19:37:51 · 807 阅读 · 0 评论 -
Java后端面试系列-计算机网络篇
文章目录1 OSI七层概念模型1.1 物理层1.2 数据链路层1.3 网络层1.4 传输层1.5 会话层1.6 表示层1.7 应用层2 TCP/IP3 说说TCP的三次握手3.1 传输控制协议TCP简介3.2 TCP报文头3.3 TCP Flags3.4 三次握手流程1 OSI七层概念模型1.1 物理层 目的:解决两台物理机的通信需求,传递的是比特流,也就是010101...二进制数据,先转成电流的强弱进行传输,达到后转成010101...(也就是所谓的数模转换和模数转换)。网卡就是工作在这一层原创 2020-05-13 10:13:14 · 2306 阅读 · 2 评论 -
Maven下载jar包太慢
问题:项目jar包依赖报错,我删掉所有库重新下载,但是maven下了一个小时还在1%。。。解决:修改settings.xml,eg:我的文件是 E:\apache-maven-3.6.2\conf\settings.xml <!-- mirrors | This is a list of mirrors to be used in downloading artifac...原创 2019-11-22 21:19:43 · 462 阅读 · 0 评论 -
JAVAJ基础学习之反射机制
一、语言的动态性介绍强类型语言(静态类型语言)是指需要进行变量/对象类型声明的语言,一般情况下需要编译执行。例如C/C++/Java/C#弱类型语言(动态类型语言)是指不需要进行变量/对象类型声明的语言,一般情况下不需要编译(但也有编译型的)。二、java语言的动态性----反射(动态语言的特性:Java“准动态语言”)JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个原创 2017-12-11 19:12:52 · 339 阅读 · 0 评论 -
JAVA基础之字符串
一、字符串对象创建方式String str = "abc";String str1 = new String("abc");二、基本数据类型的包装类8种基本数据类型:byte short int long char boolean float double8种基本类型——对应引用类型byte——Byteshort——Shortint——Integerlong——L原创 2017-10-27 16:27:48 · 196 阅读 · 0 评论 -
JAVA基础之集合框架
一、List 接口常用方法如下: add(Object obj)向List的尾部添加一个元素objadd(int i, Object obj)向List中索引i 的位置添加元素objset(int i, Object obj)使用元素obj替换索引i 位置的元素,并返回被替换的元素。原创 2017-10-28 23:11:40 · 156 阅读 · 0 评论 -
JAVA基础之泛型编程
一、什么是泛型?所谓的泛型是指 允许在定义类、接口、方法时使用类型参数,这个类型参数将在 声明变量、创建对象、调用方法时动态地指定。泛型类相当于一个模板,在编译期无法确定具体的类型,只有在创建对象时候需要动态指定具体的类型。注意点:1、泛型不能用在静态属性上2、泛型使用时要传入具体的引用数据类型 不能是基本数据类型二、自定义泛型类、泛型接口、泛型方法原创 2017-11-07 15:27:54 · 227 阅读 · 0 评论 -
JAVA异常之异常处理
一、常见的异常public class ExceptionDemo01 { public static void main(String[] args) { //1.java.lang.NullPointerException空指针异常 /*String str = null; System.out.println(str.length());*/ //2.ja原创 2017-11-07 16:05:44 · 168 阅读 · 0 评论 -
面向对象的三大特征
一、继承①什么是继承?继承就是一个类的定义是基于另一个类的之上的,也就是子类父类。②为什么要有继承?1.极大减少了代码量,提高了代码的复用。2.方便修改已有的方法和属性、扩展新的方法和属性。③java如何实现继承?通过extends关键字进行继承。④子类对父类属性的覆盖和方法的重写?因为对于父类的某些属性和方法不适用于子类,所以子类要对这些方法和属性进行重新定义,也就是重写/覆盖。原创 2017-10-15 16:57:13 · 179 阅读 · 0 评论 -
接口和抽象类
一、什么是抽象类,有何特点?一个类没有足够的信息来描述,只能描述一个大致的框架,即抽象类。abstract关键字特点:①含有抽象方法一定是抽象类 ②抽象类中可以有非抽象方法 ③抽象类不能创建对象,专门用来被子类继承(相当于给子类定义了一个模板) ④子类要么实现抽象父类中所有的抽象方法,要么自己也变成抽象类二、接口当一个抽象类中的方法全部为抽象方法时,可以使用int原创 2017-10-15 19:17:13 · 194 阅读 · 0 评论 -
JAVA进阶之连接池
一、什么是连接池数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库原创 2017-11-13 10:14:58 · 243 阅读 · 0 评论 -
JAVA进阶之EL及JSTL
一、什么是ELEL(Expression Language)EL 提出了在JSP页面中使用表达式脚本的方式。JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。EL表达式语法:${表达式}二、原创 2017-11-13 10:45:19 · 147 阅读 · 0 评论 -
JAVA进阶之XML及AJAX
一、什么是XMLXML(eXtensible Markup Language)可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。XML 应用于 Web 开发的许多方面,常用于简化数据的存储和共享。二、XML的特点XML 把数据从 HTML 分离XML 简化数据共享XML 简化数据传输XML 简化平台变更XML 使您的数据原创 2017-11-13 10:57:43 · 258 阅读 · 0 评论 -
JAVA进阶之JavaBean及MVC
一、什么是JavaBeanJavaBean 是一种 JAVA 语言写成的可重用组件。为写成 JavaBean ,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他 Java 类可以通过自身机制发现和操作这些 JavaBean 的属性。分为两种:1.实体 Bean :原创 2017-11-13 10:32:43 · 799 阅读 · 1 评论 -
JAVA基础之数据库
一、DBMS SQLyogEnt.exe的使用1、创建数据库实例①、利用管理菜单创建②、利用SQL创建CREATE DATABASE yhsq1;2、创建表CREATE TABLE student(stu_code VARCHAR(20),stu_name VARCHAR(20),stu_age INT,stu_sex CHAR(2));原创 2017-11-14 22:52:44 · 349 阅读 · 0 评论 -
JAVA基础学习之IO
一、IO目的程序与硬盘文件之间的交互1.从文件中读取数据给程序——输入流2.从程序中输出数据给文件——输出流二、File类1.对文件的操作使用File f = new File(directoryPath);方式创建一个File类的对象f,常用方法如下:2.对目录的操作三、字符流对象1.FileReader(字符输入流)2.F原创 2017-12-10 22:52:15 · 125 阅读 · 0 评论 -
JAVA基础学习之线程
一、进程、线程的区别1.进程就是在操作系统上执行的一个程序;比如:qq.exea.进程之间没有关系,都是相对独立的b.每个进程独享一部分内存及其他系统资源c.操作系统允许多进程(任务)处理模式2.线程是进程的一个实体表现a.进程由多个线程组成b.一个进程中的多个线程共享该进程的资源c.一个进程中的多个线程支持并发(多线程)3.cpu的时间片轮转原理和多线程的原创 2017-12-11 13:21:11 · 179 阅读 · 0 评论 -
JAVA进阶之Servlet、JSP
一、普通JAVA类转换成Servlet的条件 1.继承 HttpServlet 类 2.实现 HttpServlet 父类的方法 Ⅰ 父类的方法: init() ; 初始化方法在第一次加载或访问Servlet 控件时触发,只有一次 Ⅱ 父类的方法: service() ; 业务处理方法,只要加载过,直接进入,并且多次(多次请求)原创 2017-10-28 17:43:54 · 180 阅读 · 0 评论