202010-08 Java实现简易俄罗斯方块 本文实例为大家分享了Java实现简易俄罗斯方块的具体代码,供大家参考,具体内容如下一、将对象抽象为类首先考虑俄罗斯方块游戏中含有哪些具体的对象,对象中含有哪些具体属性和方法,然后用代码来实现。建立如下类:Cell类:代表最小的方格单位,构成7种图形的最基本图形。 含有row(行号),col(列号),image(对应的图片)属性, 含有left(左移),right(右移),drop(下落)方法。Tet... 继续阅读 >
202010-08 五种JAVA GUI布局管理的方式 1.流式布局(FlowLayout)定义:通俗地说,流式布局就是根据窗口大小,自动改变窗口内组件的位置。例如:原窗口大小一行可以容纳10个BUTTON,但将窗口缩小后,每行仅能容纳5个BUTTON,此时原先的10个BUTTON中的五个就会自动排列到下一行。示例:(省略panel的使用)Hashsetpackage布局管理;importjava.awt.*;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;publicclassLayout{//流... 继续阅读 >
202010-08 五种JAVA GUI布局管理的方式 1.流式布局(FlowLayout)定义:通俗地说,流式布局就是根据窗口大小,自动改变窗口内组件的位置。例如:原窗口大小一行可以容纳10个BUTTON,但将窗口缩小后,每行仅能容纳5个BUTTON,此时原先的10个BUTTON中的五个就会自动排列到下一行。示例:(省略panel的使用)Hashsetpackage布局管理;importjava.awt.*;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;publicclassLayout{//流... 继续阅读 >
202010-08 Java及nginx实现文件权限控制代码实例 我们知道,使用nginx作为文件下载服务器,可以极大地降低对后端Java服务器的负载冲击,但是nginx本身并不提供授权控制,因此好的方案是由后端服务器实现权限控制,最好的方式是直接复用应用的认证体系,最大化的降低成本。因此,可借助http的"X-Accel-Redirect"头实现该特性。具体如下:location/bookres/{#禁止浏览器直接访问internal;limit_rate200k;aliasd:/test/bookres/;#转由后台处理(tomcat等web容器)e... 继续阅读 >
202010-08 深度思考JDK8中日期类型该如何使用详解 在JDK8之前,处理日期时间,我们主要使用3个类,Date、SimpleDateFormat和Calendar。这3个类在使用时都或多或少的存在一些问题,比如SimpleDateFormat不是线程安全的,比如Date和Calendar获取到的月份是0到11,而不是现实生活中的1到12,关于这一点,《阿里巴巴Java开发手册》中也有提及,因为很容易犯错:不过,JDK8推出了全新的日期时间处理类解决了这些问题,比如Instant、LocalDate、LocalTime、LocalDateT... 继续阅读 >
202010-08 Java类加载机制实现流程及原理详解 前言我们知道,Java项目编译后会生成许许多多的class文件,class文件保存着类的描述信息。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转化解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类的生命周期类从被加载到虚拟机内存中开始,到卸载出内存位置,他的整个生命周期包括:加载验证准备解析初始化使用卸载这七个阶段。画个图就是下面这样:其中,类加... 继续阅读 >
202010-08 Java Reactor反应器模式使用方法详解 Reactor反应器模式到目前为止,高性能网络编程都绕不开反应器模式。很多著名的服务器软件或者中间件都是基于反应器模式实现的,如Nginx、Redis、Netty。反应器模式是高性能网络编程的必知、必会的模式。Reactor简介反应器模式由Reactor反应器线程、Handlers处理器两大角色组成:(1)Reactor反应器线程的职责:负责响应IO事件,并且分发到Handlers处理器。(2)Handlers处理器的职责:非阻塞的执行业务处理逻辑。从上面的反应... 继续阅读 >
202010-08 Java程序去调用并执行shell脚本及问题总结(推荐) 摘要:该文章来自阿里巴巴技术协会(ATA)精选集背景我们在开发过程中,大部分是java开发,而在文本处理过程中,主要就是脚本进行开发。java开发的特点就是我们可以很早地进行TDDL,METAQ等等地对接;而脚本开发的特点就是在进行批处理的时候非常方便。背景我们在开发过程中,大部分是java开发,而在文本处理过程中,主要就是脚本进行开发。java开发的特点就是我们可以很早地进行TDDL,METAQ等等地对接;而脚本开发的... 继续阅读 >
202010-08 JAVA 对接腾讯云直播的实现 签名授权publicstaticTTecentDoPostJsonV3(Stringurl,Stringkey,StringsecretId,TecentPublicParamsheader,Stringjson,OkHttpClienthttpClient,Classclazz)throwsException{//*************步骤1:拼接规范请求串*************Stringdate=DateUtils.format(newDate(Long.valueOf(header.getX_TC_Timestamp()+"000")),DateUtils.FORMAT_SHORT);Stringservice=url.substring(0,url.indexOf("."))... 继续阅读 >
202010-08 JAVA 对接腾讯云直播的实现 签名授权publicstaticTTecentDoPostJsonV3(Stringurl,Stringkey,StringsecretId,TecentPublicParamsheader,Stringjson,OkHttpClienthttpClient,Classclazz)throwsException{//*************步骤1:拼接规范请求串*************Stringdate=DateUtils.format(newDate(Long.valueOf(header.getX_TC_Timestamp()+"000")),DateUtils.FORMAT_SHORT);Stringservice=url.substring(0,url.indexOf("."))... 继续阅读 >
202010-08 Java Enum和String及int的相互转化示例 一、定义性别枚举枚举(enum),是指一个经过排序的、被打包成一个单一实体的项列表。使用枚举增加程序可读性、降低耦合性。/***性别枚举*/publicenumGender{male("男"),female("女");privateStringname;privateGender(Stringname){this.name=name;}publicStringgetName(){returnname;}}二、枚举的基本方法对于male枚举常量:publicclassMyMain{publicstaticvoidmain(String[]ar... 继续阅读 >
202010-08 过滤器 和 拦截器的 6个区别(别再傻傻分不清了) 周末有个小伙伴加我微信,向我请教了一个问题:老哥,过滤器(Filter)和拦截器(Interceptor)有啥区别啊?听到题目我的第一感觉就是:简单!毕竟这两种工具开发中用到的频率都相当高,应用起来也是比较简单的,可当我准备回复他的时候,竟然不知道从哪说起,支支吾吾了半天,场面炒鸡尴尬有木有,工作这么久一个基础问题答成这样,丢了大人了。平时觉得简单的知识点,但通常都不会太关注细节,一旦被别人问起来,反倒说不出个... 继续阅读 >
202010-08 Vue.Js及Java实现文件分片上传代码实例 说明代码从项目中剥离修改,未经测试,仅提供思路。前端upload(file){//从后台获取已经上传的文件分片数getIdx(md5).then(function(res){letretry=3;uploadPart(retry,file,res.data);}).catch();}uploadPart(retry,file,idx){//设置分片大小(单位Byte)letbufferLength=1024*1024*5;//计算开始的切割点,idx是上传成功的分片数,未上传过文件则开始点为0letstart=idx*bufferLength;//... 继续阅读 >
202010-08 Java SPI机制原理及代码实例 SPI的全名为:ServiceProviderInterface,大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下JavaSPI机制的思想。我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就... 继续阅读 >
202010-08 详解java中的阻塞队列 阻塞队列简介阻塞队列(BlockingQueue)首先是一个支持先进先出的队列,与普通的队列完全相同;其次是一个支持阻塞操作的队列,即:当队列满时,会阻塞执行插入操作的线程,直到队列不满。当队列为空时,会阻塞执行获取操作的线程,直到队列不为空。阻塞队列用在多线程的场景下,因此阻塞队列使用了锁机制来保证同步,这里使用的可重入锁;而对于阻塞与唤醒机制则有与锁绑定的Condition实现应用场景:生产者消费者模式java中的... 继续阅读 >
202010-07 Java实现8种排序算法的示例代码 冒泡排序O(n2)两个数比较大小,较大的数下沉,较小的数冒起来。publicstaticvoidbubbleSort(int[]a){//临时变量inttemp;//i是循环次数,也是冒泡的结果位置下标,5个数组循环5次for(inti=0;i<a.length;i++){//从最后向前面两两对比,j是比较中下标大的值for(intj=a.length-1;j>i;j--){//让小的数字排在前面if(a[j]<a[j-1]){temp=a[j];... 继续阅读 >