- 博客(109)
- 资源 (3)
- 收藏
- 关注
原创 拼多多大数据开发工程师SQL实战解析
不久前,裸考国内知名电商平台拼多多的大数据岗位在线笔试,问答题(写SQL)被虐的很惨,完了下来默默学习一波。本文以一个笔试题为线索,穿插了基本的SQL语法,也涉及到高级的自定义变量和实现排名,希望帮助到找实习、找工作的同学。
2019-03-25 09:43:18 3975 11
原创 为什么 1T 的硬盘容量只有 931G?真相在这里!
以一个容量为 1T 的硬盘为例,在 Windows 系统下,容量显示只有 931G,不应该是 1024GB 吗?这到底是为什么呢?是商家在欺骗消费者吗?真相在这里。
2024-09-11 22:41:42 1321
原创 揭秘人人都知道的“存储器金字塔”的起源之谜
这是一张大家熟悉的存储器的层次结构图,形状类似金字塔。金字塔塔尖是 CPU 中的寄存器,容量最小,速度最快,价格也是最贵的;从上往下依次是高速缓存、主存、磁盘,容量依次变大,速度依次变慢,价格也逐渐降低。这个金字塔结构是怎么来的呢?为什么需要有这么一个金字塔的存储结构呢?这个金字塔是性能、成本和容量三者平衡的结果,使得计算机以低成本实现快速运行,并享受较为海量的存储。
2024-09-11 22:40:18 1251
原创 什么?!90%的ThreadLocal都在滥用或错用!
最近在看一个系统代码时,发现系统里面在使用到了 ThreadLocal,乍一看,好像很高级的样子。我再仔细一看,这个场景并不会存在线程安全问题,完全只是在一个方法中传参使用的啊!(震惊)难道是我水平太低,看不懂这个高级用法?经过和架构师请教和确认,这完全就是一个 ThreadLocal 滥用的典型案例啊!甚至,日常的业务系统中,90%以上的 ThreadLocal 都在滥用或错用!快来看看说的是不是你~
2024-08-24 11:38:50 850 1
原创 从入门到放弃:CPU流水线技术全解析
动态流水线”是通过重新排列指令执行顺序来提高 CPU 性能的一种优化技术。传统流水线将指令执行过程划分为固定的阶段,每个阶段处理特定的任务。乱序执行则是打破了指令原本的顺序执行模式。在乱序执行机制下,只要当前指令所依赖的数据准备就绪,CPU 就可以立即执行该指令,而不必等待前面未准备好的指令,提高了流水线的效率。乱序执行并不是真的“乱序”,其实是“有序取指、重排列执行顺序、有序结束”,指令的结束顺序其实是符合软件中的原始顺序的。发射其实是动态流水线专有的术语。动态流水线的电路结构中,新增了“保留站。
2024-08-24 11:35:17 1030
原创 CPU 流水线技术初识
在当今数字化的时代,计算机已经成为我们生活中不可或缺的一部分。而在计算机的核心部位,中央处理器(CPU)则是其重要的组成部分。CPU 的性能决定了计算机的运行速度和处理能力,而流水线技术则是 CPU 性能提升的关键所在。
2024-08-08 00:28:29 909
原创 异构计算:为什么骁龙 8Gen3 采用八核心架构
CPU 是通用处理器,GPU 是图形处理的专用处理器,简单来讲,让通用处理器和专用处理器来协作完成计算任务就是异构计算(Heterogeneous Computing)。稍微复杂一点,异构计算是一种特殊的计算方式,特殊之处在于使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类别包括 CPU、GPU、DSP、ASIC、FPGA 等。目前“CPU+GPU”以及“CPU+FPGA”都是受业界关注的异构计算平台。异构计算能够将整个计算任务分解成为小的计算任务,分别交给擅长的计算单元。
2024-08-08 00:11:55 1341
原创 繁简之争:为什么手机芯片都是 ARM
如果从软件的角度来讲,CPU 就是一个执行各种计算机指令的逻辑机器。计算机指令集是计算机指令的集合,指令集分为CISC和RISC,本文将揭秘为什么手机芯片都是ARM。
2024-08-04 22:37:32 2187 1
原创 揭秘 CPU 是如何执行计算机指令的
之前的文章《揭秘代码是如何变成机器码的》,其中说到,如果从软件的角度来讲,CPU 就是一个执行各种计算机指令(Instruction Code)的逻辑机器。那么这个逻辑机器内部是什么样的呢?
2024-08-02 09:00:21 1352
原创 揭秘代码是如何变成机器码的
之前从硬件的角度来看,CPU 就是一个超大规模集成电路,通过电路实现了至各种各样的处理逻辑。如果从软件的角度来讲,CPU 就是一个执行各种计算机指令(Instruction Code)的逻辑机器。
2024-08-02 08:58:27 1265
原创 使用二进制来理解数据和二进制的计算
和人类的思维习惯不同的是,计算机将把所有的东西数字化之后才会进行处理。那么计算机能理解的数字是什么样的呢?其实,在计算机内部,不管是什么信息都使用二进制来保存和处理的。
2024-07-29 22:49:08 594
原创 从装机到冯·诺依曼架构,揭秘计算机的硬件组成
在当今数字化的时代,计算机已经成为我们生活和工作中不可或缺的一部分。从日常办公到科学计算,从畅玩游戏到无人驾驶,计算机简直无所不能。而这一切的背后,离不开其精密而复杂的硬件组成。今天,我们将一起探索计算机的硬件组成。
2024-07-29 22:41:43 1172
原创 《代码整洁之道》精华速览,助你提升代码质量
最近重读了一遍《代码整洁之道》,这本书既是整洁代码的定义,也是写出整洁代码的指南。我认为既适合新手阅读,快速提升代码质量;也适合老鸟阅读,持续精进。本篇将汇总《代码整洁之道》的必读要点,把书读薄,方便各位快速阅读。
2024-06-24 09:20:07 630
原创 当装饰者模式遇上Read Through缓存,一场技术的浪漫邂逅
在《经验之谈:我为什么选择了这样一个激进的缓存大Key治理方案》一文中,我提到在系统中使用的缓存是旁路缓存模式,有读者朋友问,有没有用到过其他的缓存模式,本文将结合一个我曾经工作中的案例,使用装饰者模式实现Read Through缓存模式,助你轻松掌握设计模式和缓存。
2024-05-20 09:10:47 880
原创 经验之谈:我为什么选择了这样一个激进的缓存大Key治理方案
本文将结合我的一次Redis大Key的治理经验,来浅谈一下缓存大Key的治理方案选择。文中主要包括缓存大Key基础知识、大Key治理方案选择、大Key治理案例等,适合有一定开发经验的开发者阅读,希望对大家有帮助。
2024-05-06 09:00:00 684
原创 从单机到分布式微服务,大文件校验上传的通用解决方案
本文将结合我的工作实战经历,总结和提炼一种从单体架构到分布式微服务都适用的一种文件上传和校验的通用解决方案,形成一个完整的方法论。本文主要解决手段包括多线程、设计模式、分而治之、MapReduce等,虽然文中使用的编程语言为Java,但解决问题和优化思路是互通的,适合有一定开发经验的开发者阅读,希望对大家有帮助
2024-03-18 08:54:21 664
原创 我的2023--即将30岁的程序员,不得不说的那些怨念
作为一个即将年满30岁的程序员,如果用一句话总结我自己的2023年,这句话应该是什么?这个问题还真把我难住了。这一年是百感交集啊。纠结良久,我打算这样来总结我的2023:平凡而满意的生活,累而不得的工作,再次起航的写作生涯,当然还有焦虑而迷茫的未来。篇中更多是我的怨念总结,各位看官别见笑啊!
2024-03-04 07:50:09 518
原创 FMEA:总监和架构师都在用的高可用架构分析方法
记得之前准备春晚项目的时候,团队成员在一起过架构,老板最常问的问题是“这个组件挂了怎么办?有什么影响?”,我当时还在心里默默嘀咕:这咋都这么容易挂呢?其他组件不做高可用的吗?最近看到FMEA,我恍然大悟:哦,这原来不就是 FMEA 吗?原来是我“有眼无珠,识不得真神啊”!
2024-01-29 08:55:43 1255
原创 ConcurrentModificationException日志关键字报警引发的思考
本文将记录和分析日志中的ConcurrentModificationException关键字报警,还有一些我的思考,希望对大家有帮助。
2023-12-11 08:11:37 112
原创 6张图表 + 1个案例 带你入门tcpdump的使用和原理
本文通过6张图表 + 1个实战案例,带你轻松入门tcpdump的使用和原理,希望对大家有用!
2023-06-24 22:20:11 976
原创 我的2022——有点卷、没学习、还羊了
夜幕下的北京,迎来全新的一年,屏幕前的我,又到了该做年终总结的时候了。我的2022——有点卷、没学习、还羊了……
2023-02-10 23:38:40 548
原创 花1分钟配置远程DEBUG,开发效率翻倍,妹子直呼绝绝子
当把一个工程部署到远程服务器后有可能出现意想不到错误,日志打印过多或者过少都影响问题排查的效率,这个时候可以通过远程调试的方式快速定位bug,提升工作效率。本文主要讲解如何使用Idea开发工具进行远程调试,希望对你有帮助。
2023-02-10 15:50:58 726
原创 MySQL数据迁移报错1067 - Invalid default value for ‘xxx‘
本文使用Navicat解决MySQL数据迁移时候的报错1067 - Invalid default value for 'xxx'。
2021-02-20 11:17:01 1404 2
原创 设计模式:如何优雅地使用责任链模式
责任链模式(Chain of Responsibility Pattern)在《Head First设计模式》一书中被称为“剩下的模式”,其实使用也是蛮多的。最近在学习Netty的过程中用到了责任链模式,在此反过头来重温一下责任链模式。本文教你如何优雅地使用责任链模式。
2020-07-25 19:16:04 454
原创 Spring Boot使用AOP的正确姿势
一、为什么需要面向切面编程?面向对象编程(OOP)的好处是显而易见的,缺点也同样明显。当需要为多个不具有继承关系的对象添加一个公共的方法的时候,例如日志记录、性能监控等,如果采用面向对象编程的方法,需要在每个对象里面都添加相同的方法,这样就产生了较大的重复工作量和大量的重复代码,不利于维护。面向切面编程(AOP)是面向对象编程的补充,简单来说就是统一处理某一“切面”的问题的编程思想。如果使用AOP的方式进行日志的记录和处理,所有的日志代码都集中于一处,不需要再每个方法里面都去添加,极大减少了重复代码。二
2020-07-22 22:56:57 4292
原创 分布式任务调度平台XXL-JOB快速搭建教程
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。它的有两个核心模块,一个模块叫做调度中心,另外一个模块叫做执行器,它把任务调度和任务执行分成两个部分。本文从准备工作、搭建“调度中心”、搭建“执行器”三个步骤进行快速搭建。
2020-07-12 21:26:42 743
原创 【亲测管用】解决IDEA控制台Tomcat Localhost Log和Catalina Log乱码
本文通过修改配置文件解决IDEA控制台Tomcat Localhost Log和Catalina Log乱码问题。
2020-07-06 19:52:40 790
原创 使用Host和Nginx把自定义域名映射到本地
在真实的线上环境中,一个网站需要域名和公网IP才可以访问。在本地代码调试的时候,可以利用系统提供的hosts文件来设置一个虚拟的域名,并利用Nginx将域名解析到指定的IP地址和端口。
2020-07-05 21:05:52 2571
原创 我的2019——菜鸟互联网找实习和工作记录
2019在干什么,在实习和找工作的旋律中飞快度过。说起这段历程,肯定首先是感谢。感谢在此过程中遇到的每家公司和每一个人,感谢给我机会的每家公司,有你们的认可,我觉得我还是有价值的;也要感谢拒绝我的公司,谢谢你们曾经看轻我,是你们的拒绝和不屑,鞭策我继续努力。第一份实习过完年回来学校,三月份开始准备找实习。师兄建议先找小公司练手,所以就投了一些小公司,但是吧,没有收到面试邀请,可能是自己菜,可能...
2019-12-31 20:50:30 481
原创 Python网络爬虫——Appuim+夜神模拟器爬取得到APP课程数据
随着生产力和经济社会的发展,现在已经进入内容付费的时代。得到APP便是其中的代表作,本文用于爬取得到APP的课程数据,包括课程名称、作者、单价、学习人数等数据,可作为一个爬取APP数据的demo进行分享。
2019-10-27 16:58:08 2070
原创 用代码说话:如何在Java中实现线程
并发编程是Java语言的重要特性之一,“如何在Java中实现线程”是学习并发编程的入门知识,也是Java工程师面试必备的基础知识。本文从线程说起,然后用代码说明如何在Java中实现线程。
2019-08-28 22:12:47 388
原创 用代码说话:synchronized关键字和多线程访问同步方法的7种情况
synchronized关键字在多线程并发编程中一直是元老级角色的存在,是学习并发编程中必须面对的坎,也是走向Java高级开发的必经之路。一、synchronized性质synchronized是Java提供的内置锁机制,有如下两种特性:互斥性:即在同一时间最多只有一个线程能持有这种锁。当线程1尝试去获取一个由线程2持有的锁时,线程1必须等待或者阻塞,知道线程2释放这个锁。如果线程2永远...
2019-08-24 16:59:48 326
原创 RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群
本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群。受限于自身条件,本文使用VMware虚拟机的克隆功能克隆了两台服务器进行操作,仅作为一个demo,开发中可根据实际情况进行调整。
2019-08-03 19:52:07 640
原创 RabbitMQ(三):RabbitMQ与Spring Boot简单整合
RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitMQ进行简单整合,实现生产和消费消息。
2019-08-03 19:50:23 379
原创 RabbitMQ(二):RabbitMQ高级特性
RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要了解一下相关知识,《RabbitMQ(一):RabbitMQ快速入门》已经入门RabbitMQ,本文介绍RabbitMQ的高级特性。
2019-08-03 19:48:48 174
原创 RabbitMQ(一):RabbitMQ快速入门
RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章,主要内容包括RabbitMQ是什么、RabbitMQ核心概念、常用交换器类型、用Docker安装RabbitMQ等。
2019-08-03 19:46:46 412
原创 CentOS 7安装和配置HAProxy
本文记录在CentOS 7环境下使用源码安装的方式安装HAProxy。HAProxy简介HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很...
2019-07-19 20:34:52 4903 4
原创 使用Docker部署Spring Boot项目
本文使用Docker部署Spring Boot项目。部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven;接着搭建一个Spring Boot项目,使其支持Docker部署;最后进行部署和测试。
2019-06-24 19:33:01 7854 1
原创 一文快速入门Docker
Docker提供一种安全、可重复的环境中自动部署软件的方式,拉开了基于与计算平台发展方式的变革序幕。如今Docker在互联网公司使用已经非常普遍。本文用十分钟时间,带你快速入门Docker。
2019-06-22 09:17:21 339
EncodingDetect.java
2019-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人