- 博客(38)
- 收藏
- 关注
原创 Java泛型机制详解;这些你都知道吗(1),Java常用算法手册
T first;T second;public Pair(T first, T second){ this.first = first; this.second = second;}public T getFirst() { return first;}public T getSecond() { return second;}}可以看出来Pair类就是一个泛型类,与普通的类区别在于:**1.类名后面多了一个<T>****2.参数first和se
2021-08-11 17:36:49 114
原创 Java树结构实际应用(平衡二叉树-AVL树,Java程序员进阶
4. 在对当前结点进行右旋转的操作即可代码实现[AVL 树的汇总代码(完整代码)]package com.lin.avltree_0316;import javax.security.auth.kerberos.KerberosKey;public class AVLTreeDemo { public static void main(String[] args) {// int[] arr = {4, 3, 6, 5, 7, 8};// int[]
2021-08-11 17:35:41 130
原创 Java树结构实际应用(平衡二叉树-AVL树(1),大厂Offer拿到手软啊
平衡二叉树也叫平衡二叉搜索树(Self-balancing binary search tree)又被称为 AVL 树, 可以保证查询效率较高。具有以下特点:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过 1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。举例说明, 看看下面哪些 AVL 树, 为什么?4、应用案例-单旋转(左旋转)要求: 给你一个数列,创建出对应的平衡二叉树.数列 {4,3,6,5,7,..
2021-08-11 17:33:19 114
原创 Java架构师进阶必备24种设计模式学习资源,速速看过来,快点来白嫖
七、门面模式【Facade Pattern】八、适配器模式【Adapter Pattern】九、模板方法模式【Template Method Pattern】十、建造者模式【Builder Pattern】十一、桥梁模式【Bridge Pattern】十二、命令模式【Command Pattern】十三、装饰模式【Decorator Pattern】十四、 迭代器模式【Iterator Pattern】十五、组合模式【Composite Pattern】十六、观察者模式【
2021-08-11 17:32:06 91
原创 Java架构师的升级之路,阿里内部Java笔记火爆IT圈
问题二,随着B公司业务量的上升,数据库里的数据达到了T级,所以需要通过分库分表来实现优化。这本身不难,但如何在升级的过程中保持业务的稳定?不能说上个功能点,关键业务就挂了,而且,万一上线后出现问题,得提供应急的回退方案。问题三,C公司是个创业型公司,刚开始的时候,通过SSM外加Oracle,能满足大多数的业务需求,但随着业务量的提升,需要资深架构在短时间里实现针对高并发和大数据的方案,比如并发量高了,系统至少不能垮,而且针对每笔订单,处理可以稍作延迟,但不能丢数据。问题四,D公司需要在linux上搭建一
2021-08-11 17:30:53 130
原创 Java架构师的升级之路(1),hash、set、zset的底层数据结构原理
①. debug能力就不用说了,得能熟练地通过linux命令,从各类日志中发现并解决问题。②. 无需了解所有组件的底层代码(这太难了,也做不到),但需要了解一些常用组件的关键底层实现(比如Spring IOC或常用中间件) 方式,更得具备到组件内部jar里debug排查问题的能力。③. 学习能力更不说了,和高级开发相比,资深架构更得了解哪类组件该学,而且,每个组件内部的知识太多,比如Kafka的知识就能写至少一本书,对于资深架构而言,首先需要用较短的时间了解该组件(比如kafka)的架构以及和其它分布式
2021-08-11 17:29:45 127
原创 JAVA方法mock调用工具的实现,你觉得你真的了解Kafka消费者吗
复制代码### 2.增加mock配置可参考com.xh.utils.mock.dto.MethodMockDTO中的注释进行配置,各字段有详细解释;mockRequestDTOsList和mockResponseDTOS 都是List表示支持同一个方法的多组入参和出参匹配。例如下面的配置:{“com.xh.utils.mock.test.TestMockClass#testSimpleWithoutInput”: { //简单无入参的配置"openMock":
2021-08-11 17:28:31 422
原创 Java岗大厂面试百日冲刺 - 日积月累,每日三题,尚硅谷Java全套百度云
/前五个都一样/afterReturning/*************************************************/**`有`异常情况下:**/不同Advice的执行顺序****/around before advicebefore advicetarget method (执行代码段)around after adviceafter advice/前五个都一样/afterThrowing:异常发生jav
2021-08-10 13:48:56 109
原创 Java岗大厂面试百日冲刺 - 日积月累,每日三题(2),2021春招面试
用户组(Group)其它用户(Other Users)chmod(change mode)命令:是控制用户对文件的权限的命令。# 语法:chmod [-cfvR] [--help] [--version] mode file...# 简化:chmod mode files 其中mode可以通过字符串形式或数字形式设定字符串形式配置:mode写法:[ugoa][+-=][rwx][ugoa]表示:u(owner)表示文件所有者,即创建文件的人..
2021-08-10 13:47:49 85
原创 Java就业班视频网盘,Java中高级核心知识全面解析
注意:程序计数器是唯一一个不会出现 OutOfMemoryError 的内存区域,它的生命周期随着线程的创建而创建,随着线程的结束而死亡。2) Java 虚拟机栈与程序计数器一样,Java 虚拟机栈也是线程私有的,它的生命周期和线程相同,描述的是 Java 方法执行的内存模型,每次方法调用的数据都是通过栈传递的。Java 内存可以粗糙的区分为堆内存(Heap)和栈内存 (Stack),其中栈就是现在说的虚拟机栈,或者说是虚拟机栈中局部变量表部分。 (实际上,Java 虚拟机栈是由一个个栈帧组成,而每个
2021-08-10 13:46:35 106
原创 Java小技巧,Java 集合看这一篇就够了
boolean add(E e); add() 方法传入的数据类型必须是 Object,所以当写入基本数据类型的时候,会做自动装箱 auto-boxing 和自动拆箱 unboxing。还有另外一个方法 addAll(),可以把另一个集合里的元素加到此集合中。boolean addAll(Collection<? extends E> c); 删:boolean remove(Object o); remove()是删除的指定元素。那和 addAll() 对应的,.
2021-08-10 13:45:23 100
原创 java实现简单窗口小游戏“扫雷,记得把每一次面试当做经验积累
reset.addActionListener(this);frame.add(reset,BorderLayout.NORTH);}public void addLei(){Random rand=new Random();int randRow,randCol;for(int i=0;i<leiCount;i++){randRow=rand.nextInt(row);randCol=rand.nextInt(col);if(counts[randRow][randCol]==
2021-08-10 13:44:12 235
原创 Java实习生面试题整理,看完99%的人都学会了
但是如果在方法中改变对象的字段值会改变原对象该字段值,因为改变的是同一个地址指向的内容。class PassByValueExample {public static void main(String[] args) { Dog dog = new Dog("A"); func(dog); System.out.println(dog.getName()); // B}private static void func(...
2021-08-10 13:42:59 371
原创 Java完全自学手册pdf,由浅入深,循序渐进(1)
写正文之前先分享几个 Docker 的几个常见面试问题!如何批量清理临时镜像文件?答:可以使用 sudo docker rmi $(sudo docker images -q -f dangling = true) 命令如何查看镜像支持的环境变量?答:可以使用 sudo docker run IMAGE env 命令本地的镜像文件都存放在哪里?答:与 Docker 相关的本地资源都存放在 /var/lib/docker/ 目录下,其中 container 目录存放容器信息,graph
2021-08-10 13:41:50 362
原创 Java学到什么程度才算精通?,Java程序员月薪20k的涨薪秘籍
当然,有一些知识点是可选的,并不是说上面有的你都要会啦。我在复习秋招的过程中就是基于此图进行复习的,感觉效果还是不错的。闲言少叙,我们还是看看这张图上都包含哪些有价值的信息吧。再次说明,本文只对路线图做一个简单地解读,仅供参考。大家可以根据自身情况来指定合理的学习计划,相信也会大有裨益。小编也把Java核心知识点整理成了pdf文档,需要的点击下方链接领取~~【2021最新Java核心知识点】1 计算机基础=============================================
2021-08-10 13:40:36 407
原创 Java底层分析多线程行为(2),springcloud入门教程
}## 非守护进程vs守护进程线程在执行方面,有两种类型的线程:* 执行非守护程序线程会一直到结束。主线程本身就是非守护程序线程的一个很好的例子。main()除非System.exit()强制程序完成,否则代码输入将始终执行到最后。* 一个守护线程是相反的,是一个不需要一直执行到结束的处理程序。**请记住规则**:如果封闭的非守护程序线程在守护程序线程之前结束,则守护程序线程将在结束之前执行。为了更好地理解守护进程和非守护进程线程的关系,请参考以下示例:import java
2021-08-09 14:48:28 86
原创 Java底层分析多线程行为(1),膜拜大牛
例如,处理大量信息的框架(如Spring批处理)使用线程来管理数据。同时操作线程或CPU进程可以提高性能,从而得到更快、更高效的程序。第一个线程: main() 方法即使你从未直接使用线程,你也在间接使用它,因为main()方法包含一个主线程。无论何时执行该main()方法,你都执行了主线程。我们可以通过调用currentThread().getName()方法来访问正在执行的线程,如下所示:public class MainThread {public static void main(Str
2021-08-09 14:47:20 92
原创 Java并行程序基础,那些年Java面试官常问的知识点
break; } System.out.println("I'm working " + i++); Thread.yield(); } }); t1.start(); Thread.sleep(2000); ...
2021-08-09 14:46:06 124
原创 Java并发编程—实现线程的方式只有一种,熬夜整理Java面试笔试题
class MyThread extends Thread { // 这就是一个多线程的操作类 private String name ; // 定义类中的属性 public MyThread(String name) { // 定义构造方法 this.name = name ; } @Override public void run() { // 覆写run()方法,作为线程的主操作方法 for (int x.
2021-08-09 14:43:56 69
原创 Java并发系列终结篇:彻底搞懂Java线程池的工作原理
// ...省略校验相关代码 this.corePoolSize = corePoolSize; this.maximumPoolSize = maximumPoolSize; this.workQueue = workQueue; this.keepAliveTime = unit.toNanos(keepAliveTime); this.threadFactory = threadFactory; this.handler ...
2021-08-09 14:42:52 77
原创 Java并发多线程编程,Java架构师教你如何突破瓶颈
import java.util.concurrent.Callable;/**@description: 创建一个计算任务类,实现Callable接口,重写call方法@author: xz@create: 2021-06-02 22:06*/public class ComputeTask implements Callable {private String taskName;//任务名称//任务构造器public ComputeTask(String tas
2021-08-09 14:41:40 129
原创 Redis-消息队列的三种方案(List,看完你还觉得算法不重要
可能有人觉得,各种开源的 MQ 已经足够使用了,为什么需要用 Redis 实现 MQ 呢?有些简单的业务场景,可能不需要重量级的 MQ 组件(相比 Redis 来说,Kafka 和 RabbitMQ 都算是重量级的消息队列)那你有考虑过用 Redis 做消息队列吗?这一章,我会结合消息队列的特点和 Redis 做消息队列的使用方式,以及实际项目中的使用,来和大家探讨下 Redis 消息队列的方案。一、回顾消息队列消息队列 是指利用 高效可靠 的 消息传
2021-08-08 18:13:09 1982
原创 Redis-数据库、键过期的实现(1),Java技术经理面试题及答案
需要特别注意的是,再执行对键的读写操作的时候,Redis 还要做一些额外的维护动作:维护 hit 和 miss 两个计数器。用于统计 Redis 的缓存命中率。更新键的 LRU 时间,记录键的最后活跃时间。如果在读取的时候发现键已经过期,Redis 先删除这个过期的键然后再执行余下操作。如果有客户对这个键执行了 WATCH 操作,会把这个键标记为 dirty,让事务注意到这个键已经被改过。没修改一次 dirty 会增加1。如果服务器开启了数据库通知功能,键被修改之后,会按
2021-08-08 18:12:03 153
原创 Redis 中两种持久化机制详解,Java知识体系图
2. 客户端方式之 SAVE(单线程执行)客户端还可以使用 SAVE 命令来创建一个快照,接收到 SAVE 命令的 Redis服务器在快照创建完毕之前将不再响应任何其他的命令;注意:SAVE 命令并不常用,使用 SAVE 命令在快照创建完毕之前,Redis处于阻塞状态,无法对外服务。3. 服务器配置方式之 配置快照触发条件如果用户在 redis.conf 中设置了 save 配置选项,Redis 会在 save 选项条件满足之后自动触发一次 BGSAVE 命令;如果设置多个 save 配置选.
2021-08-08 18:10:51 152
原创 Redis 中两种持久化机制详解(1),Java进阶篇
客户端还可以使用 SAVE 命令来创建一个快照,接收到 SAVE 命令的 Redis服务器在快照创建完毕之前将不再响应任何其他的命令;注意:SAVE 命令并不常用,使用 SAVE 命令在快照创建完毕之前,Redis处于阻塞状态,无法对外服务。3. 服务器配置方式之 配置快照触发条件如果用户在 redis.conf 中设置了 save 配置选项,Redis 会在 save 选项条件满足之后自动触发一次 BGSAVE 命令;如果设置多个 save 配置选项,当任意一个 save 配置选项条件满足,Re
2021-08-08 18:09:41 122
原创 R2DBC,面试宝典
</dependency> <!-- r2dbc-pool --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-r2dbc</artifactId> <version>2.3.0.RELEA...
2021-08-08 18:08:29 106
原创 R2DBC,凭借这份Java面试题集
</dependency> `application配置文件`r2dbcspring:r2dbc:url: r2dbc:mysql://localhost/r2dbc?useUnicode=true&characterEncoding=UTF-8username: rootpassword: rootpool: enabled: true max-size: 10 initial-size: 10 validation...
2021-08-08 18:07:17 89
原创 R2DBC(1),超强Java进阶路线知识图谱
Reactive Streams 在互操作性方面发挥着重要作用。它对库和基础设施组件很感兴趣,但作为应用程序 API 不太有用,因为它太低级了。应用程序需要一个更高级、更丰富、功能更强大的 API 来组合异步逻辑——类似于 Java 8 Stream API,但不仅限于表。这就是反应式库所扮演的角色。Project Reactor是 Spring Data R2DBC 的首选反应库。它提供了Mono和FluxAPI 类型,通过一组与 ReactiveX 运算符词汇表对齐的丰富运算符来处理0..1(.
2021-08-08 18:06:09 241
原创 PNG、JPG等普通图片高保真转SVG图,Java中级笔试题百度文库
选中图片,菜单选项 对象 >> 图像临摹 >> 建立一定要进行图像临摹 >> 预设 进行选择想要的模式,才能看得到图片4. 扩展着色调好图片后,点击扩展点击扩展后图片还不是该有的样子,此時图片线条还比较粗狂点击 重新找色,即可显示正常5. 保存选择 文件>>存储, 选择.svg文件格式即可保存文件6. 验证图片看一张png图片完美转成了svg图片。总结其实安装了AI后普通图片转SVG图片很简单,作为一名开发人员这个技
2021-08-08 18:04:57 197
原创 Java手机百度下载文件,JAVA程序员笔记 第007篇—面向对象(一)
转载自 知乎:愣头青面向对象=================================================================面向对象三大特征:继承封装多态四大(多一个:接口)封装:封装:将自然界中具有相似特征和行为的 事物 定义成类并尽可能 类中的特征 进行私有化 过程package包(见前几篇笔记)class类的定义类是抽象的,是自然界中 描述具有 相同特征 和 行为的事物的统称例如,人类:姓名,年龄,性别,身高 等等等等public c.
2021-08-07 05:01:41 162
原创 Java开发高级工程师面试,etcd:一款比Redis更骚的分布式锁的实现方式
Watch 机制支持 Watch 某个固定的 key,也支持 Watch 一个范围(前缀机制)。当被 Watch 的 key 或范围发生变化,客户端将收到通知;在实现分布式锁时,如果抢锁失败, 可通过 Prefix 机制返回的 Key-Value 列表获得 Revision 比自己小且相差最小的 key(称为 pre-key), 对 pre-key 进行监听,因为只有它释放锁,自己才能获得锁,如果 Watch 到 pre-key 的 DELETE 事件, 则说明 pre-key 已经释放,自己将持有锁。
2021-08-07 05:00:20 542
原创 Java开发面试基础题,什么是微服务扩展性和高可用-可扩展性、高可用性和性能
它是一个系统或应用程序的属性,可以处理更多的工作,或者很容易地进行扩展,以响应对网络、处理数据、数据库访问或日益增长的文件系统资源需求。水平扩展性当系统进行扩展时,通过添加与现有节点功能相同的新节点,在所有节点之间重新分配负载,可以横向扩展或向外扩展。SOA系统和Web服务器通过向负载平衡网络中添加更多的服务器来扩展,以便传入的请求可以分布在所有服务器中。集群是描述扩展处理系统的常用术语。图 1: 集群垂直扩展性当系统通过向节点添加处理、主内存、存储设备或网络接口来扩展以满足每个系统的更多请求时
2021-08-07 04:58:58 255
原创 Java开发面经分享,【数据结构与算法 13(1)
root.setRight(node3); node3.setLeft(node4); node3.setRight(node5); binaryTree.setRoot(root); System.out.println("前序遍历"); binaryTree.preOrder(); System.out.println("中序遍历"); binaryTree.midOrder(); System.out.printl...
2021-08-07 04:57:43 110
原创 Java开发还会吃香吗,当Dubbo遇上Arthas,会碰撞出什么样的火花
Client端:Server端:Arthas快速开始alibaba.github.io/arthas/inst…启动后,会列出所有的java进程,选择1,然后回车,就会连接上ServerDemoApplicationDubbo线上服务抛出异常,怎么获取调用参数?alibaba.github.io/arthas/watc…当线上服务抛出异常时,最着急的是什么参数导致了抛异常?在demo里,访问http://localhost:8080/user/0,UserServiceI.
2021-08-07 04:56:21 121
原创 Java开发者跳槽面试指南,Spring-Cloud-Gateway介绍(上篇
1)非阻塞式其实在servlet3.1提供了非阻塞的API,WebFlux提供了一种比其更完美的解决方案。使用非阻塞的方式可以利用较小的线程或硬件资源来处理并发进而提高其可伸缩性2) 函数式编程端点老生常谈的编程方式了,Spring5必须让你使用java8,那么函数式编程就是java8重要的特点之一,而WebFlux支持函数式编程来定义路由端点处理请求。做什么网关可以理解为网络关卡,是整个微服务的统一入口(门卫)。可以和服务注册中心完美的整合,如:Eureka、Consol、Nacos
2021-08-07 04:55:03 317
原创 Java开发者跳槽指,SpringBoot 并发编程学习历程(绝对的干货)
用Callable实现 并发编程 `/** * 用Callable实现异步 * @return * @throws InterruptedException */ @RequestMapping("/orderAsync") public Callable orderAsync() throws InterruptedException { log.info("主线程开始"); Callable re
2021-08-07 04:53:45 129
原创 Java开发者该学习哪些东西提高竞争力,Java并行程序基础
3. stop()方法会直接终止线程,并且**会立即释放这个线程所持有的的锁**。而这些锁恰恰是用来维持对象一致性的,如果此时,写线程吸入数据正写到一半,并强行终止,那么对象就会被写坏,同时,由于锁已经被释放,另外一个等待该锁的读线程就顺理成章的读到这个不一致的对象。2. 一般终止可以通过设置一个boolean的标志,来控制线程是否继续执行下去。或者等待线程自动执行完。线程的中断=====线程中断是一种重要的线程协作机制。中断并不会使线程立即退出,而是给线程发送一个通知...
2021-08-07 04:52:28 106
原创 Java开发热门前沿知识,oh
0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return LineNumberTable: line 9: 0public synchronized void testRoller();descriptor: ()Vflags: ACC_PUBLIC, ACC_SYNCHRONIZEDCode:stack=...
2021-08-07 04:51:05 211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人