
代码匠心录
文章平均质量分 72
(代码匠心录) 专栏是一个专注于工作、学习和日常生活中常用代码分享的地方。无论你是初学者还是经验丰富的开发者,这里都为你提供了一系列实用的代码片段,涵盖了工作中的常见问题、学习中的技巧,以及日常生活中的创意解决方案。
代码匠心印记
工作场景分享: 解决实际工作中遇到的问题,提供实用的代码示例,提高工作效率。
学习技巧: 分享学习过程中的心得体会,以及一些提高编程技能的小技巧。
日常生活代码: 在日常生活中,代码不仅仅是解决问题的工具,还可以带来更多的创意和乐趣。这里分享一些有趣的、实用的日常代码。
展开
-
管道模式与过滤器模式区别
首先,管道模式(Pipeline Pattern)是一种责任链模式(Chain of Responsibility Pattern)的变体,它将数据传递到一个加工处理序列中,每个步骤对数据进行加工处理后,再传递到下一个步骤进行进一步处理,直到全部步骤处理完毕。这种模式主要用于将复杂的进程分解成多个独立的子任务,像流水线一样去执行。管道模式关注的是数据的顺序处理和逐步转换,确保数据按照预定义的步骤依次通过每个处理阶段。原创 2024-04-12 11:24:11 · 722 阅读 · 2 评论 -
复杂度来源:高可用2
参考维基百科,先来看看高可用的定义。系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。这个定义的关键在于“”,但恰好难点也在“无中断”上面,因为无论是单个硬件还是单个软件,都不可能做到无中断,硬件会出故障,软件会有 bug;硬件会逐渐老化,软件会越来越复杂和庞大……除了硬件和软件本质上无法做到“无中断”,外部环境导致的不可用更加不可避免、不受控制。例如,断电、水灾、地震,这些事故或者灾难也会导致系统不可用,而且影响程度更加严重,更加难以预测和规避。原创 2024-03-21 11:03:33 · 653 阅读 · 0 评论 -
架构设计-复杂度来源:高性能
对性能孜孜不倦的追求是整个人类技术不断发展的根本驱动力。例如计算机,从电子管计算机到晶体管计算机再到集成电路计算机,运算性能从每秒几次提升到每秒几亿次。但伴随性能越来越高,相应的方法和系统复杂度也是越来越高。现代的计算机 CPU 集成了几亿颗晶体管,逻辑复杂度和制造复杂度相比最初的晶体管计算机,根本不可同日而语。软件系统也存在同样的现象。最近几十年软件系统性能飞速发展,从最初的计算机只能进行简单的科学计算,到现在 Google 能够支撑每秒几万次的搜索。原创 2024-03-15 22:40:09 · 1050 阅读 · 0 评论 -
架构设计的核心目的与意义
以史为鉴,对我们了解架构设计的目的很有帮助。谈到架构设计,相信每个技术人员都是耳熟能详,但如果深入探讨一下,“为何要做架构设计?”或者“架构设计目的是什么?”类似的问题,大部分人可能从来没有思考过,或者即使有思考,也没有太明确可信的答案。原创 2024-03-15 17:26:41 · 1417 阅读 · 0 评论 -
架构设计的历史背景
理解了架构的有关概念和定义之后,今天,我会给你讲讲架构设计的历史背景。我认为,如果想要深入理解一个事物的本质,最好的方式就是去追寻这个事物出现的历史背景和推动因素。我们先来简单梳理一下软件开发进化的历史,探索一下软件架构出现的历史背景。原创 2024-03-14 22:39:01 · 922 阅读 · 0 评论 -
谈谈你对Java平台的理解?
从你接触 Java 开发到现在,你对 Java 最直观的印象是什么呢?是它宣传的 “Write once, run anywhere”,还是目前看已经有些过于形式主义的语法呢?你对于 Java 平台到底了解到什么程度?请你先停下来总结思考一下。今天我要问你的问题是,谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话正确吗?原创 2024-03-14 22:34:58 · 917 阅读 · 0 评论 -
java通用Excel解析工具类
以下是一个简化的通用Excel解析工具类的示例。原创 2024-03-13 22:29:55 · 1231 阅读 · 0 评论 -
互联网常见专业词汇汇总
是觉得备用数据中心只做备份太浪费了,所以让主备两个数据中心都同时承担用户的业务,此时,主备两个数据中心互为备份,并且进行实时备份。一般来说,主数据中心的负载可能会多一些,比如分担60~70%的业务,备数据中心只分担40%~30%的业务。公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)(转化量/点击量)*100%。原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器。原创 2024-03-12 22:55:13 · 569 阅读 · 0 评论 -
Bitmap实现原理&应用场景
用内存中连续的二进制位(bit),用0或1标识数据是否存在。长度为10的bitmap,1,2,3,4 在bitmap中存在。原创 2024-03-12 22:52:46 · 1369 阅读 · 0 评论 -
分布式架构-技术点概括
在上图中,当DB负载过高,我需要为Service机器加缓存时,就遇到一个基本问题:如果使用local的内存做缓存,则其他Service机器就没办法共用此缓存。在上图中,当我要存储客户端上传的图片文件时,就会遇到另一个基本问题:我不能把图片存在每个Tomcat的本地文件系统里面,这样的话,其他机器就没办法访问了。常用的消息中间件,比如老一辈的ActiveMQ/RabbitMQ, 新一点的,阿里的RocketMQ,LinkedIn的Kafka等。对上层屏蔽分库分表,sql的执行,像是在单库一样。原创 2024-03-11 22:53:52 · 1280 阅读 · 0 评论 -
常用的加密算法
名为.MD5 的文本或者一行字符,这行字符就是就是把整个文件当作原数据通过 MD5 计算后的值,我们下载文件后,可以用检查文件 MD5 信息的软件对下载到的文件在进行一次计算。RSA 加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广。输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下。非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。MD5 常常作为文件的签名出现,我们在下载文件的时候,常常会看到文件页面上附带一个扩展。原创 2024-03-10 08:59:38 · 443 阅读 · 0 评论 -
常见3大web漏洞
举一个简单的例子,select * from user where id=100 ,表示查询id为100的用户信息,如果id=100变为 id=100 or 2=2,sql将变为:select * from user where id=100 or 2=2,将把所有user表的信息查询出来,这就是典型的sql注入。想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的身份登陆,做一些破坏。原创 2024-03-10 08:29:56 · 852 阅读 · 0 评论 -
GraalVM 虚拟机-概述
Graal 编译器以及由此诞生的GraalVM,虽然目前还处在实验阶段,但是也是 Java 程序员们必须要了解的,因为他未来极有可能替代 HotSpot,成为 Java生态的下一代技术基础。原创 2024-03-05 23:28:50 · 1502 阅读 · 0 评论 -
提高Java应用性能的利器:AOT编译技术
与传统的JIT(Just-In-Time)编译方式不同,AOT编译技术可以在应用程序部署或运行之前,将Java代码转换为目标计算机体系结构和操作系统的本地机器码,从而直接由处理器执行,避免了JVM的解释和翻译过程。通过将Java代码预先编译为本地机器码,绕过JVM的解释和翻译过程,可以显著提高应用程序的性能和响应速度,为用户提供更加优质的使用体验。通过AOT编译,你可以绕过JVM的解释和翻译过程,直接将Java代码编译成本地机器码,从而获得更高的性能和更快的启动时间。,然后使用GraalVM的。原创 2024-03-05 22:54:00 · 1702 阅读 · 0 评论 -
http-499状态码
状态码499的出现可能与用户的操作有关,比如用户在请求处理过程中关闭了浏览器或者导航到了其他页面。在这种情况下,虽然服务器已经成功处理了请求,但是无法将响应返回给客户端。因此,状态码499被视为一种提示,提醒开发者用户可能存在提前离开页面的情况,有助于改善用户体验。这个状态码是由Nginx服务器定义的,当客户端在等待服务器响应时关闭连接,Nginx会将此情况记录为499状态码。状态码499是非标准的HTTP状态码,通常由服务器返回,原创 2024-03-05 10:59:54 · 11928 阅读 · 0 评论 -
可变对象与不可变对象的区别是什么?
可变对象与不可变对象的区别是什么?原创 2024-03-05 10:46:48 · 385 阅读 · 0 评论 -
Markdown文章标题提取(Java版本)
在处理 Markdown 文章时,有时候我们需要提取文章中的标题,以便生成目录或进行其他处理。本文将介绍如何通过编程的方式提取 Markdown 文章的标题,包括使用正则表达式和简单的字符串处理。原创 2023-11-12 08:57:53 · 674 阅读 · 0 评论