Bean的冒险船


  • 首页

  • 归档

  • 标签

  • 公益404

  • 搜索

Limax ZDB简单介绍及死锁分析

发表于 2017-05-22

背景

limax是比较小众的应用服务器框架,zdb是limax采用的数据存储方式。zdb采用k-v存储,没有事务的概念,自带锁(加锁和解锁同操作封装在一起,对外隐藏),编程较为简单。
项目前期使用zdb进行数据存储,随着项目规模的扩大,暴露出一些问题。每个服务器都有一个zdb.xml文件,基于该文件,ant构建生成的table和xbean也只有当前服务器可以读取。为保证数据一致性,zdb使用方式若未严格注意,导致数据分散在不同职能的服务器上,当某个功能需要的数据需要从不同的服务器上读取时,这就很尴尬了,数据读取繁琐,服务器之间通信协议的繁琐导致编程的繁琐。现在正在逐步废弃zdb,采用主流的mysql+redis存储。
embarrassed

阅读全文 »

Wins下MySQL配置

发表于 2017-05-16

Windows 64bit下通用,配置步骤如下。配置不受Mysql版本号的影响。本例为Win7配置,版本号为5.7.18。

添加环境变量

1.系统变量下新建变量,变量名为:MYSQL_HOME,变量值为G:\mysql\mysql-5.7.18-winx64
2.编辑系统变量的Path,添加变量值;%MYSQL_HOME%\bin

解压MySQL压缩包

将下载的MySQL压缩包解压到自定义目录下,我的解压目录是:

G:\mysql\mysql-5.7.18-winx64

bin目录下新建my.ini, 复制下面的配置信息到 my.ini 保存

阅读全文 »

高效洗牌算法介绍

发表于 2017-04-14

最近写了一个梭哈牌戏Demo,简单介绍用到的洗牌算法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void shuffle()
{
// 随机位数索引
int tmpIndex;
// 临时存储数组当前值
Card tmpCard;
for (int i = 0; i < CardDeck.DECK_SIZE; i++)
{
tmpIndex = (int)(Math.random() * CardDeck.DECK_SIZE);
if (tmpIndex != i)
{
tmpCard = cards[tmpIndex];
cards[tmpIndex] = cards[i];
cards[i] = tmpCard;
}
}
return;
}

思想:从数组第一位开始,随机random一个数字,第一位和随机出的那位交换;然后依次遍历这个过程到最后一张牌。时间复杂度O(n),空间复杂度O(1)。
优点:与抽牌算法(随机抽牌放到新数组,直到抽完为止)相比,当前洗牌算法随机性更强,已随机的位数仍会与后面随机的数位交换;无需开辟新数组,空间复杂度降低。

阅读全文 »

游戏开发历程记录-H5

发表于 2017-03-26

背景

H5游戏前端开发有将近一年经验,大部分项目都是单兵作战。主要使用引擎和语言为Egret(TypeScipt),Construct2(JavaScript)。
前端完全独立开发的上线游戏有三款:Survival(活下去),砰砰兔,IO游戏炸弹人。现在转向游戏服务端开发,开发语言目前以Java为主,项目包括App及H5,棋牌类为主。这里是对之前的H5开发项目进行阶段性的总结。

正式项目

Survival:开发的第一款H5手游,负责后半段的前后端开发。Egret GUI项目,后端使用php和mysql,文字类游戏,视频链接。 个人服务器demo链接地址 ,感兴趣可以在qq空间玩吧搜一下。

阅读全文 »

.gitignore & .gitattributes 简介

发表于 2017-03-12

.gitignore文件

使用git做版本管理时,首先在根目录建README.md和.gitignore文件,
.gitignore为忽略不必要提交的文件,特殊文件不加入版本库中,如编辑器缓存,若ide使用idea,.gitignore文件则要添加:

1
2
3
**/.idea
**/*.iml
**/target

**表示所有层级目录

Github标记图标的更改

github上传新项目时,发现没有分类图标(图标错误也是这么改),这里将添加过程记录下来。
github_icon
根目录下新建.gitattributes文件,将以下内容复制保存。

1
2
3
*.js linguist-language=Java
*.css linguist-language=Java
*.html linguist-language=Java

该文件将html、css、js(想关联的文件)文件关联为Java(目标类型)。此时,github将此项目识别为Java项目。
git_ignore

Construct2使用心得

发表于 2017-03-03

Construct2从接触到使用已有半年时间,优点就是上手容易,开发快,但只适合小型2D-H5游戏且是闭源,很适合懂技术的策划使用,对程序猿来讲,玩玩即可。同大多数H5游戏引擎相同,也是一次开发,导出多平台包。引擎本身只提供基础功能,插件的使用及开发是Construct2核心之一。官方论坛上有各种需要的插件,C2插件大神Rex贡献尤为突出。

前端架构建议

  1. 将全局变量统一放到一个事件表中,我习惯命名为Global,统一管理全局变量。
  2. 不能过分使用全局变量,根据变量的作用域分类,只跟某个对象有关放到对象的局部变量中;如果变量只在当前layout有效,可以考虑放到对象的局部变量中,或者当前布局所有事件放到一个大组里,变量声明在当前组内。
    阅读全文 »

window下修改本机dns及本机域名

发表于 2017-02-05

修改本机dns服务器

本地dns出现问题,如某些域名访问不到(无法解析),可修改本机dns服务器
路径:控制面板->网络和Internet->网络连接->本地连接->右键属性->网络->双击Internet协议版本4(TCP/IPV4),显示如下
ipv4_panel_before
修改为如下
ipv4_panel_after
8.8.8.8及8.8.4.4是google提供的公用dns服务器,其他大厂也提供了公用dns服务器,随意选个用就行。

修改本机域名解析

hosts文件添加域名解析,可实现

  • 自定义域名在本地访问本机,实际没啥用,如添加
    1
    127.0.0.1 dev.test.com

cmd下查看域名解析(nslookup),可看到域名已指向本机,本机可通过域名访问本地服务。

  • 解决域名污染的问题。未备案的域名指向个人搭建的服务器,不幸的话,会遇到域名污染的情况,无法通过域名获取服务,可修改hosts文件添加本机域名解析,一定程度解决问题
  • 翻墙,下载可靠的hosts文件,替换本机hosts文件,可一定程度翻墙。正经翻墙还是需要有国外服务器,搭建个梯子,正向代理。
    hosts文件路径:
    1
    C:\Windows\System32\drivers\etc\hosts

Windows下使用Hexo+Github搭建个人博客

发表于 2017-01-01

Hexo介绍

静态博客生成器,根据给定的主题,负责把写好的 Markdown 文章转换成一堆 HTML + CSS + Javascript 页面。另外,Hexo 还有把生成好的站点上传到 Github Pages 的功能。

背景

记录个人学习和生活,作为程序猿,搭建个人博客是个不错的选择。但只是个博客,购买云服务器有些不值当,服务器稍微好些的配置就得上千。之前好友买过国外的服务器,hosts不加域名解析经常访问不到,更悲催的是,.com域名还被污染了,吓得我抱紧自己,决定用免费的gitPages吧。scaryDog
搭建的时候看过一些教程,还是遇到了一些问题(其实直接看hexo官网就ok的)。
我在搭建时,使用的是Win10系统,以下搭建步骤是支持所有Wins系统的。OS系统下搭建与Wins不同,以hexo官网为准,可参考本文

搭建步骤

阅读全文 »

Shadowsockets Introduce

发表于 2016-11-06

一、简介

1.原因

GFW(Great Fire Wall, 网络防火城墙)。

2.方法

Shodowsockets转发请求。代理服务器隐藏了请求客户端(正向代理),因此请求不被拦截。

3.流程

以访问google为例:
①用户发起网络请求,浏览器访问google。
②请求发送到本地代理客户端(shadowsockets客户端)。
③本地代理拿到请求数据,发送到墙外的代理服务器(shadowsockets服务端)。
④代理服务器向google发起请求, 收到响应数据后,再返回给代理客户端。
⑤代理客户端将响应数据交给浏览器,请求完成。

二、准备

一台可访问的墙外服务器(VPN供应商如Vultr、搬瓦工、亚马逊等), 推荐Vultr。

三、安装

1.服务端

阅读全文 »

浅谈Http中GET与POST的区别

发表于 2016-10-29

最近看了几篇介绍GET与POST的文章,讲的很有意思,在这里引用总结一下。

区别

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE,分别对应着资源的查,改,增,删。

  • GET和POST是HTTP请求的两种基本方法,GET一般用于获取资源信息,而POST一般用于更新资源信息。
  • GET请求在URL中传送的参数是有长度限制的,最多只能是1024字节,理论上POST木有限制,可传较大量的数据。
  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  • GET参数通过URL传递,POST放在Request body中。
  • GET在浏览器回退时是无害的,而POST会再次提交请求。
  • …………灯,灯灯灯灯
    从表面看,GET与POST的区别那么多,实际上呢?让我们扒下GET和POST的外衣,坦诚相见吧!
    pretendB
    阅读全文 »
1…567
MonkeyBean

MonkeyBean

行云流水 天马行空

62 日志
16 标签
GitHub 微博
友情链接
  • 耀耀的博客
  • 7nocturnal的博客
  • xiaofeng的博客
  • Angus的博客
© 2016 - 2022 MonkeyBean
由 Hexo 强力驱动
主题 - NexT.Pisces