自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

你不知道的永远比你知道的要多得多——做人要低调,学会倾听,学会思考,学会反省...还有很多要学会...

  • 博客(119)
  • 资源 (12)
  • 收藏
  • 关注

原创 Android App Bundle 自动打包原理

Google推出Android App Bundle 已经有一段时间了。 根据Google的政策说明 ,预计2021年8月之后,新发布的应用都必须使用Android App Bundle(aab)来上架Google Play Store了。对于Android App Bundle的原理,Google官方文档已经有了很详细的介绍, 想了解的同学建议直接阅读Google的官方文档。如果你是使用Android Studio打包,那么你直接在Android Studio中选择构建App Bundle即可将应

2021-02-06 09:46:01 3113 3

原创 U8SDK——开发统一的手游防沉迷插件

关于统一防沉迷插件的配置和使用, 可以参考我们B站上面录制的视频教程(未满18岁那个视频):【U8SDK官方视频】根据手游防沉迷和实名认证政策的要求, 手机游戏需要引导玩家进行实名认证;同时针对未成年玩家,手机游戏需要提供防沉迷机制, 限制玩家的在线时长,以及充值额度。现阶段随着政策的收紧,各个渠道SDK基本都有根据政策的解读实现实名认证和实名查询等逻辑,但是防沉迷机制很多渠道SDK则直接抛给了游戏。 另外呢,目前少部分渠道SDK(长尾等小渠道)甚至连实名认证都没有提供。 所以, 目前游戏如果上..

2020-06-17 09:08:47 1860

原创 iOS代码混淆原理初探

我们在手游平台SDK的iOS版本中, 除了AppStore官方支付之外还集成了第三方支付(微信支付H5和支付宝支付H5版本)。 如果用于企业签,不需要做处理,直接使用即可。 但是如果需要上架AppStore,我们需要屏蔽第三方支付。 这个我们后台设置开关,直接后台切换支付方式即可。 上架审核的时候, 切换为Appstore支付;审核通过的时候,切换为第三方支付。因为第三方支付,是H5方式,不会被机...

2019-11-25 15:41:16 1865 1

原创 游戏平台SDK设计和开发之旅——XSDK功能点梳理

做游戏开发或者相关工作的同学,可能都知道,在游戏上线之前,需要将游戏分发到各大渠道平台,比如九游,百度,360,华为等等。其中和技术相关的事情,就是要在游戏中接入这些渠道平台的平台SDK,平台SDK中一般会提供登录和支付相关的接口,需要游戏来调用。但是现在的游戏行业,除了渠道平台, 很多发行商,甚至CP(游戏研发商)自己也开始研发自己的平台SDK,因为对于一款游戏来说,除了上各大主流的渠道平台之外

2017-10-22 10:37:07 9217 5

原创 U8Server——分布式环境下唯一订单号生成规则

U8Server支持分布式部署之后, 我们还有一个问题需要解决, 那就是分布式环境下,唯一订单号生成问题。 之前U8Server的订单号生成规则是 32位时间戳+32位序号,最终生成一个64位的long类型的订单号。之前也考虑过,使用UUID等方式, 但是综合考虑下来, 我们决定还是让订单号使用数字类型(好排序),同时让订单号逐渐递增,并具有一定的自解释语义(这里主要指的是订单的产生时间)支持分布式

2017-01-10 17:18:23 2995

原创 教你快速高效接入SDK——iOS多渠道自动打包工具核心原理

在说Android打包工具原理的时候,我们说到了U8SDK整套框架的核心设计思想。针对N款游戏,我们让渠道SDK的接入成本始终控制在1,而不是N。这就是U8SDK Android版本和iOS版本的核心设计原则,所有的设计,就本着这个宗旨来实现。但是,为了适应几十家几百家渠道,同时又不能破坏这个原则,这就要求我们的框架足够的灵活,足够的可扩展。之前Android打包工具核心思想(穿越到Android打

2016-07-31 16:14:40 6843

原创 U8SDK——支持自动拆分成多个dex文件(MultiDex支持)

Android应用程序,最终发布成一个apk,安装到手机上。 apk文件随便用一个解压缩文件打开,可以看到里面有一个classes.dex文件,这就是之前工程中所有的代码,以及所有依赖的jar包全部合并在一起生成的一个dex文件。关于dex文件是什么,可以自己去科普一下。google当初在设计dex文件的时候,限制了dex文件中最大的函数个数为65536(unsigned short),如果超出这个

2016-04-27 07:46:09 4886 1

原创 Unity3D开发基础组件提取总结

在游戏开发过程中,除了逻辑功能的开发之外,还有很多基础的模块。这些模块,对大部分手机网络游戏来说都是一样的。所以,在上个游戏已经上线运营大半年之际,我觉得有必要将这些模块整理出来,让后面其他游戏的开发,可以不用从0开始。该游戏客户端采用Unity3D开发,那么我们这里抽取的基础组件也就是针对Unity3D引擎来的。简单的梳理之后,我发现主要有以下一些模块,可以独立抽取出来,当然各个模块之间也有一个

2016-03-20 16:47:38 6086 6

原创 追逐梦想——毕业4年小记

在这难得的几天闲暇之际,不经意间,看了看之前的博客,才恍然发现,自己都已经毕业4年多了。看着毕业之际写的那篇《我的2011》,再回顾下这几年自己的技术路程,感慨良多。所以,一时意起,又敲起了键盘,来回顾下这几年自己走过的路,给不断前行的自己,再留下一个脚印......

2016-02-11 23:15:48 5112 8

原创 ULog远程日志——让Android调试更加方便直观

在发布U8SDK之后,使用U8SDK做SDK接入的同学,反馈比较多的一个问题就是调试困难。这其实不是U8SDK的毛病,而是Android开发的通病。做Android开发,我们通常都是结合logcat来调试,如果是原生的应用,有时我们还可以直接通过Debug断点来调试,但是,做游戏开发,我们一般采用U3D,Cocos2dx游戏引擎开发之后,发布到对应的移动平台。所以,断点调试就不太好实现了。很多时候,

2016-02-02 12:02:41 7087 2

原创 U8SDK——Cocos2dx游戏快速渠道SDK接入

最近抽了点时间,折腾了下cocos2dx中接入U8SDK的Demo。同时,简单封装了下,使得在cocos2dx中能够快速地接入U8SDK。先说下大体的思路。和之前说的在Unity中接入U8SDK一样,在Cocos2dx中接入U8SDK,我们也分为两步,一个Android中的部分,另 一个是Coccos2dx中的部分。同时,我们希望尽可能地封装不同平台之间数据的传递,以及接口的调用。使得大部分游戏基于

2016-01-20 19:32:41 4021

原创 U8Framework4SSH ——开源了一套SSH2(Struts2+Spring+Hibernate)整合框架

U8Framework4SSH项目地址:https://github.com/u8-xiaohei/U8Framework4SSHU8Server中使用的SSH2(Struts2+Spring3+Hibernate4)框架,包括U8Server集成好的配置文件,以及抽象出来的一些通用组件,使得基于J2EE框架开发的同学可以快速展开工作。U8Server是U8SDK统一渠道SDK接入框架的服务器端。U

2015-09-10 20:28:42 4520

原创 教你快速高效接入SDK——服务器端支付回调的处理方式

今天着重把之前渠道服务器端SDK的时候,遇到的一个蛋疼的问题给解决了。按照之前我们搭建U8Server的思路,U8Server是可以完美支持多款游戏的。包括登录认证和支付回调。登录认证,没啥好说的。统一的接口即可,和客户端的协议对应上。支付回调呢?各个渠道的支付回调逻辑,对于每款游戏来说都是一样的,然后每个游戏填写的登录回调地址,也都一样。U8Server采用J2EE成熟框架实现,各个游戏的各

2015-09-09 19:50:01 8635 1

原创 教你快速高效接入SDK——Unity统一接入渠道SDK(Unity篇)

上一篇,我们着重讲解了用Unity开发的手游,在接入U8SDK时,Android中的部分。接下来,这一篇,我们就来看看,在Unity工程中,我们需要怎么调用上一篇中我们提供的各种接口,以及怎么接收Android中的消息通知,比如登录成功,切换帐号成功等。 在写代码之前,我们先要做一个简单的配置,在Project面板中,按照Unity官方的要求,新建一个Plugins文件夹,在Plugins文件夹下

2015-08-27 12:44:24 25261 3

原创 教你快速高效接入SDK——Unity统一接入渠道SDK(Android篇)

U8SDK的设计之初,就是为了能够支持各种游戏引擎开发的游戏,而不仅仅是Android的原生平台。目前一大半的手游,都是采用Unity3D和Cocos2dx开发,那么这里,我们就先来一步步给大家演示,用Unity开发的游戏,如何通过U8SDK来快速地完成多家渠道SDK的接入。Unity研发的手游,只需要调用U8SDK抽象层即可完成多家渠道SDK的接入,而不需要在Unity中耦合各个渠道S

2015-07-30 08:39:07 33476 5

原创 U8SDK全套视频教程终于免费啦

为游戏开发的小伙伴送福利来了~U8SDK视频教程终于完全免费了,之前一直因为费用望而却步的童鞋有福了。以下是从u8sdk官方博客了解的消息:之前u8sdk的全套实现视频教程价格是500元,实在让很多囊中羞涩的童鞋,想看都不舍得花这个钱。但是,u8sdk的初衷,本不是盈利,而是让更多的人能够基于u8sdk的思想,去实现一套属于自己的统一渠道SDK接入框架。至于

2015-05-21 14:22:54 9969 1

原创 教你快速SDK接入——快速批量修改渠道号

在游戏快上线的时候,我们除了接入多家联运的渠道SDK之外,还有另一些情况存在。就是常说的CPS,CPA,CPD等情况。这些都无需接入SDK,仅仅是一些广告推广手段。通常我们会基于官方SDK的游戏包,生成多个用逻辑渠道号标识的一些包。用这些逻辑渠道号来标示这个游戏包属于哪个广告渠道。通常就是这样的需求,比如:基于官方SDK的包生成以下逻辑渠道包:google渠道包友盟渠道包百

2015-04-24 21:05:33 5199 1

原创 U8SDK——统一闪屏解决方案

很多SDK都明确要求在游戏启动的时候,显示一张含有渠道SDK Logo的一张全屏图片,大概需要显示2至3秒的时间。像UC,百度SDK是在自己的SDK里已经自带了闪屏的功能(一般是在SDK初始化的时候)。但是,还有很多其他渠道需要游戏在接入他们的SDK时,自己去实现这个闪屏功能。他们仅仅提供一张闪屏图片。那么,在U8SDK中,我们如何去处理这个闪屏功能呢?因为U8SD

2015-04-11 09:55:58 4031

原创 教你快速高效接入SDK——手游聚合SDK打包工具的实现

整套u8sdk的核心思想,就是让我们的SDK接入成本,能够控制在1,而不是N。啥意思呢?就是,我开发第一款游戏的时候,我接了这些SDK,当我开发第二款,第三款游戏的时候,这套SDK可以尽可能的复用,而不是每开发一款游戏,又从头去接各个渠道sdk。所有的游戏都能够使用同一套SDK接入框架,来快速完成SDK的接入工作。那么,在U8SDK里,我们怎么做到呢?请看我们总体的思路:

2015-03-15 18:58:47 12447

原创 教你快速高效接入SDK——统一sdk服务器的实现

U8Server是采用J2EE框架SSH2实现的。当然你也可以采用任何其他你熟悉的语言实现。上一篇文章中,我们从类的抽象中,大致梳理了一下U8Server所要完成的工作。大的方向上,U8Server需要实现统一的用户登录认证,和支付中心两大功能。更深入的细节,U8Server需要完成以下功能:游戏管理:查询游戏,创建游戏(同时生成游戏的唯一appID,appKey等),编辑游戏,删除游

2015-03-08 19:10:48 6293

原创 教你快速高效接入SDK——U8Server的初步分析

在U8SDK整套框架总体架构那篇文章,我们就给出了服务器端的解决方案,为此,我们加入了一个U8Server,来作为U8SDK整套框架的服务器端的统一用户认证中心和支付中心。那么,为了方便,我们这里再来引用一下登陆认证的流程图:回顾下我们之前的分析,U8Server作为统一的登陆认证中心,针对的是多款游戏,那么每款游戏在接入SDK之前,就需要向U8Server申请一个

2015-02-24 16:37:53 5668

原创 教你快速高效接入SDK——关于Application的适配和代理

我们知道,每个android应用程序中都有一个唯一的上下文Application对象,这个Application一般我们不需要去关心他,应用启动时,系统会自动创建一个默认的Application实例。但是,因为Application在整个应用中是唯一的,也就是说,他是一个单例。所以,有的应用就可能希望利用Application来完成一些工作。好在,在android中,实现一个自定义的A

2015-02-09 09:08:24 6179

原创 Java服务器热部署的实现原理

今天发现早年在大象笔记中写的一篇笔记,之前放在ijavaboy上的,现在它已经访问不了了。前几天又有同事在讨论这个问题。这里拿来分享一下。在web应用开发或者游戏服务器开发的过程中,我们时时刻刻都在使用热部署。热部署的目的很简单,就是为了节省应用开发和发布的时间。比如,我们在使用Tomcat或者Jboss等应用服务器开发应用时,我们经常会开启热部署功能。热部署,简单点来说,就是我们将打

2015-01-17 19:12:31 69071 5

原创 教你快速高效接入SDK——手游聚合SDK框架中渠道SDK部分的接入(就是实现抽象层的接口而已)

题记:很多做游戏开发的人,估计都或多或少地接过渠道SDK,什么UC,当乐,91,小米,360......据统计国内市场当前不下于100家渠道,还包括一些没有SDK的小渠道。每个渠道SDK接入的方法呢,多是大同小异。但是,正是这些小异,又让SDK的接入,产生了无穷无尽的变数。所以,接入SDK之前,如果你没有经验,或者没有被SDK坑过,那么当你看到这系列文章的时候,你很幸运,你可以避免这一切了。如果你

2015-01-11 20:31:49 13908 1

原创 教你快速高效接入SDK——游戏接入SDK(只接入抽象框架)

题记:很多做游戏开发的人,估计都或多或少地接过渠道SDK,什么UC,当乐,91,小米,360......据统计国内市场当前不下于100家渠道,还包括一些没有SDK的小渠道。每个渠道SDK接入的方法呢,多是大同小异。但是,正是这些小异,又让SDK的接入,产生了无穷无尽的变数。所以,接入SDK之前,如果你没有经验,或者没有被SDK坑过,那么当你看到这系列文章的时候,你很幸运,你可以避免这一切了。如果你

2015-01-05 21:09:09 24252

原创 教你快速高效接入SDK——SDK接入抽象层的设计

题记:很多做游戏开发的人,估计都或多或少地接过渠道SDK,什么UC,当乐,91,小米,360......据统计国内市场当前不下于100家渠道,还包括一些没有SDK的小渠道。每个渠道SDK接入的方法呢,多是大同小异。但是,正是这些小异,又让SDK的接入,产生了无穷无尽的变数。所以,接入SDK之前,如果你没有经验,或者没有被SDK坑过,那么当你看到这系列文章的时候,你很幸运,你可以避免这一切了。如果你

2014-12-29 21:39:07 10376 6

原创 教你快速高效接入SDK——手游聚合SDK的总体思路和架构

题记:很多做游戏开发的人,估计都或多或少地接过渠道SDK,什么UC,当乐,91,小米,360......据统计国内市场当前不下于100家渠道,还包括一些没有SDK的小渠道。每个渠道SDK接入的方法呢,多是大同小异。但是,正是这些小异,又让SDK的接入,产生了无穷无尽的变数。所以,接入SDK之前,如果你没有经验,或者没有被SDK坑过,那么当你看到这系列文章的时候,你很幸运,你可以避免这一切了。如果你

2014-12-28 21:50:07 78461 11

原创 [小记]将windows下的文件拷贝到多台linux服务器下

很久没有写了。之前创办了一个独立网站(ijavaboy.com),后来由于游戏开发真的太忙,没有多余的精力弄他,结果不知什么时候,他都挂了。原来的内容也都被清理了。幸好内容也不是特别多。后来,想了想,虽然独立的网站,自由度高一些,可以自己按照自己的需求来弄。但是,其中避免不了的风险也很多,比如,服务器宕机,内容不慎丢失,域名到期忘记续费......所以,还是回归到CSDN来吧。上一份工

2013-11-18 16:54:38 4314

原创 Mysql一主多从和读写分离配置简记

近期开发的系统中使用MySql作为数据库,由于数据涉及到Money,所以不得不慎重。同时,用户对最大访问量也提出了要求。为了避免Mysql成为性能瓶颈并具备很好的容错能力,特此实现主从热备和读写分离。在此简做纪要,以备日后所用!一、配置主从条件:两台PC,IP分别为192.168.168.253,192.168.168.251。两台PC上的Mysql版本为5.0。253上的Mysql为Ma

2012-05-30 16:44:21 51621 2

原创 小A的年前面试经历——实录

博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我题记——快过年了,我们都在等着过年放假回家,朋友小A却意外地告诉我们,她辞职了。惊讶之余,她也向我们倾诉了她前天的两则面试经历。 听小A的意思,本来,也没有希望在春节之前考虑找工作,因为毕竟春节前好像招聘的很少,

2012-01-16 17:16:45 4938 5

原创 我的2011——毕业之年的总结与彷徨

博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我题记——眼看2011即将成为过去,难得在这最后的时刻,抽点时间,倒上一杯热茶,回忆这一年的浮浮沉沉。 这一年,我和所有毕业生一样,离开了呆了四年的大学校园。呆腻了校园的生活,放弃了保送研究生的路,

2011-12-28 14:58:09 9116 15

原创 说说Android桌面(Launcher应用)背后的故事(大结局)——让Widget拥有Application同等的待遇

博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我前一篇中,演示了如何开发一个Widget以及如何开发一个WidgetHost应用。有了这个基础,我们就知道,要想在桌面上添加Widget,那么需要完成两件事情:1、将桌面应用实现为一个WidgetHost应用2、CellL

2011-12-27 15:25:10 11177 12

原创 说说Android桌面(Launcher应用)背后的故事(九)——让我的桌面多姿多彩

博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我 到这里我们的Launcher已经可以跑起来了,而且效果也如系统Launcher一般,但是,遗憾的是,我们的桌面上似乎都是一个摸样的Shortcut,而再看看系统桌面上,Search框,天气控件啊,各种大小参差不齐,界

2011-12-19 17:36:34 7952 3

原创 说说Android桌面(Launcher应用)背后的故事(八)——让桌面的精灵穿越起来

博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我 有了前面的工作,基本上这个桌面就已经像模像样了,但是,和系统自带的Launcher相比,还差得很远。其中,系统Launcher的桌面上的item是可以任意穿越(移动)的。同时,在其穿越的过程中,你

2011-12-16 09:32:13 7220 8

原创 说说Android桌面(Launcher应用)背后的故事(七)——又是一个附属品(可以转动的绚烂饼图)

博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我本来这一篇应该还是写Launcher中item拖拽的实现原理的,奈何,自从研究了Launcher,以前没有实现的,现在灵感全来了。这不,一个月前看到了著名记账软件随手记,看到android版中有一个炫酷的可以旋转的统计饼图,当

2011-12-02 22:06:31 9765 11

原创 说说Android桌面(Launcher应用)背后的故事(六)——研究Launcher而实现的附属品(可以拖拽的ListView)

博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我 本来这一篇将写Android中Launcher是如何实现桌面上item的拖拽的,当研究了其机理之后,突然大脑发热,想实现一个可以拖拽的ListView,在理解了Launcher中item的拖拽,再来实现可

2011-12-01 17:18:56 8729 4

原创 说说Android桌面(Launcher应用)背后的故事(五)——桌面壁纸的添加

博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我上一篇中,我们了解了Workspace是如何处理多个CellLayout之间的滑动的。这篇,将记录如何将壁纸添加到桌面,以及Workspace如何处理滑动的时候,壁纸的滑动。壁纸的添加,也是调用系统自带的,用如下方式调用:

2011-11-30 15:15:23 15679 5

原创 说说Android桌面(Launcher应用)背后的故事(四)——揭秘Workspace

博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我 前面说了Layout最主要的职责就是负责item的布局和空间的分配,这一节我们继续来看看CellLayout的父亲控件Workspace。手机的桌面是由几个屏幕的,你可以任意滑动的。这个布局就是一

2011-11-26 15:05:17 18486 8

原创 说说Android桌面(Launcher应用)背后的故事(三)——CellLayout的秘密

博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我CellLayout的设计主要为了存放大小不一的控件。为了更好的控制item的添加和删除,选择直接继承ViewGroup来实现该控件。我们长按桌面的时候,有两种情况,一种是我们按的是一个item,还有一种是我们按的是一个空

2011-11-24 17:18:46 28067 16

原创 说说Android桌面(Launcher应用)背后的故事(二)——应用程序的添加

博客搬家啦——为了更好地经营博客,本人已经将博客迁移至www.ijavaboy.com。这里已经不再更新,给您带来的不便,深感抱歉!这篇文章的新地址:点击我上篇中,讲到了第一个功能中需要获取应用程序的信息,然后添加到桌面。这里,先记录下如何获取Android中的应用程序信息。一、调用系统快捷方式列表 Intent pickIntent = new Inten

2011-11-23 17:37:09 18690 12

python setuptools win64位 安装文件

python setuptools win64位 安装文件

2016-08-01

可以成功编译的Launcher源码

直接下载的launcher不能成功编译,这个是可以成功编译的

2011-12-06

android实例*快捷查询

用Android实现了 号码归属地查询 天气查询 快递查询 火车查询 IP地址查询 五大功能。很好的实例。程序结构清晰明了,优秀的实例。值得下载学习

2011-01-17

android问题集锦第二期

android问题集锦第二期android问题集锦第二期android问题集锦第二期android问题集锦第二期android问题集锦第二期android问题集锦第二期

2010-12-21

android问题集锦1

android问题集锦第一期android问题集锦第一期android问题集锦第一期

2010-12-21

SSH2终极源码(公司内部资料)

一个完整的SHH2框架项目。来自公司内部培训新员工。知识点完全,有很好的学习价值。 其中前台展示了Freemarker的用法和JQuery的运用。以及ajax和json技术的使用。

2010-11-17

八皇后(图形化界面,含设计文档)

二、 算法思想: 采用回溯法解决八皇后问题。从第一行开始,放第一个皇后,放好皇后以后,她所在的行,列和对角线上的每一个位置就是她的管辖范围,别的皇后没有权利干涉,否则死无藏身之地。 然后,第二个皇后,从第二行的第一列开始判断所在的位置是否是别的皇后的管辖范围,找到第一个还没有被占据的位置,则将其占为己有。暂时,该皇后停在该位置。然后,第三个到第八个皇后依次从第三行,第四行,… ,到第八行的第一列开始寻求自己的位置。假如到第i个皇后时,已经没有任何位置可选,则第i-1个皇后必须往后移动进行协调,同样,假如第i-1个皇后往后移动时没有找到空位置,则第i-2个皇后必须往后移动,进行协调,当找到空位置时,暂时停下,将下一个皇后重新从第一列开始寻找空位置。重复上述过程,直到所有皇后都停下来。则得到了第一个解。要想产生所有的解,则当产生第一个解以后,第八个皇后往后移动,找下一个可以利用的空位置,找不到,则第七个皇后必须往后移动,若找到空位置则停下,第八个皇后从第八行第一列重新试探,找到空位置。一直这样,直到第一个皇后将第一行遍历完。得到的解就是所有解。 三、 概要设计: ***************类型及相关变量定义***************** //位置信息类型 typedef struct { int row; int col; }PosType; //皇后类型 typedef struct Queen{ PosType pos; int number; //第几号皇后 }QueenType; //栈节点类型 typedef struct Note{ QueenType queen; struct Note *next; }NoteType; //棋盘,某一位置chessboard[i][j]上有皇后,则该位的值变为皇后序号。同样,该皇后的势 //力范围内的位置上的值全部变为该皇后的序号。 int chessboard[8][8]; //结果集,共92种解,每一种解中记录8个位置信息。 PosType ResultSet[92][8]; //定义一个栈,保存信息 Typedef struct{ NoteType head; Int size; }QueenStack; //定义一个栈,存放皇后信息 QueenStack qstack; *************相关操作**************** //初始化棋盘,开始时每个位置上都没有皇后,值全为0;并给8个皇后编号。 void initChessboard(); //回溯求八皇后问题的所有解,皇后协调算法 void queenCoordinate(); //输出所有解 void printResult();

2010-03-26

类c语言词法分析器3.0

类C语言词法分析器设计 一、问题描述 词法分析器是编译工作的第一个阶段,主要完成对源程序的扫描,从而将源程序转换成单词序列,作为第二阶段语法分析的输入。 二、需求分析 1、 预处理:过滤掉跳格符、回车符、换行符等编辑性字符。将多个连续的空格合并成一个空格。过滤注释。 2、 单词符号的识别,将每个单词符号进行不同类别的划分。单词符号可划分成5种。 (1) 关键字:如if、else、while、int、float等。 (2) 标识符:用户自己定义的名字,常量名、变量名和过程名。 (3) 常数:各种类型的常数 (4) 运算符:如+、-、*、<、>、>=等。 (5) 届符:如逗号、分号、括号等。 3、 最后将所有的单词符号转化为便于计算机处理的机内码形式 4、 用户界面使用图形化界面 三、概要设计 1、 字符集说明:本词法分析演示的是C语言的一个子集,字符集如下: (1) 关键字:int,long,float,double,char,short,void,if,else,for,while,do,break,switch, continue,case,default,return,static,struct (2) 运算符:+,-,*,/,%,>,<,=,!=,==,<=,>=,++,--,!,&,&&,||,[] (3) 界符:,,;,{,},(,),:,’,”,# (4) 标识符:以字母开头的字母数字串。 (5) 常数:整型或浮点型。 2、 字符集的内编码形式: ..................................... .....................................

2010-03-19

通讯录(有设计详细说明)

本通讯录是一款具有基本通讯信息管理功能的系统。包括基本添加,修改,删除,查询和输出等功能。其中联系组是为了更好地管理联系人信息,如常用的组有亲戚,家人,朋友,同学等。 1、 组信息管理模块: ◎ 添加新组信息:当用户添加一个新组时,这个新组将被添加到group.dat文件的末尾,如果添加的组已存在则返回出错信息。 ◎ 修改已有组信息:用户首先输入所要修改的联系组,然后系统查询该联系组存不存在。若存在,则要求用户输入新的信息,并进行替换;若不存在,则返回错误信息。 ◎ 删除已有组:用户首先输入所要删除的组,然后系统查询该组存不存在。如果存在,则先删除该组下的所有联系人的信息,再删除该组;如果所要删除的信息不存在,则返回错误信息。 ◎ 删除所有已有组信息:该操作没有输入值。如果原来group.dat文件中没有联系组,返回错误信息;否则,删除所有联系组,同时删除各个组下的联系人信息。 ◎ 组查询功能:按用户输入的查询条件,在group.dat文件中查询相关信息。若存在 符合条件的组,则输出相应的组信息;若不存在,则返回出错信息。 ◎ 输出所有组信息:将group.dat中所有组全部输出来。 2、 联系人信息管理模块: ◎ 添加联系人:当用户添加一个新联系人时,这个联系人的信息将被添加到group.dat文件的末尾,若添加的联系人已存在,则返回出错信息。添加一个联系人时,他所属的组成员个数同时增加1。 ◎ 修改联系人:用户首先输入所要修改的联系人,然后系统查询该联系人存不存在。若存在,则要求用户输入新的信息,并进行替换;若不存在,则返回错误信息。 ◎ 删除联系人:用户首先输入所要删除的联系人,然后系统查询该联系人存不存在。如果存在,则删除,并返回相关信息;如果所要删除的信息不存在,则返回错误信息。删除一个联系人时,他所属的组成员个数同时减少1。 ◎ 删除所有联系人:该操作没有输入值。如果原来linkman.dat文件中没有联系联系人,返回错误信息;否则,删除所有联系人信息。 ◎ 联系人查询功能: 按用户输入的查询条件,在linkman.dat文件中查询相关信息。若存在符合条件的联系人,则输出相应的联系人信息;若不存在,则返回出错信息。 而且提供不同种类的查询,如:按联系人姓名来查询,按联系人电话来查询,按联系人所在的组来查询。 ◎ 输出所有联系人信息:将所有联系人信息输出。

2009-10-23

快速ejb3.0实例教程(很好很有参考价值)

很好的教程,提供以下,共同分享。共同掌握ejb

2009-07-31

非常好的软件工程课件

推荐一下:非常好用的软件工程课件!我已用过!

2009-04-25

bu ke duo de de vb

不错的VBppt,但只可惜只有第一章!真是抱歉!其他丢了!!

2008-09-09

空空如也

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

TA关注的人

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