![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java工具包
李先森LeeCode
这个作者很懒,什么都没留下…
展开
-
网络:Java用Netty实现一个群聊服务器与群聊客户端
记录一下实现代码,写得很粗糙,先启动1个服务端,然后起1到多个客户端,每个客户端先控制台输入聊天昵称,然后可以在聊天室发送消息。退出时输入特定字符 “bye” 即可退出群聊。服务器会显示所有聊天过程(包括系统信息)。客户端在线时也能收到所有聊天信息(包括系统信息)。大概如下:下面是代码:1、Maven依赖<dependency> <groupId>io.netty</groupId> <artifactId>netty-all<原创 2020-08-07 23:14:33 · 506 阅读 · 0 评论 -
多线程:Java两个线程,一个打印A-Z,另一个打印1-26,输出结果:A1 B2 C3 ...... Z26
最近看到一个题,很有意思,就是在Java里实现两个线程,一个线程打印字母,也就是 ABCD … Z,另一个线程打印数字,也就是 1234 … 26。但是这两个线程需要交替打印:第一次字母线程先打印A,然后数字线程打印1,第二次字母线程先打印B,然后数字线程打印2 … 一直到最后一次,字母线程打印Z,数字线程打印26。得到如下结果(为了美观,我在数字后面多打印了一个空格):A1 B2 C3 D4 E5 F6 G7 H8 I9 J10 K11 L12 M13 N14 O15 P16 Q17 R18 S19 T原创 2020-08-02 19:34:46 · 4206 阅读 · 2 评论 -
经验:在Maven项目中,打包时指定 main class 的配置(亲测有效)
Maven打包的时候,是不是经常会出现 “没有主清单属性” 的报错?以下的配置,放在 pom.xml 最后的 中,就能自定义main函数所在的类,然后打包了:<build> <finalName>JarPackageFileName</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</grou原创 2020-07-22 11:20:09 · 15729 阅读 · 3 评论 -
算法:通过弗洛伊德(Floyd)算法,求出图中任意两个顶点的最短路径
之前我给大家分享过用迪杰斯特拉(Dijkstra)算法求图的最短路径,今天我再给大家分享一个也是求图的最短路径的弗洛伊德(Floyd)算法这两个算法都是求图的最短路径,有什么区别呢?1、Dijkstra算法是求图中一个点到其他所有点的最短路径,Floyd算法是求图中任意两个顶点之间的最短路径2、Dijkstra算法是通过贪婪算法来实现的,Floyd是通过动态规划算法实现的3、Dijkstr...原创 2019-10-25 15:32:46 · 3388 阅读 · 0 评论 -
算法:微信拼手气红包的红包金额分配算法的Java实现
微信拼手气红包,大家都体验过吧,多的就不说了,直接上代码:import java.util.*;/** * 微信红包金额分配 * @Author: LiYang * @Date: 2019/9/7 13:33 */public class RedPacketPuzzle { /** * 微信拼手气红包金额分配方案(输出结果为分,一分钱的分) * @pa...原创 2019-09-07 14:19:53 · 2910 阅读 · 1 评论 -
算法:输入一个四则运算的算术表达式字符串,计算出表达式的结果(逆波兰表达式)
算法的实现思路:将算术表达式转换为逆波兰表达式,然后根据逆波兰表达式的法则计算结果1、因为我们支持小数,所以需要小数的包装类。当然,Java已经有包装类了,我们用Double类2、自定义一个操作符类,也就是+ - * / ( ),可以认为是以上操作符的包装类/** * 逆波兰表达式的操作符及其工具的包装类 * @Author: LiYang * @Date: 2019/9/7 23:5...原创 2019-09-08 03:07:05 · 6719 阅读 · 1 评论 -
算法:Java通过二叉堆(大顶堆)实现优先队列,并顺便实现堆排序HeapSort(附程序API)
优先队列,是一个神奇的队列,可以将任何数据入队(add(Integer)方法),但是出队( Integer poll()方法)却是当前队列元素里面优先级最高的,本例就认为Integer值最大的就是优先级最高的,优先级跟Integer值相关注意,本例有局限性:1、首先暂时未支持泛型,以后再实现泛型版本,现在暂时只能入队出队Integer,读者也可以尝试自己实现2、此优先队列是线程不安全的,以后...原创 2019-09-08 17:05:33 · 702 阅读 · 0 评论 -
算法:通过普利姆(Prim)算法,求出图的最小生成树
请看如下的示例图,该图有 V1-V7 七个顶点,每个顶点之间的距离如图所示:如果上面的图为七个城市的地理分布图,城市间相连的边上的数字为城市间的距离。我们要在这七个城市里面架设电线,使得每一个城市都在电网之中,怎么样架设电线,可以使得所使用的电线最短呢?这就是图论里面的最小生成树的问题,今天我们用普利姆(Prim)算法,来求得电线架设的方案。话不多说,精髓全在代码和其间的注释里,可复制到ID...原创 2019-09-09 01:29:09 · 4821 阅读 · 0 评论 -
多线程:Java里的所有线程都全部执行完毕后,代码再往下继续执行的控制方法(CountDownLatch类的用法示例)
在Java的多线程中,有的时候我们需要等某些多线程的方法全部都执行完毕后,才继续往下执行。这个该怎么控制呢?用CountDownLatch类。这个类是java.util.concurrent包里面,也即是Java的并发工具包,这个包里面有很多多线程的工具类,在多线程编程中很有用。下面就是一个CountDownLatch类的一个用法。比如我们有五个人(五个线程),他们都赶往同一目的地,但是我们不知...原创 2019-09-11 00:38:53 · 7914 阅读 · 3 评论 -
算法:通过迪杰斯特拉(Dijkstra)算法,求出图中任意顶点到其他顶点的最短路径
请看如下的示例图,该图有 V1-V7 七个顶点,每个顶点之间的距离、路径走向如图所示:假设这是一幅地图,我们很多时候都需要搜路径,比如从家到公司的路线图(也就是说,家是一个点,公司是另一个点)。上图的各个点可以想象成分岔路口。当然,如果你不在分岔路口,你在某条路上,也可以理解为你在一个有两条路的分岔路口上,也就是向前行或者向后退。由于有单行道的存在,所以有的路是只能单向通行的(本示例图全部为单...原创 2019-09-11 23:45:40 · 21348 阅读 · 0 评论 -
算法:中国象棋中"马"的最少步数走法和不重复周游走法的实现(利用图论算法中的BFS和DFS)
之前发布了许多的图论算法的例子,今天我们结合中国象棋中马的走法,来实践一下图论算法中的BFS(涉及Dijkstra算法)和DFS算法为什么用中国象棋的马的走法来做例子呢?因为大家都多多少少知道中国象棋,也知道马走斜日象飞田,车走直线炮翻山。马在中国象棋棋盘上的斜日走法,确实值得拿来作为图论算法的例子。以下的算法没有蹩脚马的限制,马只要不出棋盘,可以随便在棋盘上走斜日如何在程序中记录中国象棋棋盘...原创 2019-09-17 02:31:56 · 3247 阅读 · 0 评论 -
算法:通过图论算法的深度优先搜索DFS,递归回溯求解 "旅行售货员" 问题(又叫 "巡回售货员" 问题)
“旅行售货员” 问题,又叫 “巡回售货员” 问题,也是图论算法里面的一个经典的问题。就像那些挑着担子沿街叫卖的小商贩,他们每天从家里出发,将所有小区转一遍,然后又回到自己的家,结束一天的售卖。不同的路线可能会让小商贩走的路程,或者说花的时间和精力不一样。小商贩们当然也希望走最短的路线,就能走遍所有小区,然后回到家中。请看以上示例图,比如这是五个城市,也可以理解为五个小区,意思都一样。售货员的家...原创 2019-09-17 15:09:27 · 2762 阅读 · 0 评论 -
算法:图的 "深度优先搜索" 和 "广度优先搜索" 的Java简单实现
算法一般跟数据结构是联系在一起的,数据关系一般有一对一、一对多、多对多。其中,一对一可以理解为线性表,如数组和链表这些;一对多可以理解为树,比如二叉树,一个根节点对两个子节点;多对多则可以理解为图,比如接下来提供的范例:上面就是图(graph)的一个示例,A对应C和D,而D对应A和C,C就更多了,对应ADBF……上面的示例图,每个带数据的英文字符和圈圈,叫图的顶点(Vertex),顶点间由线...原创 2019-09-01 15:01:46 · 245 阅读 · 0 评论 -
算法:将IPv4的IP地址,与对应的int码互转,数据库就存int,代替IP的varchar
我们在日常的业务中,有的时候需要存IP地址,一般我们都会在数据库中用varchar来存储IP地址。但是存IP地址用varchar的话,是开销比较大的,如果数据量上来了,那需要的存储空间也就比较大了。此外如果我们想要查找某个IP是否的话,字符串比较也是从左到右逐个比较,开销也是比较大的下面我写了一个转换方法,这个方法可以将一个IP地址转化为int值,然后通过这个int值也可以还原为原来的IP地址。...原创 2019-08-17 20:03:48 · 293 阅读 · 0 评论 -
Java IO相关的一些常用方法集锦
0、将文件读取为字符串/** * 将文件读取为整个的字符串 * @param filePath 文件路径 * @return 文件内容的字符串 * @throws IOException */public static String readFileToString(String filePath) throws IOException { //读文件的BufferedRea...原创 2019-07-10 11:42:26 · 207 阅读 · 0 评论 -
Java: MyBatis查询一个List的方法
在MyBatis查询中,大多数的时候需要查询的是单个的字段,但也有一对多关系的查询,比如一个教师有多个学生,Teacher类就有List,这个在MyBatis里面怎么查呢? &lt;select id="getTeacherInfo" resultMap="TeacherMap"&gt; SELECT DISTINCT teacher_id, te...原创 2018-09-10 10:55:19 · 5230 阅读 · 0 评论 -
SpringBoot: SpringBoot里面创建导出Excel的接口
在Web项目中,难免需要导出Excel这样的功能,后端接口怎么实现呢,Controller代码在下面,复制到项目的Controller中即可使用:首先加入Excel的依赖,本例中我们用apache的poi:&amp;amp;amp;amp;lt;dependency&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;groupId&amp;amp;amp;amp;gt;org.apache.poi原创 2018-10-11 15:50:23 · 41199 阅读 · 18 评论 -
SpringBoot: 加入定时任务调度工具类
SpringBoot,加入定时任务调度工具类,写好后项目已启动,就能够按照设定的时间规则,定期进行方法的执行,而且只需要按照以下例子创建一个新类就行,其他的地方不用动都可以。注:cron表达式是描述定时规则的表达式,可参考在线cron表达式:http://cron.qqe2.com/import org.springframework.context.annotation.Configurati...原创 2018-10-30 15:23:44 · 880 阅读 · 0 评论 -
多线程: Java使用ThreadPoolExecutor类执行多线程并发任务
import java.util.concurrent.*;/** * 线程池测试类 */public class ThreadPoolTest { /** * 多线程的任务类 */ static class Task implements Runnable{ //线程id private int id;...原创 2018-11-01 21:35:26 · 3221 阅读 · 0 评论 -
Java: 用NIO实现文件的读取和写入
import java.io.IOException;import java.nio.charset.StandardCharsets;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.ArrayList;import java.util.Li...原创 2019-02-11 10:02:50 · 916 阅读 · 0 评论 -
Java:Socket通信中,持续单向读写的同步问题
在Java网络编程中,有的时候客户端或者服务端需要持续向对方发送数据,有的时候发送速度超过了接收速度,就会出现一次读两份数据,甚至更多的现象发生。如何解决这个问题呢?我们可以每次发送一行数据,然后另一边每次读入一行数据。这边一行一行地发送,那边读完一行了再去读下一行,这样就会每次发送的数据以行为单位,就可以避免一次接受多条连着的数据了。因为服务端和客户端都是Socket操作,其实二者都是一样的,...原创 2019-05-19 19:51:14 · 871 阅读 · 0 评论 -
Util: Java生成文件的md5文件方法的代码
package pri.liyang.util;import java.io.*; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;/** * 根据文件生成MD5码的工具类 * Author:李小白 */ public class MD5Util {/*...原创 2018-08-07 17:38:43 · 2831 阅读 · 0 评论