java、iOS、Vue
华为云云享专家认证|阿里云开发社区博客专家,定期分享Java、iOS资讯(包括基础知识储备)、小程序开发与运营、阅读与写作。只为你呈现有价值的信息,专注于移动端技术研究领域。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java开发的深入浅出-专栏总目录(持续更新)
文章目录引言I 、 基础概念II、 JVMIII、 案例:学术交流论坛系统的设计与实现see also引言欢迎大家来到#公众号:iOS逆向的《Java开发的深入浅出》专栏本文列出学习大纲,同时这也可以作为大家学习《Java开发的深入浅出》这个专栏的索引。文中的蓝字都是传送门,点击进入即可I 、 基础概念基本概念:【指令、基本术语、命名规范】数据库概论II、 JVMJava虚拟机:内存管理、GC(垃圾回收)、class文件的结构、JIT中比较常见的优化手段III、 案例原创 2021-01-20 14:45:49 · 7351 阅读 · 0 评论 -
Java数组元素的签名ASCII排序:基于递归思想实现
摘要:本文介绍了基于ASCII码的数组元素签名计算方法。针对JSON数据结构,将数组元素分为需ASCII排序(字符串/数字)和不需排序(对象/数组)两类分别处理。文章提供了Java实现代码,通过递归方式处理多维数组和嵌套对象,最终生成规范化的签名串,其中数组元素用逗号分隔,对象属性用&连接。该方法适用于API签名验证场景,确保参数按字典序规范排序。(143字)原创 2025-06-23 17:22:29 · 715 阅读 · 0 评论 -
版本管理: 网页版、app
本文设计了系统软件版本管理方案,分为网页版和APP版本管理两部分。网页版采用SQL Server数据库表t_sys_version_manage存储版本信息,包含版本号、描述、发布时间等字段,支持版本追踪。APP版本管理通过Java实体类TSysVersionManage实现,扩展了更新方式(强制/弹窗/静默)和下载链接等移动端特有属性。两种方案都记录了创建/更新信息,为测试提供完整的版本追踪支持,其中网页版侧重基础版本管理,APP版则针对移动端特性进行了功能增强。原创 2025-06-19 10:53:48 · 63 阅读 · 0 评论 -
Java Netty 中处理粘包和半包问题的解决方案 | TCP消息完整性校验(XOR )
摘要: 本文探讨了TCP粘包和半包问题的解决方案。由于TCP协议不维护消息边界,接收端可能出现消息不完整或合并现象。文中介绍了Netty框架的两种处理方法:1) 分隔符解码器(DelimiterBasedFrameDecoder),通过特定分隔符(如换行符)拆分消息;2) 长度字段解码器(LengthFieldBasedFrameDecoder),根据消息头部的长度字段解析数据。示例代码展示了分隔符方式的实现,包括心跳检测、字符编码等完整流程。这些方法有效解决了TCP传输中的消息边界问题,确保数据完整性和可原创 2025-06-02 09:35:33 · 920 阅读 · 0 评论 -
Java处理动态的属性:字段不固定、需要动态扩展的 JSON 数据结构
摘要 本文介绍了两种处理动态JSON数据的Java实现方案。方案一使用JSONObject接收和返回表单配置数据,通过toJSONString()和parseObject()方法实现JSON对象与字符串的相互转换。方案二应用于签名测试接口,采用Map<String, Object>接收请求数据,配合@JsonAnySetter/@JsonAnyGetter注解处理动态属性。两种方案均适用于需要灵活处理动态JSON结构的场景,如表单配置、参数列表等,文中提供了具体的DTO定义、数据存储方法和接口示原创 2025-05-30 15:24:31 · 224 阅读 · 0 评论 -
分布式序列生成方案 : Redis Incr | 基于Redisson创建自增获取序号,每天更换一个key, key到期时间1天,用于创建订单号、快递单号
在 Spring Boot 应用程序中集成 Redisson 可以通过以下步骤实现:首先,通过 Maven 引入 Redisson 依赖;然后,在 application.yml 或 application.properties 中配置 Redis 连接信息;接着,创建一个 Redisson 配置类,使用 @Bean 注解生成 RedissonClient 实例;最后,通过 @Autowired 注解自动装配 RedissonClient,并利用其提供的 RAtomicLong 实现分布式环境下的原子操作,原创 2025-05-20 09:10:14 · 411 阅读 · 0 评论 -
Java读Excel:解析阿里云easyExcel导入文件的行号
解析阿里云easyExcel导入文件的行号的应用场景: 提示哪行存在问题,例如不能为空,格式不符合,主键不存在等。导入类型、 是否限制导入数量、最大导入数量、其他的上下文数据inputData、存储回调方法的对象。默认所有字段都会和excel去匹配,加了这个注解会忽略该字段。所表示的类或接口相同,或是否是它的超类或超接口。对象所表示的类或接口是否与指定的。原创 2025-04-28 16:39:41 · 446 阅读 · 0 评论 -
Java参数校验:JSR303定义的校验类型(实体类添加对应注解) | 递归的对关联对象进行校验
Null 验证对象是否为null@NotNull 验证对象是否不为null, 无法查检长度为0的字符串@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.@NotEmpty 检查约束元素是否为NULL或者是EMPTY.原创 2025-04-21 17:22:00 · 49 阅读 · 0 评论 -
Java 生成带前导零的四位字符串LeadingZero:推荐优先考虑 String.format 方法,它通常比 DecimalFormat 更加轻量级并且执行速度更快
创建了一个格式化器实例,它会确保所有的数字都被表示为具有四个字符的形式,如果必要的话会在左侧补充零。表示将整数格式化为至少 4 位宽的字符串,并用前导零填充不足的部分。是一种简单且高效的方法来格式化字符串,支持指定宽度并填充前导零。设备追溯码=批次号+生产数量的序号(带有前导零的固定宽度字符串)当处理大量数据或者性能敏感的应用场景时,推荐优先考虑。来实现将数字格式化为带有前导零的固定宽度字符串。1万条数据用+号拼接用时要7,8秒。类来进行更复杂的数值格式化操作。,而要使用效率更高的。原创 2025-04-19 08:41:56 · 185 阅读 · 0 评论 -
IDEA 基础配置: maven配置 | 服务窗口配置 | 终端配置
比如我是idea2021.2.2 ,需要将 maven 退到 apache-maven-3.8.4-bin.tar.gz。介绍了IntelliJ IDEA中的一些常见问题及其解决方案,包括。dea2021可以使用maven3.8以及以前的版本。配置 maven 阿里云镜像源。原创 2025-03-07 15:41:14 · 470 阅读 · 0 评论 -
Java 8 中,可以使用 Stream API 和 Comparator 对 List 按照元素对象的时间字段进行倒序排序
Comparator推荐方法: 使用结合reversed,代码简洁易读。灵活性: 可以根据需求选择不同的排序方式。空值处理: 如果时间字段可能为null,需额外处理空值情况。: 将null值排在最前面。: 将null值排在最后。结合排序方向使用实现正序排序。使用实现倒序排序。通过以上方法,可以轻松处理排序字段为null的情况,避免。原创 2025-03-01 10:29:52 · 519 阅读 · 0 评论 -
OA审批 / 流程管理 :流程设计/审批人设置/选择节点的审批人 | Java获取树形用户列表(通讯录支持一个用户分配到多个部门)
树形用户列表原创 2025-02-13 15:12:40 · 442 阅读 · 0 评论 -
Java8接口可被用作常量集合 | 默认省略public static final ( 定义更简单,使用更方便) | 管理一组相关的常量变得更加直观和方便
定义一个类并在其中声明这些常量,然后通过该类来访问这些常量。可以通过来访问这个常量。直接通过接口名来访问这个常量,例如。原创 2025-02-11 15:22:46 · 355 阅读 · 0 评论 -
Java工程结构:服务器规约(JVM 碰到 OOM 场景时输出 dump 信息、设置tomcat的 JVM 的内存参数、了解服务平均耗时)
说明:类似于HttpClient的超时设置需要自己明确去设置Timeout。根据经验表明,无数次的故障都是因为没有设置超时时间。原创 2025-01-20 14:38:56 · 1274 阅读 · 0 评论 -
工作流:业务流程模型和符号 (BPMN)
将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完。原创 2025-01-18 10:49:25 · 181 阅读 · 0 评论 -
SpringBoot 3 整合Flowable 工作流引擎(开源的BPM流程引擎):支持 BPMN 2.0(Business Process Model and Notation)标准
Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据。原创 2025-01-18 10:37:47 · 336 阅读 · 0 评论 -
OA系统的工作流引擎选型(jBPM、Activiti、Flowable、Camunda) | 流程设计器选型(bpmn-js、mxGraph、Activiti-Modeler)| 数据库表比较
将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完。原创 2025-01-17 11:01:50 · 729 阅读 · 0 评论 -
Java专有名词解释: 分层领域模型规约
各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止使用 Map 类来传输。公司内部发布到中央仓库,可供公司内部其它应用依赖的库(jar 包)。此对象与数据库表结构一 一对应,通过 DAO 层向上传输数据源对象。Service 或 Manager 向外传输的对象。可以由 Service 层输出的封装业务逻辑的对象。本工程内部子项目模块依赖的库(jar 包)。DO / DTO / BO / VO 等。是 Web 向模板渲染引擎层传输的对象。公司之外的开源库(jar 包)。原创 2025-01-16 16:57:09 · 163 阅读 · 0 评论 -
《Java开发手册》核心内容
手册的愿景是提升代码质量和开发效率,通过规范化的编码实践来减少错误和提高系统的稳定性。原创 2025-01-16 08:23:09 · 393 阅读 · 0 评论 -
Java单元测试规约: 单测的基本目标、BCDE 原则、 AIR 原则
正例:为了不受外界环境影响,要求设计代码时就把 SUT(Software under test)的依赖改成注入,在测试时用 Spring这样的 DI 框架注入一个本地(内存)实现或者 Mock 实现。说明:单元测试通常会被放到持续集成中,每次有代码 push 时单元测试都会被执行。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。保证单元测试稳定可靠且便于维护,单元测试用例之间决不能互相调用,也不能依赖执行的先后次序。说明:新增代码及时补充单元测试,如果新增代码影响了原有单元测试,请及时修正。原创 2025-01-13 14:31:17 · 605 阅读 · 0 评论 -
Logback配置文件:基本结构、附加器区分环境配置(开发、测试、生产)、 logger避免重复打印日志( additivity=false)
Logback 基于三个主要类:这三种类型的组件协同工作,使开发人员能够根据消息类型和级别记录消息,并在运行时控制这些消息的格式以及报告的位置。用于区分不同应用程序的记录。元素,包含零个或多个。元素,后跟零个或多个。原创 2025-01-10 08:13:52 · 273 阅读 · 0 评论 -
异常处理原则:资源对象、流对象的关闭;自定义的异常(CommonException 、DAOException 、ServiceException)
例如:用户注册的场景中,如果用户输入非法字符,或用户名称已存在,或用户输入密码过于简单,在程序上作出分门别类的判断,并提示给用户。finally 块必须对资源对象、流对象进行关闭,有异常也要做 try-catch。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。JDK7使用 try-with-resources 方式。原创 2025-01-09 09:13:04 · 190 阅读 · 0 评论 -
zookeeper shell操作和zookeeper 典型应用(配置中心、集群选举服务、分布式锁)
zk 的本质是文件存储系统,所以zk的核心操作就是客户端对目录树的进行增删改查操作。zk自带了一个shell客户端:原创 2025-01-08 16:45:02 · 397 阅读 · 0 评论 -
zookeeper监听机制(Watcher机制)
ZooKeeper允许客户端向服务端注册一个Watcher监听,当服务端的一些事件触发了这个Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。ZooKeeper提供了分布式数据发布/订阅功能,一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,使他们能够做出相应的处理。事件发生触发监听,一个watcher event就会被发送到设置监听的客户端,这种效果是一次性的。原创 2025-01-07 17:19:41 · 641 阅读 · 0 评论 -
信息安全:Java自定义Jackson序列化器进行数据脱敏
后台保存的敏感数据不适宜在前端(或传输)直接展示,需要将敏感数据脱敏后返回实现方案:自定义Jackson序列化器进行数据脱敏。/*** * 需要脱密的字段注解。原创 2025-01-04 08:17:03 · 253 阅读 · 0 评论 -
java 自定义字典序列化器:使用注解自动转换字典信息(自定义注解转换字典)【字典转换策略】
字典项字段基于注解来实现序列化:实现自定义字典序列化注解,在对象进行序列化时,加载指定字典类型,并根据属性值匹配对应的字典项,返回对应字典项信息。序列化时,从注解获取字典类型,再结合字典编码,从redis缓存获取字段内容。需求背景:由于枚举的修改需要更新代码,因此采用字典可以更灵活的维护字典项。因为字典只有两层结构,所以采用主表和明细表结构。降低表结构的复杂性。字典类型、字典编码、字典内容。原创 2025-01-03 17:09:02 · 427 阅读 · 0 评论 -
错误码的制定原则:快速溯源、沟通标准化。
堆栈(stack_trace)、错误信息(error_message) 、错误码(error_code)、提示信息(user_tip)是一个有效关联并互相转义的和谐整体,但是请勿互相越俎代庖。调用第三方服务出错是一级,中间件错误是二级,消息服务出错是三级。错误码回答的问题是谁的错?C0001(调用第三方服务出错)B0001(系统执行出错)A0001(用户端错误)原创 2025-01-03 13:39:52 · 95 阅读 · 0 评论 -
Java编程规约:注释规约
包含一个代码片段,可以在 #parse 指令的帮助下将其包含在文件模板 (Templates 选项卡) 中。除了静态文本、代码和注释,您还可以使用预定义的变量,这些变量将像宏一样被扩展为相应的值。在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释;在 IDE 中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高阅读效率。说明:对子类的实现要求,或者调用注意事项,请一并说明。日期的设置统一为 yyyy/MM/dd 的格式。原创 2025-01-03 08:46:09 · 146 阅读 · 0 评论 -
Java编程规约:控制语句
在一个 switch 块内,每个 case 要么通过 continue / break / return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止;底层调用频度比较高的方法。在一个 switch 块内,都必须包含一个 default 语句并且放在最后,即使它什么代码也没有。此情形中,参数校验时间几乎可以忽略不计,但如果因为参数错误导致中间执行回退,或者错误,那得不偿失。说明:注意 break 是退出 switch 语句块,而 return 是退出方法体。原创 2025-01-02 13:28:42 · 141 阅读 · 0 评论 -
Java编程规约:并发处理
减少在创建和销毁线程上所消耗的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。获取单例对象需要保证线程安全,其中的方法也要保证线程安全。说明:资源驱动类、工具类、单例工厂类都需要注意。自定义线程工厂,并且根据外部特征进行分组。原创 2025-01-02 09:41:01 · 117 阅读 · 0 评论 -
Java编程规约:集合处理
反例:直接使用 toArray 无参方法存在问题,此方法返回值只能是 Object[]类,若强转其它类型数组将出现ClassCastException 错误。3)等于 size,在高并发情况下,数组创建完成之后,size 正在变大的情况下,负面影响与 2 相同。4)大于 size,空间浪费,且在 size 处插入 null 值,存在 NPE 隐患。2)大于 0 但小于 size,重新创建大小等于 size 的数组,增加 GC 负担。说明:在某些集合中,前者的时间复杂度为 O(1),而且可读性更好。原创 2024-12-30 11:19:29 · 405 阅读 · 0 评论 -
Java编程规约:日期时间
第 3 个在构造方法super((time / 1000) * 1000),在 Timestamp 属性 fastTime 和 nanos 分别存储秒和纳秒信息。说明:日期格式化时,yyyy 表示当天所在的年,而大写的 YYYY 代表是 week in which year(JDK7 之后引入的概念),意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,返回的 YYYY 就是下一年。说明:第 1 个不记录时间,getHours() 抛出异常;原创 2024-12-30 10:08:34 · 248 阅读 · 0 评论 -
Java编程规约 :OOP 规约
一方库指的是由本团队或公司自主研发的库这种库通常是为了满足特定的业务需求而设计和实现的,具有与业务高度耦合的特点。在一方库中,包含了团队或公司的核心业务逻辑和技术实现,是私有化的代码库。二方库指的是由本公司或组织内部不同团队之间共享的库。这种库通常是为了解决多个团队之间共性需求而设计和实现的,具有较为松散的耦合度。二方库可以是一个通用的工具集,也可以是一个包含多个模块的框架。通过共享二方库,可以减少代码冗余和重复造轮子的情况,提高开发效率和代码质量。三方库指的是由第三方开发者贡献的开源库。原创 2024-12-28 16:52:10 · 257 阅读 · 0 评论 -
Java编程规约: 常量定义、代码格式(代码逻辑分清红花和绿叶,个性和共性)
不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。long 或 Long 赋值时,数值后使用大写 L,不能是小写 l,小写容易跟数字混淆,造成误解。浮点数类型的数值后缀统一为大写的 D 或 F。正例。原创 2024-12-28 10:57:50 · 124 阅读 · 0 评论 -
Java编程规约:命名风格
正例:ForceCode / UserDO / HtmlDTO / XmlService / TcpUdpDeal / TaPromotion。反例:forcecode / UserDo / HTMLDto / XMLService / TCPUDPDeal / TAPromotion。正例:localValue / getHttpMessage() / inputUserId。正例:MAX_STOCK_COUNT / CACHE_EXPIRED_TIME。无规矩不成方圆,无规范难以协同。原创 2024-12-27 16:48:02 · 164 阅读 · 0 评论 -
基于Sonatype Nexus中发布Maven私有库:【亲测-已解决】The POM for xx:jar:1.1.x is missing, no dependency information
使用mvn install:install-file命令将jar包安装到本地仓库,该命令会在本地仓库中生成jar包及pom文件。将生成的jar包和pom文件上传到Sonatype Nexus的私有库中。重新在项目中引用后,问题即可解决。原创 2024-12-20 08:58:34 · 568 阅读 · 0 评论 -
基于阿里云短信上行(SmsUp)实现短信回执,判断短信通知终端设备是否成功。
已注册阿里云账号并生成访问密钥(AccessKey),详情请参见。已创建RAM用户,并已为RAM用户授予。原创 2024-12-11 15:40:26 · 535 阅读 · 0 评论 -
登录授权的实现:json web token + redis + springboot
RESTful API TOKEN认证方式: 在HTTP头中,使用 Authorization: Bearer;采用签名过的TOKEN进行认证授权。一个用户登陆之后,存储两个redis key。应用场景: 登录认证。原创 2024-12-11 11:01:49 · 1270 阅读 · 0 评论 -
java日期工具: 获取两个时间段的时间段值,Java获得两个日期之间的所有年、月份、日。
【代码】java日期工具: 获取两个时间段的时间段值,Java获得两个日期之间的所有年、月份、日。原创 2024-12-07 16:00:51 · 204 阅读 · 0 评论 -
【基于Nginx配置https、wss最新教程】基于反向代理服务器部署SSL证书:解决字符[_]在域名中永远无效的问题(DV DigiCert RSA install-pfx-certificate)
小程序前端通常无法直接使用HTTP Session来处理登录状态,因为小程序的跨域通信是由微信后台代理的,而不是通过普通的CORS(跨源资源共享)机制。这意味着服务器端的接口不能依赖于浏览器发送的Cookie来维护会话状态。小程序服务端接口的域名配置只支持 https (wx.request、wx.uploadFile、wx.downloadFile) 和 wss (wx.connectSocket) 协议;背景:提供给小程序访问的接口,需要配置SSL。域名必须经过 ICP 备案;原创 2024-12-03 15:10:41 · 1098 阅读 · 0 评论