Java
文章平均质量分 87
passerbyYSQ
一个普通蒟蒻的成长之路
展开
-
分布式环境下使用RSA算法实现登录密码的加密传输
RSA是一种非对称加密算法。非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。原创 2022-09-27 00:32:10 · 2555 阅读 · 3 评论 -
idea配置tomcat后找不到网页
最近遇到了一个问题使用servlet的传统JavaWeb项目,配置tomcat启动后找不到网页。下面使用展示将一个空白项目设置为JavaWeb项目,并配置tomcat环境启动项目的整个过程。看你有没有踩坑。原创 2022-07-26 09:29:38 · 8321 阅读 · 4 评论 -
最强案例,【中介者模式】在GUI界面组件中的使用
题目某软件公司欲开发一套CRM系统,其中包含一个客户信息管理模块,所设计的“客户信息管理窗口”界面效果图如图所示。组件之间的交互关系如下:(1) 当用户单击“增加”按钮、“删除”按钮、“修改”按钮或“查询”按钮时,界面左侧的“客户选择组合框”、“客户列表”以及界面中的文本框将产生响应。(2) 当用户通过“客户选择组合框”选中某个客户姓名时,“客户列表”和文本框将产生响应。(3) 当用户通过“客户列表”选中某个客户姓名时,“客户选择组合框”和文本框将产生响应。请使用中介模式实现该系统,并补原创 2021-06-03 16:48:27 · 1138 阅读 · 1 评论 -
从案例到底层原理,彻底理解volatile可见性和禁止指令重排
一. volatile保证可见性public class TestMain { private static boolean flag = false; //private volatile static boolean flag = false; public static void main(String[] args) throws InterruptedException { new Thread(() -> { fla原创 2021-04-11 13:55:34 · 4536 阅读 · 6 评论 -
【面试考点】HashMap的扩容机制、put详解、源码分析,考点问题解答
静态变量介绍static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16原创 2021-03-04 18:05:51 · 1402 阅读 · 3 评论 -
优雅地实现base64字符串的解码,涉及到正则表达式的分组,NIO和jdk1.8的Base64
前言最近用到了一款移动端的裁剪插件 PhotoClip(https://github.com/baijunjie/PhotoClip.js),移动端裁剪之后的图片以base64编码的形式传给后端,后端要对base64进行解码转存成文件存储,基于这个业务需求,实现了一个简单的工具类。其实,网上有很多差不多的代码,只是稍微有点不同。参考别人的代码,自己写出来可能更能让自己满意吧。好,进入正题。分析1、如果不使用其他类库。早期(在jdk1.8以前)在Java上做Base64的编码与解码,会使原创 2021-01-31 13:25:06 · 687 阅读 · 0 评论 -
Java使用dom方式解析和操作xml,递归解析xml以yml格式输出
题目1. 编写程序,解析score.xml文件,要求输出的结果如图1所示。2.编写程序,修改下面的XML文件book.xml,要求:(1)为每一个book元素添加一个author子元素,元素内容自定。(2)修改title元素的值,在文本内容的后面添加文本“(电子工业出版社)”。 例如:<title> Java面向对象编程</title> 变为:<title> Java面向对象编程(电子工业出版社)</title>...原创 2020-12-01 16:01:05 · 1327 阅读 · 2 评论 -
【Java8】Lambda表达式 和 Stream API 详解笔记
视频地址:https://www.bilibili.com/video/BV1ut411g7E9笔记 md 文档:xxx(稍后补上)Lambda表达式概念 Lambda是一个匿名函数,Lambda表达式可以理解为一段可以传递的代码(将代码像数据一样进行传递)引入/** * 匿名内部类 */@Testpublic void test1() { Comparator<Integer> com = new Comparator<Integer>().原创 2020-11-26 16:12:56 · 1165 阅读 · 1 评论 -
关于利用RandomAccessFile实现多线程分段拷贝的问题
前言最近突然冒出了一个想法,利用RandomAccessFile和多线程实现文件的分段拷贝,跟直接用流复制,会不会耗时更短呢? 本来想着,多线程同时拷贝,耗时应该会更短。但事实上,并非如此。绝大多数情况会更慢,不管线程开多少个。原因可能如下:1、RandomAccessFile 效率更能没有 Buffer 流高2、线程开的越多,线程调度切换的代价也会变高3、由于多线程分段拷贝,底层磁盘的磁头频繁变化,增加了磁盘寻道时间和定位时间。换言之,对于多线程拷贝以及直接通过流复制,都是将磁盘数据原创 2020-11-08 10:49:02 · 812 阅读 · 0 评论 -
Eclipse集成tomcat,不用任何框架,自己封装原生servlet和jdbc,实现小型web项目
引入其实这源于软件体系结构这门课程的实验作业,体验B/S体系结构风格,原实验要求我们实现简单的注册登录功能。然而学校的课程体系结构很迷,php和java web等技术型课程全是选修,而且这学期的java web课程,跳过了servlet直接教SSM。所以实验课老师给出了php和java的代码,但是代码比较简单,不考虑功能扩展。我还是选择自己写吧。。。在Eclipse EE上集成tomcat,自己封装原生 servlet 和 jdbc,实现登录demo。同时,这样的封装能够支持在不用任何java原创 2020-10-02 20:46:35 · 809 阅读 · 0 评论 -
经典软件体系结构风格(二):层次软件体系结构。例程代码优化!
实验内容截取实验目的(1)理解基于事件的隐式调用软件体系结构、层次软件体系结构的原理(2)掌握事件的隐式调用软件体系结构、层次软件体系结构的实例(3)事件的隐式调用软件体系结构、层次软件体系结构的编程实现实现内容2.层次软件体系结构基于层次软件体系结构的软件测试系统。第一层为用户图形界面层public class TestingGUI extends JPanel { private JTextArea txtTestInfo, txtTestcase; priva原创 2020-09-15 20:54:32 · 3302 阅读 · 1 评论 -
【Swing】JPanel重写paint()后按钮被遮挡,点击按钮键盘监听失效
效果图内容说明上图是我们小组做的泡泡堂,在接近项目结尾时,我接手一个小任务,就是在游戏进行界面底部增加截图中的3个按钮,并实现部分功能(有些按钮的功能组员已经实现了,我只需要调用他们的方法就可以了)。下面,我来将遇到的问题抽离出来,记录到博客。我相信应该也有同学会遇到这些问题。1、如何布局能更好的将按钮组放在面板的底部居中位置?并且看起来像悬浮在地图之上。2、由于面板中复写了paint()方法,导致按钮组被遮挡。但是当鼠标移上去,按钮组又可以显现出来。3、点击底部任意一个按钮后,键原创 2020-07-27 15:44:20 · 955 阅读 · 0 评论 -
【Java】实现wav格式音乐的 播放、停止、循环播放、音量调节
前言最近一段时间,学校请了达内的老师给我们上Java初级实训课。实训上完后,分组选题,做小游戏。我们小组选了 泡泡堂,小组将近5天的协作编码,终于差不多做完了。之后我也会把一些收获的东西抽离出来,总结到博客上去。期间我有负责游戏音效、BGM的工作,经上网查询资料,自己写了一个简单的音乐播放类,来满足我们的游戏的需求。该工具类,没有调用其他第三方jar包,用的是JDK底层API。只支持wav格式的音乐文件。代码MusicPlayer.javapackage com.tedu.mana原创 2020-07-22 17:27:47 · 9621 阅读 · 15 评论 -
【Socket网络编程】【2】UDP快速入门
1、一种数据报协议,并非面向连接。它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份。可应用于:DNS, TFTP, SNMP,实时传输2、UDP包的最大长度是65507 字节3、UDP的核心API介绍(1)DatagramSocket:用于接收与发送UDP包的类DatagramSocket():创建简单实例,不指定端口和ip。如果使用这个实例来发送UDP包,它会复用本地可用的端口,ip是本机的ip。DatagramSocket(int port):创建监听固定端口的实.原创 2020-07-09 14:01:29 · 501 阅读 · 1 评论 -
【Socket网络编程】【1】TCP牛刀小试
1、Socket简单理解在网络传输中用于唯一标识两个端点之间的逻辑连接端点:IP地址+端口2、TCP的简单理解TCP是面向连接的通信协议,故只能用于 端到端(一对一) 的通信。通信前需要通过三次握手建立连接,通信结束后要释放连接。TCP协议发送数据后会受到回复确认。3、UDP的简单理解UDP是面向无连接的通信协议,发送数据的时候是以数据包的形式发送的,UDP数据包中包括 目的端口号 和 源端口号 的信息。由于通信不需要连接,所以可以实现广播发送,并不局限于端到端。UDP协议.原创 2020-06-16 00:37:44 · 243 阅读 · 0 评论 -
【Java8】【新时间API】常见的时间显示规则
import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;import java.time.temporal.ChronoUnit;/** * @author passerbyYSQ * @create 2020-04-26 20:23 */public class TimeFormatte...原创 2020-04-26 21:28:11 · 681 阅读 · 0 评论 -
【Java8】【最全面】的【新时间API】快速入门详解
前言1、对Java8新时间API的较为全面的总结,可基本满足大部分关于时间操作的需求。2、当然,能了解Java8新时间API,默认你已经基本掌握旧的时间API。3、博客不去说旧时间API有啥弊端,也不对新旧API做比较。而是着重于较为全面总结新时间API的用法。LocalDate, LocalTime, LocalDateTime这三个类有许多类似的方法,将以 Local...原创 2020-04-20 16:46:52 · 672 阅读 · 0 评论 -
【Java SE】【Swing】【实作】薪酬管理系统
系统运行图前言这个实作项目是学校布置下来的,是上完Java SE课程后的一个实战。界面采用:Swing (快速搭建界面采用WindowBuilder)。这就是我为什么不用idea,而用eclipse的原因。设计的知识基本上就是数据库的增删改查操作和Swing的知识。重点和难点主要是:1、如何自己设计和实现数据库操作的封装2、多条件查询时的代码设计(数据...原创 2020-04-05 16:28:45 · 712 阅读 · 2 评论 -
【JAVA】从URL下载文件到本地的工具类
package utils;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.Closeable;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;im...原创 2020-04-05 14:20:49 · 951 阅读 · 1 评论 -
【JavaSE】数据库连接的封装 和 通用的基础的增删改查操作的封装(支持LocalDatetime)
package dao;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.net.URL;import java.net.URLDecoder;import java.sql.Connection;import java.sql.DriverManager;import ja...原创 2020-03-20 01:03:44 · 295 阅读 · 0 评论 -
JAVA【多线程】模拟顾客试衣服(合理分析设计)
作业题:顾客进服装店的购物过程包含三个环节,选衣服,试衣服,结账离开。其中选衣服环节和试衣服环节需要的时间为 1-5秒不等(随机),结账离开环节5秒,该店只有一间试衣间(不能两人同时使用)。 请编写一个程序模拟每隔一段时间有一个个顾客进店购买的过程。程序执行过程中,输出每个顾客所处的环节信息。 比如,顾客1在试衣服,顾客2,在选衣服,顾客2在试衣服。 提示,用线程调度。(PS:老师布...原创 2019-12-04 16:54:45 · 1433 阅读 · 0 评论 -
【JAVA】递归以及NIO2实现文件夹的相关操作(复制、删除、移动、搜索文件)
在java中,无法直接对文件夹(目录)进行复制、移动、删除等操作。自己可以通过递归来实现。下面代码给出递归实现的参考。注意:对文件夹的相关操作简单封装成工具类,代码注重递归的实现,不关注对传入的路径的判断。比如说:复制操作中将父目录复制到其子目录下,这样是非法的。但在对应的函数中并未进行判断。做过简单的测试,未发现问题。若有问题,欢迎指出!package com.director...原创 2019-11-16 12:20:49 · 613 阅读 · 0 评论 -
Java类的设计作业题——组装电脑
题目类的设计应用:计算机组装店有很多品牌的计算机配件,包括处理器(CPU)、主板(mainBoard)、内存(Ram)、……等。 每种配件都多个厂家(company)、型号(type)、价格(price)三个基本信息。按下图所示的类的关系和要求编写适当的类,实现相关的功能。1、假设每种配件有两个厂家,每个厂家产品有两个型号,每个型号价格不同2、程序运行时逐个显示不同配件的型号,提供 配...原创 2019-10-13 20:43:37 · 2756 阅读 · 1 评论 -
【洛谷】P1032字串变换—Java代码
题目原题链接前言今天上洛谷发现,我终于从蓝名升为绿名了。。开森。。。回到正题,由于这学期在学java,就想着用java敲。结果被自己秀的头皮发麻,用java最好要了解它源码的底层实现原理,不然很可能会用错的,这种错误就很难找了。在调了两个小时我的java代码后还是不行,我就去恰饭了。晚上我用C/C++把这题又敲了一遍,交上去结果跟之前的java代码一样,在比对了题解区的代码和我的...原创 2019-10-10 00:56:22 · 640 阅读 · 1 评论 -
Java实现多级排序
前言刚学习java,就想着在oj做题上时也用java,顺便熟悉一下java的语法。最近学到集合,突然想起之前在scnu oj上做过的一道多级排序的题。于是就动手用java写了一遍。题目代码import java.text.DecimalFormat;import java.util.Iterator;import java.util.Scanner;import jav...原创 2019-10-01 18:17:31 · 2989 阅读 · 0 评论 -
如何写正则表达式校验【整数】和【浮点数】的正确格式
题目分别编写名字为TestPackageCalss和MyException类,实现一下功能:在控制台串中输入一串字符,并判断,如果是整数字符串,则转换成Ingeger对象,如果是浮点数字符串则转换成Double对象,并格式化为 $#....#.##(不用四舍五入输出进度到小数点后面两位),如果是非数字,则抛出显式抛出自定义异常类MyException,异常信息是“输入了数据无法实现数字格式转换...原创 2019-09-26 00:22:04 · 7388 阅读 · 0 评论 -
java实现身份证号码的严格校验!
题目设计一个名字为IdCardCheck.java类,实现从键盘输入一个身份证号码字符串,判断输入的字符串是否符合身份证号码的规则,如果符合,计算输出年龄并输出它的年龄,输出你出生在那一年的第几周以及出生到现在已经经过了几周了。如果不符合,提示,并让其重新输入。直到输入正确身份证号码为止。(备注:作业题,描述不算很严谨,大体功能还是明确的)分析身份证号码基本格式的校验要用到【正则表达式...原创 2019-09-20 21:06:23 · 9153 阅读 · 4 评论 -
编写一个程序,使用for循环打印由" * " 号构成的实心棱形和空心棱形
题目编写一个程序,使用for循环打印由" * " 号构成的实心棱形和空心棱形。如下图所示思路我们不妨假设这两个菱形是:正方形旋转45°得到的。在这个假设下去写代码,那为什么打印出来的图形不像是正方形?因为控制台的行间距和字符间距不一致的原因,问题不大。不知道大家记不记得高中学习【线性规划】时如何表示一块区域的:联立多条不等式。既然两块菱形的区域是规则的,我们也可以用多条不等式...原创 2019-09-11 17:02:42 · 2772 阅读 · 0 评论 -
最通俗易懂的Java DecimalFormat类的使用
下面代码是DecimalFormat类的特殊字符'#', '0', '.'的使用对于这三个字符的作用,测试比较全面,层次也比较清晰,注释我也做的很通俗,都是边测边总结的。希望对初学者有帮助,大神勿喷import java.text.DecimalFormat;public class DecimalFormatTest { public static void main(Str...原创 2019-09-11 16:13:13 · 317 阅读 · 0 评论