c++里调用线程函数和直接调用函数的区别

我在自学windows程序设计,有关进程和线程的概念不太清楚。如题,两者区别是调用线程函数不影响主线程的进行,而直接调用函数需要等待函数返回,不知道我这样理解对不对,恳请前辈们指教。

2个回答

多线程。每个线程都是顺序执行,即上一条语句完成后才进行下一条语句。 你直接调用函数就必须等他返回结果后才能执行下一条语句,所以线程就需要等待函数执行完毕。
而调用线程函数就是另外启动一个线程去执行这个函数,主线程不必等待该线程的结束返回,两个线程可以同时运行。所以主线程就不用等待。

qq_32364455
无拘 谢谢,明白了。
大约 4 年之前 回复

每个exe启动就是一个进程,它包括一个主线程,你可以在这个进程里创建多个线程

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c++里调用线程函数和直接调用函数的区别

我在自学windows程序设计,有关进程和线程的概念不太清楚。如题,两者区别是调用线程函数不影响主线程的进行,而直接调用函数需要等待函数返回,不知道我这样理解对不对,恳请前辈们指教。

MFC跨线程调用另一个线程函数执行的函数

MFC跨线程调用另一个线程函数执行的函数,怎么得到函数的返回值呢?函数名转换函数值

QT线程内调用外部函数发送信号是否有正确?多线程调用外部函数需要注意哪些问题?

大家好,我在QT多线程编程时,在线程内部调用了一个外部函数,外部函数中使用了emit来发送信号,请问这样是否会存在问题?另外,在线程中调用外部函数时需要注意哪些问题?

C++ 在回调里面调用线程停止函数会崩溃?

``` #include <iostream> #include <thread> #include <chrono> #include <functional> class Test { public: Test() { } ~Test() { Stop(); } void Start() { if (running_) { return; } running_ = true; work_thread_ = std::thread(&Test::WorkFunc, this); } void Stop() { if (!running_) { return; } running_ = false; work_thread_.join(); } void WorkFunc() { int val = 1; while (running_) { std::cout << "hello" << std::endl; std::this_thread::sleep_for(std::chrono::milliseconds(1000)); if (val++ >= 10) { callback_(1); } } } void RegisterCallback(std::function<void(int status)> callback) { callback_ = callback; } private: std::thread work_thread_; bool running_ = false; std::function<void(int status)> callback_; }; int main(void) { Test test; test.RegisterCallback([&](int status) { if (status == 1) { test.Stop(); } }); test.Start(); int n; std::cin >> n; return 0; } ``` 在回调函数里面调用Stop会崩溃,想知道为什么会崩溃?还有就是这种问题应该如何解?求帮助

请问C++11的多线程如何在类的成员函数里调用另一个成员函数在新线程里执行

``` void ClassA::Fun1() { std::thread t(&ClassA::Fun2); // 测试过这种std::thread t(std::mem_fn(ClassA::Fun2),this); // 也不行 t.join(); } void ClassA::Fun2() { // do sth... } ```

c++,CreateThread在类中使用,要如何声明线程函数呢

c++,CreateThread在类中使用,要如何声明线程函数呢 如果不把线程函数声明成成员函数,那线程函数中不能调用类中的私有成员, 但是设为成员函数又该如何声明,如何访问成员呢

mfc 窗口分割 通信 线程函数调用

写了一个mfc程序将对话框分割进行不同窗口间通信。但是出现了如下问题: void MyFormView::send() //发送数据 { CMainFrame* MainFrame = (CMainFrame*)this->GetParent()->GetParent(); MyFormView1* battery = (MyFormView1*)MainFrame->m_wndSplitter1.GetPane(1, 0); battery->Signal(); } 我在线程函数中调用这个函数会导致程序崩溃出错 DWORD WINAPI MyFormView::ReceiveThread(void * v) //线程函数 { MyFormView *dlg = (MyFormView*)v; dlg->send(); } 求大神帮助

MFC循环创建多线程同时处调用同一函数读写文本和excel操作

CString fname[3000]; CString name[1024] ; int j1 ; int nIndex = 0; void CDisposeXJXDlg::OnBtnSelSrcFile() { // TODO: Add your control notification handler code here CFileDialog dlg(TRUE, NULL, NULL ,OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT,"(*.tmp) | *.tmp||",AfxGetMainWnd()); TCHAR* pszFile =new TCHAR[MAX_PATH]; memset(pszFile,0,sizeof(TCHAR)*MAX_PATH); dlg.m_ofn.lpstrFile = pszFile ; if(IDOK==dlg.DoModal()) { int i = 0 ; POSITION pos ; //把起始位置赋给pos pos = dlg.GetStartPosition(); //把打开的多个文件名赋给fname数组 while(pos!=NULL) { fname[i] = dlg.GetNextPathName(pos); name[i] = fname[i].Right(fname[i].GetLength()-fname[i].ReverseFind('\\')-1); m_ListOutInfo.AddString(name[i]); i++ ; } } } int t=0 ; int tt = 0 ; int TheradsCount = 0; int j2 = 0; int j3 = 0; CWinThread* pThread[MAX_THREADS]; void CDisposeXJXDlg::OnBtnTypeset() { GetDlgItem(IDC_BTN_TYPESET)->EnableWindow(FALSE); TheradsCount = m_ListOutInfo.GetCount(); j2 = TheradsCount ; for(int m1=0 ;j2<MAX_THREADS? m1<j2 :m1<MAX_THREADS ;m1++) { pThread[m1] =AfxBeginThread(CDisposeXJXDlg::ThreadFun,this,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED); pThread[m1]->ResumeThread(); } } UINT CDisposeXJXDlg::ThreadFun(LPVOID pParam) { CDisposeXJXDlg* dlg=(CDisposeXJXDlg*)pParam; WaitForSingleObject(semaphoreWrite.m_hObject,INFINITE); dlg->m_strFbdPath = fname[t]; dlg->StartDispose(fname[t]); delete []dlg ; Sleep(100) ; t++ ; ReleaseSemaphore(semaphoreWrite.m_hObject,1,NULL); return 0 ; } 这是我自己写的,在MFC对话框里添加了一个列表框,打开多个文本然后点击按钮执行OnBtnTypeset()函数,最后想通过创建多个线程,同时调用StartDispose(fname[t])来处理多个文本和处理EXCEL,做了几天了出来的结果就是线程只能按队列执行,文本读取或EXCEl处理一两个对话框就结束了或者内存泄露,完全达不到任务要求, 求大神们给指点,真心求教....谢谢了!

Qt 槽函数 两次调用 跨线程的信号槽函数(信号触发一次,槽函数被调用两次)

WorkerThread* pWorkerThread = new WorkerThread; pWorkerThread->moveToThread(&m_thread); connect(this, &Dialog::sigSetCOM, pWorkerThread, &WorkerThread::slotSetCOM, Qt::QueuedConnection); connect(this, &Dialog::sigSerialOpen, pWorkerThread, &WorkerThread::slotSerialOpen, Qt::QueuedConnection); connect(this, &Dialog::sigSetFilePath, pWorkerThread, &WorkerThread::slotSetFilePath, Qt::QueuedConnection); connect(pWorkerThread, &WorkerThread::sigSetProgressValue, this ,&Dialog::slotSetProgressValue, Qt::QueuedConnection); connect(pWorkerThread, &WorkerThread::resultReady, this ,&Dialog::handleResults, Qt::QueuedConnection); connect(pWorkerThread, &WorkerThread::sigBtOpenStateChange, this ,&Dialog::slotBtOpenStateChanged, Qt::QueuedConnection); connect(pWorkerThread, &WorkerThread::sigResetState, this ,&Dialog::slotResetState, Qt::QueuedConnection); connect(this, &Dialog::sigSend, pWorkerThread, &WorkerThread::slotSend); connect(&m_thread, &QThread::finished, pWorkerThread, &QObject::deleteLater); m_thread.start(); // 设置参数 //emit ui->serialPortName->currentIndexChanged(ui->serialPortName->currentText()); emit sigSetCOM(m_param); ``` ``` 上面的槽函数Dialog::slotBtOpenStateChanged(倒数第四个connect) 只连接了一次如下: connect(pWorkerThread, &WorkerThread::sigBtOpenStateChange, this ,&Dialog::slotBtOpenStateChanged, Qt::QueuedConnection); 按理说是pWorkerThread线程中信号WorkerThread::sigBtOpenStateChange触发后才会调用槽函数Dialog::slotBtOpenStateChanged,但是我的代码中只是在pWorkerThread触发了一次信号,而实际槽函数Dialog::slotBtOpenStateChanged却被调用了两次。一次与pWorkerThread有关。一次与Dialog有关,因为都有一个bool参数,Dialog触发的带的值不是我想要的。这与Dialog有关的多一次调用是为什么???

请问MFC跨线程能不能调用对方线程里正在运行的函数?

请问MFC跨线程能不能调用对方线程里正在运行的函数?怎么得到当前正在运行的线程运行的是哪一个函数的函数名?谢谢

QT界面开发,线程函数里面不饿能够调用UI控件的问题

用QT做上位机界面,在QT头文件定义类 class MainWindow : public QMainWindow { QOBJECT piblic : explicit MainWindow(QWidget parent =0); ~MainWindow(); int initPort(); static DWORD stdcall ThreadPDoTest( DWORD EventID, LPVOID pBuf, DWORD BufLen, LPVOID UserData); private: Ui:: Mainwindow *ui; } #end if 然后ThreadPDoTest函数是这样定义的: DWORD __stdcall MainWindow threadDotest(DWORD EventID, LPVOID pBuf, DWORD Buflen, LPVOID UserData)//。主要功能是完成数据的计算并且显示到QT的控件上 { .... c1=(float)(256*data[1]+data[0])-512)*1.5/1000; ui->NUMERIC_C1->setText(temp.setNum(c1)); c2=... .... } 编译报错 invalid use of member ' MainWindow :: *ui' instatic member function 我看网上说把ui 改成public可行,但是主线程函数中才行,不然就会崩溃。

c# 如何在主线程中调用次线程的方法?

一个解决方案,包含两个项目a和b,项目a是启动项,项目a引用了项目b,在a线程运行时会触发b线程运行,当a运行起来后,b也在运行,这时 如何在 整个程序都运行起来后,在a线程中调用b线程的方法。 比如 b线程中有一个按钮组件c,默认按钮c背景色是蓝色,a线程的窗体会引用b线程的窗体,将b中的按钮显示出来。当a线程运行后,显示的按钮c就是蓝色,我想从a中改变b窗体的按钮c的背景色为红色,这个时候怎么调用b中的改变按钮c背景色的方法呢

Qt中有关线程函数使用的问题

在Qt中使用InitializeConditionVariable(),SleepConditionVariableCS(),WakeAllConditionVariable()的时候,总是报错:undefined reference to'InitCondition', undefined reference to'BroadcastCondition', undefined reference to'WaitCondition'. 我查了一下上面3个函数在系统的synchapi.h文件里。我一开始以为是这个头文件没包含进来。 但是程序中同样使用了该头文件里的InitializeCriticalSection(),LeaveCriticalSection()等 函数却没有报错。请问这是什么问题?

qt std::thread线程如何发送一个信号调用主线程的一个函数

qt按钮下新建了一个线程 std::thread th1(&MainWindow::runTest,this,str_ModelName); th1.detach(); connect(th1,SIGNAL(robotStat(int)),this,SLOT(runTest1(int))); 想要用runtest里面的一个信号,去调用runtest1这个函数, 编译th1不能转为qobject*,请问如何连接

孙鑫VC++深入浅出 第十五章 多线程关于成员函数的调用

孙鑫老师在VC++深入浅出 第十五章 多线程中提到 为了创建线程,故在CChatDialog中添加一个成员RecvProc,但添加后不能通过编译,孙兴老师的解释是:线程函数RecvProc是CChatDialog类的成员函数,为了调用这个函数,必须先产生一个该类的对象,然后才能调用该对象的内部成员函数。我想问的是OnInitDialog不也是该类的成员函数么?为何可以直接通过编译呢?

C# 新建线程递归调用包含回调函数,怎么判断递归调用结束,获取返回值

如题,在新建线程中递归调用函数,一次结果的返回值由回调函数获取,我想根据线程的状态判断 递归调用是否结束,并获取正确返回值,但是一次执行后线程状态就变成了Stopped了,回调 函数还在继续执行,用什么标记回调函数执行结束呢?

c++类成员函数中调用多线程函数_beginthreadex()

> #include "stdafx.h" #include <iostream> #include <process.h> #include <windows.h> using namespace std; class A { public: int n; A(int n) { this->n = n; } void static run1(A &a); void static run2(A &a); void static run(A &a); }; void A::run1(A &a) { for (int i = 0; i < a.n; ++ i) cout << "run1" << endl; } void A::run2(A &a) { for (int i = 0; i < a.n; ++i) cout << "run2" << endl; } void A::run(A &a) { A * p = &a; HANDLE h1, h2; h1 = (HANDLE)_beginthreadex(NULL, 0, A::run1, p, 0, 0); h2 = (HANDLE)_beginthreadex(NULL, 0, A::run2, p, 0, 0); } int main() { A a(3); a.run(a); return 0; } 我参考了很多资料,都很零碎。最后我不得已把run1(),run2(),run()全部声明为static,还是报错:"Severity Code Description Project File Line Error (active) argument of type "void (*)(A &a)" is incompatible with parameter of type "_beginthreadex_proc_type" "求助!!!!!!

Linux 回调函数与线程共同访问全局变量,但结果不一样,太诡异了

``` #include "stdio.h" #include <stdlib.h> #include <unistd.h> #include <iostream> #include "CommonUtils.h" #include "address.h" #include "tcpserver.h" #include "httpserver.h" #include "httprequest.h" #include "httpresponse.h" #include "httpconnection.h" using namespace std; using namespace tnet; using namespace std::placeholders; //==================================================================// //全局变量 std::vector<string> vecMessageQueque; volatile int g_iVarTest = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; //==================================================================// void onHandler(const HttpConnectionPtr_t& conn, const HttpRequest& request) { printf("HTTP接收数据:%s\n" , request.body.c_str()); g_iVarTest += 1; printf("变量值地址:%d\n" , g_iVarTest); //=============================================================// //构造应答 HttpResponse resp; resp.statusCode = 200; resp.setContentType("text/html"); resp.setKeepAlive(true); resp.enableDate(); resp.body.append("recvdata: success"); //json字符串 conn->send(resp); //=============================================================// } //消息队列调度线程 void* MessageProcThread(void* lpParameter) { int i = 0; char buffer[1024]; while (true) { printf("消息处理数量:%d\n" , g_iVarTest); sleep(1); } } //消息队列调度线程 void* HttpServiceThread(void* lpParameter) { TcpServer s; HttpServer httpd(&s); printf("HTTP服务启动正常...\n"); httpd.setHttpCallback("/service/", std::bind(&onHandler, _1, _2)); httpd.listen(Address(11181)); s.start(4); } int main() { //创建消息处理线程 //========================================================// //传入的时候必须强制转换为void* 类型,即无类型指针 pthread_t hMsgProcThread; pthread_create(&hMsgProcThread, NULL, MessageProcThread, NULL); //测试http服务 //========================================================// pthread_t hHttpServiceThread; pthread_create(&hHttpServiceThread, NULL, HttpServiceThread, NULL); //========================================================// while (true ) { char ch = getchar(); if (ch =='#') break; } return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201911/15/1573801102_73815.png) 代码如上,g_iVarTest这个值已经改变,MessageProcThread线程访问的结果与onHandler回调的结果不一样,求高手解答以下!

cuda一个global函数里调用多个核函数出问题。

caffe编写loss层时, 我一个global函数里有多个核函数,但是有时前两个核函数不执行,有时候又执行,不清楚问题出在哪里? ``` template <typename Dtype> void PixelClustingLossLayer<Dtype>::Forward_gpu( const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top) { const int num = bottom[0]->num(); const int data_channels = bottom[0]->channels(); const int mask_channels = bottom[1]->channels(); const int height = bottom[0]->height(); const int width = bottom[0]->width(); const int spatial_dim = height * width; const int nc = num * data_channels; const int data_count = bottom[0]->count(); const int mask_count = bottom[1]->count(); Dtype* pos_num_data = pos_num_.mutable_cpu_data(); Dtype* neg_num_data = neg_num_.mutable_cpu_data(); caffe_gpu_set(mask_count, Dtype(0.), pixel_mask_.mutable_gpu_data()); caffe_gpu_set(num, Dtype(0.), loss_mask_.mutable_gpu_data()); caffe_gpu_set(num*data_channels, Dtype(0.), pos_ave_.mutable_gpu_data()); caffe_gpu_set(num*data_channels, Dtype(0.), neg_ave_.mutable_gpu_data()); caffe_gpu_set(num, Dtype(0.), pos_loss_.mutable_gpu_data()); caffe_gpu_set(num, Dtype(0.), neg_loss_.mutable_gpu_data()); caffe_gpu_set(num, Dtype(0.), center_loss_.mutable_gpu_data()); for(int n=0; n<num; ++n) { caffe_gpu_asum(spatial_dim, bottom[1]->gpu_data() + n * spatial_dim, pos_num_.mutable_cpu_data() + n); neg_num_data[n] = spatial_dim - pos_num_data[n]; } //LOG(INFO)<<"There are "<<pos_num_.cpu_data()[0]<<" pos pixels and "<<neg_num_.cpu_data()[0]<<" neg pixels."; GetTotalValue<Dtype> <<<CAFFE_GET_BLOCKS(data_count), CAFFE_CUDA_NUM_THREADS>>>(data_count, bottom[0]->gpu_data(), bottom[1]->gpu_data(), pos_ave_.mutable_gpu_data(), neg_ave_.mutable_gpu_data(), data_channels, height, width); //LOG(INFO)<<"There are 111 neg pixels."; GetAveValue<Dtype> <<<CAFFE_GET_BLOCKS(nc), CAFFE_CUDA_NUM_THREADS>>>(nc, pos_num_.gpu_data(), neg_num_.gpu_data(), pos_ave_.mutable_gpu_data(), neg_ave_.mutable_gpu_data(), center_loss_.mutable_gpu_data(), data_channels); //LOG(INFO)<<"There are 222 neg pixels."; PowerEuclideanDistance<Dtype> <<<CAFFE_GET_BLOCKS(mask_count), CAFFE_CUDA_NUM_THREADS>>>(mask_count, bottom[0]->gpu_data(), bottom[1]->gpu_data(), pos_ave_.gpu_data(), neg_ave_.gpu_data(), euclidean_dis_.mutable_gpu_data(), mask_channels, data_channels, height, width); ComputePixelLoss<Dtype> <<<CAFFE_GET_BLOCKS(mask_count), CAFFE_CUDA_NUM_THREADS>>>(mask_count, bottom[1]->gpu_data(), euclidean_dis_.gpu_data(), pos_loss_.mutable_gpu_data(), neg_loss_.mutable_gpu_data(), pos_num_.gpu_data(), neg_num_.gpu_data(), pixel_mask_.mutable_gpu_data(), mask_channels, height, width, alpha_); ComputeClassLoss<Dtype> <<<CAFFE_GET_BLOCKS(num), CAFFE_CUDA_NUM_THREADS>>>(num, center_loss_.mutable_gpu_data(), loss_mask_.mutable_gpu_data(), beta_); caffe_gpu_add(num, neg_loss_.gpu_data(), pos_loss_.gpu_data(), loss_.mutable_gpu_data()); caffe_gpu_add(num, loss_.gpu_data(), center_loss_.gpu_data(), loss_.mutable_gpu_data()); Dtype loss; caffe_gpu_asum(num, loss_.gpu_data(), &loss); LOG(INFO)<<loss/Dtype(num); top[0]->mutable_cpu_data()[0] = loss / num; } ``` 主要是GetTotalValue()函数和GetAveValue()函数,偶尔执行,偶尔不执行,头都晕了。 有没有大神指点迷津。

Qt 怎么在自定义函数中调用MainWindow中的槽函数

自定义的函数,没有继承MainWindow,写了emit 信号一直报错。 怎么在自定义函数中调用MainWindow中的槽函数。

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

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

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

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

和黑客斗争的 6 天!

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

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

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

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

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

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

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

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

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

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

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

优雅的替换if-else语句

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

离职半年了,老东家又发 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多个条件是什么逻辑关系?条件判断在什么时候执...

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

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

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

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

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

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

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

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

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

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

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

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

轻松等回家通知

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

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

阿里面试官让我用Zk(Zookeeper)实现分布式锁

他可能没想到,我当场手写出来了

终于,月薪过5万了!

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

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

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

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

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

立即提问
相关内容推荐