- 博客(40)
- 收藏
- 关注
原创 Java并发编程(实战,大V推荐
在 Java 语言里,等待 - 通知机制可以有多种实现方式,比如 Java 语言内置的 synchronized 配合 wait()、notify()、notifyAll() 这三个方法就能轻松实现。如何用 synchronized 实现互斥锁,你应该已经很熟悉了。在下面这个图里,左边有一个等待队列,同一时刻,只允许一个线程进入 synchronized 保护的临界区(这个临界区可以看作大夫的诊室),当有一个线程进入临界区后,其他线程就只能进入图中左边的等待队列里等待(相当于患者分诊等待)。这个等待队列和
2021-08-11 17:16:19
234
原创 Java并发编程之Java创建线程的三种方式,2021Java通用流行框架大全
RunnableDemo demo = new RunnableDemo();Thread thread = new Thread(demo);thread.start();}}这是一种基于接口的方法,比继承Thread灵活得多,但是它需要创建一个更线程化的对象。打开源代码,可以发现当Runnable实现类的实例作为参数目标传入时,它被分配给当前线程类的目标,而在run()中执行的程序是分配给该目标的run()方法。public Thread(Runnable target) {
2021-08-11 17:15:11
282
原创 Java并发编程—实现线程的方式只有一种,手握5家大厂offer
public interface Runnable { public abstract void run();} 无论是使用Thread还是Runnable都无法返回值,这一点是它们的共同缺点。JDK1.5之后提出了Callable。Callable接口更像是Runnable接口的增强版,相比较Runable接口,Call()方法新增捕获和抛出异常的功能;Call()方法可以返回值Future接口提供了一个实现类FutureTask实现类,FutureTaks类用来保存Ca.
2021-08-11 17:14:03
186
原创 Java并发多线程编程,阿里一线架构师技术图谱
private String taskName;//任务名称//任务构造器public ComputeTask(String taskName) { this.taskName = taskName; System.out.println("创建【计算任务】开始,计算任务名称:" + taskName);}//计算任务的方法@Overridepublic Integer call() throws Exception { Integer resu
2021-08-11 17:12:52
121
原创 Java工程师的进阶之路-Kafka篇(二,字节跳动Java岗经典面试真题
在 broker 停机、出现分区或者长时间垃圾回收停顿时,broker 会从 ZooKeeper 上断开连接,此时 broker 在启动时创建的临时节点会从 ZooKeeper 中移除。监听 broker 列表的 Kafka 组件会被告知该 broker 已移除。在关闭 broker 时,它对应的节点也会消失,不过它的 ID 会继续存在其他数据结构中,例如主题的副本列表中,副本列表复制我们下面再说。在完全关闭一个 broker 之后,如果使用相同的 ID 启动另一个全新的 broker,它会立刻加入集群,
2021-08-11 17:11:45
146
原创 Java工程师的进阶之路-Kafka篇(一,整理了3家面试问题:美团+字节+腾讯
可恢复性:系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。顺序保证:在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。(Kafka 保证一个Partition 内的消息的有序性)缓冲:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。异步通信:很多时候,用户不想也不需要立.
2021-08-11 17:10:30
191
原创 Java岗大厂面试百日冲刺 - 日积月累,每日三题,Java资源百度云盘
连接点(Joint point):是程序执行的一个点。例如,一个方法的执行或者一个异常的处理。在 Spring AOP 中,一个连接点总是代表一个方法执行。织入(Weaving):就是通过动态代理,在目标对象方法中执行处理内容的过程。目标对象(Target Object) :被一个或者多个切面所通知的对象。AOP代理(AOP Proxy) 在Spring AOP中有两种代理方式,JDK动态代理和CGLIB代理。追问1:Advice通知的类型有哪几种?在AOP术语中,切面的工作..
2021-08-11 17:09:26
180
原创 Java岗大厂面试百日冲刺 - 日积月累,每日三题(9),蚂蚁金服Java面试题
解决方案根据 Permgen space 报错的时机,可以采用不同的解决方案,如下所示:程序启动报错,修改 -XX:MaxPermSize 启动参数,调大永久代空间。应用重新部署时报错,很可能是没有应用没有重启,导致加载了多份 class 信息,只需重启 JVM 即可解决。运行时报错,应用程序可能会动态创建大量 class,而这些 class 的生命周期很短暂,但是 JVM 默认不会卸载 class,可以设置 -XX:+CMSClassUnloadingEnabled 和 -XX:+Us
2021-08-11 17:08:18
115
原创 Java多线程面试重点,SpringIOC中复杂属性如何“巧妙
}下面我们将依次讲解如何给赋值属性赋值。**1、为类属性赋值**------------以上面的person类为例,我们为其中的Car属性进行赋值,我们知道car在这里也是一个javaBean,其中也包含很多属性,那么应该如何对其进行赋值呢?这里介绍两种方法:### **(1)、引用赋值**我们可以先在IOC中对一个Car对象赋好值,然后在对person对象中的car属性进行赋值时,直接使用ref进行引用即可。如下在xml配置文件中:
2021-08-10 13:28:31
93
原创 Java多线程实现方式及并发与同步,【Java数据结构与算法
二叉树(binary tree)是指树中节点的度不大于 2 的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树相关术语:结点:包含一个数据元素及若干指向子树分支的信息结点的度:一个结点拥有子树的数目称为结点的度叶子结点:也称为终端结点,没有子树的结点或者度为零的结点分支结点:也称为非终端结点,度不为零的结点称为非终端结点树的度:树中所有结点.
2021-08-10 13:27:21
147
原创 Java多线程入门篇,Java程序员的春天
1.1 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。简单来说,线程可以理解成为在进程中独立运行的子任务。比如,QQ.exe运行中就有很多的子任务在同时运行。1.2 进程和线程的区别1.2.1 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 。1.2.2 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行。1.2.3 拥有资源:进程是拥有资源的一个独立单位,线程自己基本上不拥有系统资源,只拥有一点在运行中
2021-08-10 13:26:14
124
原创 Java基础,Java面试手册升级版
例:int num = 100; 变量是保存一个可以改变的值赋值:使用赋值运算符 (=) 可以给变量或常量进行赋值操作变量和长量都是有数据类型的,保存的值必须是指定类型的值在Java中变量的使用需要注意:1) 变量必须先定义,才能使用2) 变量必须要进行初始化操作 如果有分支,必须保证每一个分支都给变量赋值例: int sum; if(s){ num = 1; }else{ num = 2; } System
2021-08-10 13:25:02
106
原创 Java基础面试题,jvm原理面试题
// 1. 创建对象流FileInputStream fis = new FileInputStream(“d:\stu.bin”);ObjectInputStream ois = new ObjectInputStream(fis);// 2. 读取文件(反序列化)Student s = (Student)ois.readObject();// 3. 关闭ois.close();sout(“执行完毕”);sout(s.toString());}**序列化注意事项** [白嫖
2021-08-10 13:23:55
134
原创 Java基础面试题大全带答案,Redis进阶之路:深析Redis单线程架构
Redis客户端与服务端的模型可以简化成下图,每次客户端调用都经历了发送命令、执行命令、返回结果三个过程。我们说的单线程就是在第二步执行命令,一条命令从从客户端达到服务端不会立刻被执行,而是会进入一个队列中等待,每次只会有一条指令被选中执行。发送命令、返回结果、命令排队这些就不是那么简单了,例如Redis使用了I/O多路复用技术来解决I/O的问题。1.2、Redis为什么要使用单线程这是官方的解释:https://redis.io/topics/faq官方FAQ表示,因为Redis是基于内
2021-08-10 13:22:40
178
原创 Java基础语法教学视频,MySql知识体系总结(SQL优化篇
备注:因为mysql优化器的缘故,与索引顺序不一致,也会触发索引,但实际项目中尽量顺序一致。5、联合索引,但其中一个条件是 >6、联合索引,order bywhere和order by一起使用时,不要跨索引列使用。三、单表sql优化1、删除student表中的联合索引。2、添加索引alter table student add index student_union_index(name,age,sex);优化一点,但效果不是很好,因为type是index类型,extr
2021-08-10 13:21:37
5383
原创 java基础练习0723:会员系统,Java工程师面试题
} return 0;}public String getName() { return name;}public void setName(String name) { this.name = name;}public String getAccountNumber() { return accountNumber;}public void setAccountNumber(String accountNumb...
2021-08-10 13:20:29
289
原创 Java实现文件切割拼接,springboot教程下载
/** * 将分割好的文件重新链接 * @param filePath 被分割好的其中之一文件路径,默认其他块与其在同一目录下 * @param howManyParts 一共有多少块 * @return 成功返回True,出错则返回False */public static boolean glue(Path filePath, int howManyParts){ return true;}}接下来实现单线程的分割方法: 用图解的话应该是这样:!
2021-08-09 14:30:21
207
原创 Java实现数据结构中的八种排序方法,Java入门教程
} System.out.println(Arrays.toString(data)); }} [](https://gitee.com/vip204888/java-p7)5、快速排序------------------------------------------------------------------------快速排序的基本思想是:通过一趟排序将待排的元素划分为独立的两部分,成为前半区和后半区。前半区中的元素都不大于后半区中的元素。然后再分别对这两部..
2021-08-09 14:29:09
304
原创 java实现RS信号报告,Java岗面试必问
6—Good signals7—Moderately strong signals8—Strong signals9—Extremely strong signals现在,你的程序要读入一个信号报告的数字,然后输出对应的含义。如读到59,则输出:Extremely strong signals, perfectly readable.代码展示import java.util.Scanner;public class RS { public static void main(
2021-08-09 14:27:55
114
原创 java实现RS信号报告(1),Java面试题基础知识
9—Extremely strong signals现在,你的程序要读入一个信号报告的数字,然后输出对应的含义。如读到59,则输出:Extremely strong signals, perfectly readable.代码展示import java.util.Scanner;public class RS { public static void main(String[] args) { System.out.print("输入RS值:"); Scanner i
2021-08-09 14:26:50
166
原创 Java学到什么程度才算精通?,Java多线程面试题总结
4 最后,要注意的是,Web相关的一些基本知识,比如HTTP协议,网络安全基础,也是我们要考虑的部分。2.4 Java并发技术Java的并发技术泛指Java的多线程技术,以及JUC包里的并发类,比如线程池,并发工具类,阻塞队列等等。Java并发技术完全可以独立出来学习,是Java进阶知识的一大重点。2.5 Java网络编程和服务器这一块内容是Java中比较复杂但也很重要的一块内容。比如BIO,NIO,AIO的一些使用和原理,以及tomcat这类web服务器,甚至是netty这种网络编程框架,都是可
2021-08-09 14:25:45
258
原创 Java学到什么程度才算精通?(2),学海无涯
2.5 Java网络编程和服务器这一块内容是Java中比较复杂但也很重要的一块内容。比如BIO,NIO,AIO的一些使用和原理,以及tomcat这类web服务器,甚至是netty这种网络编程框架,都是可以去了解和学习的内容。2.6 Jvm基础与调优JVM是提供Java程序运行的一个进程,学习JVM知识,也是我们的必经之路。除了看懂《深入理解jvm虚拟机》以外,我们还要学习的内容就是JVM调优,使用合适的工具诊断问题,最后解决问题。这部分内容在面试中呈现的不仅仅是GC,内存分区,以及类加载器,也包括了
2021-08-09 14:24:31
131
原创 Java学到什么程度才算精通?(1),网易架构师深入讲解Java开发
Java并发技术完全可以独立出来学习,是Java进阶知识的一大重点。2.5 Java网络编程和服务器这一块内容是Java中比较复杂但也很重要的一块内容。比如BIO,NIO,AIO的一些使用和原理,以及tomcat这类web服务器,甚至是netty这种网络编程框架,都是可以去了解和学习的内容。2.6 Jvm基础与调优JVM是提供Java程序运行的一个进程,学习JVM知识,也是我们的必经之路。除了看懂《深入理解jvm虚拟机》以外,我们还要学习的内容就是JVM调优,使用合适的工具诊断问题,最后解决问题。
2021-08-09 14:23:20
139
原创 MySQL没有RowNum,那我该怎么按,Java技术类校招面试题汇总
这张表有20w行数据,其中第8w条 - 15w条是多余的,也不能重新导,因为可能其他公司的同事已经在处理了,这时该怎么删除多余数据呢?为了不被领导邀请爬山,他找到我求救。小刘:“哈哥,救命救命,这MySQL没有自增主键,我咋删除第[8w,15w]的数据啊?”陈哈哈:“啊?MySQL又没有rowNum,那咋搞啊?我不会,不会~”小刘:“一顿串儿!哈哥快来”陈哈哈:“哎呀,我这活儿急得一匹,下午再说吧。”小刘:“今儿晚上,望京小腰,不请我是你儿子!”陈哈哈:“什么串儿串儿
2021-08-08 17:52:56
337
原创 MySQL数据克隆的用户权限设计,Java最新大厂面试真题总结
到了交付的时机了,我们想到还有一个关键的地方需要补充,那就是数据库和用户的权限关联,也就意味着每个人可以看到和使用的数据库应该是不大一样的,因为做一些权限隔离,所以接下来我会说说数据克隆方向的用户权限设计。数据克隆的用户权限设计是面向业务使用的基础功能,目前对于用户权限的设计可以基于数据库级别。权限的实现可以分两个阶段来完成:1)数据初始化阶段,可以使用用户组批量初始化的方式,部分数据可以从工单历史中获取2)定制化配置阶段,根据业务需求变更和组织架构调整进行数据库和用户映射关系的微调其中,实例
2021-08-08 17:51:48
166
原创 MySQL数据中有很多换行符和回车符,五面拿下阿里飞猪offer
对了,没时间废话,等米下锅的朋友请点击目录直接跳转到方法操作区,请拿好飞机票;飞机票1、如何去掉换行符、回车符2、SELECT如何忽略"换行符、回车符"进行查询3、经验总结附、一张有故事的照片(六)我到公司后先测试一下客户给我的错误示例(果然搜不到),然后排查一下昨天的数据是否有问题,发现昨天客户用excel导入的数据中,存在很多\r\n这种换行符和回车符。如:库中数据为:“换行符\n换行符\n换行符”,然后在界面通过如下SQL查询,那自然是搜不到咯!SELECT *
2021-08-08 17:50:41
681
原创 MySQL8,2021Java大厂面试题来袭
#include<cstdio>#include<algorithm>#include<queue>#include<cstring>using namespace std;struct data{ int to,next,val;}e[2*100005];int cnt,head[10005],prep[10005],pree[10005],flow[10005],ans;queue<int> qu.
2021-08-08 17:49:31
124
原创 MySQL-数据库优化,看这篇就够了,互联网公司常用分库分表方案汇总
显示:其中会显示索引和查询数据读取数据条数等信息.2.1.2 优化子查询在MySQL中,尽量使用JOIN来代替子查询.因为子查询需要嵌套查询,嵌套查询时会建立一张临时表,临时表的建立和删除都会有较大的系统开销,而连接查询不会创建临时表,因此效率比嵌套子查询高.2.1.3 使用索引索引是提高数据库查询速度最重要的方法之一,关于索引可以参高笔者<MySQL数据库索引>一文,介绍比较详细,此处记录使用索引的三大注意事项:1、LIKE关键字匹配’%'开头的字符串,不会使用索引.2、OR关
2021-08-08 17:48:23
93
原创 MySQL 事务隔离级别,教你抓住面试的重点
分别在两个 session 中执行事务,在 T2 中对 ID 为 1 记录进行修改:# T1mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> select * from accounts where id = 1;+----+-------+---------+---------------------+---------------------+| id | owner | balance | creat
2021-08-08 17:47:10
109
原创 MyBatis整体架构分析:基础支持层,Java高级程序员的要求
MyBatis 的整体架构分为三层, 分别是基础支持层、核心处理层和接口层,如下图所示。基础支持层反射模块该模块对 Java 原生的反射进行了良好的封装,提供了更加简洁易用的 API ,方便上层使调用,并且对反射操作进行了一系列优化,例如缓存了类的元数据,提高了反射操作的性能。类型转换模块类型转换模块提供了两个主要功能,一个功能是别名机制,MyBatis 为了简化配置文件提供了别名机制;另一个功能是实现 JDBC 类型与 Java 类型之间的转换,该功能在为 SQL 语句绑定实参以及映射查询结果
2021-08-08 17:46:05
125
原创 Mybatis常考面试题汇总(附答案,Java程序员必备
#{}解析传递进来的参数数据${}对传递进来的参数原样拼接在SQL中#{}是预编译处理,${}是字符串替换。使用#{}可以有效的防止SQL注入,提高系统安全性。2、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?当实体类中的属性名和表中的字段名不一样 ,怎么办 ?第1种: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致 <select id=”selectorder” parametertype=”int” resultety..
2021-08-08 17:44:40
267
原创 Java开发工程师应届生面试题,阿里专家原创Kafka学习笔记
3.4 KafkaConsumer 分析Kafka源码篇——Kafka服务端4.1网络层4.2API层4.3日志存储4.4 DelayedOperationPurgatory组件4.5副本机制4.6 KafkaController4.7 GroupCoordinator4.8身份认证与权限控制4.9Kafka监控Kafka源码篇——Kafka Tool5.1 kafka-server-start脚本5.2kafka-topics脚本5.3 kafka-pr
2021-08-07 04:35:18
83
原创 Java开发岗还不会这些问题,不是吧阿sir(4)
吊打面试官——Redis篇1、为什么使用Redis白嫖资料 速度快,完全基于内存,使用C语言实现,网络层使用epoll解决高并发问题,单线程模型避免了不必要的上下文切换及竞争条件; 与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外,Redis 也经常用来做分布式锁。除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。
2021-08-07 04:34:00
145
原创 Java开发实战讲解,Java连接MongoDB集群的几种方式(1)
所有资源使用限制(例如,最大连接等)适用于每个MongoClient实例。要关闭一个实例,调用MongoClient.close() 来清理资源。连接到一个独立的MongoDB实例以下几种方法:MongoClient mongoClient = new MongoClient( "host1" , 27017 );MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://host..
2021-08-07 04:32:44
571
原创 Java开发大厂面试经验,Java学习路线和方法推荐
六、常用工具非常重要!非常重要!特别是 Git和 Docker。IDEA:熟悉基本操作以及常用快捷。Maven :建议学习常用框架之前可以提前花半天时间学习一下Maven的使用。(到处找 Jar 包,下载 Jar 包是真的麻烦费事,使用 Maven 可以为你省很多事情)。Git :基本的 Git 技能也是必备的,试着在学习的过程中将自己的代码托管在 Github 上。Docker :学着用 Docker 安装学习中需要用到的软件比如 MySQL ,这样方便很多,可以为你节省不少时间。利用常
2021-08-07 04:31:21
215
原创 Java开发基础面试题,非本小伙花了两年从小公司到蚂蚁金服,面试经验分享
一面:1 自我介绍2 讲一下ArrayList和linkedlist的区别,ArrayList的扩容方式,扩容时机。3 hashmap的实现。4 NIO了解么,讲一下和BIO的区别,AIO呢。阻塞,非阻塞,异步。具体。5 你说了解分布式服务,那么你怎么理解分布式服务。6 你说了解Tomcat的基本原理,了解的是哪一部分,基本架构,connector和container7 你在项目中怎么用到并发的8 docker和虚拟机讲一下。9 有啥想问的蚂蚁金服中间件二面1 项目2 说一下Spri
2021-08-07 04:30:01
383
原创 Java开发入门教程,腾讯架构师首发:10万字Mysql实战文档
###前言MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。这份PDF真的是很全面了,几乎包括了MySQL中所有操作。以下是pdf的目录,由于目录过长,所以只截图一部分。第1部分:基础篇第2部分:开发篇第3部分:优化篇第4部分:管理维护篇内容展示MySQL学习脑图###
2021-08-07 04:28:39
126
原创 Java开发人员不得不收集的代码,Java中高级核心知识全面解析(11)
以上图为例:路由键为 “com.rabbitmq.client” 的消息会同时路由到 Queuel 和 Queue2;路由键为 “com.hidden.client” 的消息只会路由到 Queue2 中;路由键为 “com.hidden.demo” 的消息只会路由到 Queue2 中;路由键为 “java.rabbitmq.demo” 的消息只会路由到Queuel中;路由键为 “java.util.concurrent” 的消息将会被丢弃或者返回给生产者(需要设置 mandatory 参数),.
2021-08-07 04:27:17
124
原创 Java开发五年,Java匹马行天下之一顿操作猛如虎,框架作用知多少
SpringSpring框架大家都听过吧,这个框架特别重要,在目前整个市场上来看的话是基本上有一个一统江湖的趋势。Spring是整个Java体系里使用频率最高,稳定性最好,而且在各个领域都能遇到的一个框架。那什么是Spring呢?其实你可以把Spring理解为一个管家,如果我们不用Spring的话,我们之前写的代码实际上是杂乱无章的,这一块,那一块,然后用各种各样的关联关系把它们绑在一起,整个项目是杂乱无章的,那么我们用了Spring之后,它就把每个区域的代码进行分离,自己是自己的,然后由Spring在中
2021-08-07 04:25:59
109
原创 Java开发了解这些自然无惧面试,2020最后一次Java面试
Java 序列化中如果有些字段不想进行序列化 怎么办?构造器 Constructor 是否可被 override?java 异常体系?RuntimeException Exception Error 的区别,举常见的例子字符型常量和字符串常量的区别?在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?2 集合集合这块关注一下 1.8 的实现吧,和 1.7 相比变化了很多ArrayList和linkedList的区别?堆是怎么存储的,插入是在哪里?..
2021-08-07 04:24:37
141
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人