
Java
文章平均质量分 85
编程-资料库
公宗号【编程资料库】
展开
-
Java中高级核心知识全面解析(3),记一次字节跳动Java研发岗的面试经历
传统的开发方式:往往是在类A中手动通过new关键字来 new 一个B的对象出来使用IOC思想的开发方式: 不通过new关键字来创建对象,而是通过IOC容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从IOC容器里面过去即可。从以上两种开发方式的对比来看:我们 “丧失了一个权力” (创建、管理对象的权力),从而也得到了一个好处(不用再考虑对象的创建、管理等一系列的事情)1.为什么叫控制反转控制: 指的是对象创建(实例化、管理)的权力反转: 控制权交给外部环境(Spring框架原创 2021-09-02 10:49:21 · 69 阅读 · 0 评论 -
Java中高级核心知识全面解析(2),netty实战百度网盘
}else if (current == getExclusiveOwnerThread()) { int nextc = c + acquires; if (nextc < 0) throw new Error("Maximum lock count exceeded"); setState(nextc); return true; }return false; } }非公平锁的 lock 方法:```javastatic final class Nonfai原创 2021-09-02 10:47:32 · 201 阅读 · 0 评论 -
Java中高级核心知识全面解析(2),Java开发面试题带答案下载
@GetMapping("/users")public ResponseEntity<List> getAllUsers() {return userRepository.findAll();}## 2.POST 请求`@PostMapping("users")` 等价于`@RequestMapping(value="/users",method=RequestMethod.POST)`关于 `@RequestBody` 注解的使用,在下面的“前后端传值”这块会讲到。```jav原创 2021-09-02 10:45:53 · 177 阅读 · 0 评论 -
Java中高级核心知识全面解析(1),Java常见面试题及答案
程序设计者很多时候都喜欢用一些特殊的数字表示固定的文件类型或者其它特殊的含义。2.Class文件版本u2 minor_version;//Class 的小版本号 u2 major_version;//Class 的大版本号紧接着魔数的四个字节存储的是 Class 文件的版本号:第五和第六是次版本号,第七和第八是主版本号。高版本的 Java 虚拟机可以执行低版本编译器生成的 Class 文件,但是低版本的 Java 虚拟机不能执行高版本编译器生成的 Class 文件。所以,我们在实际开发的时候要确原创 2021-09-02 10:44:16 · 152 阅读 · 0 评论 -
Java中的几种线程池详解,linux学习路线图
CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。对象转型(casting)一个基类的引用类型变量可以“指向”其子类的对象。一个基类的引用不可以访问其子类对象原创 2021-09-02 10:42:30 · 580 阅读 · 0 评论 -
Java中抽象类和接口的区别,2021Java进阶学习资料
下面要注意一个问题:在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类不一定必须含有抽象方法。个人觉得这个属于钻牛角尖的问题吧,因为如果一个抽象类不包含任何抽象方法,为何还要设计为抽象类?所以暂且记住这个概念吧,不必去深究为什么。[public] abstract class ClassName { abstract void fun();}从这里可以看出,抽象类就是原创 2021-09-02 10:40:51 · 104 阅读 · 0 评论 -
Java后端知识体系,恐怖!ThreadLocal引起的一次线上事故
这样也是避免我们不断加入重复的用户信息。因为同一个线程对应的只可能是一个用户。思考public static UserInfo getUser() { return userThreadLocal.get();} 上面是我们工具类的get方法。这就是将ThreadLocal对象存储的内容返回出去。这一步应该不会出现问题。在getUser中很明显没有问题,我们利用排除法只剩下了setUser了。虽然排除了别人的嫌疑但是setUser我还是看不出有什么问题。经过一阵debug断点跟原创 2021-09-01 10:15:26 · 272 阅读 · 0 评论 -
Java反射机制的那些事儿,掌握这些知识点再也不怕面试通不过
Class.forName(“全限定名(包名 + 类名)”);补充:Class对象分两种1.普通Class对象:基于 引用类型2.预定义(在jvm中的)Class对象:基于 基本类型 和 void反射机制的几种作用:在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的成员变量和方法在运行时调用任意一个对象的方法先准备一个类:package com.test.demo;public class St.原创 2021-09-01 10:12:28 · 101 阅读 · 0 评论 -
java分库关联查询的工具,美团Java开发面试
/*** * 将通过keyName获得对应的bean对象的get方法名称的字符串 * @param keyName 属性名 * @return 返回get方法名称的字符串 */ private static String makeGetMethodName(String keyName){ //:::将第一个字母转为大写 String newKeyName = transFirstCharUpperCase(k.原创 2021-09-01 10:09:10 · 125 阅读 · 0 评论 -
Java中高级核心知识全面解析——类文件结构,当上项目经理才知道
1.魔数u4 magic; //Class 文件的标志每个 Class 文件的头四个字节称为魔数(Magic Number),它的唯一作用是确定这个文件是否为一个能被虚拟机接收的 Class 文件。程序设计者很多时候都喜欢用一些特殊的数字表示固定的文件类型或者其它特殊的含义。2.Class文件版本u2 minor_version;//Class 的小版本号 u2 major_version;//Class 的大版本号紧接着魔数的四个字节存储的是 Class 文件的版本号:第五和第六是次版本原创 2021-08-31 10:32:23 · 87 阅读 · 0 评论 -
Java中高级核心知识全面解析——Redis,最新Java开发面试解答
SET key2 value2OKMGET key1 key2 key3 # 返回一个列表“value1”“value2”(nil)MSET key1 value1 key2 value2MGET key1 key2“value1”“value2”#### ⑤、过期和 SET 命令扩展可以对 key 设置过期时间,到时间会被自动删除,这个功能常用来控制缓存的失效时间。(**过期可以是 任意数据结构**)```java> SET key value1 >.原创 2021-08-31 10:30:33 · 171 阅读 · 1 评论 -
Java中高级核心知识全面解析(5),这4种高可用RocketMQ集群搭建方案
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。三、一致性协议/算法早在1900年就诞生了著名的 Paxos经典算法 (Zookeeper就采用了Paxos算法的近亲兄弟Zab算 法),但由于Paxos算法非常原创 2021-08-31 10:28:54 · 166 阅读 · 0 评论 -
Java中高级核心知识全面解析(4),Java语言基础知识总结
假设数据库中帐户信息表中有一个version 字段,当前值为1;而当前帐户余额字段(balance)为$100 。操作员A此时将其读出(version=1),并从其帐户余额中扣除 $50( $100-$50 )。在操作员 A 操作的过程中,操作员B也读入此用户信息(version=1),并从其帐户余额中扣除$20($100-$20)。操作员 A 完成了修改工作,将数据版本号加一(version=2),连同帐户扣除后余额(balance=$50 ),提交至数据库更新,此时由于提交数据版本大于数据库记录原创 2021-08-31 10:27:16 · 73 阅读 · 0 评论 -
Java中高级核心知识全面解析(3),美团Java面试算法题
主服务器 需要将自己生成的 RDB 文件 发送给从服务器,这个发送操作会 消耗 主服务器 大量的网络资源 (带宽和流量),并对主服务器响应命令请求的时间产生影响;接收到 RDB 文件的 从服务器 需要载入主服务器发来的 RBD 文件,并且在载入期间,从服务器会因为阻塞而没办法处理命令请求;特别是当出现 断线重复制 的情况是时,为了让从服务器补足断线时确实的那一小部分数据,却要执行一次如此耗资源的 SYNC&nb.原创 2021-08-31 10:25:32 · 201 阅读 · 0 评论 -
Java中高级核心知识全面解析(2),Java入门书籍
SpringBoot 项目的 spring-boot-starter-web 依赖中已经有 hibernate-validator 包,不需要引用相关依赖。如下图所示(通过 idea 插件—Maven Helper 生成):需要注意的是: 所有的注解,推荐使用 JSR 注解,即 javax.validation.constraints ,而不是 org.hibernate.validator.constraints1. 一些常用的字段验证的注解@NotEmpty 被注释的字符串的不能为 nul原创 2021-08-31 10:23:51 · 153 阅读 · 0 评论 -
Java中wait()方法为什么要放在同步块中?
但是,为毛呢??为毛呢?我也不知道啊,经过一番查阅,我找到了答案。Lost Wake-Up Problem事情得从一个多线程编程里面臭名昭著的问题"Lost wake-up problem"说起。这个问题并不是说只在Java语言中会出现,而是会在所有的多线程环境下出现。假如我们有两个线程,一个消费者线程,一个生产者线程。生产者线程的任务可以简化成先将count加一,而后唤醒消费者;消费者则是先将count减一,而后在减到0的时候陷入睡眠:生产者伪代码:count+1;notify();消.原创 2021-08-30 11:50:15 · 107 阅读 · 0 评论 -
Java中wait()方法为什么要放在同步块中?(1),Java知识总结
这个问题并不是说只在Java语言中会出现,而是会在所有的多线程环境下出现。假如我们有两个线程,一个消费者线程,一个生产者线程。生产者线程的任务可以简化成先将count加一,而后唤醒消费者;消费者则是先将count减一,而后在减到0的时候陷入睡眠:生产者伪代码:count+1;notify();消费者伪代码:while(count<=0) wait()count--这里面有问题。什么问题呢?生产者是两个步骤:count+1;notify();消费者也是两个步骤:原创 2021-08-30 11:48:33 · 139 阅读 · 0 评论 -
Java个人学习之旅(第十天),springcloud百度网盘
2. equals判断两个字符串是否相同返回值类型为boolean参数类型为String3. charAt返回指定索引处的char值(从0开始)返回值类型:char参数类型:int4. endsWith&&startsWith判断字符串是否以某个字符串结尾&&开头返回值类型:boolean参数类型:String5. indexOf返回子字符串第一次出现的索引返回值类型:int参数类型:S原创 2021-08-30 11:46:49 · 138 阅读 · 0 评论 -
Java-进阶:多线程1,2个月面试腾讯、B站、网易等11家公司的面经总结
只是让当前线程放弃cpu执行权,但是不能阻止它放弃后继续抢夺cpu执行权后台线程(守护线程)public final void setDaemon(boolean on):将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java 虚拟机退出;该方法必须在启动线程前调用。SecondThread sec = new SecondThread("zs");SecondThread thr = new SecondThread("lsii");//将sec和thr线程设置为守护线.原创 2021-08-30 11:43:21 · 178 阅读 · 0 评论