自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黄旺鑫

在本博客中,我会分享自己在开发过程中遇到的各种问题及其解决方案,发布涉及Java、Python脚本语言的实用技术教程。无论你是想提高编程技能,还是寻找具体问题的解决方案,这里都有你需要的答案。关注我的博客,一起探索开发世界中的各种技巧与实践!

  • 博客(84)
  • 资源 (8)
  • 收藏
  • 关注

原创 数据库存储状态字段,到底该用 0/1 还是 ACTIVE / DISABLED?

数字状态是给机器看的,字符串状态是给人看的。商用系统,优先服务人。如果你现在正在设计表结构,或者正准备重构一个老系统,这是一个非常值得现在就做对的选择。

2025-12-20 09:21:32 1320

原创 系统安全设计规范 · 短信风控篇【参考】

短信验证码并不是一个“小功能”。它是一个一旦失控,就会直接造成真实损失的系统入口。在系统设计阶段给予它足够的安全权重,不是过度设计,而是对真实运行环境的尊重。

2025-12-17 21:26:40 861

原创 Part 12|模块要不要拆?新手也能用的一套判断方法

模块不是越多越好能对结果负责的,才值得独立拆错了,比不拆更麻烦等系统真的复杂了,再拆也不迟。

2025-12-17 21:14:45 286

原创 Part 11|模块划分并非越细越好,关键在于明确职责边界

回头看,我之所以会从“尽量多拆模块”转向“模块要能各自负责”,并不是理念变了。模块存在的意义,不是为了让结构看起来更高级,而是为了在系统运行时,清楚地知道:这类问题,应该由谁来兜底。当一个模块无法对任何一类结果负责时,它往往只是在系统里制造新的不确定性。而这种不确定性,才是长期维护里最贵的成本。

2025-12-16 21:02:23 233

原创 Part 10|我给这套系统划的第一个边界

我给这套系统划的第一条“不能越过”的边界,订单不能依赖商品的内部实现,商品也不能被订单流程牵着走。这条边界看起来很普通,但如果一开始没立住,后面整个系统都会被它反复拉扯。也正是从这一刻开始,系统设计里的边界,往往不是画出来的,而是在具体场景里,被逼着做出来的。

2025-12-16 20:40:55 302

原创 Part 09|我为什么选择从「业务边界」开始拆系统

回头看,我之所以选择从「业务边界」开始拆系统,并不是因为这是某种“最佳实践”。而是因为在经历了足够多混乱之后,如果一开始没想清楚谁该负责什么,后面不管用什么技术,都会很痛苦。从业务边界下第一刀,不是为了拆得多漂亮,而是为了给后面的所有设计,一个不容易失控的起点。

2025-12-15 18:09:45 727

原创 Part 08|当我真正开始设计系统时,我首先关心的是什么

回头看,真正让我进入“系统设计状态”的,并不是某个技术点,也不是某张架构图。而是当我不再纠结“要不要做”,如果这是我要长期负责的一套系统,我希望它在结构上具备什么样的特征。

2025-12-15 07:34:39 280

原创 Part 07|为什么我开始更在意“掌控感”,而不是功能多少

我开始更在意“掌控感”,并不是否定功能的价值。而是当时间维度被拉长之后,我越来越清楚一件事:功能决定系统能做什么,但掌控感决定我敢不敢一直用它。也正是在这个阶段,我对系统的期待,从“看起来很全”,慢慢变成了“我能一直接得住”。如果你回头看前面几篇,会发现这并不是某一个瞬间的转变,而是一连串现实选择叠加之后,自然发生的结果。

2025-12-14 15:34:21 281

原创 Part 06|当我开始考虑长期交付,选择标准发生了变化

当我开始认真考虑长期交付时,我发现自己并不是在追求一个“最优解”。下次再遇到类似问题时不用把同样的账再算一遍不用反复消耗同一类判断也正是在这个过程中,我的选择标准一点点发生了变化。后面的很多决定,并不是突然想明白了什么,而是这些变化慢慢推着我往前走的结果。

2025-12-14 13:47:55 417

原创 Part 05|当二次开发变成常态,我开始重新算一笔账

当二次开发只是偶尔发生时,它是一种非常现实的选择。但当它变成一种常态,我发现自己已经无法只用“这次能不能做完”来判断了。重新算这笔账,并不是为了否定过去的选择,如果继续这样走下去,我真正要付出的是什么。也正是在这个阶段,我才慢慢意识到,有些决定,不是技术问题,而是关于工作方式和长期方向的选择。

2025-12-14 09:10:08 265

原创 Part 04|二次开发的真实成本,被很多人低估了

回头看,二次开发并不是一件“不该做的事”。很多时候,它依然是最现实、最有效的选择。二次开发的成本,往往被理解成“改代码的成本”,而忽略了理解系统、适应结构、规避风险所消耗的精力。正是这些被忽略的部分,在一次又一次项目中,慢慢累积成了我无法忽视的负担。也正因为如此,在长期来看,哪种方式更值得投入。

2025-12-14 09:01:54 328

原创 为什么我一开始就对“短信验证码”保持高度警惕

我对短信验证码的警惕,并不是来自安全书籍、行业文章,或者所谓的“最佳实践”。而是来自几次真实发生过的事故。在之前的公司里,短信验证码接口曾经被攻击过几次。攻击方式并不复杂,没有入侵服务器,也没有利用系统漏洞,只是对一个进行了持续调用。一整夜。第二天看到短信服务商账单的时候,损失已经是。

2025-12-13 18:54:44 1079

原创 Part 03|当客户真的要交付时,我最先考虑的不是技术

当事情真正走到“要交付”的那一步时,我才意识到:技术选型从来不是第一步。第一步,是先想清楚你愿意为哪些结果负责。也正是从这个阶段开始,我才慢慢把注意力从“怎么把功能做出来”,转向了系统该怎么设计。后面很多看起来像“技术选择”的决定,其实都是在这个判断之下,自然做出来的。

2025-12-13 17:46:42 349

原创 Part 02|我为什么开始自己做一套商城系统

回头看,这个决定并没有什么戏剧性。它并不是源于技术冲动,也不是某种宏大的规划,而是在授权、成本、二次开发和长期交付之间反复权衡之后,逐渐浮现出来的一条现实路径。到这一步,我其实已经不再纠结“该不该自己做”,如果要做,我到底应该做到什么程度。这也是后面所有设计取舍真正开始的地方。

2025-12-13 16:51:33 560

原创 Part 01|在多个项目之后,我开始对“现成商城系统”产生怀疑

这篇文章,并不是为了得出什么结论。它只是记录了一个变化发生的过程:从“现成系统优先”,到开始意识到它在某些场景下的局限。后面的选择,其实正是从这种不安感中一步步发展出来的。下一篇要不要写、写什么,其实并不重要。重要的是,这个怀疑本身,是真实发生过的。

2025-12-13 16:39:12 315

原创 商用项目Swagger(OpenAPI)集成标准规范

Swagger 只提供 Token 输入框。,不是权限系统,也不是业务逻辑的一部分。Swagger 相关配置。

2025-12-12 15:30:37 848

原创 Java后端接口字段命名转换:蛇形与驼峰式自动映射技术

这是,不应该在 DTO/VO 上“手工处理”。在 大项目体量里,。

2025-12-12 14:01:33 530

原创 @Validated分组校验最佳实践

让一个 DTO 能同时用于创建、更新、发布、审核、批量等多个业务场景,避免 DTO 爆炸,提高可维护性,并为风控体系提供输入合法性保障。

2025-12-11 10:54:03 946

原创 @Validated分组校验,用同一个 DTO 处理不同的业务场景

同一个 DTO 在不同业务场景下需要不同的校验规则”如果项目只有简单 CRUD,可以不用。但如果是多端、复杂业务系统,没有分组是做不下去的。

2025-12-11 10:40:59 555

原创 @Valid 和 @Validated 区别,用哪个?

Valid规则原因Controller 入参一律用@Validated统一风格并获得分组校验能力DTO 内部的子对象字段必须用@Valid保证级联校验Service 层 class 上必须标注@Validated启动方法级校验,用于风控、支付、订单关键逻辑分组必须统一管理,如 CreateGroup、UpdateGroup、BatchGroup提升维护性并减少重复注解。

2025-12-11 10:25:06 957

原创 【Python】导出163邮箱的邮件和附件到本地

Python导出163邮箱中的邮件和附件,下载到本地。

2024-09-26 10:52:47 1220 1

原创 【Python】实现微信支付API v3请求签名

python实现微信支付API v3请求签名,解析证书

2024-08-22 09:40:31 973

原创 Python 微信支付【下载电子回单】pdf凭证

Python实现微信支付【下载电子回单】PDF凭证

2024-08-21 17:31:25 1105 1

原创 客户端如何进行HmacSHA256加密

开发了一个短信验证码接口,为了防止被攻击,在接口层面上加了一个签名。签名的算法是使用HmacSHA256加密,Base64编码。加密字符串就以【手机号】+【随机数】的格式举例。客户端有Android、iOS、H5-js、小程序,都需要进行验签。secret秘钥随机生成一个。

2024-04-24 14:16:42 773 4

原创 【Python3脚本】导出个人腾讯企业邮箱的全部邮件并保存成eml

一键导出个人企业邮箱的邮件

2023-04-05 14:12:11 1924 3

原创 OSError: sndfile library not found解决办法 CentOS

解决OSError: sndfile library not found问题

2022-12-13 23:40:09 1127

原创 【接口】接口调用报错,Redirect is not allowed for a preflight request

场景:前端Vue项目请求后端接口,有的接口能够调通,有的接口调不通,并且报错。问题描述前端报跨域问题的错误,调不通。request doesn’t pass access control check: Redirect is not allowed for a preflight request.原因分析:首先,排查后端接口是否收到请求,通过本地调试,接口有收到请求。但在Shiro拦截器中被拦截掉,通过断点排查。发现请求一般会有2次,第一次是OPTIONS,第二次才是GET或POST。

2022-05-15 09:55:55 6002

原创 Scala sbt配置阿里云镜像

背景使用sbt创建的项目,国内下载速度特慢,为了加快速度,需要进行配置镜像。配置方法创建 ~/.sbt/repositories$ vi ~/.sbt/repositoriesrepositories内容[repositories] local aliyun-maven-public: https://maven.aliyun.com/repository/public aliyun-maven-central: https://maven.aliyun.com/repos

2020-10-10 15:18:28 2738

原创 Linux环境安装Anaconda3,并配置Jupyter Notebook远程访问

Anaconda简介Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。Anaconda 安装包可以到 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 下载。安装下载Anaconda3-2020.07-Linux-x86_64.sh包wget https://mirrors.tuna.tsinghua.edu.cn/an

2020-09-30 15:10:06 1152

原创 一键安装Redash(支持Oracle)

今天有位朋友需要安装Redash,并且需要支持Oracle,让我帮忙安装一下。我帮忙安装,使用的是Centos + Docker。思路准备一台服务器,Centos 7安装Docker下载Oracle资源包修改Dockerfile构建支持Oracle的Redash镜像Docker运行Redash相关服务一键安装脚本1、下载Redash资源包2、解压缩到/opt目录下,最终路径为/opt/redash3、打开/opt/redash,4、修改端口号,编辑docker-compose.

2020-07-29 12:23:56 1527 3

原创 解决基于Hadoop3.1.3下 HMaster启动不起来(Hadoop 3.1.3 + HBase 2.2.4 )

背景最近在搭建基于Hadoop 3的分布式框架。在安装完成配置后HBase 2.2.4, HMaster启动不起来,报错内容如下:2020-07-05 00:08:25,250 ERROR [master/hadoop130:16000:becomeActiveMaster] master.HMaster: ***** ABORTING master hadoop130,16000,1593878901091: Unhandled exception. Starting shutdown. *****

2020-07-05 12:35:20 2430 1

原创 Centos 7 一键安装Redash (Centos7 + Docker)

最近一段时间,运营找我们要报表的数据频率越来越高。 我们就使用之前搭建的报表系统CBoard,让运营自己去导。用了一段时间后,运营反馈说导大数据量的时候导不出来,结果发现是服务器超时,经过一翻折腾,最多还是只能导六万多条就报错了。不想通过修改java源码,老大就说再找找其他开源的报表系统。最后找到Redash,因为要进行调研,研究Redash报表系统是否满足我们的要求,就需要进行搭建演示系统...

2020-04-15 13:12:52 2716 5

原创 PHP实现RSA分段加密

文章目录背景Java RSA分段加密PHP实现RSA分段加密校验编写RSA分段加密Java Demo编写RSA分段加密PHP Demo编写Java RSA分段解密Demo编写PHP RSA分段解密DEMO背景对接第三方金融支付系统接口,对方使用的是Java开发的,提供的Demo也是Java语言的。而公司使用的是PHP,所以需要将Demo中的加密转化成PHP实现。Java RSA分段加密...

2019-10-10 19:35:24 3984 3

原创 Linux开发基础环境搭建

基础环境搭建文章目录基础环境搭建服务器配置免密登录,配置公钥连接更换阿里Yum源添加CentOS 7 EPEL仓库编译环境安装Git安装nginx安装Redis安装MySQL安装php服务器配置免密登录,配置公钥连接将本地的公钥复制到服务器$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.100.80更换阿里Yum源更换Ce...

2019-07-25 14:16:50 294

原创 SQL实例学习(一)

文章目录检索记录检索所有行和列筛选行查找满足多个查询条件的行筛选列创建有意义的列名在where子句中引用别名列串联多列的值在select语句里使用条件逻辑限定返回行数随机返回若干行记录查找null值把null值转换为实际值查找匹配项查询结果排序指定顺序返回查询结果多字段排序依据子句排序排序时对null值的处理根据条件逻辑动态调整排序项检索记录检索所有行和列代码# 查询表中所有数据se...

2019-07-22 11:14:56 603

原创 我理解的全栈工程师

什么是全栈工程师?全栈工程师是指,一个能处理数据库、服务器、系统工程和客户端的所有工作的工程师。 根据项目的不同,客户需要的可能是移动栈、Web栈,或者原生应用程序栈。简单说,全栈工程师就是可以独立完成一个产品的人。为什么要成为全栈工程师?能够做出更大的价值。自己可以独立完成一个产品模型,用最快的速度去测试自己的想法。从工作中锻炼发现问题、洞察需求、设计解决方案并开发出初始版本产品...

2019-07-22 11:10:46 724

原创 PHP权限系统使用Laravel-Permission(一)

权限系统设计文章目录权限系统设计创建并配置项目集成Laravel-Permission注意数据库版本集成Laravel Collective HTML Form构建器集成Flash我们开发一个管理后台系统,正常都需要开发一个权限控制列表(Access Control list,简称ACL)。ACL用来授予用户有什么样的权限,比如说,管理员有读取和写入的权限,员工只有读取的权限或者没权限读取。...

2019-07-22 11:06:50 1007

原创 PHP 计算比例,最大公约数

思路使用递归求最大公约数最大公约数的递归:1、若a可以整除b,则最大公约数是b2、如果步骤1不成立,最大公约数便是b与a%b的最大公约数示例:求(140,21)140%21 = 1421%14 = 714%7 = 0返回7实现最大公约数/** * 求最大公约数 Greatest Common Divisor(GCD) * @param $a * @pa...

2019-06-10 11:16:34 1447

原创 用Jekyll搭建博客

Jekyll官网https://jekyllrb.comMac配置jekyll环境安装Jekyll$ sudo gem install jekyll bundler创建生成jekyll默认文件$ jekyll new myblog配置RubyGems镜像加速 RubyGems - Ruby China# 根据网站修改gem sources后,修改Bundler ...

2019-05-14 14:43:22 386

原创 PHP开发笔记

Laravel排序排序效果1, 2, 3, 4, NULL, NULL, NULL.使用负号(-)进行从大到小排序User::query()->orderBy(DB::raw('-`sort`'), 'desc');

2019-02-21 17:38:59 245 1

redash_oracle.zip

一键安装支持Oracle的Redash相关资源和脚本,使用方法可以参考博客https://huangwangxin.blog.csdn.net/article/details/107661030

2020-07-29

iOS 表格Demo

iOS 自己写的表格

2017-03-17

UIScrollView使用自动布局

此Demo是在故事板中的UIScrollView使用AutoLayout实现滚动

2014-12-12

hbase-2.2.4-bin-for-hadoop3.tar.gz

基于Hadoop 3.1.3编译的包。 因官方提供的HBase包是基于Hadoop 2.8.5编译的,无法适用于Hadoop 3

2020-07-05

UIScrollView使用在故事板中使用自动布局实现滚动

UIScrollView使用在故事板中使用自动布局来实现滚动, 这个demo是垂直方向的滚动 相关介绍在 http://blog.csdn.net/h1101723183/article/details/41895479

2014-12-16

UITableViewCell使用自动布局根据内容动态调整高度

UITableViewCell使用自动布局根据内容动态调整高度,动态调整Cell的高度

2015-01-06

使用Storyboard跳转和传值

这个Demo只是简单的使用storyboard的跳转和传值

2014-12-03

UIScrollView在故事板中使用自动布局实现滚动

UIScrollView在故事板中使用自动布局来实现垂直方向的滚动 相关的教程在 http://blog.csdn.net/h1101723183/article/details/41895479

2014-12-16

空空如也

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

TA关注的人

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