centos7 mini 安装virtualbox

这篇文章主要针对linux纯命令行环境下安装windows的需求。 安装Virtualbox 下载 rpm 安装扩展工具包 vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.1.22-115126.vbox-extpack 创建虚拟机 VBoxManage createvm --name "Windows XP" --ostype WindowsXP --register 配置虚拟机,以下命令也可以合并到一行完成 vboxmanage modifyvm win2003 --ostype Windows10 配置系统类型,如果不是win10 32位可以通过vboxmanage list ostypes查找下 vboxmanage modifyvm win10 --memory 2048 配置内存2G vboxmanage modifyvm win10 --acpi on 配置电源管理 vboxmanage modifyvm win10 --nic1 nat 配置网卡工作模式 vboxmanage modifyvm win10 --cpus 2 配置CPU数量 创建虚拟硬盘 vboxmanage createhd --filename win10.vdi --size 102400 新建一个100G的硬盘,注意这里会在当前目录下创建,如果需要管理的话记得换个目录。 vboxmanage storagectl win10 --name win10HDD --add ide --bootable on 新建硬盘控制器 vboxmanage storageattach win10 --storagectl

Read more

我的世界游戏插件开发总结

在开发一个游戏插件时,有些东西是可以共用的,有些东西则是每个游戏单独有的。如何将这些内容区别开来,将共用的抽象成库,有助于提高以后的开发速度 可以共用的部分 一套更加完善的命令处理机制 bukkit自带的命令处理机制并不完美,需要写很多重复的代码,比如判断命令发送者的权限,是否是玩家等等,通过写一个代理来执行可以有效降低代码量。 在上一步的思路上,设计一套Annotation接口,把每个命令的要求通过Annotation配置,效率可以大大提升。 游戏初始化的逻辑 玩家排队的相关逻辑,如按顺序进入游戏、延迟传送等 一些游戏启动,监听加载的逻辑 游戏状态的控制 一个游戏从启动到结束的生命周期是类似的,由系统托管生命周期也有助于减少工作量 不可以共用的部分 每个游戏的逻辑 虽然很多游戏有相似之处,如:跑酷类型的游戏都是又一个点跑到另一个点,但是提取这种共用逻辑的价值不大,基本上没有重复使用的价值。除非是小游戏集合,有很多相似的游戏在一个包里面。 这个与游戏初始化的区别是,游戏初始化时每个小游戏必须要有的,但是这部分不一定。 监听操作 虽然很多监听操作是可以共用的,但是这样无疑会导致监听代码的复杂度直线上升。每个小游戏单独有自己的监听逻辑,启动时开启监听,结束时关闭监听。不仅有助于使代码更简洁,也能有效提高程序效率。

Read more

IntelliJ IDEA 设置Maven代理

在下一些国外的库时,如果直接下的话会非常慢,这个时候就需要为Maven配置一下代理~ 打开File->settting,然后搜索Maven,打开Maven下的Importing选项,在VM Options for importer一栏后面加上-DproxySet=true -DproxyHost=localhost -DproxyPort=1080。 这里面localhost就是代理服务器地址,1080就是端口。

Read more

Spigot开发文档整理

由于Spigot插件在不断更新,很多已有的中文文档已经不再适用,因此编写这篇文档对Spigot的官方教程做整理和翻译。 这份文档是为具备Java基础的开发者准备的,一些关于项目创建的过程直接略过了,只整理开发插件的核心内容。 新建项目 新建一个Java或Maven项目 导入spigot-api和bukkit的jar包 这里可以在https://hub.spigotmc.org/nexus/#welcome中搜索spigot-api和bukkit,下载自己所开发版本对应的包,下载并拖到项目依赖中。 如果不想手动下载,可建一个Maven项目,加入下面的repositories依赖,再把搜索结果右下方的信息复制到Maven的配置文件中,更新一下即可。 <repositories> <repository> <id>spigot-repo</id> <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> </repository> </repositories> 创建插件 新建插件的主类 插件的主类需要继承JavaPlugin JavaPlugin 提供了插件工作时所需要的各种方法和属性 每个插件只能有一个主类,其它需要JavaPlugin的地方可以在onEnable()中将属性的引用传递过去。 重写onEnable()和onDisable()方法 这两个方法会在服务器启动和关闭插件时执行 编写plugin.yml 这个文件描述了插件的相关信息,其详细格式可参考下面代码 Main.java package org.spigotmc.tutorial; import org.bukkit.plugin.java.JavaPlugin; public class Main

Read more

行人识别位置过滤总结

数据统计 数据统计工作是为了获得行人位置的分布区间。统计方法为计算不同高度下的行人ROI上边界和下边界距离假设的水平线的距离。 通过在DetectModule输出结果的部分插入以下代码实现统计: if (roi->height < 200) { count[1][roi->height >> 2] += (240 - roi->y - DST_START_COL); //此处统计上边界距离水平线距离 count[0][roi->height >> 2]++; for (int i = 0; i < 50; i++) { printf("%.2f ", count[0][i] == 0 ? 0 : count[1][i] / count[0][i]); } printf("\r\n"); } 统计结果按高度每4个像素为一个阶梯,分布如下图。 接下来统计一下分布距离与ROI高度的关系 从统计结果可以看书,上下边界距离水平线的距离大约呈线性增加,平均比率分别为0.6和0.4。 接下来针对70米(30~50个像素高度)左右距离的ROI进行分析,判断在某个距离下的ROI分布: if (roi->height > 30 && roi->height < 40)

Read more

红外行人识别系统标记方法

在行人识别的最后步骤,需要对识别出的行人进行标记。通常在实验阶段往往只是把ROI的框涂出来,但是在工程阶段,需要更加精细的标记方法以获得更好的用户体验。 经过总结,标记的ROI需要满足以下需求: 只标记人的身体部分,不填或少填无关的部分; 标记部分显示黄色,颜色深浅随着roi的置信度变化; 设计思路: 一般人体的亮度均大于背景,因此可以设置一个阈值,只标记高于阈值的像素,实现只标记人体部分。 我们红外图像只有亮度信息,对应到RGB色域中,RGB的值就是亮度的值。因此我们可以调高R和G的值来提高黄色的色度,降低B的值来增加颜色的深度。只要R和G的值一样且大于B就能获得理想的效果。 那么开始设计: 去除背景部分 经过测试,行人身体的亮度大都大于192,因此只标记亮度大于192的像素。 通过两个像素的均值确定需要填图的黄色色度 yy = (ptr[current + 1] + ptr[current + 3]) >> 1; 根据当前亮度,调整黄色的明暗程度,这部分yb的值必须小于yy yb = yy - (1 << level); 计算具体的亮度值 因为R和G固定,因此直接优化为0.886 * yy,再带入上一公式,化简 y = yy - 0.114 * (1 << level); 换算YCbCr ptr[current + 1] = y; ptr[current + 3] = y; ptr[current] = (yb - y) * 0.564 + 128; ptr[current + 2] = (yy -

Read more

皖ICP备13007154号-1