暂无个人介绍
很多小伙伴跟我说,学习网络太难了,怎么办?其实很多技术都是相通的,只要你理解了技术的本质,你自己都可以实现它。这不,冰河就趁着周末,只用了几个Java类就简单的实现了Http协议,爽!!
大家好,我是冰河~~ 这次我把工作中总结的经常使用的正则表达式共享出来了,正是掌握了这些正则表达式,冰河平均每天比别人少写200行代码,极大的提高了研发效率,建议小伙伴们收藏,平时尝试着使用到自己的项目中!!
在【精通高并发系列】的《实践出真知:全网最强秒杀系统架构解密!!》一文中,冰河详细的阐述了高并发秒杀系统的架构设计,也简单提到了如何扣减商品的库存。
早之前,不少小伙伴让我整理下Dockerfile相关的基础知识,由于平时工作很忙,业余时间也被安排的满满的。所以,这些事情搁置了很久。所以,这次,趁着五一假期,不鸽了,安排。。。
本来想基于MySQL 8.0研究Seata源码,结果我不小心把MySQL 8.0的源码安装包删除了,我这的网又很慢,下载MySQL 8.0源码安装包下载了半天,没下载下来。只好安装我电脑上存在的MySQL 5.6来研究Seata源码了。安装完MySQL 5.6竟然提示我数据表不存在!! 今天,就给小伙伴们分享下我是如何解决这个问题的。
最近,很多小伙伴出去面试,感觉自己面的不是很理想,回来后,不少小伙伴把面试题做了记录发给我,让我给大家解析下,然后发出来。当我看到这些面试题时,快速在脑海中构建起了整个知识体系,从基础到框架、从分布式到微服务,从数据结构到算法,从虚拟化到云原生,从大数据到云计算,从实战项目到性能调优。其实,这些面试本质上不难,很多都是对于基础知识的考察。
最近有小伙伴出去面试,回来跟我说:冰河,我去XXX公司面试,面试官竟然问了我一个关于Spring中Scheduled和Async调度的问题,我竟然没回答上来,你能不能写一篇关于这个问题的文章呢?我:可以,安排上!于是便有了这篇文章。
很多小伙伴问我进大厂到底需要怎样的技术能力,经过几天的思考和总结,终于梳理出一份相对比较完整的技能清单,小伙伴们可以对照清单提前准备相关的技能,在平时的工作中注意积累和总结。只要在平时的工作中总结到位,对技术知其然,知其所以然,进大厂,是水到渠成的事情。接下来,我就简单的列举下,在我个人看来,进大厂需要的一些技能。当然,这次主要说的是Java技术栈。后面也会分享一些其他的技术栈(C++、运维、云原生已安排上了,后面发)。
在Java的多线程编程中,除了Thread类和Runnable接口外,不得不说的就是Callable接口Future接口了。使用继承Thread类或者实现Runnable接口的线程,无法返回最终的执行结果数据,只能等待线程执行完成。此时,如果想要获取线程执行后的返回结果,那么,Callable和Future就派上用场了。
从今天开始,我们正式更新【精通Zookeeepr系列】专题内容,首先我们对Zookeeper的基础内容做下简单的回顾和总结。本文的总体内容如下。
冰河之前维护着上千台服务器组成的服务器集群,如果每次需要在服务器上执行命令的时候,都要手动登录每台服务器进行操作的话,那也太麻烦了。你想想,如果在上千台服务器的集群中,每台服务器中只需要简单的执行一个相同的命令,那别说执行命令了,就是让你依次手动登录上千台服务器,那也够你受的了。估计依次登录上千台服务器,给你三天时间你可能都登不完,那怎么办呢?有没有什么好的方法来解决这个问题呢?
最近,有很多小伙伴让我更新一些Zookeeper的文章,正好也趁着清明假期把之前自己工作过程当中总结的Zookeeper知识点梳理了一番,打算写一个【精通Zookeeper系列】,希望能够帮助小伙伴们更好的理解和掌握Zookeeper。
在Java语言出现之前,很多系统都是使用C和C++开发的。Java出现之后,由于其面向对象的思想更加符合人们的思维习惯,Java也不用像C和C++那样需要程序员手动管理内存的分配和回收。说白了,就是简单好用。由于Java的诸多优点,使其一跃霸榜编程语言前排很多年。在Java语言出现之前,很多系统都是使用C和C++开发的。Java出现之后,由于其面向对象的思想更加符合人们的思维习惯,Java也不用像C和C++那样需要程序员手动管理内存的分配和回收。说白了,就是简单好用。由于Java的诸多优点,使其一跃霸榜编程语言前排很多年。
最近,发现很多小伙伴在修改了SpringBoot的配置文件后,都要重新编译整个项目,极大的浪费了开发时间。我身边就有很多小伙伴一直是这样做的。那么,有没有什么方式能够修改配置文件后,不再编译整个项目呢?且听冰河细细道来~~ SpringBoot配置文件
很多小伙伴最近都在问我,在系统中引入缓存后,当向数据库中写入数据时,是先写数据库还是先写缓存呢?先写数据库和先写缓存有什么区别吗?今天,我们就一起来聊聊这个话题。
当今互联网领域,Nginx是使用最多的代理服务器之一,很多大厂在自己的业务系统中都是用了Nginx作为代理服务器。所以,我们有必要了解下Nginx对于Http、Https、WS、WSS的各项配置。来来来,跟冰河一些学习Nginx,一起进阶,一起头秃~~
估计运维年前没有祭拜服务器,Nginx的问题修复了,Kafka又不行了。今天,本来想再睡会,结果,电话又响了。还是运营,“喂,冰河,到公司了吗?赶紧看看服务器吧,又出问题了“。“在路上了,运维那哥们儿还没上班吗”?“还在休假。。。”, 我:“。。。”。哎,这哥们儿是跑路了吗?先不管他,问题还是要解决。
最近,有位读者私信我说,他们公司的项目中配置的数据库密码没有加密,编译打包后的项目被人反编译了,从项目中成功获取到数据库的账号和密码,进一步登录数据库获取了相关的数据,并对数据库进行了破坏。虽然这次事故影响的范围不大,但是这足以说明很多公司对于项目的安全性问题重视程度不够。
熟练的掌握正则表达式,能够帮助程序员以最快的速度写出最优雅的代码。冰河在多年的编程工作中,对使用过的正则表达式进行了梳理和总结,这些正则表达式能够帮助你节省很多的编码时间,往往一个简单的正则表达式就能够省略大量的if...else...代码。这次,冰河向小伙伴们公开了自己平时经常使用的正则表达式,希望能够为小伙伴们带来实质性的帮助。
一个执行力极差的团队能把一个公司活活的拖死,在这种团队中工作是一种怎么的体验呢?相信很多小伙伴会对这种团队的工作氛围感兴趣。正好冰河在假期与一位经历过这种团队的朋友聊天,聊到了这个话题,今天就给小伙伴们总结下在一个执行力差的团队工作是一种怎样的体验!
对于Java中的String类占用多大的内存空间这个问题,是最近面试中问的比较多的一个问题。很多小伙伴的回答的都不是很正确,有说不占空间的,有说1个字节的,有说2个字节的,有说3个字节的,有说不知道的,更让人哭笑不得的是竟然还有人说是2的31次方。那如果真是这样的话,服务器的内存空间还放不下一个字符串呀!作为程序员的我们,可不能闹这种笑话呀。今天,我们就一起来聊聊Java中的String到底占用多大的内存空间!
很多小伙伴认为程序员就是写写代码,不需要了解计算机底层的知识和原理。其实,这种观点是错误的。如果你想突破程序员的职业发展瓶颈,计算机硬件、操作系统原理、编译原理等是一定要掌握的知识。而【冰河技术】微信公众号的【程序员进阶系列】专题就是要系统的向大家分享程序员进阶需要掌握的各项知识技能。今天,我们来聊聊一个让程序员很头疼的话题:计算机中的主存是如何进行编址和计算的?以及串并联系统的可靠度如何计算?
撸代码只是程序员的一项最基本的技能,除此之外,还有很多知识需要程序员掌握。【程序员进阶系列】专题,旨在分享程序员想要进一步提升自我,突破发展瓶颈的一系列技术。今天,我
最近,有个想法,在服务器中配置双网卡双IP双网关,双网卡配置一个上外网,一个上内网。不多说了,直接进入今天的主题。
在互联网时代,Http协议被广泛使用。相信小伙伴们对Http协议并不陌生,没错,你写的接口大部分都是Http接口,前端和后端的数据交互,大部分也是通过Http协议来交互的。那你有没有想过Http协议中,除了我们经常使用消息体来传输数据外,它的消息头中包含哪些内容呢?今天,冰河就带你一探究竟。
在前几年面试Java高级程序员的时候,只要是会一点JVM的基础知识,基本就都能够面试通过了。最近几年,对Java工程师的要求越来越严格,对于中级Java工程师来说,也需要掌握JVM相关的知识了。这不,一名读者出去面试Java岗位,就被问及了JVM相关的类的加载、链接和初始化的问题。结果凉凉了,今天,我们就一起来详细探讨下这个问题。
又到了收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer。还是那句话:进大厂临时抱佛脚是肯定不行的,一定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历真正转化为自己的工作经验。
在【程序员进阶系列】专题的《图解计算机中数据的表示形式》一文中,我们详细的说明了在计算机中数据的表示形式。今天,我们继续来说计算机中的数值范围和浮点运算相关的知识。走起,继续,我们一起进阶,一起牛逼。
应很多小伙伴的要求,我开了一个新的专题【程序员进阶系列】,在这个专题中,我会跟大家分享有关计算机和软件的一系列 底层 知识,让小伙伴们更好的理解计算机的底层架构知识,能够更好的提高自身的编程能力和软件设计能力。本篇就作为整个专题的开篇,希望能够为小伙伴们带来实质性的帮助。
在实际工作中,有一种非常普遍的并发场景:那就是读多写少的场景。在这种场景下,为了优化程序的性能,我们经常使用缓存来提高应用的访问性能。因为缓存非常适合使用在读多写少的场景中。而在并发场景中,Java SDK中提供了ReadWriteLock来满足读多写少的场景。本文我们就来说说使用ReadWriteLock如何实现一个通用的缓存中心。
之前,很多小伙伴私信我:如何才能快速的掌握Dubbo的核心原理和源码。所以,我写了一篇《我是如何在短期内快速掌握Dubbo的原理和源码的(纯干货)?》。对于Dubbo的源码解析系列文章,我也在思考如何让源码解析的文章变得更加简单易懂,所以,我调整了写Dubbo源码解析文章的策略,力求让小伙伴们能够以更简单、易懂的方式彻底掌握Dubbo源码。今天,我们先说说Dubbo中的统一契
最近收到监控系统的报警,一看是服务器的磁盘的存储超出了阈值。此时第一时间想到的就是要给服务器扩容了,说到服务器扩容,其实没有小伙伴们想的那么复杂。简单点来说,服务器扩容可以分为两种:一种是增加服务器的数量;另一种是增加单台服务器的存储。今天,我们就来说说如何增加单台服务器的存储容量。
MySQL是互联网行业使用的最多的关系型数据库之一,而且MySQL又是开源的,对于MySQL的深入研究,能够加深我们对于数据库原理的理解。自从开源了mykit-data之后,不少小伙伴试用后,反馈mykit-data无法正确的解析MySQL8的binlog。于是我测试了下,mykit-data在解析MySQL5.x的binlog时,没有啥问题,能够正确的解析出结果数据。然而,在解析MySQL8.x的binlog时,总是与binlog日志位数相差12位而导致解析失败。
很多小伙伴去大厂面试,几乎都会遇到一些开放式的题目,这些开放式的题目没有固定的答案,但是它能够实实在在的体现面试者较为真实的系统设计能力和技术功底。如果你回答的比较完美,那么,通过这种开放式题目,就能够让你从众多的面试者中脱颖而出。今天,我们就一起来聊聊,去大厂面试时,一个较为常见的开放式题目:如果让你设计一个高并发的消息中间件,你会怎么做?
最近,有小伙伴在群里提问:Linux系统怎么设置tcp_nodelay参数?也有小伙伴说问我。那今天,我们就来根据这个问题来聊聊在高并发场景下如何优化服务器的性能这个话题。
上周,在【Dubbo系列专题】中更新了两篇文章《冰河开始对Dubbo下手了!》和《俯瞰Dubbo全局,阅读源码前必须掌握这些!!》,收到了很多小伙伴的微信私聊消息,大部分都是在询问如何快速的掌握Dubbo的原理和源码。针对这个问题,我也在思考如何以更简单、易懂的方式让小伙伴们更好的掌握Dubbo的原理和源码。今天,我就为小伙伴们分享下我是如何快速掌握Dubbo的原理和源码的。
2020年12月31日晚23点30分,我发了2020年的最后一个朋友圈:假期吃透Seata源码,有组队的吗?
冰河曾经经历过一个完整电商系统用户从零到上亿的研发过程,在业务的不断发展与变化过程中,演化出电商系统和基于大数据的商品精准实时推荐平台,关于MySQL数据库的架构演进,小伙伴们可以参考《从零到千万用户,我是如何一步步优化MySQL数据库的?》,关于系统的架构演进,小伙伴们可以参考《系统从初期到支撑亿级流量,都经历了哪些架构上的演变?》。在系统的研发过程中,随着数据量的不断增长,单库单表已无法满足数据的存储需求,此时,我们就需要对数据库进行分库分表操作。那在互联网大厂,分库分表通常有哪些思路和技巧呢?今天,我就将这些思路和技巧分享给大家。
很多高并发系统中都会使用到消息队列中间件,那么,问题来了,为什么在高并发系统中都会使用到消息队列中间件呢?立志成为资深架构师的你思考过这个问题吗?
在实际工作中,很多小伙伴在开发定时任务时,会采取定时扫描数据表的方式实现。然而,这种方式存在着重大的缺陷:如果数据量大的话,频繁的扫描数据表会对数据库造成巨大的压力;难以支撑大规模的分布式定时任务;难以支持精准的定时任务;大量浪费CPU的资源;扫描的数据大部分是不需要执行的任务。那么,既然定时扫描数据表存在这么多的弊端,那么,有没有一种方式来解决这些问题呢?今天,冰河就带着他的开源项目mykit-delay来了!!开源地址:https://github.com/sunshinelyz/mykit-delay 和 https://gitee.com/binghe001/mykit-delay
当我们在调用Java对象的wait()方法或者线程的sleep()方法时,需要捕获并处理InterruptedException异常。如果我们对InterruptedException异常处理不当,则会发生我们意想不到的后果!今天,我们就以一个案例的形式,来为大家详细介绍下为何中断执行的线程不起作用。
在JDK中,提供了这样一种功能:它能够将复杂的逻辑拆分成一个个简单的逻辑来并行执行,待每个并行执行的逻辑执行完成后,再将各个结果进行汇总,得出最终的结果数据。有点像Hadoop中的MapReduce。
随着互联网的发展,互联网企业的业务也在不断的飞速发展,进而导致系统的架构也在不断的发生着变化。总体来说,系统的架构大致经历了:单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构的演变。当然,很多互联网企业的系统架构已经向Service Mesh(服务化网格)演变。今天,我们就一起来聊聊关于系统架构的演变这个话题。
随着系统业务的不断发展,MySQL数据库中的数据量也在不断攀升,当数据量达到一定量级时,MySQL的主从复制、读写分离、分库分表就成为了一种必然的架构趋势。这不,就有小伙伴问我能不能讲讲Mycat如何实现MySQL的读写分离。于是就安排上了这篇文章。目前,我也在业余时间开发和维护Mycat源码,小伙伴们在学习和使用Mycat时,遇到问题也可以加我微信【sun_shine_lyz】共同交流哦!
mykit-serial框架的设计参考了李艳鹏大佬开源的vesta框架,并彻底重构了mykit-serial框架,借鉴了雪花算法(SnowFlake)的思想,并在此基础上进行了全面升级和优化。支持嵌入式(Jar包)、RPC(Dubbo,motan、sofa、SpringCloud、SpringCloud Alibaba等主流的RPC框架)、Restful API(支持SpringBoot和Netty),可支持最大峰值型和最小粒度型两种模式。
最近,不少小伙伴在催更【Spring注解驱动开发】专题,好吧,【Spring注解驱动开发】专题确实有很长时间没更新了。那我们从今天开始更新【Spring注解驱动开发】专题,同样的,我们还是以源码解析为主。
最近,有读者跟我说,他的Docker和K8S环境是搭建在Windows系统上的。而Windows系统会将Docker镜像文件默认下载到C盘,时间一长,Docker镜像占用的磁盘存储空间越来越多,导致C盘的存储空间不足。听小伙伴这么说,第一时间,我想到的是将Docker默认的镜像存储目录迁移到其他盘符下,这样就能解决C盘空间不足的问题。说干就干,于是乎,便有了这篇文章的分享!!
最近在服务器上搭建了一套FastDFS集群,节点为6个。统一对外提供文件的上传和访问服务。在实际开发过程中,前端童鞋需要访问其他服务器来转发对FastDFS服务的访问,此时,前端访问FastDFS服务时多加了一个前缀,导致FastDFS服务返回400状态码。那么,我们该如何解决呢?
研究K8S有一段时间了,最开始学习K8S时,根据网上的教程安装K8S环境总是报错。所以,我就改变了学习策略,先不搞环境搭建了。先通过官网学习了K8S的整体架构,底层原理,又硬啃了一遍K8S源码。别问我为哈这样学,只是我觉得对我个人来说,这样学能让我更好的理解整套云原生体系。这不,这次,我总结了如何一次性成功安装K8S集群的方法。我们今天先来说说如何基于一主两从模式搭建K8S集群。后面,我们再上如何完全无坑搭建K8S高可用集群的方案。
很多小伙伴对于MySQL主从复制底层的原理不是很了解,那今天,我们就结合MySQL主从复制的实战案例来说说MySQL主从复制的底层原理。如果文章对你有点帮助,请点个赞,给个在看和转发。也可以在文末留言或者加我微信【sun_shine_lyz】交流技术,一起学习,一起进步!
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02
发表了文章
2025-03-02