目标 :实现一个class函数,给lua添加面向对象的特性
基础 :和编译型的面向对象语言不同,在lua中不存在类的定义这样一个概念,不管是类的定义还是类的实例都需要通过lua table来模拟。我们实现的lua面向对象是prototype方式的,即类是一个lua table,这个table 定义了类实例的原型, 类的实例则是基于这个原型的另一个lua table。
关键 :实现Lua面向对象可以分解为类的定义和类的实例化两个问题。类的定义主要是实现继承,即怎么让子类拥有父类的方法集。类的实例化需要解决实例如何共享类的方法集,但独享自己的成员变量实例。
方案 :子类在定义时复制所有基类的方法,在实例化时将该类作为metatable的__index赋值给实例。这就是cocos2dx里面的lua class的实现。
function class(classname, super)
local cls = {}
if super then --复制基类方法
cls = {}
for k,v in pairs(super) do cls[k] = v end
cls.super = super
else
cls = {ctor = function() end}
end
cls.__cname = classname
cls.__index = cls
function cls.new(...) --实例化
local instance = setmetatable({}, cls)
instance.class = cls
instance:ctor(...)
return instance
end
return cls
end
在这个实现方式中,所有子类的实例都共享了类原型中的方法。设想我们在类ClassA中定义了方法A,当调用实例的方法A时,lua解释器会先在实例table里面找方法A,因为我们没有在实例中添加方法,自然是找不到,于是解释器会通过实例的metatable里面的__index字段来找方法A,这个__index字段其实就是类原型,于是方法A被找到调用成功了。现在我们调用实例的方法B, B不是在ClassA中定义的,而是在ClassA的基类ClassB中定义的,由于ClassA在定义的时候已经把基类ClassB的方法全部复制了一遍,所以解释器仍然可以成功调用到B,继承实现了。
但是这个实现有个严重的问题,类的成员变量没有继承下来。看下面一个测试:
BaseClass = class("BaseClass", nil)
function BaseClass:ctor(param)
print("baseclass ctor")
self._param = param
self._children = {}
end
function BaseClass:addChild(obj)
table.insert(self._children, obj)
end
DerivedClass = class("DerivedClass", BaseClass)
function DerivedClass:ctor(param)
print("derivedclass ctor")
end
local instance = DerivedClass.new("param1")
instance:addChild("child1")
运行这个测试,我们会得到两行输出:
derivedclass ctor
bad argument #1 to 'insert' (table expected, got nil)
self._children为什么是nil呢?从输出我们看出子类的实例确实成功调用了父类的addChild方法,但是这个方法调用失败了,因为self._children是nil。再细看我们发现基类的构造函数根本没有调用,我们的self._children = {}是放在基类的构造函数里面的,没有调用基类的构造函数自然self._children是nil了。
好,看来这个class实现不完美,我们做一个修补,在子类的构造里面调用一下父类的构造函数。
function DerivedClass:ctor(param)
self.super:ctor(param)
print("derivedclass ctor")
end
再次运行测试,我们得到了三行输出:
baseclass
ctorderivedclass
ctorclasstest1.lua:32: bad argument #1 to 'insert' (table expected, got nil)
这回基类的构造函数成功调用了,可为什么self._children依然是nil?
把instance的内容dump出来我们发现调用了基类的构造函数后_children被添加到基类的原型中去了,并没有添加到我们子类的实例中,这样在子类实例的self中去找_children自然是找不到了。
<1>{
class = <2>{
__cname = "DerivedClass",
__index = ,
addChild = ,
ctor = ,
new = ,
super = <3>{
__cname = "BaseClass",
__index = ,
_children = <4>{},
_param = ,
addChild =
ctor = ,
new =
}
},
=
}
基类的原型中根本不应该有成员变量,所以我们这个修补并不是我们想要的。当然我们这样改就没有问题了:
function DerivedClass:ctor(param)
self._children = {}
print("derivedclass ctor")
end
可是如果在基类中定义好的成员在子类中还要定义一遍,这可不是我们想要的面向对象啊。看来cocos2dx的lua class 实现是有问题的。
修正 :上面方法的类定义部分其实没有问题,但是实例化部分粗糙了。调用基类的构造函数时所使用的self指的是基类的原型table,而我们希望的是指向实例table,原型只需要提供方法,不需实例化成员变量,于是我们想到了做如下修改。
function class(classname, super)
local cls = {}
if super then
cls = {}
for k,v in pairs(super) do cls[k] = v end
cls.super = super
else
cls = {ctor = function() end}
end
cls.__cname = classname
cls.__index = cls
function cls.new(...)
local instance = setmetatable({}, cls)
local create
create = function(c, ...)
if c.super then -- 递归向上调用create
create(c.super, ...)
end
if c.ctor then
c.ctor(instance, ...)
end
end
create(instance, ...)
instance.class = cls
return instance
end
return cls
end
再运行测试,我们得到了正确的结果。打印出子类实例的结构,我们看到_children现在是实例table的成员变量了:
<1>{
_children = <2>{ "child1" },
_param = "param1",
class = <3>{
__cname = "DerivedClass",
__index = ,
addChild = ,
ctor = ,
new = ,
super = <4>{
__cname = "BaseClass",
__index = ,
addChild = ,
ctor = ,
new =
}
},
=
}
你可能感兴趣的:(游戏开发)
架构设计之服务分级
你一身傲骨怎能输
架构设计 网络 服务分级
架构设计之服务分级具体游戏案例详细分析过程架构设计之服务分级具体游戏案例详细分析过程在游戏开发中,架构设计和服务分级是确保游戏稳定性、可用性和用户体验的关键因素。以下是一个具体的游戏案例分析过程,展示如何进行服务分级和架构设计。案例背景假设我们正在开发一款大型多人在线角色扮演游戏(MMORPG),该游戏包含多个模块和服务,如用户认证、游戏逻辑、实时聊天、支付系统和数据存储等。为了确保游戏的高可用性
html5游戏引擎-Pharse.js学习笔记(一)
18520195858
游戏 javascript c/c++ ViewUI
1.前言前几天随着flappybird这样的小游戏的火爆,使我这种也曾了解过html5技术的js业余爱好者也开始关注游戏开发。研究过两个个比较成熟的html5游戏引擎,感觉用引擎还是要方便一些。所以决定从今天正式开始研究html5游戏引擎,并且将从看官网demo的学习整理成博客和大家一起分享。我了解过cocos-2dforhtml5和phaser.js这两个引擎,其中前者比较复杂,对于有过coco
Lua 数据库访问
froginwe11
开发语言
Lua数据库访问引言Lua是一种轻量级的编程语言,因其简洁性和高效性,常被用于游戏开发、嵌入系统和应用程序开发。在许多情况下,数据库访问是应用程序的核心功能之一。本文将深入探讨在Lua中如何进行数据库访问,包括连接数据库、执行查询、处理结果以及异常处理等。Lua数据库访问概述在Lua中,有多种方法可以用来访问数据库。以下是几种常用的数据库访问方式:直接使用数据库的命令行工具:例如,使用MySQL的
【大模型实战】零门槛入门AgentScope多智能体游戏开发:和Agent玩飞花令
南七小僧
服务器开发 网站开发 人工智能 数据库 服务器 运维
1.项目起因最近,阿里开源了一款全新的多智能体协同的Multi-Agent应用框架-AgentScope,早先的单智能体还只能完成对话类等一些简单的应用,通过调用外部API(如搜索绘画配音等)也只是拓展了单智能体的能力边界。如果能够调用多个智能体,并做好多个智能体之间的协同配合,就能够打造出内容和样式更加丰富的应用。中国古典诗词中的经典游戏(如飞花令尾字接龙即景联诗九宫格)等,非常考验选手的知识储
基于Unity引擎的日志管理模块深度技术分析
晴空了无痕
项目框架 unity 游戏引擎 系统架构
引言在游戏开发领域,日志系统是诊断运行时问题的重要基础设施。本文将以GameFramework.Logging命名空间下的LogController类为研究对象(原YouYou.LoggerManager),从架构设计、实现机制、性能优化等多个维度进行深入剖析,并提出改进建议。本文涉及的类名和变量名均经过语义化重构,以提升代码可读性。一、架构设计分析1.1类层次结构设计publicclassLog
Unity入门
七七喝椰奶
Unity 经验分享
摘要本文是为那些缺乏Unity使用经验的读者设立的,会对Unity游戏开发的大致流程以及一些属于进行说明Unity的游戏开发,大体可以分为三个步骤将美术素材和各种逻辑功能整合在一起,创建出角色摆放好各个角色,创建出场景创建好所有需要的场景根据我们的经验可以知道,在游戏中,玩家操作的角色以及敌方角色,还有作为游戏舞台的背景等都会显示在画面上。游戏中的那些角色可以通过鼠标或者触屏来操作,也可以根据自己
【C++游戏开发-五子棋】
局外人_Jia
c++ 人工智能 算法 开发语言 游戏程序
使用C++开发五子棋游戏的详细实现方案,涵盖核心逻辑、界面设计和AI对战功能:1.项目结构FiveChess/├──include/│├──Board.h//棋盘类│├──Player.h//玩家类│├──AI.h//AI类│└──Game.h//游戏主逻辑├──src/│├──Board.cpp//棋盘实现│├──Player.cpp//玩家实现│├──AI.cpp//AI实现│├──Game.
基于A*算法与贝塞尔曲线的路径规划与可视化:从栅格地图到平滑路径生成
机器懒得学习
pygame python
引言在机器人导航、自动驾驶和游戏开发等领域,路径规划是一个核心问题。如何高效地找到从起点到终点的最优路径,并且确保路径的平滑性和安全性,是许多应用场景中的关键挑战。本文将介绍一种结合A算法和贝塞尔曲线的路径规划方法,并通过Pygame实现可视化。我们将从栅格地图的加载与处理开始,逐步讲解A算法的实现、贝塞尔曲线的生成,以及如何通过鼠标交互实现动态路径规划。通过本文,你将掌握如何在实际项目中应用这些
Unity-New Input System
BuHuaX
unity lucene 游戏引擎 c# 游戏程序
Unity新输入系统(NewInputSystem)详解简介本文详细介绍Unity中的NewInputSystem。这是Unity全新的输入系统,比旧的输入系统更加强大和灵活,可以更好地管理复杂的输入(如手柄、键盘、鼠标、触摸屏等),并且更好地支持跨平台游戏开发。安装与配置1.安装步骤打开Unity编辑器的PackageManager(菜单栏:Window->PackageManager)点击右上
使用Python开发高级游戏:创建一个3D射击游戏
风亦辰739
Python小游戏 python 游戏 3d
在这篇文章中,我们将深入介绍如何使用Python开发一个简单的3D射击游戏。我们将使用Pygame库来创建2D游戏界面,并结合PyOpenGL来进行3D渲染。这个项目的目标是帮助你理解如何将2D和3D图形结合起来,创建更复杂的游戏机制,包括玩家控制、敌人AI、碰撞检测和声音效果。一、开发环境准备安装依赖库:Pygame:用于2D游戏开发和图形渲染。PyOpenGL:用于处理3D渲染。numpy:用
c++ vscode 第三方库_使用VSCode和CMake构建跨平台的C/C++开发环境
杨易之君
c++ vscode 第三方库
日前在学习制作LearnOpenGL教程的实战项目Breakout游戏时,希望能将这个小游戏开发成跨平台的,支持在多个平台运行。工欲善其事必先利其器,首先需要做的自然是搭建一个舒服的跨平台C/C++开发环境,所以这篇文章主要就是记录环境搭建的整个过程,踩到的一些坑,以及对应的解决办法。正文开始之前,先来阐述几个问题为什么选择使用VSCode实在用不习惯VisualStudio(也可能是用的太少了T
Unity 中的输入管理模块:一个键盘按键事件的统一管理方案
春天花花幼稚园的程序员教孩子如何玩键盘
Unity功能模块 Unity C# solr lucene unity 游戏引擎
在Unity游戏开发中,处理键盘按键事件是一个常见需求。然而,当一个按键需要触发多个事件,并且这些事件需要按一定顺序执行时,管理这些事件可能变得复杂且容易出错。为了降低系统模块之间的耦合性,并提高代码的可读性和可维护性,我们需要一个统一的输入管理模块。本文将介绍如何在Unity中实现一个键盘按键事件的统一管理模块。这个模块支持按键按下、抬起、长按和按住等多种事件类型,并且可以通过优先级控制事件的执
Lua语言的安全开发
沈韡蕙
包罗万象 golang 开发语言 后端
Lua语言的安全开发引言随着计算机技术的飞速发展,编程语言在软件开发中的重要性日益凸显。Lua作为一种轻量级的编程语言,以其简洁的语法和强大的扩展性受到广泛欢迎,尤其在游戏开发、嵌入式系统以及Web开发等领域,有着尤为显著的应用。然而,随之而来的安全隐患也不可忽视。在开发过程中,如果不关注安全问题,容易导致意外的漏洞和安全风险,因此在Lua语言的开发中,安全性显得尤为重要。本文将深入探讨Lua语言
Unity3D实战入门之第三人称射击游戏(TPS)-伍晓波-专题视频课程
wxblzzz
视频教程 射击游戏 TPS Unity3D实战 Unity3D 手机游戏
Unity3D实战入门之第三人称射击游戏(TPS)—327人已学习课程介绍这是一套第三人称射击游戏开发的入门基础课程。本课程以一款小型的第三人称射击游戏为案例,手把手教你如何搭建一款3D射击游戏的雏形。麻雀虽小,五脏俱全,这款小游戏难度不大,但第三人称射击游戏该有的模块、功能它都有涉及。通过案例游戏的开发,学习者可以对第三人称射击游戏入门,对后续复杂大中型3D游戏的开发有实际的借鉴意义。这套课程,
unity引擎包含哪些核心组件
你一身傲骨怎能输
商业化游戏开发技术专栏 unity 游戏引擎
Unity引擎的核心组件构成了其强大的游戏开发和运行时环境。以下是一些主要的核心组件:SceneManagement:场景管理器允许开发者创建、加载和切换游戏中的不同场景。RenderingEngine:渲染引擎支持2D和3D图形,提供了多种渲染路径和着色器,以实现各种视觉效果。PhysicsEngine:物理引擎(基于NVIDIAPhysX)模拟真实世界的物理行为,包括碰撞检测和刚体动力学。Sc
Phaser引擎开发:Phaser基础入门_Phaser游戏循环机制详解
chenlz2007
游戏开发 游戏 前端 javascript html5 音视频 html 开发语言
Phaser游戏循环机制详解在Phaser引擎中,游戏循环机制是游戏开发的核心部分之一。游戏循环负责持续地更新游戏状态和渲染游戏画面,确保游戏的流畅运行。理解游戏循环的工作原理对于优化游戏性能和实现复杂的游戏逻辑至关重要。本节将详细介绍Phaser游戏循环的各个阶段及其工作原理,并通过具体示例来说明如何在实际开发中应用这些概念。1.游戏循环的基本概念游戏循环(GameLoop)是游戏开发中一个不断
搜维尔科技在动作捕捉与动画制作、汽车制造与安全测试、机器人与自动化领域的一些案例
虚拟现实产品超市
科技 汽车 制造
动作捕捉与动画制作领域1.逼真的手部和面部动画制作:动画师施先生利用搜维尔科技代理的Xsens套装、ManusVR手套和Faceware的面部动作捕捉系统,捕捉短片中人物的手部和面部动作,再将数据重新定位到角色骨架上并调整,最终在虚幻引擎5的支持下,制作出极其逼真和流畅的动画。2.《伊苏:梦境交织的长夜》游戏开发:北京源力星聚网络科技有限公司使用搜维尔科技提供的2套XsensMVNlink、2副M
Unity 打造游戏资源加密解密系统详解
Clank的游戏栈
unity 游戏 java
在游戏开发中,保护游戏资源不被轻易破解和盗用至关重要。本文将详细介绍如何在Unity中打造一个游戏资源加密解密系统,并提供技术详解和代码实现。一、加密方案选择1.1对称加密优点:加密解密速度快,适合加密大量数据。缺点:密钥管理困难,安全性相对较低。常用算法:AES、DES1.2非对称加密优点:安全性高,密钥管理方便。缺点:加密解密速度慢,不适合加密大量数据。常用算法:RSA1.3混合加密结合对称加
Pygame从入门到精通--实现贪吃蛇小游戏
出门喝奶茶
pygame pygame python
Pygame是一个功能强大的2D游戏开发框架,适合用来学习编程和开发小游戏。如果您想从入门到精通Pygame,以下是一个全面的学习路线和内容清单。1.入门阶段:初识Pygame目标:理解什么是pygame,学会安装和运行简单的程序。了解pygame:pygame是一个专门用于2D游戏开发的Python库,基于SDL(SimpleDirectMediaLayer)。特点:跨平台、简单易学、适合小游戏
Unity3D Shader 简析:变体与缓存详解
Thomas_YXQ
缓存 Unity3D 前端 开发语言 Shader
引言在Unity3D中,Shader是渲染管线的核心部分,负责控制物体的外观和材质表现。Shader的变体(Variants)和缓存机制是优化渲染性能的关键。本文将深入探讨Unity3D中Shader变体的概念、缓存机制以及如何通过代码实现和管理这些变体。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!1.Shader变体简介1.1什么是Shader变体?Shader
Unity Dots理论学习-1.关于性能
keep-learner
Unity unity 学习 游戏引擎 ECS
如果你是一个有经验的游戏开发者,那么你知道在目标平台上进行性能优化是贯穿整个开发周期的任务。也许你的游戏在高端PC上运行得很好,但在低端移动平台上,帧率是不是会慢很多,导致明显的卡顿?加载时间是不是过长,玩家每次走过门时,游戏就会卡住几秒钟?在这种情况下,不仅当前的游戏体验不尽如人意,游戏本身也因此被阻止添加更多功能:更多的环境细节和规模、游戏机制、角色和动作、视觉效果等。问题的根源是什么?在许多
从技术开始-中台(1)
大道不孤,众行致远
平台介绍 大数据
中台概念的来源中台概念,起源于阿里高管集体考察世界上最成功的手游公司Supercell的经历。Supercell有个独门绝技,就是他们凭借多年的游戏开发经验,梳理出了一套通用的游戏开发素材、通用算法,依托这些基础工作形成了强大的快速开发能力、得以快速满足市场需求。Supercell用不到200名员工每年可以创造15亿美元利润。通过这次考察,结合自身实践,阿里提出了“大中台、小前台”的企业战略。建立
UE4基础理论-Gameplay框架
solo ·
ue4 面试
Gameplay框架UE的Gameplay框架是引擎的核心系统,提供了多个类和组件作为游戏开发的基本框架。主要包括游戏规则、状态,3C(Camera、Character、Control)和用户界面等。具体包括:Actor:所有能放到游戏场景中的对象的基类都是AActor。如静态网格体、摄像机等三维实体,AGameMode、AGameState等信息状态规则都是Actor。Component:Act
【从零开始入门unity游戏开发之——C#篇55】C#补充知识点——解构函数(Deconstruct)
向宇it
# unity c# 游戏引擎 编辑器 开发语言
考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把【零基础入门unity游戏开发】分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的同学入门。【unity通用篇】:主要讲解unity的基础通用的知识,包括unity界面、unity脚本、unit
AWS在游戏开发与全球发行中的技术实践与架构解析
AWS官方合作商
java 架构 云原生 服务器 运维
在当今全球化游戏市场中,从独立工作室到3A大厂都面临着严峻的技术挑战:如何构建可弹性扩展的全球架构,如何应对百万级并发玩家的实时交互需求,如何确保跨地域玩家的低延迟体验。本文将从技术架构角度深入解析AWS在游戏开发全生命周期中的典型应用场景。(正文约3680字)一、游戏服务端架构演进与AWS技术选型1.1分布式游戏后端架构现代游戏服务器普遍采用微服务架构,AWS提供完整的解决方案:EC2AutoS
TresJS:用Vue组件构建3D场景的新选择
z止于至善
WebGL # Three.js Vue.js vue.js 3d 前端
在当今数字化时代,3D图形技术正以前所未有的速度发展,从游戏开发到虚拟现实(VR)、增强现实(AR),再到各种沉浸式体验,3D技术的应用场景日益丰富。TresJS作为一款基于Three.js的Web3D开发框架,以其强大的功能和简洁的API,为开发者提供了一个高效、便捷的开发平台。今天,就让我们一起走进TresJS的世界,探索它的魅力所在。一、TresJS简介TresJS是一个基于Three.js
安全见闻(网络安全篇)
.Ayang
渗透测试学习笔记 安全 web安全 网络安全 网络 计算机网络
笔记仅供学习,切勿触碰法律红线!以下笔记学习来自B站泷羽Sec:https://space.bilibili.com/350329294?spm_id_from=333.337.search-card.all.click如涉及侵权马上删除文章1.编程语言C语言:一种通用的、面向过程的编程语言,广泛应用于系统软件和嵌入式开发。C++:在C语言基础上发展而来,支持面向对象编程,常用于游戏开发、高性能计
Groovy语言的游戏开发
霍璟琅
包罗万象 golang 开发语言 后端
Groovy语言的游戏开发之旅引言随着游戏产业的飞速发展,越来越多的开发者开始寻找更高效、更灵活的编程语言来实现他们的创意。Groovy作为一种动态的JVM语言,近些年来逐渐受到开发者的关注。本文将探讨Groovy语言在游戏开发中的应用、优势、相关框架以及如何通过实际示例来帮助开发者快速上手。Groovy语言简介Groovy是一种基于Java平台的编程语言,通常用于简化Java开发过程。它的语法相
Lua语言的语法糖
霍璟琅
包罗万象 golang 开发语言 后端
Lua语言的语法糖Lua是一种轻量级、高效且灵活的脚本语言,它广泛应用于游戏开发、嵌入式系统和其他需要高性能的场景。其简洁明了的语法以及强大的功能使得Lua在开发者中备受欢迎。本文将围绕Lua语言中的“语法糖”进行深入探讨,从定义、实现到实际应用,并最终给出几个示例,以帮助读者更好地理解和使用Lua的语法特性。一、什么是语法糖语法糖(SyntacticSugar)是一个编程语言中的术语,指的是那些
使用Unity开发游戏,有流行的框架嘛?
Clank的游戏栈
游戏开发 unity3D unity unity 框架
Unity已经是一个功能很强大的游戏引擎,使用Unity来开发项目的时候,一般我们主要是从以下几个方面来基于Unity来改造成一个游戏开发的工作流工具,就是大家说的所谓框架。这里有个unity学习交流小组点击可以一起讨论交流(1)定制渲染管线,让游戏达到特定的画面效果,这个是大型公司经常会遇到的基于Unity引擎的一个改造,改造后,能使得整个画面效果,美术工作流等相关都确定下来。(2)多平台,多渠
jQuery 跨域访问的三种方式 No 'Access-Control-Allow-Origin' header is present on the reque
qiaolevip
每天进步一点点 学习永无止境 跨域 众观千象
XMLHttpRequest cannot load http://v.xxx.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access. test.html:1
mysql 分区查询优化
annan211
java 分区 优化 mysql
分区查询优化
引入分区可以给查询带来一定的优势,但同时也会引入一些bug.
分区最大的优点就是优化器可以根据分区函数来过滤掉一些分区,通过分区过滤可以让查询扫描更少的数据。
所以,对于访问分区表来说,很重要的一点是要在where 条件中带入分区,让优化器过滤掉无需访问的分区。
可以通过查看explain执行计划,是否携带 partitions
MYSQL存储过程中使用游标
chicony
Mysql存储过程
DELIMITER $$
DROP PROCEDURE IF EXISTS getUserInfo $$
CREATE PROCEDURE getUserInfo(in date_day datetime)-- -- 实例-- 存储过程名为:getUserInfo-- 参数为:date_day日期格式:2008-03-08-- BEGINdecla
mysql 和 sqlite 区别
Array_06
sqlite
转载:
http://www.cnblogs.com/ygm900/p/3460663.html
mysql 和 sqlite 区别
SQLITE是单机数据库。功能简约,小型化,追求最大磁盘效率
MYSQL是完善的服务器数据库。功能全面,综合化,追求最大并发效率
MYSQL、Sybase、Oracle等这些都是试用于服务器数据量大功能多需要安装,例如网站访问量比较大的。而sq
pinyin4j使用
oloz
pinyin4j
首先需要pinyin4j的jar包支持;jar包已上传至附件内
方法一:把汉字转换为拼音;例如:编程转换后则为biancheng
/**
* 将汉字转换为全拼
* @param src 你的需要转换的汉字
* @param isUPPERCASE 是否转换为大写的拼音; true:转换为大写;fal
微博发送私信
随意而生
微博
在前面文章中说了如和获取登陆时候所需要的cookie,现在只要拿到最后登陆所需要的cookie,然后抓包分析一下微博私信发送界面
http://weibo.com/message/history?uid=****&name=****
可以发现其发送提交的Post请求和其中的数据,
让后用程序模拟发送POST请求中的数据,带着cookie发送到私信的接入口,就可以实现发私信的功能了。
jsp
香水浓
jsp
JSP初始化
容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。如果您需要执行自定义的JSP初始化任务,复写jspInit()方法就行了
JSP执行
这一阶段描述了JSP生命周期中一切与请求相关的交互行为,直到被销毁。
当JSP网页完成初始化后
在 Windows 上安装 SVN Subversion 服务端
AdyZhang
SVN
在 Windows 上安装 SVN Subversion 服务端2009-09-16高宏伟哈尔滨市道里区通达街291号
最佳阅读效果请访问原地址:http://blog.donews.com/dukejoe/archive/2009/09/16/1560917.aspx
现在的Subversion已经足够稳定,而且已经进入了它的黄金时段。我们看到大量的项目都在使
android开发中如何使用 alertDialog从listView中删除数据?
aijuans
android
我现在使用listView展示了很多的配置信息,我现在想在点击其中一条的时候填出 alertDialog,点击确认后就删除该条数据,( ArrayAdapter ,ArrayList,listView 全部删除),我知道在 下面的onItemLongClick 方法中 参数 arg2 是选中的序号,但是我不知道如何继续处理下去 1 2 3
jdk-6u26-linux-x64.bin 安装
baalwolf
linux
1.上传安装文件(jdk-6u26-linux-x64.bin)
2.修改权限
[root@localhost ~]# ls -l /usr/local/jdk-6u26-linux-x64.bin
3.执行安装文件
[root@localhost ~]# cd /usr/local
[root@localhost local]# ./jdk-6u26-linux-x64.bin&nbs
MongoDB经典面试题集锦
BigBird2012
mongodb
1.什么是NoSQL数据库?NoSQL和RDBMS有什么区别?在哪些情况下使用和不使用NoSQL数据库?
NoSQL是非关系型数据库,NoSQL = Not Only SQL。
关系型数据库采用的结构化的数据,NoSQL采用的是键值对的方式存储数据。
在处理非结构化/半结构化的大数据时;在水平方向上进行扩展时;随时应对动态增加的数据项时可以优先考虑使用NoSQL数据库。
在考虑数据库的成熟
JavaScript异步编程Promise模式的6个特性
bijian1013
JavaScript Promise
Promise是一个非常有价值的构造器,能够帮助你避免使用镶套匿名方法,而使用更具有可读性的方式组装异步代码。这里我们将介绍6个最简单的特性。
在我们开始正式介绍之前,我们想看看Javascript Promise的样子:
var p = new Promise(function(r
[Zookeeper学习笔记之八]Zookeeper源代码分析之Zookeeper.ZKWatchManager
bit1129
zookeeper
ClientWatchManager接口
//接口的唯一方法materialize用于确定那些Watcher需要被通知
//确定Watcher需要三方面的因素1.事件状态 2.事件类型 3.znode的path
public interface ClientWatchManager {
/**
* Return a set of watchers that should
【Scala十五】Scala核心九:隐式转换之二
bit1129
scala
隐式转换存在的必要性,
在Java Swing中,按钮点击事件的处理,转换为Scala的的写法如下:
val button = new JButton
button.addActionListener(
new ActionListener {
def actionPerformed(event: ActionEvent) {
Android JSON数据的解析与封装小Demo
ronin47
转自:http://www.open-open.com/lib/view/open1420529336406.html
package com.example.jsondemo;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
impor
[设计]字体创意设计方法谈
brotherlamp
UI ui自学 ui视频 ui教程 ui资料
从古至今,文字在我们的生活中是必不可少的事物,我们不能想象没有文字的世界将会是怎样。在平面设计中,UI设计师在文字上所花的心思和功夫最多,因为文字能直观地表达UI设计师所的意念。在文字上的创造设计,直接反映出平面作品的主题。
如设计一幅戴尔笔记本电脑的广告海报,假设海报上没有出现“戴尔”两个文字,即使放上所有戴尔笔记本电脑的图片都不能让人们得知这些电脑是什么品牌。只要写上“戴尔笔
单调队列-用一个长度为k的窗在整数数列上移动,求窗里面所包含的数的最大值
bylijinnan
java 算法 面试题
import java.util.LinkedList;
/*
单调队列 滑动窗口
单调队列是这样的一个队列:队列里面的元素是有序的,是递增或者递减
题目:给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k.
要求:f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i = 0,1,...,N-1
问题的另一种描述就
struts2处理一个form多个submit
chiangfai
struts2
web应用中,为完成不同工作,一个jsp的form标签可能有多个submit。如下代码:
<s:form action="submit" method="post" namespace="/my">
<s:textfield name="msg" label="叙述:">
shell查找上个月,陷阱及野路子
chenchao051
shell
date -d "-1 month" +%F
以上这段代码,假如在2012/10/31执行,结果并不会出现你预计的9月份,而是会出现八月份,原因是10月份有31天,9月份30天,所以-1 month在10月份看来要减去31天,所以直接到了8月31日这天,这不靠谱。
野路子解决:假设当天日期大于15号
mysql导出数据中文乱码问题
daizj
mysql 中文乱码 导数据
解决mysql导入导出数据乱码问题方法:
1、进入mysql,通过如下命令查看数据库编码方式:
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------------------+
| Variable_name&nbs
SAE部署Smarty出现:Uncaught exception 'SmartyException' with message 'unable to write
dcj3sjt126com
PHP smarty sae
对于SAE出现的问题:Uncaught exception 'SmartyException' with message 'unable to write file...。
官方给出了详细的FAQ:http://sae.sina.com.cn/?m=faqs&catId=11#show_213
解决方案为:
01
$path
《教父》系列台词
dcj3sjt126com
Your love is also your weak point.
你的所爱同时也是你的弱点。
If anything in this life is certain, if history has taught us anything, it is
that you can kill anyone.
不顾家的人永远不可能成为一个真正的男人。 &
mongodb安装与使用
dyy_gusi
mongo
一.MongoDB安装和启动,widndows和linux基本相同
1.下载数据库,
linux:mongodb-linux-x86_64-ubuntu1404-3.0.3.tgz
2.解压文件,并且放置到合适的位置
tar -vxf mongodb-linux-x86_64-ubun
Git排除目录
geeksun
git
在Git的版本控制中,可能有些文件是不需要加入控制的,那我们在提交代码时就需要忽略这些文件,下面讲讲应该怎么给Git配置一些忽略规则。
有三种方法可以忽略掉这些文件,这三种方法都能达到目的,只不过适用情景不一样。
1. 针对单一工程排除文件
这种方式会让这个工程的所有修改者在克隆代码的同时,也能克隆到过滤规则,而不用自己再写一份,这就能保证所有修改者应用的都是同一
Ubuntu 创建开机自启动脚本的方法
hongtoushizi
ubuntu
转载自: http://rongjih.blog.163.com/blog/static/33574461201111504843245/
Ubuntu 创建开机自启动脚本的步骤如下:
1) 将你的启动脚本复制到 /etc/init.d目录下 以下假设你的脚本文件名为 test。
2) 设置脚本文件的权限 $ sudo chmod 755
第八章 流量复制/AB测试/协程
jinnianshilongnian
nginx lua coroutine
流量复制
在实际开发中经常涉及到项目的升级,而该升级不能简单的上线就完事了,需要验证该升级是否兼容老的上线,因此可能需要并行运行两个项目一段时间进行数据比对和校验,待没问题后再进行上线。这其实就需要进行流量复制,把流量复制到其他服务器上,一种方式是使用如tcpcopy引流;另外我们还可以使用nginx的HttpLuaModule模块中的ngx.location.capture_multi进行并发
电商系统商品表设计
lkl
DROP TABLE IF EXISTS `category`; -- 类目表
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `category` (
`id` int(11) NOT NUL
修改phpMyAdmin导入SQL文件的大小限制
pda158
sql mysql
用phpMyAdmin导入mysql数据库时,我的10M的
数据库不能导入,提示mysql数据库最大只能导入2M。
phpMyAdmin数据库导入出错: You probably tried to upload too large file. Please refer to documentation for ways to workaround this limit.
Tomcat性能调优方案
Sobfist
apache jvm tomcat 应用服务器
一、操作系统调优
对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统运行速度越快。。
【适用场景】 任何项目。
二、Java虚拟机调优
应该选择SUN的JVM,在满足项目需要的前提下,尽量选用版本较高的JVM,一般来说高版本产品在速度和效率上比低版本会有改进。
J
SQLServer学习笔记
vipbooks
数据结构 xml
1、create database school 创建数据库school
2、drop database school 删除数据库school
3、use school 连接到school数据库,使其成为当前数据库
4、create table class(classID int primary key identity not null)
创建一个名为class的表,其有一