近日偶然在一论坛网站上看到一道问答题目“使用三种不同的实现,完成1+2+..+100的编程”。让人回忆起,好似这是初学编程时课堂留下的练习题目。算算如今离开课堂已是十余年了,一时兴趣不妨再来做一做这道题。 三种基础循环语法 没记错的话,这道题在学习完基础循环语法后所布置的练习,最先想到的是使用for(;;)循环语句来实现。 intrecursionCompute(intn){ intsum=0; for(inti=1;i<=n;i){ sum+=i; } returnsum; } 熟悉for(;;)语句语法的三要素话,也可以写的更简短一些,利用从大到小倒过来进行累加,不一定需要变量...

  0giih6oWKwoR   2024年01月23日   17   0   0 算法与数据结构

Hugo是一个能够以出色速度构建静态网页的工具,它为我们提供了极具灵活性的平台,可以塑造成符合个人需求的网页。在上一篇博文中已经介绍了Hugo的基本搭建步骤,那如何使用Hugo搭建符合自己需求的主题页面?不妨还是以Hugo-book主题作为基础,一起探索如何将它塑造成我们需要的网页。 自定义导航 在构建信息网页时,导航不仅仅是简单的链接集合,更是用户与网站互动的主要纽带。它承担着引导用户在网站内部浏览的任务,促使他们迅速、准确地找到所需内容。 在默认搭建中,左侧的导航是根据文档自动生成的。这样虽然便捷,但它可能无法完全契合网站内容的层次结构或信息重要性。因此,实际场景上往往需要针对网站的内容对...

  0giih6oWKwoR   2023年11月28日   17   0   0 开源研究

在工作、学习中,不可避免会要写一些文档;又或者想搭建个简单网站,记录和分享您的生活经验或知识;撰写这些文档中使用markdown是一个非常不错的选择,让我们更加聚焦在文档表达的内容上。实际上笔者的文档基本都是在Sublime中用markdown格式撰写的。 在先前文章《Markdown的那些事儿》也有提到到,围绕markdown有着大量的开源软件、库做支持;这里分享下使用基于MIT许可证的开源软件Hugo来管理Markdown文档,能帮助基于markdown生成各种风格主题的静态页面。先不妨看下笔者一些markdown文档效果:https://quincik.gitee.io/algorith...

  0giih6oWKwoR   2023年11月24日   14   0   0 企业信息化其他

上一篇文末已经提到了记忆化搜索是动态规划(DynamicProgramming)的一种形式,是一种自顶向下(Top-Down)的思考方式,通常采用递归的编码形式;既然动态规划有自顶向下(Top-Down)的递归形式,自然想到对应的另外一种思考方式自底向上(Bottom-Up),也就是本篇要写的内容。 什么是自底向上的思考?不空谈理论,还是借个实际题目来体会。 自底向上(Bottom-Up) LeetCode53.最大子数组和【中等】 给你一个整数数组nums请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。 示例: 输入:nums...

  0giih6oWKwoR   2023年11月17日   13   0   0 算法与数据结构

最近感觉到Markdown似乎已成为各大社区的编辑器标配所支持的格式,侧面看来其设计之初的目标“tobeusedasaformatforwritingfortheweb.”已经成为了现实。不妨就扒一扒互联网Markdown的这些事儿。 Markdown的演进 Markdown是一种标记语言,对比于HTML这样的标记语言来说简洁很多,因此其描述为轻量级的标记语言(lightweightmarkuplanguage,简称LML)更为合适。当然,轻量级标记语言并非只有Markdown,在其之前就有很多种。比如:Setext(StructureEnhancedText)用于一些纯文本的场景比如Emai...

  0giih6oWKwoR   2023年11月07日   24   0   0 开源研究

哈希表(HashTable) 在二分搜索中提到了在有序集合中查询某个特定元素的时候,通过折半的方式进行搜索是一种很高效的算法。那能否根据特征直接定位元素,而非折半去查找?哈希表(HashTable),也称为散列表,就是一种数据结构,用于实现键-值对的映射关系。它通过将键映射到特定的值(哈希值)来实现快速的数据检索。 //Java中Hash表JDK中有提供两种结构Hashtable、HashMap,使用接口上区别不大 //Hashtable是Dictionary类的子类,而HashMap是AbstractMap类的子类。 //由于Dictionary类已经被废弃,因此Hashtable也不...

  0giih6oWKwoR   2023年11月05日   50   0   0 算法与数据结构

深搜(DFS)与广搜(BFS) 在查找二叉树某个节点时,如果把二叉树所有节点理解为解空间,待找到那个节点理解为满足特定条件的解,对此解答可以抽象描述为:在解空间中搜索满足特定条件的解,这其实就是搜索算法(Search)的一种描述。当然也有其他描述,比如是“指一类用于在数据集合中查找特定项或解决问题的算法”,又或者是“指通过按照一定规则逐一检查数据,以找到所需的信息或解决特定的问题。”等等。 搜索算法在计算机科学和信息检索中具有广泛的应用,包括搜索引擎、数据库查询、排序、路径规划、机器学习和人工智能等领域。其中最基础之一的搜索算法就是深度优先搜索(DepthFirstsearch,简称DFS)和...

  0giih6oWKwoR   2023年11月02日   34   0   0 Java

二叉树(BinaryTree) 二叉树(BinaryTree)是一种树形数据结构,由节点构成,每个节点最多有两个子节点:一个左子节点和一个右子节点。 publicclassTreeNode{ intval; TreeNodeleft; TreeNoderight; TreeNode(intval){this.val=val;} } 基本概念 "二叉树"(BinaryTree)这个名称的由来是因为二叉树的每个节点最多有两个子节点,一个左子节点和一个右子节点。其中,“二叉”指的是两个,因此“二叉树”表示每个节点最多可以分支成两个子节点。基本定义: 每个节点包含一个值(或数据),另外最...

  0giih6oWKwoR   2023年11月02日   36   0   0 Java

链表(LinkedList) 链表(LinkedList)是一种线性数据结构,它由一系列节点(Node)组成,每个节点包含两部分:数据和指向下(上)一个节点的引用(或指针)。链表中的节点按照线性顺序连接在一起(相邻节点不需要存储在连续内存位置),不像数组一样存储在连续的内存位置。链表通常由头节点(Head)来表示整个链表,而尾节点的下一个节点指向null,表示链表的结束。 链表有几种常见的类型,其中最常见的包括单链表、双链表。 //JavaLinkedList中Node的结构 classNode<E>{ Eitem; Node<E>next; Node<E>...

  0giih6oWKwoR   2023年11月02日   23   0   0 Java

数组(Array) 数组(Array)应该是最基础的数据结构之一,它由相同类型的元素组成的集合,并按照一定的顺序存储在内存中。每个元素都有一个唯一的索引,可以用于访问该元素。 //java数组示例 int[]numbers1={2,0,2,3,9,23}; //或者 int[]numbers2=newint[6]; 基本概念 数组基本概念——数组索引、数组元素、数组长度 数组索引(Index):数组中的每个元素都有一个唯一的整数索引,从0开始计数。索引用于访问数组中的元素。 数组元素(Element):数组中的元素必须是相同类型的数据,可以是整数、浮点数、字符、对象等。 数组长度(...

  0giih6oWKwoR   2023年11月02日   55   0   0 Java

Java提供了多种机制实现多线程之间有需要同步执行的场景需求。其中最基本的是Synchronized,实现上使用对象监视器(Monitor)。 Java中的每个对象都是与线程可以锁定或解锁的对象监视器(Monitor)关联。在同一时间只有一个线程可以在对象监视器(Monitor)上保持锁定。任何其他线程试图锁定对象监视器(Monitor)都会被阻止,直到它们可以获得该监视器上的锁定。 Synchronized基本使用方式 Synchronized的作用范围,依据锁定的对象(object、this、class)、使用方式,可以分成五种情况。如果按照JVM字节码的区别,也可以分成两种形式:代码块(...

  0giih6oWKwoR   2023年11月01日   22   0   0 Java

近年来,各大厂Google、微软、阿里、腾讯等都在提高可用的概念。高可用(HighAvailability,简称HA)是指系统或服务在遭受故障或异常情况时仍能持续提供稳定和可靠的运行能力。 在武侠世界里,“利器”通常指的是武器中的上乘、出色之物;武器对于武者的重要性不言而喻,拥有一把优秀的武器可以让武者在战斗中更加得心应手,威力更强。 在分布式系统追求高可用的背景下,熔断、限流和降级这三个重要的策略可以称得上三大利器。 熔断(CircuitBreaker):熔断是一种防止故障扩散的策略。当一个服务出现故障或超时,熔断器会打开并快速失败,拒绝后续的请求,避免请求堆积和资源耗尽。熔断器会暂时屏蔽该...

  0giih6oWKwoR   2023年11月01日   44   0   0 架构设计

电商系统中秒杀是一种常见的业务场景需求,其中核心设计之一就是如何扣减库存。本篇主要分享一些常见库存扣减技术方案,库存扣减设计选择并非一味追求性能更佳,更多的应该考虑根据实际情况来进行架构取舍。在商品购买的过程中,库存的抵扣过程通常包括以下步骤: 开启事务:在开始进行库存抵扣操作前,开启一个事务。 查询库存:根据商品ID,使用SELECT语句从库存表中查询该商品的当前库存数量。 检查库存是否足够:将查询到的库存数量与用户购买数量进行比较。如果库存数量大于或等于用户购买数量,则库存足够,可以继续下单。如果库存不足,需要采取相应的处理措施,例如提示用户库存不足或进行库存预订等。 扣减库存:如果库存...

  0giih6oWKwoR   2023年11月01日   53   0   0 架构设计
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~