- 博客(90)
- 收藏
- 关注
原创 ClickHouse中的物化视图
物化视图(Materialized View)是一种预先计算并缓存结果的视图,存储在磁盘上自动更新,空间换时间的思路。物化视图是一种优化技术,本质上就是为了加速查询操作,降低系统负载,提高查询性能。
2023-11-26 20:35:17
2197
1
原创 java堆文件排查
在之前的开发的一个项目中,因为程序的一个bug,导致一些引用的对象一直没有回收,从而导致堆内存一直在增大,老年代一直在增大,老年代进行堆积,后来的排查思路是通过dump堆的文件,然后对文件进行分析,判断当前未回收的大对象。然后在程序中定位到代码,从而进行分析,我写这个博客是为了在这里总结一下,分析堆文件。首先在堆内存偏高的实例上进行dump分析,命令为这里的pid是当前进程id,首先通过jps获取当前第一种是直接在Idea打开profiler,然后将文件放到这里直接在fastthread.io进行分析,
2023-11-24 14:04:25
638
原创 java中锁的使用-实战
在实际的业务中,为了保证线程安全,会进行对一些逻辑进行加锁,保证当前只有一个线程在操作。在代码中,我们经常使用两种方式进行加锁,来保证线程安全。一种是synchronized关键字,另一种是ReentrantLock加锁。写这一份的博客,就是为了记录下锁的基本使用,也算是基础积累,方便在之后的工作中,能够安全的使用到。
2023-11-23 23:54:45
636
原创 Clickhouse初认识
1)本质上就是一款数据库管理系统,能提供海量数据的存储和检索2)基于列存储,数据是按照列进行存储的(数据格式一样,方便进行压缩)3)具备功能(多核并发处理、分布式处理、兼容sql)兼容mysql的sql语法,有sql经验,便于快速上手熟悉4)基于OLAP,和传统的事物数据库不同,倾向于大数据量的分析。
2023-11-18 22:23:38
780
原创 制作docker镜像文件
Docker作为一个开源的应用容器引擎,制作自己的docker镜像文件是使用docker的第一步,这样我们能够更好地管理应用程序。
2023-11-01 13:57:19
240
原创 Spring中的接口使用
在我们的项目中,经常会使用一些注解,注解带给我们代码简洁,本质是用于在代码中添加元数据信息,从而实现更加灵活、高效和可维护的代码结构。
2023-08-12 16:58:59
473
原创 ConcurrentHashmap1.7和1.8的差别
分段锁(Segment-Based Locking)是一种并发编程中用于提高性能的策略,特别适用于需要高并发访问的数据结构,如哈希表。它的基本思想是将一个大的数据结构分成多个小的部分,每个部分都有自己的锁,从而允许多个线程同时访问不同的部分,减少了竞争和阻塞。在分段锁的实现中,每个段内部维护一部分数据,并有一个对应的锁来保护这部分数据的并发访问。这样,不同的线程可以同时访问不同的段,而不会相互阻塞。分段锁可以显著提高并发性能,因为只有在同一个段内的数据访问才会发生竞争。
2023-08-06 11:18:08
348
原创 Dubbo中使用netty
netty在Dubbo中的使用,主要集中在网络通信上,高性能、轻量级的开源java的RPC框架,提供三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。1、魔数标识符(四个字节),用于区分不同的协议。2、消息标志(一个字节),用于表示消息类型,如调用请求、调用结果、异常等。3、状态标志(一个字节),用于表示消息状态,如成功、失败等。4、消息ID(8个字节),用于标识消息的唯一性,在异步调用场景下用于匹配请求和响应。5、消息长度(四个字节),用于表示消息体的长度。6、
2023-08-05 16:34:56
518
原创 synchronized的底层实现原理
synchronized 是 Java 中用于实现线程同步的关键字。它的底层原理涉及到对象头、Monitor(监视器)和内存屏障等概念。
2023-08-05 16:15:29
344
原创 计算机中的AQS
Abstract Queue Service (AQS)就是AbstractQueuedSynchronizer抽象类,AQS其实就是JUC包下的一个基类,JUC下的很多内容都是基于AQS实现了部分功能,比如ReentrantLock、ThreadPoolExecutor、阻塞队列、CountDownLatch、Semaphore、CyclicBarrier等都是基于AQS实现的。首先AQS中提供了一个由volatile修饰,并且采用CAS方式修改的int类型的state变量。
2023-07-29 18:13:44
206
原创 GRPC的学习(高性能远程过程调用框架)
在一次和公司的人工智能部门的对接中,涉及到了grpc接口,实现的是实时语音流转文字。把自己对grpc的理解归纳出博客,并且分享出来。我会围绕几个点进行展开,gprc和rpc的差别,以及分析下优缺点,最后通过一个实例。
2023-07-08 10:54:49
339
原创 聊一聊mysql中的间隙锁
间隙锁在mysql中经常使用到,今天就聊一聊mysql的间隙锁的内容。间隙锁是为了解决幻读的问题,并且在当前读的场景下解决的。当前读包含:update,delete,insert,select…lock in share mode,select…for update。
2023-07-06 23:07:02
803
原创 netty代码实践的心得
实践中学习netty,主要从源码的作用,ChannelHandlerContext,WebSocketClient,ChannelInitializer,Channel,SimpleChannelInboundHandler,BinaryWebSocketFrame,MessageToMessageDecoder,StreamObserver。
2023-07-05 22:07:00
218
原创 netty中的编码方式protobuf
Protobuf全称为Protocol Buffers,是Google公司开发的一种数据序列化格式。它相对于传统的XML和JSON等数据交换格式有着更高的效率和更小的数据体积,同时支持多种编程语言的数据交换。
2023-06-28 22:11:53
193
原创 浅聊一下java中的八股文
工作了也快三年了,无论是之前参加校招面试,还是参加社招面试,其实都离不开围绕以后端为中心得一些技术考察点,现在业界内都称为八股文,我个人对八股文的认识,更喜欢结合工作中遇到的问题来讲,也就是能把八股文用到实际的工作中来进行深入。
2023-06-22 11:30:02
346
原创 聊一聊mysql的MVCC
MVCC就是因为大佬们,不满意让数据库采用悲观锁性能不佳的形式去解决读-写冲突问题,而提出的解决方案,就在数据库中加上MVCC。
2023-06-11 15:51:32
1097
1
原创 高性能网络应用框架
Netty 是一个款优秀的网络编程框架,为了实现高性能的目标,Netty 做了很多优化,例如优化了ByteBuffer支持零拷贝等等,和并发编程相关的就是它的线程模型了。Netty 的线程模型设计得很精巧,每个网络连接都关联到了一个线程上,这样做的好处是:对于一个网络连接,读写操作都是单线程执行的,从而避免了并发程序的各种问题。
2023-06-07 23:41:07
522
2
原创 双指针题目学习
在算法比赛中,双指针的题目涉及的特别多,无论是大学时候的acm比赛还是蓝桥杯比赛中,都有许多涉及双指针的做题思路,在之后的工作面试中,手写代码环节中,双指针的思想也是经常能使用到的。
2023-05-25 09:58:27
746
原创 netty学习第一课
Netty是一个基于Java NIO(非阻塞 I/O)框架的网络编程框架。它提供了一系列的高级网络编程API,使得开发者可以非常容易地实现高性能、高可靠性的网络应用。Netty具有非常好的可扩展性和灵活性,能够很好地支持多种协议和数据格式。它被广泛应用于互联网领域的服务器开发,如Web服务器、游戏服务器、聊天服务器等。
2023-05-23 21:22:43
581
原创 长链接-WebSocket
马上工作了三年,回想起这三年的工作,和别的部门进行数据交互,一种是通过rpc接口,另一种是通过http接口,获取到自己想要的数据,或者给出自己的数据。在电商的业务场景中,通过设置调用的超时时间来满足一些调用比较慢的服务,所涉及的都是单相工通信。在IM的服务中,有多种业务场景需要客户端和服务端建立长链接,比如说语音转文字,客户端一直在输入语音,客户端和服务端保持通信,一直进行语音转化为文字,这个过程可能持续的时间会很长,此时现有的http协议已经无法满足需求,需要Websocket长链接协议进行解决。
2023-05-21 12:18:32
1102
原创 实际项目中的序列化实现
业界内的序列化方式-内存中的数据对象只有转换为二进制流的形式才能进行数据持久化和网络传输。将数据对象转化成二进制流的过程称为对象的序列化。反之,将二进制流恢复为数据对象的过程称为反序列化。
2023-05-10 22:50:11
590
原创 java工程师面试题第四期
拉的模式:消费者不断轮询的方式去检查数据是否发生了变化,如果有变化的话就把数据给拉回来,消费者掌控消息的数量和速度,可以避免消息在消费者的一端发生堆积,缺点是;推的模式:消费者和消息队列之间建立长连接,或者注册一个回调,当服务端数据发生变化的时候,通过建立好的长连接将数据推送到客户端,实时性高,大量堆积消费者,压力太大有可能会造成服务压力太大。事务时刻保持一致,节点数据一致,所有的事务参与者要么全部成功,要不全部失败。最大的区别,前者是动态参数,后者的占位符,大文件拆分成小文件,分治,堆的思想来解决。
2023-05-10 17:35:30
696
原创 业界内分布式锁
在分布式系统中,面对分布式微服务日益流行的场景,分布式锁一直是分布式系统老生常谈的内容。分布式锁可以防止用户重复点击,对于电商场景中,分布式锁可以防止用户重复下单,给用户带来更好的体验。
2023-04-24 22:03:40
419
原创 谈谈分布式理论CAP-以及常用的工作
现在大数据时代,无论是电商系统,还是企业系统,办公系统,随着用户的数据增多,流量不断增大,逐渐淘汰了单机系统,追求分布式,用分布式的思想来解决这种处境。分布式环境最重要的就是分布式理论,也就说经常谈的CAP理论。一致性(Consistency),可用性(Availability),分区容错性(Partition tolerance)
2023-04-22 13:01:44
220
原创 伙伴圈推荐加权算法
关注新闻热点:定期浏览新闻网站或订阅一些新闻播报,关注国内外的时事热点,及时了解一些突发事件和社会热点话题。关注社交媒体热点:关注微博、知乎、贴吧等社交媒体平台,读取热门话题讨论,发掘用户分享的优质内容。关注行业热点:如果您的朋友圈针对某个具体行业,可以关注该行业最新的发展动态、相关活动、专业的论坛和会议等。分享自己的生活:在分享生活的同时,可以多关注一些热门话题,结合自己的生活经验和体会,通过自己的方式给大家带来一些新鲜的视角和思考。
2023-04-20 11:39:35
263
原创 Mysql中的三种log原理
在涉及到存储数据的时候,经常用到关系性数据库,mysql是老生之谈了,今天博客的主题就是谈谈mysql的三种log,在日常工作中经常使用到的日志。
2023-04-20 00:14:09
586
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人