
编程思想
文章平均质量分 92
萤火架构
程序员,AI探索者。+V: yinghuojun007
展开
-
什么是正向代理和反向代理?
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替我们完成某些任务。在技术领域,这个概念也被广泛应用,尤其是在计算机网络通信和程序设计中,代理扮演着相当重要的角色,涉及控制访问、安全保护、能力扩展等复杂而强大的方面。原创 2024-03-26 07:57:27 · 685 阅读 · 0 评论 -
Java中各种O(PO,BO,DTO,VO等) 是不是人为增加系统复杂度?
Java中各种O(PO,BO,DTO,VO等) 是不是人为增加系统复杂度?在Java和其他编程语言的开发过程中,经常会用到几个以"O"结尾的缩写,比如PO,BO,DTO,VO等等,O在这里是Object的缩写,不同的O代表了不同的数据类型,很多时候这些O中的属性看起来都是差不多的,干的事情好像也只是一个简单的封装,那么搞出这么多O出来是不是人为增加了系统的复杂度呢?原创 2024-02-23 16:23:37 · 1267 阅读 · 0 评论 -
Redis能保证数据不丢失吗?
说了这么多,让我们做一个总结。如果你的业务对数据的完整性要求非常高,建议开启AOF持久化,并设置合理的fsync策略(如每秒同步一次)。同时,配合使用主从复制和哨兵系统,以确保数据的高可用性和安全性。对于读写性能有极高要求的场景,可以考虑只使用RDB持久化或者RDB与AOF结合的方式(数据完整性要求高,AOF用于故障恢复,RDB用于重启加速)。同时,通过增加从节点和合理分配读写负载,可以进一步提升性能、提高数据安全性。原创 2024-02-23 16:20:43 · 1536 阅读 · 0 评论 -
遍历用for还是foreach?
for循环就像是多功能的瑞士军刀,适合于那些需要精确控制循环过程的场景。你可以自由地选择起点和终点,甚至可以逆向遍历或调整步长。foreach循环则像是专一的榔头,对于简单地遍历集合来说,使用起来既快捷又高效。它让你免去了处理索引的烦恼,让你可以专注于元素本身。编程不仅仅是关于写代码,更是关于选择合适的工具来解决问题。for和foreach就像是你工具箱里的两把锤子,它们各有所长,懂得在不同的情境下选择合适的一把,能让你的编程之路更加顺畅。关注萤火架构,加速技术提升!原创 2024-02-22 16:20:12 · 1074 阅读 · 0 评论 -
SQL中为什么不要使用1=1
1=1”在SQL语句中可能看起来无害,但实际上它是一种不良的编程习惯,可能会导致性能下降。就像在做饭时不会无缘无故地多加调料一样,我们在编写SQL语句时也应该避免添加无意义的条件。每一行代码都应该有它存在的理由,不要让人和数据库浪费时间在不必要的事情上。原创 2024-02-22 16:17:47 · 4885 阅读 · 12 评论 -
高开低走,GraphQL为什么火不起来?
GraphQL,一个API查询语言,它不同于传统的REST API,GraphQL允许客户端按需获取数据。就像你去自助餐厅,你可以自己决定要哪些食物,而不是服务员决定给你什么。这种方式让前端开发者不用依赖后端的接口设计,他们可以自由地获取他们需要的数据结构。服务端需要定义各种数据类型,包括标量类型(基本数据类型)、对象类型(复杂数据类型)、接口类型、联合类型、枚举类型、输入对象类型等。这就像是在自助餐厅中,厨师需要准备各种食材和菜品,以满足顾客的不同需求。原创 2024-02-04 13:39:59 · 3302 阅读 · 0 评论 -
让你的代码运行更快:掌握零拷贝技术
让你的代码运行更快:掌握零拷贝技术。零拷贝是一种高效的数据处理技术,它通过减少数据拷贝和上下文切换,提高了系统的性能。虽然零拷贝有一些限制,但它的优点仍然被广大的开发者所认可和使用,我们想提高应用程序的处理速度和吞吐量时,不妨考虑下零拷贝的技术思路。原创 2024-02-02 13:55:42 · 1180 阅读 · 0 评论 -
十分钟掌握前端获取实时数据的三种主流方式
前端获取实时数据的三种主流方式本文聊聊前端获取实时数据的三种主要方式。想象一下,我们在网上购物时,经常能看到最新的优惠信息弹出,或者在社交媒体上看到朋友的最新动态更新。这些都是因为后端在默默地向我们的页面推送了最新的消息。那么,这背后到底使用了什么样的技术呢?主要有三种方式:轮询(Polling)、网页套接字(WebSocket) 和服务器发送事件(Server-Sent Events, SSE)。下面,我们就来近距离接触一下它们。原创 2024-02-02 13:52:28 · 6520 阅读 · 0 评论 -
前后端分离多年,为何服务端渲染(SSR)重回风口浪尖?
咱们先搞明白个事儿,啥叫服务端渲染?服务端渲染的全称是 Server-Side Rendering,简称SSR。简单说,就是在服务器上把网页生成好,整个的HTML页面生成出来,生成出的页面已经包含了所有必要的数据和结构信息,然后直接发给浏览器进行展现。这和现在流行的前后端分离设计有很大的区别,在前后端分离中,浏览器首先加载到的是一个基本的框架或者说是空壳页面,随后前端通过异步请求后端API获取到数据,然后再动态构建HTML,最后再让浏览器把页面逐渐展现出来。原创 2024-01-22 08:25:02 · 1942 阅读 · 0 评论 -
依赖注入的优缺点与最佳实践
依赖注入,全称Dependency Injection,简称DI。在我们深入探讨之前,先来聊聊“依赖”和“注入”这两个比较术语的词。打个比方,你可以把“依赖”想象成电器设备的外接电线,而“注入”就像是把这根电线插到电源插座里,使用依赖注入就好比是你不需要知道电源插座在哪里,只需要知道有人会在你需要的时候为你插上插座,让电流连通,使设备工作。在软件设计中,“依赖”指的是一个类需要调用的其他类或者服务,而“注入”则是指将这些所需的类或服务传递给需要它们的类的过程。原创 2024-01-12 19:52:53 · 2073 阅读 · 0 评论 -
金额用Long还是BigDecimal?
解读:架构师的好苗子。程序不是能跑起来、不出错就行了,要考虑设计能不能自然体现业务需求,好不好理解、扩展和维护。原创 2024-01-11 19:17:35 · 1267 阅读 · 0 评论 -
面向对象编程的五大原则,你了解吗?
面向对象编程的五大原则,你了解吗?面向对象编程是一种强大而灵活的编程范式,它可以帮助我们更好地组织和管理代码,提高代码的可读性和可维护性,这使得它特别适合用在大型工程项目中。然而,我们也需要注意其可能带来的问题,尤其是在并发和复杂系统中。原创 2024-01-10 12:23:32 · 1278 阅读 · 0 评论 -
编程无需类?探索原型编程的奇妙之旅
想象一下,你有一块黏土,你可以用它塑造一个小猫咪的形状,这个小猫咪就是一个对象。现在,如果你想要更多相似的小猫咪,你可以用这个已经塑造好的小猫咪作为模板,继续塑造更多小猫咪。这就是基于原型编程的核心思想,你不需要先定义黏土的“类别”,而是直接塑造对象,然后复制它就行了。原创 2024-01-09 08:13:53 · 892 阅读 · 0 评论 -
编程的根本大法:牢牢抓住程序的灵魂
逻辑是用来解决实际问题的。我们在接需求写代码的时候,经常谈到业务逻辑这个词,这里的逻辑说的就是要干一件什么样的事,以及做这件事的路径或者流程是什么样的。没有逻辑,就没有办法编写出有意义的程序。在现实程序开发中,逻辑的来源一般是业务需求方、需求分析师或者产品经理。逻辑是程序的核心,它就像一盏智慧之光,照亮了解决问题的道路。逻辑决定了程序能否正确无误地完成任务,如果偏离了逻辑,代码写的再漂亮、程序的结构再优雅、性能如何之好,也都完全没有用。原创 2024-01-09 08:11:20 · 1265 阅读 · 0 评论 -
一文看懂:函数式编程为何这么火?
函数式编程(Functional Programming,简称FP)是一种编程范式,就像你在拼图游戏中只能用特定的块来构建画面,FP要求我们用函数来构建程序的逻辑。这种范式强调将计算过程分解为可复用函数的集合。函数式编程的理论基础是λ演算(lambda),由数学家阿隆佐·邱奇在20世纪30年代引入,这是一套用于研究函数如何定义、如何计算以及如何递归的数学系统。想象一下,λ演算就像是乐高积木的基础板,在这个基础板上,你可以构建任何形式的数据结构和函数,就像你可以用乐高积木构建任何形状的模型一样。原创 2024-01-08 08:35:38 · 1026 阅读 · 0 评论 -
一文搞懂泛型编程
针对int、double等基本数据类型,虚拟机会为每一种类型生成具体的算法程序实例,也就是说针对使用了基本数据类型的泛型代码,用了多少种基本数据类型,就会有多少种实例,这样处理更高效,因为值类型不需要装箱和拆箱。Go中的泛型实例是在编译时展开的,类似C#的泛型实例化结果,对于每个不同的值类型,编译器会生成一个独立的泛型实例,对于引用类型的泛型实例,只需要生成一次,然后在需要时进行复制或传递引用,这样可以节省内存并避免重复的实例化开销。这让代码更加可读、灵活,并增加了类型安全性,减少了运行时的类型错误。原创 2024-01-08 08:32:16 · 1136 阅读 · 0 评论 -
从新手到大师:四大编程范式解锁你的编码力!
命令式编程,就像是我们在给计算机下达命令:“先做这个,再做那个”。它使用一系列的指令来告诉计算机如何操作数据,如何进行流程控制。这种编程范式是最直观的,因为这种工作方式和我们人类处理问题的方式很像。函数式编程就像是在做数学题,你定义了一些函数,每个函数都只关心输入和输出,不会去改变外面的世界。这种范式强调无副作用的函数,避免了状态和可变数据。面向对象编程(OOP)则是一种模拟现实世界的方式。你可以把它想象成在电脑世界里创造出各种“物体”,这些物体有自己的特性(属性)和行为(方法)。原创 2024-01-07 22:45:21 · 1260 阅读 · 0 评论 -
延迟加载:提升性能的隐形利器
延迟加载是一种非常实用的技术,它让我们的程序更加灵活,可以更好地应对用户需求和资源限制。无论是在软件设计、网页开发还是系统架构中,延迟加载都扮演着至关重要的角色。通过掌握这项技术,我们可以让我们的项目在正确的时间,以最高效的方式,使用恰到好处的资源。原创 2024-01-06 08:38:31 · 988 阅读 · 0 评论 -
从菜鸟到大师:编程必须遵循的三个基本原则
软件开发就像是编织一张网,DRY、KISS和YAGNI这三个原则就是那些帮助我们编织出强韧而灵活网格的工具。它们指导我们避免重复,保持简单,不做无用功。当我们遵循这些原则时,我们能够创造出更加可靠、易于维护且满足用户需求的软件产品。就像做饭时,遵循一些基本原则,我们才能做出既美味又健康的土豆丝夹饼。原创 2024-01-06 08:34:52 · 983 阅读 · 0 评论 -
8000字,程序性能优化的全能手册
性能优化是一个复杂且多面的话题,涉及到代码的编写、系统的架构以及硬件的选择与配置。在追求性能的旅途中,我们需要掌握的知识有很多,既有软件方面的,也有硬件方面的,很多东西我也没有展开详细讲,只是给大家提供了一个引子,遇到问题的时候可以顺着它去寻找。在优化过程中,还需要注意性能的提升并非总是线性的,我们应当找到系统的瓶颈点,有针对性地优化,并在资源成本和性能收益之间做出平衡。优化的最终目的是在有限的资源下,尽可能地提升程序的响应速度和处理能力。关注萤火架构,加速技术提升!原创 2024-01-04 22:13:22 · 1387 阅读 · 0 评论