C语言输出的时候为什么会覆盖之前的输出?

代码如下

图片说明

这代码在输出line2的时候会覆盖line1,这是为什么呢…

输出结果是这样的:

图片说明

fp1指向1.txt,fp2指向2.txt。1.txt文件中第一行的末尾是end1,2.txt文件中第一行的末尾是end2,可以看到输出的时候line2的内容会覆盖掉line1的内容,这是为什么啊?

1.txt文件内容如下:

图片说明

2.txt文件内容如下:

图片说明

2个回答

我倒腾了一下发下我fopen是用“rb”模式打开
Windows环境中,文本模式下换行符会被看作\n,而二进制模式下换行符会被看作\r\n,这导致我在后来替换换行符的时候只替换了\n,留下了\r,于是光标又回到了开头,因此输出的时候就会被覆盖
解决办法要么把“rb”改成“r”,要么在替换的时候\r\n一起替换

fp = fopen("文件名","a+");
a+表示追加方式

https://blog.csdn.net/harkhuang/article/details/9017499

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
求救,为什么我C语言写的顺序表存储的有序表的的合并没有警告也没有错误但是无法输出呢?
``` #include<stdlib.h> #include<stdio.h> //长度与空间是检测 typedef int Status; // Status 是函数返回值类型,其值是函数结果状态代码。 #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define List_Init_Size 10 //线性表存储空间初始分配量 #define Listincerment 10 //线性表存储空间的分配增量 typedef struct SqList { int *elem; int length; int listsize; //当前分配的存储容量() }SqList; Status InitList(SqList*L) {//初始化顺序线性表// L->elem=(int*)malloc(List_Init_Size*sizeof(int)); if(!L->elem)exit(OVERFLOW); //存储分配失败 L->length=0; L->listsize=List_Init_Size; return OK; } Status GetElem(SqList a,int i,int*e) { //读取元素 if(i<0||i>a.length) return ERROR;//在表内 e=&a.elem[i-1]; //i-1存储第i个元素 return OK; } int ListLength(SqList L) { //计算长度 if(!L.elem)exit(ERROR); //空间存在 return L.length; } Status ListInsert(SqList *L, int i, int e) { //i位置之前。。。插入新元素e if(i<1||i>L->length+1)return ERROR; //在表内 if((L->length)>=(L->listsize)){ //当前存储空间已满,增加分配 int*newbase,*q,*p; newbase=(int*)realloc(L->elem,(L->listsize+Listincerment)*sizeof(int)); if(!newbase)exit(OVERFLOW);//存储分配失败} L->elem=newbase; //新的基址 L->listsize+=Listincerment; //增加容器容量 q=&(L->elem[i-1]); //q为插入位置 for(p=&(L->elem[L->length-1]);p>=q;--p) //实质为数组,所以下标注意。 *(p+1)=*p; //插入位置及以后的元素后移 ,副本的覆盖。 *q=e; //插入e ++L->length; } return OK;} void output(SqList L) { int i; for(i=0;i<L.length;i++) { printf("%d ",L.elem[i]); } } void MergeList(SqList LA, SqList LB, SqList *LC) //顺序有序表的合并 { //归并LA和LB得到新的顺序有序表LC,LC的元素也按值非递减排列 int *pa, *pb, *pc, *pa_last, *pb_last; pa = LA.elem; pb = LB.elem; //指针pa和pb的初值分别指向两个表的第一次元素 LC->listsize=LC->length = LA.length + LB.length; //新表长度为待合并两表的长度之和 LC->elem = (int*)malloc(LC->listsize*sizeof(int)); //为合并后的新表分配一个数组空间 pc = LC->elem; //指针pc指向新表的第一个元素 pa_last = LA.elem + LA.length - 1; //指针pa_last指向LA表的最后一个元素 pb_last = LB.elem + LB.length - 1; //指针pb_last指向LB表的最后一个元素 while (pa <= pa_last && pb <= pb_last) //两个表都非空 { if (*pa <= *pb) //依次“摘取”两表中值较小的结点插入到LC表的最后 *pc++ = *pa++; else *pc++ = *pb++; } while (pa <= pa_last) //LB已到达表尾,依次将LA的剩余元素插入LC表的最后 *pc++ = *pa++; while (pb <= pb_last) //LA已到达表尾,依次将LB的剩余元素插入LC表的最后 *pc++ = *pb++; } void main() { SqList a,b,c; int i,j,k; InitList(&a); InitList(&b); printf("输入要写入链表a中元素的个数\n"); scanf("%d",&j); printf("输入每个元素"); for(i=1;i<=j;i++) { int e; scanf("%d",&e); ListInsert(&a,i,e); } printf("输入要写入链表b中元素的个数\n"); scanf("%d",&k); printf("输入每个元素"); for(j=1;j<=k;i++) { int e; scanf("%d",&e); ListInsert(&b,i,e); } MergeList(a,b,&c); output(c); } ```
关于(C/C++)语言文件读写中输出(覆盖)的问题(想要覆盖修改部分文件内容)
最近研究了一下Zip文件的结构,然后想改一下尾部的注释(即要覆盖部分原内容),但是出现了问题 自己又写了一个简易测试代码(用的文件读写方式一样) ``` #include<stdio.h> using namespace std; int main() { FILE* fp; fp=fopen("1.txt","rb+"); //1.txt 中为 "a b c" /*char a='d'; putc(a,fp);*/ //在没输入这一段的时候输出正常 while (!feof(fp)){ printf("%c",getc(fp)); } fclose(fp); return 0; } ``` 在输入了现在我已注释掉的程序片段后,就读不到任何内容,输出无内容,并死循环 请大神帮忙指点,看看是不是函数用错了,还是文件读写方式的问题,抑或是其它问题,谢谢!
初学c语言,可以评价一下我写的顺序表吗?
望各位批评指教,十分感谢。 ``` #include <stdio.h> #include <stdlib.h> #define INITSIZE 100 typedef struct { int * data; //声明一个动态数组 int length; //记录当前顺序表的长度(实际长度) int MaxSize; //顺序表的最大长度 }SqList; /* 初始化顺序表,调用InitList()函数可以创建一个空的顺序表 */ void InitList(SqList *L) { (*L).data = (int*)malloc(INITSIZE*sizeof(int)); //构造新的顺序表并为顺序表分配空间 (*L).length = 0; //空表的长度为0; (*L).MaxSize = INITSIZE; //空表的初始存储空间为INITSIZE } /* 输出打印顺序表 */ void PrintList(SqList *L) { for(int i=0;i<(*L).length;i++) { printf("%4d",(*L).data[i]); } printf("\n"); } /* 顺序表插入操作 将给定值e插入到顺序表的第i个位置 */ void InsertList(SqList *L,int e,int i) { //判断i的范围是否合法 if(i<1||i>(*L).MaxSize) { printf("插入位置有问题。\n"); return; } //判断顺序表是否已满 if((*L).length==(*L).MaxSize) { printf("顺序表已满,无法插入\n"); return; } //执行插入操作。将第i个位置及其后的元素后移 for(int j=(*L).length-1;j>=i;j++) { (*L).data[j+1] = (*L).data[j]; } //然后将待插入的元素放入第i个位置,由于数组下标是从0开始,所以第i的位置的元素下标应该是i-1 (*L).data[i-1] = e; //顺序表长度加一 (*L).length++; } /* 顺序表删除操作 删除顺序表上第i个位置上的元素 */ void DeleteList(SqList *L,int i) { //判断i的范围是否合法 if(i<1||i>(*L).MaxSize) { printf("删除位置有问题。\n"); return; } //将顺序表中第i个之后的元素前移,把第i的位置上原有的元素覆盖掉,实现删除 for(int j=i-1;j<(*L).length;j++) { (*L).data[j] = (*L).data[j+1]; } //顺序表长度加一 (*L).length--; } /* 顺序表查找操作 按位查找 查找顺序表上第i个位置上的元素 */ void SearchList_1(SqList (*L),int i) { //判断i的范围是否合法 if(i<1||i>(*L).length) { printf("查找的位置有问题。\n"); return; } printf("顺序表上第%d个元素为:%d\n",i,(*L).data[i-1]); } /* 顺序表查找操作 按值查找 查找给定值在顺序表中的位置 */ int SearchList_2(SqList *L,int e) { for(int i=0;i<(*L).length;i++) { if((*L).data[i]==e) return i+1; } printf("查找失败\n"); return -1; } /* 顺序表修改操作 修改顺序表第i个位置上的元素修改为新的值e */ void ChangeList(SqList *L,int i,int e) { //判断i的范围是否合法 if(i<1||i>(*L).length) { printf("需要修改的位置有问题。\n"); return; } (*L).data[i-1] = e; } /* 主函数 */ int main() { SqList *L; //初始化线性表 InitList(&L); //往顺序表中插入元素 InsertList(&L,12,1); InsertList(&L,24,2); InsertList(&L,38,3); InsertList(&L,45,4); InsertList(&L,52,5); InsertList(&L,69,6); InsertList(&L,73,7); //输出打印顺序表中所有元素 printf("原顺序表:"); PrintList(&L); //查找 printf("查找顺序表中第3个元素:");SearchList_1(&L,3); printf("69是顺序表中第%d个元素\n",SearchList_2(&L,69)); //删除线性表中元素 printf("删除第二个元素\n"); DeleteList(&L,2); printf("删除之后的顺序表:"); PrintList(&L); //修改顺序表的元素 printf("将顺序表中第3个元素修改为100\n"); ChangeList(&L,3,100); printf("一顿操作之后的顺序表:"); PrintList(&L); return 0; } ```
使用codeblock调试该控制台编程程序时为什么出现这个报错?
![图片说明](https://img-ask.csdn.net/upload/201912/16/1576458144_934096.png) ``` #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> #include <Windows.h> #include <conio.h> int main() { //定义输出信息 char *str = "Hello World!"; int i; int len = strlen(str); //阴影属性 WORD shadow = BACKGROUND_INTENSITY; //文本属性 WORD text = BACKGROUND_GREEN | BACKGROUND_INTENSITY; //获得标准输出设备句柄 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //定义窗口缓冲区信息结构体 CONSOLE_SCREEN_BUFFER_INFO screenInfo; //获得窗口缓冲区信息 GetConsoleScreenBufferInfo(hOut, &screenInfo); //定义一个文本框输出区域 SMALL_RECT rc; //定义文本框的起始坐标 COORD posText; //定义阴影框的起始坐标 COORD posShadow; //确定区域的边界 rc.Top = 8; //上边界 rc.Bottom = rc.Top + 4; //下边界 rc.Left = (screenInfo.dwSize.X - len) / 2 - 2; //左边界,为了让输出的字符串居中 rc.Right = rc.Left + len + 4; //右边界 //确定文本框起始坐标 posText.X = rc.Left; posText.Y = rc.Top; //确定阴影框的起始坐标 posShadow.X = posText.X + 1; posShadow.Y = posText.Y + 1; for (i = 0; i < 5; ++i) //先输出阴影框 { FillConsoleOutputAttribute(hOut, shadow, len + 4, posShadow, NULL); posShadow.Y++; } for (i = 0; i < 5; ++i) //在输出文本框,其中与阴影框重合的部分会被覆盖掉 { FillConsoleOutputAttribute(hOut, text, len + 4, posText, NULL); posText.Y++; } //设置文本输出处的坐标 posText.X = rc.Left + 2; posText.Y = rc.Top + 2; WriteConsoleOutputCharacter(hOut, str, len, posText, NULL); //输出字符串 getchar(); SetConsoleTextAttribute(hOut, screenInfo.wAttributes); // 恢复原来的属性 CloseHandle(hOut); system("pause"); return 0; } ``` 出错代码片段为 ``` FillConsoleOutputAttribute(hOut, shadow, len + 4, posShadow, NULL); ``` 来自 <https://blog.csdn.net/dengjin20104042056/article/details/90549161>
求大神用c++或c语言解答,本人速求,谢谢!
题目描述 欲穷千里目,更上一层楼。 阿克先生喜欢旅游。某一天,他来到魔法森林旅游。 经过观察,他发现魔法森林一共有​n个城市,每个城市有一座高高的魔法塔,第i​个城市的魔法塔的高度为hi​。这些城市一共由​n-1条道路连接,任意两座城市互相可达。 阿克先生想要站在某一座塔上观察尽可能多城市的风景。不幸的是,阿克先生没有透视眼,较高的塔将会遮蔽较低的塔。同时,魔法森林其他地方也被茂林覆盖,他的视线无法穿过茂林(但因为是魔法塔,塔上储存了镜面魔法,可以使阿克先生的视线在城市水平任意角度转弯)。 所以,他只能沿着n-1​条道路观察其他的点。 但是,魔法森林的道路蜿蜒曲折,他观看的城市到他所在的点的路径要么互相包含要么两两不交。且从他所在的点开始,到任意它观察的城市,所成的高度序列单调不增。 阿克先生想要知道他最多能观察到多少个城市(包括自身),他快速地秒了这道题,但他懒得写代码了,所以请你帮他算一算。 输入 第一行一个整数​n; 第二行​个整数​h1,h2…hn; 第三到第​n+1行两个整数u,v,表示有一个连接​u,v的道路。 输出 一个整数​ans,表示最多能看到多少个城市。 样例输入 11 10 4 5 11 8 9 3 2 1 7 6 1 2 1 3 1 4 2 10 2 11 3 7 3 8 4 5 4 6 7 9 样例输出 7 数据范围限制 对于​30%的数据 保证​ n<=5000 对于另外20​%的数据 保证 v=u+1 对于另外20%的数据 保证 hi互不相同 对于​100%的数据 保证​ n<=500000 提示 选择4号城市,可以看到1,3,4,5,6,7,9共7个城市
PAT 乙级1005 继续(3n+1)猜想 C语言 利用递归函数 第四个测试点答案错误 求大佬解答
``` #include<stdio.h> int function(int p,int q); int main(void){ int n; scanf("%d",&n); int a[n]; for (int i = 0; i < n; i++) { scanf("%d",&a[i]); } int ret[100]={0}; int cnt=0; for (int i = 0; i < n; i++) { int flag=1; int order=0; //除a[i]以外的其他数都不覆盖a[i] while (order<n) { if (order==i) { order++; continue; } if(function(a[order],a[i])){ flag=0; } order++; } if (flag) { ret[cnt]=a[i]; cnt++; } } //由大到小排序 for (int i = 0; i < cnt-1; i++) { int t; for (int j = i+1; j < cnt ; j++) { if (ret[i]<ret[j]) { t=ret[i]; ret[i]=ret[j]; ret[j]=t; } } } //输出 for (int i = 0; i < cnt-1; i++) { printf("%d ",ret[i]); } printf("%d",ret[cnt-1]); return 0; } //递归函数用于检测q是否被p覆盖 int function(int p,int q){ if (p==1) { return 0; }else if(p==q){ return 1; } if(p%2) { p=3*p+1; }else { p/=2; } return function(p,q); } ```
大家能帮我看看最后面排序输出的时候为什么出错吗
int shuzu=5; //定义了数组元素的个数 int powers[]={11,22,33,44,55}; int shanchu; //需要删除的数字 int xiabiao=-1; //找到删除数字的下标 int charu; int i ,j; //循环变量 int t; printf("请输入要删除的数字"); scanf("%d",&shanchu); // 使用循环找到需要删除后的那个的数字 for (i=0;i<shuzu;i++) { if(shanchu==powers[i]) { //记录下当前的下标 xiabiao=i; break; //找到了删除的数字就跳出 } } //根据判断是否找到 if(-1==xiabiao) { printf("没有找到"); } else { //从找到的下标开始,后面一个覆盖前面一个数字 for(i=xiabiao;i<shuzu-1;i++) { powers[i]=powers[i+1]; } //删除完后,一定要记得数组的长度-1 shuzu--; printf("删除后的结果为;\n"); for (i=0;i<shuzu;i++) { printf("%d\t",powers[i]); } } //删除之后进行插入 printf("\n"); printf("输入需要插入的值"); scanf("%d",&charu); powers[shuzu]=charu; shuzu++; for (i=0;i<shuzu;i++)//注意现在的数组长度需要+1 { printf("%d\t",powers[i]); } printf("将数组排序输出:\n"); //将输出的数组排序 for(i=0;i<shuzu-1;i++) { for(j=0;j<shuzu-i-1;j++) { if(powers[j]<powers[j+1]) //将最小的一个值放在最后面 { t=powers[i]; powers[i]=powers[i+1]; powers[i+1]=t; } } } for (i=0;i<shuzu;i++)//注意现在的数组长度需要+1 { printf("%d\t",powers[i]); } ![图片说明](https://img-ask.csdn.net/upload/201901/09/1547026400_911113.png)
问一个很愚蠢的基础问题,p=p->next链表循环里,为什么这样不会覆盖掉链表的值啊
链表循环里 比如L是带头节点的单链表 循环单链表一般都是 ``` list p=(list)malloc(sizeof(link)); p=L->next; while(p) { printf("%d ",p->data); p=p->next; } ``` 为什么节点值没有一个一个被覆盖掉,下一次遍历还存在啊。 比如L 这个链表里面值分别是 1,2,3,4,5,按照p=p->next不应该是1这里的节点被2代替,2被3代替了么,求解求解,以前写代码就只是写写没有思考过。。。 还有 ``` 单链表构建栈反向输出链表节点值 void print(list p) if(p->next!=0) print(p->next); printf("%d",p->data);} 它为什么可以输出最后一个节点以外值不应该输出了最后一个节点值就跳出程序么 ```
请问ASCII控制字符的问题?c语言字符串的问题
请问为什么输出是\xb2? 别人给我说0 1是控制字符 但是我还是没懂 多试了几次发现是\0及后面两位无法输出 我看了strcpy这个函数的原理,是从后面那个参数的(字符串)开始覆盖前面 那么后面这个字符串的开头不就应该是\0后的第一位么? ``` #include <stdio.h> #include <malloc.h> #include <string.h> int main(void) { char *a; a = (char *)malloc(sizeof(char)*20); if(a) { strcpy(a,"\0101\\xb2"); printf("%s\n",a); free(a); } return 0; } ```
c语言数据结构 表达式求值
**目的:1)掌握栈的概念与基本操作; 2)掌握文本文件的读写操作。 要求:实现任意加、减、乘、除与括号的表达式求值; 输入输出格式要求如下: 输入文件input.txt内容: 2*(4-100)= 3*5+9/3= 100-20*(4*6/3)= 输出文件output.txt内容(output.txt文件为自动生成,若已存在则覆盖): 2*(4-100)=-192 3*5+9/3=18 100-20*(4*6/3)=-60** 求大神帮帮咯 代码如下,就是不会写文件那部分: #include <stdio.h> #include <stdlib.h> #define MAX 20 //定义第一个栈---作为存放运算数的操作符 struct SNode_Num { int datas[MAX]; int top; }; typedef struct SNode_Num OperateNum; //定义第二个栈---作为存放运算符号的栈 struct SNode_Symbol { char symbol[MAX]; int top; }; typedef struct SNode_Symbol OperateSymbol; /******************************************************************** 描述:定义函数:InitOperandNum,并且初始化运算数栈顶 参数:OperateNum *StackNum 返回值:void ********************************************************************/ void InitOperateNum(OperateNum *StackNum) { StackNum->top = -1; } /******************************************************************** 描述:定义函数: InitOperateSymbol,并且初始化运算符栈顶 参数:OperateSymbol *StackSymbol 返回值:void ********************************************************************/ void InitOperateSymbol(OperateSymbol *StackSymbol) { StackSymbol->top = -1; } /******************************************************************** 描述:定义函数:PushOperateNum, 压一个数到栈顶 参数:OperateNum *StackNum, int x 返回值:void ********************************************************************/ void PushOperateNum(OperateNum *StackNum, int x) { StackNum->top++; StackNum->datas[StackNum->top] = x; } /******************************************************************** 描述:定义函数:PushOperateSymbol,压一个运算符到栈顶 参数:OperateSymbol *StackSymbol, char ch 返回值:void ********************************************************************/ void PushOperateSymbol(OperateSymbol *StackSymbol, char ch) { StackSymbol->top++; StackSymbol->symbol[StackSymbol->top] = ch; } /******************************************************************** 描述:定义函数:PopOperateNum,将运算数从栈中读取出来 参数:OperateNum *StackNum 返回值:返回取出来的数 ********************************************************************/ int PopOperateNum(OperateNum *StackNum) { int num; num = StackNum->datas[StackNum->top]; StackNum->top--; return num; } /******************************************************************** 描述:定义函数:PopOperateSymbol,将运算符从栈中取出来 参数:OperateSymbol *StackSymbol 返回值:返回取出来的符号 ********************************************************************/ char PopOperateSymbol(OperateSymbol *StackSymbol) { char ch; ch = StackSymbol->symbol[StackSymbol->top]; StackSymbol->top--; return ch; } //取出相应的数 int GetOperateNum(OperateNum *StackNum) { return StackNum->datas[StackNum->top]; } //取出相应运算符 char GetOperateSymbol(OperateSymbol *StackSymbol) { return StackSymbol->symbol[StackSymbol->top]; } /******************************************************************** 描述:定义函数, IsOperateSymbolOrNum,判断输入的符号是那些符号 参数:char ch 返回值:有符号返回1,无符号返回0 ********************************************************************/ short IsOperateSymbolOrNum(char ch) { //判断所有需要用的操作符 包括 + - * / ( ) \n if(ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '(' || ch == ')' || ch == '\n') return 1; else return 0; } /******************************************************************** 描述:定义函数: Priority,用于判断符号优先级运算 参数:char inputnum, char ch 返回值:符号的大小的字符 ********************************************************************/ char Priority(char inputnum, char ch) { switch(inputnum) { //加减在同一个优先级上 case '+': case '-': { if(ch == '+' || ch == '-') return '>'; else if(ch == '*' || ch == '/') return '<'; else if(ch == '(') return '<'; else if(ch == ')') return '>'; else return '>'; } break; //乘除在同一优先级 case '*': case '/': { if(ch == '+' || ch == '-') return '>'; else if(ch == '*' || ch == '/') return '>'; else if(ch == '(') return '<'; else if(ch == ')') return '>'; else return '>'; } break; //括号在所有优先级以上 case '(': { if(ch == ')') return '='; else return '<'; } break; case ')': { return '>'; } break; case '\n': { if(ch == '\n') return '='; else return '<'; } break; } } /******************************************************************** 描述:定义函数: Calculate,计算结果 参数:int num1, char ch, int num2 返回值:返回两个数计算的结果result ********************************************************************/ int Calculate(int num1, char ch, int num2) { int result; switch(ch) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '*': result = num1 * num2; break; case '/': result = num1 / num2; } return result; } /******************************************************************** 描述:定义函数:MainCalc,主要用于获取用户输入,并且进行计算 参数:void 返回值:result ********************************************************************/ int MainCalc() { //主函数进行计算 OperateNum datas; OperateSymbol symbol; int num1, num2, result, num; char ch, sign; InitOperateNum(&datas); InitOperateSymbol(&symbol); //把回车计算的操作符放在栈中 PushOperateSymbol(&symbol, '\n'); ch = getchar(); while((ch != '\n') || (GetOperateSymbol(&symbol) != '\n')) { if(!IsOperateSymbolOrNum(ch)) { num = atoi(&ch); //将字符转换为整数 ch = getchar(); //获取输入 while(!IsOperateSymbolOrNum(ch)) { num = num * 10 + atoi(&ch); ch = getchar(); //当没有输入回车时,继续获取输入 } PushOperateNum(&datas, num); } else { switch(Priority(GetOperateSymbol(&symbol), ch)) { //判断优先级后进行计算 case '<': PushOperateSymbol(&symbol, ch); ch = getchar(); break; case '=': sign = PopOperateSymbol(&symbol); ch = getchar(); //获取输入 break; case '>': sign = PopOperateSymbol(&symbol); num2 = PopOperateNum(&datas); num1 = PopOperateNum(&datas); result = Calculate(num1, sign, num2); PushOperateNum(&datas, result); break; } } } result = GetOperateNum(&datas); return result; } int main(int argc, char *argv[]) { int result; printf("请输入运算式:\n"); result = MainCalc(); printf("结果为:\n"); printf("%d\n", result); //输出结果 return 0; }
函数传递时,若为f(x=1,x=2,x=3)形式,得到的形参均为一,为什么会这样?
写了如下的c语言代码: ``` #include<stdio.h> void f(int a,int b,int c) { printf("%d %d %d",a,b,c); } int main() { int x=0; f(x=1,x=2,x=3); return 0; } ``` 运行后输出 1 1 1。我知道传参时进栈顺序是从右至左。但是,为什么后两个参数明明已经算出结果了,却还是被x=1覆盖,是不是算出结果3和2后没有直接进栈?对这其中的细节有疑问,希望各位不吝赐教,谢谢!
帮忙用c写个小程序,关于教师公积金缴纳金额计算
教师公积金缴纳金额计算 功能描述: 某中学教师每月需要根据工资的总额来确定当月需要缴纳的公积金,而当月工资除了基本工资1500元以外,还包括绩效工资,绩效工资和三个因素有关,当月的值班天数,当月的监考次数以及当月的上课次数。(教师每值班一天能够获得60元的收入,每监考一次能获得30元的收入,每上课一次能获得64元的收入) 公积金的缴纳额需要根据工资总额按照一定的比例进行上交。 处理过程描述 输入: 值班天数:整型,教师每月的值班天数不少于5天,不能超过正常工作日22天。 监考次数:整型,教师监考次数不能超过10次。 上课次数:整型,上课次数不能超过30次。 值班天数,如果非整型输入,给出错误提示,如果输入范围错误,给出错误提示。 监考次数,如果非整型输入,给出错误提示,如果输入范围错误,给出错误提示。 上课次数,如果非整型输入,给出错误提示,如果输入范围错误,给出错误提示。 计算公积金: 工资总额=基本工资+绩效工资 绩效工资=值班收入+监考收入+上课收入 值班收入=值班天数×值班的天收入 监考收入=监考次数×监考次收入 上课收入=上课次数×上课次收入 需缴纳的公积金=工资总额大于5000的部分×0.25+工资总额大于4000小于5000的部分×0.2+工资总额大于2000小于4000的部分×0.15+工资总额小于2000的部分×0.1 输出: 绩效工资总额,工资总额,需要缴纳的公积金 测试任务 整个测试所包含的内容: 1、用C语言写出教师公积金缴纳问题的程序,并简单测试,确保程序基本正确 (特别说明:进一步实现其他任何非整型输入的情况,比如输入字符,建议用单独的函数实现判断,在主函数中调用此函数判断值班数/监考数/上课数是否为整数) 2、用visio画出程序所对应的流程图 3、写白盒测试用例,包含语句覆盖,判定覆盖,条件覆盖,判定-条件覆盖,条件组合覆盖,基本路径测试(根据控制流图,同样需要使用visio画出) 4、写黑盒测试用例,包含等价类划分法,边界值法,判定表法(额外补充:时间允许情况下,再用visio画出因果图法) 5、两两交叉进行测试所有黑盒和白盒测试的用例,比较测试结果和预期的结果 6、形成黑盒测试以及白盒测试的大报告
做了一个小时的面试题(没有过 希望大家帮忙答下 虽然很幼稚 毕竟每个人都是这么过来的吗 感激了!)
XX软件工程师笔试试题 注:1、请参考人员将答案写在答题纸上,勿将答案写在此卷上。 2、请参考人员将编号与姓名填写在答题纸上。 1、 以下数据结构中不属于线性数据结构的是()。 A、队列 B、线性表 C、二叉树 D、栈 我的答案:C 2、 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。 A、 可行性分析 B、需求分析 C、详细设计 D、程序编码 我的答案:B 3、 结构化程序设计主要强调的是()。 A、 程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 我的答案:C 4、 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段()。 A、 概要设计 B、详细设计 C、可行性分析 D、需求分析 我的答案:B 5、 下列关于栈的叙述中正确的是()。 A、 在栈中只能插入数据 B、在栈中只能删除数据 B、 栈是先进先出的线性表 D、栈是先进后出的线性表 我的答案:D 6、 下面不属于软件设计原则的是()。 A、 抽象 B、模块化 C、自底向上 D、信息隐蔽 我的答案:C 7、 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。 A、 N+1 B、N C、(N+1)/2 D、N/2 我的答案:C 8、 视图设计一般有3种设计次序,下列不属于视图设计的是()。 A、 自顶向下 B、由外向内 C、由内向外 D、自底向上 我的答案:C 9、下列有关数据库的描述,正确的是()。 A、数据库是一个DBF文件 B、数据库是一个关系 C、数据库是一个结构化的数据集合 D、数据库是一组文件 我的答案:C 10、下列说法中,不属于数据模型所描述的内容的是()。 A、数据结构 B、数据操作 C、数据查询 D、数据约束 我的答案:A 11、若按功能划分,软件测试的方法通常分为白盒测试方法和(黑盒测试方法)。 12、数据库系统的三级模式分别为(级联)模式、内部级模式与外部级模式。 13、在最坏情况下,冒泡排序的时间复杂度为(N+1/2)。 14、在面向对象方法中,信息隐蔽是通过对象的(封装)性来实现的。 15、关系模型的数据操纵既是建立在关系上的数据操纵,一般有(插入)、增加、删除、和修改四种操作。 16、TIME()的返回值的数据类型是(String)类型。 17、编写SQL语句 1)、创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话 我的答案: create table student( studentCardNo number(2) primary key, name char(10), age number(2), sex char(2) check(sex in (‘男’,’女’)), address varchar2(100), tel number(2) ) 2)、修改学生表的结构,添加一列信息,学历 我的答案: alter table student add(xueli varchar2(20)); 3)、修改学生表的结构,删除一列信息,家庭住址 我的答案: alter table student drop column address; 4)、向学生表添加如下信息: 学号 姓名 年龄 性别 联系电话 学历 1 A 22 男 123456 小学 2 B 21 男 119 中学 3 C 23 男 110 高中 4 D 18 女 114 大学 我的答案: insert into student values(‘&1’,’&2’,’&3’); 一次一次添加 5)修改学生表的数据,将电话号码以11开头的学员的学历改为“大专” 我的答案: update student set xueli=”大专” where tel like 11%; 6)删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 我的答案: delete student where name like C% or sex=”男”; 7)查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号显示出来 我的答案: select name,studentCardNo from student where age<22 and xueli=”大专”; 8)查询学生表的数据,查询所有信息,列出前25%的记录 我的答案: select top*0.25 from student; 9)查询出所有学生的姓名,性别,年龄降序排列 我的答案: select name,sex,age from student where age desc; 10)按照性别分组查询所有的平均年龄 我的答案: select avg(age) from student group by sex; 18、什么是存储过程?为什么存储过程要比单纯的SQL语句执行起来要快? 我的答案: 存储过程算是一种优化查询需要比单存SQL语句执行的要快 19、两张关联表,删除主表中已经在副表中没有的信息 我的答案 delete from fubiao a where a.fid not in(select id from zhubiao) 20、程序题: 用1、2、2、3、4、5这六个数字,用java或你熟悉的语言,打印出所有不同的排列,如:512234、412345等,要求:“4”不能再第三位,“3”与“5”不能相连。并将这些数据按从小到大输出。 我的答案 我的写的不好 没贴下 笔试的时候没写全 21、String 和 StringBuffer的区别 我的答案 String定长 StringBuffer 变长 22、&和&&的区别 我的答案 &短路与 &&逻辑与 网上答案: & 是位运算符,表示按位与运算, && 是逻辑运算符,表示逻辑与(and)。 23、final,finally,finalize的区别 我的答案 Final静变量关键字,finally异常关键字,finalize 网上答案 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法, 可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 24、数组有没有length()这个方法?String有没有length()这个方法? 我的答案: 数组没有length()这个方法,有length的属性。 String有length()这个方法。 25、是否可以继承String类? 我的答案: 不可以 解释的很乱 26、说出数据连接池的工作机制是什么? 我的答案: 反正解释的很乱我感觉 27、垃圾回收的优点和原理。并考虑2种回收机制。 我的答案: 动态回收 解释的很乱 网上答案: Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解, 它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念, 只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。 垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有 使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 28、你所知道的集合类都有哪些?区别?主要方法? 我的答案: Arraylist 非线性的、Vertor线性的 29、JSP的内置对象及方法。 我的答案: Page,exception,out,page content,application,request,reponse,session,config 30、页面间对象传递的方法。 我的答案: 那几个方法都写错了 31、你知道Request对象的主要方法有哪些? 32、J2EE是技术还是平台还是框架? 我的答案: J2EE是技术也是平台 网上答案: J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。 33、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种(例如GBK编码类型)编码的字符串? Request encording(“GBK”) 34、j2ee常用的设计模式?说明工厂模式。 Gof23种设计模式 工厂模式:Factory 网上答案: Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例, 通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。 首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。 然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。 当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 35、JSP四种会话跟踪技术 我的答案: Application cookie session 36、排序都有哪几种方法?请举例 冒泡 选择 快序 二分查找 网上答案: 排序的方法有:插入排序(直接插入排序、希尔排序), 交换排序(冒泡排序、快速排序), 选择排序(直接选择排序、堆排序), 归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码。 //使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点 把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用快速排序方法对right 进行排序 所得结果为l e f t + m i d d l e + r i g h t 37、关于模块间的设计原则? 规范要一样 38、项目过程一般是怎样的?你参加过几个项目开发?参加过的项目流程是怎样的?自己负责与人合作工作内容及自我评价? 从需求调研——设计开发——实施 参加过网站的实施 模板的制作 39、tomcat自动关闭常见原因? 我的答案: 现在没遇到过 40、如何设置TOMCAT内存和连接数? 我的答案: Tomcat群集 41、你如何理解Tomcat是什么? 我的答案: Tomcat是JSP Servlet 容器恰当的说 42、静态变量和实例变量的区别? 我的答案: 静态变量域用final修饰,每次都被调用 实例变量则不会 43、IE、FF下面CSS的解释区别 我的答案: 自己编的 44、web前端技术你了解哪些技术? 我的答案: JAVAScript,CSS,DIV,Ajax,Ajax框架,DWR,dojo,jguery 45、什么是报表?什么是报表控件,作用是什么?你了解哪些报表工具? 我的答案: 解释的很乱 46、你了解的那些统计图表类型? 我的答案: 自己编的 47、Flex与数据库连接的三种方式? 我的答案: 自己编的 ------------------------------------------------------- 我答错的、 错在哪里? 没答上的帮忙解答下? 感激了 !
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载 点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。 ...
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体...
源码阅读(19):Java中主要的Map结构——HashMap容器(下1)
HashMap容器从字面的理解就是,基于Hash算法构造的Map容器。从数据结构的知识体系来说,HashMap容器是散列表在Java中的具体表达(并非线性表结构)。具体来说就是,利用K-V键值对中键对象的某个属性(默认使用该对象的“内存起始位置”这一属性)作为计算依据进行哈希计算(调用hashCode方法),然后再以计算后的返回值为依据,将当前K-V键值对在符合HashMap容器构造原则的基础上,放置到HashMap容器的某个位置上,且这个位置和之前添加的K-V键值对的存储位置完全独立,不一定构成连续的存储
c++制作的植物大战僵尸,开源,一代二代结合游戏
此游戏全部由本人自己制作完成。游戏大部分的素材来源于原版游戏素材,少部分搜集于网络,以及自己制作。 此游戏为同人游戏而且仅供学习交流使用,任何人未经授权,不得对本游戏进行更改、盗用等,否则后果自负。目前有六种僵尸和六种植物,植物和僵尸的动画都是本人做的。qq:2117610943 开源代码下载 提取码:3vzm 点击下载--&gt; 11月28日 新增四种植物 统一植物画风,全部修...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
Python 基础(一):入门必备知识
Python 入门必备知识,你都掌握了吗?
深度学习图像算法在内容安全领域的应用
互联网给人们生活带来便利的同时也隐含了大量不良信息,防范互联网平台有害内容传播引起了多方面的高度关注。本次演讲从技术层面分享网易易盾在内容安全领域的算法实践经验,包括深度...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 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...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
项目中的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 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程实用技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法,并会持续更新。
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
"狗屁不通文章生成器"登顶GitHub热榜,分分钟写出万字形式主义大作
前言 GitHub 被誉为全球最大的同性交友网站,……,陪伴我们已经走过 10+ 年时间,它托管了大量的软件代码,同时也承载了程序员无尽的欢乐。 上周给大家分享了一篇10个让你笑的合不拢嘴的Github项目,而且还拿了7万+个Star哦,有兴趣的朋友,可以看看, 印象最深刻的是 “ 呼吸不止,码字不停 ”: 老实交代,你是不是经常准备写个技术博客,打开word后瞬间灵感便秘,码不出字? 有什么
推荐几款比较实用的工具,网站
1.盘百度PanDownload 这个云盘工具是免费的,可以进行资源搜索,提速(偶尔会抽风????) 不要去某站买付费的???? PanDownload下载地址 2.BeJSON 这是一款拥有各种在线工具的网站,推荐它的主要原因是网站简洁,功能齐全,广告相比其他广告好太多了 bejson网站 3.二维码美化 这个网站的二维码美化很好看,网站界面也很...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
Spring Security 实战干货:基于注解的接口角色访问控制
1. 前言 欢迎阅读 Spring Security 实战干货[1] 系列文章 。在上一篇 基于配置的接口角色访问控制[2] 我们讲解了如何通过 javaConfig 的方式配置接口的角色访问控制。其实还有一种更加灵活的配置方式 基于注解 。今天我们就来探讨一下。DEMO 获取方式在文末。 2. Spring Security 方法安全 Spring Security 基于注解的安全...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的...
相关热词 c#处理浮点数 c# 生成字母数字随机数 c# 动态曲线 控件 c# oracle 开发 c#选择字体大小的控件 c# usb 批量传输 c#10进制转8进制 c#转base64 c# 科学计算 c#下拉列表获取串口
立即提问

相似问题