
Java
文章平均质量分 83
HackShendi
学习+实践=快乐
展开
-
记一次金额操作精度丢失问题与解决
以分为单位,金额为整数形式。在今天,发现了精度丢失的问题。在之前我觉得像这种 * 100与 / 100的操作按道理来说应该不会出现精度丢失问题,但现在问题就这样摆在眼前。一个好的东西一定是站在使用者的角度上来考虑,对于上面这样精度丢失的问题属实唏嘘,为什么不直接提供一个不会丢失精度的类型呢?毕竟我们只是使用者...原创 2023-12-10 11:54:07 · 1128 阅读 · 0 评论 -
Mybatis报错找不到参数解决之编译保留参数名称
在使用 Mybatis 的过程中,对于函数参数,通常会加上 `@Param` 注解来给参数命名,以让 Mybatis 找到参数。Java编译保留函数与参数名称信息可以提高开发效率,可以省略编写额外的代码来指定参数的名称,因此可以提高编码效率...原创 2023-11-15 10:10:35 · 691 阅读 · 0 评论 -
原生Java使用Mybatis操作数据库接口注解形式,与SpringBoot类似且无需管理SqlSession连接的工具类
当SqlSession关闭后,getMapper拿到的接口实例就不能在使用了,否则直接报错,所以不能作为类成员这样存起来,这样有点不合理,每次都要拿到SqlSession,使用getMapper,用完关闭。格式是xml的,可以参考Mybatis的官方文档,是中文的,文件命名可随意,一般为config.xml或者mybatis-config.xml。配置,SQL,工厂,都ok了,最后一步就是使用了,因为太简单,这里直接上代码了。原创 2023-04-17 01:01:05 · 450 阅读 · 0 评论 -
Redis的基本使用(详解),Windows+Java
Redis(Remote Dictionary Server ),即远程字典服务,开源,NoSQL,缓存数据库,键值对结构,高性能,可持久化,Redis的连接,请求,读写,响应都是在一个线程内完成,Redis官方不提供windows版本,Redis是基于键值对的...原创 2023-03-12 23:08:24 · 1569 阅读 · 0 评论 -
为什么使用Junit单元测试?Junit的详解
Junit是一个Java语言的单元测试框架。单元测试是一个对单一实体(类或方法)的测试JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。原创 2023-03-04 23:20:51 · 739 阅读 · 0 评论 -
Java简单的生成/解析二维码(zxing qrcode)
在之前使用 qrcode.js 方式生成二维码,但在不同设备上难免会有一些兼容问题,于是改为后端(Java)生成二维码图片这里使用 Google 的 zxing包。原创 2023-02-28 16:22:30 · 2247 阅读 · 0 评论 -
Java给图片增加水印,根据图片大小自适应,右下角/斜角/平铺
水印就是在图片上绘画,文字水印是最常见的,比如优快云文章里图片右下角就会有文字水印在 Java 中,给图片添加水印一般可以分为以下几步1. 读取图片2. 获取/创建图片画板3. 将水印内容绘制到图片中4. 输出图片效果展示下面展示的是我所使用的水印效果原创 2022-11-29 18:01:43 · 4864 阅读 · 0 评论 -
MongoDB的安装配置及使用(WIndows/Java)
下面主要介绍使用 Windows安装 MongoDB 和使用 Java 操作文章目录MongoDB下载创建数据目录运行配置安装服务创建用户用户角色列表Java使用查询数据插入数据修改数据删除数据设置数据过期时间其他问题MongoClient是否需要关闭?内存为什么只增不减?MongoDB是一个基于分布式文件存储的数据库,由C++语言编写MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,它支原创 2022-11-19 13:33:20 · 770 阅读 · 0 评论 -
SpringBoot 过滤器代理请求,增加设置请求参数的函数 setParameter
Hi, I’m Shendi敲代码的时候,总是会做大大小小的封装来提升敲代码的效率当编写接口的时候,发现有一个参数很多接口都需要使用,并且这个参数使用前都需要经过同样的处理,如果不做封装,就会在需要使用的接口处都复制一段代码,非常麻烦于是可以编写一个过滤器,设置请求参数,当参数到具体接口时,已经被处理过了但是 Servlet 的请求 (Request)并未提供设置参数的函数,当获取参数 Map,并 put 参数时,会报错,于是只能通过代理的方式实现HttpServletRequestWrappe原创 2022-05-22 22:32:51 · 899 阅读 · 2 评论 -
JavaMail邮件发送
文章目录邮件协议下载jar发送邮件创建邮件会话(Session)Properties 属性开启调试模式创建邮件内容多内容以及图片/附件发送邮件完整代码示例邮件协议常见的电子邮件协议有SMTP,POP3,IMAP4,它们都隶属于TCP/IP协议簇默认状态下,分别通过TCP端口25,110和143连接SMTP(Simple Mail Transfer Protocol),简单邮件传输协议用于从源地址到目的地址传输邮件规范,通过它来控制邮件的中转方式POP,邮局协议负责从邮件服务器中检索电原创 2021-08-04 21:07:13 · 1899 阅读 · 0 评论 -
Eclipse更改md文件默认编辑器
Hi,I'm Shendi近期写项目时使用md写文档,使用的IDE是Eclipse,Eclipse是自带Markdown编辑器的刚开始用默认的编辑器,效果如下此时的Url是可以点击的,并会跳转但是有时候我们会需要定位到本文档的某处地方,使用id#,就会出错,并且无法跳转但其实是没有问题的,就是红线看起来不舒服当我们内容多了之后使用默认显示也会点问题比如我这里用>期望的效果是如下Test1 helloTest2Test3但是在这个..原创 2020-12-01 14:11:54 · 2121 阅读 · 0 评论 -
Java桌面程序更新实现
I'm Shendi最近在写控制台软件,客户端软件,于是就需要增加更新模块,在这里记录一下思路首先是服务端和客户端进行通信,一般通过校验版本来判断是否需要更新如果需要更新则获取需要更新的文件更新分为几种类型,通过服务端发来的消息来判断,可选更新 强制更新(自动更新)在代码方面,一般都是直接打包成jar,于是直接下载替换就行其余的配置文件方面的也是如此,通过相对路径在更新完毕后重新启动.如果不想重新启动则可以使用自定义类加载器来实现...原创 2020-11-27 19:03:31 · 2758 阅读 · 0 评论 -
从OpenJDK官网下载JDK源码
Hi,I'm Shendi最近在写一些东西,用到了Javax包的一些类,于是想看一下实现原理当我点进去时,发现下载的JDK居然没有其源码(java下src.zip文件中没有此源码)于是就需要自己下载了最快的就是从OpenJDK上下载于是百度 OpenJDK没有问题的话第一个就是链接为http://openjdk.java.net/界面如下看左边,点击Source code 处的 Mercurial界面如下然后在里面找自己需要的jdk版本,...原创 2020-11-18 12:02:22 · 4714 阅读 · 1 评论 -
Java测试服务器的上传速度和下载速度
I'm Shendi最近搞了台服务器,于是就想测试一下网速(与用户之间的速度)上传速度 客户端发数据给服务端,服务端接收到多少字节就是速度下载速度 服务端发数据给客户端,客户端接收到多少字节就是速度避免偏差过大,两个步骤执行时间都为10秒代码如下/** * 网速测试 * @author Shendi <a href='tencent://AddContact/?fromId=45&fromSubId=1&subcmd=all&uin=1711680原创 2020-08-12 15:50:03 · 5649 阅读 · 3 评论 -
TCP滑动窗口笔记
ACK(Acknowledge character) 确认字符 在数据通信中,接收站发给发送站的一种传输类控制字符, 表示发来的数据已确认接受无误. 在 TCP/IP协议中,如果接收方成功的接收到数据,那么会回复一个ACK数据 通常ACK信号有自己固定的格式,长度大小,由接收方回复给发送方滑动窗口协议(Sliding Window Protocol) 首先,在数据发送过程中,我们希望保证发送方和接收方的数据顺序 于是我们可以通过按次序发送来解...原创 2020-07-17 10:38:01 · 3232 阅读 · 0 评论 -
自定义注解实战,注解取代配置文件
Hello,I'm Shendi.这几天熟悉了下注解解析器,并且实战了一下.网上资源真少,搜不到想要的,大多数文章都是提供获取注解的方法,并没有扫描包什么的...看完觉得对你有用的话点个关注再走吧~要先会下面这两个,做起来才能印象深刻不知道注解机制的可以先看下我这篇文章:https://blog.youkuaiyun.com/qq_41806966/article/details/105668779不知道使用策略+配置取代 if else 多分支结构的请先看这篇文章:https://blog..原创 2020-07-11 21:20:20 · 5417 阅读 · 0 评论 -
手把手教你JNI,各种方法,踩坑记录,命令行方式,ide方式(全)
Hello,I'm Shendi;这次学习总结一下 JNI,包括制作的一些小demo(获取屏幕像素值,全局监听键盘事件).什么是JNI?JNI(Java Native Interface) Java本地接口,用于与C/C++进行交互为什么要jni?因为有些东西需要依赖于操作系统,例如我上面说的 获取屏幕像素点,使用Java很难实现(可以截图然后获取图片的像素点)以及键盘监听,Java的话只能在窗体上JFrame这些才可以获取到按下的上面键,但是用C可以很容易获取到如果我原创 2020-07-07 13:40:25 · 7529 阅读 · 4 评论 -
Tomcat访问子项目404,根项目可以访问
I'm Shendi记录一下,在使用了高版本JDK后(我用的14),出现了 不能访问到子项目,但是可以访问 根项目的问题。(等于微服务了),把JDK换回 8 后 就好了。访问其他项目都是 404原创 2020-06-10 07:55:18 · 6735 阅读 · 0 评论 -
Eclipse新建SpringBoot出错SunCertPathBuilderException: unable to find valid
最近换了台电脑,是 win10 操作系统,然后新建 SpringBoot 出错,在网上找解决方法 也没用...最后乱点,发现了个 Security 然后就点出来了...操作 如下Window->Perferences->General->Security 右边就一行文字,点击蓝色部分的文字开启权限,然后直接Apply and Close就可以新建了...原创 2020-06-09 10:34:05 · 7301 阅读 · 0 评论 -
Java去掉JFrame默认窗体样式(装饰)
JFrame自带的窗体装饰很难看,所以我们可以自定义个窗体样式首先,我们需要去掉默认装饰使用JFrame的setUndecorated 方法frame.setUndecorated(true);去掉窗体样式后,就会需要很多的...麻烦需要自己写窗口最小化最大化关闭按钮,和logo什么的,还有拖动...拖动菜单移动窗体下面是我写的一个案例,通过菜单栏拖动 移动窗体(使用的 Window Classic风格).没去掉默认样式之前是这样的代码如下/** ..原创 2020-06-05 12:00:23 · 7850 阅读 · 0 评论 -
Java可视化开发之Eclipse的WindowBuilder插件
I'm Shendi,之前使用到JavaFX,感觉... ....(使用 java 自带的 swing 和 awt 比较多 并且已经熟悉)所以我找了找Eclipse有没有Java自带的swing或者awt的 可视化插件,进行桌面开发当然是可视化开发更简单,效率更高.使用Eclipse的WindowBuilder插件可以让我们进行可视化开发.Eclipse安装WindowBuilder百度搜索WindowBuilder进入官网链接: https://www.eclipse.org/wi原创 2020-06-04 10:45:36 · 7788 阅读 · 1 评论 -
js实现分页
最近使用到 bootstrap 和 thymeleaf.对分页记录一下,下次直接用js 控制数据进行分页. 通过对数据库进行分页查询获取指定数据量的数据 获取到数据后传到前端,js获取. 必要条件: 当前页数 总页数 规定一个按钮组的页数(下面一排按钮显示的数量). 效果1: 点击最后一个按钮就换到下一个按钮组,第一个按钮为当前页数. 点击第一个或不是最后一个按钮则按钮组不变. 实现: 使用求余的方式计算出一个按钮组有多少个按钮. 例如总共有十页,每个原创 2020-06-03 09:42:50 · 7364 阅读 · 0 评论 -
JavaFX桌面开发入门,这一篇文章就够了
最近准备用Java开发桌面软件,以前都是直接用awt,swing,现在准备入手一下JavaFX来开发桌面软件.下载JavaFX(使用JDK7,8...可无视此步骤)JavaFX在JDK7以及之后的版本集成(JDK自带了)但是在Java11被抽离了出来,所以我们使用Java11和后面的版本的JDK都需要自行下载JavaFX.如果嫌麻烦 可以通过我上传的资源进行下载:https://download.youkuaiyun.com/download/qq_41806966/12462366进入官网:h..原创 2020-05-26 23:16:05 · 9787 阅读 · 0 评论 -
Java实现一个Web服务器(支持重定向转发和自定义文件 类似于Tomcat)
目录简介运行效果图404界面(可自定义模板)sws文件(简单的进行重定向)学习前需要的知识整理思路项目目录结构使用的 jar(shendi-kit-1.0.jar)编写启动类StartWebServerServer抽象类(所有服务器类的父类)实现TCP服务器(DefaultServer)请求类(DefaultHttpRequest)响应类(DefaultHttpResponse)了解一下重定向处理资源信息图标处理映射文件处理...原创 2020-05-25 00:38:35 · 8174 阅读 · 3 评论 -
Eclipse设置toString模板以及使用StringBuilder构建
最近用到bean比较多,看到自动生成的toString 是字符串用 + 连接起来的,对于性能来说,这肯定会低效,所以就试着改了一下模板在Eclipse的编辑器处右键进入后界面如下当我们点击String format里的edit 自己可以定制一下返回的文本有时候我们需要用到 json 的模板 如下${member.name} 是参数名${member.value} 是参数值${otherMembers} 后续都按前面的格式返回(没有这个则生成不了)生成结果,性能会比原创 2020-05-14 15:03:43 · 7293 阅读 · 0 评论 -
(foreach)自定义类使用增强for循环
很简单,就两步.实现 Iterable 接口(让此类有迭代能力). 实现 iterator() 方法(返回 Iterator 也就是下面步骤的内部类对象) 定义一个内部类,内部类实现 Iterator<T> 实现 hasNext() 和 next()方法. hasNext用于判断是否有下一个元素,next()是取得下一个元素 实现了上述步骤的类就可以在增强for循环里使用了...原创 2020-05-08 22:02:59 · 6986 阅读 · 0 评论 -
[计算机视觉]RGB十六进制与十进制互转(附Java代码)
在Java中使用BufferedImage的getRGB来获取图像像素值.BufferedImage image = ImageIO.read(new FileInputStream("图片路径"));int color = image.getRGB(x,y);//这里的x,y是像素点的位置返回的是 int 类型(ARGB),例如经常用到的 FF000000(黑色) FFFFFFFF...原创 2020-04-28 16:12:36 · 7778 阅读 · 0 评论 -
Java截图软件实现讲解
一直在找Java有没有可以直接获取鼠标位置的方法,无果,但是知道了Java实现截图软件的原理这里记录一下简单地讲就是点击截图按钮,窗体隐藏,将当前显示的图片保存,使用 Robot 类的这个方法然后创建一个新窗口(无边框,大小与屏幕大小一致) Toolkit t= Toolkit.getDefaultToolkit(); // AWT组件的抽象父类 通过 ...原创 2020-04-24 12:58:48 · 7262 阅读 · 0 评论 -
Java注解,自定义解析
花了一天多的时间学习注解,下面是我的总结(编译时解析器还有点问题)github地址:https://github.com/1711680493点我进入github注释,注解(Annotation)也叫元数据,一种代码级别的说明,它是JDK1.5以上引入的一种特性, 与类,接口,枚举是在同一个层次,它可以声明在 (包,类,字段,方法,局部变量,方法参...原创 2020-04-21 22:06:33 · 6773 阅读 · 0 评论 -
[设计模式]享元模式
github地址:https://github.com/1711680493点我进入github如需了解更多设计模式,请进入我的设计模式专栏享元模式运用共享技术来有效地支持大量细粒度对象的复用.它通过共享已经存在的对象来大幅度减少需要创建的对象数量,避免大量相似类的开销,从而提高系统资源的利用率优点相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中...原创 2020-04-21 09:20:03 · 6590 阅读 · 0 评论 -
[设计模式]解释器模式
github地址:https://github.com/1711680493点我进入github如需了解更多设计模式,请进入我的设计模式专栏解释器模式提供如何定义语言的文法,以及对语言句子的解释方法文法指语言的语法规则,而句子是语言集中的元素正则表达式等都是解释器模式解释器模式是一种行为型模式优点扩展性好,由于在解释器模式中使用类来表示语言的文法规则,因...原创 2020-04-17 08:40:30 · 6784 阅读 · 0 评论 -
[设计模式]观察者模式
github地址:https://github.com/1711680493点我进入github如需了解更多设计模式,请进入我的设计模式专栏观察者模式多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为这种模式有时又称作发布-订阅模式,模型-视图模式,它是对象行为型模式优缺点优点: 降低了目标与观察者...原创 2020-04-15 11:30:55 · 6784 阅读 · 0 评论 -
[设计模式]原型设计模式
github地址:https://github.com/1711680493点我进入github如需了解更多设计模式,请进入我的设计模式专栏原型设计模式将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例在Java中将类实现Cloneable接口 以及重写 clone() 方法,来实现别的类对此类的克隆原型模式实例在一个游戏中,可以将角色作为原型,角色...原创 2020-04-14 21:12:55 · 6844 阅读 · 0 评论 -
[设计模式]单例设计模式
单例设计模式单例设计模式是指某个类只能生成一个实例(对象),该类提供了一个全局访问点供外部获取该实例.可以拓展为有限多例模式代码展示...原创 2020-04-14 20:39:47 · 6684 阅读 · 0 评论 -
Java Swing 贪吃蛇制作
Hello,I'm Shendi 闲来无事写个贪吃蛇耍耍思路呢大概就是一个窗体(JFrame)三个图片(JLabel) 背景 食物 蛇使用一个二维数组代表场景地图...源码在最文章最后,这里就片面的描述一下(伪代码 一个类)public class Snake { //伪代码 纯手码 需要看结果请去获取源码 有问题请留言 //首先,我们需要定义场景 一............原创 2020-04-04 23:44:56 · 7977 阅读 · 0 评论 -
Java[策略模式+工厂+配置]与[多态+反射+配置]总结
Hello,I'm Shendi这次总结一下学习设计模式与之前一些技巧的类似对比(纯手码,如有不对请指正)多态+反射+配置文件取代多分支结构这个很简单,易理解,就是定义一个接口,子类实现接口,重写指定方法来实现相同函数不同处理客户端通过配置方式获取类名,反射调用. 例子:根据用户输入,实现不同媒体的播放接口:interface Media { //播放媒体 ...原创 2020-03-06 14:04:53 · 7350 阅读 · 0 评论 -
NIO笔记
Java的NIO和IO的第一个最大的区别就是 IO 面向流 阻塞IO IO的各种流都是阻塞的,也就是当一个线程调用read或write时, 该线程被阻塞,直到有数据被读取 NIO 面向缓冲区 非阻塞IONIO(new IO)是java 1.4版本开始引入的一个新的io api 在Java 7中 NIO有了进一步的改进,也就是N...原创 2020-02-05 19:17:52 · 6729 阅读 · 0 评论 -
Java的Socket的write和read的一些问题
今天发现一个问题,也算是底层原理吧(猜测)我使用Java的网络编程的ServerSocket和Socket制作一个发送文件的软件结果发现文件大小大于3MB,程序就会卡在 write 函数 示例代码如下,大家可以试一下ServerSocket server = new ServerSocket(9999);Socket socket = new Socket("127.0.0.1",...原创 2020-01-14 16:21:50 · 8035 阅读 · 0 评论 -
[Java密码学] 3、加密Class文件并实现调用加密的文件
Hello,大家好, 我是Shendi,这次给大家带来一系列密码学教程,这次给大家带来了加密Class文件并实现运行加密的Class同系列博文:[Java密码学]1、Java的反射[Java密码学]2、简单加密,解密先说思路,通过第二节我们学会了加密数据(文件),所以我们可以很容易的加密class文件,但是加密后如何运行呢?我们可以通过字节流将加密后的class加载进内存J...原创 2020-01-09 19:21:28 · 7583 阅读 · 0 评论 -
[Java密码学] 2、简单加密,解密
Hello,大家好, 我是Shendi,这次给大家带来一系列密码学教程,这次讲一些简单的数据加密要想实现数据加密我们得知道什么是数据数据的底层都是字节所以我们要实现加密,只需要修改源数据的字节就行了,例如我们想将hello world这个字符串加密,让别人看不懂,我们可以这样,这样再这样...加密算法一/** * -加密算法 插入加一算法 * -在字节数组的第二位插...原创 2020-01-08 11:33:24 · 7046 阅读 · 0 评论