摘要: 对于简单的问题,也有许多不同的编码方式和实现方法。不同的开发者可能会选择不同的路径来解决相同的问题。通过编写具有不同实现方式的代码,来表达自己的观点、风格和创造性,这些不同的实现让人感受到编程多样之美。在底层,所有的编程语言最终都会被翻译成机器语言-计算机硬件可以直接执行的指令。这些指令本质上是逻辑门电路的操作,都基于二进制数学。这些指令本质上是逻辑门电路的操作,都基于二进制数学。底层的一致性使得无论我们使用什么样的高级抽象,最终都是在共同的计算模型下运行 阅读全文
posted @ 2024-01-23 16:08 Java研究者 阅读(259) 评论(0) 推荐(3) 编辑
摘要: Hugo 是一个能够以出色速度构建静态网页的工具,它为我们提供了极具灵活性的平台,可以塑造成符合个人需求的网页。在上一篇博文中已经介绍了 Hugo 的基本搭建步骤,那如何使用 Hugo 搭建符合自己需求的主题页面?不妨还是以 Hugo-book主题作为 基础,一起探索如何将它塑造成我们需要的网页。 阅读全文
posted @ 2023-11-27 10:08 Java研究者 阅读(581) 评论(0) 推荐(0) 编辑
摘要: 玩转开源 | 搭建 Hugo 管理 Markdown 文档 在 先前文章 [《Markdown的那些事儿》](https://www.cnblogs.com/jzhlin/p/markdown.html) 也有提到到,围绕 markdown 有着大量的开源软件、库做支持;这里分享下使用基于MIT许可证的开源软件 Hugo 来管理 Markdown 文档,能帮助基于 markdown 生成各种风格主题的静态页面。先不妨看下笔者一些markdown 文档效果 阅读全文
posted @ 2023-11-23 09:44 Java研究者 阅读(1530) 评论(4) 推荐(1) 编辑
摘要: 数据结构与算法 | 图(Graph) 在这之前已经写了数组、链表、二叉树、栈、队列等数据结构,本篇一起探究一个新的数据结构:图(Graphs )。在二叉树里面有着节点(node)的概念,每个节点里面包含左、右两个子节点指针;比对于图来说同样有着节点(node),在图里也称为顶点(vertex),顶点之间的关联不在局限于2个(左、右),一个顶点可以与任意(0-n个)个顶点进行链接,这称之为边(edge)。 一般会把一个图里面顶点 阅读全文
posted @ 2023-11-20 09:37 Java研究者 阅读(862) 评论(0) 推荐(1) 编辑
摘要: 上一篇文末已经提到了记忆化搜索是动态规划(Dynamic Programming)的一种形式,是一种自顶向下(Top-Down)的思考方式;既然动态规划有自顶向下(Top-Down)的递归形式,自然想到对应的另外一种思考方式自底向上( Bottom-Up )。什么是自底向上的思考?不空谈理论... 阅读全文
posted @ 2023-11-16 10:15 Java研究者 阅读(545) 评论(0) 推荐(1) 编辑
摘要: 回忆笔者学习动态规划的时候,最开始接触的是经典的 “01背包” 问题;不过现在想起来,以“01背包问题”作为初次接触的动态规划算法的问题_并不友好_;花费了不少时间才慢慢感悟到动态规划算法的核心思想。先前的文章中涉及了不少搜索算法,在搜索算法上融入动态规划算法思想的 阅读全文
posted @ 2023-11-13 09:03 Java研究者 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 互联网那些技术 | 扒一扒互联网Markdown的那些事儿 从大量轻量语言的出现,到 Gruber 和 Swartz 创建 Markdown;从 Jeff 对 Markdown 设计的热爱,推其广泛应用与制定标准 到 Gruber 反对标准使用 Markdown之名;从 CommonMark、GFM的出现,到 ETF征求意见稿发布;还有贯穿其中的各种 Markdown 扩展、应用到各种场景的开源项目,演进到如今不可谓不热闹,颇有一番春秋战国百家争鸣的味道。 阅读全文
posted @ 2023-11-06 10:11 Java研究者 阅读(873) 评论(3) 推荐(1) 编辑
摘要: 数据结构与算法 | 哈希表(Hash Table) 借这题不妨讲一讲分块的编码风格。在日常生活中,我们一定有记忆手机号码的经历,一个长长的数字串(比如1234567890)可能很难记忆,但如果将其分成更小的组块,例如(123) 456-7890,就更容易记忆和处理。这个其实在认识心理学里面概念叫:"信息分块"(chunking),指的是将大量的信息分割成更小的、有意义的单元,以便更容易处理和记忆。关键点是人类大脑通过将信息分成较小的组块,可以更有效地处理和记忆信息。所谓代码可读性其实就是对代码的认识... 阅读全文
posted @ 2023-11-02 15:04 Java研究者 阅读(640) 评论(0) 推荐(0) 编辑
摘要: 文承上篇,搜索算法中除了深度优先搜索(DFS)和广度优先搜索(BFS),二分搜索(Binary Search)也是最基础搜索算法之一。二分搜索也被称为折半搜索(Half-interval Search)也有说法为对数搜索算法(Logarithmic Search),用于在已排序的数据集中查找特定元素。搜索过程从排序数据集的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束返回元素;如果... 阅读全文
posted @ 2023-10-30 14:21 Java研究者 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 数据结构与算法 | 深搜(DFS)与广搜(BFS) 在查找二叉树某个节点时,如果把二叉树所有节点理理解为解空间,待找到那个节点理解为满足特定条件的解,对此解答可以抽象描述为: _在解空间中搜索满足特定条件的解_,这其实就是搜索算法(Search)的一种描述。当然也有其他描述,比如是“指一类用于在数据集合中查找特定项或解决问题的算法”,又或者是“指通过按照一定规则逐一检查数据,以找到所需的信息或解决特定的问题。”等等。 阅读全文
posted @ 2023-10-26 10:52 Java研究者 阅读(1271) 评论(1) 推荐(0) 编辑
摘要: 数据结构与算法 | 二叉树(Binary Tree) "二叉树"(Binary Tree)这个名称的由来是因为二叉树的每个节点最多有两个子节点,一个左子节点和一个右子节点。其中,“二叉”指的是两个,因此“二叉树”表示每个节点最多可以分支成两个子节点。 阅读全文
posted @ 2023-10-23 09:16 Java研究者 阅读(673) 评论(0) 推荐(0) 编辑
摘要: 数据结构与算法 | 链表(Linked List) 链表(Linked List)是一种线性数据结构,它由一系列节点(Node)组成,每个节点包含两部分:数据和指向下(上)一个节点的引用(或指针)。链表中的节点按照线性顺序连接在一起(相邻节点不需要存储在连续内存位置),不像数组一样存储在连续的内存位置。链表通常由头节点(Head)来表示整个链表,而尾节点的下一个节点指向null,表示链表的结束。 阅读全文
posted @ 2023-10-19 10:34 Java研究者 阅读(1004) 评论(1) 推荐(0) 编辑
摘要: 数组(Array) 数组(Array)应该是最基础的数据结构之一,它由相同类型的元素组成的集合,并按照一定的顺序存储在内存中。每个元素都有一个唯一的索引,可以用于访问该元素。 // java 数组示例 int[] numbers1 = {2,0,2,3,9,23}; // 或者 int[] numb 阅读全文
posted @ 2023-10-16 16:50 Java研究者 阅读(719) 评论(0) 推荐(0) 编辑
摘要: 互联网那些技术 | 秒杀库存解决方案 电商系统中秒杀是一种常见的业务场景需求,其中核心设计之一就是如何扣减库存。本篇主要分享一些常见库存扣减技术方案,库存扣减设计选择并非一味追求性能更佳,更多的应该考虑根据实际情况来进行架构取舍... 阅读全文
posted @ 2023-08-14 11:26 Java研究者 阅读(3052) 评论(1) 推荐(5) 编辑
摘要: 互联网那些技术 | 高可用三大利器 — 熔断、限流和降级 在武侠世界里,“利器”通常指的是武器中的上乘、出色之物;武器对于武者的重要性不言而喻,拥有一把优秀的武器可以让武者在战斗中更加得心应手,威力更强。在分布式系统追求高可用的背景下,熔断、限流和降级这三个重要的策略可以称得上三大利器。降级和熔断是不是一回事?限流 与 降级呢? 阅读全文
posted @ 2023-07-27 18:41 Java研究者 阅读(1508) 评论(0) 推荐(1) 编辑
摘要: Java并发编程 | Synchronized原理与使用 Java提供了多种机制实现多线程之间有需要同步执行的场景需求。其中最基本的是Synchronized ,实现上使用对象监视器( Monitor )。用一张图简要归纳说明相关原理,大道归一Synchronized 底层也是应用到了CAS机制实现。 阅读全文
posted @ 2022-10-25 09:47 Java研究者 阅读(727) 评论(0) 推荐(0) 编辑
摘要: 编程架构演化史 | 远古时代,从打孔卡(Punched Card)开始 回想读书时记录到书本里的打孔纸带编程,到初学编程接触到的C语言高级编程,再到C++、Java面向对象语言产生;从面向过程系统设计 到面向对象系统设计;从三层结构到MVC、MVP、MVVM;从主机到虚拟机再到如今的容器,云原生时代;DDD、六边形架构、简洁架构、清晰架构、C4等等,这一系列的名词构建了系统架构设计的发展史。 阅读全文
posted @ 2022-10-12 10:07 Java研究者 阅读(1348) 评论(2) 推荐(2) 编辑
摘要: Java并发编程 | 从进程、线程到并发问题实例解决 计划写几篇文章讲述下Java并发编程,帮助一些初学者成体系的理解并发编程并实际使用,而不只是碎片化的了解一些Synchronized、ReentrantLock等技术点。本篇主要介绍了进程、线程以及相关发展史;展示了一个具体的并发问题;详细分析了并发问题的发生原因以及解决办法。最后对多线程并发程序进行了验证,以及相关性能上的探究。 阅读全文
posted @ 2022-10-04 10:58 Java研究者 阅读(896) 评论(0) 推荐(0) 编辑
摘要: ​打造企业自己代码规范IDEA插件(下) 综述下关键点,代码规范检查基本原理可以基于AST语法树来进行实现;AST结合Xpath可以方便进行相关规范规则的编写;通过 PMD-Designer 能可视化的帮助我们实现 XPath 的相关代码规范规则以及验证相关规则;给出了一个例子... 阅读全文
posted @ 2022-09-28 19:21 Java研究者 阅读(875) 评论(0) 推荐(0) 编辑
摘要: ​打造企业自己代码规范IDEA插件(上) 怎么借鉴开源代码来打造一些自身面对的问题解决方案?也许有一些Demo来进行回答演示或许更为贴近地气些。这里打算写一些玩转源码为主题的文字来实践的回答,最近在看P3C的一些源码,那就从这开始吧。 阅读全文
posted @ 2022-09-27 20:53 Java研究者 阅读(1538) 评论(0) 推荐(1) 编辑