Java
文章平均质量分 82
是一只萨摩耶
编程很枯燥,但是养只修勾一定很有趣
展开
-
Java学习之JavaWeb篇
有Java基础的同学应该知道,Web技术在工作中是何等的重要,后台管理系统、小程序、APP等应用都离不开JavaWeb技术,在找工作时,Javaweb是必考点,也是加分项!急你所急,解你所需,黑马《2023最新JavaWeb开发教程》重磅发布啦!整个学习路线不仅紧贴企业实际开发需求,摒弃了传统路线中的很多“老旧技术点”,还用实战案例贯穿整个学习过程,将理论与实践相结合,让大家学练结合,用一套教程,搞定前后端开发!⑤参照企业开发模式,需求分析-表结构设计-接口文档-功能接口实现-测试-联调。原创 2023-03-24 10:28:23 · 425 阅读 · 0 评论 -
消息中间件有什么优势?消息中间件常用协议有哪些?
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM 开发的一个即时通讯协议,有可能成为物联网的重要组成部分。通过MQ 架构设计,就可将紧急重要(需要立刻响应)的业务放到该调用方法中,响应要求不高的使用消息队列,放到MQ队列中,供消费者处理。Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。原创 2023-03-08 17:01:25 · 437 阅读 · 0 评论 -
怎样编写java程序
搭建好了Java开发环境之后,下面就来学习一下如何开发Java程序。为了让初学者更好地完成第一个Java程序,接下来通过几个步骤进行逐一讲解。1.编写Java源文件在D盘根目录下新建一个test文件夹,并在该文件夹中新建文本文档,重命名为HelloWorld.java后,用记事本方式打开,在其中编写一段Java代码,如文件1所示。文件1 HelloWorld.java文件1中的代码实现了一个Java程序,下面对其中的代码进行解释说明。● class是一个关键字,它用于定义一个类。在Java中,类就是一个程原创 2023-03-07 10:54:58 · 9468 阅读 · 3 评论 -
Spring Cloud Hystrix原理详细介绍
借助官网的一个例子来说明,假设某个应用程序依赖30多个服务,每个服务正常运行的概率是99.99%,那么系统可用的概率是99.9930=99.7%,也就是说,每个服务出现故障的概率是0.3%,十亿个请求的故障就是3000000个,即使所有依赖具有出色的正常运行时间,每个月至少会有2小时以上的服务是不可用的,现实情况中,情况可能会更糟糕。(5) 在一段时间内,如果服务调用的异常次数超过一定阈值,就会触发熔断停止对特定服务的所有请求,在一定时间内对服务调用直接降级,一段时间后再次进行自动尝试恢复。原创 2023-03-03 14:44:34 · 506 阅读 · 0 评论 -
字符流定义及如何深入理解字符流的编码
执行流程是:先通过UTF-8编码把“黑马”编码成几个字节比如13 42 35 86 59 47,然后再通过GBK编码,把该码值解码成对应的字符比如“传智人”,然后“传智人”进入缓冲区会通过GBK编码编码成刚才的字节 也就是13 42 35 86 59 47,然后再通过字节流写入到b.txt中,当打开b.txt时,记事本软件会按照此文件编码格式-UTF-8解码成“黑马”,所以我们看到的是没有乱码。三、文本文件的底层存储的也是字节,我们打开文件看到的字符,是记事本软件所做的解码。字符流只能对文本字符进行操作。原创 2023-03-01 10:08:59 · 348 阅读 · 0 评论 -
Java程序开发中如何使用lntelliJ IDEA?
创建好chaptero1项目之后,就可以在项目中创建Java类了。在IDEA项目结构页面中,右击chapter01项目下的sre文件夹,在弹出的快捷菜单中选择New→Java Class命令,进入New Java Class选项界面,有很多可以选择的类型,本次选择Class选项创建一个Java类,并在上面的文本框中输入类名称HelloWorld,然后按Enter键完成Java类的创建。单击工具栏中的▶按钮运行程序,或者单击代码中HelloWorld类左侧的▶按钮运行程序,控制台显示运行结果,如下图所示。原创 2023-02-28 11:01:53 · 485 阅读 · 0 评论 -
Spring Boot框架有哪些优点?
例如,在Web开发时,只需在构建项目时选择对应的Web场景依赖启动器spring-boot-starter-web,Spring Boot项目便会自动导入spring-webmvc、spring-web、spring-boot-starter-tomcat等子依赖,并自动下载和获取Web开发需要的相关JAR包。在构建Spring应用时,我们只需要添加相应的场景依赖,Spring Boot就会根据添加的场景依赖自动进行配置,在无须额外手动添加配置的情况下快速构建出一个独立的Spring应用。原创 2023-02-28 10:29:45 · 1133 阅读 · 0 评论 -
Java多级缓存是为了解决什么的?
CDN:Content Delivery Network,即内容分发网络,它是构建在现有网络基础上的虚拟智能网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、调度及内容分发等功能模块,使用户在请求所需访问的内容时能够就近获取,以此来降低网络拥塞,提高资源对用户的响应速度。为了提高缓存的可用性,会在原有的缓存节点上加入 Master/Slave 的设计。分布式缓存是与应用分离的缓存服务,最大的特点是,自身是一个独立的应用/服务,与本地应用隔离,多个应用可直接共享一个或者多个缓存应用/服务。原创 2023-02-14 14:55:54 · 488 阅读 · 0 评论 -
【Java技术】基于Http的文件断点续传实现
我对RandomAccessFile类的理解是:RandomAccessFile类是java提供的一个可以用于随机读写文件内容的类,我们可以对RandomAccessFile类关联的文件中的任意位置和任意大小的数据进行任意的读写操作;因此要想完成文件的断点续传操作,该类的使用是必不可少的!(4). 可以通过打开线程任务中模拟意外情况的代码,让下载出现意外,当程序出现意外后,配置文件不会删除,且会记录下所有线程已经完成的下载量,以便于下次执行下载任务的时候,可以在此基础上继续完成下载任务;原创 2023-02-14 14:41:39 · 877 阅读 · 0 评论 -
面板组件应该怎样使用?Swing面板组件介绍
第21~26行代码创建创建了一个面板组件pane并在panel中添加了4个按钮,第28行代码设置panel面板在滚动面板sollane中显示:第30行代码向f容器窗口中添加滚动面板组件srellPane最后,在main() 方法中使用SwingUtilities工具类封装好的createAndShowGUI( )方法显示CUI程序。如果在构造方法中设定显示组件和滚动条策略,可以调用JScrollPane提供的成员方法法进行设置,JScrollPane面板滚动策略的执行方法如表所示。原创 2023-02-10 14:53:55 · 439 阅读 · 0 评论 -
Java面试题:Applet和普通的Java应用程序有哪些区别?
当applet是从客户端的本地磁盘载入的时候,applet是由文件系统加载器载入的。从网络上加载的applet和从本地文件系统加载的applet有一定区别。当applet是从网络上加载的时候,applet是由applet类加载器载入的,它受applet。applet是运行在启用了java的浏览器中,Java应用程序是可以在浏览器之外运行的独立的Java程序。不受信任的applet是不能访问或是执行本地系统文件的Java applet,默认情况下,所有下载的applet都是不受信任的。原创 2023-02-09 15:20:49 · 585 阅读 · 0 评论 -
Java中if结构语句有几种格式?怎样执行?
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。分析: ①小明的考试成绩未知,可以使用键盘录入的方式获取值 ②由于奖励种类较多,属于多种判断,采用if…需求:小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明 的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。③如果关系表达式的值为false就执行语句体2。②如果关系表达式的值为true就执行语句体1。②如果关系表达式的值为true就执行语句体。①首先计算关系表达式1的值。原创 2023-02-07 14:22:33 · 1022 阅读 · 0 评论 -
Java线程的生命周期状态详情
上图中展示了线程各种状态的转换关系,箭头表示可转换的方向,其中,单箭头表示状态只能单向的转换,例如,线程只能从新建状态转换到就绪状态,反之则不能;一个线程启动后,它可能不会一直处于运行状态,当运行状态的线程使用完系统分配的时间后,系统就会剥夺该线程占用的CPU资源,让其他线程获得执行的机会。需要注意的是,只有处于就绪状态的线程才可能转换到运行状态。·当在一个线程中调用了另一个线程的join()方法时,会使当前线程进入阻塞状态,在这种情况下,需要等到新加入的线程运行结束后才会结束阻塞状态,进入就绪状态。原创 2023-02-06 15:34:27 · 357 阅读 · 0 评论 -
Node.js包和模块的区别在哪儿
在Node.js 中,会将某个独立的功能封装起来,用于发布、更新、依赖管理和进行版本控制。Nodejs 根据CommonJS规范实现了包机制,开发了NPM包管理工具,用来解决包的发布和获取需求。Node.js的包和模块并没有本质的不同,包是在模块的基础上更进一步的组织JavaScript代码的目录。Nodejs 包和模块的关系如下图所示:图中可以看出,一个包中应该有一个出口模块,用于向外部开放接口,使用者只需要拿到出口模块,而不用关心包中的其他内容。原创 2023-02-01 16:01:59 · 429 阅读 · 0 评论 -
Java面试题:finalize的原理和工作缺点是什么
有的文章提到【Finalizer 线程会和我们的主线程进行竞争,不过由于它的优先级较低,获取到的CPU时间较少,因此它永远也赶不上主线程的步伐】这个显然是错误的,FinalizerThread 的优先级较普通线程更高,原因应该是 finalize 串行执行慢等原因综合导致。但此时 Dog 对象还没法被立刻回收,因为 unfinalized -> Finalizer 这一引用链还在引用它嘛,为的是【先别着急回收啊,等我调完 finalize 方法,再回收】finalize 缺点。原创 2023-01-31 10:57:47 · 805 阅读 · 0 评论 -
为什么要开发SpringBoot?
SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻 辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度 上缩短了项目周期。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导 入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。在2.x中,配置绑定功能有了些的改造,在调整了1.x中许多不一致地方之外,还提供了独立于注解之外的API来装配配置属性。原创 2023-01-30 16:46:55 · 482 阅读 · 0 评论 -
MySQL主从复制的原理是什么?
主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。从库读取主库的二进制日志文件 Binlog ,写入到从库的中继日志 Relay Log。slave重做中继日志中的事件,将改变反映它自己的数据。3.可以在从库中执行备份,以避免备份期间影响主库服务。1.主库出现问题,可以快速切换到从库提供服务。原创 2023-01-14 14:03:57 · 533 阅读 · 0 评论 -
Docker的底层技术有几种?各有什么含义?
由于Docker是基于Ubuntu发布的,所以官方更推荐在Ubuntu上使用Docker,开发者也可以根据自己的实际开发环境选择合适的开发平台。上述版本和内核要求是对Docker全面支持的,也有一些开发者的版本或者系统无法满足条件,可以参考网上一些方法进行额外配置,达到满足Docker使用的需求,当然这种方法是不推荐的。根据Docker官网上的安装说明,想要在Ubuntu上安装Docker需要满足两点要求,一是Ubuntu的版本支持,二是Ubuntu的内核支持,具体如下。原创 2023-01-10 15:16:25 · 710 阅读 · 0 评论 -
整型常量不同进制间的相互转换
二进制转换成十进制要从右到左用二进制位上的每个数去乘以2的相应次方,例如,将最右边第一位的数乘以2的0次方,第二位的数乘以2的1次方,第n位的数乘以2的n一1次方,然后把所有乘得的结果相加,得到的结果就是转换后的十进制。二进制转换十六进制,与转八进制类似,不同的是要将二进制数每四位分成一段(不足四位的,在左侧朴0),然后通过查表将二进制数每段的四位数特换为八进制的每一位即可。把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0。以十进制的6转换为二进制为例进行说明,如图所示。原创 2023-01-06 11:20:40 · 538 阅读 · 0 评论 -
Servlet是什么?有哪些优点?
Servlet的请求首先会被HTTP服务器接收,HTTP服务器只负责静态HTML页面的解析,对于Servlet的请求转交给Servlet容器,Servlet容器会根据web.xml文件中的映射关系,调用相应的Servlet,Servlet将处理的结果返回给Servlet容器,并通过HTTP服务器将响应传输给客户端。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。4)重定向的新地址可以是任意地址;原创 2023-01-06 11:03:29 · 750 阅读 · 0 评论 -
Servlet对象的生命周期详细介绍
ServletRequest对象用于获取客户端发送的请求数据,为了监听ServletReauest对象的创建和销毁过程,Servlet API提供了ServletReauestListener接口,当Web应用程序中注册了一个或多个实现了ServletRequestListener接口的事件监听器时,Web容器在创建或销毁每个ServletRequest对象时都会产生一个ServletRequestEvent事件对象,然后依次调用每个ServletRequest事件监听器中的相应处理方法。原创 2023-01-04 15:10:34 · 318 阅读 · 0 评论 -
怎样理解线程安全?volatile能解决吗?
解决:用 volatile 修饰共享变量会在读、写共享变量时加入不同的屏障,阻止其他读写操作越过屏障,从而达到阻止重排序的效果。解决:用 volatile 修饰共享变量,能够防止编译器等优化发生,让一个线程对共享变量的修改对另一个线程可见。原因:由于编译器优化、或缓存优化、或 CPU 指令重排序优化导致的对共享变量所做的修改另外的线程看不到。起因:由于编译器优化、或缓存优化、或 CPU 指令重排序优化导致指令的实际执行顺序与编写顺序不一致。原因:多线程下,不同线程的指令发生了交错导致的共享变量的读写混乱。原创 2023-01-03 16:16:32 · 451 阅读 · 0 评论 -
Maven是怎么样构建Spring Boot项目的?
这里,左侧选择【Maven】选项,右侧选择当前项目的JDK(上一步预先设置的JDK环境),单击【Next】按钮进入Maven项目创建界面,具体如图所示。配置完成后,单击【Apply 】→【OK】按钮即可完成Maven的初始化设置。打开IDEA进入欢迎页,单击页面右下角的【Configure】→【Project Defaults】→【Settings】选项进入默认项目设置页面,在左侧搜索“Maven”关键字找到Maven 设置选项,在右侧对应的设置界面中进行Maven初始化设置,具体如图所示。原创 2022-12-30 14:32:44 · 1558 阅读 · 8 评论 -
IO流、字节流和字符流详细介绍
缓冲区就是在类的底层封装了一个数组,如果我们使用字符输出流向目的地文件中写数据的时候,数据不会立刻写到目的地文件中,而是写到自带的数组中,数据还在内存中,所以我们必须调用FileWriter类中的刷新方法flush将数组中的数据刷新到目的地硬盘文件中。public int read(byte[] byte):调用一次,读取多个字节数据,把读到的字节数据保存在传递的byte字节数组中。字符流:读取字符数据。public void write(char[] chs):将字符从指定的字符数组写出此输出流。原创 2022-12-29 15:44:26 · 546 阅读 · 0 评论 -
二进制日志有什么作用?二进制日志基础操作
慢查询日志记录了所有执行时间超过参数 long_query_time 设置值并且扫描记录数不小于 min_examined_row_limit 的所有的SQL语句的日志,默认未开启。开启了查询日志之后,在MySQL的数据存放目录,也就是 /var/lib/mysql/ 目录下就会出现 mysql_query.log 文件。log_bin_basename:当前数据库服务器的binlog日志的基础名称(前缀),具体的binlog文件名需要再该basename的基础上加上编号(编号从000001开始)。原创 2022-12-27 14:07:49 · 404 阅读 · 0 评论 -
Java和Web前端哪个有发展前景?
Web前端工程师的工作,简单描述一下就是和我们目之所及的各种前台页面打交道,像PC端和移动端这些浏览器上呈现给用户的页面的制作,以及说优化前端架构、调整模型,解决一些前端的问题等等。前台网站的开发是依靠前台有关的代码来实现的,比如主流的HTML5、CSS3和Vue、React这些火热的框架,都是前端工程师必知必会的内容。在不远的将来,前后端的开发有可能会趋于融合,在即将面临的庞大业务量下,就看谁的技术掌握的更加精湛,谁对于业务、市场和用户了解的更加透彻,谁才能拥有更好的发展前景。原创 2022-12-26 14:50:09 · 799 阅读 · 0 评论 -
索引的底层实现原理是什么?
MySql索引数据结构对经典的B+Tree进行了优化, 在原B+Tree的基础上, 增加了一个指向相邻叶子节点的链表指针, 就形成了带有顺序指针的B+Tree, 提高区间访问的性能.索引的主要作用是加快数据查找速度,提高数据库的性能。R-Tree索引(空间索引): 空间索引是MyISAM引擎的一个特殊索引类型, 主要地理空间数据, 使用也很少.(4) 联合索引(又叫复合索引):多个字段上建立的索引,能够加速复合查询条件的检索。B+Tree 索引: 最常见的索引类型, 大部分索引都支持B+树索引.原创 2022-12-21 15:24:37 · 640 阅读 · 0 评论 -
什么是框架?Java开发中常用的框架有哪些?
例如,使用Spring框架开发时,通过Spring的IOC特性,可以将对象之间的依赖关系交给Spring控制,方便解耦,简化开发;如果系统不使用框架,每次开发系统都需要重新开发,需要投入大量的人力物力,并且重新开发的代码可能具有更多的漏洞,这就增加了系统出错的风险。1.提高开发效率:如果采用成熟、稳健的框架,那么一些通用的基础工作,如事务处理、安全性、数据流控制等都可以交给框架处理,程序员只需要集中精力完成系统的业务逻辑设计,降低了开发难度。成熟的框架都有严格的代码规范,能保证团队整体的开发风格统一。原创 2022-12-20 14:12:42 · 1380 阅读 · 0 评论 -
Java开发程序员前景如何?
互联网行业的发展如火如荼,Java在所有编程语言中的领先地位却未动摇,迄今为止这项技术仍然有着不错的前景。然而,相当一部分人对于Java开发程序员的就业问题忧心忡忡,在笔者看来,这种担忧无疑是没有必要的,想通过学习Java来就业,最重要的还是我们如何把真正的技术学到手,把自己的综合竞争力提升上去,拿到令我们满意的薪资。在广泛的应用市场中Java发挥着相当重要的作用,因为当今市场上几乎全部的软硬件都为Java生态系统所涵盖,业内有人说Java是无所不能的,咱们一般可以想到的应用,Java通常上都可以实现。原创 2022-12-19 14:44:07 · 940 阅读 · 0 评论 -
什么是JDBC?JDBC程序的具体实现步骤
什么是JDBC?JDBC程序的具体实现步骤JDBC的全称是Java数据库连接(Java Database Connectivity),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。应用程序使用JDBC访问数据库的方式如图所示。从图中可以看出,应用程序使用JDBC访问特定的数据库时,需要与不同的数据库驱动进行连接。由于不同数据库厂商提供的数据库驱动不同,因此,为了使应用程序与数据库真正建立连接,JDBC原创 2022-12-07 15:10:39 · 1200 阅读 · 0 评论 -
如何利用Java爬取网站数据?
1.Jsoup介绍- 官网文档:https://jsoup.org- Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。2. Jsoup快速入门- 获取网页标题- 运行效果:手机 - 商品搜索 - 京东3. 网站数据分析3.1 分析网站的访问地址- 以京东商城为例,商品分页列表的url地址,需要带如下几个参数,因此,在发送http请求时,需要携带正确的参数。- URL原创 2022-12-06 16:44:37 · 717 阅读 · 0 评论 -
java中定义多维数组的几种常见方式
上面的代码相当于定义了一个3*4的二维数组,这个二维数组的长度为3,我们可以将它看成3个int[]类型的一维数组,每个一维数组中的元素又是一个长度为4的一维数组。在程序中,比较常见的多维数组是二维数组,接下来本节将针对二维数组进行详细讲解,我们以统计学校各个班级学生的考试成绩,来实现。接下来通过一个统计公司三个销售小组中每个小组的总销售额,以及整个公司销售额的案例来熟悉二维数组的使用,如下所示。二维数组可以被看作是特殊的一维数组,其定义有很多方式,接下来针对几种常见的方式进行详细讲解,具体如下。原创 2022-11-29 14:43:39 · 1769 阅读 · 0 评论 -
gitlab的使用方法,详解gitlab操作
在企业开发的过程中,代码的版本控制工具肯定会使用的,而GitLab是目前最流行的版本控制服务,通过我们以上的学习,我们要重点掌握关于GitLab的基本使用,如:项目组的创建、把成员添加到对应的开发组内、以组创建项目并与成员进行共享等等操作。本教程主要讲解了GitLab在项目的环境搭建和基本的使用,可以帮助大家在企业中能够自主搭建GitLab服务,并且可以GitLab中的组、权限、项目自主操作。,进入创建页面,输入群组名称,群组URL,群组描述,同时还需选择可见性级别,其相当于设置组权限。原创 2022-11-29 14:13:38 · 7501 阅读 · 0 评论 -
什么是微服务?微服务架构有哪些功能?
同样,在微服务架构中,熔断机制也是起着类似的作用。当一条链路的某个微服务架构不可用或者响应时间太长时,会进行服务的降级,进而调用熔断该节点的微服务架构,快速返回错误的响应信息;微服务架构中,系统会被拆分为若干个微服务架构,每个微服务架构又是一个独立的应用程序。系统中的各个微服务架构可被独立部署,各个微服务架构之间是松耦合的。在分布式系统中,服务之间是相互依赖的,如果一个服务出现了故障或者网络延迟,在高并发的情况下,就会导致线程阻塞,在很短的时间内该服务的线程资源会消耗殆尽,最终使得该服务不可用。原创 2022-11-23 14:53:31 · 1222 阅读 · 0 评论 -
微服务架构不同组件可以使用哪些技术?
可以看出,我们会使用Spring Boot实现微服务实例的开发,使用Spring CloudEureka来实现服务的注册与发现,使用Spring Cloud Hystrix的断路器功能来实现服务容错,使用Spring Cloud Ribbon实现服务间的负载均衡,使用Spring Cloud Zuul实现服务网关,使用Spring Cloud Config作为分布式配置中心,使用Swagger 对微服务进行测试,并使用Jenkins的持续集成功能来实现自动化部署。书中的主要技术选型如图所示。原创 2022-11-23 14:37:38 · 282 阅读 · 0 评论 -
怎样通过jQuery属性操作实现不同功能需求
jQuery提供了一些属性操作的方法,主要包括prop()、attr()和data()等。通过这些方法,能够实现不同的需求。下面我们分别进行详细讲解。prop0方法用来设置或获取元素固有属性值。元素固有属性是指元素本身自带的属性,如下面我们通过代码演示prop()方法的使用。在上述代码中,第3行代码用于获取上述代码中,第1行代码设置了input 的type值为checkbox,表示复选框。第4行代码给input绑定了change事件,当表单元素状态发生变化时触发。原创 2022-11-18 13:45:15 · 429 阅读 · 0 评论 -
使用UDP实现群聊聊天室
2. 主线程,主要用于发送信息。将这个程序部署到局域网上的几台电脑上,全部启动,就可以实现多台电脑的组播了,而且每台主机都可以发出信息,其它主机则会收到这条信息。这个程序使用的UDP协议,并使用DatagramSocket的子类MulticastSocket实现组播,可以部署在一个局域网内的多台电脑上,并可以实现文字群聊。通过上面的程序,我们发现,MulticastSocket类的使用和DatagramSocket类基本相同,只是多了一步加入组:joinGroup(),所有加入这个组的主机都将会收到信息。原创 2022-11-18 11:48:21 · 851 阅读 · 0 评论 -
怎样使用lntelliJ IDEA 进行Java程序开发?
创建好chaptero1项目之后,就可以在项目中创建Java类了。在IDEA项目结构页面中,右击chapter01项目下的sre文件夹,在弹出的快捷菜单中选择New→Java Class命令,进入New Java Class选项界面,有很多可以选择的类型,本次选择Class选项创建一个Java类,并在上面的文本框中输入类名称HelloWorld,然后按Enter键完成Java类的创建。单击工具栏中的▶按钮运行程序,或者单击代码中HelloWorld类左侧的▶按钮运行程序,控制台显示运行结果,如下图所示。原创 2022-11-04 16:18:00 · 963 阅读 · 0 评论 -
定义多维数组的几种常见方式
上面的代码相当于定义了一个3*4的二维数组,这个二维数组的长度为3,我们可以将它看成3个int[]类型的一维数组,每个一维数组中的元素又是一个长度为4的一维数组。在程序中,比较常见的多维数组是二维数组,接下来本节将针对二维数组进行详细讲解,我们以统计学校各个班级学生的考试成绩,来实现。接下来通过一个统计公司三个销售小组中每个小组的总销售额,以及整个公司销售额的案例来熟悉二维数组的使用,如下所示。二维数组可以被看作是特殊的一维数组,其定义有很多方式,接下来针对几种常见的方式进行详细讲解,具体如下。原创 2022-11-04 15:35:42 · 1082 阅读 · 0 评论 -
Nginx静态资源配置命令介绍
uri变量是待匹配的请求字符串,可以不包含正则表达式,也可以包含正则表达式,那么nginx服务器在搜索匹配location的时候,是先使用不包含正则表达式进行匹配,找到一个匹配度最高的一个,然后在通过包含正则表达式的进行匹配,如果能匹配到直接访问,匹配不到,就使用刚才匹配度最高的那个location来处理请求。由于server_name指令支持通配符和正则表达式,因此在包含多个虚拟主机的配置文件中,可能会出现一个名称被多个虚拟主机的server_name匹配成功,当遇到这种情况,当前的请求交给谁来处理呢?原创 2022-10-24 17:51:36 · 542 阅读 · 0 评论