- 博客(46)
- 收藏
- 关注
原创 深挖:Redis 背后的数据结构......
我还是很讨厌学习,就像邻居吃了花椒,麻了隔壁。-- 开篇鸡汤用娱乐的方式说编程hello 大家好我是浩说前几天项目组开会聊到了"数据结构"这块的内容于是从同事口中听到了这样的抱怨:"学数据结构和算法有啥用啊,面试还总问,我天天写业务代码根本用不到!"像我这种 杠精 本精的反驳体质听完这话怎么可能心如止水于是我回家之后挑灯夜读、博览群书诸如:《数据结构从入门到放弃》、《数据结构放弃实战》....终于!被我发现了"数据结构"在日常开发中的应用:Redis那么下面就让我们来看看:Redis 背后的数据结构Redi
2022-02-28 19:23:36
1604
原创 Java集合 高频面试题(一)
说说 ListSetQueueMap 四者的区别?List(对付顺序的好帮手):存储的元素是有序的、可重复的。Set(注重独一无二的性质):存储的元素是无序的、不可重复的。Queue(实现排队功能的叫号机):按特定的排队规则来确定先后顺序,存储的元素是有序的、可重复的。Map(用 key 来搜索的专家):使用键值对(key-value)存储,类似于数学上的函数 y=f(x),"x"代表 key,"y"代表 value,key 是无序的、不可重复的,value 是无序的、可重复的,每个键最多映射到一个值如何选
2022-02-24 19:26:11
660
原创 短视频app如何“投你所好“?
程序员视角科普生活知识hello 大家好我是浩说自从抖音火了短视频的时代就来了我们渐渐也养成了一种习惯不管什么时候,觉得无聊了就打开各种短视频app划~划~划一天不划都感觉哪里不对劲而且你们有没有感觉,短视频app给你推送的都是你爱看的它好像比你对象都懂你,这扯不扯了于是你是越划越爱看,越爱看就越划结果一看时间后半夜了,又是晚睡的一天今天咱们就来研究研究:短视频app如何"投你所好"?对于app来说这个问题有两种解法:1、寻找和你爱好相似的用户并将相似用户喜欢的视频推给你2、根据你曾经喜欢过的视频寻找相似的
2022-02-19 10:31:48
1649
原创 导航软件如何规划“最短路线“?
程序员视角科普生活知识hello 大家好我是浩说关于"最短路线"这个问题我们生活中有一个典型应用:使用导航软件帮我们规划从 出发地 到 目的地 的最短路线今天我们就来研究一下:导航软件如何计算"最短路线"抽象首先我们需要将导航软件中的地图抽象成一种数据结构:图关于 图 的介绍,我用一张图片做简单说明图 的更多详细内容兄弟们可以过一下我之前的文章于是我们可以这样对应:顶点 > 地图上的路口边 > 两个路口间的道路入度和出度 > 道路的方向边的权重 > 两个路口间的距离按照上面的思路我们
2022-02-14 21:16:34
2169
原创 app里的“搜索提示“是如何实现的?
用程序员的角度科普生活知识hello 兄弟们我是浩说今天研究个什么事儿呢?咱就是说:我们在浏览器或者app里搜索的时候为什么我只输入了一两个字,下面就已经给我罗列出来我想搜的具体内容了这是怎么做到的呢?"搜索"就是"问问题"其实"搜索"对应现实场景就是"问问题"这个过程就像是:我问你:"炸鸡哪家比较好吃?"你的大脑可能是这样的思考过程:首先从这句话中提取出两个关键词:炸鸡、好吃接着将你去过的炸鸡店在脑子里列出来:然后根据"好吃"这个关键词将炸鸡店列表重新排序排序:这样你就得到了答案,于是将排序前几名的店跟我
2022-01-26 20:20:16
1405
原创 如何存储社交软件中的「好友、粉丝关系」
用娱乐的方式说编程hello 兄弟们我是浩说现在的社交软件是层出不穷什么微信、微博、抖音....其中的社交达人也成了我们的茶余饭后:"你关注了谁""她有多少粉丝""这个网红出事了""那个人突然爆火"就像最近的”张同学“今天咱们就来研究一下:如何存储社交软件中的「好友、粉丝关系」01好友我们将每个人用蓝色的圆点表示,而其中的一号就是你,如果有人和你是"好友"关系,那么就用一条线将对方和你连接起来,就像这样:这就表示你与2、4、6是好友关系。接着我们来丰富一下别人的"好友关系",同样用连线表示:这样我们就将每个
2022-01-18 18:24:15
1825
1
原创 浅析:java的“排序“函数使用了哪些“算法“
hello 兄弟们我是浩说前几天在做数据排序的时候手滑点进了Arrays.sort()方法的源码里本着"既来之,则安之"的心态索性哥们儿就看了一番没想到有了新收获原来Arrays.sort()方法会根据不同的情况使用不同的"排序算法"接下来就给兄弟们详细汇报一下具体情况关于Arrays.sort()先给不熟悉的兄弟们科普一下jdk提供的排序工具类主要有两个:java.util.Arraysjava.util.Collections大家可能更常用Collections.sort() + 重写compare方
2022-01-12 19:35:18
404
原创 sql查询结果和预想的不一样?多半是“null“在作怪
不知道兄弟们是否有同感在写查询语句的时候我们通常不会刻意去考虑表中的”null“值但有些时候对比查询结果和数据库又发现跟预想的不一样!如果迟迟找不到原因那很有可能是"null"值搞的鬼下面就让我们来一探究竟注:以下情况针对于MYSQL数据库null导致sum函数返回null而不是0如果sum函数指定的字段在数据库中全部为null,那么sum函数将返回null,而非0错误案例:我们先给定一个表数据表名 | test字段name varcharmark int向表中插入一条数据只给name赋值mark为null
2021-12-22 20:19:22
1034
原创 小心,“数组“转“集合“的这几个隐藏“bug“
"Array.asList"先给不熟悉的兄弟们科普一下:Array.asList()方法用于将数组转化为集合对于经常做数据处理的朋友来说应该并不陌生不过话说回来这个方法有几个隐藏的"坑"可能有兄弟会中招咱们接下来就一探究竟听说点赞分享效果更佳呢坑一:不能直接转换基本数据类型的数组错误案例://定义基本数据类型int类数组int[]arr={1,2,3};//使用Array.asList()方法转换为集合Listlist=...
2021-12-21 14:21:23
534
原创 一篇从零开始、步骤完整的网站搭建教程(全篇7000字、102张截图说明,力求每一个人都能看懂,附源码)
从今年八月开始到现在自己也是从0开始做了有两个网站:搏客站:www.haoshuo.club软件下载站:www.haoshuosoftware.cn这中间也经常有不了解的地方需要去查。其实网上的资料也不少但可能相对比较零散,需要反复的查来查去,费时又累心那这次有时间就想着说写一篇从零开始、步骤完整的网站搭建教程希望能帮助大家节省时间,不需要去东拼西凑的查来查去这篇文章我花了两天的时间,全篇7000字,102张截图说明,精细到每一次点击、每一个输入说明力求让每一个人、不管是否有编程基础,看完都能做出自己的网站
2021-12-16 18:27:23
8087
5
原创 日常问题随笔 | 21.11.29 : 使用resttemplate调用外部put请求,提示‘400 bad request’
使用resttemplate调用外部put请求,提示‘400 bad request’问题描述:今天在项目内部调用外部put类型api时出现以下报错:我请求的api的url地址是参数在中间的这种:/a/b/{参数}/c/{参数2}分析应该是参数传递的方式不对,导致该错误解决方案尝试在网上搜了一些相关问题后,参照网友的解决方案,做了以下尝试尝试-1:使用exchange方法HttpHeaders headers = new HttpHeaders();headers.s
2021-11-29 20:16:35
1361
原创 从‘0‘到‘千万级‘并发,阿里分布式架构的14次技术革新
今天在写文章的时候手机收到一篇技术文章的推送看完之后顿时感觉自己写的文章不香了于是决定把它分享给大家希望对大家有所帮助有用的话记得收藏 | 分享给需要的他她它1、概述本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术。让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。2、基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍。1)什么是分布式?系统中的多个模
2021-08-09 19:46:47
463
原创 这几个宝藏网站,一旦知道,你就离不开了!!!
谁说程序员只有代码?今天就回归生活为大家推荐几个鲜为人知的私藏小众网站,每一个都堪称日常神器并且其中很多网站是完全免费的,基本上都是非常良心好用,让你相见恨晚,用过就离不开。有用的话记得分享给需要的他她它1:优质免费PPT模板下载-PPT 超级市场PPT 超级市场是一个完全免费的 PPT 模板下载网站。它主要的特点就是每一个 PPT 模板的质量都是极高,并且非常精美。它的界面非常简洁,没有任何多余的东西,只有一个简单的搜索框和部分推荐模板,你可以直接利用网站的搜索功能搜索你需要的 PPT 模板。搜索完毕,你
2021-08-04 20:33:28
3796
原创 Java高频面试题- 每日三连问?【Day8】 — 消息队列篇
问题导读一、说说你对消息队列的理解,消息队列为了解决什么问题?二、消息队列有什么优缺点?三、说一下RabbitMQ有哪些工作模式?01说说你对消息队列的理解,消息队列为了解
2021-08-03 19:59:51
383
原创 Java高频面试题- 每日三连问?【Day7】 — 数据库篇
问题导读一、哪些情况下索引会失效?二、说一下varchar与char的区别吧三、做过SQL优化吗?请举几个例子说明一下01哪些情况下索引会失效?正经回答:1、在字段开头模糊
2021-07-30 20:19:59
272
原创 浩抒己见:你坚持过哪些细小的好习惯?
浩抒己见 01睡觉前把第二天要穿的衣服准备好,免得第二天因为找不到衣服或者选择恐惧症而上班迟到02去某一个地方(医院/机关单位等)之前,先打电话咨询一下工作时间、所需证件、流程等,免得白跑一趟03电脑处理工作时,文档、文件夹等,处理的当时就给个确切的命名,比如∶时间、内容、一稿/二稿等等。文档在当时就保存到应属的文件夹中。如果图-时方便,随手命名、全存档在桌面上,找的时候很麻烦,而且定期清理,只会更浪费时间.PS:这和保持房间整洁,东西用完放回原处对定期整理糟乱的房间,是
2021-07-25 19:20:22
218
原创 大厂程序员都在偷摸看什么?我用两年时间整理出来,且看且珍惜!
本篇为读者整合了阿里的内部技术资料,以下是阅读指南,读者可按需学习。资料的获取方式在文章底部Java基础总结一书看完Java知识结构体系Java基础学习超全知识指南阿里技术专家出品--基础指南阿里技术团队的集体智慧结晶和经验总结--码出高效、码出质量《Java开发手册--灵魂13问》挖掘阿里一线团队开发思维一线大厂怎么用Java?全网千万阅读量技术博主深入解读架构进阶实战Spring Boot 实战Spring Cloud揭秘阿里的微服务架构体系《Spring Cloud Alibaba》-- 阿
2021-07-23 20:22:57
334
1
原创 Java高频面试题- 每日三连问?【Day6】 — 框架篇Spring
问题导读一、说一下 SpringMVC 的运行流程?二、你常用的Spring注解有哪些?追问-1:@Autowired和@Resource有什么区别呢?三、Spring 框
2021-07-22 18:36:15
213
原创 Java高频面试题- 每日三连问?【Day5】 — MyBatis篇2
问题导读一、了解MyBatis的一级缓存、二级缓存吗?追问-1:如何配置二级缓存?追问-2:一级缓存和二级缓存的使用顺序?二、MyBatis的分页原理是什么?三、MyBat
2021-07-21 19:02:16
248
原创 Java高频面试题- 每日三连问?【Day4】 — MyBatis篇
问题导读一、MyBatis中的#{}和${}有哪些区别?二、你常用的MyBatis标签有哪些?三、说一下Hibernate 和 MyBatis 的区别吧01MyBatis中
2021-07-20 19:54:44
242
原创 Java高频面试题- 每日三连问?【Day3】 — 集合容器篇
问题导读一、说一下List、Set、map的区别吧二、说一下Vector、ArrayList、LinkedList 有何不同?追问-1:分别适合在什么场景下使用呢?追问-2
2021-07-19 11:03:59
253
原创 Java高频面试题- 每日三连问?【Day2】 — Redis篇2
问题导读一、你对Redis的持久化了解吗?追问-1:能否说一下Redis持久化有几种方式?二、聊一下Redis的内存淘汰机制吧三、Redis为什么是单线程的?01你对Red
2021-07-19 10:48:18
198
原创 浩抒己见(回复私信):有哪些表现让你一看就知道他是程序员?
浩抒己见01 丨 万物皆错、唯我独对 程序员基本“素质”,不管如何做,怎么做,在对方的眼里都是错误的。别问为什么,问就是我是对的!02 丨 从0开始数数从0开始.....03 丨 技术虽不懂、战场必须上 这类“大佬”其实是挺上进的。上进是好事,但瞎指挥就是你的错了!此类大佬都知道在互联网行业最好要有技术背景,这样在buff的加持下简直可以在职场所向披靡。于是买大量技术书当小说来看,虽然看不懂,不过没关系。还经常会看一些互联网大公司的架构书,技术剖析,企业管
2021-07-18 12:47:22
160
原创 设计模式的通俗理解--建造者模式
本文能为读者创造的价值:(读完) 1. 理解什么是建造者模式 2. 了解建造者模式的应用场景 3. 建造者模式的实现方式 4. 建造者模式的设计思路掌握设计模式的三个过程:理解:通过本文理解设计模式识别:阅读代码的时候能够识别出应用了哪种设计模式应用:当接到业务的时候,能够反应出可以应用哪种设计模式并加以实现(读者想要达到这个程度,需要反复重复“识别”的过程)所谓建造者模式 &nbs
2021-07-17 17:37:21
180
原创 设计模式的通俗理解--代理模式
前言 我在上一篇文章收尾部分提到过,设计模式按照功能性分为三类:创建类、结构类、行为类。创建类设计模式应用于创建对象这一步,包含工厂模式、单例模式、建造者模式、原型模式,通过之前的四篇文章已经全部介绍完。 从本篇开始介绍结构类设计模式,在创建类模式创建好对象之后,结构类模式的作用是负责对代码作结构优化以及解耦。下面开始介绍结构类第一种--代理模式。本文能为读者创造的价值:
2021-07-16 19:06:37
138
原创 一看就懂的“什么是XXX“系列--什么是序列化
前言 本系列的创作初衷是帮助读者学习或回忆那些常用但容易遗忘的java基础知识。 本系列写作的三个‘最’原则:用最短的篇幅、最简单的表达、使读者以最高效的方式理解“什么是XXX”。 什么是序列化读者的收获1、了解什么是序列化2、序列化的作用3、序列化的应用场景4、如何实现序列化序列化的定义 序列化是指:将java对象转化成二进制字节流的过程。与之对应的:反序列化则是将二进制字节流转化成对象的过程。
2021-07-15 18:42:17
226
原创 数据结构与算法--栈(Stack)
"数据结构与算法"不管是在Java还是在任何语言中都是核心基础知识,就像是盖楼的地基一样,它被广泛的应用于架构的最底层,对于这部分知识的掌握程度能够决定读者以后的高度。 出于这个初衷开更本系列文章,希望能对读者有所帮助。读者的收获1、了解栈的结构2、栈的特性3、栈的实现方式4、栈的日常应用1栈的结构 ”栈“是一种“操作受限”的数据结构,栈的顶端叫做“栈顶”,栈的底端叫做“栈底”,对于数据的插入操作叫做“入栈”,剔除数据
2021-07-14 19:14:24
445
原创 Java高频面试题- 每日三连问?【Day2】 — Redis篇2
问题导读一、你对Redis的持久化了解吗?追问-1:能否说一下Redis持久化有几种方式?二、聊一下Redis的内存淘汰机制吧三、Redis为什么是单线程的?01你对Red
2021-07-13 18:46:31
137
原创 一看就懂的“什么是XXX“系列--什么是泛型
泛型(Generics)不管在面试还是实际开发过程中都有高频率的应用,本文将带读者复习或更深层次的了解泛型的概念以及其底层原理读者的收获1、理解什么是泛型2、泛型的底层原理3、泛型的应用4、通配符、边界的概念泛型的概念 泛型,官方解释叫做“参数化类型”。通俗的意思就是:将类、方法、变量的类型以参数的形式定义,然后在使用到对应类、方法、变量的时候再传入具体的类型。 概念比较抽象且不好理解,下面我通过具体实例
2021-07-12 18:52:07
276
原创 数据结构与算法--链表(Linked list)
“数据结构与算法”不管是在Java还是在任何语言中都是核心基础知识,就像是盖楼的地基一样,它被广泛的应用于架构的最底层,对于这部分知识的掌握程度能够决定读者以后的高度。 出于这个初衷开更本系列文章,希望能对读者有所帮助。 读者的收获1、了解链表的底层结构2、常用的链表类型3、链表的特性4、链表的优缺点链表的底层结构 相较于上一篇的数组,由于链表在内存中的分布是不连续的,所以每一个内存块除了存数据之
2021-07-11 09:13:40
227
原创 Java高频面试题- 每日三连问?【Day1】 — Redis篇
问题导读一、你在哪些应用场景用到了Redis?二、Redis都支持哪些数据类型?追问-1:在业务中如何选择要用的数据类型?三、聊一下对缓存穿透、缓存击穿、缓存雪崩的理解吧?
2021-07-10 14:40:35
171
原创 Java虚拟机编译原理二:Java的类加载过程
通过上一篇的内容,我们简单的了解了JVM的基本概念和JVM的作用。 本篇我们继续探寻"JVM的类加载过程"1从.java到.class关于JDK、JRE、JVMJDK:Java Develpment Kit java 开发工具JRE:Java Runtime Environment java运行时环境JVM:java Virtual Machine java 虚拟机 在开始探寻类加载过程之前,有必要阐述一下这三者之间的关系,三者属
2021-07-09 19:04:42
167
原创 Java虚拟机编译原理一:初识“JVM“
Java虚拟机部分属于Java的高级编程知识,所以学习这一部分内容需要读者有一定的编程基础。 作为系列的第一篇,我们先简单认识一下JVM,什么是JVM?JVM是做什么的?JVM的作用是什么?1虚拟机与计算机的关系 在计算机的硬件系统中,机器码是唯一能够被识别并执行的计算机语言。所以对于高级编程语言(如Java、C++、Python)编写的代码,需要通过一个"托管环境"负责将代码转换成计算机能够理解的机器码,程序才得以在
2021-07-08 18:48:05
166
原创 并发编程进阶三:深入理解“锁“机制
通过前两篇的内容我们了解了并发的潜在问题,以及解决部分潜在问题的方法。 本篇我们继续探寻"如何解决并发的原子性问题?"读者的收获1、"锁"的概念2、Java提供的锁技术:synchronized3、"锁"和“资源”的对应关系4、互斥锁往期回顾并发编程进阶一:从“并发引发的潜在问题”开始并发编程进阶二:搞定可见性、有序性问题,用'它'就够了!!!1"锁"的概念 通过之前的文章我们了解到,并发的原子性问题是由线程切换引起
2021-07-07 19:02:30
260
原创 并发编程进阶二:搞定可见性、有序性问题,用‘它‘就够了!!!
承接上一篇"并发的三个潜在问题:CPU缓存引发的可见性、线程切换引发的原子性、编译优化引发的有序性"。 本篇就来探寻一下Java并发编程中针对"可见性、有序性"提供的解决方案。上期回顾并发编程进阶一:从“并发引发的潜在问题”开始1可见性:使用volatile禁用CPU缓存 我们在上一篇的分析中了解到,并发的可见性问题产生于各个CPU缓存中的数据副本与公共内存中的数据本体存在不一致的可能。&n
2021-07-06 09:34:58
150
原创 日常开发踩坑:前端数据并不可信
在我们的日常业务开发中,和前端的数据交互是必不可少的,通常前端会将参数以json格式发送至后端进行逻辑处理,但是前端传来的数据真的可以直接拿来用吗? 本篇就针对这里的几个坑点为读者做科普和预警。1前端的计算结果不能直接使用 在实际业务开发中,为了提高效率经常发生的情况是:对于一些运算直接在前端处理,然后把计算的结果传给后端,这个时候可能会有读者这么做:/** * 订单类 */@Re
2021-07-05 12:14:44
1107
原创 日常开发踩坑:你的数值计算真的如你所愿吗?
读者在日常业务开发中或多或少会涉及到一些数值计算逻辑,尤其是金融行业需要特别严谨,通常由数值引起的问题都是潜移默化的且难以发现,拿“数值偏差”来说,初期的微小偏差是很难察觉的,当这种偏差累积成量级的数值错误而引起生产事故则为时已晚。 本篇就针对这一部分踩过的坑为读者做科普和预警。1浮点数的精度偏差:1减0.8真的等于0.2吗?测试一下:System.out.println(1 - 0.8);控制台输出:0.19999999999999996
2021-07-04 09:15:01
207
原创 Java性能调优--代码篇:String内存优化
String在日常开发中的使用频率应该不需要我过多形容,大家闭着眼睛都能手写出来,但也正因如此,对于String的性能优化最容易被忽视却也最为必要! 如何优化String的内存开支?怎样用更少的空间管理String? 让我们带着这几个问题开始本篇的探讨。1String自身的“优化”设计思想“String 和 StringBuffer 有什么区别?”"StringBuffer可变,String不可变。"“String为什么不可变?
2021-07-03 10:17:40
458
原创 Java性能调优--代码篇:优化正则表达式的匹配效率
在我们的日常业务开发中经常会涉及到使用正则表达式对数据进行处理,比如String的Split()方法,它根据方法中传入的正则表达式对字符串做分割处理。 但是我们是否真的了解正则表达式,它是如何匹配的?不同的匹配方式会带来怎样的效率差别?怎样才能做到效率最优? 本篇就对“如何优化正则表达式的匹配效率?”做深入探讨。1匹配的三种方式 看下面这个例子,我们给定了一个字符串以及三个功能相同但写法略有区别的正则表
2021-07-02 09:31:58
2387
原创 设计模式的通俗理解--原型模式
读者的收获1. 理解什么是原型模式 2. 原型模式的两种实现方式3. 原型模式的设计思路掌握设计模式的三个过程:理解:通过本文理解设计模式识别:阅读代码的时候能够识别出应用了哪种设计模式应用:当接到业务的时候,能够反应出可以应用哪种设计模式并加以实现(读者想要达到这个程度,需要反复重复“识别”的过程)什么是原型模式 原型模式实现很简单,对于读者来说很好理解,所以本篇内容不会很长,原型模式的本质和 ctrl c+ctrl
2021-07-01 13:42:29
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅