- 博客(321)
- 资源 (28)
- 收藏
- 关注
原创 高并发架构设计(三大利器:缓存、限流和降级)
高并发是指系统或应用程序在同一时间段内接收到大量并发请求的能力。具体来说,高并发环境下系统需要能够同时处理大量的请求,而不会出现性能问题或响应延迟在网站或APP的开发中,缓存机制是一个不可或缺的环节,可以提高网站或APP的访问速度,降低数据库压力。但在高并发环境下,缓存机制的作用更加明显,不仅可以有效减轻数据库的负载,还可以提高系统的稳定性和性能,从而给用户带来更好的体验。
2023-11-11 22:27:47 1124 2
原创 JavaScript常见参数验证
在JavaScript开发中,参数验证是非常重要的一环。它可以帮助我们确保函数的输入是有效的,从而避免潜在的错误和异常。本文将介绍一些常用的参数验证工具类和方法,以及如何使用正则表达式进行验证。
2019-07-27 15:31:01 18045 1
原创 $(function(){ }
(function(){ }是$(document).ready(function()的简写,相当于window.onload = function(){ } ,虽然这段jquery代码与javascript代码在功能上可以互换,但执行的时间不一样,前者页面框架加载完成就执行,后者页面中所有内容加载完成才执行。
2019-07-08 10:45:41 8854
原创 MySql存储引擎
此外,如果你正在使用的是MySQL 5.7或更高版本,并且表中有正在运行的查询或事务,你需要在切换期间暂停这些活动,以防止错误或数据不一致等问题。从MySQL8.0开始,它就可以被称为过时了 – MySQL已经确保在使用InnoDB时,MyISAM可以完成的所有工作都可以完成,因此目前,只有当您希望简单的COUNT(*)查询更快时,MyISAM才非常有用。根据你的业务需求和数据特点,选择适合的存储引擎。它的优点是速度快,占用的存储空间小,但缺点是数据的安全性不高,不支持事务,不支持外键等。
2019-05-08 11:15:23 1854
原创 TCP三次握手和四次挥手的全过程
一句话,主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。如果使用的是两次握手建立连接,假设有这样一种场景,客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。
2019-04-17 09:33:14 485 1
原创 【经典算法】LeetCode 64. 最小路径和(Java/C/Python3/Golang实现含注释说明,Easy)
解法思路特点优点缺点时间复杂度空间复杂度朴素DP填充DP表,状态转移每个位置的状态取决于上方和左方直观易懂空间占用大O(mn)O(mn)滚动数组优化DP只用一维数组,通过循环更新节省空间,利用上一行的值节省空间编程稍微复杂O(mn)O(n)
2024-04-19 07:16:05 652 2
原创 【经典算法】 leetcode88.合并排序的数组(Java/C/Python3实现含注释说明,Easy)
解题方式优点缺点时间复杂度空间复杂度其他注意事项从前往后双指针(原地修改)无需额外空间,原地修改逻辑相对复杂,需要正确处理合并细节O(m + n)O(1)需要确保nums1有足够空间从前往后双指针(需要额外空间)逻辑简单,易于理解需要额外空间存放合并结果O(m + n)O(m + n)适用于空间限制不严格的情况这两种方式都是解决合并两个有序数组问题的有效方法。选择哪种方式取决于具体的性能要求和内存限制。如果内存空间有限,或者希望避免额外的空间开销,可以选择原地修改的方式。
2024-04-18 13:56:53 744 19
原创 【经典算法】LeetCode133克隆图(Java/C/Python3实现含注释说明,中等)
方式优点缺点时间复杂度空间复杂度DFS直观易理解可能需要较多递归调用栈空间O(V + E)O(V)BFS层次遍历需要额外维护队列O(V + E)O(V)
2024-04-17 08:30:00 998 20
原创 【经典算法】LeetCode 136:只出现一次的数字(Java/C/Python3实现含注释说明,Easy)
方式优点缺点时间复杂度空间复杂度其他异或运算代码简洁,效率高不直观,需要理解异或运算的特性O(n)O(1)适用于数字类型的题目哈希表思路直观,易于理解空间复杂度较高,需要额外的存储空间O(n)O(n)适用于各种数据类型的题目。
2024-04-16 15:07:30 969 4
原创 【经典算法】LeetCode 215. 数组中的第K个最大元素(Java/C/Python3实现含注释说明,Medium)
最小堆快速选择算法优点- 简单易实现- 高效,能找到第k个最大或最小元素- 适用于动态数据流- 原地操作,不需要额外空间缺点- 空间复杂度较高- 平均情况下较高时间复杂度时间复杂度- 平均:O(nlogk)- 平均:O(n)- 最差:O(nlogk)- 最差:O(n^2)空间复杂度- O(k)- 平均:O(logn)- 最差:O(n)其他- 用于处理动态数据流- 快速选择是快速排序的关键步骤。
2024-04-15 20:14:29 702 5
原创 Java8中JUC包同步工具类深度解析(Semaphore,CountDownLatch,CyclicBarrier,Phaser)
工具类主要用途内部原理使用场景Semaphore控制访问某个或多个共享资源的线程数量基于AQS实现,维护一个许可计数器需要限制并发访问共享资源的场景,如连接池、线程池等允许一个或多个线程等待其他线程完成操作基于AQS实现,维护一个计数器用于协调一组线程的执行顺序,例如启动多个线程并行处理任务,并在所有任务完成后执行汇总操作让一组线程互相等待,直到所有线程都到达某个公共屏障点使用锁和条件变量实现,维护屏障的周期和计数器。
2024-04-15 11:49:45 767 11
原创 Java不同版本的多线程开发:进化之路
从Java的版本发展来看,多线程编程在Java中得到了不断的改进和增强。每个新版本都引入了新的工具和API,使得并发编程变得更加高效、灵活和易于使用。随着技术的不断发展,我们可以期待Java在未来继续为多线程开发带来更多的创新和突破。!!代码改变世界。
2024-04-14 13:58:48 777 13
原创 Java8 CompletableFuture:异步编程的瑞士军刀
阿里非典型程序员一枚 ,记录平平无奇程序员在大厂的打怪升级之路。一起学习Java、大数据、数据结构算法(
2024-04-14 13:38:07 800 1
原创 Java多线程中顺序打印
方法特点使用volatile关键字适用于简单的顺序控制,代码简单,但不适用于复杂的线程同步和互斥情况。使用Lock和Condition提供了更丰富的线程同步和互斥机制,并可以精确控制线程的等待和唤醒,适用于复杂的线程交互情况。使用Semaphore通过信号量来控制线程的获取和释放,并可以灵活地控制线程的顺序,适用于多种线程同步场景。
2024-04-13 23:46:49 876 19
原创 RocketMQ技术详解:从基础知识到内部设计原理
作为一款功能强大的分布式消息中间件,通过其高性能、高可用性和丰富的特性,为分布式系统的构建提供了强大的支持。Consumer在消费时,按照Message Queue的顺序进行消费,从而确保消息的顺序性。CommitLog是消息的存储日志,ConsumeQueue是消费者的消费队列,IndexFile用于快速定位消息。RocketMQ是一款由阿里巴巴开源的分布式消息中间件,它支持发布/订阅和点对点两种消息模型,能够处理大量的消息数据,并保证消息的可靠传输。一起学习Java、大数据、数据结构算法(
2024-04-11 17:24:58 1131 18
原创 你真是了解Java数组吗?
通过本文的介绍,读者应该对Java数组的定义、使用、底层存储原理以及与其他数据类型的转换有了更深入的了解。数组是Java中非常重要的数据结构之一,它允许我们存储相同类型的数据元素的集合,并可以通过索引来访问这些元素。需要确保数组中的对象类型是可序列化的,否则在执行序列化的过程中可能会抛出异常。数组的长度是固定的,而集合框架的长度是可变的。Java的数组是固定长度的,一旦分配了内存空间,其长度在运行时是不可改变的。通过索引可以直接访问数组中的元素。三维数组是数组的数组的数组,即每个元素都是一个二维数组。
2024-04-10 23:39:48 861 2
原创 AI技术创业有哪些机会?
在当今数字化时代,人工智能(AI)技术正不断地推动着各行各业的创新和变革。AI作为一项具有巨大潜力的技术,正在为创业者带来许多新的机会。本文将探讨AI技术创业领域中的机会,并通过具体的例子来说明它们。
2024-04-09 21:25:51 395 3
原创 【经典算法】LeetCode 5: 最长回文子串(Java/C/Python3实现含注释说明,Medium)
通过动态规划计算回文子串算法稳定可靠需要额外的二维数组存储状态O(n^2)O(n^2),中心扩展法通过扩展中心位置计算回文子串具有较高效率对空间的使用较低O(n^2)O(1)
2024-04-09 18:33:09 1158 16
原创 程序员如何搞副业
作为程序员,我们拥有多种多样的副业选择。通过学习新的技术领域、自主开发产品和应用、参与开源项目、写技术博客或者提供咨询和远程工作等多种途径,我们可以实现副业的成功。重要的是,需要不断地学习和探索,将自己的技术优势转化为副业的机会。逐渐地,我们可能会发现自己的副业成为了主要的收入来源,甚至成为了我们的创业项目。
2024-04-08 12:53:53 897 4
原创 【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)
方式描述优点缺点时间复杂度空间复杂度迭代模拟直接根据规则模拟整个游戏过程,依次淘汰成员直观和易理解当成员数目较大时,效率较低O(num^2)O(num)数学+迭代通过数学公式递推最终结果,逐步缩小问题规模时间效率高,不需要昂贵的删除操作需要数学知识,公式推导可能不够直观O(num)O(1)递归通过递归函数,从基础情况逐步返回最终答案代码简洁,易编写栈空间开销大,可能会栈溢出O(num)O(num)迭代改进递归方法的迭代版本,避免了栈溢出的问题。
2024-04-08 11:08:06 457 6
原创 Flink常见面试问题(附答案)
Apache Flink是一个开源的流处理和批处理框架,可以实现快速、可靠、可扩展的大数据处理。窗口是Flink中用于对无限数据流进行有界处理的机制。它将无限流切分为有限的、不重叠的块,并对每个窗口进行计算。。
2024-04-07 12:55:17 1992 9
原创 【经典算法】LeetCode25:K 个一组翻转链表(Java/C/Python3,Hard)
递归法迭代+原地反转方法思路将链表划分为大小为k的子链表,递归处理使用循环迭代遍历链表,并在每次迭代中原地反转子链表时间复杂度O(n),每个节点被遍历一次O(n),每个节点被遍历一次空间复杂度O(n/k),递归调用栈的深度O(1),原地修改链表(如果递归栈的深度达到n/k,则创建了O(n/k)个递归调用栈帧)(不需要额外的空间,仅使用常数级别的指针变量和变量存储空间)优点实现简单,逻辑清晰不需要额外的递归调用栈,适用于大规模链表代码可读性好原地修改链表,不需要额外空间。
2024-04-07 09:03:34 453
原创 SpringBoot自动装配原理
配合@EnableAutoConfiguration注解使用时,它主要扮演的是配置查找器的角色。这个注解利用其自身的完整类名org.springframework.boot.autoconfigure.EnableAutoConfiguration作为搜索的关键词(Key),来定位并加载一组相关的@Configuration类。SpringBoot的自动装配主要依赖于Spring框架的条件配置(Conditional Configuration)和Java的配置类(Java Config)功能。
2024-04-05 10:01:14 347 2
原创 程序员的升级打怪之路
转眼间,我已经进入程序员的大门已经近4个春秋了(算上实习的话,那就是快5年了…🐶.🐶.🐶不能再展开了,再不就暴露年龄了😅)。这段时间,我经历了太多的代码坑,被各种报错信息虐待,跟bug打了无数个疯狂的游击战,有时甚至以为自己要被bug吞噬掉。但是,这个行业也给了我很多惊喜。认识了一群志同道合的朋友,一起喝咖啡调试代码,讨论最新的编程趋势,还一起嘲笑那些莫名其妙的命名规范。所以,我决定写下这篇文章,用这种方式来总结一下这段经历和展望未来。毕竟,笑着面对bug,才能让我们的代码世界更加美好嘛!
2024-04-04 18:08:39 472 2
原创 【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
哈希表法排序和双指针法时间复杂度O(n + m) (n 和 m 分别为两个数组的长度)O(nlogn + mlogm)(n 和 m 分别为两个数组的长度)空间复杂度O(min(n, m)) (n 和 m 分别为两个数组的长度)O(min(m,n)) (C语言版本为O(1),不包括存储结果的数组,则为)提前排序不需要需要额外空间需要不需要适用场景未排序的数组已排序的数组优点- 不需要提前排序数组;- 适用于大多数情况下的数组交集问题- 不需要额外的空间用于存储哈希表;
2024-04-04 10:59:02 1004 4
原创 【经典算法】LeetCode101:对称二叉树(Java/C/Python3实现含注释说明,Easy)
方法优点缺点时间复杂度空间复杂度递归法- 直观易懂- 代码相对简洁- 可能导致函数调用栈溢出的风险- 需要额外的空间来存储函数调用栈O(n)O(n)队列法- 不会导致函数调用栈溢出的风险- 无需递归,代码较为直观- 灵活的节点入队和出队顺序- 需要手动维护队列数据结构和追踪节点的层次- 需要额外的空间来存储队列和节点的信息O(n)O(m)
2024-04-03 13:00:00 1169
原创 动态规划详解(Dynamic Programming)
动态规划的核心思想是将问题分解为一系列子问题,并通过记忆化或递推的方式求解子问题,从而得到原始问题的解。
2024-04-03 08:54:35 1707 2
原创 【经典算法】LeetCode 20:有效的括号(Java/C/Python3实现含注释说明,Easy)
对比点递归法栈解法思路直观性直观相对复杂递归深度问题可能存在递归深度过大导致栈溢出的风险无递归深度限制利用系统调用栈是否时间复杂度O(n)O(n)空间复杂度O(n)O(n)实现复杂性相对简单相对复杂额外空间需求无有。
2024-04-02 07:57:01 711
原创 【经典算法】LeetCode 21:合并两个有序链表Java/C/Python3实现含注释说明,Easy)
递归和迭代都可以用来解决将两个有序链表合并的问题。递归解法迭代解法优点简洁,易于理解和实现不涉及函数递归调用,避免递归开销和栈溢出问题缺点可能产生多个函数调用,涉及函数调用开销和栈溢出问题需要使用额外变量保存当前节点,增加代码复杂性时间复杂度O(m+n),其中m和n分别是两个链表的长度O(m+n),其中m和n分别是两个链表的长度空间复杂度O(m+n),其中m和n分别是两个链表的长度O(1)在实际应用中,如果链表较长,特别是超过系统栈的容量,采用迭代解法更为安全。
2024-04-01 09:00:40 1218
原创 【经典算法】LeetCode1:两数之和(Java/C/Python3实现含注释说明,Easy)
两数之和的三种解法思路,以及java和c和python的解法很详细,
2024-03-31 12:09:16 607
原创 【经典算法】LeetCode14:最长公共前缀(Java/C/Python3实现含注释说明,Easy)
最长公共前缀(LeetCode 14,Easy)的4种经典解法:横向扫描,纵向扫描,分治法,二分法,以及java,C,python的3种语言的实现
2024-03-31 11:18:49 1205
ES简介 入门资料.pptx
2020-08-18
PulseSecure.dmg
2020-06-05
东北林业大学使用校园网设置.zip
2020-01-04
Mybatis_day01.pdf
2019-08-08
MyBatis第一天课堂笔记.docx
2019-08-08
JAVA知识点总结.pdf
2019-07-27
jquery-3.4.1.zip
2019-07-27
JAVA并发.pdf
2019-07-27
8030387_1545711327994_牛客特制名企春招实习备战攻略-技术篇.pdf
2019-07-27
3DPhotoWall_CSS3-master.zip
2019-07-27
3DphotosWall-master.zip
2019-07-27
4_字节跳动19春招研发第三次在线笔试-A卷_牛客网.html
2019-07-11
1python安装与项目搭建.doc
2019-07-11
23490书中算法.rar
2019-07-11
JAVAEE.docx
2019-07-11
数据库实验报告.rar
2019-05-21
学生信息管理系统 项目数据库设计说明书 .doc
2019-05-21
实验三 数据库的安全性和完整性控制.doc
2019-05-21
数据库系统原理-实验-2.doc
2019-05-21
mysql5.5安装.docx
2019-05-21
计算机算法设计与分析(第4版)-王晓东习题解答.pdf
2019-05-21
计算机算法设计与分析期末考试复习题.doc
2019-05-21
算法设计和分析题目和源代码.doc
2019-05-21
登录及注册模板源码.zip
2019-05-12
SSH整合手册
2019-05-03
Java经典面试题(答案解析)
2019-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人