首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

Android 开发源码分享

、最新活动 1. 2012年移动互联网从业者薪资有奖调查 http://www.apkbus.com/dc2012/ 2.安卓巴士站期待你的加入http://www.apkbus.com/group.php 3.安卓巴士诚招版主http://www.apkbus.com/android-48399-1-1.html二、亲测源码分享 1.斗地主源码分享http://www.apkbus.com/android-88862-1-1.html 2.是男人就下100层英文原版http://www.apkbus.com/android-88877-1-1.html 3.策略型大型战争游戏http://www.apkbus.com/android-88881-1-1.html 4.卡拉OK,歌词同步程序http://www.apkbus.com/android-90914-1-1.html 5.图形解锁源码http://www.apkbus.com/android-90919-1-1.html 6.公司通讯录(含来电号码姓名查询和搜索功能)http://www.apkbus.com/android-90928-1-1.html 7.万年历源码http://www.apkbus.com/android-90933-1-1.html 8.奇艺高清UI界面源码http://www.apkbus.com/android-88507-1-1.html 9.无损捕鱼达人源码http://www.apkbus.com/android-88511-1-1.html 10.简易音乐播放器源码http://www.apkbus.com/android-88512-1-1.html 11.网易Android客户端源码分享http://www.apkbus.com/android-85573-1-1.html 12.事务提醒工具源码http://www.apkbus.com/android-85705-1-1.html 13.Android北京公交线路查询http://www.apkbus.com/android-85918-1-1.html 14.控件抖动效果源码http://www.apkbus.com/android-86176-1-1.html 15.触摸屏幕产生小气泡的效果应用源码http://www.apkbus.com/android-86177-1-1.html 16.模仿微信导航开门效果http://www.apkbus.com/android-86191-1-1.html 17.Android指南针源码http://www.apkbus.com/android-86194-1-1.html 18.Mp3标签提取器源码http://www.apkbus.com/android-86210-1-1.html 19.改版的pdf阅读器http://www.apkbus.com/android-86223-1-1.html 20.[界面超赞]的水果连连看源码http://www.apkbus.com/android-86498-1-1.html 本文转自qianqianlianmeng博客园博客,原文链接:http://www.cnblogs.com/aimeng/archive/2013/01/06/2848166.html ,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android游戏开发 - NancyGLines设计

今天把之前用Python实现的NancyGLines游戏迁移到了Android中,虽然现在还只是算个毛坯版,界面比较丑陋,功能也不够完善,但是整个框架已经建立好,并且,游戏的基本功能已经实现了。见下图: 游戏规则: 1. 触摸某个球,然后选择一个需要移动到的没有球的地方。 2. 球移动过去后,如果满足横,竖,斜同颜色的球大于等于5个,则消去这些同颜色的球得分。 3. 如果没有消去,则会落下三个新的球。 4. 直到棋盘没有位置容下新的球,游戏结束。 下面是layout: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <? xmlversion="1.0"encoding="utf-8" ?> < FrameLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < com.coderzh.nancyglines.GLinesView android:id ="@+id/glines" android:layout_width ="fill_parent" android:layout_height ="fill_parent" /> < RelativeLayout android:layout_width ="fill_parent" android:layout_height ="fill_parent" > < TextView android:id ="@+id/text" android:text ="@string/app_name" android:visibility ="visible" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:layout_centerInParent ="true" android:gravity ="center_horizontal" android:textColor ="#88ffffff" android:textSize ="24sp" /> </ RelativeLayout > </ FrameLayout > 嗯,我使用了自定义的View - GLinesView,在GLinesView的原型是这样的: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> public class GLinesView extends SurfaceView implements SurfaceHolder.Callback{ } 在这里继承了SurfaceView ,因为SurfaceView 在游戏制作上有一些优势。接着,我参考了Sample里的LunarLander代码,在建立了一个SurfaceView内部线程类,用来处理游戏的逻辑和绘制游戏画面。 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> public class GLinesView extends SurfaceView implements SurfaceHolder.Callback{ class GLinesThread extends Thread{ public void initGame(){ } public void setRunning( boolean running){ mRun = running; } @Override public void run(){ updateCanvas(); } } public GLinesView(Contextcontext,AttributeSetattrs){ super (context,attrs); SurfaceHolderholder = getHolder(); holder.addCallback( this ); thread = new GLinesThread(holder,context, new Handler(){ @Override public void handleMessage(Messagem){ mStatusText.setVisibility(m.getData().getInt( " viz " )); mStatusText.setText(m.getData().getString( " text " )); } }); } @Override public void surfaceCreated(SurfaceHolderholder){ thread.initGame(); thread.setRunning( true ); thread.start(); } } 当surfaceCreated事件发生时,触发游戏开始,initGame()做一些游戏的初始设置,setRunning设置游戏的当前状态,start将线程运行起来。 因为我不需要实时的刷新画面,所以,我没有在线程的run方法中使用一个while循环,而只是调用了一个刷新画面的方法updateCanvas(); 当用户触摸屏幕时,触发GLinesView 的onTouchEvent方法,因此,添加代码: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> @Override public boolean onTouchEvent(MotionEventevent){ float x = event.getX(); float y = event.getY(); thread.doTouch(x,y); return super .onTouchEvent(event); } 然后,实现GLinesThread的doTouch方法: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> public void doTouch( float posX, float posY){ // 激活或移动某个球 } 我会使用一个二维数组来保存棋盘上每个格子的状态: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> private int mStatus[][]; 比如,mStatus[0][1] = Color.BLUE ,表示,第一行第二列的格子放置了一个蓝色的球。 当我需要移动某个球时,首先需要实现最短路径算法,因为如果有其他球的阻碍,是不能移动的。因此,我使用了一个类似的Dijkstra 最短路径算法,实现了球的移动函数: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> private void moveBall( int currentX, int currentY, int targetX, int targetY){ } 然后,球移动过去后,还需要实现判断是否满足横竖斜大于等于5个的情况,如果满足,则消除那些球。因此,添加clearBalls方法: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> private boolean clearBalls(Ballball){ } 在没有满足得分条件时,需要落下新的三个球,因此,实现getThreeBalls方法: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> private void getThreeBalls(){ } 其实到这里,整个框架已经搭建起来了。整个的原理在与通过一些操作修改棋盘状态的mStatus数据结构,操作完成后,调用updateCanvas()刷新屏幕。 实现好上面的方法后,游戏已经可以运行起来了。就是上面截图中看到的效果了。之后我还需要做一些界面美化,加入菜单,关卡的操作。 最后附上: 完整代码:/Files/coderzh/Code/NancyGLines.rar 体验apk文件:/Files/coderzh/Code/NancyGLines.apk.rar 希望大家提宝贵意见,同时,我也会继续完善这个游戏。

优秀的个人博客,低调大师

nginx开发(一) 源码-编译

1:获取源码 http://nginx.org/download/nginx-1.8.0.tar.gz 2:编译 解压之后,进入根目录,执行 ./configuer.sh make make install 3:nginx执行 编译完之后,可以进入 /usr/local/nginx,进入sbin目录。 执行 ./nginx -v,就会看到 nginx version: nginx/1.8.0 。 补充:如果提示需要安装pcre,可参考如下方法: 从官网下载链接:http://www.pcre.org/ ./configure --prefix=/usr/local --enable-utf8makesudo make install 提示缺少open ssl: http://www.openssl.org/source/ ./configure ----prefix=/usr/local make sudo make install MAC编译补充: 今天在mac os 上编译安装Nginx时候,报错:ld: symbol(s) not found for architecture x86_64, 经过一番折腾之后发现,由于Nginx依赖openssl库,查看openssl的./config 文件发现,这个问题应该是 openssl/config脚本猜对你的系统是64位,但是 会根据$KERNEL_BITS来判断是否开启x86_64编译,默认不开启,他会给你5秒时间确认是否停止编译,手动设置x86_64编译,所以默认你生成的openssl库文件是32位的,最后静态链接到nginx会出错。目前看来没有很好的方法把x86_64的参数传到openssl配置文件中 (openssl/config 猜测os架构,设置编译的参数是32位还是64位,默认是32位,然后调用openssl/Configure生成Makefile), 解决办法就是: 先运行nginx源码目录下运行$ ./configure 然后在objs里,打开Makefile, 找到:./config --prefix=xxx.openssl no-shared (注释:XXX是已存在的openssl源码路径) 把该段的./config 改成 ./Configure darwin64-x86_64-cc 其他后面参数不变,保存 然后再make就编译通过了

优秀的个人博客,低调大师

iOS开发之MQTT探究

1、 什么是MQTT? MQTT(MessageQueueing Telemetry Transport Protocol)的全称是消息队列遥感传输协议的缩写,是由IBM公司推出的一种基于轻量级代理的发布/订阅模式的消息传输协议,运行在TCP协议栈之上,为其提供有序、可靠、双向连接的网络连接保证。由于其开放、简单和易于实现所以能够应用在资源受限的环境中,对于M2M和物联网应用程序来说是一个相当不错的选择。 2、 为什么要用MQTT? MQTT协议是针对如下情况设计的: M2M(Machine to Machine) communication,机器端到端通信,比如传感器之间的数据通讯 因为是Machine to Machine,需要考虑: Machine,或者叫设备,比如温度传感器,硬件能力很弱,协议要考虑尽量小的资源消耗,比如计算能力和存储等 M2M可能是无线连接,网络不稳定,带宽也比较小 MQTT的特点: 1.发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。这一点很类似于1. 这里是列表文本XMPP,但是MQTT的信息冗余远小于XMPP. 2.对负载内容屏蔽的消息传输。 3.使用TCP/IP提供网络连接。主流的MQTT是基于TCP连接进行数据推送的,但是同样有基于UDP的版本,叫做MQTT-SN。这两种版本由于基于不同的连接方式,优缺点自然也就各有不同了。 4.三种消息传输方式QoS: 0代表“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。 1代表“至少一次”,确保消息到达,但消息重复可能会发生。 2代表“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。 备注:由于服务端采用Mosca实现,Mosca目前只支持到QoS 1 如果发送的是临时的消息,例如给某topic所有在线的设备发送一条消息,丢失的话也无所谓,0就可以了(客户端登录的时候要指明支持的QoS级别,同时发送消息的时候也要指明这条消息支持的QoS级别),如果需要客户端保证能接收消息,需要指定QoS为1,如果同时需要加入客户端不在线也要能接收到消息,那么客户端登录的时候要指定session的有效性,接收离线消息需要指定服务端要保留客户端的session状态。 mqtt基于订阅者模型架构,客户端如果互相通信,必须在同一订阅主题下,即都订阅了同一个topic,客户端之间是没办法直接通讯的。订阅模型显而易见的好处是群发消息的话只需要发布到topic,所有订阅了这个topic的客户端就可以接收到消息了。 发送消息必须发送到某个topic,重点说明的是不管客户端是否订阅了该topic都可以向topic发送了消息,还有如果客户端订阅了该主题,那么自己发送的消息也会接收到。 5.小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。这就是为什么在介绍里说它非常适合“在物联网领域,传感器与服务器的通信,信息的收集”,要知道嵌入式设备的运算能力和带宽都相对薄弱,使用这种协议来传递消息再适合不过了。 6.使用Last Will和Testament特性通知有关各方客户端异常中断的机制。Last Will:即遗言机制,用于通知同一主题下的其他设备发送遗言的设备已经断开了连接。Testament:遗嘱机制,功能类似于Last Will 。 3、 怎么使用MQTT 在mac上搭建MQTT服务器 $brewinstallmosquitto 等待下载完成,服务会自动运行起来 mosquittohasbeeninstalledwithadefaultconfigurationfile. Youcanmakechangestotheconfigurationbyediting: /usr/local/etc/mosquitto/mosquitto.conf Tohavelaunchdstartmosquittonowandrestartatlogin: brewservicesstartmosquitto Or,ifyoudon'twant/needabackgroundserviceyoucanjustrun: mosquitto-c/usr/local/etc/mosquitto/mosquitto.conf iOS client注册 #import"ViewController.h" #definekMQTTServerHost@"iot.eclipse.org" #definekTopic@"MQTTExample/Message" @interfaceViewController() @property(weak,nonatomic)IBOutletUILabel*showMessage; @property(nonatomic,strong)MQTTClient*client; @end @implementationViewController -(void)viewDidLoad { [superviewDidLoad]; //1.在app登录后,后台返回name+password+topic //2.name+password用于连接主机 //3.topic用于订阅主题 UILabel*tempShowMessage=self.showMessage; NSString*clientID=[UIDevicecurrentDevice].identifierForVendor.UUIDString; self.client=[[MQTTClientalloc]initWithClientId:clientID]; //连接服务器连接后,会通过block将连接结果code返回,然后执行此段代码块 //这个接口是修改过后的接口,修改后抛出了name+password [self.clientconnectToHost:kMQTTServerHostandName:@"cbt"andPassword:@"1223"completionHandler:^(MQTTConnectionReturnCodecode){ if(code==ConnectionAccepted)//连接成功 { //订阅 [self.clientsubscribe:kTopicwithCompletionHandler:^(NSArray*grantedQos){ //Theclientiseffectivelysubscribedtothetopicwhenthiscompletionhandleriscalled NSLog(@"subscribedtotopic%@",kTopic); NSLog(@"return:%@",grantedQos); }]; } }]; //MQTTMessage里面的数据接收到的是二进制,这里框架将其封装成了字符串 [self.clientsetMessageHandler:^(MQTTMessage*message) { dispatch_async(dispatch_get_main_queue(),^{ //接收到消息,更新界面时需要切换回主线程 tempShowMessage.text=message.payloadString; }); }]; } -(void)dealloc8 { //disconnecttheMQTTclient [self.clientdisconnectWithCompletionHandler:^(NSUIntegercode) { //Theclientisdisconnectedwhenthiscompletionhandleriscalled NSLog(@"MQTTisdisconnected"); }]; } @end server向client推送消息 #import"ViewController.h" #import"MQTTKit.h" #definekMQTTServerHost@"iot.eclipse.org" #definekTopic@"MQTTExample/Message" @interfaceViewController() @property(weak,nonatomic)IBOutletUITextField*pushMessage; @property(nonatomic,strong)MQTTClient*client; @end @implementationViewController -(void)viewDidLoad{ [superviewDidLoad]; NSString*clientID=[UIDevicecurrentDevice].identifierForVendor.UUIDString; self.client=[[MQTTClientalloc]initWithClientId:clientID]; [self.clientconnectToHost:kMQTTServerHostandName:@"cbt"andPassword:@"1223"completionHandler:^(MQTTConnectionReturnCodecode){ if(code==ConnectionAccepted) { NSLog(@"服务器启动成功"); } }]; } -(IBAction)push:(id)sender{ NSString*payload=self.pushMessage.text; [self.clientpublishString:payload toTopic:kTopic withQos:AtMostOnce retain:YES completionHandler:nil]; NSLog(@"推送内容:%@",payload); } 作者:Frida芥末 来源:51CTO

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册