void ReadString( char s[] ); 的内容是什么

习题6-1 分类统计字符个数 (15 分)
本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。

函数接口定义:
void StringCount( char s[] );
其中 char s[] 是用户传入的字符串。函数StringCount须在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。

裁判测试程序样例:
#include
#define MAXS 15

void StringCount( char s[] );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */

int main()
{
char s[MAXS];

ReadString(s);
StringCount(s);

return 0;

}

/* Your function will be put here */
输入样例:
aZ &
09 Az
输出样例:
letter = 4, blank = 3, digit = 2, other = 1


我想问的是:
void ReadString( char s[] ); 函数到底是怎样实现的?
我用gets(s)但是它遇到回车就结束了。

1个回答

#include
void StringCount(char s[])
{
//letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
int letter=0,blank=0,digit=0,other=0, i;
for(i=0;i<15;i++){
ch=s[i];
if('a'<=ch&&ch<='z'||'A'<=ch&&ch<='Z'){
letter++;
}else if(ch==' '||ch=='\n'){
blank++;
}else if('0'<=ch&&ch<='9'){
digit++;
}else{
other++;
}
}
printf("英文字母的个数=%d;空格或回车的个数=%d;数字字符的个数=%d;其他字符的个数=%d\n",letter,blank,digit,other);
}

YelloJesse
YelloJesse 我题目问错了。我要问的是void ReadString( char s[] );
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
分类统计字符个数;写不对啊!?

本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。 函数接口定义: void StringCount( char s[] ); 其中 char s[] 是用户传入的字符串。函数StringCount须在一行内按照 letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数 的格式输出。 裁判测试程序样例: #include <stdio.h> #define MAXS 15 void StringCount( char s[] ); void ReadString( char s[] ); /* 由裁判实现,略去不表 */ int main() { char s[MAXS]; ReadString(s); StringCount(s); return 0; } /* Your function will be put here */ 输入样例: aZ & 09 Az 输出样例: letter = 4, blank = 3, digit = 2, other = 1 void StringCount( char s[] ){ int i,n,letter=0,blank=0,digit=0,other=0; n=strlen(s); for(i=0;i<n;i++){ if('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z') letter++; else if(s[i]==' '||s[i]=='\n') blank++; else if('0'<=s[i]&&s[i]<='9') digit++; else other ++; } printf("letter = %d, blank = %d digit = %d, other = %d",letter,blank,digit,other); } 以上 是自己写的 审核不对 但自己就是找不到错误 作为 小白 好气啊!

C#调用C++DLL时char *类型参数的值不会变,求支招。

我用C++做了一个DLL,code如下: char* ReadString(const char *sec, const char *key,char *def, const char *file) { ZeroMemory(strReturnValue,sizeof(strReturnValue)); int i = GetPrivateProfileString(sec, key, "",strReturnValue, 2048, file); def = &strReturnValue[0]; return strReturnValue; } 然后用C#来调用这个函数,code如下: [MarshalAs(UnmanagedType.LPStr)] StringBuilder def; private void button1_Click(object sender, EventArgs e) { string a = "No data exsit."; def = new StringBuilder(a); string file = Environment.CurrentDirectory + "\\uConfig.ini"; string aa = iFunction.ReadString("Config", "MesDB", def, file); } 不知道为什么这个char *def的值就是改变不了,一直为a, 但ReadString方法的返回值是正常的,求支招。

不能将参数 2 从“char [260]”转换为“LPWSTR” 在线等

老哥们,麻烦帮忙改改,小弟实在是搞不懂这些东西。下面贴出代码 //#include <cstringt.h> #include "../NetWork/stdafx.h" #include "hsDataThreadFun.h" #include "hsData.h" #include <queue> #include "../NetWork/NetWork_Include/MetroException.h" #pragma comment(lib, "..\\Lib\\ShutDown.lib") extern "C" __declspec(dllexport) void __stdcall ShutdownWindows(); extern HWND g_hMain; //DataThreadFun DataTemp; //这个对象是为了解决 结构不匹配问题 DataThreadFun::DataThreadFun(){ m_NetWork.Init(); char lpFile[MAX_PATH] = {0}; //初始化界面文件的路径 ////////////前三个错误地点 GetPathExe(lpFile,_T("MAX_PATH")); /////////////////// strcat(lpFile,_T("\\Config\\Init.ini")); CIniFile Init(lpFile); if(!Init.IsExistFile()){ CString str; str.Format(_T("初始化配置文件:%s 不存在"), lpFile); //throw CNetworkException(str); MessageBox(NULL,str,_T("读文件"),NULL); } //读取文件内容 m_CarID = Init.ReadString(_T("Init"),_T("CarID"),0); m_NowSpeed = Init.ReadString(_T("Init"),_T("当前车速"),0); m_MaxSpeed = Init.ReadString(_T("Init"),_T("最大车速"),0); m_OperSty = Init.ReadString(_T("Init"),_T("运营类型"),0); m_DriverID = Init.ReadString(_T("Init"),_T("司机ID"),0); m_TheLine= Init.ReadString(_T("Init"),_T("线路"),0); m_DriverIDLastTime = Init.ReadString(_T("Init"),_T("上一次工号"),0); m_Picture = Init.ReadString(_T("Init"),_T("预览画面"),0); m_hThread = nullptr; m_SverStaBol = FALSE; m_bInit = TRUE; m_PoweOff = FALSE; memset(&m_StaDoor,0,sizeof(m_StaDoor)); m_bRun = TRUE; } DataThreadFun::~DataThreadFun(){ //把数据写回配置文件 char lpFile[MAX_PATH] = {0}; //初始化界面文件的路径 ////////////48,49,50行错误 GetPathExe(lpFile,MAX_PATH); strcat(lpFile,_T("\\Config\\Init.ini")); CIniFile Init(lpFile); if(!Init.IsExistFile()){ CString str; str.Format(_T("初始化配置文件:%s 不存在"), lpFile); //throw CNetworkException(str); MessageBox(NULL,str,_T("读文件"),NULL); } Init.WriteString(_T("Init"),_T("CarID"),m_CarID); Init.WriteString(_T("Init"),_T("当前车速"),m_NowSpeed); Init.WriteString(_T("Init"),_T("最大车速"),m_MaxSpeed); Init.WriteString(_T("Init"),_T("运营类型"),m_OperSty); Init.WriteString(_T("Init"),_T("司机ID"),m_DriverID); Init.WriteString(_T("Init"),_T("线路"),m_TheLine); Init.WriteString(_T("Init"),_T("上一次工号"),m_DriverIDLastTime); Init.WriteString(_T("Init"),_T("预览画面"),m_Picture); m_bRun = FALSE; } UINT NUMBERMSG = 0; //把接收到的短息写到硬盘上去,门状态拿来就用 DWORD DataThreadFun::RecveData(LPVOID lParam){ //每隔一段时间就会被调用一次(接收主机发送过来的包,主机发什么不用管,接着就好,其实主机发送的就是我们请求的 //我们的请求在框架中请求),如果 在这段时间里 有还几条发送过来?就会堵到队列中? DataThreadFun* pData = (DataThreadFun*)lParam; char lpFile[MAX_PATH]={0}; ///////////////78行错误 GetPathExe(lpFile,MAX_PATH); CNetPacket packe; int dID=pData->m_NetWork.GetTerminalID(_T("SERVER")); pData->m_SverStaBol = pData->m_NetWork.IsOnline(dID); while (pData->m_bRun) { Sleep(50); if (pData->m_NetWork.Receive(dID,packe)) { if(packe.GetParam() == REC_SorMSG){ Sleep(1000); memcpy(&pData->m_StShortMsg,packe.GetBuffer(),sizeof(pData->m_StShortMsg)); char MsgBuff[200] = {0}; CString MsgName,MsgStr; char lpFile[MAX_PATH]={0}; /////////////98 100行错误 GetPathExe(lpFile,MAX_PATH); strcat(lpFile,_T("\\Config\\MSG\\")); //将读标志 放在文件里 //以时间作为文件名 CTime SysTime = CTime::GetCurrentTime(); CString CtimeStr,SysTimeStr=SysTime.Format(_T("%Y%m%d")); int HTemp = SysTime.GetHour(); int MmTemp = SysTime.GetMinute(); int SeTemp = SysTime.GetSecond(); CtimeStr = SysTime.Format(_T("%Y年%m月%d日 %H:%M:%S")); /////////////////110行错误 MsgName.Format("%s%s%d%d%d.ini",lpFile,SysTimeStr,HTemp,MmTemp,SeTemp); try { CFile file(MsgName, CFile::modeCreate | CFile::modeWrite); //modeReadWrite 2117 ///////////////115行错误 MsgStr.Format("[MSG]\r\nfalg=%d\r\nAttribute=%d\r\nmsg=%s\r\nTime=%s",pData->m_StShortMsg.SoMsFlag,pData->m_StShortMsg.Attribute,pData->m_StShortMsg.MSG,CtimeStr); file.Write(MsgStr,MsgStr.GetLength()); file.Close(); } catch (CMemoryException* e) { } catch (CFileException* e) { // e-> ReportError(); } catch (CException* e) { } }else if(REC_LINE == packe.GetParam()){ //接收站信息,主机会发送一个文件包(要不要检测本地有没有站信息,有就不要下载了,如果线路更新怎么办?) //strcat(lpFile,_T("\\Config\\")); }else if(REC_STADOOR == packe.GetParam()){ memcpy(pData->m_StaDoor,packe.GetBuffer(),sizeof(pData->m_StaDoor)); }else if(REC_MaxSpeed == packe.GetParam()){ double* dLimiteSpeed = (double*)packe.GetBuffer(); pData->m_MaxSpeed.Format(_T("%.1f"), *dLimiteSpeed); }else if(REC_NowSpeed == packe.GetParam()){ double* pSpeed = (double*)packe.GetBuffer(); pData->m_NowSpeed.Format(_T("%.1f"), *pSpeed); }else if(REC_StalCar == packe.GetParam()){ struct sta{ BYTE temper[10]; BYTE guest[10]; BYTE oil[10]; BYTE Meliage[20]; }stat; memcpy(&stat,packe.GetBuffer(),sizeof(stat)); pData->m_temperatureDoor = stat.temper; pData->m_guestNumber = stat.guest; pData->m_oil = stat.oil; pData->m_Meliage = stat.Meliage; }else if(REC_Stalcamera == packe.GetParam()){ memcpy(&pData->m_CameraState,packe.GetBuffer(),sizeof(pData->m_CameraState)); }else if(REC_BlackScreen == packe.GetParam()){ memcpy(&pData->m_bInit,packe.GetBuffer(),sizeof(pData->m_bInit)); }else if(REC_PowerOff == packe.GetParam()){ memcpy(&pData->m_PoweOff,packe.GetBuffer(),sizeof(pData->m_PoweOff)); if(pData->m_PoweOff){ //执行关机 ShutdownWindows(); }else return 0; } ::PostMessage(g_hMain, MSG_DATA, packe.GetParam(), NULL); } } return 0; } bool DataThreadFun::WorkThread_Start() { m_hThread = ::CreateThread(NULL, 0, RecveData, this, NULL, NULL); if (m_hThread == NULL) { return false; } return true; } 麻烦各位老哥帮个忙,错误的地方我已经标出来了,应该就是转换的问题,拜托了

c++读取与修改文件中的特定数据

![图片说明](https://img-ask.csdn.net/upload/201811/13/1542098481_88518.png) 下划线部分的内容修改为我要修改的内容,修改的数据长度不确定, 且保留其他数据不变

error C2143: 语法错误 : 缺少“;”(在“.”的前面)

在Button函数里调用`HuffmanTree1.CreateHfmTree(char Str,int m,int n);` 显示错误error C2143: 语法错误 : 缺少“;”(在“.”的前面) void CHuffmanTreeDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); if (m_radio1=1) { char*pszFileName="C:\C++\HuffmanTree\HuffmanTree\WData.txt"; CStdioFile myFile; CFileException fileException; if(myFile.Open(pszFileName,CFile::modeCreate|CFile::typeText|CFile::modeReadWrite),&fileException) { AfxMessageBox("打开成功"); myFile.SeekToBegin(); CString str1; myFile.ReadString(str1); CString str2; AfxMessageBox(str1+str2); ifstream ifs("WData.txt"); ofstream ofs("WCode.txt"); char str[1000]; char Str[100]; int i=0,j,m[100],h,k=0; int n=0; char ch; while(ifs.get(ch)) { if(ch!='\n') {str[n++]=ch;} for(i=0;i<n;i++) { j=0;h=0; while(str[i]!=str[j]) j++; if(j==i) { Str[k]=str[i]; } else continue; for(j=i;j<n;j++) { if(str[i]==str[j]) h++; } m[k]=h; k++; } HuffmanTree1.CreateHfmTree(char Str,int m,int n); cin.get(); m_length=n; m_string1="报文的编码已经保存在WCode.txt"; UpdateData(FALSE); } } else { TRACE("Can't open file%s,error=%u\n",pszFileName,fileException.m_cause); } myFile.Close(); } }

debug assertion failed怎么回事

#include<afxinet.h> #include<iostream> using namespace std; void main() {char url[]={"http://www.baidu.com"}; CInternetSession session; CString Line; CInternetFile*file=NULL; try {file=(CInternetFile*)session.OpenURL(url);} catch(CInternetException*pException) {file=NULL; pException->Delete(); } if(file) { int i=0; while(file->ReadString(Line)); { cout<<Line<<endl; i++;} } delete file; session.Close(); }这是代码 ![CSDN移动问答][1] [1]: http://e.hiphotos.baidu.com/zhidao/pic/item/7af40ad162d9f2d3836e413aabec8a136227ccec.jpg 说是这里有一个中断,是什么情况?

小弟初学MFC,在文件读写方面遇到了问题

小弟初学MFC,在弄一个简单的学生管理系统,添加了一个对话框用于添加学生信息,然后在Add按钮添加了消息响应函数,对输入的数据进行写入到文件之中,但 是在判断是否读完的时候总是会出现问题,请教各位,代码如下: void Add::OnClickedIdbAdd() { // TODO: Add your control notification handler code here UpdateData(); if (!m_aComp || !m_aEng || !m_aMath || !m_aGym || !m_aName || !m_aSno || !m_aMajor ){ MessageBox(_T("请完善信息后再确认输入!")); return; } CStdioFile csf; if (!csf.Open(_T("D:\\SIMS.txt"), CFile::modeCreate | CFile::modeNoTruncate | CFile::modeReadWrite)){ #if def_DEBUG afxDump << "unable to open file" << "\n"; exit(1); #endif } int strlen = m_aSno.GetLength(); char* strSno = ""; CString strtemp; csf.SeekToBegin(); while (csf.Read(strSno, strlen)){ //每次运行到这里出问题 if (m_aSno == strSno){ MessageBox(_T("该学号已存在,请重新输入。")); m_aSno = ""; UpdateData(FALSE); return; } csf.ReadString(strtemp); } csf.SeekToEnd(); strtemp.Format(_T("%s %s %s %d %d %d %d\n"), m_aSno, m_aName, m_aMajor, m_aMath, m_aComp, m_aEng, m_aGym); csf.WriteString(strtemp); csf.Close(); } 出现的问题如下: ![图片说明](https://img-ask.csdn.net/upload/201505/31/1433082448_811968.png) 不知道这个怎么办?本人小白,很多都不懂,请大家多多指教。谢谢!

关于C#的几个问题,我不会这东西,但是需要这东西,谢谢啊

1、无法将 lambda 表达式 转换为类型“System.Delegate”,因为它不是委托类型 private static void show(object pComponet) { ExecutedInvokeHeandle method = null; if ((pComponet != null) && (pComponet is Control)) { mShowing = true; if (method == null) { method = delegate { if ((pComponet != null) && (pComponet is Control)) { mWait.Show((pComponet as Control).FindForm()); (pComponet as Control).FindForm().FormClosed += new FormClosedEventHandler(WaitForm.WaitForm_FormClosed); (pComponet as Control).FindForm().Activate(); } else { mWait.TopMost = true; mWait.Show(); } }; } (pComponet as Control).BeginInvoke(method); mWaiting = true; mEvents.WaitOne(); mWaiting = false; (pComponet as Control).BeginInvoke(() => mWait.Close()); } } 2、 类型“SerialClass.SerialClass”中不存在类型名称“SerialClass” private void view_CheckButtonClick(object sender, EventArgs e) { Button button = sender as Button; string[] strArray = this.dicButtons[button.Text].Split(new char[] { ',' }); new Dictionary<string, int>(); string[] strArray2 = strArray[4].Split(new char[] { ';' }); SerialClass.SerialClass class2 = new SerialClass.SerialClass(); Application.DoEvents(); foreach (string str2 in strArray2) { Application.DoEvents(); string[] strArray3 = str2.Split(new char[] { '#' }); string str3 = this.iniFile.ReadString("DATA", strArray3[0], ""); if (str3 != "") { string[] strArray4 = str3.Split(new char[] { ',' }); class2.setSerialPort(strArray4[1], Convert.ToInt32(strArray4[2]), Convert.ToInt32(strArray4[4]), Convert.ToInt32(strArray4[6])); class2.openPort(); byte[] receiveData = new byte[2]; if (strArray4[0] == "0") { class2.SendCommand(Encoding.ASCII.GetBytes(strArray4[3]), ref receiveData, Convert.ToInt32(strArray3[1])); } else { class2.SendCommand(strToToHexByte(strArray4[3]), ref receiveData, Convert.ToInt32(strArray3[1])); } class2.closePort(); } } this.OnPage(strArray[3]); } 3、类型“SerialClass.SerialClass”中不存在类型名称“SerialClass” private void btnDataTest_Click(object sender, EventArgs e) { SerialClass.SerialClass class2 = new SerialClass.SerialClass(); class2.setSerialPort(this.cbComPort.Text, Convert.ToInt32(this.cbRate.Text), Convert.ToInt32(this.cbDataBits.Text), Convert.ToInt32(this.cbStop.Text)); class2.openPort(); byte[] receiveData = new byte[2]; if (this.cbCode.SelectedIndex == 0) { class2.SendCommand(Encoding.ASCII.GetBytes(this.tbData.Text.Trim()), ref receiveData, 500); } else { class2.SendCommand(strToToHexByte(this.tbData.Text.Trim()), ref receiveData, 500); } class2.closePort(); }

MFC 父窗口向子窗口传递参数并在子窗口编辑框显示!!

我需要在父窗口点击【加载工程】按钮以后读取TXT文本文档以后将读取到的数据传递给主窗口的2个TEXT 文本框和子窗口6个Edit编辑框 !以便于我在打开子窗口(通过其他按钮打开!)以后能看到父窗口传递过来的数据! case语句里的注释语句都有问题!运行时会报 “遇到不适当参数”! void CThreeCamProjectDlg::OnBnClickedLoadprojectbn() { CDlg_SIZESET *dlg = new CDlg_SIZESET(); CStdioFile file; CString filePathName, strTemp, strLine; CFileDialog lpszOpenFile(TRUE, "", "", OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, _T("文件类型(*.txt)|*.txt|所有文件(*.*)|*.*|")); lpszOpenFile.m_ofn.lpstrInitialDir = _T(".\\sizestandard\\"); //指定文件夹 int row; if (lpszOpenFile.DoModal() == IDOK)//假如点击对话框确定按钮 { filePathName = lpszOpenFile.GetPathName();//得到打开文件的路径 } if (filePathName == "") return; if (!file.Open(filePathName, CFile::modeRead)) { MessageBox(TEXT("can not open file!")); return; } row = 0; while (file.ReadString(strLine)) { char* str = (char *)strLine.GetBufferSetLength(strLine.GetLength()); char* p; if (row > 1) { MessageBox(TEXT("尺寸规格仅第一行有效!")); break; } if (strLine != "") { short tempsizecount = 0; for (p = strtok(str, ";"); p != NULL; p = strtok(NULL, ";")) { tempsizecount++; strTemp = p; switch (tempsizecount) { case 1: mSTWidth = atof(strTemp); //加载工程标准 宽 显示到主界面 GetDlgItem(IDC_LoadStdWidth_WND)->SetWindowTextA(strTemp); //dlg->GetDlgItem(IDC_EDIT_STD_WIDTH)->SetWindowTextA(strTemp); break; case 2: mSTHeight = atof(strTemp); //加载工程标准 高 显示到主界面 GetDlgItem(IDC_LoadStdHeight_WND)->SetWindowTextA(strTemp); //dlg->GetDlgItem(IDC_EDIT_STD_HEIGHT)->SetWindowTextA(strTemp); break; case 3: maxWidth = atof(strTemp); // 加载工程Max 高 //GetDlgItem(IDC_EDIT_MAXWIDTH)->SetWindowTextA(strTemp); break; case 4: minWidth = atof(strTemp); // 加载工程Min 高 //GetDlgItem(IDC_EDIT_MINWIDTH)->SetWindowTextA(strTemp); break; case 5: maxHeight = atof(strTemp); // 加载工程Max 宽 //GetDlgItem(IDC_EDIT_MAXHEIGHT)->SetWindowTextA(strTemp); break; case 6: minHeight = atof(strTemp); // 加载工程Min 高 //GetDlgItem(IDC_EDIT_MINHEIGHT)->SetWindowTextA(strTemp); break; default: break; } } if (tempsizecount != 6) { MessageBox(TEXT("尺寸规格输入不正确!")); break; } row++; } else { MessageBox(TEXT("错误,尺寸规格为空!")); break; } } delete lpszOpenFile;//释放分配的对话框 }

C++代码转化为C#代码 求高手指点,写出注释谢谢啊

// scDlg.cpp : 实现文件 // #include "stdafx.h" #include "sc.h" #include "scDlg.h" #include ".\scdlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 // CscDlg 对话框 CscDlg::CscDlg(CWnd* pParent /*=NULL*/) : CDialog(CscDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_strXin="a!dAA1$%^&IKMJNSD98574PO"; m_llNumber1=13693; m_llNumber2=113; } void CscDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO1, m_GameNumber); CString strTitle; strTitle.Format("数字3趣味游戏上分码计算"); SetWindowText(strTitle); ((CEdit*)GetDlgItem(IDC_EDIT_RANDOM))->SetLimitText(15); ((CEdit*)GetDlgItem(IDC_EDIT_ADDSCORE))->SetLimitText(7); ((CEdit*)GetDlgItem(IDC_EDIT_ADDGAME))->SetLimitText(5); } BEGIN_MESSAGE_MAP(CscDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDOK, OnBnClickedOk) ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1) ON_CBN_SELCHANGE(IDC_COMBO1, OnCbnSelchangeCombo1) END_MESSAGE_MAP() // CscDlg 消息处理程序 BOOL CscDlg::OnInitDialog() { CDialog::OnInitDialog(); // 将\“关于\”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); //pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 InitGameName(); CFont * Font; Font = new CFont; Font->CreateFont( 16, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_BOLD, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut DEFAULT_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality DEFAULT_PITCH|FF_SWISS, // nPitchAndFamily "黑体"); GetDlgItem(IDC_COMBO1)->SetFont(Font); GetDlgItem(IDC_EDIT_RANDOM)->SetFont(Font); GetDlgItem(IDC_EDIT_ADDSCORE)->SetFont(Font); GetDlgItem(IDC_EDIT_ADDGAME)->SetFont(Font); GetDlgItem(IDC_EDIT_ADDNUMBER)->SetFont(Font); return TRUE; // 除非设置了控件的焦点,否则返回 TRUE } void CscDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { /*CAboutDlg dlgAbout; dlgAbout.DoModal();*/ } else { CDialog::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CscDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标显示。 HCURSOR CscDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CscDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 //OnOK(); if(!Validation()) { return; } ShowSYInfo(); GetNumber(); } void CscDlg::GetNumber() { GetDlgItemText(IDC_EDIT_RANDOM,m_strRandom); GetDlgItemText(IDC_EDIT_ADDSCORE,m_strAddscore); GetDlgItemText(IDC_EDIT_ADDGAME,m_strGame); GetDlgItemText(IDC_EDIT_ADDNUMBER,m_strAddNumber); if(m_strRandom=="") { AfxMessageBox("随机码不能为空"); return; } //1上分,2加场 //DMD5(MD5(分+随)+K,10)+DMD5(MD5(局+随)+K,10),后第4位是type,奇为上分,2为加场,0为两个都加 CString strKey=m_strArea+m_strXin; LONGLONG llAddScore=_atoi64(m_strAddscore); LONGLONG llAddGame=_atoi64(m_strGame); if(llAddScore%100!=0) { AfxMessageBox("请输入100的倍数"); return; } if(llAddScore==0&&llAddGame==0) { AfxMessageBox("分数和局数不能全为0"); return; } if(llAddScore>5000000) { AfxMessageBox("分数不能超过5000000"); return; } if(llAddGame>50000) { AfxMessageBox("场数不能超过50000"); return; } if(m_strRandom.GetLength()!=15) { AfxMessageBox("请输入15位的随机码"); return; } LONGLONG llRandom=_atoi64(m_strRandom); CString str1,str2,str3,str4,strTotal; str1.Format("%015I64u",llRandom+llAddScore); str1=MD5(str1)+strKey; str1=DigitalMD5(str1,10); str2.Format("%015I64u",llRandom+llAddGame); str2=MD5(str2)+strKey; str2=DigitalMD5(str2,10); if(llAddScore>0&&llAddGame<=0) { CString strT; str2=str2.Left(6)+"1"+str2.Right(3); } else if(llAddScore<=0&&llAddGame>0) { CString strT; str2=str2.Left(6)+"2"+str2.Right(3); } else { str2=str2.Left(6)+"0"+str2.Right(3); } m_strAddNumber=str1+str2; SetDlgItemText(IDC_EDIT_ADDNUMBER,m_strAddNumber); //UpdateWindow(); } CString CscDlg::MD5(CString str) { TCHAR sz[33]; CString strmd5; CMD5Encrypt::EncryptData(str,sz); strmd5=sz; return strmd5; } CString CscDlg::DigitalMD5(CString str,int Right) { CString strNumber; CString strMD5=MD5(str); static CRegexpT <char> regexp("[:^digit:]"); char *a=regexp.Replace(strMD5,""); strNumber=a; regexp.ReleaseString(a); if(Right!=0) { Right=min(strNumber.GetLength(),Right); strNumber=strNumber.Right(Right); LONGLONG llNumber=_atoi64(strNumber); strNumber.Format("%010I64u",llNumber); if(strNumber.GetLength()>Right) { strNumber.Right(Right); } } return strNumber; } void CscDlg::Search(CStringArray& dest) { dest.RemoveAll(); SHFILEINFO sfi; CFileFind* fileFind=new CFileFind(); BOOL res = fileFind->FindFile("*.liu"); int i=0; while(res) { res = fileFind->FindNextFile(); if(fileFind->IsDirectory()) { continue; } SHGetFileInfo(fileFind->GetFilePath(),0,&sfi,sizeof(sfi),SHGFI_ICON); dest.Add(fileFind->GetFileTitle()); i++; } } void CscDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 if(OpenClipboard())//打开剪切板 { EmptyClipboard();//清空剪切板,让当前窗口进程拥有剪切板 CString Str; GetDlgItemText(IDC_EDIT_ADDNUMBER,Str);//获取数据 HANDLE hClip; hClip=GlobalAlloc(GMEM_MOVEABLE,Str.GetLength()+1);//分配内存对象返回地址(该函数是系统从全局堆中分配内存) char *pBuf; pBuf=(char *)GlobalLock(hClip);//锁定全局内存中指定的内存块,并返回一个地址值,令其指向内存块的起始处 strcpy(pBuf,Str);//将Str对象中的数据Copy到内存空间中 GlobalUnlock(hClip);//解锁全局内存块 SetClipboardData(CF_TEXT,hClip);//设置剪贴板数据 CloseClipboard();//关闭 } } void CscDlg::InitGameName() { Search(m_strArrFileName); int nCount=m_strArrFileName.GetCount(); for(int i=0;i<nCount;i++) { m_GameNumber.AddString(_T(m_strArrFileName.GetAt(i))); } m_GameNumber.SetCurSel(0); int nIndex=m_GameNumber.GetCurSel(); m_strArea=m_strArrFileName.GetAt(nIndex); CString strFile=m_strArea+".liu"; OnOpenDocument(strFile); } void CscDlg::OnCbnSelchangeCombo1() { // TODO: 在此添加控件通知处理程序代码 int nIndex=m_GameNumber.GetCurSel(); m_strArea=m_strArrFileName.GetAt(nIndex); CString strFile=m_strArea+".liu"; OnOpenDocument(strFile); } BOOL CscDlg::OnOpenDocument(CString strFileName) { CStdioFile file; CString filePathName; int row; CString result; CString strLine,strTemp; row = 0; file.Open(strFileName,CFile::modeRead); while(file.ReadString(strLine)) { char *str = strLine.GetBufferSetLength(strLine.GetLength()); char *p; if(strLine!="") { for (p=strtok(str,";");p!=NULL;p=strtok(NULL,";")) { strTemp = p; result+=strTemp; } row ++; } } m_MD5File=result; return TRUE; } BOOL CscDlg::Validation() { //DMD5(MD5(机器号+AB)+m_strXin,10)+DMD5(m_strXin+机器号,10) CString strOK=DigitalMD5(MD5(m_strArea+"AB")+m_strXin,10)+DigitalMD5(m_strXin+m_strArea,10); //AfxMessageBox(strOK); if(strOK!=m_MD5File) { return FALSE; } else { return TRUE; } } BOOL CscDlg::ShowSYInfo() { CString strInfo; CString strRandom,strScore,strInnings; GetDlgItemText(IDC_EDIT_RANDOM,strRandom); strScore=(strRandom.Left(9)).Right(8); strInnings=(strRandom.Right(6)).Right(5); int nScoreWei=atoi((strRandom.Left(9)).Left(1)); int nInningsWei=atoi((strRandom.Right(6)).Left(1)); FLOAT fSYSocre=atof(strScore)/13.0f; FLOAT fSYInnings=atof(strInnings)/7.0f; if(((int)(fSYSocre*100)%100)!=0||((int)(fSYInnings*100)%100)!=0) { strInfo.Format("剩余分数:%d,剩余局数:%d",0,0); SetDlgItemText(IDC_STATIC_SY,strInfo); return FALSE; } int nSYSocre=atoi(strScore)/13-m_llNumber1; int nSYInnings=atoi(strInnings)/7-m_llNumber2; if(nSYSocre<0||nSYInnings<0) { strInfo.Format("剩余分数:%d,剩余局数:%d",0,0); SetDlgItemText(IDC_STATIC_SY,strInfo); return FALSE; } strInfo.Format("剩余分数:%d,剩余局数:%d",nSYSocre,nSYInnings); SetDlgItemText(IDC_STATIC_SY,strInfo); return TRUE; }

为什么逐行读取文件时缓冲区大小不是总是4096的整数倍?

<div class="post-text" itemprop="text"> <p>The sample code is,</p> <pre><code>// test.go package main import ( "bufio" "os" ) func main() { if len(os.Args) != 2 { println("Usage:", os.Args[0], "") os.Exit(1) } fileName := os.Args[1] fp, err := os.Open(fileName) if err != nil { println(err.Error()) os.Exit(2) } defer fp.Close() r := bufio.NewScanner(fp) var lines []string for r.Scan() { lines = append(lines, r.Text()) } } </code></pre> <p>c:\&gt;go build test.go</p> <p>c:\&gt;test.exe test.txt</p> <p>Then I monitored its process using process monitor when executing it, part of the output is:</p> <pre><code>test.exe ReadFile SUCCESS Offset: 4,692,375, Length: 8,056 test.exe ReadFile SUCCESS Offset: 4,700,431, Length: 7,198 test.exe ReadFile SUCCESS Offset: 4,707,629, Length: 8,134 test.exe ReadFile SUCCESS Offset: 4,715,763, Length: 7,361 test.exe ReadFile SUCCESS Offset: 4,723,124, Length: 8,056 test.exe ReadFile SUCCESS Offset: 4,731,180, Length: 4,322 test.exe ReadFile END OF FILE Offset: 4,735,502, Length: 8,192 </code></pre> <p>The equivalent java code is,</p> <pre><code>//Test.java import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; public class Test{ public static void main(String[] args) { try { FileInputStream in = new FileInputStream("test.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strLine; while((strLine = br.readLine())!= null) { ; } }catch(Exception e){ System.out.println(e); } } } </code></pre> <p>c:\&gt;javac Test.java</p> <p>c:\&gt;java Test</p> <p>Then part of the monitoring output is:</p> <pre><code>java.exe ReadFile SUCCESS Offset: 4,694,016, Length: 8,192 java.exe ReadFile SUCCESS Offset: 4,702,208, Length: 8,192 java.exe ReadFile SUCCESS Offset: 4,710,400, Length: 8,192 java.exe ReadFile SUCCESS Offset: 4,718,592, Length: 8,192 java.exe ReadFile SUCCESS Offset: 4,726,784, Length: 8,192 java.exe ReadFile SUCCESS Offset: 4,734,976, Length: 526 java.exe ReadFile END OF FILE Offset: 4,735,502, Length: 8,192 </code></pre> <p>As you see, the buffer size in java is 8192 and it read 8192 bytes each time.Why is the Length in Go changing during each time reading file?</p> <p>I have tried <code>bufio.ReadString(' ')</code>,<code>bufio.ReadBytes(' ')</code>and both of them have the same problem.</p> <p><strong>[Update]</strong> I have tested the sample in C,</p> <pre><code>//test.c #define _GNU_SOURCE #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main(void) { FILE * fp; char * line = NULL; size_t len = 0; ssize_t read; fp = fopen("test.txt", "r"); if (fp == NULL) exit(EXIT_FAILURE); while ((read = getline(&amp;line, &amp;len, fp)) != -1) { printf("Retrieved line of length %zu : ", read); } if (line) free(line); return EXIT_SUCCESS; } </code></pre> <p>The output is similar with java code(the buffer size is 65536 on my system).<strong>So why Go is so different here?</strong></p> </div>

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

2020春招面试了10多家大厂,我把问烂了的数据库事务知识点总结了一下

2020年截止目前,我面试了阿里巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面试中出现的次数非常多。

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

在拼多多上班,是一种什么样的体验?我心态崩了呀!

之前有很多读者咨询我:武哥,在拼多多上班是一种什么样的体验?由于一直很忙,没抽出时间来和大家分享。上周末特地花点时间来写了一篇文章,跟大家分享一下拼多多的日常。 1. 倒时差的作息 可能很多小伙伴都听说了,拼多多加班很严重。这怎么说呢?作息上确实和其他公司有点区别,大家知道 996,那么自然也就能理解拼多多的“11 11 6”了。 所以当很多小伙伴早上出门时,他们是这样的: 我们是这样的: 当...

应聘3万的职位,有必要这么刁难我么。。。沙雕。。。

又一次被面试官带到坑里面了。面试官:springmvc用过么?我:用过啊,经常用呢面试官:springmvc中为什么需要用父子容器?我:嗯。。。没听明白你说的什么。面试官:就是contr...

太狠了,疫情期间面试,一个问题砍了我5000!

疫情期间找工作确实有点难度,想拿到满意的薪资,确实要点实力啊!面试官:Spring中的@Value用过么,介绍一下我:@Value可以标注在字段上面,可以将外部配置文件中的数据,比如可以...

自学编程的 6 个致命误区

嗨,小伙伴们大家好,我是沉默王二。本篇文章来和大家聊聊自学编程中的一些误区——这是我在 B 站上看了羊哥的一期视频后有感而发的文章。因为确实有很多读者也曾私信问过我这些方面的问题,很有代表性,所以我就结合自己的亲身体会来谈一谈,希望对小伙伴们有所启发。 01、追求时髦 所谓基础不牢,地动山摇啊。可很多小伙伴压根就没注意过这个问题,市面上出什么新鲜的技术就想去尝试,结果把自己学的乱七八糟,心灰意冷...

祝贺玄姐,创业两个月,估值近亿,融资几千万,奈学教育,太牛逼了!!!...

玄姐,男,前58同城技术委员会主席,前转转首席架构师,我的10年好友。一月下旬,玄姐找到我,说,哥们我准备创业了。画外音:详见《最好的朋友创业了,我必须为他站台》。番外篇《为何大家都叫...

立即提问