
Java
文章平均质量分 82
CodAlun
学最好的别人,做最好的自己!
展开
-
CountDownLatch 和 CyclicBarrier的区别与详解
CountDownLatch和 CyclicBarrier的详解原创 2023-08-26 18:04:32 · 878 阅读 · 0 评论 -
UML基础模型
UML基本模型类图原创 2023-08-20 00:15:00 · 623 阅读 · 0 评论 -
Spring事件监听源码解析
基于Spring事件监听源码解析,透过源码理解本质原创 2023-08-20 00:00:00 · 676 阅读 · 0 评论 -
Spring事件监听机制
Spring事件监听机制详解原创 2023-08-19 16:41:25 · 1038 阅读 · 0 评论 -
MyBatis常用知识点总结
MyBatis常用知识点总结原创 2023-01-29 20:29:00 · 836 阅读 · 1 评论 -
LeetCode-43-字符串相乘
字符串相乘转载 2022-06-21 16:02:50 · 885 阅读 · 0 评论 -
LeetCode-42-接雨水
接雨水原创 2022-06-18 16:47:06 · 304 阅读 · 0 评论 -
LeetCode-41-缺失的第一个正数
缺失的第一个正数原创 2022-06-15 18:10:57 · 198 阅读 · 0 评论 -
LeetCode-38 - 外观数列
外观数列原创 2022-06-07 16:05:43 · 215 阅读 · 0 评论 -
LeetCode-36 - 有效的数独
来源:LeetCode.36. 有效的数独原创 2022-06-01 10:47:22 · 243 阅读 · 0 评论 -
LeetCode-35 - 搜索插入位置
题目来源:LeetCode.给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4提示:1<=n原创 2022-05-31 15:46:01 · 175 阅读 · 0 评论 -
LeetCode-34 - 在排序数组中查找元素的第一个和最后一个位置
题目来源:LeetCode.给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。时间复杂度为 O(log n) 示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = [], ta原创 2022-05-31 11:43:46 · 156 阅读 · 0 评论 -
Java异常执行顺序
文章目录关键字:无异常处理顺序有异常处理顺序catch快的执行原理:throw:throw与throws的区别:关键字:try:执行可能产生异常的代码catch:捕获异常finally:无论是否发生异常代码总能执行throws:声明方法可能要抛出的各种异常throw:手动抛出自定义异常无异常处理顺序有异常处理顺序catch快的执行原理:对于异常的捕获,可以有多个catch,对于try发生的异常,他会根据发生的异常和catch里面的异常类型进行匹配(按照catch块从上往下匹配,但并不原创 2021-11-20 16:51:56 · 1685 阅读 · 0 评论 -
剑指offer-44-扑克牌的顺子
题目从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。 可以把扑克牌的背景抽象成计算机语音接下来看一下解题思路:思路: 可以把扑克牌看成由数字组成的数组,大、小王是特殊的数字,可以都看成是0.由于0可以看成是任意数字,所以可以用0去补满数组中的空缺,如果排序后的数组不是连续的,但只要有足够的0去补满这个空缺,那么这个数组实际上也可以看成是连续的。所以只需要做三步:1.把数原创 2020-08-02 10:38:04 · 190 阅读 · 0 评论 -
剑指offer-42-翻转单词顺序--左旋转字符串
题目一输入一个一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。标点符号和普通字母一样处理,例如:输入"I am a student." ,则输出"student.a am I"。接下来看一下解题思路: 首先根据空格将句子分割成单个单词,* 然后翻转数组,再将单词拼接起来代码示例:public String reverseSentence(String str) { if (str.length() <= 1 || str.trim().equals(原创 2020-06-21 12:30:04 · 208 阅读 · 0 评论 -
剑指offer-41-和为S的两个数字--和为S的连续整数序列
题目一输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和是S,输出任意一对即可。 看到这个问题我们可以想到的最简单的方法先固定一个数字,然后依次和n - 1个数字判断是不是和为S,但是这样时间复杂度比较高为O(n^2)。 可以使用下面这种方法来解决来解决。接下来看一下解题思路: 首先定义两个下标索引,* 第一个指向数组的第一个,* 第二个指向数组的最后一个,* 如果加起来和大于给定值,指向最后一个数的指针向前移;* 如果加起来和小于给定值,指向第一个数原创 2020-06-20 15:59:30 · 221 阅读 · 0 评论 -
剑指offer-40-数组中只出现一次的数
题目一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 看到这个问题我们可以想到的最简单的方法就是遍历数组,统计出现的次数,但是这样时间复杂度比较高。 可以使用异或来解决。异或的性质:1.对于任何数同自己异或为0,同0异或为自己。2.连续和同一因子异或结果为自己。例如:a ^ 0 = a;a ^ a = 0;a ^ b ^ a = b;接下来看一下解题思路:思路一: 可以借助辅助空间来提高时间复杂度。这里可以使用Ha原创 2020-06-16 22:24:50 · 192 阅读 · 0 评论 -
Java对象的内存布局
概述 我们知道关于Java对象的内存布局是由JVM所管理,所以我们就从Java虚拟机的官方文档出发,了解Java对象的内存布局。对象内存布局 对象在内存中存储的布局可以分为3块区域:对象头、实例数据、对齐填充。对象实例对象头实例数据对齐填充对象头这是OpenJDK里hotspot的文档关于对象头的描述:大致意思是: 是每个gc管理的堆...原创 2019-11-09 18:09:54 · 666 阅读 · 0 评论 -
java动态代理
一、作用:不改变源码的基础上,对已有的方法增强。(是AOP思想的实现技术)二、动态代理的特点:字节码随用随创建,随用随加载。它与静态代理的差别在于此。因为静态代理是字节码一上来就创建好,并完成加载。装饰者模式就是静态代理的一种体现。三、分类:1. 基于接口的动态代理(JDK动态代理):要求: 被代理类最少实现一个接口提供者: JDK官方涉及的类: Proxy创建代理对象...原创 2019-10-21 16:17:46 · 265 阅读 · 0 评论 -
多文件自平衡云传输
一、应用场景多文件自平衡云传输可以应用在局域网内的文件传输,例如视频管理系统或者需要用到服务器的文件传输。二、简述该项目主要包括三大核心部分:客户端、服务器、文件传输服务器。服务器主要功能:向注册中心注册自己所拥有的资源。客户端向文件传输服务器主要功能:请求资源,作为服务器接收其它拥有该资源的客户端的文件。文件传输服务器主要功能:心跳检测,拥有资源的客户端作为Node注册,给文件分片...原创 2019-10-20 14:37:56 · 649 阅读 · 0 评论 -
基于RMI和C-S的服务发现
一、介绍主要用于有多个服务器的情况下,服务器启动后回向注册中心注册。当有客户端上线时,客户端通过服务编号,向注册中心得到此服务的所有服务器列表,然后选择性能最优的服务器连接。二、服务发现需求分析2.1服务发现的主要目的:帮助客户端发现性能良好的服务器。支持多个服务器在线。客户都进行服务请求,并在多个在线服务器中进行选择。客户端对服务器的选择可以实现:“负载均衡”。服务发现支持服务...原创 2019-07-26 16:57:19 · 386 阅读 · 0 评论 -
Java包扫描
一:包扫描简述1.为什么要使用包扫描?包扫描主要用于找到带有注解的类。我们知道注解再Java里面用的很频繁,可以配置XML文件或者注解,然后通过反射机制执行想要执行的方法。2.包扫描介绍我们可以通过用户提供的包名或者类名,扫描该包地下的所有类或者该类所在的包。通过包扫描,我们可以得到该包下我们所要找的类(例如:带有注解的类或者接口或者枚举类型等)这里主要用于扫描带有注解的类。因为找到...原创 2019-04-14 16:33:51 · 4962 阅读 · 1 评论 -
C-S小型框架中解决用户动作问题
应用场景概述假设用户发送一个登录请求,那么服务器该如何处理呢?首先,用户在发送请求的时候向服务器发送:动作、和对应的参数(账户,密码)...原创 2019-04-07 21:22:42 · 259 阅读 · 0 评论 -
Java计时器
Java计时器用途使用线程实现Java计时器,主要用于根据用户给定的时间,定时完成某些事。实现过程注意sleep();和wait();方法sleep()方法:调用后该线程睡眠指定的时间,但是没有释放锁,一直持有锁。wait()方法:调用后该该线程进入阻塞队列,同时释放锁。当被唤醒后再一次重新争夺锁。在这里用的是wait()方法,因为sleep()方法在睡眠的时候一直占用锁资源,也就...原创 2019-03-29 19:49:50 · 26786 阅读 · 2 评论