位运算在排序算法中的运用

常规选择排序

function selectSort(arr: Number[]) {
    //先排除一些不需要排序的情况
    if (!arr || arr.length < 2) {
        return arr
    }
    let a =arr
    //外层循环控制循环n-1次
    for (let i = 0; i < a.length-1; i++) {
        let index = i
        //内层循环获取该轮循环中最小值的下标
        for (let j = i + 1; j < a.length; j++) {
            if (a[j] < a[index]) {
                index = j
            }

        }
        if(i!==index){
            let temp = a[i]
            a[i]=a[index]
            a[index]=temp
        }
    }


    return a



}

使用位运算的选择排序

function selectSortUseByte(arr) {
    if (!arr || arr.length < 2) {
        return arr
    }

    for (let i = 0; i < arr.length - 1; i++) {
        for (let j = i; j < arr.length; j++) {
            if (arr[j] < arr[i]) {
                swap(arr, i, j)
            }
        }
    }
    //交换值时使用位运算
    function swap(arr, a, b) {
        arr[a] = arr[a] ^ arr[b]
        arr[b] = arr[a] ^ arr[b]
        arr[a] = arr[a] ^ arr[b]
    }
    return arr
}

异或是如何实现值交换的

异或的性质

  • 满足交换律和结合律

ab=ba

abc=a(bc)

a^a=0

0^a=a

function swap(arr, a, b) {
        arr[a] = arr[a] ^ arr[b]
        //此时arr[a]=arr[a]^arr[b],执行下面的运算后,arr[b]=arr[a]^arr[b]^arr[b]=arr[a]^0=arr[a]
        arr[b] = arr[a] ^ arr[b]
        //执行下面的运算,arr[a]=(arr[a]^arr[b])^arr[a]=arr[b]
        arr[a] = arr[a] ^ arr[b]
        //这样就巧妙地将两个值进行了交换,且没有开辟新的存储空间
    }

拓展

找出唯一的出现奇数次的数

现有N个数,除了唯一的一个数出现的次数是奇数,其他的均是出现了偶数次的数,现在请编程找出这个出现奇数次的数

/**
* 
* @param arr 要处理的数组
* @returns 返回出现奇数次的数
*/

function getOddNubmer(arr){
   let r=0
   //挨个遍历数组里面的数进行异或操作,出现偶数次的数最终会被异或成0,最后剩下的就是出现偶数次的数
   for(let k of arr){
       r^=k
   }
   return r
}

找出数组中出现奇数次的两个数

N个数,其中除了两个数出现奇数次,其他数都出现了奇数次,现在找出这两个数

function getOddNumberTwo(arr) {
    let r = 0
    //假设这两个数是a和b,此处获取a^b
    for (let k of arr) {
        r ^= k
    }
    //获取a和b中为1的最低位
    let rightone = r & (~r + 1)
    let first = 0
    for (let k of arr) {
        //筛选出满足rightone的数据,其中将只包含a和b其中一个,进行异或操作后就可得到其中一个数
        if ((k & rightone) == 0) {
            first ^= k
        }
    }
    //将a和b异或的和再与第一个数进行异或运算,就得到了第二个数
    let second = r^first

    return [first,second]
}
本文转载于网络 如有侵权请联系删除

相关文章

  • MySQL执行sql语句的机制

    目录1概念2执行过程1概念连接器:身份认证和权限相关(登录MySQL的时候)。查询缓存:执行查询语句的时候,会先查询缓存(MySQL8.0版本后移除,因为这个功能不太实用)。分析器:没有命中缓存的话,SQL语句就会经过分析器,分析器说白了就是要先看你的SQL语句要干嘛,再检查你的SQL语句语法是否正确。第一步,词法分析,一条SQL语句有多个字符串组成,首先要提取关键字,比如select,提出查询的表,提出字段名,提出查询条件等等。做完这些操作后,就会进入第二步。 第二步,语法分析,主要就是判断你输入的sql是否正确,是否符合MySQL的语法。优化器:按照MySQL认为最优的方案去执行。执行器:执行语句,然后从存储引擎返回数据。首先执行前会校验该用户有没有权限,如果没有权限,就会返回错误信息,如果有权限,就会去调用引擎的接口,返回接口执行的结果。Server层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块binglog日志模块。存储引擎:主要负责数据的存储和读取,采用可以替换的插件式架构

  • 如何利用 Github 搭建自己的免费图床?

    村雨遥1.前言2.准备工作3.搭建过程4.上传图片5.加速访问6.图床推荐7.总结1.前言对于写博客的朋友们来讲,图床这个东西一定不会陌生,而且在一定程度上也给大家造成过一定困扰。对于不清楚这个东西的朋友,我就在这儿大概说一下图床是个啥东西。所谓图床,其实可以就相当于我们手机上的相册,不过他是在线的,而且是对大家开放的,大家都可以访问查看,但是编辑删除这些功能仅限于拥有者,就相当于用百度云分享的公开照片,你可以查看,也可以下载下来编辑,但是拥有权还是属于分享者。那你可能会疑惑,那这个东西和写博客的我们有啥关系呢?你想想,我们写博客,是不是有很多图片需要插入,我们这些博客要保留在本地的时候你可以预览到图片,但一旦你要把它发布到网上,这时候问题来了!发现图片上传失败,那是因为你本地的图片都是存在本地的,平台不会自动给你上传,那这个时候就凸显出图床的重要性了。当然了,如果你是直接在平台进行编辑,那着一点就不用担心了,基本平台都会自动给你上传到它自己的服务器。有了图床,我们在本地写好博客之后,就能够任意复制到其他平台,不用担心图片丢失问题了。今天的文章就是给大家分享一个搭建免费图床的教程,既是

  • LeetCode 919. 完全二叉树插入器(层序遍历&队列)

    1.题目完全二叉树是每一层(除最后一层外)都是完全填充(即,结点数达到最大)的,并且所有的结点都尽可能地集中在左侧。设计一个用完全二叉树初始化的数据结构CBTInserter,它支持以下几种操作:CBTInserter(TreeNoderoot)使用头结点为root的给定树初始化该数据结构;CBTInserter.insert(intv)将TreeNode插入到存在值为node.val=v的树中以使其保持完全二叉树的状态,并返回插入的TreeNode的父结点的值;CBTInserter.get_root()将返回树的头结点。示例1: 输入:inputs=["CBTInserter","insert","get_root"], inputs=[[[1]],[2],[]] 输出:[null,1,[1,2]] 示例2: 输入:inputs=["CBTInserter","insert","insert","get_root"], inputs=[[[1

  • 常用的排序算法

    常用的排序算法拿li=[1,3,45,6,78,9,4]来举例一.冒泡排序空间复杂度O(n的2次方)原理:例如你把一组数据从头开始依次遍历过去把最大的或者最小的放在末尾,除了最后一个每个依次进行遍历defbubble_sort(li): foriinrange(len(li)-1): flag=True forjinrange(len(li)-1-i): ifli[j]>li[j+1]: li[j],li[j+1]=li[j+1],li[j] flag=False ifflag: return bubble_sort(li)复制二.选择排序空间复杂度O(n的2次方)速度比冒泡快一点原理:例如你把一篮子苹果让你从大到小进行排序,你就算先拿出一个,再拿出第二个和第一个比按大小摆放左还是右,再拿第三个和之前已经拍好顺序的队列进行对比放置合适位置,依次进行defselect_sort(li): foriinrange(len(li)): minLoc=i forjinrange(i+1,len(li)): ifli[minLoc]>li[j]: li[minLoc],li[j]=l

  • 【OCP最新题库解析(052)--题29】 For which requirement should you config

    Q题目Forwhichrequirementshouldyouconfiguresharedservers?A.accommodatinganincreasingnumberofuserswhorunshort-duration,infrequentqueriesinanOLTPenvironmentwithlimitedmemory.B.usingRecoveryManager(RMAN)torecoveradatabase.C.submittingbackupjobsatregular,24-hourintervalsinanOLTPenvironmentwithlimitedmemory.D.accommodatinganincreasingnumberofuserswhorunanalyticalqueriesinaDSSenvironmentwithlimitedmemory.E.performingbulk-loadoperationsinaDSSenvironmentwithlimitedmemory.A答案 Answer:A使用连接共享功能,数据库服务器可以使空闲会话超

  • SignalR第一节-在5分钟内完成通信连接和消息发送

    前言首先声明,这又是一个小白从入门到进阶系列。SignalR这个项目我关注了很长时间,中间好像还看到过微软即将放弃该项目的消息,然后我也就没有持续关注了,目前的我项目中使用的是自己搭建的WebSocket,连接管理和消息推送都是统一维护;前段时间编写了Asp.NETCore轻松学系列,现在腾出了一点时间,抱着学习的心态,想把自己学习SignalR的过程写出来,就当笔记吧,再做笔记的过程中再加入实际的项目需求,一步一步的深入学习SignalR,正所谓技多不压身吧。有想要一起学习的同学,可以关注我,大家一起学习,一起进步。SignalR简单介绍根据官方文档介绍,SignalR是一个面向开发人员的库,其本质是对Web实时连接(WebSocket)的抽象和封装,使用SIgnalR,可以避免自己编写和管理Web实时连接,并获得更多客户端的兼容性,截止本文发文为止,SignalRnpm包的版本是@aspnet/signalr-1.1.2,在Asp.NETCore中,SignalR不支持自动重连,如果客户端连接断开,必须显示重连。话不多说,下面就开始干吧。1.项目搭建1.1搭建Asp.NETCore

  • 小朋友学C++(45):指针与数组的关系

    数组名称实际上相当于一个指针,指向数组第一个元素所在的地址。例1用指针方式输入输出数组元素#include<iostream> usingnamespacestd; intmain() { intn; cin>>n; inta[n]; for(inti=0;i<n;i++) { //挨个赋值 //p+i表示指针的位置挪动了i*sizeof(int)个内存地址,即指向了第i个元素 cin>>*(a+i); } for(inti=0;i<n;i++) { cout<<*(a+i)<<endl; } return0; }复制运行结果:3 102030 10 20 30复制分析:在这个例子里,a既是数组名称,也代表指向第一个元素的指针。a+0=a表示第一个元素a[0]的地址,a+1表示第二个元素a[1]所在的地址。a+2表示第三个元素a[2]的地址。(a+0)=a[0],(a+1)=a[1],*(a+2)=a[2]。注意,这里a+1不是表示a的地址直接加1,而是表示下一个元素的地址,即a指向的地址+1*sizeof(

  • 华为的区块链构想

    1987年,43岁的任正非在深圳宝安县(现在的宝安区)开始创业。当时的他,未必能想到日后华为会成为一家世界500强公司,2017年华为在营业收入、净利润两方面,位居中国第一。华为以其稳健的经营风格,前瞻性的市场眼光,坚实的技术基础,已成长为科技领域的巨无霸,是中国优秀企业的卓越代表。 在人人都在谈论区块链的2018年,华为自然不会落后。于4月发布了《华为区块链白皮书》,详细表述了区块链技术的发展状况以及华为在区块链领域的构想。华为认为:从区块链产业发展上看,中美欧会成为区块链应用的重要区域,区块链不会昙花一现,我们可以依靠区块链在技术竞争中占据先机。区块链并不是一项新的技术体系,主要基础在加密和共识机制,改变了之前中心化+记账的数据存储方式,转变为分布式+共识,在诸如:金融、物流、版权、身份认证等诸多领域,对提高效率,节省成本有着广阔的应用前景。区块链技术发展,大概经历了三个阶段。第一阶段:2009年——2014年,比特币发明,区块链技术起源;第二阶段,2014年—2017年,以太坊,超级账本等区块链开源项目发布,引用智能合约,出现公有链和联盟链。2017年——?,区块链商业应用项目爆

  • MWC 2016 - Galaxy S7/S7 edge惊艳登场!

    2月21日,MWC2016于西班牙巴塞罗那正式开始,在此次大会上,三星正式发布了旗舰手机GalaxyS7/S7edge,现在我们来一睹它的真容,看与传闻中的有什么不同。具体的配置信息为:S7为5.1寸、2K分辨率的屏幕、S7edge则是5.5寸、2K的分辨率;搭载骁龙820/Exynos8890;4GBLPDDR4内存;1200万像素(4:3)的摄像头、光学防抖、f/1.7、CMOS1/2.5、单个像素尺寸为1.4μm,前置500万像素;32GB或是64G(UFS2.0)的存储,可支持microSD卡扩展;S7为3000mAh、S7Edge则是3600mAh;采用Android6.0TouchWiz的操作系统;IP68防水;实际尺寸是S7:142.4x69.6x7.9mm、152g,S7edge:150.9x72.6x7.7mm。目前已经正式公布将于3月11日开始发售。此次的GalaxyS7/S7edge在摄像头上处理得更好,没有之前产品摄像头的突兀感,材质上依旧采用的是前后双玻璃以及金属中框,在2.5D玻璃弧度上做得更大,手机显得更加的圆润。同时相比较S6edge平的后背设计,S7e

  • 2017年ERP将死还是凤凰涅磐?

    有很多专家说2017年是云计算和IoT元年,而ERP也会随着这个元年的到来而迎来真正变革,在过去的20里ERP发生了很大的变化,关于ERP的争论有唱衰者也有复苏者,市场研究机构Gartner更是在2014年就预测2016年,这些传统的ERP系统将成为“遗留”软件,而2017年将会是ERP发展的关键之年,纵观这些预言哪些又会成为现实呢?传统的用户交互界面和电子表格将会成为过去时ERP被吐槽最多的是就是完全不重视用户体验,在特定的环节和功能上甚至有一些反人类的习惯设计,甚至有人认为要是用户体验好,要ERP咨询顾问干啥,自己捣鼓捣鼓就能够搞懂了,并且UX非购入EPR系统时的主要参考指标。当苹果将体验为王发挥到极致的时候,我们也在思考我们ERP真的老了,2017年也是该与老旧遗留系统、传统用户交互界面或Excel电子表格说再见的一年。”“技术已经发展的这么快,对于企业而言,过时的系统已严重影响我们的业务的的革新和发展。ERP分级界限将会打破提起ERP我们更多的是会想到梯队品牌厂商,第一梯中国的用友、金蝶,国外的SAP、Oralce、微软,他们长期占据头部并且占领了绝大多数市场份额,常言道第一梯

  • Java 单例以及单例所引发的思考

    1前言前几天无意中看到一篇文章,讲到了老生常谈的单例,抱着复习一下的心态点了进去,还是那些熟悉的内容,可是却发现自己思考的角度变了,以前更多的是去记忆,只停留在表面,而现在更多的是去思考为什么会这么做。所以今天我也来总结一下Java中常见的单例,并记录下自己的思考。2正文Java中常见的几类单例:饿汉式单例双重检查锁单例静态内部类单例枚举单例我们来逐个分解:3饿汉式单例publicclassSingleton{privateSingleton(){}privatestaticfinalSingletoninstance=newSingleton();publicstaticSingletongetInstance(){returninstance;} }复制饿汉式单例中instance的初始化是在类加载时进行的,而类的加载是由ClassLoader来完成,这个过程由JVM来保证同步,所以这种方式天生是线程安全的。它的缺点也显而易见:容易造成资源的浪费,并且如果构造方法中处理过多,还有可能引发性能问题。4双重检查锁单例publicclassSingleton{privatestaticv

  • 腾讯云云直播简介

    欢迎使用云直播CSSAPI3.0版本。全新的API接口文档更加规范和全面,统一的参数风格和公共错误码,统一的SDK/CLI版本与API文档严格一致,给您带来简单快捷的使用体验。支持全地域就近接入让您更快连接腾讯云产品。更多腾讯云API3.0使用介绍请查看:快速入门 云直播(CloudStreamingServices)依托腾讯强大的技术平台,将腾讯视频等核心业务底层能力开放给用户,为用户提供专业稳定快速的直播接入和分发服务,全面满足超低延迟和超大并发访问量的苛刻要求。 请您在使用云直播API前,确保已充分理解云直播功能并完全同意云直播计费规则。 注意: 本章节云直播API接口均为最新API3.0接口,后续CSS相关新增功能都会在此章节更新。我们强烈推荐您使用最新API3.0接口。 现有旧版API接口功能依然保持,未来可能停止维护,如您仍需使用旧版接口可参考:云直播API(旧)简介。

  • 【老文放出】【思考】基于目前OO课程的一些制度问题引发的思考

    本文写于2018-06-0811:19,之前为仅在内部传阅的思考文,于近期(2020-12-12)得以放出 在博文中,笔者已经讲述了目前遇到的一些比较明显的问题,也进行了一些初步的思考。 然而,通过进一步的思考,笔者觉得,很多的问题,看似无关,实则背后有着很相似的逻辑共性。 笔者将在这篇文章内对这些问题进行制度思维方式层面上的讨论。(不仅局限于OO2019的课程改革,更可以作为日后全部课程改革的一些理论依据) 明确课程定位与方向 这门课程,全称叫做“面向对象设计与构造”。 看似简单的标题,然而,要说定位的话,可能性实际上非常多: 让大家掌握面向对象的Java语言(包括多线程)程序编写? 让大家熟练运用并理解面向对象设计构造思想? 让大家体验工程开发,领悟工程思维? 让大家全面养成工程素养,形成产品意识? 然而,根据笔者和老师们、和学长学姐们(包括往届的各个助教们)的交流,却发现,大家对这门课程的定位差距相当大: 大多数同学,认为应该第一种定位(甚至更低,面向分数编程的人也不在少数) 其中一位14级助教认为,满足第一种定位就差不多了,能第二种更好,不过也没关系(因为觉得代码规范工程

  • WebService的使用

    1.WebService提供了一种web远程的api调用方式,是调用其他系统接口的一种标准,用于web上系统和系统之间的交互,数据访问。 2.WebService是通过SOAP(简单对象访问协议)协议来进行发送和接收结构化的数据。 3.WebService的数据格式是xml,SOAP协议其实就是在HTTP协议的基础上来传送xml格式的数据。其实质就是在HTTP协议的基础上让其能够传输xml数据。 4.WebService接口的使用说明是通过WSDL来定义的(wsdl跟java一样,也是一种语言,是通过xml的形式说明该webservice如何调用),在WSDL文档中描述了该接口名称,接口中的方法,参数等。这个WSDL就相当于是WebService程序的API,只要提供了这个,就知道怎么调用别人提供的WebService接口了。利用工具,通过WSDL文档就可以自动生成客户端调用代码,java中使用JDK中提供的wsimport命令。 5.如果我们的程序需要对外提供服务,我们可以把自己的系统服务以webservice服务的形式暴露出来,这样调用者就可以进行调用了。   为什么要将

  • MySQL second_behind_master计算方式

    对于主从库主机时间不一致的情况,在I/O线程第一次启动时,会计算主从之间的主机时间差,在后续计算复制延迟时,会把这个时间差减掉,这样就可以保证正确获取到复制延迟时间,但是该时间差只在I/O线程启动时才会进行计算,所以,当I/O线程启动之后修改了主从库的主机时间,则根据计算公式,会导致复制延迟时间不可靠,但是当I/O线程重启之后就可以恢复(因为I/O线程重启时,主从之间的时间差重新计算了) 在计算复制延迟时(执行SHOWSLAVESTATUS语句时会进行计算),对Seconds_Behind_Master计算结果做一些判定(上文源码介绍部分的伪代码注释里有讲解过,这里再啰嗦一下): *如果I/O和SQL线程同时为Yes,且SQL线程没有做任何事情(没有需要被执行的event),此时直接判定复制延迟结果为0,不会走公式计算延迟时间,否则会走公式计算延迟时间(所以,在该前置条件下不会出现当主库没有写任何binlogevent时,从库延迟不断加大的情况) *如果SQL线程为Yes,且还存在着I/O线程已经读取的relaylog未应用完成的,则会走公式计算延迟时间,而不管I/O线程是否正在运行,

  • 给开发团队减减负

    不必要的文档   在传统的软件开发过程中,文档是非常重要的东西。从需求到概要到详细到测试,覆盖每个环节。这些文档汗牛充栋,浪费大量人力编写、维护。但哪些文档才真正起到作用呢?在我看来,除了用户使用手册(有些产品需要)、业务流程图以外。绝大多数文档除了浪费人力并没有什么帮助。需求文档?谁能一开始写得清清楚楚,以后也不改呢?所以,在Scrum的价值观里面,认为面对面的沟通优于面面俱到的文档。如果不去撰写不必要的文档,就可以节约大量开发时间。   我们在实践中,甚至不要求产品拿出详细的产品规格说明。产品往往更加关注在用户价值上,具体对价值的实现,一般是产品和开发相互讨论、妥协的结果。这样产品更加能聚焦在提供用户价值上,而不是编写文档。 过多的会议   Scrum里面,会议有Sprintplanmeeting、SprintReview、SpringRetrospective、DailyScrum4种,看起来不少,但加起来也就整个开发过程的1/5不到。每日的站立会议也就15分钟。有些项目做起来会议没完没了,什么事情都开会讨论下。与其这样,不如影响到的人拉个小讨论解决即可,除了这4种会议,

  • EasyUI combobox 下拉高度自适应

    要指出的是,combobox是继承自combo的,所以,combo的属性也可以被combobox使用,该问题也是这样产生的,知道这个原理,该问题就解决一半了,另一点要指出的是,在easyui中,number类型的参数是可以接受auto这个值的,但是,在写这个值时,必须要注意,如果是数字时,在参数原型中可以不加'号,但是,auto是一个字符串,所以,必须写成'auto'的形式,别的就不说了,也直接看例子吧: <selectid="cc"class="easyui-combobox"data-options="panelHeight:'auto'"style="width:200px;"> <optionvalue="NewWindow">在新窗口中打开</option> <optionvalue="Insert">在框架中打开</option> </select>复制   本博客所有内容均对所有人无条件共享,欢迎学习或转载,同时也希望您也加入我们一起推动知识界的共享。 www.mccn.pub

  • Multi-class Classification相关

    标签(空格分隔):毕业论文 (OS:最近在做关于多类分类的综述,但是搜索出来好多方向搞得自己云里雾里的,好吧,又是在下孤陋寡闻了。还是那句话,不知道不可怕,但一直不知道就很尴尬了。) one-classclassification--一元分类 Inmachinelearning,one-classclassification,alsoknownasunaryclassification,triestoidentifyobjectsofaspecificclassamongstallobjects,bylearningfromatrainingsetcontainingonlytheobjectsofthatclass.--Wikipedia 维基百科中的定义是:一类分类,即一元分类,通过仅包含该类的对象的训练数据中学习,试图能够在所有对象中识别该特定类的对象。 one-classclassification是由[Moya&Hush][1]在1996年提出的,目前已有很多这方面的研究。一个类似的问题是PULearning,后者是以半监督的学习方式从正类样本和未标记样本中学习,建

  • linux文件权限语法总结(上)

    文件权限 权限分类 r--read查看该文件/文件夹的权限 w--write可以更改文件/文件夹的内容的权限 x--executable执行文件,脚本的权限/是否能进入文件夹中的权限 复制 文件权限对应数字 r--4 w--2 x--1 例: rwx=7rw-=6-w-=2-wx=3 复制 设置权限命令 chmod--changemode 用法 chmod选项权限文件/文件夹 设置,修改文件/文件夹的权限 选项-R递归设置文件夹的权限 此命令只有root用户,或者文件/文件夹属主才能使用 复制 属主--user-u 属组--group-g 其他用户--other-o 所有人--all-a chmod语法总结 chmodu/g/o/a+/-/=r/w/x文件/文件夹名对象 chmodu+r/var/log对象 chmodg-wx/var/log对象 chomdo=rwx/var/log对象 字母 选项 作用 u(谁) user 属主 g(谁) group 属组 o(谁) other 其他用户 a(谁) all 所有人(包含ugo) +(作用) 加 增加作用

  • 软件工程学习报告

    软件工程课程设计团队项目总结与项目报告 团队成员自评 漆艺: 身为团队的PM项目经理,开始的时候自己还不知道该做些什么,因为自己项目经验不足,团队把这个重要的角色交给我,那就有责任和义务把团队项目做好,并且发挥各个成员的作用。开始我们团队想的是做一个网页单机游戏,后来想到这种类型很多,就加了个心理分析,这种很少见,功能也很特别。在搭建服务器的过程中,自己做了很多,在网上也查了很多资料,就是不知道该怎么搭建,经过不少努力,最终还是搭建好了网站服务器,能上传网页到服务器上,外网也能访问。开始自己用lua写的贪吃蛇游戏,不知道该怎么上传到网页上做成H5网页小游戏,所以就没上传。在次过程中,自学了H5网页开发,要链接各种网页及H5小游戏。努力总会有收获,在团队中得到了很好的锻炼,了解了项目开发的基本流程,但是还是要多多努力,多去了解开发流程。也要充分发挥出团队的力量。 赖芝任: 本次团队项目我负责的是UI设计,一共有九个游戏,分别是象棋,驴子跳跳,2048,Mario,泡泡龙冒险,龙珠,植物大战僵尸,mousehit,天机。为这九个游戏寻找符合游戏主题、合适的图片,界面设计,背景图片。其中

  • centos7 安装php7+mysql5.7+nginx+redis

        、1.先修改yum源 https://webtatic.com rpm-Uvhhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm-Uvhhttps://mirror.webtatic.com/yum/el7/webtatic-release.rpm rpm-Uvhhttp://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm复制 2.安装nginx yuminstallnginx复制 3.安装mysql5.7 yum-yinstallmysql-community-server复制 4.安装php yuminstallphp70w-develphp70w.x86_64php70w-pecl-redisphp70w-cli.x86_64php70w-common.x86_64php70w-gd.x86_64php70w-ldap.x86_64php70w-mbstrin

相关推荐

推荐阅读