精华内容
下载资源
问答
  • 这个问题的答案静态变量和全局变量都可能引起线程安全问题。这两种变量引起线程安全问题的原因和区别如下:1、静态变量静态变量即静态成员变量。只要有修改变量值的操作,无论在单例或者非单例都线程不安全的...

    这个问题的答案是静态变量和全局变量都可能引起线程安全问题。这两种变量引起线程安全问题的原因和区别如下:

    1、静态变量

    静态变量即静态成员变量。只要有修改变量值的操作,无论是在单例或者非单例都是线程不安全的;而如果线程只是读取变量的值,而不会改变变量的值,这种情况下则是线程是安全的。

    产生线程安全问题的原因:静态变量即类变量,只初始化一次,位于方法区,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象均对修改可见,故线程非安全。

    静态变量多线程操作示例:

    56b5ab253ae8e4bb14f706fb85bf8bde.png

    根据上图代码可知,当线程1执行了number = 1; number = 2; 后,线程2获得执行权,number = 1;然后当线程1获得执行权执行打印第二次获取number时; 必然输出结果“获取第二次number = 1”,按照这个模拟,我们可能会在控制台看到输出为“获取第二次number = 1”的结果。如下图方框中的数据:

    688d61e94ac2fe449c9ce7cb64d1caa9.png

    上图结果显示了静态变量线程不安全问题。

    2、全局变量

    全局变量即实例成员变量。如果线程只是读取变量的值,而不会改变变量的值,则无论是单例还是非单例都是线程安全的;如果有修改变量值的操作,则单例模式因为只有一个对象实例singleton存在,多线程同时操作时是不安全的,而非单例模式下多线程操作是安全的。

    实例变量为对象实例私有,在虚拟机的堆heap中分配,若在系统中只存在一个此对象的实例,在多线程环境下,“犹如”静态变量那样,被某个线程修改后,其他线程对修改均可见,故线程非安全(如,springmvc controller是单例的,非线程安全的);如果每个线程执行都是在不同的对象中,那对象与对象之间的实例变量的修改将互不影响,故线程安全(如,struts2 action默认是非单例的,每次请求在heap中new新的action实例,故struts2 action可以用实例成员变量)。

    全局变量多线程操作示例:

    5dbcc5813c8e98ae10da5f29ae9a3e8f.png

    多线程操作同一个对象的全局变量,结果如下图:

    58389c24f4bfd39f63ffcac3ff285de9.png

    上图结果显示了全局变量线程不安全问题。

    展开全文
  • 数据离散化是指将连续的数据进行分段,使其变为一段段离散化的区间。分段的原则有基于等距离、等频率或优化的方法。数据离散化的原因主要有以下几点: 算法需要 比如决策树、朴素贝叶斯等算法,都是基于离散型的...

    一、离散化原因
    数据离散化是指将连续的数据进行分段,使其变为一段段离散化的区间。分段的原则有基于等距离、等频率或优化的方法。数据离散化的原因主要有以下几点:

    • 算法需要
      比如决策树、朴素贝叶斯等算法,都是基于离散型的数据展开的。如果要使用该类算法,必须将离散型的数据进行。有效的离散化能减小算法的时间和空间开销,提高系统对样本的分类聚类能力和抗噪声能力。
    • 离散化的特征相对于连续型特征更易理解,更接近知识层面的表达
      比如工资收入,月薪2000和月薪20000,从连续型特征来看高低薪的差异还要通过数值层面才能理解,但将其转换为离散型数据(底薪、高薪),则可以更加直观的表达出了我们心中所想的高薪和底薪。
    • 可以有效的克服数据中隐藏的缺陷,使模型结果更加稳定

    二、离散化的优势
    在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点:

    • 离散特征的增加和减少都很容易,易于模型的快速迭代;
    • 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
    • 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
    • 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;
    • 离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
    • 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;
    • 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

    三、离散化的方法
    1、无监督学习方法

    • 1.1等宽法

    等宽法即是将属性值分为具有相同宽度的区间,区间的个数k根据实际情况来决定。比如属性值在[0,60]之间,最小值为0,最大值为60,我们要将其分为3等分,则区间被划分为[0,20] 、[21,40] 、[41,60],每个属性值对应属于它的那个区间
      缺点是对离群点比较敏感,不均匀地分布数据。

    • 1.2等频法

    将相同数量的记录放进每个区间。

    缺点是可能将相同的数据分到不同的区间。

    • 1.3基于聚类的方法
      基于聚类的方法分为两个步骤,即:
      选定聚类算法将其进行聚类
      将在同一个簇内的属性值做为统一标记。
      注:基于聚类的方法,簇的个数要根据聚类算法的实际情况来决定,比如对于k-means算法,簇的个数可以自己决定,但对于DBSCAN,则是算法找寻簇的个数。

    2、有监督学习方法:

    • 1R方法
    • 基于信息熵的方法
    • 基于卡方的方法

    四、总结
    模型是使用离散特征还是连续特征,其实是一个“海量离散特征+简单模型” 同 “少量连续特征+复杂模型”的权衡。既可以离散化用线性模型,也可以用连续特征加深度学习。就看是喜欢折腾特征还是折腾模型了。通常来说,前者容易,而且可以n个人一起并行做,有成功经验;后者目前看很赞,能走多远还须拭目以待。

    大多数人都以为是才智成就了科学家,他们错了,是品格。—爱因斯坦

    展开全文
  • 基本概念:自变量和协变量

    万次阅读 2017-12-04 21:22:15
    变量是指研究者主动操纵,而引起因变量发生变化的因素或条件,因此自变量被看作是因变量的原因。 协变量:在实验的设计中,协变量是一个独立变量(解释变量),不为实验者所操纵,但仍影响响应。同时,它指与因变量有...
    自变量是指研究者主动操纵,而引起因变量发生变化的因素或条件,因此自变量被看作是因变量的原因。
    协变量:在实验的设计中,协变量是一个独立变量(解释变量),不为实验者所操纵,但仍影响响应。同时,它指与因变量有线性相关并在探讨自变量与因变量关系时通过统计技术加以控制 的变量。常用的协变量包括因变量的前测分数、人口统计学指标以及与因变量明显不同的个人特征等。

    那协变量和控制变量有什么区别呢?
    协变量应该属于控制变量的一种。有些控制变量可以通过实验操作加以控制(如照明、室温等),也称为无关变量;而另一些控制变量由于受实验设计等因素的限制,只能借助统计技术来加以控制,即成了统计分析中的协变量,因而属于统计概念。
    ------------------------------------
    在用SPSS做处理时看到它让输因子,协变量。因子就是输自变量的地方!
    展开全文
  • 环境变量

    2020-01-04 12:16:30
    环境变量是什么? 环境变量一般的是在操作系统中用来指定操作系统运行环境的一些参数的变量。 例:我们在编写C/C++代码时,需要链接动态/静态库,但是我们不知道这些库在哪,也可以链接成功,生成可执行程序,...

     

    环境变量是什么?

    环境变量一般指的是在操作系统中用来指定操作系统运行环境的一些参数的变量。

    :我们在编写C/C++代码时,需要链接动态/静态库,但是我们不知道这些库在哪,也可以链接成功,生成可执行程序,原因就是有相关的环境变量帮助编译器进行查找。

    环境变量通常具有某些特殊用途,在系统通常具有全局特性。

    常见的环境变量有哪些?

    PATH 指定命令的搜索路径(去路径目录中搜索可执行程序)
    HOME 指定用户的主工作目录(即用户登录到 Linux 系统中时,默认的目录)
    SHELL 当前的Shell,它的值通常是/bin/bash

    查看环境变量的方法

    echo $NAME
    

    //NAME:指的是你的环境变量名称

    和环境变量相关的指令

    echo 显示某个环境变量值
    export 设置一个新的环境变量

    env

    显示所有的环境变量
    unset 清除环境变量
    set 显示本地定义的shell变量和环境变量

     

    环境变量的组织方式

    每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以‘\0’结尾的环境字符串。

    (图有点丑,不要介意,hhhh)

    如何通过代码获取环境变量?

    两个方法:

    1、通过命令行第三个参数

    #include <stdio.h>
    
    int main(int argc,char *argv[],char *env[])
    {
       int i = 0;
       for(; env[i]; ++i)
       {
          printf("%s\n",env[i]);
       }
          return 0;
     }        

    for 循环中循环条件evn[i]表示:env[i] != NULL;

    2、通过第三方变量environ
    #include <stdio.h>
    
     int main(int argc,char *argv[])
     {
        extern char **environ;
        int i = 0;
        for(; environ[i]; ++i)
        {
           printf("%s\n",environ[i]);
        }
        return 0;                                                                                                                                                                                       
     }                                                                                                                                  

    通过这两个代码得到的结果一致。

    ⚠️:libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时 要用extern来声明。

    如何通过系统调用来获取环境变量?

    常用getenv和putenv函数来访问特定的环境变量。

    拿getenv来举例:

     #include <stdio.h>
     #include <stdlib.h>                                                                                                                                                                                  
    
     int main()
     {
        printf("%s\n",getenv("PATH"));
        return 0;
     }
    

    结果如下: 

    /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/LXY/.local/bin:/home/LXY/bin:hello:./hello

    环境变量的全局性质

    #include <stdio.h>
    #include <stdlib.h>
    
     int main()
     {
        char * env = getenv("MYENV");
        if(env)
        {
           printf("%s\n",env);
        }
           return 0;                                                                                                                                                                                        
      }
    

    通过代码直接查看,发现没有结果,说明该环境变量根本不存在。

    但是!!!!

    输入指令:

    export MYENV="hello world"

    导出环境变量之后,再次运行程序,发现有结果了!

    说明:环境变量是可以被子进程继承下去,环境变量具有全局性。

     

    展开全文
  • 大自然原本没有自变量与因变量的划分,只是人类为了研究的方便发明了自变量与因变量这两个词。自变量是指研究者主动操纵,而引起因变量发生变化的因素或条件,因此自变量被看作是因变量的原因。在函数...
  • (如下图)从字面上我们就可以看出来,用户环境变量,单单我们当前用户的,而系统环境变量我们当前这个系统下的所有用户。一般情况下我们在系统变量中直接配置更加方便。(打开的路径:我的电脑-属性-...
  • Global variables(全局变量) 是指可以全局访问的变量, Java不支持全局变量原因如下: 1. 全局变量破坏了引用的透明性。 2. 全局变量制造了命名空间(包访问权限)冲突。 可以使用properties类将想要全局有效的...
  • 变量覆盖漏洞

    2018-01-29 11:06:45
    变量覆盖用我们自定义的参数值去替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击 变量覆盖产生原因大多由函数使用不当导致的 2、常见的变量覆盖的函数 1.extract() ...
  • 文章目录简介本地变量的生命周期...本地变量指定义在方法中的变量,如果我们在方法中定义了一个变量,那么这个变量的生命周期怎么样的呢? 举个例子: public void test(){ Object object = new Object(); d
  • 当某个线程持有这把锁的时候(就是所谓的加锁),那么这个线程独占所有的资源,这里的资源执行的权限,其他要抢夺资源的线程都不得不等待。在很多情况下,这都容易适用,但是有些情况下,却会产生一些异常情况...
  • 今天给大家分享一些机器学习小知识目录离散化离散型变量的编码方式——one-hot与哑变量(dummy variable)特征归一化的好处pandas 之切割 cut 与 qcut 功能与区别交叉验证离散化原因数据离散化是指将连续的数据进行...
  • Linux环境变量

    2019-08-27 20:11:19
    环境变量一般是指在操作系统中来指定操作系统运行环境的一些参数,如我们编写c/c++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关...
  • slice的底层数组,一片连续的内存,slice变量只是存储该slice在底层数组的起始位置、结束位置以及容量。它的长度可以通过起始位置和结束位置算出来,容量也可以通过起点位置到底层数组的末端位置的长度算出来,多...
  • 环境变量详解

    2019-08-10 18:37:52
    环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 。 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,...
  • 从开始接触Java,之后是断断续续的学习。真正开始Java之旅,估计大部分初学者在学Java时被Java的环境变量搞的晕头转向,虽然找到了正确设置环境变量的方式,但其中的原因一知半解,设置压根不知道是何...作用是指...
  • Linux:理解环境变量

    2020-06-10 22:41:08
    环境变量(environment variables)一般是指在操作系统中用来配置操作系统运行环境参数的变量 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可...
  • Linux_环境变量

    2018-03-19 01:02:38
    环境变量一般是指在操作系统用来指定操作系统运行环境的一些参数,环境变量是在操作系统中具有一个特定名字的对象,它包含了一个或多个应用程序所将要使用到的信息. 比如当我们编写c代码,在链接的时候。从来不知道...
  • Linux中环境变量详解

    2020-08-08 20:56:58
    环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数; 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但 是照样可以链接成功,...
  • 【Linux】环境变量

    2019-01-13 20:03:45
    环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但 是照样可以链接成功,...
  • Win10系统配置了jdk环境变量javac还是不能运行是怎么回事?Win10系统配置了jdk环境变量...访问:Win10系统配置了jdk环境变量javac不能运行的原因和解决方法:环境变量(environment variables)一般是指在操作系统中用...
  • 环境变量可以看成是计算机的全局变量,windows下面的环境变量有系统级变量和用户级变量,系统级变量是指所有用户都可使用,不管你用哪个用户登录,这些变量都可以访问,用户级变量则是针对特定用户设置的变量,其他...
  • java中的变量

    2020-12-30 22:41:58
    基本类型是指不能再分解的数据类型,其数据在函数的调用中是以传值方式工作的。简单数据类型代表单值,而不是复杂的对象Java是完全面向对象的,但简单数据类型却不是,它们类似于其他大多数非面向对象语言中的简单...
  •  环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。 如:我们在编写C/C++代码时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是...
  • 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 851
精华内容 340
关键字:

原因变量是指