精华内容
下载资源
问答
  • 如何找出重名的全局变量

    千次阅读 2012-12-20 15:54:13
    如果代码很复杂,可能会出现不同模块使用名字相同的全局变量如何发现 这样的重复定义?  ld 有 --warn-common 可用。 如果用gcc做连接, 用 -wl,--warn-common。 这 是例子。  a1.c: #include #include ...
    如果代码很复杂,可能会出现不同模块使用名字相同的全局变量, 如何发现
    这样的重复定义? 
    ld 有 --warn-common 可用。 如果用gcc做连接, 用 -wl,--warn-common。 这

    是例子。 

    a1.c:

    #include <stdio.h>
    #include <stdlib.h>
    
    int g_this_symbol;
    void foo(void);
    int
    main (int argc, char **argv)
    {
            g_this_symbol = 99;
            foo();
            exit(0);
    }

    b1.c:

    #include <stdio.h>
    #include <stdlib.h>
    
    /*extern*/ int g_this_symbol;
    
    void foo(void)
    {
            printf("the value is %d\n", g_this_symbol);
    }
    


    如果b1.c不声明g_this_symbol 为extern, 连接的时候会报警:

    gcc -Wall -g -O0   -c -o b1.o b1.c
    gcc -Wl,--warn-common -o a1  a1.o  b1.o 
    b1.o: warning: multiple common of `g_this_symbol'
    a1.o: warning: previous common is here


    正确用法是在一个文件中声明一个全局变量,其它文件如果要引用到该全局变量,应该添加 extern 描述。


    另外,说一下common variables 的概念。 如果在C文件里, 变量申明在所有函数体的外面, 即没有static 也没有 extern 限定符, 也没有初始化;或是在汇编文件里,有.comm 或 .lcomm 修饰的变量,在编译成模块的时候,它们会放在一个叫做COMMON 的段里, 最后由连接器决定最终它们放在哪个段里。 

    展开全文
  • SQL开发的过程中,如果不使用绑定变量,会对数据库性能造成非常严重的影响请看如下示例代码: begin for i in 1..1000 loop execute immediate 'insert int...
    SQL开发的过程中,如果不使用绑定变量,会对数据库性能造成非常严重的影响请看如下示例代码:

      begin
      for i in 1..1000 loop
      execute immediate 'insert into test values('||i||')';
      end loop;
      commit;
       end;
      /
    该过程执行1000次,会解析1000次,我们知道每次SQL解析大概会占用一条SQL语句执行时间的70%左右,而且过多的硬解析会在SHARED POOL 中产生很多碎片,导致ORA-04031错误,那么如何判断应用程序中是否使用了绑定变量呢?我们可以通过V$SQLAREA视图来查看应用程序中是否使用了绑定变量,下面简单举个例子:

    SQL> create table test(id number );

    Table created.
    SQL>  begin
      for i in 1..1000 loop
      execute immediate 'insert into test values('||i||')';
      end loop;
      commit;
       end;
      /
    PL/SQL procedure successfully completed.
    SQL> select substr(sql_text,1,20), count(*)
              from v$sqlarea
             group by substr(sql_text,1,20) having count(*) > 50;  


    SUBSTR(SQL_TEXT,1,20)             COUNT(*)
    -----------------------------            ---------------


    insert into test val                       1000


    可以看到insert into test.......这条语句竟然在shared pool里面解析了1000次,通过如下查询

    select sql_text from v$sqlarea where sql_text like 'insert into test %';找出具体的sql代码,然后与开发人员商量,更改SQL代码。

    上面只是一个简单的实例,具体要怎么查看你的应用是否使用了绑定变量,只需要简单修改

    select substr(sql_text,1,20), count(*)
              from v$sqlarea
             group by substr(sql_text,1,20) having count(*) > 50; 

    可以将substr(sql_text,1,20) 改为substr(sql_text,1,30)等等,可以 having count(*) > 10,20,100等等。



    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31448824/viewspace-2136625/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/31448824/viewspace-2136625/

    展开全文
  • 最近在整理项目代码中key-value中...但是我还是觉使用define的方式不够“面向对象”(强行理由),另外每次定义一个key,还要专门写两遍一模一样的字符串,因此就在思考,怎么样在OC的代码中直接通过变量获取到这...

    最近在整理项目代码中key-value中的key,原来的老的代码处理的比较简单,直接使用

    #define kFirstSplash @"kFirstSplash"
    

    虽然目前这样的字符串define已经都整理到了一个文件中,但是我还是觉使用define的方式不够“面向对象”(强行找理由),另外每次定义一个key,还要专门写两遍一模一样的字符串,因此就在思考,怎么样在OC的代码中直接通过变量获取到这个变量的变量名。比如设置一个AHDatabase的类

    @property (nonatomic,strong) NSString* kFirstSplash
    

    我只要这样定义了,那么就可以通过[[AHDatabase alloc] init].kFirstSplash 获得字符串@“kFirstSplash”,其余的啥也不用做。然而始终无法解决这个问题。最终退而求其次,我找到了一个勉强可以接受的操作方式,通过[[AHDatabase alloc] init].kFirstSplash.identify这样的方式来获取字符串@“kFirstSplash”。代码如下:

    AHDatabase.h

    #import <Foundation/Foundation.h>
    NS_ASSUME_NONNULL_BEGIN
    @interface AHDatabaseUtil : NSObject
    @property (nonatomic,strong) NSString* identify;
    @end
    
    @interface AHDatabase : NSObject
    @property (nonatomic,strong) AHDatabaseUtil* kFirstSplashAd;
    @property (nonatomic,strong) AHDatabaseUtil* kSecondSplashAd;
    
    +(instancetype)shareInstance;
    
    @end
    
    NS_ASSUME_NONNULL_END
    

    AHDatabase.m

    #import "AHDatabase.h"
    #import <objc/runtime.h>
    
    @implementation AHDatabaseUtil
    
    -(NSString *)identify{
        return [self nameWithInstance:self];
    }
    
    - (NSString *)nameWithInstance:(id)instance
    {
    //    NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];
        unsigned int numIvars = 0;
        NSString *key=nil;
        Ivar * ivars = class_copyIvarList([AHDatabase class], &numIvars);
        for(int i = 0; i < numIvars; i++) {
            Ivar thisIvar = ivars[i];
            const char *type = ivar_getTypeEncoding(thisIvar);
            NSString *stringType =  [NSString stringWithCString:type encoding:NSUTF8StringEncoding];
            if (![stringType hasPrefix:@"@"]) {
                continue;
            }
            if ((object_getIvar([AHDatabase shareInstance], thisIvar) == instance)) {
                key = [NSString stringWithUTF8String:ivar_getName(thisIvar)];
                break;
            }
        }
    //    NSTimeInterval interval2 = [[NSDate date] timeIntervalSince1970];
    //
    //    NSLog(@"%lf",(interval2-interval)*1000);
        free(ivars);
        return key;
    }
    
    @end
    
    @implementation AHDatabase
    
    +(instancetype)shareInstance{
        static dispatch_once_t onceToken;
        static AHDatabase* database = nil;
        dispatch_once(&onceToken, ^{
            database = [[AHDatabase alloc]init];
            unsigned int numIvars = 0;
    //        NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];
            Ivar * ivars = class_copyIvarList([self class], &numIvars);
            for(int i=0;i<numIvars;i++){
                object_setIvar(database, ivars[i], [[AHDatabaseUtil alloc]init]);
            }
    //        NSTimeInterval interval2 = [[NSDate date] timeIntervalSince1970];
    //        
    //        NSLog(@"%lf",(interval2-interval)*1000);
        });
        return database;
    }
    @end
    

    以上代码可以做到只需要拷贝代码 @property (nonatomic,strong) AHDatabaseUtil* kSecondSplashAd;然后修改成自己想要的变量,就可以获取到对应的变量字符串值。即[AHDatabase ShareInstance].kSecondSplashAd.identify就是值@"_kSecondSplashAd"

    展开全文
  • 在通过 sudo 运行命令时,系统会默认重置环境变量为安全的环境变量,也就是说,先前设置的变量都会失效,只有少数配置文件中指定的环境变量能够保存下来。 sudo 的配置文件是 /etc/sudoers,需要 root 权限才能读取...

    在通过 sudo 运行命令时,系统会默认重置环境变量为安全的环境变量,也就是说,先前设置的变量都会失效,只有少数配置文件中指定的环境变量能够保存下来。

    sudo 的配置文件是 /etc/sudoers,需要 root 权限才能读取,运行以下命令:

    sudo sed '/^#/d;/^$/d' /etc/sudoers
    

    sudo 的配置如下图所示:
    在这里插入图片描述
    sudo 配置文件

    请注意:

    1. 第 3 行的 Defaults env_reset 表示默认会重置环境变量,因此自定义的变量会在 sudo 环境中失效,也就不会获取正确的变量值。

    2. 第 4 行至第 8 行的 env_keep 配置项,用于保留部分环境变量不被重置,需要保留的变量就写入双引号之中。

    3. 第 9 行的 secure_path 配置项,其中包含的路径将被当做 sudo 环境的 PATH 变量使用,如果在 sudo 环境无法找到某些命令,那么可以将这些命令的路径加入该配置项之中。

    综上所述,sudo 命令找不到环境变量或命令的问题,有三种解决方法:

    1. sudo -E
      加上 -E 选项后,用户可以在 sudo 执行时保留当前用户已存在的环境变量,不会被 sudo 重置。另外,如果用户对于指定的环境变量没有权限,则会报错。

    2. 修改 sudo 配置文件
      在内部测试机器中,安全性要求不高,总是需要加上 -E 参数来执行脚本,这个安全设定也不是很方便。因此,可以通过修改 /etc/sudoers 文件的 env_keep 和 secure_path 配置项,来指定 sudo 环境中需要保留的环境变量和路径。

    当然你也可以用更简单粗暴的方式:直接将 Defaults env_reset 改成 Defaults !env_reset 来取消掉对 PATH 变量的重置,然后在 .bashrc 中最后添加 alias sudo=‘sudo env PATH=$PATH’。这样 sudo 执行命令时所搜寻的路径就是系统的 PATH 变量中的路径,如果你想添加其他变量方法也是类似。

    1. 手动添加变量
      手动在脚本中设置所需的变量,在执行 sudo 脚本前先将所需要的变量写入到需要执行的脚本开头。

    参考文档
    参考
    参考

    展开全文
  • SQL开发的过程中,如果不使用绑定变量,会对数据库性能造成非常严重的影响请看如下示例代码:  begin  for i in 1..1000 loop  execute immediate 'insert into test values('||i||')';  end loop;  ...
  • SQL开发的过程中,如果不使用绑定变量,会对数据库性能造成非常严重的影响请看如下示例代码:  begin  for i in 1..1000 loop  execute immediate 'insert into test values('||i||')';  end loop;  commit...
  • 其实我们可以把它理解为【系统的视线范围】,没错,配置进入了环境变量的程序,就等于是进入了系统的视线范围,打开DOS命令窗口后输入程序名,系统就会把在其视线内的(环境变量内)的程序出来,如果程序没有配置...
  • 前几天一个朋友在网上问我:“怎么区分全局变量,静态变量和自动变量?”我觉得奇怪,他怎么问一个初学者的问题,我这位朋友其实编程挺厉害的,呵呵。接着他说是:“计算机怎么...告诉计算机去的就是符号表。当然...
  • 变量其实是内存中的一块区域,变量名是这块区域的名字,当你使用变量的时候,就用变量名来引用它,你不会使用内存地址来引用它,就像别人你就通过你的姓名,而一般不通过你的各种描述性特点。这块内存中存储的信息...
  • 作者: Marcus Sanatan 译者:前端小智 来源:stackabuse 点赞再看,微信搜索 【大迁世界】 ...大家都说简历没项目写,我就帮大家了一个项目,还附赠【搭建教程】。 简介 JavaScript 是一种动态类型语言,这意味.
  • 如何配置环境变量

    2019-01-13 20:15:00
    当输入javac的时候,默认会出现以下界面,表示系统按照环境变量(path)中指定的一大堆路径中不到javac.exe,javac.bat,javac.cmd所以就会报以下错误 其实javac:是在C:\Java\jdk1.8.0_144\bin下面, 如果...
  • 如何获得局部变量

    热门讨论 2013-03-26 15:46:57
    如何获得局部变量名 关于System.out.println("abc="+abc);的优化 尽管eclipse提供了Debug工具,还是习惯写System.out.println("abc="+abc); 经常写这样的语句,总感觉变量abc每次写两遍,有些重复。 网上了很多资料...
  • query里如何创建变量

    千次阅读 2008-11-18 15:04:00
    bw里的特性值在sap里有时候不到我们想要的变量那么必须自己创建,或者在AWB里创建,这个没试过.今天尝试了自己创建变量,并写了增强代码.新建变量还是比较好创建,就是需要对创建的变量进行记录这样可以方便别的同事,...
  • 如何设置Python环境变量

    万次阅读 多人点赞 2017-10-06 13:00:22
    就是在安装了python之后想完整在命令提示符直接输入python就可以使用的操作,但是会出现输入了python之后不到命令的情况!例如这样↓↓↓ 但是!这并不是我们想要的结果呀!(/抓狂)我们想要它是这样子的↓↓↓ ...
  • python函数局部变量如何改变外部变量,之前我说过,局部变量是没办法改变外部变量的,除非局部变量找不到,去外部,输出变量,使用关键词global 使变量改变外部变量。 1,使用关键词global name='this is a girl...
  • <p>I have quite a weird question.... <p>I have created a file and a class, called: Animals. <pre><code>class Animals { ... protected $_snake;...<p>I have also created another file with another class, ...
  • 工作过程中,很多人都会被问到类似这样的问题,相信很多人都会脱口而出用typeof。下面我们来分析下,如何准确回答此类问题。 1、typeof typeof一般被用来判断一个变量的类型,我们可以利用它判断number,string, ...
  • 环境变量配置 环境变量配置 1:为什么要配置环境变量 1、计算机在执行命令的时候是在环境变量找对应的命令的位置的。如果不正确设置环境变量就不能正确使用相应的命令 ...2:如何配置环境变量 在win...
  • 对于path这个环境变量,我们是用的最多的,这里以此为例: 假如我们在cmd中输入一个link.exe,系统是如何找到正确的link.exe执行的? 这个问题我一直想找到精确的答案,目前却只获取到整个链条中的几段。 下面描述...
  • 如何修改Vs2008环境变量 今天写个小程序用VS,结果开始报odbc32.lib没找到,我一看原来我之前安装了一个新的SDK,结果覆盖了原有的设置,而这个 新的SDK,我安装的不完全,导致以上问题。卸载后,运行,报...
  • 如何设置环境变量

    万次阅读 2016-11-18 20:18:12
    我在安装很多软件的时候,发现需要添加...例如在Windows和DOS操作系统中,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去。用户通过设置环
  • 找到控制面板----->找到系统 ------->...变量值【是jdk的地址,有时侯是jdk里面的bin文件夹地址。包括bin】 ------>找到Path的变量名------>把变量值修改为【%JAVA_HOME%\bin】 ...
  • 下文我将用几个步骤,在IBM SPSS Statistics 中演示如何计算新变量。 1、数据展示 下图是一个班级学生的考试信息,我将用这个数据作为例子,来演示如何计算平均成绩这个新变量。 图1:数据展示 2、菜单位置 ...
  • windows云服务器安装jdk后,如何设置环境变量呢?第一次弄,半天了,不到答案,求大神解答
  • 环境: Qt Creator 4.15.0 Based on Qt 5.15.2 (Clang 11.0 (Apple), 64 bit) ...我啊,最终发现是自己按错了按钮… 调试正确步骤: 如果想在第25行插入设置断点,只要在那标着行数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,213
精华内容 885
关键字:

如何找变量