自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 Java刷题常用语法总结

java刷题语法总结

2020-04-01 12:24:17 1142 1

原创 网络IO模型以及实际应用

本文主要介绍了几种不同的网络IO模型,以及实际项目中使用到的Reactor模型等。我们常说的网络IO模型,主要包含阻塞IO、非阻塞IO、多路复用IO、信号驱动IO、异步IO。

2024-04-10 13:23:03 843

转载 Java类加载过程解析

当写好一个 Java 程序后,会经过编译阶段,生成.class文件当后续需要运行和使用类型时,会将程序对应的.class文件加载到虚拟机内存中 (方法区)同时也会对数据进行校验、转换解析和初始化,最终形成可以被 JVM 使用的 Java 类型该 Java 类型其实就是 Class 类型,Class 类型和其他类型一样,如:Integer 等。每个.class文件对应一个 Class 类型的对象,有且仅有一个上述的过程就被称作位 JVM 的类加载机制!!

2024-04-03 17:56:23 24

原创 服务降级、熔断

本文分析了二者是什么?有什么区别?使用场景等。

2024-03-25 20:29:23 823

原创 分布式ID生成方案总结

分布式场景下,由于通常是分库分表,所以通常无法仅仅使用数据库的自增Id。需要使用其他方案生成唯一的id。目前业界主流的是基于雪花算法或者雪花算法的改进版本。

2024-03-23 13:29:51 1264

原创 工作遇到的一些问题集锦(持续更新)

BigDecimal(double val)构造,用double当参数来构造一个BigDecimal对象。这种并不靠谱。不推荐。BigDecimal(String val)构造是靠谱的,BigDecimal(“0.1”)就是妥妥的等于0.1,推荐大家用这个构造。如果你非得用一个double变量来构造一个BigDecimal,没问题,我们贴心的提供了静态方法valueOf(double),这个方法跟new Decimal(Double.toString(double))效果是一样的。

2024-03-12 10:14:42 408

原创 设计模式简要总结

模板模式通常由两部分组成:抽象父类和具体子类。抽象父类包含了算法的高层次结构,而具体子类则负责实现算法的具体步骤。通常情况下,抽象父类会定义算法的骨架,也就是算法所需的各个步骤以及它们之间的关系。具体子类则会实现这些步骤的具体实现方式。模板方法模式的应用场景以下是一些模板方法模式的应用场景:数据库操作:在进行数据库操作时,我们可能需要执行一系列相同的步骤,例如连接数据库、执行 SQL 查询、处理结果等。

2024-03-09 00:03:42 942

原创 Leetcode HOT150

给你一个非负整数数组nums,你最初位于数组的。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。思路:贪心思想。非常巧妙。一个变量代表我们最远跳到哪里。另一个变量。用来更新我们在这个路程中间实际上能跳转到的最大距离。比如用2,3,1,1,4举例。一开始最大跳转是到下边2的位置。那么我更新从1到2区间最大的位置。然后到index2的时候,我们就知道这一段区间,我们所能跳转的最大位置,然后更新维护这个变量。

2024-03-07 23:31:54 1076 1

原创 单调栈题目总结

单调栈」顾名思义就是具有单调性的栈结构,一般常用于找到下一个更大的元素,即当前元素右侧第一个更大的元素。这个问题需要让我们求与下一个更大元素的间隔,所以我们稍微转变一下栈中存储的内容即可。为了节约空间,我们可以利用「模运算」实现 2 倍数组的效果,而不需要单独开辟空间。其实除了用两个栈,还可以用两个堆来实现,堆比栈更好理解,但是原理都是一样的!这个问题加入了一个循环数组的概念,我们处理的方法就是利用 2 倍的数组即可。我们只看得到比我们更高的元素,所以比我们矮的元素就无关紧要。的所有下一个更大元素,用。

2024-02-18 21:48:21 376 1

原创 Java并发面试算法题目

思路:用lock锁。定义一个类成员变量 max_value,min_value代表资源的最大,最小数量。

2024-02-14 11:36:11 1119

原创 leetcode题目记录

leetcode题目记录

2024-02-12 22:18:04 927

原创 一篇文章看懂mysql加锁

mysql锁是和事务绑定的。本文介绍了了:全局锁、表锁、行锁、MDL锁、Auto_inc 锁。插入意向锁(Insert Intention gap Locks)**全局锁:**锁整个数据库,主要用于全库备份**表锁:**存储引擎提供的 S 锁和 X 锁 (一般不用);server 层提供的 MDL 锁;意向 S 锁,意向 X 锁;用于主键自增的 AUTO-INC 锁**行锁:**Record Lock (记录锁);Gap Lock (间隙锁);Next-Key Lock (记录锁 + 间隙锁)

2023-12-17 16:50:27 798 1

原创 算法高频题目

LRU等一些高频题目

2023-11-29 20:16:54 461

原创 基础知识(八股文)总结

着操作的不断执行,hash表保存的键值对会逐渐的增多或者减少,这时就会暴露一些问题。如果hash表很大,但是键值对太少,也就是hash表的负载(dictht->used/dictht->size)太小,就会有大量的内存浪费;如果hash表的负载太大,就会影响字典的查找效率。这时候就需要进行rehash将hash表的负载控制在一个合理的范围。

2023-09-28 14:51:05 86

转载 Cron表达式学习

其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。(4)/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.(6)L:表示最后,只能出现在DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。

2023-09-06 17:11:01 55

原创 IDEA debug使用

Run to Cursor (Alt + F9):运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。> Step Into (F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法,如第25行的put方法。> Step Out (Shift + F8):步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。> Drop Frame (默认无):回退断点,后面章节详细说明。

2023-04-21 17:04:11 89

原创 Oracle日常使用总结

1、查询当前用户下表的创建语句。

2022-12-14 10:37:37 92

原创 ES 使用注意事项

ES使用桶聚合,默认是10个可以在聚合的时候, 指定size searchSourceBuilder.aggregation(AggregationBuilders.terms("sourceGroupby").field("A").size(20));

2021-09-29 19:46:29 577

原创 贪心算法-题目

55. 跳跃游戏Difficulty: 中等给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃

2021-09-16 20:54:41 95

原创 动态规划题目

最大正方形在一个二维01矩阵中找到全为1的最大正方形, 返回它的面积.样例样例 1:输入:[ [1, 0, 1, 0, 0], [1, 0, 1, 1, 1], [1, 1, 1, 1, 1], [1, 0, 0, 1, 0]]输出: 4样例 2:输入:[ [0, 0, 0], [1, 1, 1]]输出: 1//思考用动态规划;dp[i][j]代表i,j为右下角最大正方形的边长。对于正方形来说;我们知道正方形要求四条边相等;如果matrix[i][j]=

2021-09-16 20:54:01 82

原创 一些java博文-博主

java Lambda表达式推论,this引用的意义既然Lambda表达式不是内部类的简写,那么Lambda内部的this引用也就跟内部类对象没什么关系了。在Lambda表达式中this的意义跟在表达式外部完全一样。因此下列代码将输出两遍Hello Hoolee,而不是两个引用地址。public class Hello { Runnable r1 = () -> { System.out.println(this); }; Runnable r2 = () -> { System.ou

2021-09-10 19:46:21 86

原创 MySQL数据库设计规范

MySQL数据库设计规范目录1. 规范背景与目的 2. 设计规范2.1 数据库设计 2.1.1 库名 2.1.2 表结构 2.1.3 列数据类型优化 2.1.4 索引设计 2.1.5 分库分表、分区表 2.1.6 字符集 2.1.7 程序DAO层设计建议 2.1.8 一个规范的建表语句示例 2.2 SQL编写 2.2.1 DML语句 2.2.2 多表连接 2.2.3 事务 2.2.4 排序和分组 2.2.5 线上禁止使用的SQL语句1. 规范背景与目的My

2021-09-03 14:26:09 236

原创 Java获取本地的IP列表

Java 获取本地的IP列表 public static List<String> getLocalIPList() { List<String> ipList = new ArrayList<String>(); try { Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterface

2021-08-26 10:03:06 207

原创 使用thymeleaf时报的‘viewResolver’的bean无法创建从而引发的一系列异常

将下面的注释掉就可以了 <bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"> <property name="suffix" value=".html"/> <property name="prefix" value="/"/> <property name="character

2021-08-25 12:34:28 966

原创 IDEA 常用快捷键、插件、功能

1 Ctrl+Alt+T可以把代码包在一块内,例如try/catch2 Alt+Up and Alt+Down可在方法间快速移动3 Ctrl+W 选中代码,连续按会有其他效果Ctrl+J 自动代码Alt+Shift+C 对比最近修改的代码Ctrl+P 方法参数提示Shift+F6 重构-重命名选中文本,按Alt+F3 ,逐个往下查找相同文本,并高亮显示。...

2021-08-20 14:26:36 159

原创 二分法题目总结

34. 在排序数组中查找元素的第一个和最后一个位置Difficulty: 中等Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.If target is not found in the array, return [-1, -1].Follow up: Could you write an algorithm

2021-03-31 20:20:42 102

原创 SQL题目

查找入职员工时间排名倒数第三的员工所有信息select * from employees where hire_date = ( select distinct hire_date from employees order by hire_date desc limit 2,1)

2021-03-31 19:59:50 49

原创 Java基础知识点

基础类型转换为字符串三种方法

2021-03-31 19:53:02 65

原创 Java并发

通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想实现每一个线程都有自己的专属本地变量该如何解决呢?JDK中提供的类正是为了解决这样的问题。类主要解决的就是让每个线程绑定自己的值,可以将类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。如果你创建了一个变量,那么访问这个变量的每个线程都会有这个变量的本地副本,这也是变量名的由来。他们可以使用get()和set()方法来获取默认值或将其值更改为当前线程所存的副本的值,从而避免了线程安全问题ThreadLocal 内存泄漏问题。

2021-01-29 22:14:11 84

原创 位运算的题目

56. 数组中只出现一次的数字NowCoder题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次,找出这两个数。解题思路两个不相等的元素在位级表示上必定会有一位存在不同,将数组的所有元素异或得到的结果为不存在重复的两个元素异或的结果。diff &= -diff 得到出 diff 最右侧不为 0 的位,也就是不存在重复的两个元素在位级表示上最右侧不同的那一位,利用这一位就可以将两个元素区分开来。public void FindNumsAppearOnce(int[] nums

2021-01-12 21:17:21 70

原创 Spring等框架知识点

控制翻转与依赖注入控制翻转在单一职责原则的设计下,很少有单独一个对象就能完成的任务。大多数任务都需要复数的对象来协作完成,这样对象与对象之间就有了依赖。一开始对象之间的依赖关系是自己解决的,需要什么对象了就New一个出来用,控制权是在对象本身。但是这样耦合度就非常高,可能某个对象的一点小修改就会引起连锁反应,需要把依赖的对象一路修改过去。如果依赖对象的获得被反转,具体生成什么依赖对象和什么时候生成都由对象之外的IOC容器来决定。对象只要在用到依赖对象的时候能获取到就可以了,常用的方式有依赖注入和依赖查

2021-01-07 12:43:26 68

原创 数据库知识点

MySQL存储引擎区别InnoDB: 支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。MyISAM: 插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。MEM

2021-01-07 12:42:39 78

原创 字节面试题-如何实现二个进程交替打印一个字符串

1、使用volatile关键字修饰 当前index。public class Main1 { volatile int x = 0; String string="thefreedom"; Main1() { new Thread(() -> { while (x < string.length()) { while (x % 2 == 0) ; if(x<st

2021-01-04 16:45:17 186 1

原创 ListNode题目

判断链表是否有环//快慢指针能相遇说明有环!public class Solution { public boolean hasCycle(ListNode head) { if(head==null) return false; ListNode fast=head; ListNode slow=head; while(fast!=null&&fast.next!=null){

2020-09-05 00:32:15 216

原创 树的leetcode题目

101. 对称二叉树Difficulty: 简单给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?Solution public boolean isSymm

2020-08-30 13:13:17 111

原创 实现 strStr()

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll” 输出: 2 public int strStr(String haystack, String needle) { if(needle == "") return 0; int i = 0;

2020-06-15 19:52:07 129

原创 最大频率栈

实现 FreqStack,模拟类似栈的数据结构的操作的一个类。FreqStack 有两个函数: push(int x),将整数 x 推入栈中。pop(),它移除并返回栈中出现最频繁的元素。如果最频繁的元素不只一个,则移除并返回最接近栈顶的元素。push [5,7,5,7,4,5]pop() -> 返回 5,因为 5 是出现频率最高的。 栈变成[5,7,5,7,4]。pop() -> 返回 7,因为 5 和 7 都是频率最高的,但 7 最接近栈顶。 栈变成 [5,7,5,4]。p

2020-06-06 01:02:33 315

原创 双指针题目

双指针技巧一般要求排序,然后从头尾指针,将复杂度降为O(n);反转数组中的元素。public static void reverse(int[] v, int N) { int i = 0; int j = N - 1; while (i < j) { swap(v, i, j); // this is a self-defined function i++; j--; }}找到字符串中所有字母异位词输

2020-06-04 22:49:54 137

转载 Java枚举简析

Java枚举简析。什么是枚举枚举是JDK1.5版本新增的特性(泛型、For-each等如今被广泛应用的特性也是由JDK1.5时所新增的),另外到了JDK1.6后switch语句支持枚举类型。枚举出现前的背景使用一组int常量(称作int枚举模式),例如:public class Season { public static final int SPRING = 1; public static final int SUMMER = 2; public static fin.

2020-06-04 09:12:19 224

原创 构造回文

给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。思路1:将其转换为求最长公共子序列问题;import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) {

2020-06-03 23:41:29 119

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除