Mr.Cai

想吃抻面。

Maven antrun的故事

0x01 java target 问题: 老项目使用ant编译,生成协议文件的jar包不依赖其他jar包。所以使用的是java -jar jar_location,main class写在MANIFEST中。 <java jar="jar_location" fork="yes"> <arg value="xmlgen" /> <arg value="-j...

游戏业务中的微服务架构探索

从项目立项之初,到现在也有三个月了,服务器架构经过几个推到重来的过程到现在基本确立Spring Cloud作为基础微服务的架构也有一番波折。仅以此文记录这一路的艰辛。 0x01 单机滚新服架构1.0 项目程序之前都是MMORPG出身,策划的需求很稳定且单一,一般就是充值活动、能力坑,偶尔来一两个玩法类活动。这类需求的特征很明显,逻辑复杂,但是并没有跨服需求,传统的单机数据库事务可以很好满足...

Java ByteBuffer用法

0x01 capacity // it's right ByteBuffer b = ByteBuffer.allocate(3); b.put((byte)0x0a); b.put((byte)0x0b); b.put((byte)0x0c); // throw exception // Exception in thread "main" java.nio.BufferOverflo...

DevOps第二步 -- 用Docker compose来管理微服务容器

0x01 Docker compose Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose可以在一个文件中定义一个多容器应用,然后使用一条命令来启动应用,完成一切准备工作。 0x02 compose配置文件 附上demo version: "3" services: base: build: base eureka: bu...

Maven多profile打包

<!-- 通用配置 --> <build> <resources> <resource> <directory>${basedir}/src/main/resources</directory> <includes> <include>**/*</in...

DevOps第一步 -- 使用Docker

0x01 Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 0x02 Dockerfile FROM <image name>:基于哪个Docker镜像来构建新镜像。 MAINTAINER <autho...

limax-checkpoint

void checkpoint() { // 尝试加载磁盘备份snapshot List snapshotCopy = loadFromDisk(); // 关闭cleaner closeLruCleaner(); // marshal + snapshot marshal(); List snapshot = snapshot(); // 合并两次的sna...

一个关于多线程的问题

0x01 问题 最近有时间,整理个问题。校招的小徒弟8月某天写了一段代码,想使用三个线程按照ABC的顺序无限输出。但是发现没有按照预期输出,控制台输出一会就没有输出的,所以有些小疑惑。代码如下。 public class ThreadPrint implements Runnable{ Logger logger = Logger.getLogger(ThreadPrint.class.g...

KOF项目使用Spring Cloud趟坑小记

经常有没使用过maven的同学过来说我这个又编译不过了,在mvn compile之前,先把kof-common使用mvn install到本地仓库。(有精力的可以在内网搭个私服) config server要在依赖配置中心的服务之前起。

Spring 资源加载小解

0x01 PropertySourceLocator PropertySourceLocator可以实现从外部配置加载到bootstrap context中。 # Bootstrap components org.springframework.cloud.bootstrap.BootstrapConfiguration=\ org.springframework.cloud.boo...