精华内容
下载资源
问答
  • 王者荣耀作战思想

    2019-01-10 23:51:00
    队友也要发育,整个团队的经济拖下来了,队友还怎么发育,难道后期还真的能轻松一打五吗。 射手:后期输出主力,前期主要以发育主,但是一定要猥琐,就算后期输出也要靠自己意识,不要指望辅助和坦克一.....

    一、人和

    1.角色

    打野:前期打节奏的点,需要多游走找机会gank,身为一个打野不仅仅是到处去刷野那么简单,如果不支援不抓人一个劲的打野刷经济,时不时还要蹭各路的兵线经济和经验,那还要打野干什么。队友也要发育,整个团队的经济都被拖下来了,队友还怎么发育,难道后期还真的能轻松一打五吗。

    射手:后期输出主力,前期主要是以发育为主,但是一定要猥琐,就算是后期输出也要靠自己意识,不要指望辅助和坦克一直跟着,如果辅助和坦克不去帮助队友参团全程守着射手,估计发育不到后期游戏就结束了。还有就是别以为是ADC就得一直去赖线,明明中路要参与团战了,还一个人在下路刷两个野就不对了,该参团还是得去的。就算输出不强,但也不能看着别人五打四还一个劲地单机吧。

    法师:法术伤害输出者,爆发对前排和后排都可以做到压制,但是本身身板脆,所以也需要队友的配合才能很好地完成击杀。

    坦克:不管前中后期配合队友参团才是坦克首要任务。

    辅助:可以很好地保护队友不被轻易干掉,不过很少有人愿意去玩,因为没有拿人头的快感。

    2.配合

    团战:辅助的任务是保护输出,不要一味冲进去抗伤害。玩刺客目标就是切后排,没有把握就不要出现,等待时机才能一举击杀后排。玩射手就是死命输出,不要怂,反正也跑不了就站撸敌人。玩战士就是打乱阵型,目的就是制造混乱,只要把对方的火力打得分散开来就算完成任务。

    支援:很多人认为战局离得远,就不用去支援了,反正过去了队友也死了,其实不然,你永远不知道两个人的1V1对拼会不会有队友去支援,你也永远不知道1V1的对局会不会变成大规模团战,很有可能因为你一个人的不支援让对手进入一波推,令对局陷入焦灼状态,最后输掉比赛。

    压塔:压塔是一种愚蠢的行为,比如说下路后羿与对面夏侯对线,打野的英雄埋伏在下路的草丛支援过来了,后羿一看,好家伙一打二我怕你杀我,压着防御塔,对面夏侯一看,好你个残血的后裔这么浪,草丛里面要是没人,我喊你叫爸爸。正确的做法是,果断后撤到自己塔下,放着兵线互殴,等着对面的人出塔,看准队友出手的时机一击必杀,打完之后该收线收线,该回家回家,因为支援一般马上就要来了。

    优先推塔:打野的带着他的位移冲进野区刷野,打龙的打龙,带线的又看见上下路一波兵又去打,反正没人推塔。所以顺风不浪,能推塔就推塔,除非兵线不理想,把线带过去基本敌人也复活支援了,那么就分一到两个有位移的人去带线,其余人打龙,把团灭的收益最大化。

    上单:距离对面的红野区最近,最容易丢一血的地方。因为对面的刺客也好,射手也罢,打完红BUFF会顺手GANK一波,所以上单英雄要不是能抗的,比如吕布、亚瑟,要不能位移的,比如猴子、花木兰,或者是有解控的,比如典韦。

    3.出装

    对面有法师,肉就要出斗篷,不然法师赤裸裸的伤害;对面有两个肉,输出就要带破甲,不然打不出伤害;看对面怎么出装,就怎么针对出装。

    二、天时

    打大龙:(1)大龙必须要进入大后期才能打,这个思想是错误的。事实上,很多英雄在队友的配合下击杀刚刚出生的大龙,这一点经常可以在KPL里见到。而且就因为很多人固定地认为大龙进入大后期才能打,所以很多时候在大龙刚出生的时候,观察小地图都不会去看大龙位置是什么情况,到最后大龙被击杀才想起来对面还有一个可以快速刷野的英雄。(2)对面死了3个就要马上干龙,不要等,集体去打。

    三、地利

    路线:最好把敌方引入我方隐蔽处,一举歼灭,不要乱跑,有隐藏的地方尽量隐藏起来,让一个搭档明地引诱,另一个搭档隐蔽。

    打野位:对方打野消失,就要提防gank,并提前做好准备进行反杀。没来gank的情况下就要注意暴君和主宰是否被偷,及时发送信号提醒队友。

    转载于:https://www.cnblogs.com/ratels/p/10253206.html

    展开全文
  • 不知道大家有没有什么好办法可以解决这个问题ÿ1f;暂时就拿了些竹子把树枝撑起来,希望能有些帮助,很期待再过段时间梨的收获!富顺偶遇停电,打乱了拍摄计划,不过想到之前放在...
  • 2020母爱演讲稿全新集合 母亲是什么,母亲我们打开成长的大门,母亲上帝派下来哺育我们的天使,下面给大家分享关于母爱演讲稿,方便大家学习。 母爱演讲稿1 从小我其实觉得我的妈妈并不伟大。 她很普通,她...
  • 现在一个快速型社会,做什么事情讲究高效率! 可说到PDF格式转换,很多伙伴犯难了。 今天,就让小编大家说说如何批量转换PDF格式! 首先,我们需要一款PDF Converter Master! 接下来1、添加PDF文件 启动...

    现在是一个快速型社会,做什么事情都讲究高效率!
    可说到PDF格式转换,很多伙伴都犯难了。
    今天,就让小编为大家说说如何批量转换PDF格式!
    首先,我们需要一款PDF Converter Master!
    接下来:
    1、添加PDF文件
    启动应用程序,单击工具栏上的“添加”按钮,将显示查找程序,您可以从Mac中选择PDF文件。或者只是将要转换的PDF文件拖放到文件列表中;
    在这里插入图片描述

    2、选择导出格式并配置导出设置
    单击输出格式下拉列表,您可以选择您喜欢的文档格式。如果输出选项可用,您可以在格式旁边看到一个选项按钮。单击它可以自定义所选格式的输出设置。
    在这里插入图片描述

    3、选择输出文件夹
    单击“浏览”按钮以选择Mac上的文件夹以存储转换的文档。

    4、单击转换按钮以开始PDF转换
    单击“转换”按钮后,进度条将显示在文件列表下方。您可以通过单击文件列表中的快速链接直接打开输出文档,或者转到刚刚选择的文件夹以查找输出文档。
    在这里插入图片描述
    那PDF Converter Master都支持什么格式呢?
    使用所有常见的导出文档格式满足所有转换需求,包括:
    1、微软办公软件:word(docx,doc),Excel(xlsx),PowerPoint(PPTx);
    2、工作:页数(页数),数字(数字),主题演讲(键);
    3、其他常见的文档格式:EPUB,富文本格式(rtf),纯文本(txt)和5个图像(jpg,png,bmp,gif,tiff)。
    伙伴们学会这招没有!

    展开全文
  • Smali和逆向分析

    千次阅读 2016-04-20 16:40:54
    这篇文章其实2个月前就想写了,但我知道并不好写,就懒得写了,所以到现在~其实接触smali这门语法件蛮偶然的事,接触后发现,次奥,这货在某些领域太有用了,至于为什么我想看完这篇文章应该明白了。...
    
    

    这篇文章其实2个月前就想写了,但我知道并不好写,就懒得写了,所以拖到现在~其实接触smali这门语法是件蛮偶然的事,接触后发现,次奥,这货在某些领域太有用了,至于为什么我想看完这篇文章应该都明白了。

    我自己也只是接触了皮毛,大概用了2个礼拜多一点,也不是很系统的学习,写这篇的目的主要还是想把知道的东西记下来,以后好追溯。

    1.Smali简介

    Smali是Dalvik的寄存器语言,它与Java的关系,简单理解就是汇编之于C。假如你对汇编有足够的驾驭能力,那你可以通过修改汇编代码来改变C/C++代码的走向。当然,学过汇编的都清楚,汇编比BrainFuck 还难学,更不用说去反编译修改了。

    但是Smali有一点不一样,就是它很简单,只有一点点的语法,只要你会java,了解Android的相关知识,那你完全可以通过修改Smali代码来反向修改java代码,虽然绕了一点,但是在某些情况下你不得不这么做。还好,Smali很简单。

    2.apktool

    说了这么多,还没有说Smali哪来?没错。Smali代码是安卓APK反编译而来的,所以Smali文件和Java文件一一对应。获取Smali文件,我们需要下载一个辅助工具:ApkTool 。apktool这个命令行工具如果详细使用功能参数是比较多的,但是这里我们只需要用到2个最基础的功能:

    一个是反编译decode:

    apktool d xxx.apk
    

    另一个是打包build:

    apktool b
    

    这里要注意的是路径问题,apktool如果没有加入到环境变量中,记得cd到apktool的目录去使用它。另一个是打包,如果只是简单的使用参数b,那要求是要在反编译出来的项目目录下执行,而打包好的文件会保存在这个项目目录下的dist目录。

    这是一个HelloWorld的应用程序反编译和打包的目录结构:

    3.Smali语法

    这里仍然以一个默认的HelloWorld的应用程序进行解释吧。新建一个HelloWorld安卓项目,在MainActivity中只保留onCreate函数。代码如下:

    MainActivity.java
     
     package com.fusijie.helloworld;
    
      import android.app.Activity;
      import android.os.Bundle;
    
      public class MainActivity extends Activity {
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          }
      }
      
    

    反编译后的Smali文件如下:

    MainActivity.smali
     
        .class public Lcom/fusijie/helloworld/MainActivity;
      .super Landroid/app/Activity;
      .source "MainActivity.java"
    
      # direct methods
      .method public constructor <init>()V
        .locals 0
    
        .prologue
        .line 14
        invoke-direct {p0}, Landroid/app/Activity;-><init>()V
    
        return-void
      .end method
    
      # virtual methods
      .method protected onCreate(Landroid/os/Bundle;)V
        .locals 1
        .parameter "savedInstanceState"
    
        .prologue
        .line 18
        invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
    
        .line 19
        const/high16 v0, 0x7f03
    
        invoke-virtual {p0, v0}, Lcom/fusijie/helloworld/MainActivity;->setContentView(I)V
    
        .line 20
        return-void
      .end method
      
    

    对比一下,可以比较清楚的看出来,smali代码其实就是对java代码一个翻译,只是没有java看起来那么简单,smali把很多应该复杂的东西还原成复杂的状态了。简单解释下这段代码。

    • 前三行指明了类名,父类名,和源文件名。
    • 类名以“L”开头相信熟悉Jni的童鞋都比较清楚。
    • “#”是smali中的注释。
    • “.method”和“.end method”类似于Java中的大括号,包含了方法的实现代码段。
    • 方法的括号后面指明了返回类型,这同样类似与Jni的调用。
    • “.locals”指明了这个方法用到的寄存器数量,当然寄存器可以重复利用,从“V0”起算。
    • “.prologue”指定了代码开始处。
    • “.line”表明这是在java源码中的第几行,其实这个值无所谓是多少,可以任意修改,主要用于调试。
    • “invoke-direct”这是对方法的调用,可以看到这里调用了是Android.app.Activity的init方法,这在java里是隐式调用的。
    • “return-void”表明了返回类型,这和java不一样,即使没有返回值,也需要这样写。
    • 接下来是onCreate方法,“.parameter”指明了参数名,但是一般没有用,需要注意的是p0代表的是this,p1开始代表函数参数,静态函数没有this,所以从p0开始就代表参数。
    • 在实现里先是调用了父类的方法,然后再调用setContentView,注意这里给了一个传参。整形的传参,这个值是先赋给寄存器v0,然后再调用的使用传递进去的。smali中都是这么使用,所有的值必须通过寄存器来中转。这点和汇编很像。

    对比了Java代码和Smali代码,可以很清楚的看到,原本只有几行的代码到了Smali,内容被大大扩充了。Smali还原了Java隐藏的东西,同时显式地指定了很多细节。这还只是个最基本的HelloWorld的onCreate函数,如果有内部类,还有分文件显示。

    这样看来,其实Smali只能说复杂,不能说难。我这里不打算把Smali的语法再贴一次,这里给出几个链接,算是总结的相对好一点的(其实我都没看到有系统总结的。。。如果你有好的资料,欢迎跟帖分享)

    这里顺便提供2个利器:

    4.小试牛刀

    了解了Smali的基本语法,那我们要动手试一下,Smali能做什么?仍然以HelloWorld为例,假如我们没有Android项目的源代码,只有一个APK,给他加个新功能吧!

    这个功能很简单,只是在HelloWorld中输出一个“Hello, Smali”。

    (1)第一步还是先使用apktool来反编译HelloWorld.apk。

    (2)打开smali下的com/fusijie/helloworld/MainActivity.smali文件。

    (3)原本我们在Java中要写的代码是:

    Toast
     
     Toast.makeText(this, "Hello, Smali", Toast.LENGTH_LONG).show();
    

    翻译成Smali就是:

    Toast
     
        .line xx
        const-string v0, "Hello, Smali"
    
        const/4 v1, 0x1
    
        invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
    
        move-result-object v0
    
        invoke-virtual {v0}, Landroid/widget/Toast;->show()V
    

    (4)最后在插入Smali的时候,我们需要修改2个地方:

    • “.locals 1”,因为本来只用到了v0,现在多用了一个v1,所以改为“.locals 2”。
    • “.line xx” xx随意改为一个不重复的值即可。

    (5)使用apktool打包成apk,因为打包完后原有的密钥会丢失,所以需要重新打上我们自己的密钥,可以参考 很早以前我写的一个帖子

    (6)最后的效果是这样的。

    5.干点坏事

    从上面一个例子对Smali的用途就很清楚了,没错,Smali注入。现在常见的除了测试以外的用途,Smali注入明显是带有黑客性质的,小的如破解游戏,替换游戏广告,大的甚至利用漏洞去破解密码,偷窃个人资料,财产等等。对Smali,安卓逆向分析,安卓系统安全比较清楚的,这些事其实都不算事。

    我这里以一个实际上线的游戏破解为例,看看我们平时在写代码时要注意哪些问题,避免辛辛苦苦写游戏,却在帮人家数钱。这里的破解不是重点,反破解才是重点。

    以市场上很火的一款单机游戏《消灭小星星》为例,下载地址是: http://apk.91.com/Soft/Android/com.brianbaek.popstar-340.html

    相同的方法反编译,在/smali/com/zplay/android/sdk/pay/ZplayPay.smali文件的dopay函数开头,注入如下代码:

    popstar_crack
     
        const/4 v0, 0x1  
        invoke-static {v0}, Lcom/zplay/iap/ZplayJNI;->sendMessage(I)V
        return-void
    

    原理很简单,这个游戏使用了Zplay的支付系统,在Java层的处理了支付逻辑,如果觉得Smali读起来费劲,那么直接使用dex2jar就能很清楚的看到,支付提醒甚至是中文的。Java层处理完支付逻辑后会给C++层丢个消息,调用C++层的代码去处理游戏逻辑,比如成功支付,那么幸运星就会相应地增加。这里使用native方法进行处理。

    所以注入的代码是,一旦进入支付逻辑,直接返回成功,同时强制返回函数,这就实现了支付的破解。当然作为一个有节操,有逼格的游戏从业者,这里就不放出破解版了(不过说得也够明白了)。查找注入点这东西靠的是耐心,细心和运气。

    为了方便,一般会先用正常的java写一些调试类,然后反编译出静态的smali放入目标文件夹中以供调试使用。

    再放张图,星星用不完了:

    6.总结

    就像上面说的,Smali能做的不仅仅是这些。有兴趣的可以看看这篇文章 《支付宝钱包手势密码破解实战》 ,我没有去验证过真伪,但是如作者所描述的应该是可行无误。这里用到的一个更高级的功能是将支付宝的加密解密逻辑Smali的jar包导入自己新建的工程,进而直接在自己的程序中集成支付宝的加密解密功能。

    在逆向分析游戏的过程中,我也发现了几个重要的点能帮助开发者提高自己程序的安全性。

    首先,完全避免破解是不可能的,我们能做的工作就是尽最大可能去妨碍破解者破解游戏,提高破解成本。

    • 一定要使用混淆。不单单是第三方SDK,你的代码也是。破解游戏很重要一点就是要抓住游戏的逻辑。代码混淆后,Smali更加晦涩难懂,逻辑也更难掌握。
    • 回到开头的话,解读汇编比解读Smali难度大的多得多。所以重要的逻辑可以放到C/C++层去处理就不要放在Java层上去处理。
    • 多用连续调用的方式。这样出来的效果是Java只有一行,Smali可能有好几十行,看着都蛋疼。当然这对熟练的破解老手无效~
    • 在一些关键的点上,比如支付,多绕一下。而不是像《消灭小星星》这样,直接在Java内用中文显示“支付成功”,同时去调用JNI方法。用dex2jar看一眼就暴露了。

    哈哈,总之,小心你的艳照。。。

    哇咔咔,竟然写了快4个小时~

    
    展开全文
  • 线段树区间修改模板

    2015-03-31 23:53:00
    本来打算把大白书第三章一口气...模板一:1 L R v 表示区间[L, R]所有元素加上v2 L R 表示查询区间[L, R]的sum, min, maxsumv[o]的定义:如果只执行节点o及其子孙节点的中的add操作,节点o对应区间中所有数之和...

    本来打算把大白书第三章一口气攻下来的,但是这个线段树也是卡了好久。

    不敢过题太快,怕自己走马观花到头来结果什么都不会。

    可也不能再拖了,在做题中也许有更多的体会。

     

    模板一:
    1 L R v 表示区间[L, R]所有元素都加上v
    2 L R   表示查询区间[L, R]的sum, min, max
    sumv[o]的定义为:如果只执行节点o及其子孙节点的中的add操作,节点o对应区间中所有数之和

     1 //线段树区间修改
     2 //1 L R v 表示区间[L, R]所有元素都加上v
     3 //2 L R   表示查询区间[L, R]的sum, min, max
     4 //sumv[o]的定义为:如果只执行节点o及其子孙节点的中的add操作,节点o对应区间中所有数之和
     5 #include <cstdio>
     6 #include <cstring>
     7 #include <algorithm>
     8 using namespace std;
     9 
    10 const int maxnode = 1 << 17;
    11 
    12 int _sum, _min, _max, op, qL, qR, v;
    13 
    14 struct IntervalTree
    15 {
    16     int sumv[maxnode], minv[maxnode], maxv[maxnode], addv[maxnode];
    17 
    18     //维护信息
    19     void maintain(int o, int L, int R)
    20     {
    21         int lc = o*2, rc = o*2+1;
    22         if(R > L)
    23         {
    24             sumv[o] = sumv[lc] + sumv[rc];
    25             minv[o] = min(minv[lc], minv[rc]);
    26             maxv[o] = max(maxv[lc], maxv[rc]);
    27         }
    28         if(addv[o]) { minv[o] += addv[o]; maxv[o] += addv[o]; sumv[o] += addv[o] * (R-L+1); }
    29     }
    30 
    31     void update(int o, int L, int R)
    32     {
    33         int lc = o*2, rc = o*2+1;
    34         if(qL <= L && R <= qR) addv[o] += v;
    35         else
    36         {
    37             int M = (L + R) / 2;
    38             if(qL <= M) update(lc, L, M);
    39             if(qR > M) update(rc, M+1, R);
    40         }
    41         maintain(o, L, R);
    42     }
    43 
    44     void query(int o, int L, int R, int add)
    45     {
    46         if(qL <= L && R <= qR)
    47         {
    48             _sum += sumv[o] + add * (R-L+1);
    49             _min = min(_min, minv[o] + add);
    50             _max = max(_max, maxv[o] + add);
    51         }
    52         else
    53         {
    54             int M = (L + R) / 2;
    55             if(qL <= M) query(o*2, L, M, add + addv[o]);
    56             if(qR > M) query(o*2+1, M+1, R, add + addv[o]);
    57         }
    58     }
    59 }tree;
    60 
    61 const int INF = 1000000000;
    62 
    63 int main()
    64 {
    65     int n, m;
    66     while(scanf("%d%d", &n, &m) == 2)
    67     {
    68         memset(&tree, 0, sizeof(tree));
    69         while(m--)
    70         {
    71             scanf("%d%d%d", &op, &qL, &qR);
    72             if(op == 1) { scanf("%d", &v); tree.update(1, 1, n); }
    73             else
    74             {
    75                 _sum = 0; _min = INF; _max = -INF;
    76                 tree.query(1, 1, n, 0);
    77                 printf("%d %d %d\n", _sum, _min, _max);
    78             }
    79         }
    80     }
    81 
    82     return 0;
    83 }
    代码君

     

    模板二:

    线段树区间修改set
    1 L R v 表示将区间[L, R]全部赋值为v (v >= 0)
    2 L R   表示查询区间[L, R]的sum, min, max

      1 //线段树区间修改set
      2 // 1 L R v 表示将区间[L, R]全部赋值为v (v >= 0)
      3 // 2 L R   表示查询区间[L, R]的sum, min, max
      4 #include <cstdio>
      5 #include <cstring>
      6 #include <algorithm>
      7 using namespace std;
      8 
      9 const int maxnode = 1 << 17;
     10 
     11 int _sum, _min, _max, op, qL, qR, v;
     12 
     13 struct IntervalTree
     14 {
     15     int sumv[maxnode], minv[maxnode], maxv[maxnode], setv[maxnode];
     16 
     17     //维护信息
     18     void maintain(int o, int L, int R)
     19     {
     20         int lc = o*2, rc = o*2;
     21         if(R > L)
     22         {
     23             sumv[o] = sumv[lc] + sumv[rc];
     24             minv[o] = min(minv[lc], minv[rc]);
     25             maxv[o] = max(maxv[lc], maxv[rc]);
     26         }
     27         if(setv[o] >= 0) { minv[o] = maxv[o] = setv[o]; sumv[o] = (R-L+1) * setv[o]; }
     28     }
     29 
     30     //标记传递
     31     void pushdown(int o, int L, int R)
     32     {
     33         int lc = o*2, rc = o*2+1;
     34         if(setv[o] >= 0)//-1表示没有标记过节点
     35         {
     36             setv[lc] = setv[rc] = setv[o];
     37             setv[o] = -1;//清除本节点的标记
     38         }
     39     }
     40 
     41     void update(int o, int L, int R)
     42     {
     43         int lc = o*2, rc = o*2+1;
     44         if(qL <= L && R <= qR) setv[o] = v;
     45         else
     46         {
     47             pushdown(o, L, R);
     48             int M = (L + R) / 2;
     49             if(qL <= M) update(lc, L, M); else maintain(lc, L, M);
     50             if(qR > M) update(rc, M+1, R); else maintain(rc, M+1, R);
     51         }
     52         maintain(o, L, R);
     53     }
     54 
     55     void query(int o, int L, int R)
     56     {
     57         if(setv[o] >= 0)//递归边界1:有set标记
     58         {
     59             _sum += setv[o] * (min(R, qR) - max(L, qL) + 1);
     60             _min = min(_min, setv[o]);
     61             _max = max(_max, setv[o]);
     62         }
     63         else if(qL <= L && R <= qR)
     64         {//递归边界2:边界区间,此区间没有收到set影响
     65             _sum += sumv[o];
     66             _min = min(_min, minv[o]);
     67             _max = max(_max, maxv[o]);
     68         }
     69         else
     70         {//递归统计
     71             int M = (L + R) / 2;
     72             if(qL <= M) query(o*2, L, M);
     73             if(qR > M) query(o*2+1, M+1, R);
     74         }
     75     }
     76 }tree;
     77 
     78 const int INF = 1000000000;
     79 
     80 int main()
     81 {
     82     int n, m;
     83     while(scanf("%d%d", &n, &m) == 2)
     84     {
     85         memset(&tree, 0, sizeof(tree));
     86         memset(tree.setv, -1, sizeof(tree.setv));
     87         tree.setv[0] = 1;
     88         while(m--)
     89         {
     90             scanf("%d%d%d", &op, &qL, &qR);
     91             if(op == 1) { scanf("%d", &v); tree.update(1, 1, n); }
     92             else
     93             {
     94                 _sum = 0; _min = INF; _max = -INF;
     95                 tree.query(1, 1, n);
     96                 printf("%d %d %d\n", _sum, _min, _max);
     97             }
     98         }
     99     }
    100 
    101     return 0;
    102 }
    代码君

     

    转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4382515.html

    展开全文
  • 第一次弄不定长包,大家不太熟,网络上又众说纷纭,没有一个完整代码可以参考,所以我们走了不少的弯路。 昨天把解压包模块测试一遍,...1、旧图中使用的两个包对象完成一条服务,但是新包一个对象,为什么呢?因
  • 2019保险行业留言语录80句 征服畏惧、建立自信的最快最确实的方法,就是去做你害怕的事,直到你获得成功的经验,下面小编大家整理的20xx保险行业留言语录80句相关模板,接下来我们一起来看看吧! 1、别总觉得...
  • 图书管理系统毕业设计+源码-java

    千次下载 热门讨论 2012-05-06 13:45:09
    单击下一步,出现一个新的对话框选择添加一些控件到窗体中,在这里什么都不选,直接单击下一步,来到的窗体设置生成文件的类型,这里将文件类型设置 EXE file-allows your program to be started directly ...
  • 可见操作系统里面的模式正是美国所使用的模式2,而国内大多数爱好者都是使用欧洲的模式1的,也就是用右手操纵油门,这没有关系的。到 RealFlight G2里面,按等号键,屏幕显示一个遥控器,摇动自己的摇杆,可以看到...
  • LINGO软件的学习

    2009-08-08 22:36:50
    集成员无论用何种字符标记,它的索引都是1开始连续计数。在attribute_ list可以指定一个或多个集成员的属性,属性之间必须用逗号隔开。 可以把集、集成员和集属性同C语言中的结构体作个类比。如下图: 集 ←→ ...
  • 面再提示缺少什么dll 文件,像这样解决就可以了。 二、Qt Creator 编写多窗口程序(原创) 实现功能: 程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直 接关闭这个对话框,便不能进入主窗口,整个程序...
  • excel的使用

    2012-11-25 17:06:01
    Excel也识别按[颜色X]指定的颜色,其中X是1至56之间的数字,代表56种颜色(如图5)。图5(2)添加描述文本 要在输入数字数据之后自动添加文本,使用自定义格式:"文本内容"@;要在输入数字数据之前自动添加文本...
  • 为什么不直接依赖这个体系建设航旅的组件库ÿ1f;原因有二: 1. 这些组件只能在线使用,不能离线(或者说离线成本很高) 2. 线上组件出了问题,bugfix 升级成本很高(因为你...
  • Visual Studio程序员箴言--详细书签版

    热门讨论 2012-10-16 20:37:39
    技巧4.23 为什么要让工具窗口处于浮动状态 88 4.2.4 选项卡式文档状态 89 技巧4.24 使用选项卡式文档最大化工具窗口 89 4.2.5 键盘导航 90 技巧4.25 使用Alt+F7键和Alt+Shift+F7键移到下一个或前一个工具...
  • 阅读工具 开卷有益

    2012-03-31 14:07:03
    1、点上下部分切换全屏显示图片 2、上下左右移动图片 通用操作: 1、点中间切换全屏|非全屏 2、点左上角切换缩放比例,点左右下角旋屏 3、在屏幕左右侧上下滑动实时缩放图片 4、音量键放大缩小图片、上下键切换...
  • 我在《为什么说每个程序员应该有台Mac电脑》一文中提到,Mac 秉承了苹果一贯的高水准体验设计,堪称「完美」的典范。 猫哥从 08 年底开始使用 iMac ,至今从周围的小伙伴身上以及书籍资料中积累...
  • 本什么书,有何特色,内容什么,为什么这么写;写给谁看,怎么看更好。当然我还会加一些自己觉得比较个性化的内容。 5月5日,审阅完编辑老师的第一章反馈,并合并。 5月6日,审阅完第二章的一半。海玲姐两位...
  • 所以为什么我问这个问题 52 00:02:08,200 --> 00:02:10,480 让我们网友要知道这个环节 53 00:02:10,480 --> 00:02:12,560 因为有网友说我这面和的挺软的 54 00:02:12,560 --> 00:02:16,360 怎么一烙出这...
  • 您可以自由弹奏乐曲,也可以将曲谱按规则编辑成文件,再用本软件打开文件,让本程序自动您弹奏,还可以将弹奏过程录制下来,即时回放弹奏过程,或保存录制乐谱文件(.pianoR 文件),再打开此类文件进行播放,...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

为什么拖下来都是1