- 博客(377)
- 资源 (28)
- 收藏
- 关注
原创 高并发架构设计(三大利器:缓存、限流和降级)
高并发是指系统或应用程序在同一时间段内接收到大量并发请求的能力。具体来说,高并发环境下系统需要能够同时处理大量的请求,而不会出现性能问题或响应延迟在网站或APP的开发中,缓存机制是一个不可或缺的环节,可以提高网站或APP的访问速度,降低数据库压力。但在高并发环境下,缓存机制的作用更加明显,不仅可以有效减轻数据库的负载,还可以提高系统的稳定性和性能,从而给用户带来更好的体验。
2023-11-11 22:27:47 1710 17
原创 JavaScript常见参数验证
在JavaScript开发中,参数验证是非常重要的一环。它可以帮助我们确保函数的输入是有效的,从而避免潜在的错误和异常。本文将介绍一些常用的参数验证工具类和方法,以及如何使用正则表达式进行验证。
2019-07-27 15:31:01 18301 2
原创 $(function(){ }
(function(){ }是$(document).ready(function()的简写,相当于window.onload = function(){ } ,虽然这段jquery代码与javascript代码在功能上可以互换,但执行的时间不一样,前者页面框架加载完成就执行,后者页面中所有内容加载完成才执行。
2019-07-08 10:45:41 11261
原创 MySql存储引擎
此外,如果你正在使用的是MySQL 5.7或更高版本,并且表中有正在运行的查询或事务,你需要在切换期间暂停这些活动,以防止错误或数据不一致等问题。从MySQL8.0开始,它就可以被称为过时了 – MySQL已经确保在使用InnoDB时,MyISAM可以完成的所有工作都可以完成,因此目前,只有当您希望简单的COUNT(*)查询更快时,MyISAM才非常有用。根据你的业务需求和数据特点,选择适合的存储引擎。它的优点是速度快,占用的存储空间小,但缺点是数据的安全性不高,不支持事务,不支持外键等。
2019-05-08 11:15:23 1986
原创 TCP三次握手和四次挥手的全过程
一句话,主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。如果使用的是两次握手建立连接,假设有这样一种场景,客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。
2019-04-17 09:33:14 614 2
原创 Scala特色功能点
总的来说,Scala 就像是编程界的“瑞士军刀”,功能强大、灵活多变,让开发者们在编写代码时如鱼得水。虽然 Java 依然在企业应用中占据一席之地,但 Scala 的现代特性和优雅语法无疑让它在某些场合下更具吸引力。
2024-12-12 01:08:35 1027 1
原创 用 Java 的思路快速学习 Scala
Scala 中的函数定义与 Java 方法类似,但更为简洁。Scala 支持高阶函数和匿名函数。函数定义// Java// Scala匿名函数// Java// ScalaScala 是一种强大且灵活的编程语言,结合了面向对象和函数式编程的优点。通过掌握 Scala 的基本语法、高级特性、设计模式以及最佳实践,你可以在实际项目中充分发挥其优势。
2024-12-12 01:05:56 492
原创 Spark中的RDD和DataFrame
在Apache Spark中,RDD和DataFrame是处理大数据的两种主要数据结构。下面是一个总结表格,展示了它们的用法和相关API,帮助理解它们的主要功能和操作。特性/操作RDDDataFrame定义低级API,提供细粒度的数据操作能力。高级API,基于Spark SQL构建,提供类似关系数据库的操作。数据类型支持任何类型的Python、Java、Scala对象。优化的行列数据存储。需要定义schema。创建转换操作map()filter()select()filter()groupBy()
2024-12-09 15:23:14 632 1
原创 浅谈Scala语言
Scala语言虽然是一门较新的编程语言,但它在简化数据处理和分析任务方面显示出了显著的优势。通过本文的介绍,我们希望你能对Scala有一个全面的了解,从基础语法到实际应用,再到在Spark中的集成使用,以及面临的挑战和未来的发展方向。随着技术的不断进步和数据科学领域的快速发展,掌握如SLACA这样的工具将为数据科学家和工程师提供更多的机会,帮助他们在数据驱动的世界中取得成功。无论是在学术研究还是在商业应用中,Scala都有望成为一个重要的力量。
2024-12-08 22:07:59 647
原创 Java 转Scala的那些异同
在这个数据爆炸的时代,大数据应用如雨后春笋般涌现。作为一名 Java 开发者,你可能会发现 Scala 这个新世界充满了诱惑。Scala 结合了面向对象和函数式编程的优点,尤其在大数据领域(如 Apache Spark)中表现得尤为出色。但从 Java 转到 Scala,就像从平坦的公路驶入蜿蜒的山路,既有风景如画的美好,也有让人晕车的挑战。今天,我们就来聊聊这条转型之路上的异同、不适应的地方以及需要注意的事项。
2024-12-08 21:40:28 995
原创 Go 语言常用工具方法总结
在 Go 语言开发中,常常需要进行一些常见的类型转换、字符串处理、时间处理等操作。本文将总结一些常用的工具方法,帮助大家提高编码效率,并提供必要的代码解释和注意事项
2024-11-27 23:10:24 1072 2
原创 Java工具类RxJava:异步化编程神器
RxJava 是一个使用可观察序列来编写异步和基于事件的程序的库。它扩展了观察者模式,支持数据/事件序列的丰富操作,如映射、过滤、合并等。RxJava 的核心思想是,数据(事件)的序列会在不同的时间点被发出、处理并最终交付给观察者(订阅者)。在使用RxJava之前,你需要将其添加到你的项目中。如果是Maven项目,你可以在pom.xml文件中添加如下依赖:-- 请替换为最新版本号 --> -- 请替换为最新版本号 -->
2024-09-19 20:54:42 1014 1
原创 Java反射为何比直接调用慢?
例如,反射调用通常无法被内联,且由于反射方法的调用是动态的,JIT 编译器无法提前知道要调用的具体方法,从而无法进行诸如方法内联、逃逸分析等优化。因此,在性能要求较高的场景下,应尽量避免过度使用反射,尤其是在性能敏感的代码中。然而,与直接调用相比,反射调用通常伴随着更高的性能损耗。这一过程涉及到对类路径的搜索、类文件的加载、类结构的解析等步骤,相比直接调用方法时直接跳转到目标方法的地址,反射调用显然需要更多的时间和资源。实验结果显示,反射调用的时间通常会比直接调用长很多,这验证了上述的性能损耗原因。
2024-09-19 20:42:55 624
原创 超越源自内省:《自卑与超越》
自卑与超越》是奥地利著名心理学家阿尔弗雷德·阿德勒(Alfred Adler)的代表作之一,首次出版于1932年。这本书不仅是阿德勒个体心理学理论的集大成者,也是一部深刻探讨人性、理解自我、实现人生价值的经典之作。阿德勒以其独特的视角,解析了自卑感如何影响个人行为、人际关系乃至整个生命历程,并指出通过理解与合作,个体能够超越自卑,达到自我实现和社会和谐。阿尔弗雷德·阿德勒,20世纪初奥地利的精神病学家及维也纳精神分析学派的重要代表人物之一,与弗洛伊德、荣格并称为“心理学三大巨头”。
2024-07-27 08:49:54 666 2
原创 动态规划:如何巧妙解决“双十一”购物时的凑单问题?
淘宝的“双十一”购物节有各种促销活动,比如“满200元减50元”。假设你女朋友的购物车中有n个(n>100)想买的商品,她希望从里面选几个,在凑够满减条件的前提下,让选出来的商品价格总和最大程度地接近满减条件(200元),这样就可以极大限度地“薅羊毛”。作为程序员的你,能不能编个代码来帮她搞定呢?要想高效地解决这个问题,就要用到我们今天讲的动态规划(Dynamic Programming)。
2024-07-09 17:53:49 782 1
原创 【经典算法】LeetCode 27. 移除元素(Java/C/Python3/Go实现含注释说明,Easy)
方式优点缺点时间复杂度空间复杂度双指针原地修改,满足题目要求需要对数组进行遍历O(n)O(1)
2024-06-20 23:12:34 1627 2
原创 Eureka:服务发现与注册中心的技术瑰宝
Eureka是一个基于REST的服务,主要用于在AWS云环境中进行服务定位,它由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器,各个微服务节点通过Eureka客户端向Eureka服务器注册自己的服务信息,并通过心跳连接来持续更新其服务状态。而在客户端,Eureka客户端会缓存服务注册表信息,并提供服务发现的功能。
2024-06-20 08:15:00 620
原创 决策树算法介绍、原理与案例分析
决策树是一种监督学习算法,主要用于分类问题,但也可以用于回归问题。每个内部节点表示一个特征属性上的判断条件,每个分支代表某个判断条件的输出,每个叶子节点表示一个类别标签(分类树)或一个具体数值(回归树)。决策树的构建过程遵循一定的准则,如信息增益(ID3算法)、信息增益比(C4.5算法)或基尼不纯度(CART算法)等,来选择最佳划分属性。:根据选择的最优特征将数据集划分为子集,并对每个子集递归地执行此过程,直到满足停止条件(如子集中所有样本都属于同一类别、没有更多特征可供划分或子集大小小于预设阈值等)。
2024-06-19 08:15:59 792
原创 【经典算法】LeetCode 8:多种编程语言实现字符串转换整数 (atoi)(Java/C/Python3/Go实现含注释说明,中等)
方式优点缺点时间复杂度空间复杂度方式一(正则)代码简洁,易于理解和实现正则表达式可能带来性能开销O(n)O(1)方式二(迭代)性能较好,没有正则表达式开销代码可能相对较长,需要手动处理更多情况O(n)O(1)
2024-06-19 08:06:54 771
原创 【经典算法】LeetCode 12: 整数转罗马数字(Java/C/Python3/Go实现含注释说明,Easy)
方式时间复杂度空间复杂度说明方式一:直接映射O(1)O(1)映射关系固定,查找和转换的步骤数是常数,所需数据结构大小也是常数。方式二:硬编码规则O(1)O(1)硬编码的规则导致转换步骤和所需空间都是固定的。方式三:贪心算法O(1)O(1)由于整数范围和罗马数字规则固定,贪心算法的步骤数和所需数据结构大小都是常数。需要注意的是,这里的O(1)并不意味着这些操作会瞬间完成,而是指它们的执行时间不随输入大小的增长而增长。
2024-06-19 07:54:23 1031
原创 【经典算法】LeetCode 13:罗马数字转整数(Java/C/Python3/Go实现含注释说明,Easy)
方式优点缺点时间复杂度空间复杂度方式一实现简单、直接,效率高需要额外处理减法情况O(n)O(1)
2024-06-18 22:49:14 1432 1
原创 Apache Flink 如何保证 Exactly-Once 语义
Apache Flink 通过状态一致性检查点和 Two-Phase Commit 协议来确保 Exactly-Once 语义。这些机制确保了数据在分布式系统中的一致性和准确性,从而提高了大数据处理的可靠性和准确性。在实际应用中,我们可以根据具体需求配置 Flink 的检查点策略和外部存储系统的写入策略,以实现更好的性能和可靠性。
2024-06-12 11:38:18 1127 2
原创 JDK 11下“+“字符串拼接与StringBuilder性能之谜
在Java编程中,字符串拼接是一个常见的操作。传统上,我们可能会认为使用进行字符串拼接会比直接使用"+“运算符更高效,因为后者在每次拼接时都会创建新的字符串对象,从而产生额外的性能开销。然而,在JDK 11及后续版本中,这种观念可能需要被重新审视。本文将深入探索在JDK 11下”+"字符串拼接可能比还快的原理,并结合源码解读和原理分析来阐述这一现象。
2024-06-12 11:30:35 402
原创 【经典算法】LeetCode 222. 完全二叉树的节点个数(Java/C/Python3实现含注释说明,Easy)
方式优点缺点时间复杂度空间复杂度方式一(层次遍历)直观易懂,不依赖特殊性质代码量较大,需要额外的空间存储队列O(N)O(N)(队列空间)方式二(二分查找+递归)利用完全二叉树的性质,平均性能较好递归调用栈可能较深,最坏情况下时间复杂度较高O(N log N)O(H)(H为树的高度,通常小于N)
2024-06-09 21:18:28 1316 4
原创 【经典算法】LeetCode 392 判断子序列(Java/C/Python3/Go实现含注释说明,Easy)
作者主页: 🔗精选专栏:🔗作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。一起学习Java、大数据、数据结构算法(关注,持续更新🤞。
2024-06-05 14:08:55 1299 22
原创 【经典算法】LeetCode 1103 分糖果 II(Java/C/Python3实现含注释说明,Easy)
方式优点缺点时间复杂度空间复杂度方式一逻辑清晰,容易理解需要两次遍历O(n)O(n)方式二优化了时间复杂度,只需一次遍历逻辑稍微复杂一些O(n)O(n)
2024-06-03 09:54:31 1070 8
原创 MySQL中InnoDB的知识点
以上InnoDB的实现和运行原理到这里就介绍完了。回顾模块六,前三讲我主要介绍了数据库操作的性能优化,包括SQL语句、事务以及索引的优化,接下来我又讲到了数据库表优化,包括表设计、分表分库的实现等等,最后我还介绍了一些数据库参数的调优。
2024-05-26 08:00:00 1120
原创 数据库分表分库
在业务开发之前,我们首先要根据自己的业务需求来设计表。考虑到一开始的业务发展比较平缓,且开发周期比较短,因此在开发时间比较紧的情况下,我们尽量不要考虑分表分库。但是我们可以将分表分库的业务接口预留,提前考虑后期分表分库的切分规则,把该冗余的字段提前冗余出来,避免后期分表分库的JOIN查询等。当业务发展比较迅速的时候,我们就要评估分表分库的必要性了。一旦需要分表分库,就要结合业务提前规划切分规则,尽量避免消耗性能的跨表跨库JOIN查询、分页查询以及跨库事务等操作。
2024-05-25 07:00:00 468
原创 MySQL调优之索引:索引的失效与优化
在大多数情况下,我们习惯使用默认的 InnoDB 作为表存储引擎。在使用InnoDB作为存储引擎时,创建的索引默认为B+树数据结构,如果是主键索引,则属于聚簇索引,非主键索引则属于辅助索引。基于主键查询可以直接获取到行信息,而基于辅助索引作为查询条件,则需要进行回表,然后再通过主键索引获取到数据。如果只是查询一列或少部分列的信息,我们可以基于覆盖索引来避免回表。覆盖索引只需要读取索引,且由于索引是顺序存储,对于范围或排序查询来说,可以极大地极少磁盘I/O操作。
2024-05-24 11:15:32 904
原创 浅谈分布式锁设计
在JVM中,在多线程并发的情况下,我们可以使用同步锁或Lock锁,保证在同一时间内,只能有一个线程修改共享变量或执行代码块。但现在我们的服务基本都是基于分布式集群来实现部署的,对于一些共享资源,例如我们之前讨论过的库存,在分布式环境下使用Java锁的方式就失去作用了。这时,我们就需要实现分布式锁来保证共享资源的原子性。
2024-05-21 11:06:21 732
原创 为什么很多人工作 3 年 却只有 1 年 经验?
工作中的经历如果不经过反思和总结,就很难转化为真正的经验。很多人只是机械地完成任务,没有思考其背后的逻辑、得失以及如何做得更好。解决方案: 养成定期回顾工作的习惯,无论是成功还是失败的案例,都要深入分析,从中提取教训和经验。写工作日记或做复盘会议,都是很好的实践方式。
2024-05-15 20:13:23 764 2
原创 Java性能优化(九)-多线程调优-垃圾回收机制优化
今天的内容比较多,最后再强调几个重点。垃圾收集器的种类很多,我们可以将其分成两种类型,一种是响应速度快,一种是吞吐量高。通常情况下,CMS和G1回收器的响应速度快,Parallel Scavenge回收器的吞吐量高。在JDK1.8环境下,默认使用的是Parallel Scavenge(年轻代)+Serial Old(老年代)垃圾收集器,你可以通过文中介绍的查询JVM的GC默认配置方法进行查看。通常情况,JVM是默认垃圾回收优化的,在没有性能衡量标准的前提下,尽量避免修改GC的一些性能配置参数。
2024-05-11 11:26:41 779 2
原创 Java性能优化(八)-多线程调优-线程池大小设置
今天我们主要学习了线程池的实现原理,Java线程的创建和消耗会给系统带来性能开销,因此Java提供了线程池来复用线程,提高程序的并发效率。Java通过用户线程与内核线程结合的1:1线程模型来实现,Java将线程的调度和管理设置在了用户态,提供了一套Executor框架来帮助开发人员提高效率。Executor框架不仅包括了线程池的管理,还提供了线程工厂、队列以及拒绝策略等,可以说Executor框架为并发编程提供了一个完善的架构体系。
2024-05-10 19:19:08 1437
原创 Java性能优化(七)-多线程调优-并发容器的使用
跳跃表是基于链表扩展实现的一种特殊链表,类似于树的实现,跳跃表不仅实现了横向链表,还实现了垂直方向的分层索引。一个跳跃表由若干层链表组成,每一层都实现了一个有序链表索引,只有最底层包含了所有数据,每一层由下往上依次通过一个指针指向上层相同值的元素,每层数据依次减少,等到了最顶层就只会保留部分数据了。跳跃表的这种结构,是利用了空间换时间的方法来提高了查询效率。程序总是从最顶层开始查询访问,通过判断元素值来缩小查询范围。我们可以通过以下几张图来了解下跳跃表的具体实现原理。
2024-05-09 08:30:00 1643
原创 Java性能优化(六)-多线程调优-乐观锁
LongAdder的原理就是降低操作共享变量的并发数,也就是将对单一共享变量的操作压力分散到多个变量值上,将竞争的每个写线程的value值分散到一个数组中,不同线程会命中到数组的不同槽中,各个线程只对自己槽中的value值进行CAS操作,最后在读取值的时候会将原子操作的共享变量与各个分散在数组的value值相加,返回一个近似准确的数值。LongAdder内部由一个base变量和一个cell[]数组组成。
2024-05-08 08:30:00 817
原创 Java性能优化(五)-多线程调优-Lock同步锁的优化
基本特点Lock锁的基本操作通常基于乐观锁实现,尽管在某些情况下(如阻塞时)它也可能采用悲观锁的策略。通过对比图,我们可以清晰地看到两种同步锁的基本特点。Lock同步锁与Synchronized的比较在Java中,同步锁机制是确保多线程安全访问共享资源的重要手段。与JVM隐式管理锁的Synchronized相比,Lock同步锁(以下简称Lock锁)提供了更细粒度的控制,通过显式地获取和释放锁,为开发者提供了更大的灵活性。一、基本特点。
2024-05-07 19:30:00 716 2
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
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关注的人