202109-29 java简单实现斗地主发牌功能 本文实例为大家分享了java简单实现斗地主发牌的具体代码,供大家参考,具体内容如下问题:参考斗地主的游戏规则,完成一个发牌的功能(54张牌,考虑点数,花色;三名玩家,其中地主比其他玩家多3张牌)要求实现以下功能:1、洗牌2、发牌(发牌按照常规方式A-B-C-A-B-C-A…,不允许一次性随机17张给某个玩家)3、玩家手中牌的展示(要求按点数实现排序)分析运用面向对象的程序设计思维分为扑克、玩家和游戏三部分,扑克类属性有花色,点... 继续阅读 >
202109-29 Java实现斗地主的发牌功能 斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异,今天我们先来实现一下斗地主中的发牌功能,为了程序的可读性以及可拓展性,此次我们使用面向对象的方法来实现此功能。首先,斗地主要求有扑克和玩家才能开始游戏,所以这里我们首先要创建一个扑克牌实体类和一个玩家实体类,具体代码如下:首先是Poker类,含点数,花色和排序属性,大小王之后额外添加,这里我们必须实现一个Comparable接口,方便之后进行排序:p... 继续阅读 >
202109-29 Java实现斗地主小游戏 本文实例为大家分享了Java实现斗地主小游戏的具体代码,供大家参考,具体内容如下原理图:斗地主过程: * 1、组合牌 * 2、洗牌 * 3、发牌 * 4、看牌代码实现:packageitcast.demo6;importjava.util.ArrayList;importjava.util.Collections;importjava.util.HashMap;publicclassDouDiZhu{publicstaticvoidmain(String[]args){//1、组合牌//创建Map集合,键:... 继续阅读 >
202109-29 浅谈java如何实现Redis的LRU缓存机制 目录LRU概述使用LinkedHashMap实现 使用LinkedHashMap简单方法实现双链表+hashmapLRU概述最近使用的放在前面,最近没用的放在后面,如果来了一个新的数,此时内存满了,就需要把旧的数淘汰,那为了方便移动数据,肯定就得使用链表类似的数据结构,再加上要判断这条数据是不是最新的或者最旧的那么应该也要使用hashmap等key-value形式的数据结构。使用LinkedHashMap实现 packagethread;importjava.util.LinkedHashMap;importj... 继续阅读 >
202109-28 java过滤特殊字符操作(xss攻击解决方案) XSS,全名:cross-sitescripting(跨站点脚本),是当前web应用中最危险和最普遍的漏洞之一。攻击者尝试注入恶意脚本代码(常js脚本)到受信任的网站上执行恶意操作,用户使用浏览器浏览含有恶意脚本页面时,会执行该段恶意脚本,进而影响用户(比如关不完的网站、盗取用户的cookie信息从而伪装成用户去操作)等等。它与SQL注入很类似,同样是通过注入恶意指令来进行攻击。但SQL注入是在服务器端上执行的,而XSS攻击是... 继续阅读 >
202109-24 快速上手Java单元测试框架JUnit5 为什么学JUnit5Java技术栈的单元测试框架有两个:JUnit和TestNG,有种说法是TestNG比JUnit更强大,学TestNG就够了,但是当我打开GitHub看到star的时候,犹豫了:JUnitTestNG相差了足足有3K之多。带着这个困惑,我在网上查阅了一番资料,原来JUnit5相较于JUnit4有了重大升级,已经包含了TestNG的所有功能。为了坚定我学JUnit的想法,我咨询了身边做Java开发的朋友,开发写UT都是用的JUnit。这两个理由足以让我开始对JUnit5的学习。J... 继续阅读 >
202109-24 java中基本注解的知识点总结 1、java.lang.Override是一个标记类型注解,它被用作标注方法.他说明了该方法是继承了父类的方法,就是重写了父类中同名方法。@OverridepublicvoidonCreate(BundlesavedInstanceState){…….}这种写法是正确的,如果你写成:@Overridepublicvoidoncreate(BundlesavedInstanceState){…….}编译器会报如下错误:Themethodoncreate(Bundle)oftypeHelloWorldmustoverrideorimplementasupertypemethod,以确保你正确... 继续阅读 >
202109-24 Java SSH 秘钥连接mysql数据库的方法 当目标数据库不能直连的,需要一个服务器作为中间跳板的时候,我们需要通过SSH通道连接数据库。ps:使用ssh连接,相当于本地开了个端口去连接远程的服务,就是ssh通道,本地起的项目监听本地的端口,就可以使用这个通道进行数据传输。1、引入依赖<dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version></dependency>2、代码编写#ssh连接是否开启s... 继续阅读 >
202109-24 Java 数组内置函数toArray详解 java.util.List中的toArray函数java.util.List<E>@NotNullpublicabstract<T>T[]toArray(@NotNullT[]a)Returnsanarraycontainingalloftheelementsinthislistinpropersequence(fromfirsttolastelement);theruntimetypeofthereturnedarrayisthatofthespecifiedarray.Ifthelistfitsinthespecifiedarray,itisreturnedtherein.Otherwise,anewarrayisallocatedwiththeruntim... 继续阅读 >
202109-24 利用Java设置Word文本框中的文字旋转方向的实现方法 Java设置Word文本框中的文字旋转方向本次程序测试环境如下:Word测试文档版本:.docx2013WordJar包工具:freespire.doc.jar3.9.0代码编译工具:IDEAJdk版本:1.8.0导入操作文档所需的jar包工具,如图结果:Javaimportcom.spire.doc.*;importcom.spire.doc.documents.*;importcom.spire.doc.fields.TextBox;importcom.spire.doc.fields.TextRange;importjava.awt.*;publicclassSetTextDirection{publicstaticvoid... 继续阅读 >
202109-24 详解Java的Proxy动态代理机制 目录一、Jvm加载对象二、代理模式2.1、基本描述2.2、静动态模式三、静态代理四、动态代理4.1、场景描述4.2、基础API案例4.3、代理类结构4.4、JDK源码五、源代码地址一、Jvm加载对象在说Java动态代理之前,还是要说一下Jvm加载对象的过程,这个依旧是理解动态代理的基础性原理:Java类即源代码程序.java类型文件,经过编译器编译之后就被转换成字节代码.class类型文件,类加载器负责读取字节代码,并转换成java.lang.Class对象,描... 继续阅读 >
202109-22 Java实现简单局域网聊天室 本文实例为大家分享了Java实现简单局域网聊天室的具体代码,供大家参考,具体内容如下Java的Socket编程:1、TCP协议是面向连接的、可靠的、有序的、以字节流的方式发送数据,通过三次握手方式建立连接,形成传输数据的通道,在连接中进行大量数据的传输,效率会稍低2、Java中基于TCP协议实现网络通信的类客户端的Socket类服务器端的ServerSocket类3、Socket通信的步骤①创建ServerSocket和Socket②打开连接到Socket的输... 继续阅读 >
202109-22 Java实现二维数组和稀疏数组之间的转换 目录前言1.需求和思路分析2.代码实现和展示3.总结参考视频前言用Java实现二维数据和稀疏数组之间的转换1.需求和思路分析1.1以二维数组的格式模拟棋盘、地图等类似的二维结构为基础,与稀疏数组之间进行转化。1.2思路分析二维数组转化为稀疏数组遍历原始的二维数组,得到有效数据个数sum根据sum就可以创建稀疏数组sparseArrint[sunm+1][3]将二维数组的有效数据存入到稀疏数组稀疏数组转为二维数组先读取稀疏... 继续阅读 >
202109-22 Java中PriorityQueue实现最小堆和最大堆的用法 目录一、基本介绍 1、介绍2、用法3、最小堆4、最大堆5、其他优先级二、常用方法三、相关练习题一、基本介绍 1、介绍学习很多算法知识,力争做到最优解的学习过程中,很多时候都会遇到PriorityQueue(优先队列)。一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的Comparator进行排序,具体取决于所使用的构造方法。优先级队列不允许使用null元素。依靠自然顺序... 继续阅读 >
202109-22 探讨Java中的深浅拷贝问题 目录一、前言二、浅拷贝三、深拷贝一、前言拷贝这个词想必大家都很熟悉,在工作中经常需要拷贝一份文件作为副本。拷贝的好处也很明显,相较于新建来说,可以节省很大的工作量。在Java中,同样存在拷贝这个概念,拷贝的意义也是可以节省创建对象的开销。Object类中有一个方法clone(),具体方法如下:protectednativeObjectclone()throwsCloneNotSupportedException;1.该方法由protected修饰,java中所有类默认是继承Object类... 继续阅读 >
202109-22 分析Java中Map的遍历性能问题 目录一、引言二、迭代器测试三、迭代器源码探究四、其他遍历方法4.1、增强型for循环4.2、Map.forEach4.3、Stream.forEach五、总结一、引言我们知道javaHashMap的扩容是有成本的,为了减少扩容的次数和成本,可以给HashMap设置初始容量大小,如下所示:HashMap<string,integer="">map0=newHashMap<string,integer="">(100000);但是在实际使用的过程中,发现性能不但没有提升,反而显著下降了!代码里对HashMap的操作也只有遍... 继续阅读 >