- 博客(106)
- 收藏
- 关注
原创 JAVA之IO流,mysql主从复制原理简书
流的分类===================================================================文件字节输入流FileInputStream ----将文件中的数据读取出来=====================================================================================================FileInputStream in=new FileInputStream..
2021-11-13 13:53:55
992
原创 Java中遍历Map集合的五种方式,硬核
@Testpublic void testHashMap2() {Map<Integer, String> map = new HashMap<>();map.put(001, “Java”);map.put(002, “数据库”);map.put(003, “Vue”);System.out.println(map);// 通过Map.entrySet使用iterator遍历key和value;注意 Set entrySet():返回所有key-value对构成的Se
2021-11-13 13:51:56
306
原创 Java中级面试题及答案整理,mybatis运行原理总结面试
6、Spring的声明式事务管理力度是什么级别?Struts2是类级别的,Spring是方法级别的spring事务可以分为编程式事务和声明式事务7、spring MVC与struts2的区别:参考: http://blog.csdn.net/chenleixing/article/details/44570681① Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截② SpringMVC的方法之间基本上独立的
2021-11-13 13:49:47
350
原创 Java中的回调机制,这篇给你整的明明白白的,单点登录(Single-Sign-On)解决方案
但是这种方式, 由于方法a()不等待方法b()的执行完成, 在方法a()需要方法b()执行结果的情况下(视具体业务而定, 有些业务比如启异步线程发个微信通知、刷新一个缓存这种就没必要), 必须通过一定的方式对方法b()的执行结果进行监听.在Java中, 可以使用Future+Callable的方式做到这一点, 具体做法可以参见文章:http://www.cnblogs.com/xrq730/p/4872722.html3.回调====如下图所示, 回调是一种双向的调用方式, 其实而言, 回调也
2021-11-13 13:48:10
278
原创 Java中多态,java后端面试八股文
//抽象类的多态使用Fu f = new Zi();//创建接口interface Fu{public abstract void fun();}//创建实现类class Zi implements Fu{public void fun(){System.out.println(“重写接口抽象方法”);}}//接口的多态使用Fu f = new Zi();3、多态的特点必须有父子类关系或类实现接口关系,否则无法完成多态必须重写父类或接口类方法父类引用变量指
2021-11-13 13:45:58
167
原创 Spring Boot 实战 :入门篇,阿里java电话面试题
spring-boot-starter-thymeleaforg.springframework.bootspring-boot-starter-weborg.mybatis.spring.bootmybatis-spring-boot-starter2.0.1 org.mybatis.spring.bootmybatis-spring-boot-starter1.1.1mybatis-springorg.mybatisorg.mybatismybatis-s
2021-11-12 10:38:46
1557
原创 Spring boot 入门教程-自定义注解,三年经验月薪50k我是怎么做到的
3.2 注解中的ProceedingJoinPoint和JoinPoint说明1.pom.xml添加aop支持org.springframework.bootspring-boot-starter-aop2. 创建自定义注解@Documented@Retention(RUNTIME)@Target(METHOD)public @interface MyLog {String value() default “”;}@Documented 注解: Docume
2021-11-12 10:36:50
80
原创 RocketMQ 多副本前置篇:初探raft协议,java基础知识图谱
1、Leader选举1.1 一轮投票中,只有一个节点发起投票的情况1.2 一轮投票中,超过一个节点发起投票的情况1.3 思考如何实现Raft选主2、日志复制1、Leader选举1.1 一轮投票中,只有一个节点发起投票的情况Raft协议中节点有3种状态(角色):Follower跟随者。Candidate候选者。Leader领导者(Leader),通常我们所说的的主节点。首先3个节点初始状态为 Follower,每个节点会有一个超时时间...
2021-11-12 10:35:06
118
原创 Redis(十九),java的网络编程教程视频
unsigned lruclock:22;//。。。);每个Redis对象都会有一个lru属性,这个lru属性保存了对象最后一次被命令访问的时间struct redisObject(//…unsigned lru:22;);当服务器要计算一个数据库键的空转时间(注意这里是数据库键,也就是对应的键值对对象的空转时间),程序会用服务器的lruclock属性减去对象的lru属性记录的时间,得出的计算结果就是该对象的空转时间。serverCron函数默认会以每10秒一次的频率更新lruclock属
2021-11-12 10:33:11
88
原创 RedisUtils 操作五大集合 增删改查,月薪30K
/**写入String型,顺便带有过期时间 [ 键,值]@param key@param value@return*/public boolean setWithTime(final String key, Object value,int seconds) {boolean result = false;try {ValueOperations<Serializable, Object> operations = redisTemplate.opsFor
2021-11-12 10:31:30
312
原创 Quartz简介,java教程百度云比赛
Quartz 是什么What is the Quartz Job Scheduling Library?Quartz is a richly featured, open source job scheduling library that can be integrated within virtually any Java application - from the smallest stand-alone application to the largest e-commerce
2021-11-12 10:29:08
112
原创 MySQL有哪些存储引擎,各自的优缺点,应用场景,linux分区教程
支持热备份2.MyISAM引擎特性如下:不支持事务使用表级锁,并发性差主机宕机后,MyISAM表易损坏,灾难恢复性不佳可以配合锁,实现操作系统下的复制备份、迁移只缓存索引,数据的缓存是利用操作系统缓冲区来实现的。可能引发过多的系统调用且效率不佳数据紧凑存储,因此可获得更小的索引和更快的全表扫描性能3.MEMORY 存储引擎提供内存表,也不支持事务和外键。显著提高访问数据的速度,可用于缓存会频繁访问的、可以重构的数据、计算结果、统计值、中间结果。缺点如下:使用表级锁,虽然内存访问快,但
2021-11-12 10:23:09
105
原创 MySQL最全整理(面试题+笔记,Java开发自学教程
char、varchar2、varchar有什么区别?合并查询有哪些?SQL语句执行顺序null的含义MySQL、SqlServer、oracle写出字符存储、字符串转时间update【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 免费领取语句可以修改结果集中的数据吗?B树和B+树的区别你建过索引吗? 建索引的原则索引的类型, 如主键索引查看SQL执行计划有..
2021-11-12 10:21:31
103
原创 Java学习的重点难点是什么?新手入门有哪些门槛?,springboot依赖注入原理
首先是Java开发环境的各种版本选择,一般情况下我们需要从JDK官网下载最新版本的JDK文件(但是还需要注意你所学习的图书或者视频使用的是哪个版本的JDK),根据自己电脑的系统选择对应的安装包。其次在安装过程中一定要设置环境变量的路径,这个过程非常关键,会直接影响你的JDK是否可以正常使用。最终还要在“命令提示符”中验证,是否已经真正地完成了JDK的安装。Java学习第二个重点难点——变量的理解变量是入门Java开发的首个概念性的思维转变,目前所有的编程语言都是完成人类语言到机器语言的转变过渡方式。变
2021-11-11 22:50:18
79
原创 Java基础 - 面向对象思想,匿名对象,封装,java开发手册百度网盘
在一个java文件中写两个类:一个基本的类,一个测试类。建议:文件名称和测试类名称一致。B:如何使用对象?创建对象并使用格式:类名 对象名 = new 类名();D:如何使用成员变量呢?对象名.变量名E:如何使用成员方法呢?对象名.方法名(…)4.成员变量和局部变量的区别A:在类中的位置不同成员变量:在类中方法外局部变量:在方法定义中或者方法声明上B:在内存中的位置不同成员变量:在堆内存(成员变量属于对象,对象进堆内存)..
2021-11-11 22:48:22
54
原创 Java基础 - Scanner,String,mybatis底层工作原理
3.String类的概述A:String类的概述通过JDK提供的API,查看String类的说明可以看到这样的两句话。a:字符串字面值"abc"也可以看成是一个字符串对象。b:字符串是常量,一旦被赋值,就不能被改变。4.String类的构造方法A:常见构造方法public String():空构造public String(byte[] bytes):把字节数组转成字符串public String(byte[] bytes,int index,in
2021-11-11 22:46:37
157
原创 Java利用UDP协议建立广播组通信【附通信源码】,你不知道这份超详细JVM内存结构
发送数据包的过程如下:使用DatagramSocket()创建一个数据包套接字,使用DatagramPacket(byte[] buf,int offset,int length,InetAddress address,int port)创建要发送的数据包。使用DatagramSocket类的send()方法发送数据包。接收数据包的步骤如下:使用DatagramSocket(int port)创建数据包套接字,并绑定到指定的端口使用DatagramPocket(byte[
2021-11-11 22:44:42
499
原创 Java内存区域总结(堆、栈,kafka从入门到精通
定义局部变量表(Local Variable Table)是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。编译器确定容量在Java程序编译为class文件时,就在方法的Code属性的 max_locals 数据项中确定了 该方法所需要分配的局部变量表的最大容量。最小单位为变量槽(Slot)一个Slot 可以存放一个32位以内的数据类型,包括基本数据类型 (boolean、byte、char、short、int、float、long、double)「String 是引用类型」,对象引
2021-11-11 22:43:02
92
原创 Java中高级核心知识全面解析——常用框架,java面试jvm原理
二、IOC 解决了什么问题IOC 主要解决的是对象之间的耦合问题。例如:现有一个针对User的操作,利用 Service 和 Dao 两层结构进行开发在没有使用IOC思想的情况下,Service 层想要使用 Dao层的具体实现的话,需要通过new关键字在 UserServiceImpl 中手动 new出 IUserDao 的具体实现类 UserDaoImpl(不能直接new接口类)。很完美,这种方式也是可以实现的,但是我们想象一下如下场景:开发过程中突然接到一个新的需求,针对对IUserDao .
2021-11-11 22:40:39
413
原创 Java中高级核心知识全面解析——常用框架(Spring中-Bean-的作用域与生命周期)
@Service@Scope(“singleton”)public class ServiceImpl{}2.prototype——每次请求都会创建一个新的 bean 实例当一个bean的作用域为 prototype,表示一个 bean 定义对应多个对象实例。 prototype 作用域的bean 会导致在每次对该 bean 请求(将其注入到另一个 bean 中,或者以程序的方式调用容器的getBean() 方法)时都会创建一个新的 bean 实例。prototype 是原型类型,它在我们创建容器
2021-11-11 22:38:57
261
原创 Java中高级核心知识全面解析——JVM,nginx高并发调优
1.概述对于Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为每一个new操作去写对应的delete/free操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。2. 运行时数据区域Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK 1.8和之前的版本略有不同,
2021-11-11 22:36:43
173
原创 Java中高级核心知识全面解析——Dubbo,linux操作系统实用教程第二版课后答案
RPC原理是什么?服务消费方(client)调用以本地调用方式调用服务;client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;client stub找到服务地址,并将消息发送到服务端;server stub收到消息后进行解码;server stub根据解码结果调用本地的服务;本地服务执行并将结果返回给server stub;server stub将返回结果打包成消息并发送至消费方;client stub接收到消息,并进行解码;服务消费方得到最终结果。下
2021-11-11 22:34:41
134
原创 Java中的几种线程池详解,【性能优化实战】
子类对象可以当作基类的对象来使用,称作向上转型(upcasting),反之称为向下转型(downcasting)当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!是否有一个全局视角来查看
2021-11-11 22:33:04
79
原创 JDK新特性——Stream代码简洁之道,讲的真详细
strs1.forEach(System.out::println);//打印输出(a、b、c、d)}4.2 通过集合来生成//通过集合来生成static void gen2(){List list = Arrays.asList(“1”,“2”,“3”,“4”);Stream stream = list.stream();//获取一个顺序流stream.forEach(System.out::println);//打印输出(1,2,3,4)}4.3 通过Stream.generate方法
2021-11-10 13:38:42
134
原创 JDK15已发布,网友:我还在JDK8踏步走---,java工程师面试题
下面这张图,便能帮助你更容易理解快迭代的好处,Java10之前,每次更新的JEP数量都是Java10之后版本的几倍甚至几十倍~~Java15做了哪些改变?我先在自己的系统上安装好最新版本运行一下,是否安装成功?看来没得问题,那咱们去官网看看具体的JEPs列表,如下![](https://upload-images.jianshu.io/upload_images/13465705-3e9670e1424ee20c.png?imageMogr2/auto-orient/strip%7Cimag
2021-11-10 13:36:46
83
原创 Java面试题总结(乱序版,2020-09-19),高并发下Java程序的GC问题排查
增加新项时,如果队列满了,add会抛出异常,offer返回false。2、poll()和remove()区别:poll()和remove()都是从队列中删除第一个元素,remove抛出异常,poll返回null。3、peek()和element()区别:peek()和element()用于查询队列头部元素,为空时element抛出异常,peek返回null。二、如何让 Java 的线程彼此同步?synchronizedvolatileReenreantLock使用局部变量
2021-11-10 13:35:01
339
原创 java面试资料整理,java报表开发技术
4:泛型擦除(可能你知道泛型擦除,但是你知道为什么要进行泛型擦除么)java和c#都有对泛型进行使用,但是java中得泛型是伪泛型,只有在编译期有效,具体效果也是用来在编译期对集合之类和数据集合进行类型校验。但是要注意得是泛型是在jdk1.5后推广得,这就为了兼容之前得jdk得版本,导致了泛型必须进行擦除。5:代码如下Integer a = new Integer(50);Integer b = new Integer(50);System.out.println(a==b);上面结果为t
2021-11-10 13:33:06
558
原创 Java面试官问我懂不懂LinkedHashMap,我一口气说了五分钟
public class LinkedHashMap<K,V>extends HashMap<K,V>implements Map<K,V>{}此外,LinkedHashMap 内部又追加了双向链表,来维护元素的插入顺序。注意下面代码中的 before 和 after,它俩就是用来维护当前元素的前一个元素和后一个元素的顺序的。static class Entry<K,V> extends HashMap.Node<K,V> {Linked
2021-11-10 13:31:26
612
原创 Java面试之基础及语法,2021Java通用流行框架大全
10、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别?【基础】答:区别主要有两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型b.逻辑操作不会产生短路。11、heap 和stack 有什么区别?【基础】答:栈是一种线形集合,其添加和删除元素的操作应在同一段完成,栈按照后进先出的方式进行处理;堆是栈的一个组成元素。12、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 【基础】答:Math.
2021-11-10 13:29:03
77
原创 Java集合,java分层架构
========================================================================1.集合是什么?集合是接口。是用来存放对象引用的一个容器。集合有三大接口:1.Set接口及其子类,Set提供的是一个无序的集合;2.List接口及其子类,List提供的是一个有序的集合;3.Map接口及其子类,Map提供的是一个映射关系的集合数据结构;注:List和Set继承Collection,Map不是。2.Collection(1).Co
2021-11-10 13:27:21
95
原创 Java虚拟机:什么是Java,kafka架构和原理
======让我们来看一下Java的广告词,来自http://www.java.com/zh_CN/about/:97%的企业桌面运行Java美国有89%的桌面(或计算机)运行Java全球有900万Java开发人员开发人员的头号选择排名第一的部署平台有30亿部移动电话运行Java100%的蓝光盘播放器附带了Java有50亿张Java卡在使用1.25亿台TV设备运行Java前5个原始设备制造商均提供了Java ME很牛逼不是吗?OK,这么牛逼
2021-11-10 13:25:07
1980
原创 java继承和多态,Java面试真题精选
继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。生活中也有许多继承的例子,如图:继承的基本语法class 子类 extends 父类{}【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 免费领取注意:使用 extends 指定父类.Java
2021-11-10 13:23:05
221
原创 Java笔记 —— Set集合的去重原理(源码分析),java面试场景设计题
public class demo1 {public static void main(String[] args) {HashSet set1 = new HashSet<>();set1.add(“hello”);set1.add(“java”);set1.add(“hive”);set1.add(“flume”);set1.add(“hello”);set1.add(“hive”);for(String s : set1){System.out.println(s);
2021-11-10 13:21:28
685
原创 JSP“三大请求传参方式”及,面试复盘
使用JSP的forward或include动作,利用传参数子动作实现参数的传递,‘在JSP或HTML页面中,利用表单传递参数,利用追加在网址后的参数传递或追加在超链接后的参数传递**需注意的是:**在上述的三种传参方式中,方式1和方式3属于get类型的参数提交方式,而方式2属于get或post方式的参数提交方式,它可以通过form的method属性进行参数的选择,get请求与post请求的不同之处是前者参数会显示在地址栏。get请求:post请求:一、访问请求参数的方法=..
2021-11-09 12:15:12
543
原创 Java面试题超详细整理《JVM篇》,nginx优化面试题
简述java类加载机制?Java中的所有类,都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的java类型。Java类的加载是动态的,它并不会一次性将所有类全部加载后再运行,而是保证程序运行的基础类(像是基类)完全加载到jvm中,至于其他类,则在需要的时候才加载。当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。.
2021-11-09 12:13:16
761
原创 Java面试题原理和底层,韩顺平java视频教程百度云盘
同步代码块是使用monitorenter和monitorexit指令实现的, ,当且一个monitor被持有之后,将处于锁定状态。线程执行到monitorenter指令时,将会尝试获取对象所对应的monitor所有权,即尝试获取对象的锁;Java对象头和monitor是实现synchronized的基础!synchronized存放的位置:synchronized用的锁是存在Java对象头里的。Java对象头包括:Mark Word(标记字段): 用于存储对象自身的运行时数据, 如哈希码(HashC
2021-11-09 12:11:31
628
原创 Java面试经验,javaspring框架面试
如果是链表的Node,则封装为链表Node,尾插法,插入到链表的最后位置去,(因为尾插法,需要遍历链表,同时统计节点数,在遍历链表的过程中会判断是否存在当前key,如果参在更新value,当遍历完毕之后,就插到尾部,插入之后如果当前节点个数大于等于8,则会把这个链表转化成为红黑树)将key和value封装位Node插入红黑树和链表之后,在判断时候需要扩容,如果需要就扩容,不需要就介绍PUT方法。1.7 是先判断是否需要扩容,再插入1.8是先插入,在判断。参考源码:效果最好!2..
2021-11-09 12:09:36
217
原创 Java面向对象封装和继承,java实现即时通讯的架构
什么是面向过程、面向对象?面向过程与面向对象都是我们编程中,编写程序的一种思维方式。面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程。例如:公司打扫卫生(擦玻璃、扫地、拖地、倒垃圾等),按照面向过程的程序设计方式会思考“打扫卫生我该怎么做,然后一件件的完成”,最后把公司卫生打扫干净了。面向对象的程序设计方式,是遇到一件事时,思考“我该让谁来做”,然后那个“谁”就是对象,他要怎么做这件事是他自己的事,反正最后一群对象合力能把事就好就行了。例如,公司打扫卫生(擦玻璃
2021-11-09 12:05:33
124
原创 Java集合框架(四),linux视频教程
这个抽象类也是默认实现了一些Map接口里面的方法,同时有两个静态内部类实现了Entry接口这两个静态内部类的不同之处就在于,SimpleEntry实现了setValue方法(这个方法用来修改当前节点的value),而SimpleImmutableEntry没有实现setValue方法,单纯只是抛出了一个UnSupport异常出来注释的意思就是,使用这个节点会不支持改变值,那么就可以保证线程安全,线程不安全可能是因为获取的那个oldValue会丢失掉上一个线程的修改,即A、B两个线程同时setVal.
2021-11-09 12:03:51
111
原创 Java进阶——带你入门分布式中的Nginx,字节跳动java面试题数据结构与算法
server 192.168.78.200 backup; #预留的备份服务器server 192.168.78.33 down; #当前服务器不参与负载均衡}ip_hash 配置upstream web_server{ip_hash;server 192.168.78.120;server 192.168.78.123;server 192.168.78.33 down; #如果这台服务器宕机,则用down表示当前服务器暂不参与负载均衡}使用 ip_hash 的时候,不能使用 weigh
2021-11-09 12:01:36
533
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人