白夜布衣的博客

做代码的搬运工

  • 博客(23)
  • 收藏
  • 关注

原创 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 3601

原创 论Throwable与Exception的区别

众所周知,异常是一个程序中不可避免的,而一般的解决办法是捕获异常来让程序继续运行而不死掉。笔者前段时间就因线程异常导致了排错困难。问题:主线程中开启的子线程无固死掉描述:在主线程中我开启了一个子线程处理业务逻辑,但是由于某些问题,导致子线程执行到某一步时突然死掉,没有执行下面的逻辑。在子线程的run方法中,我用try…catch捕获了Exception异常,但是子线程死掉并没有抛出异常...

2020-04-22 11:52:58 1303

原创 Docker在线拉取安装wordpress详细步骤

拉取wordpress镜像(默认最新)这一步和代理仓库有关,可能拉取时间偏久一点(出错时多拉取一次)docker pull wordpress启动wordpress容器启动容器,设置容器名为mywordpress并把80端口映射到宿主机的9999端口docker run -it --name mywordpress -p 9999:80 -d wordpress查看容器状...

2019-08-02 17:33:24 5711 1

原创 JAVA实现多线程任务执行框架

很长时间没有写过文章了,因现在从事的JAVA方向的系统开发,所以独自写了一个基础的任务执行框架,目的是根据所需应用场景,定制系统实现任务。此处有借助公司的框架思想实现的。废话不多说了,直接进入正题。由于此框架的实现目的是为了扩展强度高,对每一个功能都能实现其任务的定制。所以设计思想如下: 程序运行开启两个线程 第一个线程是每隔10s查询数据库里是否有待执行的任务,如果有加入到任务队列中,...

2019-07-18 16:31:11 6285

原创 SpringBoot配置多数据源实现过程

最近想写一个能用的API服务程序,它将实现我平常所用到的所有API服务请求,那它涉及的数据源肯定就不止一个,关于多数据源我的配置如下 (SpringBoot1.5.6) :先关闭SpringBoot对于MyBatis的自动注入@EnableAutoConfiguration(exclude= {DataSourceAutoConfiguration.class,DataSourceTran...

2019-09-17 16:07:35 4796

原创 docker容器中时区与宿主机时区不一致的解决方案

在安装好容器后,通常情况下时区与宿主机的时区是不一致的,而最便捷的解决方法就是,每次run容器的时候就设置好容器时区(还有其它方案,但笔者认为这个最方便)此时以安装Mysql容器为例:docker run -it --name=mysql5.7 -p 3305:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -d mysql:5...

2019-08-30 09:26:13 3145

原创 论写代码时逻辑要严谨的重要性

程序员都知道,对于计算机资源的利用必须严谨,在使用完资源后一定要释放它,否则就会造成内存泄漏,资源一直占用的危害。今天笔者就对文件IO操作完后,没有关闭流造成一定的问题,在拍错过程中也是有一定的难度。以下为对多个文件进行压缩的方法: /** * 将多个文件打包成压缩包 * @param srcFiles * @param zipFile */ public static voi...

2019-08-20 17:48:54 3417 1

原创 Java利用itchat4j插件实现个人微信自动化

一直都想实现个人智能微信,不需要自己操作就可以实现与好友的交流,实现微信的智能化。但是在实现过程中,发现已有大神封装了相应的API了,自己做简单调用就可实现了,组件的Git地址:https://github.com/yaphone/itchat4j 克隆下来后,导入到工程中,创建一个新的工程将之引入。这样基本环境就搭建好了:先创建一个消息处理Handel这是实现智能微信最关键的地方,它需要实...

2019-08-13 15:19:44 5949 7

原创 使用Python检测Linux服务器连接状态

在对Linux服务器的维护过程中,有时需要及时的知道这些服务器能不能正常连接,以便及时联系管理员进行处理。假设这批服务器都是使用ssh的方式登陆,需要通过python程序进行检测:安装Python第三方模块paramikopip install paramiko在程序当前目录下建一份Linux服务器配置文档(servers.txt)#内容如下(地址 账号 密码)空格分隔,多台服...

2019-08-05 18:02:34 4136 1

原创 通过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 4479

原创 CentOS下Docker安装方法详细步骤

使用yum安装dockeryum install docker启动docker,并设置开机自启systemctl start dockersystemctl enable docker查看docker是否安装成功(有client和service两部分表示docker安装启动都成功了)docker version-----------------------------...

2019-07-25 10:52:03 3164

原创 Docker容器中根据系统的UUID生成应用注册码

一般情况下,授权应用是通过统一的服务端进行管理授权的。但是由于我司是争对网络服务商提供应用技术支持的,服务器并不能连接到外网上,所以不能进行网络授权。所以需要根据服务器的唯一标识(如CPUID)进行注册码生成,但是如果把应用发布到Docker时,便获取不到宿主机的CPUID,这时我举例如下:在非Docker环境下获取注册码ID/** - 获取linux/unix系统设备的CPUID -...

2019-07-24 11:25:27 10508 4

原创 【算法】利用栈解决表达式计算

问题描述输入一个只包含加减乖除和括号的合法表达式,求表达式的值。其中除表示整除。输入格式输入一行,包含一个表达式。输出格式输出这个表达式的值。样例输入1-2+3*(4-5)样例输出-4数据规模和约定表达式长度不超过100,表达式运算合法且运算过程都在int内进行。代码如下:#include<stdio.h> #include<string.h>...

2019-07-22 15:30:03 3051

原创 对于大量数据存储入库问题的解决办法

在开发过程中,有时可能会遇到这种情况,当主线程中开启了N个子线程,而每个子线程中运算分析结果的数据量特别的大,如果对于这样的大批量数据在子线程中进行入库,那么会造成大量的连接资源浪费,同时会造成数据库阻塞影响程序执行效率。这时候解决方案有两个:将子线程中的数据统一用主线程接收,在主线程中进行入库操作。但是这种方案争对执行完成后,数据量较小的情况,不会造成内存溢出的情况下,如果在数据量非常庞大...

2019-07-18 17:55:58 7257 2

原创 巧妙使用阿里云OSS存储服务器

在开发过程中,有时会遇到大文件传输或者说在服务器带宽不足的时候就可以利用OSS来存储你的文件,它不经过你的服务器,所以加载起来较快,同时它也很便宜,现在就TP3.2上传大文件到OSS上进行说明:首先下载PHP SDK包,将它解压放到ThinkPHP/Library/Vendor下;定义自己OSS服务的相关参数,此时我以常量定义到入口文件处:define("AccessKeyId", ...

2018-03-06 16:55:11 2555

原创 Cookie与Session之间的联系与区别

开发WEB的兄弟们都知道,Cookie与Session是开发过程中不可避免的两个对象,它们的共同特点是让每一个客户端都有一块属于自己的空间,保存属于自己的数据。而大家都知道Cookie是保存在客户端本地的,具有一定的不安全性;而Session是将会话数据保存在服务器的,所以相对来说比较安全,但是唯一的缺陷是会加大服务器内存压力。所以合理的选择Cookie还是Session来实现相关功能显得较为重要...

2018-02-08 15:41:16 2335

原创 Java使用C3P0数据库连接池的方法

JAVA基础之利用C3P0实现JDBC连接池,提高数据库处理的能力,加快性能。一般情况下,操作数据库的过程都是连接数据库->执行操作->释放资源。这样的操作在一般情况下是没什么问题的,但是如果出现频繁的操作就会造成一些性能上的问题,因为频繁打开关闭连接是个耗时的操作,所以就Java目前用得最多的是C3P0实现JDBC连接池,由于刚入手Java希望各位小伙伴海涵。使用C3P0先得引包...

2018-01-24 15:52:10 2210

原创 Git上传代码到云仓库

–创建本地仓库–进入项目工程目录–初始化本地仓库git init–本地仓库和远程仓库建立联系git remote add origin https://git.oschina.net/liwenqiang/School_New-Webform–查看远程仓库git remote -v–添加文件git add -A...

2017-12-27 15:24:52 2075

原创 PHP之西昌麻将算法的实现

至今为止,目前开发的西昌麻将已经根据客户的需求,基本完成了此游戏的开发,由于还正在内测,所以可能算法会有一些小问题,先奉上目前的算法实现。此算法是用一个数字表示着某一张牌,1-9筒子、11-19条子、21-29万子,所以算法比较简单:如判胡:一对将牌、三个成顺、三个成砍 满足此条件就为胡,还有种特殊情况是小七对、暗七对,所以具体的算法实现如下:<?php/** * 专...

2017-12-27 13:31:45 2596

原创 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 3182

原创 PHP算法之斗牛游戏牛型判断

在前段时间开发了一款斗牛士游戏,前面已经说到过是采用PHP开发的,这此我将详细描述此算法的实现过程。由于此游戏逻辑较简单,仅判断牛型大小、并对牛型进行比较,所以我决定采用type、num、count的结构来表示一张牌对象。如下:<?php/** * Created by PhpStorm. * User: LiBing * Date: 2017/9/28 * Tim...

2017-12-04 16:39:06 3460

原创 PHP游戏服务器之GlobalData组件的运用

众所周之,服务器的设计永远不能依赖于单进程/单线程,由于PHP本质上是不支持多线程的,所以在开发过程中,只能把不同的逻辑或者用户分发到不同的进程之间进行处理(这是由系统自己调用分发的)。由此可知道在游戏中用户之间必须共享一些特定的公共数据,由于PHP进程之间不能够直接调用数据,所以就需要一个共公的数据库或者内存空间进行保存,因我的服务器采用的是WorkerMan进行开发的,所以用到...

2017-12-01 11:40:36 2395

原创 PHP游戏服务器的设计思路

因公司需要,从WEB后端转向游戏开发,于是开始了我的游戏服务器开发旅程(棋牌游戏),想象之中、原以为开发游戏服务器是特别难的,其中的算法与数据、网络的规划/设计等都是开发WEB不能想象的,从WEB中的http协议转为现如今的TCP长连接协议,可以说完全摒弃以前WEB中的请求->响应便完成了一次会话,因为TCP是面向连接的协议,所以需要了解网络的三次握手的流程。服务器需要做...

2017-11-11 11:11:20 3594

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除