精华内容
下载资源
问答
  • 本文主要论述了造成光纤衰减的多种原因
  • 本文主要讲了一下引起小信号放大器不稳定的原因,希望对你的学习有所帮助。
  • 引起电池容量不足的原因很多,主要分以下几方面 1)电池出厂后到达用户外来能及时安装使用,造成长期贮存,温度高低对电池的自放电有很大影响,长期贮存势必造成自放电会引起容量的不足。 2)正极板腐蚀,变形引起...
  •  开客厅Led灯跳闸的原因无外乎漏电或短路引起。如果送闸时听到“啪啪”声,证明线路短路,如果听到“扑扑“声,则是漏电引起,但还有一种情况是,灯与插座等不同回路都用了漏电保护器的,而师傅却把两回路零线混搭...
  • 数据倾斜是什么以及造成原因

    万次阅读 多人点赞 2018-07-11 11:06:58
    主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段的,map...

      在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据均匀的分配到各个reduce中,就是解决数据倾斜的根本所在。规避错误来更好的运行比解决错误更高效。在查看了一些资料后,总结如下。

    1数据倾斜的原因

    1.1操作:

    关键词

    情形

    后果

    Join

    其中一个表较小,

    但是key集中

    分发到某一个或几个Reduce上的数据远高于平均值

    大表与大表,但是分桶的判断字段0值或空值过多

    这些空值都由一个reduce处理,灰常慢

    group by

    group by 维度过小,

    某值的数量过多

    处理某值的reduce灰常耗时

    Count Distinct

    某特殊值过多

    处理此特殊值的reduce耗时

    1.2原因:

    1)、key分布不均匀

    2)、业务数据本身的特性

    3)、建表时考虑不周

    4)、某些SQL语句本身就有数据倾斜

     

    1.3表现:

    任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。因为其处理的数据量和其他reduce差异过大。

    单一reduce的记录数与平均记录数差异过大,通常可能达到3倍甚至更多。 最长时长远大于平均时长。

     

    2数据倾斜的解决方案

    2.1参数调节:

    hive.map.aggr=true

    Map 端部分聚合,相当于Combiner

    hive.groupby.skewindata=true

    有数据倾斜的时候进行负载均衡,当选项设定为 true,生成的查询计划会有两个 MR Job。第一个 MR Job 中,Map 的输出结果集合会随机分布到 Reduce 中,每个 Reduce 做部分聚合操作,并输出结果,这样处理的结果是相同的 Group By Key 有可能被分发到不同的 Reduce 中,从而达到负载均衡的目的;第二个 MR Job 再根据预处理的数据结果按照 Group By Key 分布到 Reduce 中(这个过程可以保证相同的 Group By Key 被分布到同一个 Reduce 中),最后完成最终的聚合操作。

     

    2.2 SQL语句调节:

    如何Join:

    关于驱动表的选取,选用join key分布最均匀的表作为驱动表

    做好列裁剪和filter操作,以达到两表做join的时候,数据量相对变小的效果。

    大小表Join:

    使用map join让小的维度表(1000条以下的记录条数) 先进内存。在map端完成reduce.

    大表Join大表:

    把空值的key变成一个字符串加上随机数,把倾斜的数据分到不同的reduce上,由于null值关联不上,处理后并不影响最终结果。

    count distinct大量相同特殊值

    count distinct时,将值为空的情况单独处理,如果是计算count distinct,可以不用处理,直接过滤,在最后结果中加1。如果还有其他计算,需要进行group by,可以先将值为空的记录单独处理,再和其他计算结果进行union。

    group by维度过小:

    采用sum() group by的方式来替换count(distinct)完成计算。

    特殊情况特殊处理:

    在业务逻辑优化效果的不大情况下,有些时候是可以将倾斜的数据单独拿出来处理。最后union回去。

     

    3典型的业务场景

    3.1空值产生的数据倾斜

    场景:如日志中,常会有信息丢失的问题,比如日志中的 user_id,如果取其中的 user_id 和 用户表中的user_id 关联,会碰到数据倾斜的问题。

    解决方法1: user_id为空的不参与关联(红色字体为修改后)

    复制代码
    select * from log a
      join users b
      on a.user_id is not null
      and a.user_id = b.user_id
    union all
    select * from log a
      where a.user_id is null;
    复制代码

     

    解决方法2 :赋与空值分新的key值

    select *
      from log a
      left outer join users b
      on case when a.user_id is null then concat(‘hive’,rand() ) else a.user_id end = b.user_id;

     

    结论:方法2比方法1效率更好,不但io少了,而且作业数也少了。解决方法1中 log读取两次,jobs是2。解决方法2 job数是1 。这个优化适合无效 id (比如 -99 , ’’, null 等) 产生的倾斜问题。把空值的 key 变成一个字符串加上随机数,就能把倾斜的数据分到不同的reduce上 ,解决数据倾斜问题。

     

    3.2不同数据类型关联产生数据倾斜

    场景:用户表中user_id字段为int,log表中user_id字段既有string类型也有int类型。当按照user_id进行两个表的Join操作时,默认的Hash操作会按int型的id来进行分配,这样会导致所有string类型id的记录都分配到一个Reducer中。

    解决方法:把数字类型转换成字符串类型

    select * from users a
      left outer join logs b
      on a.usr_id = cast(b.user_id as string)

     

    3.3小表不小不大,怎么用 map join 解决倾斜问题

    使用 map join 解决小表(记录数少)关联大表的数据倾斜问题,这个方法使用的频率非常高,但如果小表很大,大到map join会出现bug或异常,这时就需要特别的处理。 以下例子:

    select * from log a
      left outer join users b
      on a.user_id = b.user_id;

     

    users 表有 600w+ 的记录,把 users 分发到所有的 map 上也是个不小的开销,而且 map join 不支持这么大的小表。如果用普通的 join,又会碰到数据倾斜的问题。

    解决方法:

    复制代码
    select /*+mapjoin(x)*/* from log a
      left outer join (
        select  /*+mapjoin(c)*/d.*
          from ( select distinct user_id from log ) c
          join users d
          on c.user_id = d.user_id
        ) x
      on a.user_id = b.user_id;
     
    复制代码

    假如,log里user_id有上百万个,这就又回到原来map join问题。所幸,每日的会员uv不会太多,有交易的会员不会太多,有点击的会员不会太多,有佣金的会员不会太多等等。所以这个方法能解决很多场景下的数据倾斜问题。

    4总结

    使map的输出数据更均匀的分布到reduce中去,是我们的最终目标。由于Hash算法的局限性,按key Hash会或多或少的造成数据倾斜。大量经验表明数据倾斜的原因是人为的建表疏忽或业务逻辑可以规避的。在此给出较为通用的步骤:

    1、采样log表,哪些user_id比较倾斜,得到一个结果表tmp1。由于对计算框架来说,所有的数据过来,他都是不知道数据分布情况的,所以采样是并不可少的。

    2、数据的分布符合社会学统计规则,贫富不均。倾斜的key不会太多,就像一个社会的富人不多,奇特的人不多一样。所以tmp1记录数会很少。把tmp1和users做map join生成tmp2,把tmp2读到distribute file cache。这是一个map过程。

    3、map读入users和log,假如记录来自log,则检查user_id是否在tmp2里,如果是,输出到本地文件a,否则生成<user_id,value>的key,value对,假如记录来自member,生成<user_id,value>的key,value对,进入reduce阶段。

    4、最终把a文件,把Stage3 reduce阶段输出的文件合并起写到hdfs。

     

    如果确认业务需要这样倾斜的逻辑,考虑以下的优化方案:

    1、对于join,在判断小表不大于1G的情况下,使用map join

    2、对于group by或distinct,设定 hive.groupby.skewindata=true

    3、尽量使用上述的SQL语句调节进行优化


    转自 http://www.tbdata.org/archives/2109

    展开全文
  • 导致汽车电子故障的主要原因有以下几种: 私自加装电器引起线路故障: 现在许多私家车都喜欢在车上加装一些电子设置,像车用防盗器、音响等,由于施工技术不专业,会造成线路接错,或者令原有线路负荷加大,导致线路...
  • 怎么样判断单片机复位是什么原因造成的(断电复位、看门狗复位等) 看门狗、电源复位等,这些源均作用于 NRST 引脚,该引脚在复位过程中始终保持低电平。 就是说这些复位源造成的复位均使得CRS寄存器位26置1 。 ...
    怎么样判断单片机复位是什么原因造成的(断电复位、看门狗复位等)
    看门狗、电源复位等,这些源均作用于 NRST 引脚,该引脚在复位过程中始终保持低电平。
    就是说这些复位源造成的复位均使得CRS寄存器位26置1 。
    STM32F429IGT6-   RCC->CSR
    if((RCC -> CSR) & (1 << 29))//独立看门狗
    {
        LED1 = 0;
        RCC -> CSR |= 1 << 24;//标志位清零
    }
    else LED1 = 1;

     

    展开全文
  • 造成狗狗咳嗽的原因有很多,呼吸道感染、肺部感染、病毒感染这些就属于比较严重的情况,需要及时治疗。接下来,威洛特将会和大家详细阐述狗狗咳嗽的原因。  一、呼吸道感染  狗狗如果出现咳嗽的情况,通常...

      家里的狗狗如果经常咳嗽,那主人就要格外注意了。造成狗狗咳嗽的原因有很多,呼吸道感染、肺部感染、病毒感染这些就属于比较严重的情况,需要及时治疗。接下来,威洛特将会和大家详细阐述狗狗咳嗽的原因。

     

      一、呼吸道感染

      狗狗如果出现咳嗽的情况,通常都是因为呼吸道方面有问题。呼吸道感染最直观的表现就是狗狗不停地咳嗽,这一般都是狗狗的气管、咽喉等地方出现了炎症,就是我们比较常见的支气管炎、咽炎等病症。这种病症一般还伴有鼻塞、流涕、气喘等症状。

      二、肺部感染

      肺部和狗狗的呼吸是直接相关的,所以肺部感染也会直接导致狗狗咳嗽。肺部感染一般表现为肺水肿和肺结核的病症,这种情况一般都需要去医院治疗。狗狗肺炎的症状分为小叶肺炎和大叶肺炎,前者初期表现为流涕、咳嗽,后期则会出现体温升高、食欲废绝、呼吸困难等症状;后者就比较严重,主要表现为心跳加快、高热、流褐色鼻涕等症状。

     

      三、病毒感染

      狗狗是一种比较容易感染病毒的动物,而且很多的病毒对狗狗来说都是致命的。细菌感染或是寄生虫感染都会直接导致狗狗咳嗽不断,而且这种情况很容易衍生为较为严重的病症,必须高度重视。如果狗狗病毒感染得不到及时治疗,不仅会持续咳嗽,还可能影响到心脏,甚至导致狗狗死亡。

      四、其他原因

      导致狗狗咳嗽的原因还有很多,例如兴奋过度导致气管挤压而发出咳嗽声,或是在剧烈运动之后,心肺功能较差的狗狗无法快速地将体内产生的二氧化碳排出体内也会导致咳嗽,或是进食过快、异物卡住喉咙,狗狗因为喉咙不舒服也会咳嗽,等等。

     

    总的来说,造成狗狗咳嗽的原因有很多,主人要细心观察,及时找出原因,及时治疗,如果狗狗咳嗽严重,一定要去医院治疗。

    展开全文
  • 造成内存泄露的几种原因 C++

    万次阅读 多人点赞 2018-01-29 13:35:18
    造成野指针的原因: 指针变量没有被初始化(如果值不定,可以初始化为 NULL ) 指针被 free 或者 delete 后,没有置为 NULL, free 和 delete 只是把指针所指向的内存给释放掉,并没有把指针本身干掉,此时...

    先考虑一种情况,对一个已知对象进行拷贝,编译系统会自动调用一种构造函数——拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数

    复制代码
    //main.cpp
    
    #include <iostream>
    #include "student.h"
    int main()
    {
             Student s1;
             Student s2(s1);//Student s2 = s1;//复制对象
    
             return 0;
    }
    复制代码
    复制代码
    //student.h
    
    #ifndef STUDENT_H
    #define STUDENT_H
    class Student
    {
             private:
                   int num;
                   char *name;
             public:
                    Student();
                    ~Student();
    };
    
    #endif
    复制代码
    复制代码
    //student.cpp
    
    #include "student.h"
    #include <iostream>
    using namespace std;
    
    Student::Student()
    {
           name = new char(20);
           cout << "Student" << endl;
    
    }
    Student::~Student()
    {
            cout << "~Student " << (int)name << endl;
            delete name;
            name = NULL;
    }
    复制代码

    执行结果:调用一次构造函数,调用两次析构函数,两个对象的指针成员所指内存相同,这会导致什么问题呢?

     

    name指针被分配一次内存,但是程序结束时该内存却被释放了两次,会造成内存泄漏问题!

    这是由于编译系统在我们没有自己定义拷贝构造函数时,会在拷贝对象时调用默认拷贝构造函数,进行的是浅拷贝!即对指针name拷贝后会出现两个指针指向同一个内存空间。

     

    所以,在对含有指针成员的对象进行拷贝时,必须要自己定义拷贝构造函数,使拷贝后的对象指针成员有自己的内存空间,即进行深拷贝,这样就避免了内存泄漏发生。

     自己定义拷贝构造函数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //student.h
     
    #ifndef STUDENT_H
    #define STUDENT_H
    class  Student
    {
            private :
                  int  num;
                  char  *name;
           public :
                   Student(); //构造函数
                    ~Student(); //析构函数
                    Student( const  Student &s); //拷贝构造函数,const防止对象被改变
    };
     
    #endif

      

    复制代码
    //student.cpp
    
    #include "student.h"
    #include <iostream>
    #include <string.h>
    using namespace std;
    
    Student::Student()
    {
          name = new char(20);
          cout << "Student " << endl;
    }
    
    Student::~Student()
    {
             cout << "~Student " << (int)name << endl;
             delete name;
             name = NULL;
    }
    
    Student::Student(const Student &s)
    {
             name = new char(20);
             memcpy(name, s.name, strlen(s.name));
             cout << "copy Student " << endl;
    }
    复制代码

    执行结果:调用一次构造函数,一次自定义拷贝构造函数,两次析构函数。两个对象的指针成员所指内存不同。

     

    总结:浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。

    再说几句:

    当对象中存在指针成员时,除了在复制对象时需要考虑自定义拷贝构造函数,还应该考虑以下两种情形:

    1.当函数的参数为对象时,实参传递给形参的实际上是实参的一个拷贝对象,系统自动通过拷贝构造函数实现;

    2.当函数的返回值为一个对象时,该对象实际上是函数内对象的一个拷贝,用于返回函数调用处。

     




    1. 在类的构造函数和析构函数中没有匹配的调用newdelete函数

    两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存;二是在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存

    2. 没有正确地清除嵌套的对象指针

    3. 在释放对象数组时在delete中没有使用方括号

    方括号是告诉编译器这个指针指向的是一个对象数组,同时也告诉编译器正确的对象地址值并调用对象的析构函数,如果没有方括号,那么这个指针就被默认为只指向一个对象,对象数组中的其他对象的析构函数就不会被调用,结果造成了内存泄露。如果在方括号中间放了一个比对象数组大小还大的数字,那么编译器就会调用无效对象(内存溢出)的析构函数,会造成堆的奔溃。如果方括号中间的数字值比对象数组的大小小的话,编译器就不能调用足够多个析构函数,结果会造成内存泄露。

    释放单个对象、单个基本数据类型的变量或者是基本数据类型的数组不需要大小参数,释放定义了析构函数的对象数组才需要大小参数

    4. 指向对象的指针数组不等同于对象数组

    对象数组是指:数组中存放的是对象,只需要delete []p,即可调用对象数组中的每个对象的析构函数释放空间

    指向对象的指针数组是指:数组中存放的是指向对象的指针,不仅要释放每个对象的空间,还要释放每个指针的空间,delete []p只是释放了每个指针,但是并没有释放对象的空间,正确的做法,是通过一个循环,将每个对象释放了,然后再把指针释放了。

    5. 缺少拷贝构造函数

    两次释放相同的内存是一种错误的做法,同时可能会造成堆的奔溃。

    按值传递会调用(拷贝)构造函数,引用传递不会调用

    C++中,如果没有定义拷贝构造函数,那么编译器就会调用默认的拷贝构造函数,会逐个成员拷贝的方式来复制数据成员,如果是以逐个成员拷贝的方式来复制指针被定义为将一个变量的地址赋给另一个变量。这种隐式的指针复制结果就是两个对象拥有指向同一个动态分配的内存空间的指针。当释放第一个对象的时候,它的析构函数就会释放与该对象有关的动态分配的内存空间。而释放第二个对象的时候,它的析构函数会释放相同的内存,这样是错误的。

    所以,如果一个类里面有指针成员变量,要么必须显示的写拷贝构造函数和重载赋值运算符,要么禁用拷贝构造函数和重载赋值运算符

     C++中构造函数,拷贝构造函数和赋值函数的区别和实现参见:http://www.cnblogs.com/liushui-sky/p/7728902.html

    6. 缺少重载赋值运算符

    这种问题跟上述问题类似,也是逐个成员拷贝的方式复制对象,如果这个类的大小是可变的,那么结果就是造成内存泄露,如下图:

     

    7. 关于nonmodifying运算符重载的常见迷思

    a. 返回栈上对象的引用或者指针(也即返回局部对象的引用或者指针)。导致最后返回的是一个空引用或者空指针,因此变成野指针

    b. 返回内部静态对象的引用。

    c. 返回一个泄露内存的动态分配的对象。导致内存泄露,并且无法回收

    解决这一类问题的办法是重载运算符函数的返回值不是类型的引用,二应该是类型的返回值,即不是 int&而是int

    8. 没有将基类的析构函数定义为虚函数

    当基类指针指向子类对象时,如果基类的析构函数不是virtual,那么子类的析构函数将不会被调用,子类的资源没有正确是释放,因此造成内存泄露

     

    野指针:指向被释放的或者访问受限内存的指针。

    造成野指针的原因:

    1. 指针变量没有被初始化(如果值不定,可以初始化为NULL
    2. 指针被free或者delete后,没有置为NULL, freedelete只是把指针所指向的内存给释放掉,并没有把指针本身干掉,此时指针指向的是“垃圾”内存。释放后的指针应该被置为NULL.
    3. 指针操作超越了变量的作用范围,比如返回指向栈内存的指针就是野指针。
    展开全文
  • 二:常见的内存泄露造成原因 1、单例造成的内存泄漏 由于单例的静态特性使得其生命周期和应用的生命周期一样长,如果一个对象已经不再需要使用了,而单例对象还持有该对象的引用,就会使得该对象不能被正常回收...
  • 引起Java序列化失败的常见原因

    千次阅读 2019-06-28 14:57:01
    Created by Wang, Jerry, last modified on Jan 04, 2016
  • 引起进程调度的原因有以下几类

    千次阅读 2019-11-08 16:11:57
    http://baike.baidu.com/view/1380355.htm?fr=aladdin 引起进程调度的原因有以下几类 进程调度发生在什么时机呢?这与引起进程调度的原因以及进程调度的方式有关...
  • 贴片电容造成短路烧毁的原因分析

    千次阅读 2020-03-14 11:11:24
    一、开裂是指电容器上出现裂痕导致产品无法正常工作这种现象一般是为低阻造成原因有 1.PCB受外力后断路居多。   2.非电容本体受了外力也会导至MLCC电容失效,一般是短路或低阻,但此类现象在预留足够余量的情况下...
  • 造成跨域的原因

    千次阅读 2018-07-26 14:58:39
    协议、端口、和域名有任意一个不同就会造成跨域。 http://www.baidu.com/src/home/index.html  请求地址  形式  结果  http://www.baidu.com/test/a.html 同一域名,不同文件夹  成功  ...
  • 二:常见造成oom的原因 1.内存泄露造成 2.加载的文件或者图片过大造成 三:解决方案 内存泄露是造成内存溢出的一个原因,所以避免内存泄露的那些方法都适用于内存溢出 比如及时回收无用的引用对想,资源回收等… ...
  • 一般造成Linux系统死机的原因

    千次阅读 2017-05-19 15:30:00
    一般造成Linux系统死机的原因有: 系统硬件问题(SCSI卡,主板,RAID卡,HBA卡,网卡,硬盘等) 外围硬件问题(网络等) 软件问题(系统吧、应用软件) 驱动bug(找新的驱动) 核心系统bug(到LKML看看,或更换核心...
  • APP在使用中出现崩溃、闪退的情况,是什么原因引起的 一.常见的原因 1.缓存垃圾过多 由于安卓系统的特性,长时间不清理缓存,会导致越来越卡,也会出现闪退的情况 2.运行的程序过多,引起的内存不足现象 由于部分...
  • STM32引起电源和系统异常复位的原因

    千次阅读 2020-03-18 22:30:09
    关注、星标公众号,不错过精彩内容来源:STM32每一块处理器都有复位的功能,不同处理器复位的类型可能有差异,引起复位的原因也可能有多种。今天是第3篇分享...
  • 造成服务器死机的原因是什么?

    千次阅读 2019-02-19 16:29:08
    服务器打不开,内存耗尽处于死机状态,这是怎么回事,什么引起的?要怎么解决?看完这篇文章。  问题:  服务器内存耗尽死机;  系统文件缓存耗费物理RAM;  一直对磁盘有大量的缓存读取请求。  原因是什么? ...
  • 光纤传输损耗的产生原因是多方面的,在光纤通信网络的建设和维护中,最值得关注的是光纤使用中引起传输损耗的原因以及如何减少这些损耗。光纤使用中引起的传输损耗主要有接续损耗(光纤的固有损耗、熔接损耗和活动...
  • Android中造成APP闪退的原因总结

    万次阅读 2019-04-02 22:33:35
    1. 网络异常引起的 2. APP中访问网络的地方,组件中的ImageView没有正常的下载并显示到app 页面上。 3.APP的sdk和手机的系统不兼容。 4.拍照/选择图片后闪退:①手机内存小②部分手机在使用相机拍照时候存在横竖屏...
  • 网络拥塞造成监控数据丢包的原因

    千次阅读 2018-09-04 16:47:40
    在网管员发现广域网线路时通时断,发生这种情况时,有可能是线路出现故障,也可能是用户方面的原因,也有网络拥堵造成的,下面分析下网络拥堵造成丢包的原因。 (监控) 网络拥塞造成丢包率上升的原因很多,主要...
  • C++造成内存泄漏的原因汇总:

    万次阅读 多人点赞 2017-12-26 15:19:30
    从执行结果看到,并没有执行b指针(void*)所指对象的析构函数,所以delete一个void*的指针可能会造成内存上的泄露! 三、new创建了一组对象数组,内存回收的时候却只调用了delete而非delete []来处理,导致只有...
  • Java造成空指针异常的原因

    千次阅读 2020-05-29 11:24:13
    即当一个变量值为null时,在Java中表示一个不存在的空对象,没有赋值,没有分配内存,此时你调用该对象的方法或变量时,就会引起空指针异常,所以调用前要先对对象进行初始化操作。 二、空指针异常的可能原因有哪些...
  • 导致汽车电子故障的主要原因有以下几种: 私自加装电器引起线路故障: 现在许多私家车都喜欢在车上加装一些电子设置,像车用防盗器、音响等,由于施工技术不,会造成线路接错,或者令原有线路负荷加大,导致线路短路...
  • 这个时候就会造成边框塌陷。 如图所示: 如果取消第4个div的右浮动,那么就不会造成边框塌陷:如图所示:   为什么会发生边框塌陷? 是因为我没有给大div设置高度,那么大(父)div的高度是由这四个小(子)...
  • 事实上,很多情况下卡顿不是必现的,它们可能与机型、环境、操作等有关,存在偶然性,即使发生了,再去查那如山般的logcat,也不一定能找到卡顿的原因,是我们自己的应用导致的还是其他应用抢占资源导致的?...
  • 1、造成项目进度拖延的原因有哪些? 编制的项目进度计划不切实际; 人为因素的不利影响; 设计变更因素的影响; 资金、设备的准备等原因的影响; 不可预见的政治、经济等项目外部环境等因素的影响。 在这些引起...
  • 造成死锁的原因有如下几条(需同时满足条件): 1、互斥条件:任务使用的资源中至少有一个是不能共享的,资源的使用和释放方法都使用了synchronized关键字修饰 2、至少有一个任务它必须持有一个资源并且这个任务...
  •  一般App闪退是由于以下几个原因造成的.  1.缓存垃圾过多  由于安卓系统的特性,如果长时间不清理垃圾文件.会导致越来越卡.也会出现闪退情况.  2. 运行的程序过多,导致内存不足  3.应用版本兼容问题  如果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,088,954
精华内容 435,581
关键字:

原因造成的吗