首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java课程设计-多人聊天工具(socket+多线程)

大一下学期的java期末课程设计,分享一下 文章目录 课设要求 相关知识点 类图 项目框架 核心代码 1.maven配置文件pom.xml 2.服务器端Server.java 3.客户端登录界面Client.java...5.运用JDBC实现持久化存储用户信息 数据库连接池运用了阿里巴巴的durid,定义一个JDBCUtils类,提供静态代码块加载配置文件,初始化连接池对象,通过Spring框架的JDBCTemplate...6.使用JSONObject对象封装数据 在数据的传输中运用了键值对的形式进行传输,客户端传输给服务端的数据包中,通过判断private键的值来确认是否私发,通过username键告知服务端客户端的用户名...java.awt.*; import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.border.TitledBorder...//设置流式布局 setLayout(new BorderLayout()); //VERTICAL_SCROLLBAR_AS_NEEDED设置垂直滚动条需要时出现

2.2K30

Java Swing用户界面组件:复选框+ 滑块+组合框+边界+单选按钮

在下面程序中,两个复选框使用了同一个动作监听器。 actionPerformed方法查询bold和italic两个复选框的状态,并且把面板中的字体设置为常规、加粗、斜体或者粗斜体。...可以在任何继承了JComponent的组件上应用边界。最常见的是在一个面板周围设置边界,然后用其他用户界面元素(如单选按钮)来填充面板。 有几种不同的边界可供选择,但是使用它们的步骤完全一样。...组合框 如果有多个选择项,使用单选按钮就不太合适了,其原因是占据的屏幕空间太大。这时可以选择组合框。 当用户点击这个组件时,选择列表就会下拉出来,用户可以从中选择一项(见图9-18)。...用户也可以键入其他的字体。 调用addItem增加选项。在示例程序中,只在构造器中调用addItem,实际上可以在任何位置调用它。...如果需要一个垂直的滑块,可以调用如下的构造器: JSlider slider = new JSlider(SwingConstants.VERTICAL, min, max, initialValue)

7.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java编程之GUI教程 JPanel面板和JScrollPane

    14 jPanel.setBorder(new TitledBorder("面板区")); 15 jFrame.setLayout(null); 16...它由下列部分组成:一个ViewPort、可选的垂直和水平滚动条、可选的行和列的头部,以及ViewPort对应显示的组件。...如果需要在JScrollPane面板中放置多个组件,需要先将多个组件放置在JPanel面板容器上,然后将JPanel面板作为一个整体组件添加到JScrollPane面板中。...JScrollPane类的常见方法 常见方法 功能描述 public JScrollPane() 创建一个空的JScrollPane,水平和垂直滚动条都是可选项。...在第8行代码处设置了边界宽度,距离外部边界距离都是5px;第10行代码处设置了布局方式为BorderLayout,组件之间的水平和垂直距离都是0px。

    16910

    Spark 性能优化指南(官网文档)

    默认情况下,Java 对象访问速度很快,但是,所消耗的存储空间要比实际的对象多消消耗 2~5 倍的空间。这是为什么呢?...剩余40%的空间是留给用户数据结构、Spark内部元数据和防止OMM用的。 spark.memory.storageFraction 代表R区域占M区域的比例(默认是0.5)。...这个页面会告诉你,这个RDD占用了多少内存。...要估计一个特定对象的内存占用,可以使用SizeEstimator的estimate方法,这对于尝试用不同的数据设计来调整内存使用是非常有用的,还可以确定广播变量在每个 executor 上占的堆大小。...由于任务工作内存(运行task所需的内存空间)和缓存在节点上的RDD之间存在冲突,也可能会导致GC问题。我们将讨论如何控制分配给RDD的缓存空间来缓解这种问题。

    79910

    你真的了解android的layout_weight属性吗?

    的确应该设置为0dp,下面就来解释一下为什么会出现这个奇怪的现象 被设置的weight值的控件,宽度应该为该控件的宽度+父控件的剩余空间*比例 水平方向的线性布局中:使用weight时,需注意将宽度设置为...0dp 垂直方向的线性布局中:使用weight时,需注意将高度设置为0dp 这里以水平方向为例: 该控件所占的宽度=该控件原宽度+(父控件总宽度-已有控件总宽度)*比例 即 该控件原宽度+剩余宽度*比例...为a 因为first和second空间的原有宽度都是match_parent,所以已有控件宽度是2a first的宽度为:a+(a-2a)*1/3=2/3a 所以first的宽度为父控件的2/3,即占父控件的...2/3 second的宽度为:a+(a-2a)*2/3=1/3a 所以second的宽度为父控件的1/3,即占父控件的1/3 要达到目的,就必须将layout_width应该设置为0dp,这样first...这个“权重”属性仅仅在LinearLayout使用,在RelativeLayout没有这个属性。

    18510

    JVM 垃圾回收机制(GC)总结

    一、概述 说起垃圾收集(Garbage Collection),大多数人都会想起Java,这项技术从始至终伴随着Java的成长,但事实上GC的出现要早于Java,它诞生于1960年MIT的使用动态分配和垃圾回收技术的语言...缺陷: 标记和清理的两个过程效率都不高; 容易产生内存碎片,碎片空间太多可能导致无法存放大对象。 适用于存活对象占多数的情况。 ?...当这一块内存用完后,就将还存活的对象复制到另一块去,然后再把已使用过的内存空间一次清理掉。 缺陷: 可用内存缩小为了原来的一半 算法执行效率高,适用于存活对象占少数的情况。 ?...整个年轻代占1/3的堆空间,年轻代分为三个区,Eden、Survivor-from、Survivor-to,其内存大小默认比例为8:1:1(可调整),大部分新创建的对象都是在Eden区创建。...仅在使用CMS收集器时生效 参考文献:《深入理解Java虚拟机》

    4K30

    9款国内外垂直领域的在线作图工具:那些可以替代Visio的应用

    除此之外,Cacoo的图表可用矢量格式导出(例如PDF,SVG等),导出的图表可打印或用其他绘图工具(如Adobe Illustrator)进行再编辑,不过这些功能仅在付费版本中才提供。...DrawAnywhere也是一款在线流程图制作工具,它采用的是Flex技术架构,直观的类Windows可视化操作大大简化了操作的过程,用户可以从任意角度修改节点的形状并完善相关数据等等。...ProcessOn算是国内垂直领域最好用的作图工具了,基本上已经完全实现了其他作图工具的所有功能,而且与其他工具相比,ProcessOn还提供了小组、活动等很多社交性质的功能。...国内的工具虽然免费,但是在功能上,还需要一些完善,当然在“本地化”上,国内肯定也占有很大的优势。也期待国内有更多垂直领域的专业工具出现,只要能为用户带来价值的产品,相信市场一定会给予认可的。...其实现在很多投资人对垂直领域的产品也是“情有独钟”,毕竟面对BAT这些行业巨头,垂直领域的生存空间也比较大一些,面向的用户也比较专业,行业巨头也不会投入太多的资源抢夺这些小市场,所以这些“边缘”区也是很多创业公司的机会

    6.5K50

    Java-GUI 编程之 JList、JComboBox实现列表框

    -------- addSelectionInterval(int anchor, int lead):在已经选中列表项的基础上,增加选中从anchor到lead索引范围内的所有列表项 setFixedCellHeight...完成下图效果: 演示代码: import javax.swing.*; import javax.swing.border.EtchedBorder; import javax.swing.border.TitledBorder...public void addLayoutButton(String label,int orientation){ layoutPanel.setBorder(new TitledBorder...和ComboBoxModel 与JProgressBar一样,JList和JComboBox也采用了MVC的设计模式,JList和JComboBox只负责外观的显示,而组件底层的状态数据则由对应的Model...JList 和 JComboBox 采用的都是简单的字符串列表项, 实际上 , JList 和 JComboBox还可以支持图标列表项,如果在创建 JList 或 JComboBox 时传入图标数组,则创建的

    3.5K11

    浅谈mysql分区、分表、分库

    但是对于字符串来说合适的分区函数不太多 案例: 建立一个user 表 以id进行分区 id 小于10的在user_1分区id小于20的在user_2分区 create table user_info (...在windows中,启用符号链接,可以通过创建包含目标目录路径的directory.sym文件来建立数据库目录的符号链接。...注: 如果在主服务器上的CREATE TABLE 语句中使用了DATA DIRECTORY或INDEX DIRECTORY 子句,子句也可以在从服务器上使用。...结果: 每个表的结构都一样; 每个表的数据都不一样,没有交集; 所有表的并集是全量数据; 场景:系统绝对并发量并没有上来,只是单表的数据量太多,影响了SQL效率,加重了CPU负担,以至于成为瓶颈。...,并且热点数据和非热点数据在一起,单行数据所需的存储空间较大。

    1.4K10

    Java线程池的那些事

    乍一看,大神的思路就是不一样:java线程池是为了防止java线程占用太多资源? 虽然是java大神的访谈,但是也不能什么都信,你说占资源就占资源?还是得写测试用例测一下。...我的机子上的测试结果: testThreadPool:31 testNewThread:624 可以看到,使用线程池处理10000个请求的处理时间为31ms,而每次启用新线程的处理时间为624ms。...浅谈java线程池 上文介绍了java线程池启动太多会造成OOM,使用java线程池也应该设置合理的线程数数量;否则应用可能十分不稳定。然而该如何设置这个数量呢?...MaxProcessMemory:进程最大的寻址空间,当然也不能超过虚拟内存和物理内存的总和。...关于不同系统的进程可寻址的最大空间,可参考下面表格: Maximum Address Space Per Process Operating System Maximum Address Space

    73710

    PyCharm几个常用的快捷键「建议收藏」

    比如我常用的: IJ :IntelliJ IDEA,java开发神器。 PC:PyCharm,Python开发神器。 WS:WebStorm,前端开发,不过前端小伙伴貌似都用vs code。...只需要打开命令窗口,垂直分屏输入 split v 命令: 原本一个文件就会垂直一分为二: 水平分屏,split h : 原本一个文件就会水平一分为二: 分屏动作是我比较常用的一个命令,还有许多其它的命令...再比如,当我们写代码不规范的时候,PyCharm会自动画出波浪线,pep8编码提示不规范: 此处是由于太多空行导致,那需要格式化代码: 结果: 3 总结 以上就是我个人在开发时,常用的几个命令,善用搜索动作的命令...,平时记一些常用的单词,不仅可以增加自己英语词汇量,又可以在开发效率上事半功倍,何乐而不为呢?...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    67530

    2022年WPF过时了吗?

    从业人员数量分析:在操作系统市场份额中Android系统市场占比为41.14%,Windows市场占比为31.36%。...国内90%开发者都在使用JAVA,Python等其它开发语言,按照工信部公布程序员从业数量在600万左右,C#程序员编程语言排行榜占6%计算保守估计有36万人,推算WPF从业人数在5万人以上。...这一举动清楚地说明了微软看到了 WPF 的未来,并将其视为 .NET 平台的 UI 框架。Microsoft 通过使其开源并使其在 .NET Core 上运行,确实在 WPF 上投入了大量资金。...WPF 应用程序仅在 Windows 上运行,因为它利用了许多 Windows 特定的功能。这同样适用于在 .NET 核心平台上运行的 WPF 应用程序。...对于 Windows桌面客户端,WPF仍然是一个可行的选择。 上面提到的替代方案为我们提供了许多不同的选择。

    8.8K60

    Java最大的竞争对手是谁?

    Java的不断发展要归功于C、C++ 和C# 等编程语言的不断挑战。C++、C#和Java等编程语言基本上都来源于C语言但又有很多区别。...对于变量声明、参数传递、操作符、流控制等,Java使用了和C、C++、C# 相同的传统,而C++ 主要是对C的扩展并融入了面向对象的思想,C#和Java语言是纯粹的面向对象的编程语言并吸收了C、C++...语言的很多优点,摒弃了很多缺点,但C#编程语言的运行依赖于Windows平台,而Java语言不依赖于任何平台,因此使得熟悉C、C++、C#的程序员能够很方便地转向Java编程。...但在Java中,对于这些数据类型都采用国际统一字符编码,即分配固定长度的位数,例如,对int类型的数据,它在任何机器上都占32位,这就保证了Java的平台无关性。...Java的设计宗旨是独立于任何平台,因此自然不会提供太多的Windows特性。但这也正体现了Java语言的跨平台优势。一般企业级应用,无法确定这个应用是在怎样的平台上运行。

    1.6K110

    Java语言中一个字符占几个字节?「建议收藏」

    这样,Java规定了字符的内码要用UTF-16编码。或者至少要让用户无法感知到String内部采用了非UTF-16的编码。...这大概是当时设计者为了平衡运行时的时间效率(采用定长编码的UTF-16)与外部存储的空间效率(采用变长的UTF-8编码)而做的取舍。...(因为 UTF-8 是 变长编码) 而 Java 中的 char 本质上是 UTF-16 编码。而 UTF-16 实际上也是一个变长编码(2 字节或 4字节)。...通常,Windows 系统下是 GBK,Linux 和 Mac 是 UTF-8.但有一点要注意,在 Windows 下使用 IDE 来运行时,比如 Eclipse,如果你的工程的缺省编码是 UTF-8,...在 IDE 中运行你的程序时,会加上上述的 -D file.encoding= UTF-8 参数,这时,即便你在 Windows 下,缺省编码也是 UTF-8,而不是 GBK。

    1K20

    jvm之堆解读

    一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。...《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。...在方法结束后,堆中的对象不会马上被移除,仅仅在垃圾收集的时候才会被移除。 堆,是GC(Garbage Collection,垃圾收集器)执行垃圾回收的重点区域。...generation space 养老区 Old/Tenure Permanent Space 永久区 Perm Java 8及之后堆内存逻辑上分为三部分:新生区+养老区+元空间 Young Generation...默认-XX:NewRatio=2,表示新生代占1,老年代占2,新生代占整个堆的1/3 可以修改-XX:NewRatio=4,表示新生代占1,老年代占4,新生代占整个堆的1/5 在HotSpot中,Eden

    23720

    JVM-堆

    Java堆区在JVM启动的时候即被创建,其空间大小也就确定了,堆是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。...《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。...因为还有一些对象是在栈上分配的(逃逸分析,标量替换) 数组和对象可能永远不会存储在栈上,因为栈帧中保存引用,这个引用指向对象或者数组在堆中的位置。...在方法结束后,堆中的对象不会马上被移除,仅仅在垃圾收集的时候才会被移除。...区、to区) 3.2 配置新老比例 配置新生代与老年代在堆结构的占比(下面这些参数在开发中一般不会调) 默认-XX:NewRatio=2,表示新生代占1,老年代占2,新生代占整个堆的1/3 可以修改

    21930

    云计算服务市场的群雄竞合

    与亚马逊比肩,谷歌不仅头上顶着世界上最大的云,在全球建立了30多个数据中心,服务器总数超过100万台,而且手握可以提供IaaS服务的Google Engine、提供PaaS(平台即服务)服务的Google...不仅如此,处于各垂直领域的企业也在寻求通过联盟或合作的方式形成新的产业集团,以谋取更大的市场话语权,如思科、EMC、威睿组成“VCE 联盟”,法电、思科、EMC、威睿组成“Flexible 4 Business...从增速来看,中国云计算的前行脚步远快于全球20%的增长水平,但从绝对规模考量,我国云计算市场规模目前只占全球的3%,与美国高达60%的占比可以说是天壤之别。...因此,中国云计算市场具有巨大的想象空间与商业诱惑。...同时,作为国内最大的网络设施运营商,华为目前不仅在北京、深圳、南京等多地设立了专注于公有云计算的研发和运营机构,而且在全国设立了数家大型数据中心。

    3.8K90

    中美上市软件公司对比中的投资启示

    美国行业垂直软件不论是在总市值,单个市值,上市公司数量上都不可比通用性软件公司,在各个行业中,医疗软件和金融软件远远高于其他行业,垂直领域中的市值最大的两家公司都出自医疗行业,第一大是Veeva,市值364...02 中国A股 软件公司现状 A股软件公司市场整体上比美股小,并且不同于美股,A股上市软件公司行业垂直型占比达到一半以上,按总市值占比上市软件公司总市值的42%,按个数则是高达55%,显著高于美股行业垂直型公司占总体的比值...此外,不难发现A股上管理软件上市公司数量很少,整体基本都是提供的技术类服务。 ? 中国A股通用型软件公司各领域分布 A股垂直行业软件相比美股,服务的垂直行业更多,上市的公司数量也更多。...中国垂直行业型软件公司各行业分布 03 中美软件市场 差异性探讨 类型上,美股是通用类型居多,中国是垂直通用占比各半。...如果考虑到现在比较热的SAAS趋势,目前国企上公有云的意愿比较低,倾向于定制化,可能也是造成了当前市场没有太多软件公司,而是存在众多小软件公司的原因。

    69230

    matinal:高质量内存数据库技术选型推荐(三)

    它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。...它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界知名数据库管理系统来讲...它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。...除了多线程之外,KeyDB 还具有仅在 Redis Enterprise 中才能使用的功能,例如:Active Replication、FLASH 存储,直接备份到 S3,且对 Redis 完全兼容。...垂直和水平缩放:KeyDB 是多线程设计,可以支持垂直/水平扩展,最大化资源利用率。对于那些 Redis 实例达到设备上线的情况,这是一个很好的替代选择。

    52710
    领券