关于指针全局变量和局部变量存储位置的问题

想问一下,修改下面代码中的全局变量后,在打印pstr变量时,为什么在反汇编代码中看到callq 5e0 <__stack_chk_fail@plt>(栈检查失败),这是pstr的地址指向出现了问题吗,求大佬详细地解答

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char cstr[100]="xyz";
char *pstr="xyz"; 
int main()
{
    char id[100]="123456";
    strcpy(cstr,id);
    strcpy(pstr,id);
    printf("%s\n",cstr);
    printf("%s\n",pstr);
    return 0;
}

2个回答

strcpy(pstr,id);
这行出错了,因为pstr是一个常量。
strcpy(cstr,id); 这是可以的,所以修改方法就是把pstr定义成数组。

用char*声明指针的话指向的是静态存储部分的内存,是不可修改的,等价于const char pstr[]=...

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言中多文件的全局变量声明问题
具体问题请麻烦看链接 [C语言遇到问题](http://blog.csdn.net/u013610563/article/details/50727619 "") 我写了一个函数void match(char* list)/*作用是在list字符串中查找给定子字符串*/ 又写了一个函数void find(void (*match)(char*))/*因为想用函数指针,就把match函数传递进去了 然后find()函数遍历字符串数组。 最后在main()函数中写字符串数组char* shuzu[]的具体内容 然后把match函数,find函数,main函数保存在不同的.c文件中 最后写了一个头文件,其中保存了函数申明,还有那个字符串数组的申明 我是这样写的extern char* shuzu[]; 最后遇到的问题是编译时告诉我find()函数遇到未定义变量shuzu[],,可我不是把它定义成 全局变量保存在头文件中了吗?
关于全局变量的初始化问题
#include<stdio.h> #include<process.h> #include<string.h> //全局变量:用于保存通讯录 struct com{ char name[20]; char tel[15]; }temp; void main() { FILE *fp; //定义一个指向文件的指针 char filename[20]; //用于保存文件路径 int choice, flag=1; printf("请输入文件路径:\n"); scanf("%s", filename); fp = fopen(filename,"wb"); if(!fp) { printf("错误!文件打不开!\n"); printf("按任意键退出"); getchar(); exit(0); } while(flag) { printf("请选择:按1添加/按0退出\n"); scanf("%d", &choice); switch(choice) { case 0: flag = 0; break; case 1: printf("输入姓名:\n"); scanf("%s", temp.name); printf("输入电话:\n"); scanf("%s", temp.tel); fwrite(&temp, sizeof(struct com), 1, fp); default: break; } } fclose(fp); system("pause"); } 如果在定义结构体类型的时候直接用全局变量temp,字符数组可以自动初始化,其元素都为'\0',但是如果是在main函数里定义该结构体变量,则不会初始化,写进文件的结果会由于数组的未初始化而出现乱码。请问这如何解释?定义全局变量跟局部变量时初始化应该注意哪些问题?
C++中定义全局指针的问题
自定义一个类A,想声明一个全局的A指针。下边这种做法问题在哪? 在res.h中声明 extern A *a; 在res.cpp中 A *a= new A(); 这样做问题在哪?求教大神
单例模式中的指针成员变量为什么要私有?
class Singleton { public: static Singleton* GetInstance() { if(singleton==NULL) { singleton=new Singleton(); } return singleton; } private: static Singleton * singleton; Singleton()=default; }; 请问:其中的singleton为什么要私有化?为什么不能使用全局变量?
dll里面修改主程序的全局变量
主程序里面有一个双向链表,读链表指针和写链表指针。要求Dll中的结果插入链表(必须在Dll中插入)。怎么在Dll中直接操作主程序的全局变量(写指针)? 或者有没有其他好的实现办法? 分数不多,聊表心意!
Android 中使用全局变量导致页面跳转后新页面特别卡怎么破?
详细情况是这样,我写了一个照片选择的方法类,里面使用了一个保存当前页面所选照片的List类型的全局变量,A、B页面均使用了该变量,在A页面结束时,我把该变量数据清空,然后跳转到B页面,此时B页面就特别卡,然后我就在清空的同时把该变量得值置位null,这样的话页面跳转过去后倒是不卡顿了,但时不时地会因为B使用该变量时提示空指针异常,这就使得我的APP时不时地会崩溃掉,小弟在此特地邀请各位路过的大哥大姐帮忙想想辄,小弟不胜感激!
Linux 回调函数与线程共同访问全局变量,但结果不一样,太诡异了
``` #include "stdio.h" #include <stdlib.h> #include <unistd.h> #include <iostream> #include "CommonUtils.h" #include "address.h" #include "tcpserver.h" #include "httpserver.h" #include "httprequest.h" #include "httpresponse.h" #include "httpconnection.h" using namespace std; using namespace tnet; using namespace std::placeholders; //==================================================================// //全局变量 std::vector<string> vecMessageQueque; volatile int g_iVarTest = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; //==================================================================// void onHandler(const HttpConnectionPtr_t& conn, const HttpRequest& request) { printf("HTTP接收数据:%s\n" , request.body.c_str()); g_iVarTest += 1; printf("变量值地址:%d\n" , g_iVarTest); //=============================================================// //构造应答 HttpResponse resp; resp.statusCode = 200; resp.setContentType("text/html"); resp.setKeepAlive(true); resp.enableDate(); resp.body.append("recvdata: success"); //json字符串 conn->send(resp); //=============================================================// } //消息队列调度线程 void* MessageProcThread(void* lpParameter) { int i = 0; char buffer[1024]; while (true) { printf("消息处理数量:%d\n" , g_iVarTest); sleep(1); } } //消息队列调度线程 void* HttpServiceThread(void* lpParameter) { TcpServer s; HttpServer httpd(&s); printf("HTTP服务启动正常...\n"); httpd.setHttpCallback("/service/", std::bind(&onHandler, _1, _2)); httpd.listen(Address(11181)); s.start(4); } int main() { //创建消息处理线程 //========================================================// //传入的时候必须强制转换为void* 类型,即无类型指针 pthread_t hMsgProcThread; pthread_create(&hMsgProcThread, NULL, MessageProcThread, NULL); //测试http服务 //========================================================// pthread_t hHttpServiceThread; pthread_create(&hHttpServiceThread, NULL, HttpServiceThread, NULL); //========================================================// while (true ) { char ch = getchar(); if (ch =='#') break; } return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201911/15/1573801102_73815.png) 代码如上,g_iVarTest这个值已经改变,MessageProcThread线程访问的结果与onHandler回调的结果不一样,求高手解答以下!
想请教一下全局变量在递归中是怎么样的
以下是一个函数完整的代码 利用static int code[10]来保存哈夫曼编码 但是static 的东西不是只有一个吗,在向左右子树递归的时候不会冲突吗 想了解以下code这个数组在这个函数的递归中是怎么被改变的 ``` void HuffManCoding(BTreeNode *FBT, int len) { // 根据FBT指针所指向的哈夫曼树输出每个叶子的编码,len初值为0 static int code[10]; // 数组的长度要至少等于哈夫曼树的深度减1 if (FBT != NULL) { // 访问到叶子结点时输出其保存在数组code中的0和1序列编码 if (FBT->left == NULL && FBT->right == NULL) { cout << "结点权值为" << FBT->weight << "的编码:"; for (int i = 0; i < len; i++) cout << code[i] << " "; cout << endl; } // 访问到非叶子节点时分别向左、右子树递归调用,并分别把分支上 // 的0、1编码保存到数组code,向下深入一层时len+1 else { code[len] = 0; HuffManCoding(FBT->left, len + 1); code[len] = 1; HuffManCoding(FBT->right, len + 1); } } } ```
关于extern关键字的疑惑
根据《C和指针》P47页 > 如果一个变量声明于代码块内部,在它前面添加extern关键字将使它所引用的时全局变量而非局部变量。 那么,在main函数声明一个extern修饰的变量,该变量也应该能在其他函数中使用,例如: ![示例程序](https://img-ask.csdn.net/upload/201701/31/1485834477_949580.jpg) 但是,编译出错,提示:![图片说明](https://img-ask.csdn.net/upload/201701/31/1485834523_545352.jpg) 是不是我的理解出了偏差?http://ask.csdn.net/#
c++中的静态stl 什么时间分配空间
首先明确下边说的都是静态和全局变量, 基本类型组成的对象数组 对象变量 基本类型的数组 变量 都是在编译期间明确需要多少内存,然后在运行期会在main函数执行前进行真正的分配空间。 那么对于全局stl和静态stl是怎么分配空间的呢,是否是编译期间,只分配stl的基本空间,然后内部存在指针,当真正使用的时候会在堆中分配插入变量的空间? 我不清楚,我上边说的是否正确,请大神们帮忙解答哈
在SpringMVC的service实现类即serviceImpl里如何声明全局变量?
@Service("XXXService") public class GoodsServiceImpl implements GoodsService { //商品展示图片路径 private List<String> goodsPicturePath; @Resource //商品Dao接口 private GoodsDao goodsDao; @Override public void uploadImg(HttpServletRequest request) { ``` ``` //获取前台传过来的图片,代码略(此处没问题) //随机生成图片名称 String imgName = UUID.randomUUID().toString() + ".jpeg"; //使用IO流,给文件命名,指定存放目标文件地址 String destPath = localPath + systemSeparator + imgName; //*********此处会报空指针异常********* //想把每一次生成的图片路径放到goodsPicturePath集合里保存,最后插到数据库中,一致没有找到什么好的解决方法 this.goodsPicturePath.add(destPath + ";"); } }
小白请教关于const的几个问题
1.用const在函数内定义局部变量时要求初始化,那么在函数外定义全局变量时为何可以不用初始化,若未初始化这个变量是不是没有意义了 2.在函数内定义常量的指针(即const int * p;)的时候,可以不初始化p(至少没报错),那么如果p指向一个不是const的变量会怎么样,会把这个变量设置成const吗
C++MFC初学者求大佬们指教!用GetParent()获取父对话框指针的语句写在子对话框的头文件时,报错了。
我用GetParent()的方法把子对话框获取父对话框指针的语句写在子对话框的头文件时,报错了。但是我把它放在cpp文件里的全局变量里时,它提示我GetParent()缺少参数。我用另外一个方法AfxGetMainWnd()在全局变量里定义时,我使用主对话框的数据时提示我无法读取内存。 ![图片说明](https://img-ask.csdn.net/upload/201811/13/1542090072_598033.png) ![图片说明](https://img-ask.csdn.net/upload/201811/13/1542090252_707238.png)
函数返回指针的指针VC++6.0报错( error C2143)
声明了如下函数: ``` char** echoCourse(course *ppCourse[MAX_SUB_NO]); ``` 返回的指针指向一个字符串数组(全局变量),Linux和Mac环境下用gcc编译运行正常,VC++6.0报错如下: ``` error C2143: syntax error : missing ')' before '*' ``` 在线等……急
如何在 基于 MFC 的 regular DLL 中 指定某个对话框为主对话框呢?
我要在 一个基于 MFC 的 regular DLL 中封装一个对话框程序。 以前做基于对话框的应用程序的时候, MFC 向导会自动生成主对话框, 但是在创建基于 MFC 的 DLL 时, MFC 向导不会自动生成主对话框。 我该如何指定新创建的某个对话框为主对话框呢? 我的主要目的是为了把一些全局变量或函数定义在主对话框类中,这样在程序的任何地方都可以使用 ((CXXX_dllApp*)AfxGetApp())->m_pMainWnd  获得主对话框的指针并访问这些变量或函数。
关于返回函数内部new分配的内存的引用
#include <iostream> using namespace std; class example { public: example() { num = new int; *num = 10; cout<<"num = "<<*num<<endl; cout<<"构造"<<endl; } ~example() { cout<<"析构"<<endl; delete num; } void pingfang() { *num *= *num; } void print() { cout<<*num<<endl; } private: int *num; }; example & diaoyong1() { example * p = new example; p->pingfang(); return *p; } example * diaoyong2() { example * p = new example; p->pingfang(); return p; } int main(void) { example & e1 = diaoyong1(); e1.print(); delete &e1; example * ptr = diaoyong2(); ptr->print(); delete ptr; getchar(); return 0; } char *&alloc(){ char *va = new char [100]; return va;} 对于这样的程序 执行过程为 进入函数alloc 为变量va分配内存 假设为0x12345678 大小为四个字节 (32位机指针) 执行new操作 在内存0x12345678地址存入申请到的内存地址 假设为0x45670abc 也就是说 *(0x12345678)=0x45670abc 以上部分应该很好理解 然后返回va 也就是返回上一层一个值 这个值不可能是悬空的 它需要一个地址来存 由于是引用返回,所以返回的地址实际上就是变量va的地址0x12345678 退出函数 释放临时变量 包括va的地址0x12345678 返回到主调函数,使用返回值 比如赋值 a=alloc(); 相当于执行操作 a=*(0x12345678) 注意 在上一步 这个地址已经被释放了 所以当前这个地址存的是什么东西是不确定的 可能还是0x45670abc 也可能已经有了变化 这样a的值就不一定是你需要的了 结果也就可能是错的 关键在于退出函数 释放内存 使用内存这步 先释放 后使用 于是出错 如果是全局/静态变量 自然不会有这个问题 因为内存依旧被原来变量占用 类似引用做参数也是同样的效果 example & diaoyong1() { example * p = new example; p->pingfang(); return *p; } example * diaoyong2() { example * p = new example; p->pingfang(); return p; } 我想问上面的两个函数有什么不同?函数返回值到底是怎么实现的?如果返回一个指针是不是就是将储存这个指针的地址返回回来,函数怎么返回和左值是什么类型是不是有关系?局部变量的指针在函数结束的时候被释放是不是储存这个指针的地址释放了这个指针? example & e1 = diaoyong1(); example * e1 = diaoyong1(); //这两个本质上有什么区别,第一个为什么不会造成内存的泄露?
openmp 并行中 变量内存处理
刚开始学习openmp。用threadprivate私有化声明全局的结构体指针img后,在一个线程中动态calloc内存后,如果该线程调用其他函数,为什么在其他函数中显示img为空指针。
新手请教一下c语言变量定义的问题
我的工程里有3个.cpp和2个.h,在cpp文件里定义了几个全局变量,然后两个cpp里都引用了一个.h,结果build的时候就出现 already defined in ***.obj, conflicts with use of other libs, one or more multiply defined symbols found 报错信息如下 Main.obj : error LNK2005: "int (* iMap)[13]" (?iMap@@3PAY0N@HA) already defined in LessonX.obj Main.obj : error LNK2005: "bool g_bStart" (?g_bStart@@3_NA) already defined in LessonX.obj Main.obj : error LNK2005: "float g_fGameTime" (?g_fGameTime@@3MA) already defined in LessonX.obj Main.obj : error LNK2005: "int g_iScore" (?g_iScore@@3HA) already defined in LessonX.obj LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library ..\..\..\Bin\Game.exe : fatal error LNK1169: one or more multiply defined symbols found 执行 link.exe 时出错. LessonX.cpp的源代码如下: ///////////////////////////////////////////////////////////////////////////////// // // // // ///////////////////////////////////////////////////////////////////////////////// #include <Stdio.h> #include "CommonAPI.h" #include "LessonX.h" #include "List.h" //////////////////////////////////////////////////////////////////////////////// // int g_iGameState = 0; // 游戏状态,0 -- 游戏结束等待开始状态;1 -- 按下空格键开始,初始化游戏;2 -- 游戏进行中 struct Weapon* g_pMyTank =NULL; int iMap[11][13]; bool g_bStart = false; // 控制一局游戏开始true与结束false float g_fGameTime = 0.f; // 一局游戏的剩余时间 int g_iScore = 0; // 一局游戏得分 const float GAME_TIME = 30.f; // 一局游戏时间 const float CREATE_TANK_TIME = 5.f; // 每批次生成坦克的时间间隔 const float TANK_SPEED = 5.f; // 坦克速度 const float BULLET_SPEED = 8.f; // 子弹速度 const float FIRE_TIME = 2.f; // 坦克开炮时间间隔 const float WORLD_LEFT = -26.f; // 游戏场景边界左值 const float WORLD_TOP = -22.f; // 游戏场景边界左值 const float WORLD_RIGHT = 26.f; // 游戏场景边界左值 const float WORLD_BOTTOM = 22.f; // 游戏场景边界左值// // 游戏地图,0表示此处为空,1表示此处有墙。根据游戏空间大小、墙以及坦克大小, // 我们把地图分成11行,13列,每格大小刚好放一块墙。 // void GameInit(); void GameRun( float fDeltaTime ); void GameEnd(); void MoveMyTank(int iKey,bool bPress); //============================================================================== // // 大体的程序流程为:GameMainLoop函数为主循环函数,在引擎每帧刷新屏幕图像之后,都会被调用一次。 //============================================================================== // // 游戏主循环,此函数将被不停的调用,引擎每刷新一次屏幕,此函数即被调用一次 // 用以处理游戏的开始、进行中、结束等各种状态. // 函数参数fDeltaTime : 上次调用本函数到此次调用本函数的时间间隔,单位:秒 void GameMainLoop( float fDeltaTime ) { switch( g_iGameState ) { // 初始化游戏,清空上一局相关数据 case 1: { GameInit(); g_iGameState = 2; // 初始化之后,将游戏状态设置为进行中 } break; // 游戏进行中,处理各种游戏逻辑 case 2: { // TODO 修改此处游戏循环条件,完成正确游戏逻辑 if( true ) { GameRun( fDeltaTime ); } else { // 游戏结束。调用游戏结算函数,并把游戏状态修改为结束状态 g_iGameState = 0; GameEnd(); } } break; // 游戏结束/等待按空格键开始 case 0: default: break; }; } void MoveMyTank(int iKey,bool bPress) { if(bPress&&g_pMyTank!=NULL) { switch(iKey) { case KEY_W: g_pMyTank->iDir=UP; g_pMyTank->fSpeedX=0.f; g_pMyTank->fSpeedY=-TANK_SPEED; break; case KEY_S: g_pMyTank->iDir=DOWN; g_pMyTank->fSpeedX=0.f; g_pMyTank->fSpeedY=TANK_SPEED; break; case KEY_A: g_pMyTank->iDir=LEFT; g_pMyTank->fSpeedX=-TANK_SPEED; g_pMyTank->fSpeedY=0.f; break; case KEY_D: g_pMyTank->iDir=RIGHT; g_pMyTank->fSpeedX=TANK_SPEED; g_pMyTank->fSpeedY=0.f; break; default: break; } dSetSpriteLinearVelocity("player",g_pMyTank->fSpeedX, g_pMyTank->fSpeedY); dSetSpriteRotation("player",g_pMyTank->iDir*90); } } //============================================================================== // // 每局开始前进行初始化,清空上一局相关数据 void GameInit() { } //============================================================================== // // 每局游戏进行中 void GameRun( float fDeltaTime ) { } //============================================================================== // // 本局游戏结束 void GameEnd() { } //========================================================================== // // 鼠标移动 // 参数 fMouseX, fMouseY:为鼠标当前坐标 void OnMouseMove( const float fMouseX, const float fMouseY ) { } //========================================================================== // // 鼠标点击 // 参数 iMouseType:鼠标按键值,见 enum MouseTypes 定义 // 参数 fMouseX, fMouseY:为鼠标当前坐标 void OnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY ) { } //========================================================================== // // 鼠标弹起 // 参数 iMouseType:鼠标按键值,见 enum MouseTypes 定义 // 参数 fMouseX, fMouseY:为鼠标当前坐标 void OnMouseUp( const int iMouseType, const float fMouseX, const float fMouseY ) { } //========================================================================== // // 键盘按下 // 参数 iKey:被按下的键,值见 enum KeyCodes 宏定义 // 参数 iAltPress, iShiftPress,iCtrlPress:键盘上的功能键Alt,Ctrl,Shift当前是否也处于按下状态(0未按下,1按下) void OnKeyDown( const int iKey, const bool bAltPress, const bool bShiftPress, const bool bCtrlPress ) { if(iKey == KEY_SPACE && g_bStart == false) // 游戏未开始,按下空格键 { g_bStart = true; g_fGameTime = GAME_TIME; dSetSpriteVisible("start", false); dSetTextValue("time", (int)g_fGameTime); dSetTextValue("score", g_iScore); } } //========================================================================== // // 键盘弹起 // 参数 iKey:弹起的键,值见 enum KeyCodes 宏定义 void OnKeyUp( const int iKey ) { } //=========================================================================== // // 精灵与精灵碰撞 // 参数 szSrcName:发起碰撞的精灵名字 // 参数 szTarName:被碰撞的精灵名字 void OnSpriteColSprite( const char *szSrcName, const char *szTarName ) { } //=========================================================================== // // 精灵与世界边界碰撞 // 参数 szName:碰撞到边界的精灵名字 // 参数 iColSide:碰撞到的边界 0 左边,1 右边,2 上边,3 下边 void OnSpriteColWorldLimit( const char *szName, const int iColSide ) { } List.h的源代码如下: ////////////////////////////////////////////////////////////// /////////////////////////// ////// // //////////////////////////// #ifndef _LIST_H_ #define _LIST_H_ ///////////////////////////// struct Weapon{ char szName[128]; // 精灵名称 float fPosX, fPosY; // 精灵坐标 float fSpeedX, fSpeedY; // X和Y方向上速度 float fFireTime; // 敌方坦克距下一次开炮的剩余时间 int iHp; // 生命值 int iDir; // 朝向:0 - 上方;1 - 右方;2 - 下方;3 - 左方 int iType; // 类型: 0 - 我方坦克;1 - 敌方坦克;2 - 我方 // 子弹; 3 - 敌方子弹 Weapon* pNext; // 指向下一个节点的指针 }; enum Direction{ UP = 0, // 上方 RIGHT = 1, // 右方 DOWN = 2, // 下方 LEFT = 3 // 左方 }; enum Role { MYTANK = 0, // 我方坦克 ENEMYTANK = 1, // 敌方坦克 MYBULLET = 2, // 我方子弹 ENEMYBULLET = 3 // 敌方子弹 }; extern int g_iGameState; // 游戏状态,0 -- 游戏结束等待开始状态;1 -- 按下空格键开始,初始化游戏;2 -- 游戏进行中 extern struct Weapon* g_pMyTank; extern int iMap[11][13]; extern bool g_bStart; // 控制一局游戏开始true与结束false extern float g_fGameTime; // 一局游戏的剩余时间 extern int g_iScore; // 一局游戏得分 #endif//_LIST_H_ 求问这要怎么办?
有关内存的管理的问题
新手。在子函数中定义了结构体指针,并用malloc分配内存,将指针值返回到主函数,在主函数依然可以按照结构体访问这块内存 请问 子函数结束时 指针变量已经消亡了 但那一块内存的属性并没有变化 是不是有一些更具有全局性的东西在管理内存啊?
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
这30个CSS选择器,你必须熟记(上)
关注前端达人,与你共同进步CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计,我们能轻而易举的改变颜色、布局、制作出漂亮的影音效果等等,我们只需要改几行代码,不需...
国产开源API网关项目进入Apache孵化器:APISIX
点击蓝色“程序猿DD”关注我回复“资源”获取独家整理的学习资料!近日,又有一个开源项目加入了这个Java开源界大名鼎鼎的Apache基金会,开始进行孵化器。项目名称:AP...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
编写Spring MVC控制器的14个技巧
本期目录 1.使用@Controller构造型 2.实现控制器接口 3.扩展AbstractController类 4.为处理程序方法指定URL映射 5.为处理程序方法指定HTTP请求方法 6.将请求参数映射到处理程序方法 7.返回模型和视图 8.将对象放入模型 9.处理程序方法中的重定向 10.处理表格提交和表格验证 11.处理文件上传 12.在控制器中自动装配业务类 ...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
求小姐姐抠图竟遭白眼?痛定思痛,我决定用 Python 自力更生!
点击蓝色“Python空间”关注我丫加个“星标”,每天一起快乐的学习大家好,我是 Rocky0429,一个刚恰完午饭,正在用刷网页浪费生命的蒟蒻...一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:是谁!是谁把我女朋友的照片放出来的!awsl!太好看了叭...等等,那个背景上的一堆鬼画符是什么鬼?!真是看不下去!叔叔婶婶能忍,隔壁老王的三姨妈的四表...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问