
后端
文章平均质量分 72
分享后端相关知识,以Java语言为主
一朝风月S
内有激情,从容不迫
展开
-
Sharding-JDBC快速使用【笔记】
Sharding-JDBC快速使用【笔记】原创 2024-01-03 15:52:19 · 1150 阅读 · 0 评论 -
Redis哨兵模式yaml文件连接配置
Redis哨兵模式yaml文件连接配置原创 2023-12-19 10:05:14 · 1095 阅读 · 0 评论 -
UDP服务端的编写示例
最近获得了一个需求,要求是编写一个程序用于接收传递过来的XML字符串,将该字符串保存为指定目录下的xml文件并记录日志。为了提高传输效率,我才用了UDP协议来编写程序,本文主要讲解用SpringBoot框架编写UDP服务端程序,并编写了一个用于测试的客户端程序。原创 2021-12-21 12:18:03 · 1038 阅读 · 2 评论 -
SpringBoot后端long型向前端传值损失精度
问题: 当后端传值为Long类型,且长度大于17位时,由于js中Number精度与java中Long精度不一致,前端在第16位会四舍五入, 之后后的数据自动用0补齐。解决方案:这里我只给出最近我解决该问题的方案,通过添加配置的方式来实现。import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.module.SimpleModule;import com.fasterxml.ja原创 2021-08-30 10:25:13 · 754 阅读 · 0 评论 -
访问“com.alibaba.fastjson.JSON“的静态成员“parseObject“.
1 访问"com.alibaba.fastjson.JSON"的静态成员"parseObject".产生问题的代码:import com.alibaba.fastjson.JSONObject;JSONObject question = JSONObject.parseObject(personJsonStr);原因: 不应通过派生类型访问 “static” 基类成员。为了代码清晰起见,永远不要使用派生类型的名称访问 base 类的 static 成员。 这样做很容易造成混淆,并且可能会导致存在原创 2021-08-26 17:06:30 · 2457 阅读 · 0 评论 -
Java 签章操作的设计与实现
本文主要讲解使用Java和SpringBoot框架设计实现对PDF的签章操作。原创 2021-08-09 11:25:54 · 1211 阅读 · 0 评论 -
Java 水印操作的设计与实现
本文主要针对图片和PDF的水印操作设计了四种场景原创 2021-08-05 17:36:30 · 1158 阅读 · 3 评论 -
对Fast DFS的一些思考
Fast DFS是一个开源的高性能分布式文件系统(DFS)。它的主要功能包括:文件存储、文件同步和文件访问以及高容量和负载均衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < 文件大小 < 500MB)为载体的在线服务。原创 2021-03-18 20:14:39 · 371 阅读 · 2 评论 -
再话设计模式-空对象模式
1 说明 在实际编程中,总会遇到空值校验,这种惯用法很常见,例如下述代码: Employee e = DB.getEmployee("Bob"); if (e != null && e.isTimeToPay(today)) { e.pay(); }但这样的代码却是丑陋且易出错的。使用空对象模式可以解决这个问题。该模式可以消除对null进行校验的代码,有助于原创 2021-02-17 17:11:38 · 245 阅读 · 4 评论 -
再话设计模式-单态模式
1 说明 本文主要讲解单态设计模式(Monostate Pattern),单例设计模式是比较常见的,在我之前的文章2.3章节中详细阐述过它的多种不同实现(https://blog.youkuaiyun.com/weixin_37624828/article/details/105929809)。但是,单例模式也有一些缺点是需要考虑的。本文将对单例设计模式再次做出新的评价,进而引出一种新的设计模式供读者在设计时提供一种全新的思路。2 单例模式-再评原创 2021-02-17 16:22:13 · 649 阅读 · 4 评论 -
SonarLint的安装与使用
本文介绍的是使用IDEA在内网环境连接SonarLint服务器的一种方法。步骤1: 打开IDEA【Settings】对话框,找到【Plugins】选项,从市场中安装一个SonarLint插件**步骤2:**重启IDEA,配置SonarLint内网连接的服务器。**步骤3:**点击配置图标**步骤4:**勾选红框所示复选框,点击【Configure the connection…】步骤5: 添加内网SonarLint服务器步骤6: 选中SonarQube**步骤7:**填写连接名称和UR原创 2021-02-01 11:05:07 · 1547 阅读 · 0 评论 -
再话设计模式-外观模式和中介者模式对比
1 说明 在《设计模式-结构型设计模式》文章的3.3章节(https://blog.youkuaiyun.com/weixin_37624828/article/details/105955923)和《设计模式-行为型设计模式》文章中的4.5章节(https://blog.youkuaiyun.com/weixin_37624828/article/details/106059837)和已经提到外观模式和中介者模式是如何编写的,并对应给出了两个例子,外观模式给原创 2021-01-31 09:45:34 · 675 阅读 · 0 评论 -
再话设计模式-对比模板模式与策略模式实现冒泡排序优劣
1 说明 在《设计模式-行为型设计模式》文章中的4.1、4.2章节(https://blog.youkuaiyun.com/weixin_37624828/article/details/106059837)已经提到策略模式和模板模式是如何编写的,并对应给出了两个例子,策略模式给出的两个数进行运算可以选择不同的算法,模板模式给出了一个游戏过程的执行顺序。 策略模式和模板模式在原创 2021-01-12 19:32:52 · 448 阅读 · 1 评论 -
再话设计模式-使用命令模式实现多线程
1 背景原创 2021-01-10 20:04:51 · 407 阅读 · 6 评论 -
敏捷设计原则
在大多数软件项目中最不稳定的东西就是需求,需求处在一个持续变动的状态中。软件的设计也会因为需求的变化而腐化。常见的腐化有7种类型。为了解决这些问题,许许多多的软件开发人员和研究人员总结出了5种设计原则。这些设计原则是解决软件腐化问题的有效方式。敏捷团队可以应用这些原则来解决软件设计腐化问题(臭味),但是这些原则也绝非在系统中到处喷洒的香水。过分遵循这些原则会导致软件设计变得不必要的复杂。只要尽可能的保持好的设计即可。设计必须要保持干净、简单,并且由于源代码是设计最重要表示。所以就要求敏捷开发人员要每天、原创 2020-11-29 18:49:33 · 637 阅读 · 0 评论 -
依赖倒置原则(Dependence Inversion Principle)
抽象不应该依赖于细节。细节应该依赖于抽象。依赖倒置原则主要体现在两个方面:高层模块不应该依赖于低层模块。二者都应该依赖于抽象。抽象不应该依赖于细节。细节应该依赖于抽象。原创 2020-12-20 16:13:49 · 1255 阅读 · 3 评论 -
Liskov替换原则(Liskov Substitution principle)
子类型(subtype)必须能够替换掉他们的基类型(base type)如果一个类承担的职责过多,就等于把这些职责耦合在了一起。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的(fragile)设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。例如:要实现逻辑和界面的分离。...原创 2020-12-17 15:06:43 · 3147 阅读 · 0 评论 -
开放-封闭原则(The Open-Closed Principle)
开放-封闭原则(The Open-Closed Principle)原创 2020-12-13 12:30:54 · 2516 阅读 · 0 评论 -
单一职责原则(The Single Responsibility Principle)
单一职责原则(The Single Responsibility Principle,简称SRP)原创 2020-12-08 21:13:37 · 308 阅读 · 0 评论 -
设计模式-行为型设计模式
续上一篇文章《设计模式-结构型设计模式》https://blog.youkuaiyun.com/weixin_37624828/article/details/1059559234 行为型设计模式4.1 策略模式概述:一个类的行为或其算法可以在运行时更改,这种类型的设计模式属于行为型模式。如何创建:将这些算法封装成一个一个的类,实现同一个接口。何时使用:一个系统有许许多多类,而区分它们的只是它们的直接行为。优点:算法可以自由切换;避免使用多重条件判断;扩展性良好缺点:策略类会增多;所有的原创 2020-05-12 14:52:04 · 404 阅读 · 0 评论 -
设计模式-结构型设计模式
续上一篇文章《设计模式-创建型设计模式》https://blog.youkuaiyun.com/weixin_37624828/article/details/1059298093 结构型设计模式3.1 适配器模式3.2 装饰器模式3.3 外观模式3.4 代理模式3.5 桥接模式3.6 享元模式3.7 组合模式...原创 2020-05-07 12:15:54 · 314 阅读 · 0 评论 -
设计模式-创建型设计模式
1 综述设计模式代表了最佳实践,是前辈们对代码开发经验的总结,在代码中运用好设计模式可以提高代码的可复用性、可维护性、可读性、稳健性以及安全性。本文和之后的两篇文章将梳理《设计模式:可复用面向对象软件的基础》一书,共收录的23种设计模式。1.1 23种设计模式的分类类型模式名创建型工厂模式(Factory Pattern)(5种)抽象工厂模式(Abstract...原创 2020-05-05 17:13:27 · 491 阅读 · 5 评论 -
Spring基础装配术
本文主要讨论SpringBean的装配方法,装配Bean的方法主要有三种:自动化装配,基于Java的显式配置以及基于XML的显示配置。1 自动化装配1.1 理论Spring可以实现自动化配置,如果能够实现自动化装配的话,就尽量选择自动化装配。代码清单Animal.javaCat.javaCatConfig.javaspringContext.xmlCatTest.java...原创 2018-12-01 17:05:20 · 236 阅读 · 0 评论 -
Spring高级装配术
1 Spring profile注解的使用1.1 问题在开发软件的时候,有一个很大的挑战就是将应用程序从一个环境迁移到另外一个环境去。很多时候数据库配置,加密算法以及外部系统集成等方面的配置都需要重新修改。这是个很大的问题1.2 解决方案Spring 提供了Profile注解,可以把开发环境、测试环境等许多环境统一配置到一起,然后软件部署的环境调整一下参数即可,例如数据库配置。Java显...原创 2018-12-05 14:29:44 · 160 阅读 · 0 评论 -
JDBC融合Spring技术(连接Hive)--使用JDBC模板
1 简述JDBC模板在实际编写JDBC程序的时候,我们需要负责处理与数据库访问相关的所有事情,这里包括管理数据库资源和处理异常。其中只有20%的代码是真正用于查询数据的,而80%代码都是样本代码,为了解决这一问题我们采用Spring的JDBC模板来简化工作,这里以连接Hive数据库为例。2 JDBC融合Spring技术示例基础环境HiveJDK1.8Spring程序清单Hiv...原创 2018-12-19 19:30:04 · 2268 阅读 · 1 评论 -
Spring-JPA(使用Hibernate作为JPA的实现)
1 简介在Spring2.0版本中,Spring首次集成了JPA,很多开发人员都推荐在基于Spring的应用程序中使用JPA实现持久化。实际上,有些人还将Spring-JPA合称为POJO开发的梦之队。2 示例在本示例中使用Hibernate作为JPA的实现,也可以选择类似的其他技术如MyBatis也是可以的。2.1 配置数据源我这边采用的是Hive作为数据源从中读取records表的数...原创 2018-12-24 16:22:10 · 4932 阅读 · 2 评论 -
清理maven仓库的脚本
(005)今天和大家分享一个好东西,很多时候maven仓库会因为种种原因下载了不完全的文件影响项目的运行,这个东西就是用来删除下载的部分文件。链接:https://pan.baidu.com/s/1japs3VDK_alMd5pxl_bMtg提取码:omyf运行将上述附件下载下来如果是Windows系统将脚本拷到和maven仓库平级的目录下如下图所示:使用cmd命令定位到上述目录下,运...原创 2019-01-12 14:14:13 · 3109 阅读 · 0 评论 -
使用hssf读取Excel的方法
1 HSSFHSSF是POI工程对Excel 97(-2007)文件操作的纯Java实现 ,我通过这种方式写了一个方法供大家使用2 方法import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;im...原创 2019-01-28 10:26:48 · 1893 阅读 · 0 评论 -
MySQL中使用触发器来记录对表的操作日志
MySQL中使用触发器来记录对表的操作日志在项目中经常需要记录对表的操作日志,通常是写到程序中,这样无形中增加了程序的业务流程,即使采用了面向切面的编程技术,但是整个系统效率仍然不够高。本文通过对表创建触发器来记录对表的操作日志。数据库中的表首先准备两张用于测试的表,一张用于插入数据,另一张用于记录对表的操作日志,表结构test字段名类型idint(10)...原创 2019-08-15 17:58:32 · 5207 阅读 · 2 评论 -
Java对Fast DFS文件系统的基本操作
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。存储节点存储文件,完成文件管理的所有功能:就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value)方式表示......原创 2019-09-15 19:22:54 · 1034 阅读 · 0 评论 -
Swagger使用说明
1 Swagger的出现在前后端分离的项目中,后端开发者需要向前端或者其他后端开发者提供接口文档。实际工作中提供一份完整准确的接口文档是一件异常花费时间精力的事情。为了解决问题可以采用Swagger来提供在线的接口文档,通过在代码中写注解可以明显提升文档质量。2 在项目中加入Swaggerpom.xml在pom文件中添加添加Swagger依赖的jar包<dependency&...原创 2019-09-24 18:03:27 · 1703 阅读 · 0 评论 -
Spring 依赖注入(DI)示例
依赖注入依赖注入是为了解决紧耦合问题而产生的一种技术,紧耦合的代码难以测试、难以复用、难以理解,当程序出现bug时,修复bug经常会产生连锁反应,但是,一定程度的耦合又是必须的,完全没有耦合的代码什么也做不了。所以一种比较好的方案就是,将依赖关系交给第三方组件来描述。通过DI,对象的依赖关系将有系统中负责协调各对象的第三方组件在创建对象的时候设定。例如,在Spring中可以通过编写XML来描述...原创 2018-11-24 18:21:36 · 417 阅读 · 0 评论