自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

夜尽天明

java小白的成长之路

  • 博客(82)
  • 资源 (12)
  • 收藏
  • 关注

转载 分库分表,可能真的要退出历史舞台了!

强一致事务是否必须在数据库层解决?数据的增长速度是否不可预估的?扩容的频率是否已超出了自身运维能力?相比响应时间更看重吞吐?是否必须做到对应用完全透明?是否有熟悉NewSQL数据库的DBA团队?如果以上有2到3个是肯定的,那么你可以考虑用NewSQL数据库了,虽然前期可能需要一定的学习成本,但它是数据库的发展方向,未来收益也会更高,尤其是互联网行业,随着数据量的突飞猛进,分库分表带来的痛苦会与日俱增。当然选择NewSQL数据库你也要做好承担一定风险的准备。

2024-04-19 14:23:10

原创 资源管理规范

踩坑经验:对于IO及池化资源(文件、线程池、网络IO(HttpClient)、磁盘IO),使用之后一定要及时回收,finally2. java 7及以上版本支持try-with-resources语句,它可以自动关闭实现了AutoCloseable接口的资源。模式不仅适用于文件操作,还可以用于数据库连接、网络连接等任何需要清理资源的场景。

2024-04-18 18:27:38 406

原创 518温州攻略

**交通**:温州交通便利,可选择高铁、飞机或汽车等多种方式抵达。市区内可使用公交、出租车或共享单车。- 在五马街享用午餐,这里是温州的商业中心,街道两旁有许多特色餐厅和小吃,可以品尝到地道的温州美食。- **购物**:五马街是购物的好去处,可以购买到当地的特产和纪念品。- **住宿**:温州市区有各种档次的酒店可供选择,建议提前预订。- **美食**:温州的美食丰富多样,如鱼丸、灯盏糕、瓯越小吃等。- **季节**:温州四季皆宜,春秋两季天气更为宜人,适合旅游。- **建议游玩时间**:3-4小时。

2024-04-16 17:07:52 316

原创 OLAP介绍

OLAP(在线分析处理)的上下文中,"Rollup"是一个重要的概念,它指的是在多维数据集中自动地聚合数据到更高的层次或维度的过程。这种操作通常用于快速计算和展示汇总数据,以便于用户进行数据分析和决策支持。MPP数据库,即大规模并行处理(Massively Parallel Processing)数据库,是一种旨在通过并行处理多个数据节点来提高查询速度和数据处理能力的数据库系统。MPP数据库采用了分布式架构,可以在多个服务器、计算节点或实例上同时执行数据的存储、管理和计算任务。

2024-04-08 11:53:48 553

原创 CopyOnWrite 思想

通过思想实现了在读多写少的并发场景下的高效性。它通过复制原始数据结构来避免在写操作时对读操作造成干扰,同时使用内部锁和快速失败的迭代器来保证线程安全。然而,由于写操作的开销较大,它不适合用于高并发写入的场景。在使用时,应当根据实际的应用场景和性能需求来决定是否采用。

2024-03-21 18:41:45 374

原创 Netty初学者指南:构建高性能网络应用

本文提供了Netty的基本概念和两个简单的示例:一个服务器和一个客户端。通过这些示例,你应该能够理解Netty的基本工作原理,并开始构建自己的网络应用程序。Netty的强大之处在于其模块化的设计和对高性能异步处理的支持,这使得它成为构建现代网络应用的理想选择。随着你对Netty的进一步学习,你将能够利用其丰富的特性和强大的性能,构建出更加复杂和高效的网络系统。

2024-03-21 17:50:07 351

原创 超时控制这样才放心

面对超时,我们要降低发生的概率,同时做好强有力的防护,不相信任何三方组件和接口,绝对保证自己及上游系统的稳定性!

2024-02-02 12:03:44 928

原创 服务限流算法

滑动窗口:还拿上面的例子,一分钟分6份,每份10秒;每过10秒钟,我们的时间窗口就会往右滑动一格,每个格子都有独立的计数器,我们每次都计算时间窗口内的数量,可以解决计数器法中的问题,而且当滑动窗口的格子越多,那么限流的统计就会越精确。漏桶算法:这个算法也很简单,就是我们有一个固定容量的桶,有水流进来,也有水流出去,我们不需要控制流进来的速度,只需要控制流出去的速度,如果水流进来得太快,桶满了,多余的水会溢出区,并不会影响水流出去的速度。令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌。

2023-06-13 22:55:01 183

原创 聊聊多线程

开发过程中,总会遇到一些并发安全问题。本文总结出常用的数据结构哪些是安全的,哪些是不安全的以及他们为什么是不安全。

2023-06-12 09:01:04 218

原创 详解MVCC相关知识点

在mysql,一个事务中,第一次读某一行的操作,会对这行形成快照读,记录当前的事务id,后续不在生成快照读,每次读取值都是相同的。快照读形成的读视图会包含:trx_list当前行对应的未提交的事物及最小事务id和当前行对应的最新的事务id+1。不可重复读:在一个事务中,相同两次读取的数据结果不相同。可重复读:在一个事务中,相同两次读取的数据结果相同。

2023-05-25 17:31:40 815

原创 强大的ETCD

堆外存储,没有垃圾回收暂停问题。触发之后无需再次设置一次。断开连接后不会丢失所有事件。支持增量快照,避免了。只能收到一次事件通知,可以持续监控,在一次。持有一个事件窗口,在。

2023-05-25 14:34:35 61

原创 论并发不安全性

开发过程中,总会遇到一些并发安全问题。本文总结出常用的数据结构哪些是安全的,哪些是不安全的以及他们为什么是不安全。

2023-05-25 14:12:09 32

原创 详细分析置换算法

对于操作系统而言,虚拟空间是非常大的,我们往往无法直接将如此大的空间装入内存,而即使我们采用多级页表与段页式存储即使,也仅仅只是节省了页表的大小,如此将如何多的物理页装进内存仍然是一个问题,为此科学家们提出了一种动态的思想,当剩余空间不够装入新页面时,操作系统就选择适当的页将其刷新回磁盘(如果确实是脏页的话,如果不是脏页则仅仅只是覆盖),以此空出空间装入新页,而这则需要运用到页面置换算法。还有一个问题是:是否需要对每一个进程固定一个空间大小,换句话说,是采用策略还是策略。

2023-05-23 11:07:41 742

原创 数据类型和大小

这些类型别名等效于使用上一个表中的对应基本类型的名称,并相应地为每一种数据模型进行了定义。例如,类型名称 uint8_t 是类型 unsigned char 的别名。有关如何定义自己的类型别名以供在 D 程序中使用的信息,请参见。整数类型可以带有 signed 或 unsigned 限定符的前缀。如果不存在任何符号限定符,则会将该类型假定为带符号。D 提供了用于与 ANSI-C 声明和类型保持兼容性的浮点类型。D 中不支持浮点运算符,但可以使用。大小等于指针的带符号整数。大小等于指针的无符号整数。

2023-05-22 14:43:53 114

原创 Redis数据结构-SDS

用来优化SDS的字符串增长操作:当SDS的API对一个SDS进行修改,并且需要对SDS进行空间扩展的时候,程序不仅会为SDS分配修改所必须要的空间,还会为SDS分配额外的未使用空间。用来优化SDS字符串缩短操作:当SDS的API对一个SDS进行缩短时,程序并不立即回收多出来的字节,而是通过alloc和len的差值,将这些字节数量保存起来,等待将来使用。Redis没有使用C语言传统的字符串表示方式(以’\0’结尾的字符数组),而是自己实现了sds的抽象类型,Redis默认使用sds作为字符串的表示。

2023-05-22 14:37:02 471

原创 多个链表进行排序

将每个链表的头结点放入堆中,每次取出堆顶元素,再把他的后继节点放入堆中,重复操作即可。2)可以通过小顶堆思路。两两合并时,两个链表n,m。1)分治法,两两进行合并。1.两两进行合并排序处理。2)归并排序思路,附代码。

2023-05-21 23:23:20 98

转载 聊聊高性能队列disruptor

Disruptor通过精巧的无锁设计实现了在高并发情形下的高性能。在美团内部,很多高并发场景借鉴了Disruptor的设计,减少竞争的强度。其设计思想可以扩展到分布式场景,通过无锁设计,来提升服务性能。使用Disruptor比使用ArrayBlockingQueue略微复杂,为方便读者上手,增加代码样例。代码实现的功能:每10ms向disruptor中插入一个元素,消费者读取数据,并打印到终端。详细逻辑请细读代码。以下代码基于3.3.4版本的Disruptor包。/**

2023-05-19 14:17:38 264

原创 增量更新和原始快照

这直接。

2023-05-18 11:13:21 854

原创 G1垃圾回收器

在 GC 的选择上,同样是“没有银弹”,不同的收集器有着各自的特点和适用场景,即使是 Epsilon 也会在特定场合下发挥作用。我们应针对不同的业务特征和系统情况选择最合适的垃圾回收器,而不是一味求新。

2023-05-10 10:05:07 1904

原创 ClickHouse为何能超越Elasticsearch?

ClickHouse还有一些其他的优点,比如异步的多主复制技术,能保证系统在不同副本上保持相同的数据,大多情况下能故障后自动恢复;采用SQL语法,比ES的DSL更加简单,学习成本更低……另外,ClickHouse也有一些缺点:•没有完整的事务支持。•无法像ES一样提供全文检索功能。•无法动态添加字段,需要提前定义好表schema。•无法支持高并发查询,默认配置QPS为100。•不适合高频地写入,否则会导致后台合并无法跟上新分区数量。

2023-05-09 18:52:17 2000

原创 关于JVM-你想知道的一切

本来自己想写一系列jvm相关的文章,无奈找到了一个优秀作者的文章,写的非常全面,表述清晰易懂,这里进行记录转播下:从原理聊JVM(一):染色标记和垃圾回收算法_Java_京东科技开发者_InfoQ写作社区从原理聊JVM(二):从串行收集器到分区收集开创者G1_G1_京东科技开发者_InfoQ写作社区从原理聊JVM(三):详解现代垃圾回收器Shenandoah和ZGC_G1_京东科技开发者_InfoQ写作社区

2023-04-28 15:27:02 40

原创 垃圾回收器之CMS

CMS在清除时,无法处理浮动垃圾,而这部分数据需要内存空间存放,所以CMS不能等到内存空间完全占满时运行,在1.5版本时,达到68%的老年代空间时进行清除,但启动过早,会导致垃圾回收频繁,-XX:CMSInitiatingOccupancyFraction参数可调整阈值。当重新标记结束后,进行并发清除可回收对象。CMS的默认线程数计算公式为:(cpu数量+3)/4,当cpu数量大于4时,会创建一个线程,这时线程数量占25%,影响不大,但当数量小于4时,会基本占用50%的资源,严重影响业务线程的执行时间。

2023-04-14 09:05:37 781

原创 高并发下系统稳定提升经验

1.Redis、Es采用备份机制,写入时,向主集群写入,通过同步机制向从集群同步数据,读取时优先读取主集群,主机群出现问题时,切换为从集群。2.采用限流熔断机制,限流一方面是通过中间件实现,一方面可通过远程配置中心增加开关,当开关打开时,直接返回结果,不做处理。9.增加冷备、热备机器,冷备方便运营人员及时手动切换,承载压力,热备防止全部机器宕机时,服务不可用。5.并发量提高时,不止增加服务器数量,同时增加Redis空间、分片数,增加ES的分片数。4.做好局部的异常控制,主逻辑保证可用。

2023-04-13 09:45:01 99

原创 Redis是如何进行持久化的

Redis 的读取速度是 110000 次/s,写入速度是 81000 次/s,这个性能是远远不能满足当下服务响应要求的,Redis成为了性能瓶颈。这种情况下就要求主从的数据要保持一致,以保证从节点顶上后,数据依然存在,可用。主节点会将持久化文件发送给从节点,详细的同步细节,下文介绍。首先, redis本身是可能宕机的,也会出现服务器突然断电、断网等情况,导致redis不可用,因为redis中存储的数据是保存在内存中的,当服务器宕机、断电重启后,内存中的数据会消失,那后续如何恢复呢?

2023-04-13 09:32:47 39

原创 分布式服务性能调优

15.方法层面提高,比如在大数据量时,采取更优的算法,比如取交集,采用hashSet方式更快,不要进行嵌套for循环。5.查询结果进行缓存,但大多数接口结果各不相同,这时可以对局部方法结果进行缓存。17.方法层面提高,上文查询过得方法,下文不断继续查询多次。要提高数据的利用率。14.预先计算,当性能不达标时,采取提前计算结果,直接返回的方式,延迟较大!2.去掉查库,改为查询缓存,远程缓存缓慢时,切换为本地缓存。1.缩减事务范围,事务大,提交事务、回滚时缓慢,16.在多次调用时,提供批量方法,不要循环调用。

2023-04-12 23:21:45 452

原创 热点数据监测方法

在日常开发中,我们需要着重注意一种场景-热点数据。他可能是一种请求,每次请求的数据类型都是一样的;可能是同一个数据,比如页面上公用的类型数据;可能是同一个用户大量的请求。他们都有着同一个特点,瞬时爆发量大、重复请求、频繁请求,所以这对于系统来说是非常频繁访问的数据,称为热点数据,与不常访问的数据有很明显的不同。我们在应对热点数据情况时,主要的手段为:非法请求过滤、限流、降级、本地缓存四种。

2023-04-12 22:47:49 884

原创 定时任务之时间轮算法

如上图中所示,我只需要把任务放到它需要被执行的时刻,然后等着时针转到这个时刻时,取出该时刻放置的任务,执行就可以了。这就是时间轮算法最核心的思想了。首先,时间轮的刻度可以用数组或者链表表示,每个刻度就是一个槽,槽用来存放该刻度需要执行的任务,如果有多个任务需要执行呢?1.时间刻度太多会导致时间轮走到的多数刻度没有任务执行,比如一个月就2个任务,按照一个月30天算,需要移动720次,其中718次是无用的。同理,当月轮移动到刻度12(12号)时,取出这个刻度下的任务,丢到天轮上,天轮接管该任务,到9点执行。

2023-04-12 22:47:02 796

原创 mysql分库分表分片分区及常见问题

MySQL单库数据量在5000万以内性能比较好,超过阈值后性能会随着数据量的增大而变弱。MySQL单表的数据量是500w-1000w之间性能比较好,超过1000w性能也会下降。

2023-04-11 23:26:28 796

原创 raft协议原理

Raft 是一个基于 Raft 协议的分布式一致性算法,它实现了一种双向的协作式的领导者选举和成员投票的过程,从而保证了分布式系统的高可用和一致性。在 Data Center 领域,Raft 协议已经被广泛应用,并且在 Microsoft 的 Azure 和 AWS,以及 Google 的 Kubernetes 中都得到了成功的部署和验证。具体来说,每个 follower 节点都会在其日志中记录其领导者选举和任期的结果,以确保系统中所有节点都具有相同的历史记录。

2023-04-07 11:21:46 683

原创 热点数据探测方法总结

在日常开发中,我们需要着重注意一种场景-热点数据。他可能是一种请求,每次请求的数据类型都是一样的;可能是同一个数据,比如页面上公用的类型数据;可能是同一个用户大量的请求。他们都有着同一个特点,瞬时爆发量大、重复请求、频繁请求,所以这对于系统来说是非常频繁访问的数据,称为热点数据,与不常访问的数据有很明显的不同。我们在应对热点数据情况时,主要的手段为:非法请求过滤、限流、降级、本地缓存四种。

2023-03-21 09:57:02 712

原创 senna延时队列

1.应用场景目前系统中有很多需要用到延时处理的功能:支付超时取消、排队超时、短信、微信等提醒发送、token刷新等等。通过延时处理,极大的节省系统的资源,不必轮询数据库处理任务。大部分功能目前通过定时任务完成,定时任务还分使用quartz及xxljob两种类型轮询时间短,每秒执行一次,对数据库造成一定的压力,并且会有1秒的误差。轮询时间久,如30分钟一次,会造成30分钟的误差,例:轮询时3:00执行一次轮询,3.01插入一条数据,正常3:31执行过期,但是3:30执行轮询时,是扫描不到的,需要4:0

2022-04-02 16:43:35 2562

原创 微服务架构中组件的原理和分析(注册中心)

eureka:并不是像zookeeper、redis、mysql这些分布式架构的master-slave架构体系,每一个server节点间都是平级的。每个server都会向其他server注册自己,但是不会拉取

2021-07-02 18:03:44 145

原创 前台freemarker处理后台传递过来的map数据问题

先看几行代码[#assign countConditions="{'params':{'courseId':'${(params.courseId)!''}'}}"/][#assign result = stack.findValue('getLearnData("learnCourseItem","queryItemCountAndCourseConfig","${countCondi

2021-07-02 15:41:37 575

原创 微服务架构中组件的原理和分析(fegin)

首先feign也是通过调用了ribbon的负载均衡器实现了server地址的映射和负载均衡通过增加EnableFeignClients 开启feign然后引入了FeignClientRegister->registerDefaultConfiguration 扫描注解FeignClient->registerFeignClients->FeignClientFactoryBean会将FeignClient注解的类信息交给工厂类生成代理bean注册到spring容器中总结就是

2021-07-02 11:50:45 194

原创 微服务架构中组件的原理和分析(ribbon)

负载均衡及获取服务地址的组件:一般默认于eureka集成在一起,可以配置成nacos其他服务注册中心一起使用。默认集成在了feign中,自己单独使用,需要使用spring cloud提供的RestTemplate方法调用服务,并且增加@loadBalance注解过程:首先spring boot启动时,会自动装配ribbon的配置,RibbonAutoConfiguration->LoadBalancerAutoConfiguration:会自动扫描包含loadBalance注解的RestT

2021-07-02 11:41:34 318

原创 微服务架构中组件的原理和分析(hystrix)

hytrix:处理过程:hystrix 可以配置一个窗口期,比如10S,请求失败率,请求失败数,在这个窗口期内,失败或超时达到设置的比例或者数量会开启熔断机制,开启熔断机制后,访问会直接走fallback方法,经过另一个窗口期时间,可以配置,会将断路器设置成半闸模式,允许一个请求通过,如果成功,关闭断路器,失败的话,继续打开断路器,并等待下一个窗口期,继续开启半闸模式。如果断路器未打开,也可能造成失败:当请求进来时,判断完断路器的打开关闭后,下一步会进行判断 线程或者信号量是否满,这个可以配置h

2021-07-02 10:03:30 180

原创 大数据中的中位数,第K个大的数,前K个大的数

直接几亿的数据,限制内存,找出topK的数,或者中位数这类题,目前我的思路有以下几种,总结如下:1.桶排序:1️⃣ 数据量特别大,分布在-2^31-2^31-1 可以制造100W 一个区间的桶,1000个就是10亿,遍历数据也可以每1000W 读取一次,数字在哪个区间,对应区间内的值+1,这样可以迅速找到中位数对应的桶,然后在这个桶中再次寻找中位数。2️⃣quickSelect思想,和quickSort大体相同,不同的地方是:quickSelect 一次排序后,丢掉无用的另一段,举例:寻找第K.

2021-06-30 14:49:44 213

原创 约瑟夫环——公式法(递推公式)-详细版

因为看了一大大牛的分析推导,才恍然大悟这个东西。实在是高。这里直接 给个链接过去看吧!哈哈https://blog.csdn.net/u011500062/article/details/72855826

2021-06-17 13:24:13 307

原创 位运算实现加减乘除

一. 位运算的基本操作A = 0011 1100B = 0000 1101操作符 描述 例子 & 如果相对应位都是1,则结果为1,否则为0 (A&B),得到12,即0000 1100 | 如果相对应位都是0,则结果为0,否则为1 (A | B)得到61,即 0011 1101 ^ 如果相对应位值相同,则结果为0,否则为1 (A ^ B)得到49,即 0011 0001 ~ 按位取反运算符翻转操作数的每一位,即0变成1,1

2021-06-15 14:40:23 302

原创 把字符串转换成整数

public class Solution { public int StrToInt(String str) { if(str.length() == 0)return 0; String fuhao = str.substring(0,1); Boolean isPositive = false; if(fuhao.equals("+")){ str = str.substring(1); .

2021-06-15 13:55:59 129

libx264(h264)编码

H264编码,libx264。 ffmpeg等工具需要使用的编码。。。。

2018-06-19

jave1.0.2源码和jar包

jave1.0.2源码和jar包,内部集成了ffmpeg,java语言编写的用于视频转换的jar

2018-06-15

fastClick.js

解决ios和微信端,onclick延迟加载问题,在初始化function中执行 FastClick.attach(document.body);

2018-05-03

3D模型,包含纹理

3D模型,包含纹理,是一个石头~~ 绝对好用。具体使用可以看我的博客,js网页实现预览功能

2018-04-27

telnet-server-0.17-47.el6.x86_64和telnet和xinetd

linux系统使用telnet命令需要安装的三个包,可以百度一下怎么安装。一共三个,然后去修改telnet配置文件disable=no,重启xinted服务即可使用telnet命令

2017-11-02

3D_obj模型

可以用three.js加载的Obj模型,可以用photoshop打开下。

2017-10-12

lifecycle-mapping-metadata.xml

maven项目插件的配置,大家如果在进行clean,package或者运行时出错,有可能是maven插件的问题,可以试试这个配置

2017-08-31

javamail jar包

javamail jar包

2017-07-06

ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar

ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar,android调用webservice的jar包

2017-07-06

tomcat6和tomcat7几个版本

自己整理的6和7的2,3个吧,也不是很多,有其他的需要可以直接去tomcat官网下载。

2017-07-06

tomcat 6.0.35

tomcat 6.0.35,构建web项目的服务器

2017-07-05

java连接sql server 所用到的sqljdbc4.jar

java连接sql server 所用到的sqljdbc4.jar 适用于jre7以上 sqlserver 2005以上版本

2016-06-25

空空如也

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

TA关注的人

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