这是一个关于数据结构的链表指针赋地址值问题 5C

#include<iostream>
#include<conio.h>
#include<string.h>
#define OK 1
#define MAXSIZE 100
using namespace std;
typedef  int Status;

typedef  struct  
{
char name[5];
float price;    
}Book;

typedef Book ElemType;

typedef  struct LNode
{
ElemType data;
struct LNode *next;


}LNode,*LinkList;
LNode *A;


Status InitList(LNode *L)
{
L=new LNode;
if(!L)
exit(-1);
else
(*L).next=NULL;
return OK;
}

int main()
{
LNode *L;

InitList(L);

cout<<(*L).next;
//下面三行是测试代码,同样给指针赋值为NULL,测试结果,当屏蔽上面代
//码的时候发现,可以出现值。不屏蔽的话,则溢出,执行cout<<(*L).next溢出

int *a;
a=NULL;
cout<<a;




getch();


return 0;
}

给链表结点初始化,给next指针赋值为NULL,并输出next指针地址,运行后程序溢出。
我为了探究原因,设计了指针A给A指针赋值NULL,单处运行测试语句,
程序并没有溢出,并且显示出了一个值。
为什么呢,都是赋值NULL,都是输出指针,区别为啥这么大?

c++

1个回答

#include<iostream>
#include<conio.h>
#include<string.h>
#define OK 1
#define MAXSIZE 100
using namespace std;
typedef  int Status;

typedef  struct  
{
char name[5];
float price;    
}Book;

typedef Book ElemType;

typedef  struct LNode
{
ElemType data;
struct LNode *next;


}LNode,*LinkList;
LNode *A;


Status InitList(LNode **L)
{
*L=new LNode;
if(!(*L))
exit(-1);
else
(*L)->next=NULL;
return OK;
}

int main()
{
LNode *L;
InitList(&L);
cout<<(*L).next;
//下面三行是测试代码,同样给指针赋值为NULL,测试结果,当屏蔽上面代
//码的时候发现,可以出现值。不屏蔽的话,则溢出,执行cout<<(*L).next溢出

int *a;
a=NULL;
cout<<a;
getch();
return 0;
}

指针的指针作为参数才能修改指针。指针作为参数只能修改值

qq_43412960
qq_43412960 谢谢
大约 2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
这是一个关于 数据结构链表结点指针赋值问题
``` #include<iostream> #include<conio.h> #include<string.h> #define OK 1 #define MAXSIZE 100 #define ERROR -1 using namespace std; typedef int Status; #define OK 1 typedef struct { char name[5]; float price; }Book; typedef Book ElemType; typedef struct LNode { Book data; LNode *next; }LNode,*List; Status InitList(List &L) { L=new LNode(); /*if(!B) exit(-1); else */ L->next=NULL; return OK; } Status GetElem(int i,List L,ElemType &e) { List P=L->next; int j=1; while(P&&j<1) { P=P->next; ++j; } if(!P||j<i) return ERROR; e=P->data; return OK; } Status QianCha(List Head,List L,List shou) { if(Head->next=NULL) { Head->next=L; L->next=shou; } else { Head->next=L->next; L->next=NULL; } return 0; } void Q(List &L,int n) { L=new LNode(); L->next=NULL; for(int i=0;i<n;i++) { LNode *p=new LNode(); cin>>(p->data.price); p->next=L->next; L->next=p; } } int main() { Book e; /* 注释代码不用看! LNode *tou=NULL; List LL=NULL; List MM=NULL; InitList(tou); List BBB=NULL; InitList(BBB); InitList(LL); InitList(MM); QianCha(tou,BBB,LL); QianCha(tou,,BBB); GetElem(1,tou,e); */ List haha; Q(haha,4); cout<<e.price; getch(); return 0; } ``` 这是我写的代码,想测试 用前插法生成单链表,在单步调试过程中, 出现这个界面 ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577536824_731100.png) 生成了结点L空间,给L的属性next指针赋值,调试工具中不能看到NULL(即000000地址)为什么呢?
数据结构双向链表指针属性指向的问题
最近在看《零基础学java》,在数据结构中看到双向链表,说每个链表元素都有两个指针属性,一个是previous指向上一个元素本身,另一个是next执行下一个元素本身。可双向链表的结构图却是相反的。问具体是什么情况
这是 一个关于数据结构的链表问题
``` #include<iostream> #include<conio.h> #include<string.h> #define OK 1 #define MAXSIZE 100 using namespace std; typedef int Status; typedef struct { char name[5]; float price; }Book; typedef Book ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; LNode *A; Status InitList(LNode *L) { L=new LNode; if(!L) exit(-1); else (*L).next=NULL; return OK; } int main() { LNode *L; InitList(*L); cout<<L; getch(); return 0; } ``` 这是我写的完整代码,就是生成了链表结点,还有初始化链表。 其中, ![图片说明](https://img-ask.csdn.net/upload/201912/22/1576944898_291707.png) 划线部分,两个参数我写的一样的,因为形参和实参要一致 但是却报错 --------------------Configuration: 线性表 - Win32 Debug-------------------- Compiling... 线性表.cpp E:\数据结构\线性表.cpp(45) : error C2664: 'InitList' : cannot convert parameter 1 from 'struct LNode' to 'struct LNode *' No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called Error executing cl.exe. 线性表.exe - 1 error(s), 0 warning(s) 为甚么呢?
这是一个关于数据结构的链表问题
``` #include<iostream> #include<conio.h> #include<string> #include<iostream> #include<conio.h> using namespace std; #define OK 1; typedef int Status; typedef struct { string name; float price; }Book; typedef Book ElemType; typedef struct LNode { ElemType Elem; LNode *Next; }LNode,*List; Status InitList( List &L) { L=new LNode(); L->Next=NULL; return OK; } Status Q(List &tou,int n) { tou=new LNode(); while(n>=0) { List P=new LNode(); P->Next=tou->Next; tou->Next=P; n--; } return 0; } int main() { List tou; Q(tou,4); getch(); return 0; } ``` 我想测试链表中的前插法,Q函数就是完成的这个功能。 我的疑问是: 主函数中,Q(tou,4)表示生成一个头结点tou,后面接四个结点。 四个结点,由Q函数内容可以知道,结点名都是P。请问这样写,为什么能成功呢? 四个结点P,不就是4个重复变量了吗,变量是不能重复的啊!
这是一个关于数据结构链表的相关问题
``` #include<iostream> #include<conio.h> #include<string.h> #define OK 1 #define MAXSIZE 100 using namespace std; typedef int Status; #define OK 1 typedef struct { char name[5]; float price; }Book; typedef struct LNode { Book Elem; LNode *next; }LNode,*List; Status InitList(List *L) { L=new List(); if(!L) exit(-1); //else // (*L).next=NULL; return OK; } int main() { LNode L; L.Elem.price=1; List * LL; InitList(LL); getch(); return 0; } ``` 这是我写的关于链表初始化的代码, 调试过程中发现了一个问题 ![图片说明](https://img-ask.csdn.net/upload/201912/22/1577028508_176326.png) L的值是地址我可以理解,毕竟是指针变量嘛, *L的值怎么还是地址?*L不应该是L地址中的内容吗?应该是结构体值啊!要不L开辟的空间给谁。
这是一个关于数据结构链表 前插法 的指针内容问题
``` #include<iostream> #include<conio.h> #include<string.h> #define OK 1 #define MAXSIZE 100 #define ERROR -1 using namespace std; typedef int Status; #define OK 1 typedef struct { char name[5]; float price; }Book; typedef Book ElemType; typedef struct LNode { Book data; LNode *next; }LNode,*List; Status InitList(List &L) { L=new LNode(); /*if(!B) exit(-1); else */ L->next=NULL; return OK; } Status GetElem(int i,List L,ElemType &e) { List P=L->next; int j=1; while(P&&j<1) { P=P->next; ++j; } if(!P||j<i) return ERROR; e=P->data; return OK; } Status QianCha(List Head,List L,List shou) { if(Head->next=NULL) { Head->next=L; L->next=shou; } else { Head->next=L->next; L->next=NULL; } return 0; } void Q(LNode * &L,int n) { L=new LNode(); L->next=NULL; cout<<L->next; for(int i=0;i<n;i++) { LNode *p=new LNode(); cin>>(p->data.price); p->next=L->next; L->next=p; } } int main() { Book e; /* 注释代码不用看! LNode *tou=NULL; List LL=NULL; List MM=NULL; InitList(tou); List BBB=NULL; InitList(BBB); InitList(LL); InitList(MM); QianCha(tou,BBB,LL); QianCha(tou,,BBB); GetElem(1,tou,e); */ LNode * haha; Q(haha,4); cout<<e.price; getch(); return 0; } ``` 这是我写代码,在调试Q函数(即前插法制造链表)过程中发现 ![图片说明](https://img-ask.csdn.net/upload/201912/29/1577595606_492880.png) L——>next没有值(我很奇怪,因为L是LNode类型指针,它的next被赋值NULL后应该为0000) (*L)->next为000000 这个好奇怪,L是指针类型,那么(*L)就是值类型,值类型不能用->写法的,而且最终得0,也非常奇怪
数据结构的链表指针问题
1、 pa->next=PA; pc=pa; pc->next=PB; pa->next=?(PA还是PB?) 也就是这里pa的下一个节点是否会因为pc的指向而改变?还是单纯的把pa的值赋给pc? 2、 p->next=a; p=p->next; p->next=b; a->next=b? a的next是b吗
这是一个关于链表结点的指针问题
``` #include<iostream> #include<conio.h> #include<string> #include<iostream> #include<conio.h> using namespace std; #define OK 1; typedef int Status; typedef struct { string name; float price; }Book; typedef Book ElemType; typedef struct LNode { ElemType Elem; LNode *Next; }LNode,List; Status InitList(LNode *L) { L=new LNode(); return OK; } int main() { LNode *LL; InitList(LL); getch(); return 0; } ``` 上面是我的测试代码。我想测试下链表结点,结构体指针用法。发现了一个很奇怪的现象 ![图片说明](https://img-ask.csdn.net/upload/202001/02/1577950414_463276.png) InitList中的形参是结构体指针L是指针类型,也就是说L是地址。但是我调试的时候,发现L变成了值。那一堆省略号可以体现出来。这是第一个疑问。 L是子函数里的参数,调试退出子函数后,L应该消失才对,不应该有值,但调试结果显示出一堆省略号,证明它还是存在的。这是第二个疑问,求解
这是一个关于数据结构链表结点的相关问题
``` #include<iostream> #include<conio.h> #include<string> #include<iostream> using namespace std; typedef struct { string name; float price; }Book; typedef Book ElemType typedef struct LNode { ElemType Elem; LNode *Next; }*LNod,List; int main() { cout<<a[2]; getch(); return 0; } ``` 我定义了一个链表的结构,报错如下 --------------------Configuration: 线性表 - Win32 Debug-------------------- Compiling... 线性表.cpp E:\数据结构\线性表.cpp(15) : error C2143: syntax error : missing ';' before '<class-head>' E:\数据结构\线性表.cpp(15) : fatal error C1004: unexpected end of file found Error executing cl.exe. 线性表.exe - 2 error(s), 0 warning(s) 为什么呢
这是一个关于C语言数据结构的指针的问题
``` #include<iostream> #include<conio.h> #include<string.h> #define OK 1 #define MAXSIZE 100 using namespace std; typedef int Status; #define OK 1 typedef struct { char name[5]; float price; }Book; typedef struct LNode { Book Elem; LNode *next; }LNode,*List; Status InitList(LNode *B) { B=new LNode(); if(!B) exit(-1); else B->next=NULL; return OK; } int main() { LNode *L; List LL; InitList(L); cout<<L->next; getch(); return 0; } ``` 指针是引用类型,链表结点初始化,我用指针传递,修改结点内容的值,应该L里内容会变的,但是没变,这是为什么呢?
这是数据结构一个简单的链表问题
``` #include<iostream> #include<conio.h> #include<string.h> #define OK 1 #define MAXSIZE 100 using namespace std; typedef int Status; typedef struct { char name[5]; float price; }Book; typedef Book ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; int main() { LNode *L=new LNode(); LNode *LL; *L.next=LL; getch(); return 0; } ``` 我想弄个含两个结点的单链表,*L是第一个,*LL是第二个,但是在写地址相连代码的时候(即*L.next=LL;),报了这个错误 ![图片说明](https://img-ask.csdn.net/upload/201912/20/1576854200_271660.png) 我感觉很奇怪,定义的指针L也开辟空间了,然后选取了地址next属性,完成对另一个指针的赋值,代码应该没毛病啊。求教
这是我写关于数据结构链表初始化功能的一个代码
``` #include<iostream> #include<conio.h> #include<string.h> #define OK 1 #define MAXSIZE 100 using namespace std; typedef int Status; #define OK 1 typedef struct { char name[5]; float price; }Book; typedef struct LNode { Book Elem; LNode *next; }LNode,*List; Status InitList(List *L) { L=new List(); if(!L) exit(-1); else (*L).next=NULL; return OK; } int main() { LNode L; L.Elem.price=1; List * LL; getch(); return 0; } ``` 为什么会报错 --------------------Configuration: 线性表 - Win32 Debug-------------------- Compiling... 线性表.cpp E:\数据结构\线性表.cpp(29) : error C2228: left of '.next' must have class/struct/union type Error executing cl.exe. 线性表.exe - 1 error(s), 0 warning(s) 大概是 (*L).next=NULL; 出了问题。我很纳闷,*L整体是个值结构体类型,给地址赋值,这么写没有问题啊
c语言数据结构链表空指针问题
这是一个在LeetCode上面的问题,就是把两个已经排序的链表合成一个也是排序的链表,如{1,2,3},{2,3,5}变为{1,2,2,3,3,5}; 在指针传入mergeTwoLists(struct ListNode* l1, struct ListNode* l2) 函数之前,就对其进行验证,看其是否为空指针![在指针传入mergeTwoLists(struct ListNode* l1, struct ListNode* l2) 函数之前,就对其进行验证,看其是否为空指针](https://img-ask.csdn.net/upload/201803/09/1520607866_55354.png) 结果说明不是空指针 ![结果说明不是](https://img-ask.csdn.net/upload/201803/09/1520607815_42578.png) 但是最后结果却说l2是一个空指针,想不通![但是最后结果让人很无奈](https://img-ask.csdn.net/upload/201803/09/1520608187_189608.png) 结果 ![图片说明](https://img-ask.csdn.net/upload/201803/09/1520610748_272371.png) 附上源代码 ``` #include<stdio.h> #include<stdlib.h> #include<string.h> struct ListNode { int val; struct ListNode *next; }; void Print(struct ListNode* l); struct ListNode* CreateList(int a[]); struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2); int main() { int a[] = { 1,2,3,4 }; int b[] = { 1,2,3,4,5 }; struct ListNode* ptr1 = CreateList(a); struct ListNode* ptr2 = CreateList(b); if (ptr2 == NULL) printf("a null"); printf("not a null\n"); printf("%d", ptr2->val); printf("%d", ptr2->next->val); printf("%d", ptr2->next->next->val); printf("%d", ptr2->next->next->next->val); struct ListNode* ptr3 = mergeTwoLists(ptr1, ptr2); //printf("%d", ptr3->val); //printf("%d", ptr3->next->val); //printf("%d", ptr3->next->next->val); //printf("%d", ptr3->next->next->next->val); system("pause"); } struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) //将l1 和 l2 合成 l3, 并返回指向l3的指针 { if (l1 == NULL&&l2 == NULL) return NULL; struct ListNode* res = (struct ListNode*)malloc(sizeof(struct ListNode)); res->val = 0; res->next = NULL; struct ListNode* head = res; while (l1 != NULL || l2 != NULL) { if (l1 == NULL) { res->next = l2; res = l2; l2 = l2->next; } else if(l2==NULL) { res->next = l1; res = l1; l1 = l1->next; } if (l1->val >= l2->val) { res->next = l2; res = l2; l2 = l2->next; } else { res->next = l1; res = l1; l1 = l1->next; } } return head->next; } struct ListNode* CreateList(int a[])//用数组a创造一个链表 { struct ListNode* res = (struct ListNode*)malloc(sizeof(struct ListNode)); res->val = 0; res->next = NULL; struct ListNode* head = res; struct ListNode*new; int length = sizeof(a); //printf("%d", length); for (int i = 0; i < length; i++) { res->val = a[i]; //printf_s("%d-------", res->val); new = (struct ListNode*)malloc(sizeof(struct ListNode)); new->val = 0; new->next = NULL; res->next = new; res = res->next; } //printf("%d", head->val); //printf("%d", head->next->val); //printf("%d", head->next->next->val); //printf("%d", head->next->next->next->val); return head; } ```
这是数据结构一个链表初始化问题
``` #include<iostream> #include<conio.h> #include<string.h> #define OK 1 #define MAXSIZE 100 using namespace std; typedef int Status; #define OK 1 typedef struct { char name[5]; float price; }Book; typedef struct LNode { Book Elem; LNode *next; }LNode,*List; Status InitList(LNode *L) { L=new LNode(); if(!L) exit(-1); else L->next=NULL; return OK; } int main() { LNode *L; List LL; InitList(L); cout<<L->next; getch(); return 0; } ``` 为什么输出L->next的值不为NULL,反而溢出呢?
数据结构中单链表元素交换问题
数据结构中,要实现单链表的两个节点相交换,指针的指向怎么改变
Java语言设计实现一个链表的数据结构,不要使用现有的库的代码,并且插入5个数字再输出
Java语言设计实现一个链表的数据结构,不要使用现有的库的代码,并且插入5个数字再输出
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
JAVA后端面试《Spring》
Spring1.Spring是什么?有什么好处?2.IOC是什么?有什么好处?具体过程?3.DI是什么?4.IOC和DI的关系?5.bean标签的属性有哪些?6.IOC创建对象有哪几种方式?7.Spring是如何实现IOC的?也就是如何创建对象的? 1.Spring是什么?有什么好处? 概念: SPring是一个支持控制反转(IOC)和面向切面编程(AOP)的容器框架。 好处: 两降低&gt;&...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问