JAVA
文章平均质量分 89
白夜布衣
毕业于普通二本院校,目前在蜀都任职,现主要从事Java系统开发,方向为数据分析,熟悉Linux,Docker等技术,对计算机网络也有较深的认识
展开
-
Java实现牛牛算法详解
看过我前面博文的朋友都知道,以前我从事过游戏服务器的开发,但是当时用的是PHP开发的,现在转型Java闲来无事,梳理了一些以前的算法进行详细分析。定义牌的数据结构:/** * 牌对象 * @author libing * */public class Card { private Integer type;//1:梅花 2:方块 3:红桃 4:黑桃(此处是按照西方花色优先级定义【黑桃最大,梅花最小】) private Integer num;//对应牌型(1-13) private原创 2020-05-21 18:00:01 · 3668 阅读 · 0 评论 -
论Throwable与Exception的区别
众所周知,异常是一个程序中不可避免的,而一般的解决办法是捕获异常来让程序继续运行而不死掉。笔者前段时间就因线程异常导致了排错困难。问题:主线程中开启的子线程无固死掉描述:在主线程中我开启了一个子线程处理业务逻辑,但是由于某些问题,导致子线程执行到某一步时突然死掉,没有执行下面的逻辑。在子线程的run方法中,我用try…catch捕获了Exception异常,但是子线程死掉并没有抛出异常...原创 2020-04-22 11:52:58 · 1323 阅读 · 0 评论 -
SpringBoot配置多数据源实现过程
最近想写一个能用的API服务程序,它将实现我平常所用到的所有API服务请求,那它涉及的数据源肯定就不止一个,关于多数据源我的配置如下 (SpringBoot1.5.6) :先关闭SpringBoot对于MyBatis的自动注入@EnableAutoConfiguration(exclude= {DataSourceAutoConfiguration.class,DataSourceTran...原创 2019-09-17 16:07:35 · 4809 阅读 · 0 评论 -
论写代码时逻辑要严谨的重要性
程序员都知道,对于计算机资源的利用必须严谨,在使用完资源后一定要释放它,否则就会造成内存泄漏,资源一直占用的危害。今天笔者就对文件IO操作完后,没有关闭流造成一定的问题,在拍错过程中也是有一定的难度。以下为对多个文件进行压缩的方法: /** * 将多个文件打包成压缩包 * @param srcFiles * @param zipFile */ public static voi...原创 2019-08-20 17:48:54 · 3440 阅读 · 1 评论 -
Java利用itchat4j插件实现个人微信自动化
一直都想实现个人智能微信,不需要自己操作就可以实现与好友的交流,实现微信的智能化。但是在实现过程中,发现已有大神封装了相应的API了,自己做简单调用就可实现了,组件的Git地址:https://github.com/yaphone/itchat4j 克隆下来后,导入到工程中,创建一个新的工程将之引入。这样基本环境就搭建好了:先创建一个消息处理Handel这是实现智能微信最关键的地方,它需要实...原创 2019-08-13 15:19:44 · 6014 阅读 · 7 评论 -
Java实现控制台麻将基本操作
Java实现客户端模拟打麻将与服务器基本操作方式相同,都是定义好协议包,若有不知道什么是协议包是什么概念,可参考我以前发布的一篇文章:PHP游戏服务器的设计思路。以下代码便是控制台麻将的JAVA基本实现效果:import net.sf.json.JSONObject;import java.io.*;import java.net.Socket;import java.ut...原创 2017-12-06 17:36:56 · 3207 阅读 · 0 评论 -
通过Docker打包安装Tomcat+JDK应用
安装之前在本地创建一个指代此应用的目录,这里我以docker-test为例;同时将编译好的应用程序放在此目录下,下载Tomcat和JDK的tar.tz安装包也放在目录下;最后创建Dockerfile文件,此时的文件结构如下:Dockerfile配置文件内容#基本镜像FROM centos #把你上传的jdk放到docker容器里面的root目录下ADD jdk-8u221-li...原创 2019-07-31 10:03:50 · 4498 阅读 · 0 评论 -
JAVA实现多线程任务执行框架
很长时间没有写过文章了,因现在从事的JAVA方向的系统开发,所以独自写了一个基础的任务执行框架,目的是根据所需应用场景,定制系统实现任务。此处有借助公司的框架思想实现的。废话不多说了,直接进入正题。由于此框架的实现目的是为了扩展强度高,对每一个功能都能实现其任务的定制。所以设计思想如下: 程序运行开启两个线程 第一个线程是每隔10s查询数据库里是否有待执行的任务,如果有加入到任务队列中,...原创 2019-07-18 16:31:11 · 6307 阅读 · 0 评论 -
对于大量数据存储入库问题的解决办法
在开发过程中,有时可能会遇到这种情况,当主线程中开启了N个子线程,而每个子线程中运算分析结果的数据量特别的大,如果对于这样的大批量数据在子线程中进行入库,那么会造成大量的连接资源浪费,同时会造成数据库阻塞影响程序执行效率。这时候解决方案有两个:将子线程中的数据统一用主线程接收,在主线程中进行入库操作。但是这种方案争对执行完成后,数据量较小的情况,不会造成内存溢出的情况下,如果在数据量非常庞大...原创 2019-07-18 17:55:58 · 7281 阅读 · 2 评论 -
Java使用C3P0数据库连接池的方法
JAVA基础之利用C3P0实现JDBC连接池,提高数据库处理的能力,加快性能。一般情况下,操作数据库的过程都是连接数据库->执行操作->释放资源。这样的操作在一般情况下是没什么问题的,但是如果出现频繁的操作就会造成一些性能上的问题,因为频繁打开关闭连接是个耗时的操作,所以就Java目前用得最多的是C3P0实现JDBC连接池,由于刚入手Java希望各位小伙伴海涵。使用C3P0先得引包...原创 2018-01-24 15:52:10 · 2220 阅读 · 0 评论 -
Docker容器中根据系统的UUID生成应用注册码
一般情况下,授权应用是通过统一的服务端进行管理授权的。但是由于我司是争对网络服务商提供应用技术支持的,服务器并不能连接到外网上,所以不能进行网络授权。所以需要根据服务器的唯一标识(如CPUID)进行注册码生成,但是如果把应用发布到Docker时,便获取不到宿主机的CPUID,这时我举例如下:在非Docker环境下获取注册码ID/** - 获取linux/unix系统设备的CPUID -...原创 2019-07-24 11:25:27 · 10686 阅读 · 4 评论