- 博客(902)
- 收藏
- 关注
原创 【软件开发】自解释代码:让代码更易读
回想一下,你上次查看一段不熟悉的代码时的情景。你是否能够立刻理解它的功能?如果不能,不要担心——包括我在内的许多软件开发者都认为快速掌握陌生代码是一项挑战。if (!} else {乍一看,这段代码似乎问题不大,除了它使用了晦涩的错误消息代码。参数user似乎是一个包含用户信息的对象。代码中有几行用于通过正则表达式检查密码是否符合密码策略。接下来,它检查用户账户是否已经存在。最后,如果所有检查都通过,则对用户的密码进行哈希处理,并调用函数创建新用户(可能会返回某些成功结果)。
2024-12-13 09:55:36 7
原创 【软件开发】我不相信我的代码
常有人说,写代码比读代码容易,但这并不一定非得如此。当编写较长的代码段时,我发现偶尔停下来回顾一下自己的代码,就像是第一次看到它一样,帮助我发现潜在问题。我会问自己一些基本问题:我的函数是否足够简短?它们的命名是否具有描述性?复杂的逻辑是否封装在独立的函数中?我传递的参数是否过多?等等。
2024-12-13 09:53:39 7
原创 【网络安全】代码防火墙
例如,你可以设置防火墙规则,只允许应用服务器和分析服务器访问数据库服务器——或者更具体地说,访问运行数据库服务的端口。通常,代码的访问控制是“全有或全无”——代码要么是公开的,要么是私有的。像这里实现的访问控制系统,可以帮助防止维护问题,比如应用程序中无关部分之间的依赖或耦合,并通过限制未经授权的操作,增强安全性。此外,只要目录结构合理,它不会对现有代码库进行大幅度的改变,防火墙式的模块限制也可以像添加一行代码一样简单。模块可以调用同一层中的其他模块,也可以调用直接下方的模块,但绝不可以调用上层的模块。
2024-12-13 09:53:14 7
原创 一招搞定!用Docker和Cpolar轻松搭建Piwigo远程相册管理系统
本文阐述如何在Linux系统上用Docker技术搭建一个强大的开源相册管理平台——Piwigo,并通过Cpolar内网穿透工具,让你的Web相册随时随地都能被访问。是不是听起来就很酷?别担心,即使你是新手也能轻松搞定!在这个数字化时代,照片是我们珍贵的记忆载体。如何高效、安全地管理和分享这些照片成了一个重要的问题。Piwigo作为一个功能齐全的开源相册管理系统,能够满足你的各种需求。它支持多种上传方式,提供高效的批量操作工具,并且有细致的权限管理设置。
2024-12-12 17:44:07 1027 5
原创 【软件开发 | 重构】避免 if-else 函数式风格
移除了所有嵌套的if语句,解耦了大部分逻辑,使其更易于修改,通过将单独的if-else块放入独立的函数中,使代码更易于理解,最后,作为一个附带的好处,程序的体积减少了三分之一。
2024-12-12 12:34:26 70
原创 如何快速搭建并发布自己的开源问答社区Apache Answer与接入互联网
本文将分享如何使用Apache Answer搭建自己的问答平台,并且借助Cpolar内网穿透技术将其展示给全世界。如果你是个喜欢分享知识、交流思想的人,或者你的团队需要一个高效的知识管理工具,这篇文章值得你一读。通过本文的学习,你将能够轻松地在本地环境中部署 Apache Answer 并实现公网访问,为组织和个人搭建高质量的问答社区提供强大的支持。
2024-12-09 19:22:46 1029 6
原创 本地快速部署Koodo Reader与随时随地阅读电子书完整指南
Koodo Reader是一款免费开源的桌面端电子书阅读器,功能强大且易于使用。它不仅支持多种格式的电子书(如EPUB、PDF等),还内置了笔记、高亮和翻译等功能。如果你是书籍爱好者或经常需要查阅电子文档的人,这款软件绝对值得尝试。
2024-12-05 18:00:41 1555 10
原创 【项目开发】Redis 动态扩容原理
随着业务规模的增长和数据量的激增,Redis 集群的性能需求也会不断提高。容量瓶颈:单节点或现有集群存储容量不足,影响数据写入和服务稳定性。性能瓶颈:现有节点负载过高,导致访问延迟升高或请求超时。横向扩展需求:为支持业务的高可用性和动态变化,系统需要具备快速响应能力,支持扩展而不中断服务。为了解决上述问题,Redis 提供了动态扩容能力。在 Redis 集群模式下,可以通过添加节点和重新分配槽(slots),实现数据的动态均衡,从而实现集群扩容。Redis 集群将数据划分为 16384 个哈希槽。
2024-12-05 09:32:24 223
原创 【数据结构 | C++】逆序对
对于给定的正整数序列a,如果 a[i]>a[j] 且 i < j 则 a[i]与a[j] 为一个逆序对。请问,对于给定的序列,有多少个逆序对?第一行一个正整数n(1
2024-12-04 10:47:37 66
原创 【数据结构 | C++】完全二叉树的层序遍历
一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分隔。在一行中输出该树的层序遍历序列。所有数字都以 1 个空格分隔,行首尾不得有多余空格。给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。
2024-12-04 10:33:39 254 2
原创 【数据结构 | C++】老板的作息表
题目保证所有时间都在一天之内(即从 00:00:00 到 23:59:59);每个区间间隔至少 1 秒;并且任意两个给出的时间区间最多只在一个端点有重合,没有区间重叠的情况。新浪微博上有人发了某老板的作息时间表,表示其每天 4:30 就起床了。但立刻有眼尖的网友问:这时间表不完整啊,早上九点到下午一点干什么了?按照时间顺序列出时间表中没有出现的区间,每个区间占一行,格式与输入相同。输入第一行给出一个正整数 N,为作息表上列出的时间段的个数。本题就请你编写程序,检查任意一张时间表,找出其中没写出来的时间段。
2024-12-04 10:30:39 124
原创 【数据结构 | C++】盲盒包装流水线
每只盒子都有一个编号,小拼姐姐手里有进入流水线的空盒编号顺序表,也有每一批送往货栈的徽章顺序表,这样她其实可以知道每只盒子里装了哪种徽章。有些小朋友收到了盲盒,就想在拆封前问无所不知的小拼姐姐,盒子里的徽章是哪一种。但是因为盲盒总量有 10^5 这么多,小拼姐姐可记不住每只盒子里装的是什么,于是你就被请来写个程序帮小拼姐姐回复这种信息。众所周知,PAT 有 9 枚徽章,分别对应青铜、白银、黄金、白金、钻石、大师、王者、大圣、天神这 9 个段位,只有成绩非常优秀的考生才有资格获得刻有自己名字的徽章。
2024-12-04 10:26:56 246
原创 【数据结构 | C】队列的实现及基本操作
输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d入队,0表示出队。n不超过20000。按顺序输出每次出队的元素,每个元素一行。若某出队操作不合法(如在队列空时出队),则对该操作输出invalid。给定一个初始为空的队列和一系列入队、出队操作,请编写程序输出每次出队的元素。队列的元素值均为整数。
2024-12-04 10:16:59 430
原创 【软件开发】产品开发与方案管理规划:BRD、MRD、PRD
MRD 的核心作用是以市场为中心,明确产品开发或优化的具体要求。它包括以下关键点:明确新产品或功能优化的市场需求。聚焦目标客户及潜在用户的需求与痛点。确保在产品设计过程中,充分体现“倾听顾客的声音”。
2024-12-03 11:23:09 38
原创 语音助手利器:ChatTTS让AI语音更具情感与自然感告别机械音!
今天给大家带来一个超火的AI项目——ChatTTS。这个开源文本转语音(TTS)项目在短短一周内就斩获了20k星,目前GitHub上已经突破21k。接下来讲解如何快速在Windows系统电脑中本地部署ChatTTS,并且通过Cpolar内网穿透工具创建公网地址,随时随地远程访问你的AI语音合成模型。ChatTTS是一个专门为对话场景设计的深度学习文本转语音技术。它不仅可以将文本内容转化为自然流畅的人工语音,还能更好地理解文本的情感、语调和语义。
2024-12-02 19:07:34 694 7
原创 【网络安全 | 漏洞挖掘】从超出范围到取得Mozilla终身高级帐户
1、通过绕过验证码验证,攻击者能够在没有二次验证的情况下更改主邮箱。2、进一步利用基于邮箱域名的权限检查,攻击者使用伪造的员工邮箱 () 来解锁更多的高级功能,如获得 Firefox Relay 的 Premium 账户。原文出处:https://0d-amr.medium.com/from-an-out-of-scope-bug-to-unlocking-lifetime-premium-accounts-in-mozilla-fe96371d814c。
2024-11-29 21:26:30 52 2
原创 【网络安全 | 漏洞挖掘】绕过SAML认证获得管理员面板访问权限
SAML(安全断言标记语言)用于单点登录(SSO)。它是一种功能,允许用户在多个服务之间切换时无需多次登录。例如,如果你已经登录了facebook.com,就不需要再次输入凭据就能使用messenger.com。
2024-11-28 21:34:57 440 2
原创 如何在本地使用Llama3.1大语言模型打造你的私人AI助手
在本地安装Llama3.1大模型,并通过LobeChat可视化UI界面实现公网远程访问。这款强大的开源语言模型不仅支持八种语言,还具备通用知识、数学计算、多语言翻译和工具使用能力。利用LobeChat的可视化用户界面,用户可以直接在网页上与Llama进行交互。接下来,本文将指导你如何进行这一过程。
2024-11-28 20:41:13 1151 6
原创 【软件开发 | 甲方建设】复盘思维:为什么要实施错误更正(COE)机制?
应用程序的可靠性至关重要。服务中断会带来负面的客户体验,从而降低客户信任和业务价值。而缓解甚至拒绝此类问题的一种最佳实践是建立标准的事件后分析机制。这使我们能够在事件发生后分析系统,从而避免类似问题再次发生。通过这些事件,我们还可以更深入地了解系统和流程的运行方式,而这种知识通常会推动更多的改进,不仅限于预防特定问题的重现。这种机制被称为“错误更正(COE)”过程。虽然事件后分析是 COE 过程的一部分,但它与传统的事件复盘有所不同,因为 COE 更注重制定改进措施,而不仅仅是记录失败。
2024-11-27 08:43:22 531
原创 【数据结构 | C++】坐火车
输入格式:第一行给出两个整数n和m,代表城市的个数和铁路的数量。接下来m行,每行给出三个整数ui,vi,ti,表示第i条铁路连通城市ui和vi,花费的时间为ti。在某国,有个n城市,有m条铁路将这座城市连通,第i条铁路连通城市ui和vi,乘坐该条铁路的时间为ti。在城市i购买车票的排队时间为ai,现在小明想知道从城市到城市最少需要多久时间。从城市1乘坐第3条铁路,直接到达城市3,花费 + = 1 + 2 = 3。输出格式:输出一行,包含一个整数,表示从城市1到城市n的最小时间。
2024-11-26 09:03:53 51
原创 【数据结构 | C++】Sins of a Solar EmpireP6
在某个星球上,该星球由n*m个方格组成,每个方格中可能为boss,s_sin(一个人),障碍,道路,小怪。假设s_sin可以秒杀boss和小怪,现在他的任务只需要到达boss所在的位置。如果s_sin想要到达某个方格,但方格中有小怪,那么必须打死小怪,才能到达这个方格。接下来n行,每行m个字符:“.”代表道路 , “a”代表boss , “r”代表s_sin ,“#”代表障碍,“x”代表小怪。输出格式: 如果s_sin能到达boss位置则输出所需的最少时间。计算s_sin到达boss位置至少需要多少时间。
2024-11-26 08:59:04 73
原创 Android手机秒变高效生产力工具,轻松运行MariaDB数据库
Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身Linux。MariaDB是MySQL关系数据库管理系统的一个复刻,由社区开发,有商业支持,旨在继续保持在 GNU GPL 下开源。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
2024-11-25 21:56:31 1408 6
原创 【软件开发】如何解决缓存与数据库一致性问题?
1、想要提高应用的性能,可以引入「缓存」来解决2、引入缓存后,需要考虑缓存和数据库一致性问题,可选的方案有:「更新数据库 + 更新缓存」、「更新数据库 + 删除缓存」3、更新数据库 + 更新缓存方案,在「并发」场景下无法保证缓存和数据一致性,且存在「缓存资源浪费」和「机器性能浪费」的情况发生4、在更新数据库 + 删除缓存的方案中,「先删除缓存,再更新数据库」在「并发」场景下依旧有数据不一致问题,解决方案是「延迟双删」,但这个延迟时间很难评估,所以推荐用「先更新数据库,再删除缓存」的方案。
2024-11-24 17:22:48 460 2
原创 【软件开发】支付架构与逻辑
支付架构与逻辑在现代商业交易中扮演着至关重要的角色。支付架构的优化可以显著提升交易速度,减少支付过程中的延迟和故障。高效的支付逻辑能够确保交易数据在各个环节之间快速、准确地传递和处理,从而缩短交易时间,提高客户满意度。
2024-11-23 11:12:58 484 1
原创 【MySQL】为什么更新视图时报错?
这些操作会聚合或过滤数据,使得更新视图的单条记录时无法准确对应到基础表。数据库无法确定如何将更新操作转换为基础表的更新。
2024-11-23 10:31:33 1371
原创 【软件开发 | 架构革命】支付宝背后的故事
但这一年也是他和团队都“忍辱负重”的一年,上半年,因为频繁不断的可用率问题,他们做稳定性的团队也在频繁遭受打击,士气不振,不少同学选择了离开,内外的质疑声也接连不断,那几个月,空气里都仿佛写满了“难熬”二字。三来,既然要革命,那目光必须放得更加长远,不能只是为了解决今年或明年的问题,至少也要做未来三年的规划。”蒋涛说,这个频率是一般项目开发的好几倍,但即便如此,直到双11之前半个月,整套系统才算部署完成,小错仍然不断,不过,随着越来越多的小问题和被发现和修正,他终于感到,“心里总算慢慢有点底气了”。
2024-11-22 21:25:09 459
原创 【软件开发 | 甲方建设】业务系统有多复杂?
过去一整年我都一直在思考「业务系统复杂性」这个问题。其实对这个问题,从我开始工作就有不断地思考,不过这些思考大多在读完一两本软件工程或者软件架构的书之后就戛然而止。因为书中那些高度抽象的概念以及似是而非的论点,总是让人觉得这个东西是玄学,好像说了什么,又好像什么都没说,你不知道它说得对不对,好像有道理但又好像脱离实际。我依然非常清晰地记得去年的某个时候,Leader 曾跟我们谈过一次话:我担忧的是,我们团队规模的扩张并不是因为用户规模或营收规模的增长,仅仅是因为我们有越来越多的事情要做导致人手紧缺。
2024-11-22 20:53:09 458
原创 【网站开发】加快网站速度:修复 JavaScript 性能
功能激活是指将 JavaScript 功能绑定到服务器渲染的 HTML 上,使其在客户端交互。常见框架(如 Next.js)默认使用功能激活技术。功能激活带来的性能挑战文档体积增加:某些框架将状态序列化为 HTML 中的 JSON,导致初始负载膨胀。交互延迟:页面可见但无法交互的情况可能令人沮丧,通常称为“功能激活的谷底”。重复构建:一些 SSR 框架会在客户端功能激活时重复构建 DOM,浪费资源。
2024-11-22 20:09:30 468
原创 【项目开发 | 分布式系统】Redis 分布式锁真的安全吗?
加锁时,先设置一个过期时间,然后我们开启一个「守护线程」,定时去检测这个锁的失效时间,如果锁快要过期了,操作共享资源还未完成,那么就自动对锁进行「续期」,重新设置过期时间。与分布式锁相对应的是「单机锁」,我们在写多线程程序时,避免同时操作一个共享变量产生数据问题,通常会使用一把锁来「互斥」,以保证共享变量的正确性,其使用范围是在「同一个进程」中。
2024-11-22 19:05:18 454
原创 【项目开发】如何解决跨源资源共享(CORS)?
跨源资源共享标准新增了一组 HTTP 标头字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源。另外,规范要求,对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨源请求。服务器确认允许之后,才发起实际的 HTTP 请求。
2024-11-21 22:58:55 464 1
原创 【软件开发】如何理解异地多活?
1、一个好的软件架构,应该遵循高性能、高可用、易扩展 3 大原则,其中「高可用」在系统规模变得越来越大时,变得尤为重要2、系统发生故障并不可怕,能以「最快」的速度恢复,才是高可用追求的目标,异地多活是实现高可用的有效手段3、提升高可用的核心是「冗余」,备份、主从副本、同城灾备、同城双活、两地三中心、异地双活,异地多活都是在做冗余4、同城灾备分为「冷备」和「热备」,冷备只备份数据,不提供服务,热备实时同步数据,并做好随时切换的准备。
2024-11-21 21:53:35 523
原创 【网络安全】YApi远程代码执行漏洞
YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务,帮助开发者轻松创建、发布、维护 API。YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。
2024-11-21 20:50:41 470
原创 【项目开发 | 甲方建设】YApi、sonar、覆盖率
在现代软件项目开发中,效率与质量是甲方(客户)最关心的问题。为满足这些需求,开发团队通常会使用各种工具来保障项目的功能实现、代码质量和测试覆盖率。这篇文章将浅要解析 YApi、Sonar 和 覆盖率三个术语。YApi 是一款高效、易用的 API 管理平台,专注于 接口设计、调试和文档管理。它通过直观的界面帮助开发团队和测试团队轻松协作,使接口开发更加高效和规范。Sonar(全称 SonarQube)是一款用于 代码质量和安全性分析 的平台。
2024-11-21 20:36:37 462
原创 轻松实现文件远程传输:使用PicoShare搭建轻量级文件共享系统
今天我们要介绍如何在Linux系统上本地部署PicoShare轻量级文件共享系统,并结合Cpolar内网穿透技术实现公网环境下的远程文件传输。这样一来,你可以在任何地方上传和下载文件到局域网内的文件共享系统中,轻松高效地管理你的文件。让我们一起来看看具体操作步骤吧!什么是PicoShare?PicoShare是一个由 Go 开发的轻量级开源共享文件系统。它没有文件限制,允许用户在线上传任何大小和类型的文件。PicoShare 支持快速下载,并且不会调整文件大小或重新编码文件。
2024-11-21 18:35:57 2421 7
原创 【数据结构 | C++】朋友圈
某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出,如果A和B是朋友,且B和C是朋友,则A和C也是朋友。请编写程序计算最大朋友圈中有多少人。输入的第一行包含两个正整数N(≤30000)和M(≤1000),分别代表学校的学生总数和俱乐部的个数。第i个俱乐部的人数Mi(空格)学生1(空格)学生2 …输出给出一个整数,表示在最大朋友圈中有多少人。
2024-11-20 23:10:07 627 1
原创 【数据结构 | C++】推断学生所属学校的人数
第一行是一个在[2, 1000]范围的整数N,接下来N行,每行是一个在现场的学生的姓名,每个姓名仅由字母组成,长度不超过30。某个比赛现场有来自不同学校的N名学生,给出M对“两人同属一所学校”的关系, 请推断学校数量,并找出人数最多的学校。在一行内分别输出学校的数量以及人数最多学校的人数,用一个空格分隔。然后是M行,每行是用空格间隔的两个人名,表示同属一所学校。接下来一行是非负整数M,表示有M对关系;
2024-11-20 23:08:54 675
原创 【数据结构 | C++】并查操作
当 zi=2 时,输出xi与yi 是否在同一集合内,是的输出 Y;对于每一个zi=2的操作,都有一行输出,每行包含一个大写字母,为Y或者N。第一行包含两个整数 N,M ,表示共有 N 个元素和 M 个操作。接下来 M 行,每行包含三个整数 zi,xi,yi。当 zi=1 时,将 xi与yi所在的集合合并。现在有一个并查集,你需要完成合并和查询操作。
2024-11-20 23:07:16 784
原创 【数据结构 | C++】部落
在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。
2024-11-20 23:05:14 726
原创 【网络安全 | Java代码审计】利用 Spring Boot Actuators 漏洞
Spring Boot 框架内置了多个用于监控和管理应用程序的Actuator功能。这些功能可以帮助开发者执行审计、健康检查以及收集系统指标。然而,如果配置不当,Actuators 端点可能成为攻击者利用的“后门”,从而暴露敏感信息或使应用程序处于攻击者控制之下。
2024-11-20 22:46:42 481
原创 【网络安全 | Java代码审计】Actuators导致RCE
Jolokia 是一种基于 JMX(Java Management Extensions)的代理工具,它为 JMX 提供了 RESTful 的接口,便于管理和监控。但当 Jolokia 与 Spring Boot Actuators 配合使用时,如果存在不安全的配置,攻击者可通过漏洞实现远程代码执行。
2024-11-20 22:13:55 476
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人