自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 架构演进史

单体架构是指将所有功能模块打包在一个独立的应用程序中。早期的计算机应用程序大多采用这种架构,所有的代码、数据和资源都集中在一个地方。服务导向架构(SOA)是一种将应用程序分解为一组相互独立的服务的架构模式。每个服务负责特定的业务功能,并通过标准化的接口进行通信。微服务架构是SOA的一种实现,它将服务进一步细化,每个服务通常围绕特定的业务功能构建,且通常是轻量级的。无服务器架构(Serverless)是一种新兴的架构模式,开发者不需要管理服务器,而是将代码上传到云服务提供商,后者负责运行环境的维护和自动扩展。

2024-10-23 22:30:08 1046

原创 《左耳听风--传奇程序员练级攻略》读书笔记一

芝兰生于幽谷,不以无人而不芳

2024-10-09 17:59:41 222

原创 “调用远程方法”与“调用本地方法”,有多少问题要解决

在软件开发中,调用远程方法(如通过网络调用一个服务)与调用本地方法(在同一进程或同一台机器上调用)涉及不同的问题和挑战。

2024-09-11 00:06:52 698

原创 Worse is Better

总的来说,虽然简单性是一个重要的目标,但在实际的软件开发过程中,需要根据具体情况和需求来平衡简单性与其他属性之间的关系。Worse is Better是UNIX的设计哲学,通俗来说,就是:保持接口与实现的简单性,比系统的任何其他属性,包括准确性、一致性和完整性,都来得更加重要。:简单的接口和实现更容易被理解和维护。:在某些领域,如金融、医疗或航空,系统的准确性和一致性是至关重要的,可能需要复杂的算法和流程来确保这些属性。:简单的代码通常意味着更少的代码行数和更少的复杂逻辑,这有助于减少引入错误的机会。

2024-09-11 00:03:18 209

原创 JavaScript网页设计案例:天气

当你尝试使用 OpenWeatherMap API 并收到 401 (Unauthorized) 错误时,这通常意味着你的 API 密钥没有被正确识别或者没有被包含在你的请求中。同时,确保你的 API 密钥没有泄露给其他人,因为这可能会导致你的密钥被禁用。如果你的应用需要更高的请求频率或更多的功能,你可能需要考虑升级到付费计划。:一旦你获得了 API 密钥,你可以在 API 请求的 URL 中使用它来获取天气数据。:OpenWeatherMap 提供了多个版本的 API,确保你使用的是正确的版本。

2024-09-04 18:00:00 957

原创 前端框架有哪些

这些技巧和最佳实践可以帮助开发者提高应用的性能,减少不必要的渲染,加快加载速度,并提供更好的用户体验。随着前端技术的发展,新的框架和工具不断涌现,而一些旧的框架可能会逐渐淡出视野。: 一个轻量级的 JavaScript 框架,用于增强 HTML,提供类似 Vue 的功能。: 一个简单的库,用于构建轻量级的 Web 组件,使用现代 Web 平台的特性。: 一个成熟的框架,提供丰富的功能和约定,以帮助开发者构建可扩展的应用程序。: 一个基于 Vue.js 的框架,用于构建响应式的网站和应用程序。

2024-09-02 21:00:00 2000

原创 每日一题:94. 二叉树的中序遍历(3种解法)

二叉树的中序遍历是一种常见的树遍历算法,它的遍历顺序是先遍历左子树,然后访问根节点,最后遍历右子树。在遍历过程中,我们将节点的值按照这个顺序添加到一个列表中。对于这个问题,我们可以使用递归或迭代的方法来实现中序遍历。

2024-09-02 08:15:00 400

原创 想了个创业的点子问老婆,她说你这不就是外包公司吗

容我好好再想想有什么通往自由的道路,上面的私活,有需要的也可以看看,总归来说,能不能不风吹日晒雨淋的吃饭,还是要看自己“手艺”,加油,度过寒冬。私活也不是那么简单,刚巧又在某个公众号上看到,可以找那种中介,中介抽取一部分佣金,其他都是程序员自己去做,相当于一个接活派活的中间商吧。想发财的我,就想,一个人干活能有几个钱,我要是成了这中介,啥成本也没有,通过信息差,躺着赚钱,想想就兴奋。就跟老婆说,要发财了呀。老婆听完,脱口而出,你这不就是外包公司么!我的发财梦碎了呀,金镶玉变成了巧克力。

2024-08-31 18:22:19 165

原创 MyBatis 中的 9 种设计模式及其代码示例

定义创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

2024-07-18 21:30:00 715

原创 代码指导“Kimi”比“文心一言”香

kimi在代码、图表、人格方便,体验优于“文心”

2024-07-16 21:00:00 607

原创 探索HTML5的设计原则:引领Web开发的未来方向

综上所述,HTML5的设计原则体现了对用户体验、内容可访问性、跨平台兼容性以及未来可扩展性的全面考量。这些原则不仅推动了Web技术的不断进步,也为Web开发者提供了更加丰富和强大的工具集。随着HTML5技术的不断成熟和普及,我们有理由相信,Web应用将变得更加智能、高效和人性化,为用户带来前所未有的体验。作为Web开发者,我们应积极拥抱HTML5及其设计原则,不断探索和创新,共同推动Web技术的未来发展。

2024-07-09 22:15:00 779

原创 深入解析CSS中的!important规则:优先级与最佳实践

在实际工程中,!important的使用场景通常出现在需要确保某个样式规则具有最高优先级,以覆盖其他可能冲突的样式规则

2024-07-09 20:30:00 1014

原创 小公司全栈是归宿吗?

路由组件(如 Vue Router):用于构建单页面应用程序(SPA)的页面导航。状态管理组件(如 Vuex):用于在 Vue 应用程序中管理组件的状态。表单组件:用于创建表单元素,如输入框、复选框、单选框等。布局组件:如容器、网格、布局面板等,用于构建页面布局。过渡和动画组件:提供过渡效果和动画效果,增强用户体验。

2024-06-26 21:00:00 1792 1

原创 组合式api和选项式api该怎么选

选项式API:基于组件选项对象的设计方式,适用于小型到中型应用。其优势在于简单明了和易于上手。组合式API:基于函数的设计方式,更适合大型应用和复杂组件。它提高了代码的可读性、可维护性和复用性。在Vue 3中,虽然引入了组合式API,但Vue仍然支持选项式API,开发者可以根据项目需求和个人偏好灵活选择。

2024-06-26 21:00:00 980

原创 draw.io使用心得

例如,在绘制复杂的图形时,可能需要花费一些时间来熟悉和掌握各种功能和操作。此外,虽然draw.io提供了大量的模板和符号库,但有时仍然难以满足一些特殊需求,这时就需要用户具备一定的绘图和设计能力。总的来说,draw.io是一款非常优秀的在线绘图工具,无论是对于专业人士还是普通用户来说,都是值得尝试和使用的。通过不断的学习和实践,我相信我会更好地利用draw.io来绘制出更加专业和美观的图形。draw.io是一款功能强大的在线绘图工具,无论是对于专业人士还是普通用户,都能提供优秀的绘图体验。

2024-04-22 18:25:02 604

原创 DDD:领域驱动设计的深度解析

DDD作为一种以领域为核心的软件开发方法,为现代企业的软件开发提供了有力的支持。通过深入理解DDD的核心思想和实践方法,并在实际项目中加以应用,我们可以设计出更符合业务需求的软件系统,提高软件的质量和可维护性。同时,DDD也强调了与领域专家的紧密合作,有助于促进业务与技术之间的融合,推动企业的数字化转型。

2024-04-22 18:23:22 848

原创 深入解析Spring与Spring Boot的核心区别

它集成了大量的Spring生态系统组件,包括Spring MVC、Spring Data、Spring Security等,使得开发人员可以更加便捷地使用这些组件来构建Web应用、数据访问层和安全控制等功能。它基于Spring 4.0设计,不仅继承了Spring框架原有的优秀特性,还通过引入自动配置、约定优于配置等理念,进一步简化了Spring应用的开发流程。Spring Boot提供了大量的默认配置和起步依赖,使得开发人员可以快速构建和启动Spring应用,无需再手动配置繁琐的细节。

2024-04-11 17:44:41 419

原创 Web3:下一代互联网的崛起与革命性展望

随着科技的飞速发展,互联网正在经历一场前所未有的变革。Web3,作为互联网的下一代,正以其独特的魅力和潜力,引领着这场革命性的浪潮。本文旨在深入探讨Web3的概念、特点以及对未来的展望,为读者呈现一个全面而深入的Web3世界。

2024-04-11 17:43:39 1799

原创 系统设计之订单系统中如何防止商品超卖

在实际压测中,你可能需要使用专门的压测工具(如Apache JMeter、Gatling等),这些工具可以提供更精细的控制、更详细的统计和报告功能。综上所述,防止商品超卖需要综合运用多种策略和技术手段,从数据同步、锁机制、预警机制、限购策略等多个方面入手,确保订单系统的稳定性和准确性。当然,这个示例非常基础,并且在生产环境中你可能需要更复杂的策略,比如使用分布式锁、消息队列、缓存等来提高性能和可靠性。当然这只是简答的一套流程,具体到我们的应用系统中,还是要借助框架来写这些代码,不然就太丑了。

2024-04-08 18:15:37 1346

原创 为什么说基于贫血模型的MVC架构违背OOP

我们大部分的业务开发都是MVC架构的,但是我们平时使用的基于贫血模型的MVC架构它对吗?为了搞清楚这个问题,我们先来理清楚几个概念。

2024-04-08 18:13:41 837

原创 计算机视觉入门

计算机视觉,作为人工智能的一个重要分支,旨在通过计算机模拟人类的视觉系统,使机器能够识别、理解并处理图像和视频中的信息。随着深度学习技术的迅猛发展,计算机视觉在各个领域的应用也越来越广泛。本文将带领读者初步了解计算机视觉的基本概念、主要技术和应用领域,为入门者提供一个清晰的起点。

2024-04-03 13:02:56 736

原创 WebKit结构简介

WebKit是一个开源的浏览器引擎,它负责在网页浏览器中渲染网页内容。作为现代浏览器的核心组件之一,WebKit以其高效、稳定和灵活的特性,在浏览器市场中占据了重要地位。本文将简要介绍WebKit的结构和工作原理。

2024-04-03 13:02:44 543

原创 机器学习:概念、步骤、分类与实践

在机器学习中,我们通常将数据集分为训练集和测试集,训练集用于训练模型,测试集用于评估模型的性能。本文将介绍机器学习的基本概念、步骤、分类以及实践应用,帮助读者更好地理解和应用机器学习技术。通过掌握机器学习的基本概念、步骤、分类和实践应用,我们可以更好地利用机器学习技术解决实际问题,推动人工智能技术的发展和应用。机器学习的实践应用广泛,包括图像识别、语音识别、自然语言处理、推荐系统等领域。机器学习的基本步骤包括数据收集、数据预处理、特征提取、模型选择、模型训练、模型评估以及模型应用等。

2024-04-01 12:05:01 928

原创 设计原则之多用组合少用继承

在面向对象的设计中,通常推荐使用组合和接口来实现代码的复用和扩展性,而不是过度依赖继承。(继承):如果子类确实是父类的一种特殊类型,即子类与父类之间存在一种“是一个”的关系,那么使用继承是合适的。:如果你想要复用某个对象的功能,而不是整个类的行为,或者这些功能在不同的上下文中可以有不同的实现,那么组合更合适。(组合):如果一个类包含另一个类的对象作为它的成员,即存在一种“有一个”的关系,那么使用组合是更合适的。:组合是动态的,你可以在运行时更改对象的组合方式,从而改变系统的行为。

2024-04-01 12:04:45 1210 1

原创 设计模式之基于接口而非实现的设计原则

首先,基于接口的设计原则有助于实现软件的可扩展性。当软件需要与外部系统或组件进行交互时,通过定义明确的接口,可以使得软件能够更容易地集成新的系统或组件,而无需修改原有的代码。通过定义统一的接口标准,可以使得不同的系统或组件能够以一种一致的方式进行交互,从而实现跨平台、跨语言的互操作性。总之,基于接口而非实现的设计原则是一种重要的软件设计思想,它有助于提高软件的可扩展性、可维护性和灵活性。基于接口而非实现的设计原则是一种重要的软件设计原则,它强调在设计和开发软件时,应该更多地关注接口而非具体的实现细节。

2024-03-28 20:45:54 1101

原创 node.js常用命令

Node.js 提供了许多常用的命令行工具,这些工具对于开发、测试、部署和管理 Node.js 应用程序非常有用。这些只是 Node.js 生态系统中常用命令和工具的一部分。(Node Package Manager):Node.js 的包管理工具,用于安装、更新、删除和管理项目的依赖。(Node Version Manager):用于在同一台机器上安装和管理多个版本的 Node.js。:一个用于监视应用中的任何文件更改并自动重启服务器的实用程序。或全局安装的包中的命令。它不需要全局安装任何包即可使用。

2024-03-28 20:44:14 906

原创 接口VS抽象类,我该用哪个?

如果你需要定义一组方法的规范,并希望类可以实现多个这样的规范,那么使用接口。抽象类通常用于表示具有一些共同特性的类的层次结构,它的主要目的是为了方便子类的继承和实现。通过继承抽象类,子类可以继承抽象类中的属性和方法,同时也可以实现抽象类中的抽象方法。接口可以被看作是一种契约,它规定了实现该接口的类必须提供这些方法的实现。在Java中,接口(Interface)和抽象类(Abstract Class)都是实现多态性的重要工具,但它们的使用场景和目的有所不同。

2024-03-19 15:50:15 552 1

原创 机器学习是什么

与传统的自然语言处理方式不同,ChatGPT并不依赖数据库或逻辑推理,而是采用机器学习的方式,通过大量的数据进行训练,使其具备从数据中学习并自动改进的能力。因此,ChatGPT可以处理更广泛的场景,不仅限于文本对答,还可以与搜索、办公软件等结合,甚至在某些领域如编程和学术教育领域,其功能几乎是通用的。此外,机器学习模型的可解释性也是一个重要的问题,有时我们难以理解模型是如何做出决策的。机器学习,这一词汇在当今的科技领域中可谓炙手可热,其影响深远,不仅改变了科学研究的方式,也推动了社会的快速发展。

2024-03-19 10:55:05 867 1

原创 前端框架的演进之路:从静态网页到现代交互体验的探索

在互联网的初期,网页主要由HTML、CSS和少量的JavaScript组成,这些网页是静态的,没有复杂的交互和动态内容。然而,随着项目规模的扩大和复杂度的增加,原生JavaScript的缺点也逐渐暴露出来,如代码冗余、可维护性差等。此外,随着人工智能和大数据技术的发展,前端框架也将融入更多的智能化和个性化功能,为用户提供更加智能和个性化的体验。随着互联网的快速发展,前端技术也在不断进步,前端框架作为前端开发的重要工具,经历了从简单到复杂、从单一到多元的演变过程。

2024-03-12 14:17:18 710 1

原创 Java基础之继承(对比C++/Python)

我们都知道Java是不支持多继承的,那有没有语言支持多继承呢?他们又是怎么做的呢?

2024-03-12 14:17:02 1036 1

原创 设计模式之编程方法论

介绍一些编程方法论,其 中就包含面向对象(我们可以把它看成一种设计思想)、设计原则、设计模式、编程规范、 重构技巧。

2024-03-08 22:14:48 1724 1

原创 设计模式之如何评价代码的好坏:好的代码千篇一律,坏的代码花样百出

这些也都不是独立的评价标准,有些也是相辅相成的,比如可维护性好其实依赖于它的可读性和可扩展性,其实也就会发现,这个评价标准是比较主观的,能力好的工程师读代码的能力也相对水涨船高,能力弱一点的工程师,对有些特性不熟悉,代码可能看起来就会有些费劲;业务复杂的代码,可能写出来的就是难懂一些,以后我们学到具体的设计模式和设计原则的时候,再具体情况具体分析。评价代码的好坏需要从多个维度进行综合考虑。评价代码的好坏是一个复杂且多维度的任务,涉及代码的可读性、可维护性、性能、安全性等多个方面。

2024-03-08 22:13:14 499 1

原创 设计模式学习第一天:从入门到放弃还是到成神

此外,你还可以阅读《Head First 设计模式》等轻松易懂的书籍,它们通过生动的插图和有趣的案例来帮助你理解设计模式。它描述了在特定环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用,以及它们各自的职责和协作方式。设计模式是在软件开发中常见的问题和解决方案的总结,它们提供了可重用的设计,帮助开发者提高代码的可读性、可维护性和可扩展性。总之,学习设计模式需要付出一定的努力和时间,但只要你坚持不懈地学习和实践,就一定能够掌握它们并提高自己的编程能力。

2024-03-07 07:44:25 381

原创 Java接口:解耦、规范与扩展性的关键

如何用组合+接口替代继承,避免继承导致代码的过度耦合和不必要的父类依赖

2024-02-03 22:33:57 1414 1

原创 Java Stream:让数据处理变得更简单、更高效

Java中的Stream是一种用于处理集合(数组、列表等)和其他数据源的元素序列的抽象。Stream API提供了一种声明性的编程风格,可以方便地对数据进行过滤、映射、聚合等操作。Stream可以理解为一种管道流,它允许你直接指定操作步骤,并在内部隐式地处理数据。与传统的集合操作相比,使用Stream可以更简洁、高效地处理集合。例如,排序、去重、聚合等操作都可以通过Stream方便地完成。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。

2024-02-01 23:10:43 2625 1

原创 Java之继承这把双刃剑

文章还是先介绍继承的基本概念和用法,熟悉的同学可以直接跳到后面看关于继承的思考。Java中的继承:基本概念和用法在面向对象编程(OOP)中,继承是一个非常重要的概念。它允许我们创建一个新的类,继承另一个类的属性和方法,从而避免代码重复,提高代码的复用性。在Java中,继承是通过使用“extends”关键字来实现的。

2024-01-28 22:36:00 1035 1

原创 学习String的一些思考和总结

在匹配的时候,首先调用这个字符串的hashCode()方法得到一个哈希值,然后用这个哈希值来匹配所有的case。此外,需要注意的是,switch对String的支持是一种语法糖,在编译后的字节码文件中都会被还原成原生类型,并在相应位置插入了强制转换代码。通过理解基本概念、掌握主要方法、练习和巩固学习成果以及阅读文档和参考资料,你将能够更好地掌握String类的用法,并提高自己的编程技能。以上是从Java对String的设计中学到的几点经验,这些经验对于我们设计自己的类和库具有重要的指导意义。

2024-01-23 21:06:35 967

原创 聊聊顿感力

对高敏感的人来说,对旁人的过度在乎,对世事的过度紧张,总是会压的人喘不过气来,从而陷入情绪的漩涡中,而顿感力恰恰是缓解这种情况最好的选择。就像《顿感力》一书中所说:顿感力是快速忘却不愉快的能力,是接受失败继续挑战的能力,是坦然面对流言的能力,更是对嫉妒与嘲讽心怀感激的能力。“顿感力”可直译为“迟钝的力量”,即从容面对生活中的挫折和伤痛,坚定地朝着自己的方向前进,也是一种“赢得美好生活的手段和智慧”。总之,提高顿感力需要不断地自我反省、学习和实践,需要持续的努力和耐心。让我们一起成长为一个自由的人。

2024-01-18 20:59:04 631 1

原创 Java编程之乱码

方法遍历所有可能的编码格式,并尝试使用每个编码格式解码给定的数据。如果解码成功,则返回正确的编码格式。乱码是我们编程中,特别是前后端对接时,服务器与数据库之间信息交流时容易遇到的问题,今天我们就来总结一下编码过程中遇到乱码问题的常规解决思路。另一种比较复杂,在错误解析的基础上进行了编码转换。我们可以用下面这个自己写的工具类尝试去还原原始文件的编码格式。再阐述我们的方法之前,我们先对常见的编码进行一个简单的介绍。方法来猜测正确的编码格式,并输出结果。在这个Java版本的程序中,我们使用。

2024-01-14 21:57:50 855 1

原创 Java命名规范规则、手册、工具

Java代码写的好不好,一个很关键的因素就是命名规范,就像我们高考答题一样,先不管答案的正确与否,字迹工整就有个印象分,比如英语作文不会的抄阅读理解,这种小技巧,必须有一个工整的字体作为支撑。而我们在职场,写过的代码千千万,如果没有一个好的命名规范,于自己而言,隔了一个月后,自己都看不懂自己写的代码了,代码的可读性不好。于团队而言,代码评审时,容易被喷。所以我们来看看一些好实践的规范。

2024-01-14 21:32:48 921

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除