运行结果是ld returned 1 exit status.应该是我的函数有问题,如何改正?

原题是:自动寄存柜有n个寄存箱,并且有一个投币控制器,顾客想要寄存小件物品时,只要在投币控制器中投入一个1元硬币,如果此时有空闲的箱子,寄存柜就会自动打开一个空的箱子,并且打印输出一张小小的密码纸条;如果没有空闲的箱子,则提示“本柜已满”。当顾客离开超市时,用密码纸条上指定的数字密码依次输入到开箱控制器,则顾客所存包的箱子门就会自动打开,顾客取走物品后,关上门。
输入数据时,可先输入寄存箱总数n, 再由用户选择是“投硬币”还是“输密码”。
如果选择“投硬币”,则只有硬币值是1时才开箱。如果有空闲的箱子,则输出箱子编号及密码(4位数字); 如果无空闲的箱子,则提示“本柜已满”。
如果选择“输密码”,若输入的密码与某一箱子密码相符,则显示打开的箱子编号,否则输出提示“密码错误”。
万能密码:假定有一个密码000086,该密码用于营业结束后整理寄存柜。先在菜单中输入隐藏的选项5,然后提示请输入万能密码,密码输入后,打开所有的箱子,如有箱子中客户没有取走东西,则提示:请重点检查某编号的箱子是否有物留存。
我的程序稍作改变,大致意思不变。
谢谢啦~

#include<stdio.h>
#include<time.h>
#include<stdlib.h> 
#include<string.h>
 //寄存柜结构
 struct lockers{
    int used;  //空0用1 
    int password;
 }locker[100]={0};
  int NewLocker();
  int TakeOut(int pword);
  int KeeperCheck();
 int main()
 {  
    int opennum=5;
    printf("目前开放箱数:");//管理员输入投入使用箱数 
    scanf("%d",&opennum);
    printf("-----【用户界面】-----\n");
    printf("1-寄存(需投入1元硬币)\n2-取物\n0-退出\n");
    int choice;
    int coin;
    int pword;
    char key[7]={'0','0','0','0','8','6'};
    char keeper[7];
    scanf("%d",&choice);
    switch(choice){
        case 1:
            srand(time(NULL));
            printf("请投入硬币:");
            scanf("%d",&coin);
            if(coin==1){
                NewLocker();
                break;
            }
            else
            break;
        case 2:
            printf("输入密码:");
            scanf("%d",&pword); 
            TakeOut(pword);
            break;
        case 0:
            printf("您已退出\n");
            break;
        case 5:
            printf("输入管理员密码:");
            scanf("%s",&keeper);
            if(strcmp(key,keeper)==0){
                KeeperCheck();
            }
            break;      
    }
    return 0; 
 } 

 //开启新箱子(判断是否存满并给出对应密码) 
  int NewLocker(int opennum){
    int i;
    for(i=0;i<=opennum;i++){
        if(locker[i].used==0){            //找空箱子 
            printf("箱子号码:%d\n",i);
            locker[i].used=1;             //使用标记
            locker[i].password=rand()%(9999-1000+1);  //存密码
            printf("密码为:%d\n",locker[i].password);
            break;
          }
        if(locker[opennum].used==1){
            printf("本柜已满\n");
            break;
        }
      }
      return 0;
  }
  //判断密码,取出物品归0并清空密码信息 
  int TakeOut(int pword){
    int j;
    int opennum;
    for(j=0;j<=opennum;j++){
        if(pword==locker[j].password){
            locker[j].used=0;
            locker[j].password=0;
            printf("欢迎下次再来!\n");
            break;
          }
        else
        printf("密码错误!\n");
        break;
      }
      return 0;
  }
  //管理员检查 
  int KeeperCheck(){
    int p;
    int opennum;
    for(p=0;p<=opennum;p++){
        if(locker[p].used==1){
            printf("%d 号箱有东西遗漏\n",p);
          } 
          else
          break; 
      }
      return 0;
  }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
同样的代码code::blocks中运行正常,VSCODE中提示collect2.exe: error: ld returned 1 exit statuscollect2.exe: error: ld returned 1 exit status
一段C代码,在code::blocks中运行正常,但在VSCODE中提示C:\Users\ADMINI~1\AppData\Local\Temp\cc3JOmOu.o:test.cpp:(.text+0x93): undefined reference to `gen_Data(void*)' collect2.exe: error: ld returned 1 exit status 代码如下: 头文件: ``` //kpid.h .... typedef struct _Para { ..... } Para; void gen_Data(void *p); ``` .c文件 ``` //kpid.c #include "kpid.h" void gen_Data(void *p) { Para *pa = (Para *)p; ...... } ``` main ``` //main.c #include "kpid.h" int main() { Para p; p.menber1 = 10; //初始化 .... gen_Data(&p) } ``` 1、这段程序在Code::Blocks17.2 中能正常运行,可输出期望结果 2、将struct定义,gen_Data() 函数定义/实现都放到main.c文件中时(代码不变,仅放的位置移动),在vscode中也能正常运行。 3、但如上代码,定义、实现放在单独的.h,.c文件中,在main.c中包含头文件时,运行错误。提示如下。(函数名的拼写是正确的,没错) C:\Users\ADMINI~1\AppData\Local\Temp\cc3JOmOu.o:test.cpp:(.text+0x93): undefined reference to `gen_Data(void*)' collect2.exe: error: ld returned 1 exit status
编译报错为[Error] ld returned 1 exit status,但经检查无在运行的程序
//【日期】黑色星期五 #include "stdio.h" #include <stdlib.h> #include "math.h" extern int a; int fa(int b) //判断为星期几的函数,返回值x {int c=13,x,y=0; if(b>12||b<1){ printf("month is error.\n"); goto out; } if(a<=1900){ printf("year is error.\n"); goto out; } if(((b==1||b==3||b==5||b==7||b==8||b==10||b==12)&&c>31)||(((a%4==0&&a%100!=0)||(a%400==0))&&b==2&&c>29)||((a%4!=0||a%100==0)&&c>28)||((b==6||b==4||b==9||b==11)&&c>31)||(c<1)){ printf("day is error.\n"); goto out; } switch(b) { case 1:x=c%7+1;break; case 2:x=(31+c)%7+1;break; case 3:x=(31+28+c)%7+1;break; case 4:x=(31+28+31+c)%7+1;break; case 5:x=(31+28+31+30+c)%7+1;break; case 6:x=(31+28+31+30+31+c)%7+1;break; case 7:x=(31+28+31+30+31+30+c)%7+1;break; case 8:x=(31+28+31+30+31+30+31+c)%7+1;break; case 9:x=(31+28+31+30+31+30+31+31+c)%7+1;break; case 10:x=(31+28+31+30+31+30+31+31+30+c)%7+1;break; case 11:x=(31+28+31+30+31+30+31+31+30+31+c)%7+1;break; case 12:x=(31+28+31+30+31+30+31+31+30+31+30+c)%7+1;break; } if(a>2013)x+=(a-2013)/4+(a-2013); if(a<2013) { x-=(2016-a)/4+(2013-a)-7; x+=7*((2015-x)/7); } if(x>=7)x=x%7; out: return x; } //主函数判断某一年的13号是不是为星期五 int main() { int fa(int b) ; int i=0,j[10],b,s; scanf("%d",&a); for(b=1;b<13;b++){ if(fa(b)==5){ j[i]=b; i++; } } s=i; printf("There are %d Black Fridays in year %d.\n",i,a); printf("They are:\n"); for(i=0;i<s;i++){ printf("%d/%d/13\n",a,j[i]); } } ``` ```
Dc++ 中报错问题[Error] ld returned 1 exit status
直接上源码了, 求大神指点 #include <stdio.h> #include <stdlib.h> #include <string.h> #define STU_INFO_FILE "d:\\classmates_info_file.txt" //定义文本信息存储路径 #define FAILURE 0xFFFFFFFF #define SUCCESS !0xFFFFFFFF #define MAX_STU_COUNT 60 int size = 59; //设置全局变量size用来记录通讯录的个数,和数组的下标一致换句话说就是学生的个数减去1 int judge; char name[MAX_STU_COUNT][10+1]; //存放姓名,每个班级50人,名字最长为10个字符; char email[MAX_STU_COUNT][20+1]; //存放姓名,每个班级50人,名字最长为10个字符; __int64 student_number[MAX_STU_COUNT]; //学号过长,即便unsigned int也不够存储,采用64位整型; __int64 mobile_phone_number[MAX_STU_COUNT]; __int64 qq_number[MAX_STU_COUNT]; int AddStuInfoFromFile() { int tmpi; char student_number_char[13 + 1]; char mobile_phone_number_char[11 + 1]; char qq_number_char[10 + 1]; FILE * pFile = NULL; pFile = fopen(STU_INFO_FILE, "r"); if(!pFile) { printf("AddStuInfoFromFile: File Open Failed!\n"); return FAILURE; } else printf("AddStuInfoFromFile: File Open Succeeded!\n"); memset(student_number,0,8); //memset(数组名,要初始化的值,大小) memset(mobile_phone_number,0,8); memset(qq_number,0,8); memset(name,0,MAX_STU_COUNT * (10 + 1)); memset(email,0,MAX_STU_COUNT * (20 + 1)); for(tmpi = 0; tmpi < MAX_STU_COUNT; tmpi++) { fscanf(pFile,"%s",student_number_char); fscanf(pFile,"\t%s",name[tmpi]); fscanf(pFile,"\t%s",mobile_phone_number_char); fscanf(pFile,"\t%s",email[tmpi]); fscanf(pFile,"\t%s\n",qq_number_char); student_number[tmpi] = _atoi64(student_number_char); mobile_phone_number[tmpi] = _atoi64(mobile_phone_number_char); qq_number[tmpi] = _atoi64(qq_number_char); if(student_number[tmpi]==student_number[tmpi-1]){ tmpi = tmpi - 1; size = tmpi; break;} //截止到此一共是tmpi位学生 编号从 0~tmpi-1 ; 若需要输出第n位学生则 则下表为 n-1 /* printf("name %d is %s\n", tmpi, name[tmpi]); printf("email %d is %s\n", tmpi, email[tmpi]); printf("qq_number %d is %I64d\n",tmpi, qq_number[tmpi]); */ } fclose(pFile); return SUCCESS; } void outputAll() { int tmpi; if(judge == FAILURE) return; for(tmpi = 0; tmpi <= size; tmpi++) { printf("%I64d\t%s\t%I64d\t%s\t%I64d\n", student_number[tmpi], name[tmpi], mobile_phone_number[tmpi], email[tmpi],qq_number[tmpi]); } } void output(int index); int delete2(int n); int insert(int index); int find(__int64 mobile,__int64 QQ); int main() { int n,n2,n3; __int64 mobile=0,QQ=0; if(judge = AddStuInfoFromFile()==FAILURE) return FAILURE; printf("请选择您所需操作:\n"); printf("1.查询\t2.插入\n3.删除\t4.输出通讯录\n"); char ch=getchar(); switch(ch){ case '1' :{ printf("请输入要查询学生的手机号码或者QQ号码,不选择项请填写数字0\n"); printf("手机号码:"); scanf("%I64d",&mobile); printf("QQ号码:"); scanf("%I64d",&QQ); find(mobile,QQ);}break;//查询 case '2' : { if(size==59)//应该放在该函数之前 printf("超出了学生个数个数的范围\n"); else{ printf("请输入要插入的位置:"); scanf("%d",&n3); insert(n3); }}break;//插入 case '3' :{ printf("请出入要删除学生的编号:"); scanf("%d",&n2); delete2(n2); }break;//删除 case '4' :{ printf("请选择:\n1.输出第n位同学\n2.输出整个通讯录\n") ; char ch2 = getchar();//清楚一个缓存 ch2 = getchar(); switch (ch2){ case '1' :{ printf("请输入要输出学生的编号:") ; scanf("%d",&n); output(n);};break; case '2' :outputAll();break; default :printf("您输入的操作序号无法识别\n"); } }break;//输出通讯录 default :printf("您输入的操作序号无法识别\n"); } printf("请输入要输出学生的编号:") ; scanf("%d",&n); output(n); return SUCCESS; } void output(int index) { int tmpi; if(judge == FAILURE) return; if(index-1>size) printf("超出了学生个数的范围"); else if(index<1) printf("输入的学生代号不正确\n"); else printf("%I64d\t%s\t%I64d\t%s\t%I64d\n", student_number[index-1], name[index-1], mobile_phone_number[index-1], email[index-1],qq_number[index-1]); } int find(__int64 mobile,__int64 QQ) //返回值为下标 { int a1=-1,a2=-1; int n; if(mobile != 0){ if(mobile>=10000000000&&mobile<=99999999999){ for(n=0;n<=size;n++){ if(mobile_phone_number[n]== mobile){ a1=n;break; } } if(a1==-1){ printf("未找到对应的同学\n"); return FAILURE;} } else{ printf("输入的手机号码不正确\n");return FAILURE;} } //下面是 手机号为0 if(QQ!=0){ if(QQ>0&&QQ<=9999999999){ for(n=0;n<=size;n++){ if(qq_number[n]==QQ){ a2=n;break; } if(a2==-1){ printf("未找到对应的同学\n");return FAILURE;}} } else printf("输入的qq号码不正确\n");return FAILURE;} if(QQ==0&&mobile==0){ printf("您没有输入需要搜索的手机号或QQ\n");return FAILURE;} if(a1==a2&&a1!=-1){ output(a1+1); return a1; } int insert(int index) //要求用户输入数据; { if(index>size+2){ printf("超出了可插入的范围\n");return FAILURE;} else if(index<1){ printf("输入的学生代号不正确\n");return FAILURE;} else{int size2=size; for(; size2+1 >= index ;size2--){ // 要删除第4个 下 标是3 最大下标是 size=6 是三的呗死替代 n为5 下标为4 size为 //6 用下标为5 的替代下标为 4 的 n变为6 下标 5 size=6 下标为6的代替下标为5的 size= 6 n为7 student_number[size2+1] = student_number[size2]; mobile_phone_number[size2+1] =mobile_phone_number[size2]; qq_number[size2+1] = qq_number[size2]; strcpy(name[size2+1],name[size2]); strcpy(email[size2+1],email[size2]);} size++; char student_number_char[13 + 1]; char mobile_phone_number_char[11 + 1]; char qq_number_char[10 + 1]; char ch=getchar(); printf("请输入该同学的姓名:"); gets(name[index-1]); printf("请输入该同学的邮箱:"); gets(email[index-1]); printf("请输入该同学的学号:"); gets(student_number_char); printf("请输入该同学的手机号码:"); gets(mobile_phone_number_char); printf("请输入该同学的QQ号码:"); gets(qq_number_char); student_number[index-1] = _atoi64(student_number_char); mobile_phone_number[index-1] = _atoi64(mobile_phone_number_char); qq_number[index-1] = _atoi64(qq_number_char); printf("已插入:(位置%d)\n",index); output(index); return index; } //用find查找信息 } int delete2(int n) { if(n>size+1) { printf("超出了学生个数个数的范围"); return FAILURE;} else if(n<1){ printf("输入的学生代号不正确\n"); return FAILURE;} else{ printf("已删除以下学生信息:\n"); output(n); for(;n<=size;n++){ // 要删除第4个 下 标是3 最大下标是 size=6 是三的呗死替代 n为5 下标为4 size为 //6 用下标为5 的替代下标为 4 的 n变为6 下标 5 size=6 下标为6的代替下标为5的 size= 6 n为7 student_number[n-1] = student_number[n]; mobile_phone_number[n-1] =mobile_phone_number[n]; qq_number[n-1] = qq_number[n]; strcpy(name[n-1],name[n]); strcpy(email[n-1],email[n]);} size--;} }}
dateDiff是C语言库函数吗
我要用他的话需要自己定义吗 报错是这样的[Error] ld returned 1 exit status 我没有打开运行,重启了再编译也不行 源代码如下,输出是啥不重要 #include <stdio.h> struct date { int month; int day; }; int main() { int dateDiff(struct date date1,struct date date2); struct date date1,date2; int x; scanf("%d:%d",&date1.month,&date1.day); scanf("%d:%d",&date2.month,&date2.day); x=dateDiff(date1,date2); if(x<0) { printf("Duang\n"); } else { printf("%d\n",x); } return 0; }
Ubuntu18.04配置OPENCV3.3.1时make报错
在给Ubuntu18.04下载编译openCV3.3.1时, 参照https://blog.csdn.net/zhaoxr233/article/details/90036824 在做到make那一步时,报了以下error,在网上查询无果,不知如何解决,烦请各位大佬指点 ``` Linking CXX executable ../../bin/opencv_visualisation ../../lib/libopencv_core.a(hal_internal.cpp.o):在函数‘lapack_gemm32f(float const*, unsigned long, float const*, unsigned long, float, float const*, unsigned long, float, float*, unsigned long, int, int, int, int)’中: hal_internal.cpp:(.text._Z14lapack_gemm32fPKfmS0_mfS0_mfPfmiiii+0x3d2):对‘cblas_sgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, int, int, int, float, float const*, int, float const*, int, float, float*, int)’未定义的引用 ............ ../../lib/libopencv_core.a(hal_internal.cpp.o):在函数‘lapack_gemm64fc(double const*, unsigned long, double const*, unsigned long, double, double const*, unsigned long, double, double*, unsigned long, int, int, int, int)’中: hal_internal.cpp:(.text._Z15lapack_gemm64fcPKdmS0_mdS0_mdPdmiiii+0x29e):对‘cblas_zgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, int, int, int, void const*, void const*, int, void const*, int, void const*, void*, int)’未定义的引用 hal_internal.cpp:(.text._Z15lapack_gemm64fcPKdmS0_mdS0_mdPdmiiii+0x2f5):对‘cblas_cgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, int, int, int, void const*, void const*, int, void const*, int, void const*, void*, int)’未定义的引用 collect2: error: ld returned 1 exit status apps/annotation/CMakeFiles/opencv_annotation.dir/build.make:119: recipe for target 'bin/opencv_annotation' failed make[2]: *** [bin/opencv_annotation] Error 1 CMakeFiles/Makefile2:4522: recipe for target 'apps/annotation/CMakeFiles/opencv_annotation.dir/all' failed make[1]: *** [apps/annotation/CMakeFiles/opencv_annotation.dir/all] Error 2 ```
g++编译出现错误,求解答
终端运行 src文件夹里面代码 facedetectcnn.cpp出现以下错误: /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o:在函数‘_start’中: (.text+0x20):对‘main’未定义的引用 collect2: error: ld returned 1 exit status 运行人脸检测c++程序出现错误![图片说明](https://img-ask.csdn.net/upload/201905/07/1557192045_418520.jpg) 代码的链接 https://github.com/ShiqiYu/libfacedetection
创建一个类Student。然后在main函数中创建一个对象(“12345”,“张三”,“男”),并调用相应的方法完成数据的输入和输出,使用string类型存储字符串数据。
不知道哪错了,怎么改。 错误提示: 4-1.cpp:(.text+0x1b): undefined reference to `Student::Student()' [Error] ld returned 1 exit status #include"iostream" #include"string" using namespace std; class Student { private: string studentNo; string studentName; string studentSex; public: Student(); void input(){ cout<<"your number,name and sex:"<<endl; cin>>studentNo>>studentName>>studentSex; } void print(){ cout<<"student information:"<<studentNo<<endl<<studentName<<endl<<studentSex<<endl; } }; int main() { Student s; s.input(); s.print(); return 0; }
c++/qt 无法调用另一个cpp的函数
代码详情在图中。 ![图片说明](https://img-ask.csdn.net/upload/201610/08/1475903050_94562.jpg) main.cpp: error: undefined reference to `InsertS(char*, char*, int, int)' widget.cpp: error: undefined reference to `GetS(char*, char*, char*)' collect2.exe:-1: error: error: ld returned 1 exit status
arm-fsl-linux-gnueabi-gcc 交叉编译工具链不能正常链接库
1. 使用gcc -o simplescan simplescan.c -lbluetooth 可以编译程序。 2. arm-fsl-linux-gnueabi-gcc -o simplescan simplescan.c -lbluetooth 这样编译程序时提示找不头文件。 3. arm-fsl-linux-gnueabi-gcc -o simplescan simplescan.c -I/usr/include/ -I/usr/include/i386-linux-gnu 手动设置头文件路径后,提示找不到库 /opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/../lib/gcc/arm-fsl-linux-gnueabi/4.6.2/../../../../arm-fsl-linux-gnueabi/bin/ld: cannot find -lbluetooth collect2: ld returned 1 exit status 4. 手动指定库路径编译 arm-fsl-linux-gnueabi-gcc -o simplescan simplescan.c -I/usr/include/ -I/usr/include/i386-linux-gnu -L/usr/lib/i386-linux-gnu 编译提示 simplescan.c:(.text+0x84): undefined reference to `hci_get_route' simplescan.c:(.text+0x90): undefined reference to `hci_open_dev' simplescan.c:(.text+0x11c): undefined reference to `hci_inquiry' simplescan.c:(.text+0x170): undefined reference to `ba2str' simplescan.c:(.text+0x1c8): undefined reference to `hci_read_remote_name' collect2: ld returned 1 exit status 5.使用arm-fsl-linux-gnueabi-nm -D bluetooth_build/lib/libbluetooth.so.3.13.0 查看库里函数,函数也存在。 000061e8 T hci_get_route 000063bc T hci_inquiry 00006ab4 T hci_le_add_white_list 00006c90 T hci_le_clear_white_list 00008ca0 T hci_le_conn_update 00008b44 T hci_le_create_conn 00006c04 T hci_le_read_white_list_size 00006b5c T hci_le_rm_white_list 00008ac8 T hci_le_set_advertise_enable 00008988 T hci_le_set_scan_enable 00008a10 T hci_le_set_scan_parameters 00005bd0 T hci_lmtostr 00005b98 T hci_lptostr 00006520 T hci_open_dev 这是什么情况? # 补充问题: 其实我的bluetooth的链接也已经编译了,使用-L指向我的链接库时,也是提示没有那些函数。 因为gcc编译可以通过,我就想着链接一下gcc用的动态库看可不可以通过。结果还是一样的。 所以百思不得其解。找不到要往哪个方向查了。 使用nm 对比了i386的蓝牙库和用交叉工具编译的蓝牙库,有没太大的差异 这是我的库 file work/bluetooth/bluetooth_build/lib/libbluetooth.so.3.13.0 work/bluetooth/bluetooth_build/lib/libbluetooth.so.3.13.0: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
关于函数作参数的问题,请大佬指教
这个代码是把Output函数作为一个地址来做的,不知道为什么编译的 时候一直给我报错,可是书上明明可以的啊 错误如下:C:\Users\ADMINI~1\AppData\Local\Temp\ccxuRVz9.o 函数作参数.cpp:(.rdata$.refptr._ZN3ICS6OutputE[.refptr._ZN3ICS6OutputE]+0x0): undefined reference to `ICS::Output' C:\Users\Administrator\Desktop\collect2.exe [Error] ld returned 1 exit status #include<iostream> using namespace std; class ICS { private: int a; int b; static void (*Output)(int a); public: ICS(); void show(void(*thevisit)(int)) { Output = thevisit; Output(a); } void show1() { show(output); } }; ICS::ICS() { cout << "the sum \n"; cin >> a; cout << a; } void ICS::output(int a) { cout << "the number is " << a << endl; } int main() { ICS I; I.show1(); return 0; }
linux下,如何把libc.a静态编译进动态库中
大佬们,怎样把libc.a的内容静态编译进动态库里呀?比如我动态库里有一个printf,我要怎么把printf静态编译进去? &nbsp; **就比如我编写了一个.c文件,我想把它编译成共享库,在我这个.c中我使用了printf函数。我编译了这个共享库,但是我共享库里面调用了标准C库比如printf,这个printf里面的内容并没有被添加到我的共享库so文件中,到时候使用时还需要重定位。现在我想把我共享库里面用到的C标准库的内容,比如printf静态编译到我的共享库so文件中,让so文件中带有printf的实现。能否实现这样的情况呢?** &nbsp; 现在遇到的问题是报错如下: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC test.o: could not read symbols: Bad value collect2: ld returned 1 exit status
使用autotools自动生成Makefile时在make这一步骤出错
$ ** make** cd . && /bin/bash ./config.status Makefile depfiles config.status: creating Makefile config.status: executing depfiles commands make all-am make[1]: Entering directory '/home/zhang/hello' gcc -DHAVE_CONFIG_H -I. -g -O2 -MT hello.o -MD -MP -MF .deps/hello.Tpo -c -o hello.o hello.c mv -f .deps/hello.Tpo .deps/hello.Po gcc -g -O2 -o hello hello.o hello.o:在函数‘main’中: /home/zhang/hello/hello.c:6:对‘hello_str’未定义的引用 collect2: error: ld returned 1 exit status Makefile:369: recipe for target 'hello' failed make[1]: *** [hello] Error 1 make[1]: Leaving directory '/home/zhang/hello' Makefile:273: recipe for target 'all' failed make: *** [all] Error 2 我的三个源文件是:hello.c / common.c / common.h 问题好像显示文件之间不能建立链接,才会出现函数未定义的问题。但自己试了很多次都无果,故求助各位大虾,谢谢!
还是OPENCV编译出错,arm版本,出现错误
错误如下: Linking CXX static library ../../lib/libopencv_haartraining_engine.a [ 82%] Built target opencv_haartraining_engine Scanning dependencies of target opencv_createsamples [ 82%] Building CXX object modules/haartraining/CMakeFiles/opencv_createsamples.dir/createsamples.obj Linking CXX executable ../../bin/opencv_createsamples ../../lib/libopencv_haartraining_engine.a(cvsamples.obj):在函数‘cvWarpPerspective(void*, void*, double (*) [2])’中: cvsamples.cpp:(.text._Z17cvWarpPerspectivePvS_PA2_d+0x674):对‘lrint’未定义的引用 cvsamples.cpp:(.text._Z17cvWarpPerspectivePvS_PA2_d+0x68c):对‘lrint’未定义的引用 cvsamples.cpp:(.text._Z17cvWarpPerspectivePvS_PA2_d+0x69c):对‘lrint’未定义的引用 cvsamples.cpp:(.text._Z17cvWarpPerspectivePvS_PA2_d+0x6bc):对‘lrint’未定义的引用 cvsamples.cpp:(.text._Z17cvWarpPerspectivePvS_PA2_d+0x734):对‘lrint’未定义的引用 ../../lib/libopencv_haartraining_engine.a(cvsamples.obj):cvsamples.cpp:(.text._Z17cvWarpPerspectivePvS_PA2_d+0x74c): more undefined references to `lrint' follow collect2: ld returned 1 exit status make[2]: *** [bin/opencv_createsamples] 错误 1 make[1]: *** [modules/haartraining/CMakeFiles/opencv_createsamples.dir/all] 错误 2 make: *** [all] 错误 2
NDK开发的时候遇到error: undefined reference to 错误
大家好,我在正在将C++的一些代码通过ndk调用到android项目里面去,但是在出现了一个很奇怪的错误; /bin/ld: ./obj/local/armeabi/objs/TestNDK2/TestNDK2.o: in function Java_com_example_testndk2_MainActivity_stringTestNdk(_JNIEnv*, _jobject*):jni/TestNDK2.cpp:15: error: undefined reference to 'CFeatureExtract::CFeatureExtract()' collect2: ld returned 1 exit status make: *** [obj/local/armeabi/libTestNDK2.so] Error 1 我调用jni的文件代码为: #include <string.h> #include "FeatureExtract.h" #include "Output.h" #include <jni.h> jstring Java_com_example_testndk2_MainActivity_stringTestNdk( JNIEnv* env, jobject thiz ) { COutput * pout; pout = new COutput(); CFeatureExtract *pFtr; pFtr=new CFeatureExtract(); return (env)->NewStringUTF("Hello from JNI and anbo !"); } mk文件也编写好了,应该没什么问题,之所以说没问题是因为,我在上面调用了其他cpp文件的 output.cpp和FeatureExtract.cpp等好几个cpp文件,当我把 pFtr=new CFeatureExtract(); 这行去掉的时候,会发现不再报错。下面是我的mk的代码: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libFeatureExtract LOCAL_SRC_FILES := OnlineFtr.cpp OnlineNorm.cpp FeatureExtract.cpp LOCAL_C_INCLUDES := $(LOCAL_PATH)/include include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libOutput LOCAL_SRC_FILES := LQDFR.cpp Classifier.cpp Output.cpp include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := TestNDK2 LOCAL_SRC_FILES := TestNDK2.cpp LOCAL_STATIC_LIBRARIES := libFeatureExtract LOCAL_STATIC_LIBRARIES := libOutput include $(BUILD_SHARED_LIBRARY) 最后是我CFeatureExtract构造函数的代码: CFeatureExtract::CFeatureExtract() { nmdir = 0; nwid = zone*zstep; pNorm = new COnlineNorm; pFeatr = new COnlineFtr( nwid ); //edit by anbo trajnorm = NULL; new_ptnum =0; new_ptnum_total=0; strokeEnd=0; strokeBegin=0; countStroke=0; GaussModel_probability =0; } 下面是.h头文件的部分声明 class CFeatureExtract{ public: CFeatureExtract(); ~CFeatureExtract(); 非常想知道到底哪里错了啊!感谢!
Alsrobot自带记忆大考验实验编程不停报错
请教下各位大佬,我在做奥森机器人的那个记忆大考验实验的时候用光盘给的程序一直报错,加上IRemote库函数,改了tone()函数也不行,改了好久快炸了,求大佬帮帮忙。 报的错误:collect2.exe: error: ld returned 1 exit status 程序: #include <IRremote.h> void newtone(byte tonePin, int frequency, int duration) { int period = 1000000L / frequency; int pulse = period / 2; for (long i = 0; i < duration * 1000L; i += period) { digitalWrite(tonePin, HIGH); delayMicroseconds(pulse); digitalWrite(tonePin, LOW); delayMicroseconds(pulse); } } const unsigned long RC_CODE[10] = {0, 0xFF30CF, 0xFF18E7, 0xFF7A85, 0xFF10EF, 0xFF38C7, 0xFF5AA5, 0xFF42BD, 0xFF4AB5, 0xFF52AD }; // 遥控器1~9的编码表 const int PINS[10] = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 9盏灯,下标0不使用 const int BUZ = 13; const int RECV_PIN = 12; const int N = 3; // N 为游戏的难度,即需要回忆的次数 int randomNums[30]; // randomNums 中存放了 N 个由单片机生成的随机数 IRrecv irrecv(RECV_PIN); decode_results results; // 红外接收需要的两个对象 int anwser[30]; int inc; // anwser 中存放了 inc 个玩家的回答 bool isRight; // 最后判断玩家是否回答正确 unsigned long beginTime; // 用来计算超时时间 void setup() { irrecv.enableIRIn(); // 初始化红外接收 for(int i = 1; i <= 9; i++) pinMode(PINS[i], OUTPUT); pinMode(BUZ, OUTPUT); randomSeed(analogRead(A0)); // 随机种子 } void loop() { // 生成随机数 for(int i = 0; i < N; i++) randomNums[i] = random(1, 10); // 范围 1~9 // 使用 LED 展示随机数,难度为 N for(int i = 0; i < N; i++) { // randomNums[i] 表示第 i 次亮第几盏灯 // PINS[n] 表示第 n 盏灯对应的物理针脚号 digitalWrite(PINS[randomNums[i]], HIGH); delay(1000); digitalWrite(PINS[randomNums[i]], LOW); delay(1000); } // 全亮全灭 ,提示游戏开始,你也可以使用蜂鸣器 for(int i = 1; i <= 9; i++) { digitalWrite(PINS[i], HIGH); } delay(2000); for(int i = 1; i <= 9; i++) { digitalWrite(PINS[i], LOW); } // 开始接收玩家的回答 inc = 0; // 用于记录玩家答案 anwser 的下标 beginTime = millis(); // 记录玩家回答的时间 while(1) { if(irrecv.decode(&results)) // 红外接收遥控器的值,结果位于 results.value { // 将玩家的输入,依次与 RC_CODE[i] 做比较 // RC_CODE[i] 表示遥控器的数字 i 所对应的编码 for(int i = 1; i <=9; i++) { if(results.value == RC_CODE[i]) // 如果玩家按下的数字是 i { // 第 i 盏灯闪烁 digitalWrite(PINS[i], HIGH); delay(50); digitalWrite(PINS[i], LOW); anwser[inc++] = i; // 记录玩家的答案 break; } } irrecv.resume(); // 接收玩家的下一个回答 // 如果玩家输入的数量与单片机的数量相同,说明玩家已经回答完毕 // 退出循环,准备判断 if(inc == N) break; } // 另外一种可能,玩家5秒内都未回答完毕(inc==N),直接退出循环 // 这种情况下,回答一定是错误的 if(millis() - beginTime > 5000) break; } // 判断玩家的回答是否正确 isRight = true; for(int i = 0; i < N; i++) // 逐项比较 anwser 和 randomNums if(anwser[i] != randomNums[i]) // 如果发现有任何一项不相同 { isRight = false; // 标记回答错误 break; } // 根据判断结果 , 使用蜂鸣器提示回答正确与否 if(isRight) { newtone(BUZ, 2000, 200); delay(200); newtone(BUZ, 2500, 200); delay(200); newtone(BUZ, 3000, 200); delay(200); } else { newtone(BUZ, 1000, 600); delay(600); } noTone(BUZ); // 关闭蜂鸣器,开始下一轮游戏 }
C++写的一个简单类模版 友元函数求最大最小值
如题 , 编译时总是说 [Error] ld returned 1 exit status (编译器dev c++) ```#include<iostream> using namespace std; template <typename t> class CValue { t data[5]; public: CValue(); friend t Max(CValue <t> a); friend t Min(CValue <t> a); }; template <typename t> CValue <t> :: CValue() { cout<<"please input 5 numbers"<<endl; for(int i = 0; i < 5; i++) cin>>data[i]; } template <typename t> t Max(CValue <t> a) { t x = a.data[0]; for(int i = 1; i < 5; i++) if(x < a.data[1]) x = a.data[1]; return x; } template <typename t> t Min(CValue <t> a) { t min = a.data[0]; for(int i = 1; i < 5; i++) if(min > a.data[1]) min = a.data[1]; return min; } int main() { cout<<"整数对象a,"; CValue<int> a; cout<<"浮点数对象b,"; CValue<float> b; cout<<"整数元素对象a的元素最大值为:"<<Max(a); cout<<"整数元素对象a的元素最小值为:"<<Min(a)<<endl; cout<<"浮点数元素对象b的元素最大值为:"<<Max(b)<<endl; cout<<"浮点数元素对象b的元素最小值为:"<<Min(b)<<endl; } ```
g++编译报错,正在学习makefile
``` HelloWorld: main.o print.o g++ -o HelloWorld print.o main.o main.o: main.cpp print.h print.o g++ -o main.o main.cpp print.o: print.cpp print.h g++ -o print.o print.cpp ``` ``` //main.cpp #include <iostream> #include "print.h" using namespace std; int main() { print(); return 0; } ``` ``` //print.cpp #include <iostream> #include "print.h" using namespace std; void print() { cout << "Hello World" << endl; return; } ``` ``` //print.h #include <iostream> using namespace std; void print(); ``` 报错为: meng@meng-virtual-machine:~/code-linux/nachos-3.4/code$ make HelloWorld g++ -o print.o print.cpp /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol index 12 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 9 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 10 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 11 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 12 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 13 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 14 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 15 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 16 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 17 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 20 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 21 has invalid symbol index 22 /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2 /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o:在函数‘_start’中: (.text+0x18):对‘main’未定义的引用 collect2: error: ld returned 1 exit status make: *** [print.o] 错误 1
ubuntu中编译boost::asio出现下面错误
``` #include <boost/asio.hpp> #include <iostream> void handler(const boost::system::error_code &ec) { std::cout << "5 s." << std::endl; } int main() { boost::asio::io_service io_service; boost::asio::deadline_timer timer(io_service, boost::posix_time::seconds(5)); timer.async_wait(handler); io_service.run(); return 0; } ``` g++ timer.cc /tmp/cc6rBUr7.o:在函数‘__static_initialization_and_destruction_0(int, int)’中: timer.cc:(.text+0x12f):对‘boost::system::generic_category()’未定义的引用 timer.cc:(.text+0x13b):对‘boost::system::generic_category()’未定义的引用 timer.cc:(.text+0x147):对‘boost::system::system_category()’未定义的引用 /tmp/cc6rBUr7.o:在函数‘boost::system::error_code::error_code()’中: timer.cc:(.text._ZN5boost6system10error_codeC2Ev[_ZN5boost6system10error_codeC5Ev]+0x17):对‘boost::system::system_category()’未定义的引用 /tmp/cc6rBUr7.o:在函数‘boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const’中: timer.cc:(.text._ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition[_ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition]+0xb8):对‘boost::system::generic_category()’未定义的引用 timer.cc:(.text._ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition[_ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition]+0xf3):对‘boost::system::generic_category()’未定义的引用 /tmp/cc6rBUr7.o:在函数‘boost::system::error_category::std_category::equivalent(std::error_code const&, int) const’中: timer.cc:(.text._ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei[_ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei]+0xb8):对‘boost::system::generic_category()’未定义的引用 timer.cc:(.text._ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei[_ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei]+0xf3):对‘boost::system::generic_category()’未定义的引用 timer.cc:(.text._ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei[_ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei]+0x1d2):对‘boost::system::generic_category()’未定义的引用 /tmp/cc6rBUr7.o:在函数‘boost::asio::error::get_system_category()’中: timer.cc:(.text._ZN5boost4asio5error19get_system_categoryEv[_ZN5boost4asio5error19get_system_categoryEv]+0x5):对‘boost::system::system_category()’未定义的引用 collect2: error: ld returned 1 exit status
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python学习方法总结(内附python全套学习资料)
不要再问我python好不好学了 我之前做过半年少儿编程老师,一个小学四年级的小孩子都能在我的教学下独立完成python游戏,植物大战僵尸简单版,如果要肯花时间,接下来的网络开发也不是问题,人工智能也可以学个调包也没啥问题。。。。。所以python真的是想学就一定能学会的!!!! --------------------华丽的分割线-------------------------------- ...
python 简易微信实现(注册登录+数据库存储+聊天+GUI+文件传输)
socket+tkinter详解+简易微信实现 历经多天的努力,查阅了许多大佬的博客后终于实现了一个简易的微信O(∩_∩)O~~ 简易数据库的实现 使用pands+CSV实现数据库框架搭建 import socket import threading from pandas import * import pymysql import csv # 创建DataFrame对象 # 存储用户数据的表(...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
Python实例大全(基于Python3.7.4)
博客说明: 这是自己写的有关python语言的一篇综合博客。 只作为知识广度和编程技巧学习,不过于追究学习深度,点到即止、会用即可。 主要是基础语句,如三大控制语句(顺序、分支、循环),随机数的生成,数据类型的区分和使用; 也会涉及常用的算法和数据结构,以及面试题相关经验; 主体部分是针对python的数据挖掘和数据分析,主要先攻爬虫方向:正则表达式匹配,常用数据清洗办法,scrapy及其他爬虫框架,数据存储方式及其实现; 最后还会粗略涉及人工智能领域,玩转大数据与云计算、进行相关的预测和分析。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问