自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【转载】五种方式实现多线程循环打印问题

<div id="article_content" class="article_content clearfix"> <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/kdoc_html_views-1a98987dfd.css"> <link rel="stylesheet" href="https://csd

2024-05-19 18:46:49 288

原创 关于微服务的一点感悟和过往经验的思考

微服务架构是一种先进的架构模式,适用于大型、复杂的项目。它带来了很多好处,如降低开发难度和复杂度、提高系统的可扩展性和容错性等。但是,它也带来了一些挑战和复杂度,如服务划分难度、分布式复杂性、运维复杂度等。因此,在使用微服务架构时,需要仔细权衡其优缺点,并结合项目的实际情况进行选择。同时,需要不断学习和探索新的技术和方法,以应对微服务架构带来的挑战和复杂度。

2024-05-19 11:10:00 607

原创 【刷题日记】leetcode 76 最小覆盖子串

4、对于新加入的字符s[i],如果hs[s[i]] <= ht[s[i]],说明当前新加入的字符s[i]是必需的,且还未到达字符串t所要求的数量。因此当hs[s[j]] > ht[s[j]时,说明hs哈希表中s[j]的数量多于ht哈希表中s[j]的数量,此时我们就需要向右收缩滑动窗口,j++并使hs[s[j]]–,即hs[s[j ++ ]] --。3、每次向右扩展滑动窗口一步,将s[i]加入滑动窗口中,而新加入了s[i],相当于滑动窗口维护的字符数加一,即hs[s[i]]++。

2024-03-10 11:48:08 326

原创 【刷题日记】长度最小子数组

这里内层循环使用while的原因是防止【1,1,1,1,1,100】target =100 的情况,因为if的条件一旦发现满足大于等于,且走到了最后一个元素,就会停止尝试而继续做浪费时间的外层for循环遍历,使用while可以满足在内层判断中直接获取到最后一个长度为1的元素100。设置left为起始下标,通过right的移动判断是否满足大于等于target的值,发现大于等于之后更新下标的最小值,并且继续移动左指针(因为可能继续移动存在更短的窗口)移动的时候注意要减去已不在窗口内的nums下标。

2024-03-10 10:44:04 298

原创 【刷题日记】IP地址分割

这道题应该使用回溯法求解,因为每一层可以由上一层结果+ 子问题的结果组成,我们可以设置一个len作为执行的进度,然后基于这个len进度,向前推移的步长尾i,在循环里判断substring(len,i)是不是符合条件的,加入到预备结果集中。返回[“255.255.22.135”, “255.255.221.35”]. (顺序没有关系)现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况。给出的字符串为"25525522135",

2024-02-18 15:16:26 351

原创 【刷题日记】最长无重复子数组

虽然移除set的队头不一定是移除重复的那个,但是只要set集合包含这个元素,就执行循环的移除,移除成功之后注意将新的元素加入,并且更新下标。如果遇到了重复的元素,需要将重复元素以及重复元素之前的元素全部移除,再将新的重复元素添加进结果集,在这个过程中继续判断长度是否超过限制。子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组。给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。

2024-02-16 21:24:57 352

原创 【刷题日记】合并区间

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。

2024-02-15 20:47:59 344

原创 【阿里健康】面试问题

有一张广告表:trace_ad_info,字段包含广告名称ad_name,广告图片pic_url,广告开始时间start_date,广告结束时间end_date,以及广告id ad_id;有一张广告接收规则表trace_ad_receiver_info,包含三个字段:广告id ad_id,接收类型receiver_type,接收id (receiver_id),这个表接收类型=1表示企业类型,接收类型=2表示区域;广告的接收类型为1且接收ID为1,或者接收类型为2且接收ID为’430000’。

2024-02-06 12:17:07 304

原创 【刷题日记】输出合法括号的全排列

我们先给出第一种解法,这道题按照思路可以用深度优先来解决,深度优先方法就像是构造一棵树,生成n对括号需要n个左括号和n个右括号,树根一定是左括号,加入n=1,就只有2种可能,一个是 “()”,另一个是 “((”;每个字符串都必须是合法的括号表达式。“()“是合法的括号表达式,”(”、“)”、“())”、"(()"等都不是合法的括号表达式。合法的括号表达式的定义是在任何位置,左括号的数量都大于或等于右括号的数量。1、可以顺着合法括号的特点:在任何位置,左括号的数量都大于右括号的数量。

2024-02-05 16:13:16 396

原创 【刷题记录1】最长回文子串

输入:一个字符串 s。你可以假设 s 的最大长度为 1000。经过测试,输出结果: qabbaq,说明是回文,判断成功。给你一个字符串 s,找到 s 中最长的回文子串。注意: “aba” 也是一个有效答案。输出:s 中最长的回文子串。输入: “babad”输入: “cbbd”

2024-01-31 23:21:38 350

原创 CompletableFuture 的知识与运用

super T,?super T> action)`: 当前阶段和另一个阶段中任意一个先正常完成,就将该阶段的结果作为参数传递给消费者`action`,并返回一个新的`CompletionStage`来表示`action`的完成。super T,?super T, U> fn)`: 当前阶段和另一个阶段中任意一个先正常完成,就将该阶段的结果作为参数传递给函数`fn`,并返回一个新的`CompletionStage`来表示`fn`的结果。

2024-01-28 16:36:13 1794

原创 Java重试机制

由于在日常工作中,简单的重试实现直接封装Util,因此直接自己编写逻辑代码就好,但是这么写毕竟不够优雅,因此有了其他实现重试的方式,首推就是CGlib的动态代理方式,参考:https://blog.csdn.net/sco5282/article/details/131390099 博客的3、4方法,实现代理对象的重试。整体实现重试的机制,可以加入根据重试次数或时间,笔者为了让重试方法执行成功,修改了while中的条件,实际情况下,重试机制可以将执行逻辑换成调用第三方接口服务;

2024-01-26 22:44:15 287

原创 Java 类初始化构造器的顺序问题整理

最后,在main方法中,再次创建类B的实例,重复上述的实例化过程,输出"A normal code block"、“new A”、“B normal code block"和"new B”。首先,加载类A和类B,执行静态代码块,因为静态代码块只在类加载时执行一次,所以输出"A static code block"和"B static code block"。类B的实例化过程中,首先会初始化父类A,所以执行A的普通代码块和构造函数,输出"A normal code block"和"new A"。

2024-01-25 22:21:26 616

原创 Java中反射的原理和基本方法示例

反射(Reflection)是Java语言提供的一种基础功能,它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性。通过反射,我们可以在运行时获得程序或程序集中每一个内部属性、方法或构造器的详细信息,并能直接使用这些信息。简单来说,反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。

2024-01-22 19:57:19 357

原创 多线程循环打印ABC/ 123的多种方法

需要明白这道题是考察我们对于线程的控制,所以如果没有丰富的多线程开发经验,手撕这道题是有一些难度的写这道题之前我们首先要知道多线程的几种实现方式。

2024-01-20 21:08:27 547

原创 Java基础面试问题

然后你可以实例化子类。StringBuffer: StringBuffer和StringBuilder的方法基本相同,但是StringBuffer是线程安全的,它的大部分主要方法都进行了同步,所以它适用于多线程环境下的字符串操作。它的内部实现是一个数组,当添加字符时可以直接在数组中添加,不需要创建新的对象,因此效率比String高。String: 在Java中,String是不可变的,也就是说你每次对String类型进行改变,实际上都是生成了一个新的String对象,然后将指针指向新的String对象。

2024-01-20 14:17:40 333

原创 【Git Rebase 解决多人开发冲突】

简要说明merge和rebase的使用上的异同

2024-01-07 15:09:45 432 1

原创 岛屿的最大问题求解

岛屿的最大数量

2023-02-09 16:21:08 70

原创 2021-11-01

记录一次Mysql的查询优化一、背景查询需要日期区间和时间段区间参数#{dateBegin} #{dateEnd} #{hourBegin} #{hourEnd}日期传入和时间参数传入都是标准日期格式的截断笔者一开始想通过 DATE()、TIME() 函数实现时间的抽取,但是性能较低后来经过调查发现:substring_index(’’,’’,’’)函数直接对字符串操作,检索性能大约是时间函数的三倍只需按照空格截取二、使用介绍第一个参数是待截取的字符串,大都是表中的某个要进逻辑判断的字

2021-11-01 10:48:53 98

原创 面试问题整理(5)

1 geohash了解吗2 sql注入3 如何判断mysql是否走索引4 redis过期策略5 redis对比memcache的好处6 并发包中有哪些7 jdk的工具类了解吗8 十个g的url,找到其中一个url的手段9 上个问题,如果是10g的数字呢(堆排序)10 如何用并发包实现一个计数器11 如何查看cpu占用12 vi了解吗?linux的常用命令13 如果查询特别慢,有什么优化策略吗...

2021-10-22 09:53:39 78

原创 2020-10-26

1.3 业务用例1.3.1 C端用户业务用例1.3.2 B端商户业务用例1.3.3 整体业务功能用例1.4 关键业务流程2 系统设计2.1 系统整体架构2.1.1 业务架构2.1.2 系统架构2.2 领域模型2.2.1 商户、商品域领域模型2.3 应用系统依赖关系2.3.1 商户域ER图2.3.2 用户域ER图2.3.3交易域ER图2.4 时序图2.4.1用户域1 登陆/注册功能2 登陆验证3 登出功能2.4.2 商户域1.首页导购2

2020-10-26 17:40:02 393

原创 回调方法

回调方法介绍回调方法就是一个参数,将一个A方法作为参数传到B方法里面,当B方法执行完之后,再执行传进去的这个A方法,这个过程就叫做回调。程序示例下面用一个简单的Java类说明回调的作用:首先比如你准备吃饭,但是要等到一段时间之后才吃饭,也就是吃饭这个动作由你执行,但是时间上还要等待,所以你想要叫你的妈妈来叫你去吃饭。我们定义一个eat方法,它的入参包含了Mymother这个对象和一个long类型的时间public class Me { public void eat(Mymother m

2020-07-16 14:46:12 3569

空空如也

空空如也

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

TA关注的人

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