精华内容
参与话题
问答
  • Python爬虫应用案例视频课程

    千人学习 2018-09-04 12:24:56
    本课程以通俗易懂的方式讲解Python爬虫技术,以案例为导向,手把手的Python爬虫实战教程,让你少走弯路! ...爬虫应用(电影评论数据分析)。教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!
  • 应用案例

    千次阅读 2018-11-19 22:02:14
    我们介绍了几个常见的安全组应用案例,同时包括专有网络(VPC)和经典网络的安全组设置说明。 PS1:创建安全组和添加安全组规则的详细操作,请参见创建安全组 和添加安全组规则。 PS2:常用端口,请参见ECS 实例...

    我们介绍了几个常见的安全组应用案例,同时包括专有网络(VPC)和经典网络的安全组设置说明。

    PS1:创建安全组和添加安全组规则的详细操作,请参见创建安全组添加安全组规则

    PS2:常用端口,请参见ECS 实例常用端口介绍

    PS3:常用端口的安全组规则配置,请参见安全组规则的典型应用

    案例 1:实现内网互通

    场景举例:经典网络里,如果需要在同一个地域内不同账号或不同安全组的ECS实例之间拷贝资源,你可以通过安全组设置实现两台ECS实例内网互通后再拷贝。

    案例 2:只允许特定IP地址远程登录到实例

    场景举例:如果你的ECS实例被肉鸡,你可以修改远程登录端口号,并设置只允许特定的IP地址远程登录到你的ECS实例。

    案例 3:只允许实例访问外部特定IP地址

    场景举例:如果你的ECS实例被肉鸡,对外恶意扫描或发包,你可以通过安全组设置你的ECS实例只能访问外部特定IP或端口。

    案例 4:允许远程连接实例

    场景举例:你可以通过公网或内网远程连接到实例上,管理实例。

    案例 5:允许公网通过HTTP、HTTPS等服务访问实例

    场景举例:你在实例上架设了一个网站,希望你的用户能通过HTTP或HTTPS服务访问到您的网站。

    案例 1:实现内网互通

    使用安全组实现相同地域不同账号下或不同安全组内ECS实例间的内网互通。有两种情况:

    场景 1:实例属于同一个地域、同一个账号

    场景 2:实例属于同一个地域、不同账号

    PS:对于VPC网络类型的ECS实例,如果它们在同一个VPC网络内,可以通过安全组规则实现内网互通。如果ECS实例不在同一个VPC内(无论是否属于同一个账号或在同一个地域里),你可以 使用高速通道实现VPC互通

    场景 1:同一地域、同一账号

    同一地域、同一账号的2个实例,如果在同一个安全组内,默认内网互通,不需要设置。如果在不同的安全组内,默认内网不通,此时,根据网络类型做不同的设置:

    VPC

    处于同一个VPC内的ECS实例,在实例所在安全组中分别添加一条安全组规则,授权另一个安全组内的实例访问本安全组内的实例,实现内网互通。安全组规则如下表所示。

    经典网络

    在实例所在安全组中分别添加一条安全组规则,授权另一个安全组内的实例访问本安全组内的实例,实现内网互通。安全组规则如下表所示。

    场景 2:同一地域、不同账号

    这部分的描述仅适用于经典网络类型的ECS实例。

    同一个地域内、不同账号下,经典网络实例可以通过安全组授权实现内网互通。比如:

    UserA在华东1有一台经典网络的ECS实例InstanceA(内网IP:A.A.A.A),InstanceA所属的安全组为GroupA。

    UserB在华东1有一台经典网络的ECS实例InstanceB(内网IP:B.B.B.B),InstanceB所属的安全组为GroupB。

    在GroupA中添加安全组规则,授权InstanceB内网访问InstanceA,如下表所示。

    在GroupB中添加安全组规则,授权InstanceA内网访问InstanceB,如下表所示。

    PS:出于安全性考虑,经典网络的内网入方向规则,授权类型优先选择安全组访问;如果选择地址段访问,则仅支持单IP授权,授权对象的格式只能是 a.b.c.d/32,其中IP地址应根据你的实际需求设置,仅支持IPv4,子网掩码必须是/32。

    案例 2:只允许特定IP地址远程登录到实例

    如果你只想让某些特定IP地址远程登录到实例,可以参考以下示例的步骤在实例所在安全组里添加规则(以Linux实例为例,设置只让特定IP地址访问TCP 22端口):

    案例 3:只允许实例访问外部特定IP地址

    如果你只想让实例访问特定的IP地址,参考以下示例的步骤在实例所在安全组中添加安全组规则:

    1、禁止实例以任何协议访问所有公网IP地址,优先级应低于允许访问的规则(如本例中设置优先级为2)。安全组规则如下表所示。

    2、允许实例访问特定公网IP地址,优先级应高于拒绝访问的安全组规则的优先级(如本例中设置为1)。

    添加了安全组规则后,在连接实例,执行 ping、telnet 等测试。如果实例只能访问允许访问的IP地址,说明安全组规则已经生效。

    案例 4:允许远程连接实例

    允许远程连接ECS实例分为两种情况:

    场景 1:允许公网远程连接指定实例

    场景 2:允许内网其他账号下的某台ECS实例或所有ECS实例远程连接指定实例

    场景 1:允许公网远程连接实例

    如果要允许公网远程连接实例,参考以下示例添加安全组规则。

    1)VPC:添加如下所示安全组规则。

    2)经典网络:添加如下表所示安全组规则。

    自定义远程连接端口的详细操作,请参见服务器默认远程端口修改

    场景 2:允许内网其他账号下某个安全组内的ECS实例远程连接您的实例

    如果你的账号与同地域其他账号内网互通,而且你想允许内网其他账号下某个安全组内的ECS实例远程连接实例,按以下示例添加安全组规则。

    允许内网其他账号某个实例内网IP地址连接你的实例

    1)VPC:先保证2个账号的实例 通过高速通道内网互通,再添加如下表所示的安全组规则。

    2)经典网络:应添加如下表所示的安全组规则。

    允许内网其他账号某个安全组里的所有ECS实例连接您的实例

    1)VPC类型的实例,先保证2个账号的实例 通过高速通道内网互通,再添加如下表所示的安全组规则。

    2)经典网络实例,添加如下表所示的安全组规则。

    案例 5:允许公网通过HTTP、HTTPS等服务访问实例

    如果你在实例上架设了一个网站,希望你的用户能通过HTTP或HTTPS服务访问到你的网站,你需要在实例所在安全组中添加以下安全组规则。

    1)VPC:假设允许公网上所有IP地址访问你的网站,添加如下表所示的安全组规则。

    2)经典网络:假设允许公网上所有IP地址访问你的网站,添加如下表所示的安全组规则。

    PS1:如果你无法通过http://公网 IP 地址访问你的实例,请参见检查TCP 80端口是否正常工作

    PS2:80端口是HTTP服务默认端口。如果要使用其他端口,如8080端口,你必须修改Web服务器配置文件中监听端口设置,具体操作,请参见修改nginx/Tomcat等Web服务的端口监听地址ECS Windows Server修改IIS监听的IP地址

    展开全文
  • R语言多元Logistic逻辑回归 应用案例

    万次阅读 2019-06-14 15:00:55
    R语言多元Logistic回归 应用案例 多元Logistic回归 如何进行多重逻辑回归 可以使用阶梯函数通过逐步过程确定多重逻辑回归。此函数选择模型以最小化AIC,而不是像手册中的SAS示例那样根据p值。另请注意,在此...

    原文链接:http://tecdat.cn/?p=2640  

     

    可以使用逐步过程确定多元逻辑回归。此函数选择模型以最小化AIC。

    如何进行多元逻辑回归

    可以使用阶梯函数通过逐步过程确定多元逻辑回归。此函数选择模型以最小化AIC。

    通常建议不要盲目地遵循逐步程序,而是要使用拟合统计(AIC,AICc,BIC)比较模型,或者根据生物学或科学上合理的可用变量建立模型。

    多元相关是研究潜在自变量之间关系的一种工具。例如,如果两个独立变量彼此相关,可能在最终模型中都不需要这两个变量,但可能有理由选择一个变量而不是另一个变量。

    多元相关

    创建数值变量的数据框

    
    
    Data.num $ Status = as.numeric(Data.num $ Status)
    
    Data.num $ Length = as.numeric(Data.num $ Length)
    
    Data.num $ Migr = as.numeric(Data.num $ Migr)
    
    Data.num $ Insect = as.numeric(Data.num $ Insect)
    
    Data.num $ Diet = as.numeric(Data.num $ Diet)
    
    Data.num $ Broods = as.numeric(Data.num $ Broods)
    
    Data。 num $ Wood = as.numeric(Data.num $ Wood)
    
    Data.num $ Upland = as.numeric(Data.num $ Upland)
    
    Data.num $ Water = as.numeric(Data.num $ Water)
    
    Data.num $ Release = as.numeric(Data.num $ Release)
    
    Data.num $ Indiv = as.numeric(Data.num $ Indiv)
    
    ###检查新数据框
    
    headtail(Data.num)
    
    1 1 1520 9600.0 1.21 1 12 2 6.0 1 0 0 1 6 29
    
    2 1 1250 5000.0 0.56 1 0 1 6.0 1 0 0 1 10 85
    
    3 1 870 3360.0 0.07 1 0 1 4.0 1 0 0 1 3 8
    
    77 0 170 31.0 0.55 3 12 2 4.0 NA 1 0 0 1 2
    
    78 0 210 36.9 2.00 2 8 2 3.7 1 0 0 1 1 2
    
    79 0 225 106.5 1.20 2 12 2 4.8 2 0 0 0 1 2
    
    ###检查变量之间的相关性
    
    ###这里使用了Spearman相关性
     

    多元逻辑回归的例子

    在此示例中,数据包含缺失值。在R中缺失值用NA表示。SAS通常会无缝地处理缺失值。虽然这使用户更容易,但可能无法确保用户了解这些缺失值的作用。在某些情况下,R要求用户明确如何处理缺失值。处理多元回归中的缺失值的一种方法是从数据集中删除具有任何缺失值的所有观察值。这是我们在逐步过程之前要做的事情,创建一个名为Data.omit的数据框。但是,当我们创建最终模型时,我们只想排除那些在最终模型中实际包含的变量中具有缺失值的观察。为了测试最终模型的整体p值,绘制最终模型,或使用glm.compare函数,我们将创建一个名为Data.final的数据框,只排除那些观察结果。

    尽管二项式和poission系列中的模型应该没问题,但是对于使用某些glm拟合的步骤过程存在一些注意事项。

    用逐步回归确定模型

    最终模型

    summary(model.final)
    
    
    Coefficients:
    
                  Estimate Std. Error z value Pr(>|z|)   
    
    (Intercept) -3.5496482  2.0827400  -1.704 0.088322 . 
    
    Upland      -4.5484289  2.0712502  -2.196 0.028093 * 
    
    Migr        -1.8184049  0.8325702  -2.184 0.028956 * 
    
    Mass         0.0019029  0.0007048   2.700 0.006940 **
    
    Indiv        0.0137061  0.0038703   3.541 0.000398 ***
    
    Insect       0.2394720  0.1373456   1.744 0.081234 . 
    
    Wood         1.8134445  1.3105911   1.384 0.166455   

     

    伪R方

    $Pseudo.R.squared.for.model.vs.null
    
                                 Pseudo.R.squared
    
    McFadden                             0.700475
    
    Cox and Snell (ML)                   0.637732
    
    Nagelkerke (Cragg and Uhler)         0.833284

     

    模型总体p值

    在最终模型中创建包含变量的数据框,并省略NA。

    偏差表分析

     

    Analysis of Deviance Table
    
     
    
    Model 1: Status ~ Upland + Migr + Mass + Indiv + Insect + Wood
    
    Model 2: Status ~ 1
    
      Resid. Df Resid. Dev Df Deviance  Pr(>Chi)   
    
    1        63     30.392                         
    
    2        69     93.351 -6  -62.959 1.125e-11 ***

    似然比检验

     

    Likelihood ratio test
    
     
    
      #Df  LogLik Df  Chisq Pr(>Chisq)   
    
    1   7 -15.196                        
    
    2   1 -46.675 -6 62.959  1.125e-11 ***

     

    标准化残差图

    简单的预测值图

    在最终模型中创建包含变量的数据框,并在NA中省略

    过度离散检验

    过度离散是glm的deviance残差相对于自由度较大的情况。这些值显示在模型的摘要中。一个指导原则是,如果deviance残差与剩余自由度的比率超过1.5,则模型过度离散。过度离散表明模型不能很好地拟合数据:解释变量可能无法很好地描述因变量,或者可能无法为这些数据正确指定模型。如果存在过度离散,一种可能的解决方案是 在glm中使用quasibinomial family选项。

     

    Null deviance: 93.351  on 69  degrees of freedom
    
    Residual deviance: 30.392  on 63  degrees of freedom
    
    deviance /   df.residual
    
     
    
    [1] 0.482417

     

    评估模型的替代方法

    使用逐步程序的替代或补充是将模型与拟合统计进行比较。我的compare.glm 函数将为glm模型显示AIC,AICc,BIC和伪R平方。使用的模型应该都拟合相同的数据。也就是说,如果数据集中的不同变量包含缺失值,则应该谨慎使用。如果您对使用哪种拟合统计数据没有任何偏好,您希望在最终模型中使用较少的术语,我可能会推荐AICc或BIC。

    一系列模型可以与标准的anova 功能进行比较。模型应嵌套在先前模型中或anova函数列表中的下一个模型中; 和模型应该拟合相同的数据。在比较多个回归模型时,通常放宽p值为0.10或0.15。

    在以下示例中,使用通过逐步过程选择的模型。请注意,虽然模型9最小化了AIC和AICc,但模型8最小化了BIC。anova结果表明模型8不是对模型7的显着改进。这些结果支持选择模型7,8或9中的任何一个。  

     

    compareGLM(model.1, model.2, model.3, model.4, model.5, model.6,
               model.7, model.8, model.9)
    
     
    
    $Models
    
      Formula                                                  
    
    1 "Status ~ 1"                                             
    
    2 "Status ~ Release"                                       
    
    3 "Status ~ Release + Upland"                               
    
    4 "Status ~ Release + Upland + Migr"                       
    
    5 "Status ~ Release + Upland + Migr + Mass"                
    
    6 "Status ~ Release + Upland + Migr + Mass + Indiv"        
    
    7 "Status ~ Release + Upland + Migr + Mass + Indiv + Insect"
    
    8 "Status ~ Upland + Migr + Mass + Indiv + Insect"         
    
    9 "Status ~ Upland + Migr + Mass + Indiv + Insect + Wood"  
    
     
    
    $Fit.criteria
    
      Rank Df.res   AIC  AICc   BIC McFadden Cox.and.Snell Nagelkerke   p.value
    
    1    1     66 94.34 94.53 98.75   0.0000        0.0000     0.0000       Inf
    
    2    2     65 62.13 62.51 68.74   0.3787        0.3999     0.5401 2.538e-09
    
    3    3     64 56.02 56.67 64.84   0.4684        0.4683     0.6325 3.232e-10
    
    4    4     63 51.63 52.61 62.65   0.5392        0.5167     0.6979 7.363e-11
    
    5    5     62 50.64 52.04 63.87   0.5723        0.5377     0.7263 7.672e-11
    
    6    6     61 49.07 50.97 64.50   0.6118        0.5618     0.7588 5.434e-11
    
    7    7     60 46.42 48.90 64.05   0.6633        0.5912     0.7985 2.177e-11
    
    8    6     61 44.71 46.61 60.14   0.6601        0.5894     0.7961 6.885e-12
    
    9    7     60 44.03 46.51 61.67   0.6897        0.6055     0.8178 7.148e-12
    
    
    Analysis of Deviance Table
    
     
    
    Model 1: Status ~ 1
    
    Model 2: Status ~ Release
    
    Model 3: Status ~ Release + Upland
    
    Model 4: Status ~ Release + Upland + Migr
    
    Model 5: Status ~ Release + Upland + Migr + Mass
    
    Model 6: Status ~ Release + Upland + Migr + Mass + Indiv
    
    Model 7: Status ~ Release + Upland + Migr + Mass + Indiv + Insect
    
    Model 8: Status ~ Upland + Migr + Mass + Indiv + Insect
    
    Model 9: Status ~ Upland + Migr + Mass + Indiv + Insect + Wood
    
     
    
      Resid. Df Resid. Dev Df Deviance Pr(>Chi)   
    
    1        66     90.343                        
    
    2        65     56.130  1   34.213 4.94e-09 ***
    
    3        64     48.024  1    8.106 0.004412 **
    
    4        63     41.631  1    6.393 0.011458 * 
    
    5        62     38.643  1    2.988 0.083872 . 
    
    6        61     35.070  1    3.573 0.058721 . 
    
    7        60     30.415  1    4.655 0.030970 * 
    
    8        61     30.710 -1   -0.295 0.587066   
    
    9        60     28.031  1    2.679 0.101686

     

     


    最受欢迎的见解

    1.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

    2.R语言多元Logistic逻辑回归 应用案例

    3.R语言面板平滑转移回归(PSTR)分析案例实现

    4.R语言回归中的Hosmer-Lemeshow拟合优度检验

    5.R语言泊松Poisson回归模型分析案例

    6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

    7.R语言如何在生存分析与Cox回归中计算IDI,NRI指标

    8.在R语言中实现Logistic逻辑回归

    9.R语言实现向量自回归VAR模型

     

    展开全文
  • Android应用案例开发大全 吴亚峰等 PDF扫描版

    千次下载 热门讨论 2014-09-26 12:28:12
    《Android应用案例开发大全》是以Android手机综合应用程序开发为主题 通过11个典型范例全面且深度地讲解了单机应用 网络应用 商业案例 2D和3D游戏等多个开发领域 全书共分12章 主要以范例集的方式来讲述Android的...
  • 区块链应用案例

    千人学习 2019-01-08 13:29:07
    区块链已火遍全球,很多人都想要能够清晰的了解什么是区块链以及区块链的价值在哪里,本课程将从入门开始,为你讲解区块链技术核心概念与原理以及能够做些什么,对我们能够产生什么影响。
  • JAVA应用案例

    千人学习 2019-07-12 11:37:36
    为了对JAVA基础知识进行复习并实战使用,本课程讲解了如何使用JAVA知识实现反射、RPC、SOCKET、文件、JSON、二维码、JAVA MAIL、加密等案例。 本课程对每个知识的讲解都带有核心的知识点复习,以及详尽的案例讲解...
  • 《云计算:技术、平台及应用案例》系统阐述了当今it业界最热门的话题云计算技术,全书共分三篇12章,第一篇介绍云计算的概念及演进、云计算的商业模式、云计算标准和云安全;第二篇系统沦述基础设施即服务(iaas)、...
  • 二叉树算法应用案例

    千次阅读 2017-01-02 19:40:09
    笔者简介:姜雪伟,网名海洋,资深程序,IT高级讲师,CSDN社区专家,CSDN特邀编辑,畅销书作者,已...首先讲述二叉树算法,二叉树在IT领域应用是非常广泛的,它不仅在游戏开发中,在当前比较火的人工智能上也得到了...

    笔者简介:姜雪伟,网名海洋,资深程序,IT高级讲师,CSDN社区专家,CSDN特邀编辑,畅销书作者,已出版书籍《手把手教你架构3D游戏引擎》、《Unity3D实战核心技术详解》等书籍。
    笔者在1月4号将在CSDN学院开设一门公开课《算法与游戏实战》,在这里先把课程内容透露一部分给读者。首先讲述二叉树算法,二叉树在IT领域应用是非常广泛的,它不仅在游戏开发中,在当前比较火的人工智能上也得到了广泛的应用。作为使用者,首先要清楚二叉树的特性:它是n(n≥0)个结点的有限集;它的孩子节点做多是2个;它的遍历有先序,中序,后序;它的存储结构分为线性和链式存储等等;还有一种是最优二叉树也称为哈夫曼树,下面开始案例的分享。
    在游戏开发中美术会制作很多图片,这些图片一方面是用于UI界面,另一方面是用于模型的材质。大部分网络游戏使用的图片数量是非常多的,图片要展示出来,它首先要加载到内存中,内存大小是有限制的,它除了加载图片还需要加载数据或者是模型。当跟随玩家的摄像机在场景中移动时,场景会根据摄像机的移动一一展现出来,这就需要不断的把不同的场景加入到内存中,这无疑会增加内存的吞吐负担,如果我们把图片归类把它们做成一张大的图片,这样一旦加入到内存中,就不用频繁的加载了,提高了效率。
    现在大家都使用Unity开发或者使用虚幻开发,它自己实现了一个打成图集的功能,或者使用TexturePack工具也可以将其打包成图集。虽然我们看不到它们的代码实现,但是我们自己可以使用二叉树将其打包成图集,给读者展示利用二叉树实现的UI打成图集的效果图:
    图片描述
    下面给读者展示核心代码,首先是创建二叉树,目的是将图片插入到二叉树的结点中,包括判断二叉树结点是否为空,代码中采用递归的方式,代码如下所示:

    public AtlasNode Insert(Texture2D image, int index) {
                if (image == null) // Obviously an error!
                    return null;
    
                if (child != null) {// If this node is not a leaf, try inserting into first child.
                    AtlasNode newNode = child[0].Insert(image, index);
                    if (newNode != null)
                        return newNode;
    
                    // No more room in first child, insert into second child!
                    return child[1].Insert(image, index);
                }
                else {
                    // If there is already a lightmap in this node, early out
                    if (hasImage)
                        return null;
    
                    // If this node is too small for the image, return
                    if (!ImageFits(image, rc))
                        return null;
    
                    // If the image is perfect, accept!
                    if (PerfectFit(image, rc)) {
                        hasImage = true;
                        imageRef = image;
                        name = imageRef.name;
                        sortIndex = index;
                        return this;
                    }
    
                    // If we made it this far, this node must be split.
                    child = new AtlasNode[2];
                    child[0] = new AtlasNode();
                    child[1] = new AtlasNode();
    
                    // Decide which way to split image
                    float deltaW = rc.width - image.width;
                    float deltaH = rc.height - image.height;
    
                    if (deltaW > deltaH) {
                        child[0].rc = new Rect(rc.xMin, rc.yMin, image.width, rc.height);
                        child[1].rc = new Rect(rc.xMin + image.width + TEXTURE_PADDING, rc.yMin, rc.width - (image.width + TEXTURE_PADDING), rc.height);
                    }
                    else {
                        child[0].rc = new Rect(rc.xMin, rc.yMin, rc.width, image.height);
                        child[1].rc = new Rect(rc.xMin, rc.yMin + image.height + TEXTURE_PADDING, rc.width, rc.height - (image.height + TEXTURE_PADDING));
                    }
    
                    // Lets try inserting into first child, eh?
                    return child[0].Insert(image, index);
                }
            }

    最后一步就是创建图集了,核心代码如下所示:

    public static Atlas[] CreateAtlas(string name, Texture2D[] textures, Atlas startWith = null) {
            List<Texture2D> toProcess = new List<Texture2D>();
            toProcess.AddRange(textures);
            int index = toProcess.Count - 1;
            toProcess.Reverse(); // Because we index backwards
    
            List<Atlas> result = new List<Atlas>();
    
            int insertIndex = 0;
            if (startWith != null) {
                insertIndex = startWith.root.sortIndex;
            }
    
            while(index >= 0) {
                Atlas _atlas = startWith;
                if (_atlas == null) {
                    _atlas = new Atlas();
                    _atlas.texture = new Texture2D(AtlasSize, AtlasSize, TextureFormat.RGBA32, false);
                    _atlas.root = new AtlasNode();
                    _atlas.root.rc = new Rect(0, 0, AtlasSize, AtlasSize);
                }
                startWith = null;
    
                while (index >= 0 && (_atlas.root.Contains(toProcess[index].name) || _atlas.root.Insert(toProcess[index], insertIndex++) != null)) {
                    index -= 1; 
                }
                result.Add(_atlas);
                _atlas.root.sortIndex = insertIndex;
                insertIndex = 0;
                _atlas = null;
            }
    
            foreach(Atlas atlas in result) {    
                atlas.root.Build(atlas.texture);
                List<AtlasNode> nodes = new List<AtlasNode>();
                atlas.root.GetBounds(ref nodes);
                nodes.Sort(delegate (AtlasNode x, AtlasNode y) {
                    if (x.sortIndex == y.sortIndex) return 0;
                    if (y.sortIndex > x.sortIndex) return -1;
                    return 1;
                });
    
                List<Rect> rects = new List<Rect>();
                foreach(AtlasNode node in nodes) {
                    Rect normalized = new Rect(node.rc.xMin / atlas.root.rc.width, node.rc.yMin / atlas.root.rc.height, node.rc.width / atlas.root.rc.width, node.rc.height / atlas.root.rc.height);
                    // bunp everything over by half a pixel to avoid floating errors
                    normalized.x += 0.5f / atlas.root.rc.width;
                    normalized.width -= 1.0f / atlas.root.rc.width;
                    normalized.y += 0.5f / atlas.root.rc.height;
                    normalized.height -= 1.0f / atlas.root.rc.height;
                    rects.Add(normalized);
                }
    
                atlas.uvRects = new AtlasDescriptor[rects.Count];
                for (int i = 0; i < rects.Count; i++) {
                    atlas.uvRects[i] = new AtlasDescriptor();
                    atlas.uvRects[i].width = (int)nodes[i].rc.width;
                    atlas.uvRects[i].height = (int)nodes[i].rc.height;
                    atlas.uvRects[i].name = nodes[i].name;
                    atlas.uvRects[i].uvRect = rects[i];
                }
    
                atlas.root.Clear();
                #if DEBUG_ATLASES
                atlas.texture.Apply(false, false);
                SaveAtlas(atlas, name);     
                #else   
                if (atlas != result[result.Count - 1])
                    atlas.texture.Apply(false, true);
                else
                    atlas.texture.Apply(false, false);
                #endif
            }
    
            return result.ToArray();
        }

    当然这种技术也可以使用3D模型材质的处理,只是在制作的过程中要保存其图片的UV值也就是图片在图集中的坐标,这样程序在加载时可以“对号入座”,避免模型的材质出现“张冠李戴”。
    二叉树另一种形式是-哈夫曼树,哈夫曼树定义:在权为wl,w2,…,wn的n个叶子所构成的所有二叉树中,带权路径长度最小(即代价最小)的二叉树称为最优二叉树或哈夫曼树。我们利用哈夫曼树的特性可以帮助我们优化程序代码,特别适用于游戏中怪物面对玩家的AI表现,在网上比较流行的案例,游戏中也会使用到:设主角的生命值d,在省略其他条件后,有这样的条件判定:当怪物碰到主角后,怪物的反应遵从下规则:
    图片描述
    根据条件,我们可以用如下普通算法来判定怪物的反应:

    if(d<100) state=嘲笑,单挑;
      else if(d<200) state=单挑;
        else if(d<300) state=嗜血魔法;
          else if(d<400) state=呼唤同伴;
            else state=逃跑;
    

    上面的算法适用大多数情况,但其时间性能不高,我们可以通过判定树来提高其时间性能。首先,分析主角生命值通常的特点,即预测出每种条件占总条件的百分比,将这些比值作为权值来构造最优二叉树(哈夫曼树),作为判定树来设定算法。假设这些百分比为:
    图片描述
    构造好的哈夫曼树为:
    图片描述
    对应算法如下:

     if(d>=200)&&(d<300) state=嗜血魔法;
      else if(d>=300)&&(d<500) state=呼唤同伴;
        else if(d>=100)&&(d<200) state=单挑;
          else if(d<100) state=嘲笑,单挑;
            else state=逃跑;
    

    通过计算,两种算法的效率大约是2:3,很明显,改进的算法在时间性能上提高不少。这种改进也可以归结到代码重构或者说是优化程序,它虽然没有使用二叉树的存储节点,但是我们可以使用二叉树的思想解决问题。
    在人工智能中,二叉树使用也是非常广泛的,不同的分支指令对应的是不同的动作等等,在遇到AI方面的问题时可以优先考虑二叉树算法。

    总结

    在使用算法解决问题时,并不是照搬硬套,其思想是最重要的,代码只是编程工具,语言不是重点,思路才是最重要的,万变不离其宗。

    展开全文
  • 区块链应用案例剖析

    千次阅读 2018-04-12 10:42:54
    有什么靠谱的应用案例吗?逻辑是什么? 每个人都难免有这样的疑问。区块链因其独特精巧的设计,为我们释放了巨大的创新空间,在很多领域都出现了应用案例和概念验证。本节为您介绍区块链和智能合约最常见的一些应用...

    听很多人说区块链很牛逼,能颠覆这个颠覆那个的,到底怎么个牛逼法?有什么靠谱的应用案例吗?逻辑是什么?

    每个人都难免有这样的疑问。区块链因其独特精巧的设计,为我们释放了巨大的创新空间,在很多领域都出现了应用案例和概念验证。本节为您介绍区块链和智能合约最常见的一些应用案例和场景,包括:

    • 数字货币;
    • 支付汇兑;
    • 登记结算;
    • 数据存证;
    • 知识产权保护;
    • 溯源防伪;
    • 身份认证与公民服务;
    • 物联网;
    • 保险;
    • 医疗;
    • 赌博与预测市场。

    阅读全文: http://gitbook.cn/gitchat/activity/599a90fa3aae7b56e01feff7

    您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

    FtooAtPSkEJwnW-9xkCLqSTRpBKX

    展开全文
  • Android应用案例开发大全.pdf

    千次下载 热门讨论 2013-03-31 14:58:36
    Android应用案例开发大全完整电子书
  • 一、块存储应用案例 目的: KVM虚拟机调用Ceph镜像作为虚拟机的磁盘。 1.1 准备实验环境 1.1.1 创建磁盘镜像 • &amp;amp;amp;nbsp;为虚拟机创建磁盘镜像 [root@node1&amp;amp;amp;nbsp;&amp...
  • ZooKeeper实际应用案例-开发实战

    万次阅读 多人点赞 2018-12-18 14:14:51
    本原创入门教程,涵盖ZooKeeper核心内容,通过实例和大量图表,结合实战,帮助学习者理解和运用,任何问题欢迎留言。 目录: zookeeper介绍与核心概念 安装和使用 ZooKeeper分布式锁实现 ZooKeeper框架Curator...
  • 工业机器人典型应用案例

    热门讨论 2016-05-14 18:21:04
    工业机器人典型应用案例丛书系类,ABB公司
  • 过滤器应用案例分析

    千次阅读 2016-07-31 11:15:23
    本文主要分享的内容是通过使用过滤器解决全站乱码、Html过滤、脏话过滤、Gzip压缩过滤等主要内容,是一个切实解决网站实际问题的一套方案。我们以前对于网站乱码的问题大多数是直接在servlet中rerquest....
  • OSGI典型的应用案例

    千次阅读 2007-04-24 15:42:00
    OSGI典型的应用案例主要有两个:分别是Eclipse和BMW汽车的应用控制系统。Eclipse Eclipse作为Java业界成功的IDE project,在3.0以前的版本它采用的是自己设计的一套插件体系结构,而Eclipse的插件体系结构在整个业界...
  • python应用案例

    千次阅读 2018-06-03 21:54:55
    1、统计目录下多个txt文件,找出出现频率最多的单词#coding=utf-8 ##目录下多个txt文件,找出出现频率最多的单词 import os,re from collections import Counter FILESOURECE = "D://pytest"...
  • MongoDB 应用案例

    千次阅读 2016-01-27 23:52:16
    MongoDB 应用案例 下面列举一些公司MongoDB的实际应用: Craiglist上使用MongoDB的存档数十亿条记录。 FourSquare,基于位置的社交网站,在Amazon EC2的服务器上使用MongoDB分享数据。 Shutterfly,以...
  • 物联网应用案例

    千次阅读 2012-06-06 10:11:35
    物联网应用案例 物联网 物联网是在互联网基础上,将其用户延伸和扩展到任何物品,进行信息交换和通信的一种网络。  IBM前首席执行官郭士纳曾提出一个观点,认为计算模式每十五年就会发生一次变革。1965年前后...
  • Fabric应用案例

    2014-11-28 15:50:21
    下面介绍三个比较典型的应用Fabric的示例,涉及文件上传与校验,环境部署,代码发布功能示例1:文件打包,上传与校验我们时常做一些文件包分发的工作,实施步骤一般是先压缩打包,在批量上传至目标服务器,最后做...
  • vuex应用案例

    2019-07-28 21:58:35
    1.vuex架构项目经典案例 2.vuex项目案例 3.vuex项目案例
  • Hadoop应用案例

    2014-02-20 18:00:46
    1. 腾讯大规模Hadoop集群实践 http://www.csdn.net/article/2014-02-19/2818473-Tencent-Hadoop
  • GIS 应用案例

    千次阅读 2011-09-14 19:33:42
    楼宇经济 ...管理平台建设为核心,通过网络平台、应用框架、信息**层,以信息**平台为基 础建立政府信息**管理体系,充分有效地整合利用政府的内部信息**。 数据平台的核心是人口基础信息库、
  • 知识图谱关键技术与应用案例

    千人学习 2018-08-10 13:27:16
    本课程从知识图谱的历史由来开展,讲述知识图谱...知识图谱辐射至各行业领域的应用;在知识图谱关键技术概念与工具的实践应用中,本课程也会分享知识图谱的构建经验;以及达观在各行业领域系统中的产品开发和系统应用
  • Seq2Seq模型应用案例

    千次阅读 2019-02-12 20:47:38
    Seq2Seq模型应用案例( : Seq2Seq是Encoder-Decoder(编码器与解码器)模型,输入是一个序列,输出也是一个序列,适用于输入序列与输出序列长度不等长的场景,如机器翻译、人机对话、聊天机器人等。 本案例参考...
  • 层次分析法原理及应用案例

    万次阅读 2020-10-30 15:04:00
    层次分析法是指将一个复杂的多目标决策问题作为一个系统,将目标分解为多个目标或准则,进而分解为多指标(或准则、约束)的若干层次,通过定性指标模糊量化方法算出层次单排序(权数)和总排序,以作为目标(多指标...
  • java常用设计模式应用案例

    万次阅读 2012-10-12 16:15:08
    设计模式; 一个程序员对设计模式的理解: “不懂”为什么要把很简单的东西搞得那么复杂。后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开...
  • 田毅:Spark介绍与应用案例分析

    热门讨论 2014-12-19 11:29:03
    该文档来自于亚信大数据平台研发部经理田毅,在2014中国大数据技术大会大数据技术分论坛的演讲“Spark介绍与应用案例分析 ”。
  • MVC+EF+LayUI框架的应用案例

    千人学习 2017-07-01 20:40:17
    1.相关技术,MVC、EF、Layer、MEF讲解 2.框架使用,规范 3.框架公用库更新要求与规范 4.本框架在实际的工作中综合应用 5.为提高工作效率,怎么样结合本框架提高工作效率
  • 前言 Rxjava由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点...今天,我将为大家带来 Rxjava的的基本使用 & 实际应用案例教学,即常见开发应用场景实现 ,并结合常用相关框架如Retrofit等,希望大家会喜欢。

空空如也

1 2 3 4 5 ... 20
收藏数 38,964
精华内容 15,585
关键字:

应用案例