
Java
华盛顿精神科医生
啥都会,啥也不会
展开
-
Kotlin改善java swing使用体验
kotlin完全兼容java,而且表达能力比java强很多,我今天尝试了使用kotlin编写java swing,可以使用kotlin将其包装为声明式UI,这将大大改善原生java swing的使用体验.将GridBagConstraint改造为GBC,可以链式调用,详细内容见https://editor.youkuaiyun.com/md/?articleId=108300061接着对原来的JFrame,JButton做一些扩展函数import java.awt.BorderLayoutimport java原创 2022-03-02 17:50:39 · 2601 阅读 · 0 评论 -
一道水群中问题的解答(最短路径问题)
在QQ水群中传来这样一个问题这是一道最短路径的问题,我打算采用弗洛伊德算法,寻找起始点到每一个点的最短路径及对应的最小过路费。package com.stack.dfs;import java.util.Arrays;import java.util.Scanner;public class Path { public static void main(String[] args) { int N, M, S, D; Scanner scanne原创 2021-05-05 21:47:17 · 136 阅读 · 0 评论 -
八皇后问题的解决
八皇后问题八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。当且仅当n = 1或n ≥ 4时问题有解。这是栈的一个典型应用。我们先将皇后放在(0,0)点的位置,然后在第二行依次试探,依次进行,如果在某一行没有位置了,弹出前一行,将x的位置加1,再进行试探。...原创 2021-05-04 22:49:28 · 495 阅读 · 0 评论 -
Java/Kotlin实现对成员变量的监听
一般的做法如下:1.创建一个类PropertyChangeAware,,在其中创建成员变量changeSupport并初始化这个成员变量,它可以记录下其他类成员变量的变化2.将需要监听的类继承于PropertyChangeAware,这样这个类就含有的这个changeSupport3.写成员变量的set方法,将值的变化记录在changeSupoort中。3.对需要监听类添加监听器,实际在向changeSupoort添加监听器,并且实现propertyChange方法。这样每当成员变量调用set方法时原创 2020-11-30 17:19:31 · 2097 阅读 · 1 评论 -
使用Jsoup包抓取豆瓣Top250电影信息
Java制作爬虫程序主要用到的网页解析工具Jsoup,而在Python使用的是漂亮汤,Jsoup能向JS和JQuery一样获取网页文件的模型(dom),是解析网页文件的有力工具,使用方法见:Jsoup详解(一)——Jsoup详解Jsoup的使用方法和JS基本相同,进入豆瓣Top250界面:找到链接地址:String[] url=new String[25]; //进入Top250的界面,抓取单个电影的网址 Document document=Jsoup.connect("https://m原创 2020-09-12 15:24:23 · 710 阅读 · 0 评论 -
猴子选大王问题(约瑟夫问题)的数学和代码解决
n个猴子围成一圈,从编号为k的开始报数1-2-m-1-2-m-……报“m”的猴子就被淘汰,游戏一直进行到圈内只剩一只猴子它就是猴大王了。想了很长时间不会,问了@Spider-gty,得知用两个一维数组模拟圈可以解决,下面是代码:class MonkeyProblem { public static void main(String[] args) { int k=17; int[] last=new int[k+1]; int[] next=new int[k+1]; last[原创 2020-09-02 20:43:29 · 1175 阅读 · 2 评论 -
【爬虫基础】java用正则表达式处提取网页信息
在网络爬虫这一方面,java并不如Python好用。本文只用正则表达式提取信息,如果想要更精确地从html文件中提取信息,必须使用网页地解析器。可以通过第三方库,比如Jsoup等。我们提取出豆瓣的Top250电影名没由网页解析器,这是一件比较困难的事情。我们首先获得网页。JDK9开始新增的net.http包,这比原来的方式要简单许多package newHTTP;import java.io.IOException;import java.net.URI;import java.net.URLE原创 2020-08-31 23:11:44 · 1039 阅读 · 0 评论 -
【Java】高级Swing——JList
Java中广泛采用一种接口式的设计,这使得Java的Swing组件的表现上十分灵活。Jlist究竟是如何设计的呢?事实上:Jlist把图形和数据进行的分离。JList中可以T可以是字符串数组。String[] text={A,B,C,D};JList<String> list=new JList<String>(text);如想要自由地添加列表元素,可以获得一个DefaultListModel,它实现了ListModel接口DefaultListModel<Stri原创 2020-08-30 00:33:14 · 1441 阅读 · 0 评论 -
【Java Swing】Java复杂的布局管理——网格组布局(GridBagLayout)
网格组布局是Java较为复杂的布局,虽然这又背于Java简单的初衷。网格组布局十分优雅,组件可以随着窗口的调整自动放大或缩小。要有效地使用网格组布局,必须自定义GridBagConstraints与其组件关联的一个或多个对象。您可以GridBagConstraints 通过设置一个或多个实例变量来自定义对象:GridBagConstraints.gridx, GridBagConstraints.gridy每个格子都有自己的单元格坐标(gridx,gridy),并不以长度为单位,左上角的原点单元格,原创 2020-08-29 22:06:31 · 1276 阅读 · 0 评论 -
简单的AIO通讯模式
相比于BIO(堵塞的IO,B是Blocking的意思),NIO(同步非堵塞IO)和AIO(异步非阻塞IO)的性能要比其高很多。异步通讯不以反复轮询为方式,主程序不会阻塞在死循环内,而是会继续的执行下去。如果收到消息,会自动调用回调函数,完成指定的操作。而NIO和AIO的复杂性显然大于BIO前几天笔者写了一个NIO的通讯窗口,本次写一个AIO的窗口。主要用到AsynchronousServerSocketChannel、AsynchronousSocketChannel。向server.accept方法中原创 2020-08-27 18:38:51 · 521 阅读 · 0 评论 -
Java正则表达式在流中的使用
正则表达式在匹配所需要的字符时往往十分简单方便,如果使用卡但可以省去许多代码。本篇覆盖绝大多数正则表达式的内容,讲述其基本用法和处理流时的用法。下面给出几张表格,全面列出了正则表达式的内容。选自《Java核心技术》。补充说明:预搜索预搜索(位置断言)可以筛出符合位置的字符串下面给几个例子材料是大学英语三第一单元:判断是为给定模式,一般采用下面方法。Pattern pattern=Pattern.compile("\b[a-z]+\b"); return pattern.matche原创 2020-08-22 23:35:23 · 853 阅读 · 0 评论 -
简单NIO通讯模式的实现
NIO通讯模式的简单实现为了简化过程,在写服务器时,只能读取信息;在写客户端时,只能发送信息。当局域网下双方连接上了对方的端口,即可实现双向通信。基于Selector这个选择器,在单线程下也可以实现多方通信。主要需要:SeverSocketChannel,SocketChannel,Selector,SelectionKey代码如下:`package Message1;import java.util.;import javax.swing.;import java.awt.*;import原创 2020-08-22 17:35:58 · 285 阅读 · 0 评论