Ubuntu下使用opencv打开摄像头出现“已放弃(核心已转储)”

在Ubuntu 16.04 系统下使用opencv-3.2.0打开摄像头,运行可执行程序后出现如下错误:
OpenCV Error: Assertion failed (total() == 0 || data != NULL) in Mat, file /home/thunder/code/opencv-3.2.0/modules/core/include/opencv2/core/mat.inl.hpp, line 431

terminate called after throwing an instance of 'cv::Exception'
what(): /home/thunder/code/opencv-3.2.0/modules/core/include/opencv2/core/mat.inl.hpp:431: error: (-215) total() == 0 || data != NULL in function Mat

已放弃 (核心已转储)

求助各位大神这是什么地方的问题,不胜感激!
图片说明

3个回答

可能是没有读到图片,你就直接imshow了,建议在imshow外面判断一下Mat是否为空

请问问题解决了吗?看到好多说在命令前加sudo的,加过之后只提示“已放弃”,还是出错

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Linux下使用opencv打开摄像头后无法彻底关闭摄像头
Linux下使用opencv调用cvCreateCameraCapture打开摄像头后,使用cvReleaseCapture无法彻底关闭摄像头,摄像头上的灯还亮着。只有退出程序才能关闭。如果不退出的话,再次调用cvCreateCameraCapture后就无法获取图像,出现 VIDIOC_STREAMON: 错误的文件描述符。初次接触opencv,不是很了解。
python-opencv无法打开摄像头
在linux下,使用python无法打开摄像头,第一次编译程序是没有任何反映,第二次就显示libv4l2: error setting pixformat: Device or resource busy HIGHGUI ERROR: libv4l unable to ioctl S_FMT libv4l2: error setting pixformat: Device or resource busy libv4l1: error setting pixformat: Device or resource busy libv4l2: error setting pixformat: Device or resource busy libv4l1: error setting pixformat: Device or resource busy HIGHGUI ERROR: libv4l unable to ioctl VIDIOCSPICT 这种错误,此后一直显示资源繁忙。但是使用opencv能够正常的打开摄像头。以下是python的程序import cv2 import numpy as np cap = cv2.VideoCapture(0) while(1): # get a frame ret, frame = cap.read() # show a frame cv2.imshow('capture', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() 求大神帮忙解决,没有人有类似的问题吗
QT中使用opencv打开摄像头
我是按照一篇帖子上写的编得一个打开摄像头显示视频的程序,但是不知道为什么显示错误![错误提示](https://img-ask.csdn.net/upload/201602/26/1456490510_417338.png)
opencv能打开什么摄像头,一般的工业摄像头怎么打开?是不是只要能在电脑上用的都能打开?
最近才刚开始看opencv的知识,以前也没有接触过工业摄像头,我想知道opencv对能打开的摄像头有什么要求,是不是只要能在电脑上显示的摄像头就能在opencv中打开?想请各位专业大神指教指教。谢谢
linux下qt中opencv打开摄像头HIGHGUI ERROR:OpenCV Error:
我在Ubuntu下用qt结合opencv做一个人眼状态识别的程序,qt做界面,程序在vs控制台环境下已经可以运行,但是qt下出错。错误信息 如下: HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/mkc/opencv/opencvinstallor/opencv-2.4.9/modules/imgproc/src/color.cpp, line 3737 Qt has caught an exception thrown from an event handler. Throwing exceptions from an event handler is not supported in Qt. You must reimplement QApplication::notify() and catch all exceptions there. 1. 我的程序思路是用opencv打开摄像头并捕捉每一帧,做完处理,最后在qt的label上显示,其间做了一个mat到QImage的转换, 2.用opencv官方程序圈出人脸。我单纯的将这一步写进qt运行没问题,能将摄像头显示在label上,但是将自己完整的一直到人眼状态识别代码写进去就报错。 3.中间用了opencv新版的Mat格式,也用了IplImage的图像格式,在Ubuntu下单纯编译也没错,但是到了qt下就闪退。 4.我百度得到的可能性是:如果有空帧的话,cvtColor会报错,后来我将 if( !frame.empty() )写在打开摄像头后还是报错。 我自己根本不太懂opencv和qt,所以一直没解决,会不会是是mat还有IplImage、QImage三种格式之间转换出了问题。 希望各位遇见过的各位能给与帮助,不甚感激。
Linux下Opencv打开摄像头出错
我在vmare的Fedora9 环境下使用qt加上opencv捕捉图像。 CvCapture* capture = 0; capture = cvCaptureFromCAM( 0 ); 编译时出现VIDIOC_QUERYCTRL:input/output error。 我的摄像头是支持v4l2的,所以很奇怪,想请教下有什么办法可以解决
opencv分类器小程序打开摄像头特别卡
为什么短短几段代码,打开摄像头却特别卡,各位老师,怎么解决 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespace std; string car_detection_name = "D:\\opencv\\sources\\data\\haarcascades\\car_detection.xml"; CascadeClassifier car_detection; int main(int argv, char **argc) { car_detection.load(car_detection_name); VideoCapture cam(0); if(strcmp(argc[1],"run")==0) { while (1) { Mat frame, Gray; vector<Rect>car; cam >> frame; cvtColor(frame, Gray, CV_BGR2GRAY); equalizeHist(Gray, Gray); car_detection.detectMultiScale(Gray, car, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(1, 1)); for (int i = 0; i < car.size(); i++) { rectangle(frame, car[i], Scalar(255, 0, 0), 1, 8, 0); } imshow("output", frame); if (waitKey(30) >= 0) break; } } return 0; }
opencv2.4.8打开摄像头失败
各位大神好! 不知道有没有谁之前使用opencv2.4.8可以正常打开USB摄像头的? 我使用的是vs2013+opencv2.4.8 系统是win8中文版,用opencv打开摄像头时怎么无法打开 获取摄像头的指针为空,很是纠结,
opencv调用摄像头进行矩形检测,release模式下无法出现摄像头画面?
在debug模式下可以正常运行 release下也编译通过 ``` #include<opencv2/opencv.hpp> using namespace cv; using namespace std; double getAngle(Point pt1, Point pt2, Point pt0) { double dx1 = pt1.x - pt0.x; double dy1 = pt1.y - pt0.y; double dx2 = pt2.x - pt0.x; double dy2 = pt2.y - pt0.y; return (dx1*dx2 + dy1*dy2) / sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10); } bool isYellowSquare(Mat image_H, vector<Point> square) { int pointX[4]; int pointY[4]; for (int i = 0; i < 4; i++) { pointX[i] = square[i].x; pointY[i] = square[i].y; } for (int i = 0; i < 4; i++) { for (int j = 0; j < 3 - i; j++) { if (pointX[j] > pointX[j + 1]) { int tx = pointX[j]; pointX[j] = pointX[j + 1]; pointX[j + 1] = tx; } if (pointY[j] > pointY[j + 1]) { int ty = pointY[j]; pointY[j] = pointY[j + 1]; pointY[j + 1] = ty; } } } Rect rect(pointX[0], pointY[0], pointX[3] - pointX[0] + 1, pointY[3] - pointY[0] + 1); Mat roImg(image_H, rect); int count = 0; for (int i = 0; i<roImg.rows; i++) { uchar* data = roImg.ptr<uchar>(i); for (int j = 0; j<roImg.cols; j++) { if (data[j] == 0) count += 1; } } if (count>0.8*((roImg.cols*roImg.rows)/2 + (pointX[2]-pointX[1]+1)*(pointY[2]-pointY[1]+1)/2)) return true; else return false; } bool getSquarePts(const Mat image, vector<vector<Point> >& squares) { bool isGetSquares = false; squares.clear(); //数组清空 Mat pyr, gray0, gray, grayImg; Mat imageHSV, image_H; cvtColor(image, grayImg, CV_RGB2GRAY); cvtColor(image, imageHSV, CV_BGR2HSV); //将image转到HSV空间 image_H.create(imageHSV.size(), imageHSV.depth()); //定义与imageHSV同尺寸和深度的图像image_H int ch1[] = { 0, 0 }; mixChannels(&imageHSV, 1, &image_H, 1, ch1, 1); //将imageHSV的H层复制到image_H for (int i = 0; i < image_H.rows; i++) { uchar* data = image_H.ptr<uchar>(i); for (int j = 0; j < image_H.cols; j++) { if (data[j] >= 10 && data[j] <= 40) data[j] = 0; else data[j] = 255; } } pyrDown(grayImg, pyr, Size(image.cols / 2, image.rows / 2)); pyrUp(pyr, gray0, image.size()); Canny(gray0, gray, 0, 50, 3); dilate(gray, gray, Mat(), Point(-1, -1)); for (int i = 0; i < gray.rows; i++) { uchar* data1 = gray.ptr<uchar>(i); uchar* data2 = image_H.ptr<uchar>(i); for (int j = 0; j < gray.cols; j++) { if (data1[j] == 255) data2[j] = 255; } } vector<vector<Point> > contours; findContours(image_H, contours, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE); //对image_H进行处理,将检测出的每个轮廓(相互独立)以点集(拐点)的形式存储到contours中 vector<Point> approx; //存储矩形4个顶点的坐标的数组 for (size_t i = 0; i < contours.size(); i++) { approxPolyDP(Mat(contours[i]), approx, arcLength(Mat(contours[i]), true)*0.02, true);//输出封闭的多边形顶点点集 //判断是否为四边形等条件 if (approx.size() == 4 && fabs(contourArea(Mat(approx))) > 1000 && isContourConvex(Mat(approx))) { double maxCosine = 0; for (int j = 2; j < 5; j++) { double cosine = fabs(getAngle(approx[j % 4], approx[j - 2], approx[j - 1])); //计算夹角余弦值 maxCosine = MAX(maxCosine, cosine); } //如果三个夹角余弦值都小于0.3则说明是矩形,并存储矩形 if (maxCosine < 0.3&&isYellowSquare(image_H, approx)) { squares.push_back(approx); isGetSquares = true; } } } /*if (squares.size()>1) { vector<Point>center; vector<int>item; int d; for (int i = 0; i<squares.size(); i++) { Point point; point.x = (squares[i][0].x + squares[i][2].x) / 2; point.y = (squares[i][0].y + squares[i][2].y) / 2; center.push_back(point); } for (int i = 0; i<center.size() - 1; i++) { for (int j = i + 1; j<center.size(); j++) { d = (center[i].x - center[j].x)*(center[i].x - center[j].x) + (center[i].y - center[j].y)*(center[i].y - center[j].y); if (d<100) { item.push_back(i); break; } } } int n = 0; for (int j = 0; j<item.size(); j++) { squares.erase(squares.begin() + item[j]-n); ++n; } }*/ return isGetSquares; } //旋转图像中点的函数 Point getPointAffinedPos(Point src, Point center, double angle,double scale) { Point dst; int x = src.x - center.x; int y = src.y - center.y; dst.x = cvRound(x * cos(angle) + y * sin(angle) + center.x); dst.y = cvRound(-x * sin(angle) + y * cos(angle) + center.y); dst.x = (dst.x - center.x)*scale + center.x; dst.y = (dst.y - center.y)*scale + center.y; return dst; } //裁切 void cutImg(const Mat image, vector<vector<Point> > squares, vector<Mat>& rectResult) { for (int i_ = 0; i_ < squares.size(); i_++) { vector<Point>longside; //存储矩形长边的两个顶点 longside.push_back(squares[i_][1]); longside.push_back(squares[i_][2]); Mat rot(2, 3, CV_32FC1); //旋转矩阵 Mat rotMat = Mat::zeros(image.size(), image.type()); //定义旋转后的矩阵 Point center = Point(rotMat.cols / 2, rotMat.rows / 2); //旋转中心 double angle = atan((longside[0].y - longside[1].y) / ((longside[0].x - longside[1].x) + 0.00000001)) * 180 / CV_PI; //旋转角度 double scale = image.rows / sqrt(image.cols*image.cols + image.rows*image.rows); //缩放参数 rot = getRotationMatrix2D(center, angle, scale); //获得旋转矩阵 warpAffine(image, rotMat, rot, image.size()); //旋转并缩放图像 vector<Point>resultPoint; //存储旋转后矩形的4个顶点 Point point; for (int i = 0; i < 4; i++) { point = getPointAffinedPos(squares[i_][i], Point(image.cols / 2, image.rows / 2), angle*CV_PI / 180, scale); resultPoint.push_back(point); //存储顶点 } //获得矩形的bounding box(近似于矩形本身) int maxX, minX, maxY, minY; maxX = maxY = 0; minX = resultPoint[0].x; minY = resultPoint[0].y; for (int i = 0; i < resultPoint.size(); i++) { maxX = resultPoint[i].x > maxX ? resultPoint[i].x : maxX; minX = resultPoint[i].x < minX ? resultPoint[i].x : minX; maxY = resultPoint[i].y > maxY ? resultPoint[i].y : maxY; minY = resultPoint[i].y < minY ? resultPoint[i].y : minY; } //裁剪矩形并存储到新图像中 Rect rect(minX, minY, maxX - minX + 1, maxY - minY + 1); Mat temp(rotMat, rect); /*Mat temp_hsv; cvtColor(temp, temp_hsv, COLOR_BGR2HSV); Mat temp_H; temp_H.create(temp_hsv.size(), temp_hsv.depth()); int ch1[] = { 0, 0 }; mixChannels(&temp_hsv, 1, &temp_H, 1, ch1, 1); Mat Image(temp_H.size(), CV_8U); for (int i = 0; i<Image.rows; i++) { uchar* data = Image.ptr<uchar>(i); uchar* data1 = temp_H.ptr<uchar>(i); for (int j = 0; j<Image.cols; j++) { if (data1[j]>32) data[j] = 0; else data[j] = 255; } }*/ rectResult.push_back(temp); } cout << rectResult.size() << endl; } // the function draws all the squares in the image void drawSquares(Mat& image, const vector<vector<Point> > squares) { int maxX, minX, maxY, minY; for (int i = 0; i < squares.size(); i++) { maxX = maxY = 0; minX = squares[i][0].x; minY = squares[i][0].y; for (int j = 0; j < 4; j++) { maxX = maxX > squares[i][j].x ? maxX : squares[i][j].x; minX = minX < squares[i][j].x ? minX : squares[i][j].x; maxY = maxY > squares[i][j].y ? maxY : squares[i][j].y; minY = minY < squares[i][j].y ? minY : squares[i][j].y; } Point point1, point2; point1.x = minX; point1.y = minY; point2.x = maxX; point2.y = maxY; rectangle(image, point1, point2, (0, 0, 255), 2, 8, 0); //画矩形 } } bool findSquares(Mat& image, vector<Mat>& resultImage,vector<Point>& center) { bool isFindSquares = false; vector<vector<Point> > squarePts; isFindSquares = getSquarePts(image, squarePts); if (isFindSquares) cutImg(image, squarePts, resultImage); else cout << "can't find squares!" << endl; drawSquares(image, squarePts); for (int i = 0; i < squarePts.size(); i++) { Point point; point.x = (squarePts[i][0].x + squarePts[i][2].x) / 2; point.y = (squarePts[i][0].y + squarePts[i][2].y) / 2; center.push_back(point); } waitKey(20); return isFindSquares; int main() { VideoCapture capture(0); Mat image; if (!capture.isOpened()) { cout << "can not open"; cin.get(); return 0; } vector<vector<Point>>squares; vector<Mat>cutImage; while (true) { capture >> image; getSquarePts(image, squares); cutImg(image, squares, cutImage); drawSquares(image, squares); imshow("检测结果", image); waitKey(30); } return 0; } } ```
CVI怎么调用opencv的库打开摄像头
我一开始想把在opencv打开摄像头的lib以及所用到的.h,都添加进去,但是,有些库找也找不到。然后又想在VS中生成动态链接库去调用,生成的.h文件里面还包含.hpp文件,一直弄不来,请大佬们指教一下。
ubuntu用opencv运行摄像头程序出错
IDE是qt,代码在windows下正常运行,但是在ubuntu下只能运行一次,关闭在运行调试时出现以下错误,如图!怎么解决啊!!![图片说明](https://img-ask.csdn.net/upload/201607/18/1468831075_970059.png)
用OpenCV2 打开多摄像头,如何确定摄像头序号
这是个小问题。 按照OpenCV说明书的说法,打开摄像头,可以使用如下语句形式: VideoCapture::VideoCapture(int device) 对于其中的device部分,说明手册有如下提示 device – id of the opened video capturing device (i.e. a camera index). 我想问的是,使用多个摄像头时,如何确定各个摄像头所对应的id。 比如,当有两个摄像头时,我尝试一个为0,一个为1,通过看捕获的图像,可以确定各摄像头的id,但不知这个顺序是否固定。但这样毕竟很被动,而且不知道开关机等操作后,再运行改程序,设备号是否会变化。 我想一定有可以查看摄像头对应的所谓id的方法,但没有搜到,希望有人能解答。
用opencv调用摄像头,然后根据视频图像变化,获得摄像头运动轨迹可以怎么做?
用opencv调用摄像头,然后根据视频图像变化,获得摄像头运动轨迹可以怎么做?最好有程序
opencv 打开双目摄像头
std::thread openVideo1(openVideoTask, video, scamera1 + 700); std::thread openVideo2(openVideoTask, video2, scamera2 + 700); openVideo1.join(); openVideo2.join(); static void openVideoTask(cv::VideoCapture &videoCap,int index){ if (videoCap.open(index)){ cv::Mat tmpFrame; videoCap.read(tmpFrame); } } 打开摄像头总是失败,把代码都放在主线程中执行,则可正常打开
opencv在摄像头已开启的情况下修改摄像头分辨率为什么还要在打开一次
if(!m_camera.isopen()) { m_camera->open(id); } m_camera->open(id); //为什么在摄像头已经打开的时候还一定要加这一句才能成功she'zhi if (!m_camera->set(CV_CAP_PROP_FRAME_WIDTH, w)) //设置帧宽 { emit sig_str("set error"); return; } if (!m_camera->set(CV_CAP_PROP_FRAME_HEIGHT, h)) //设置帧高 { emit sig_str("set error"); return; } if (!m_camera->set(CV_CAP_PROP_FORMAT, format)) //设置摄像头格式 { emit sig_str("set error"); return; } double frameRate = m_camera->get(CV_CAP_PROP_FPS); //获取帧率 emit sig_Frame(frameRate); //showVideo();
ubuntu 下运行opencv程序
已经按照在ubuntu下配置好opencv环境,而且可以编译运行程序, 但是我现在写一个cpp代码中需要识别二维码,就是导入zbar包。 之前在Windows下就好做,现在就不知道怎么配置链接库。新手学习,请有经验的指点下。 最好是文件夹下的配置说明一下。非常感谢。 下面就是运行缺少这个头文件,包。 ![图片说明](https://img-ask.csdn.net/upload/201801/18/1516273939_332294.png)
python 环境下使用OpenCV读取网络摄像头视频帧?|
我的摄像头是Baumer摄像头,使用网线连接的,python环境下用OpenCV检测不到摄像头,有官方的SDK,支持C++开发,请问怎么解决? 账户没有C币了,实在抱歉
OpenCV如何打开多个不同接口的摄像头
通过OpenCV的类VideoCapture如何将PCIe采集卡的摄像头跟USB摄像头区别开来,打开指定的摄像头。
ubuntu下qtcreator工程中利用opencv编写工程,摄像头无法第二次打开
ubuntu下qtcreator工程中利用opencv编写工程,opencv库操作,摄像头第一次可以 正常使用,一旦点击停止键后,无法第二次打开,再次运行时就会报错。 libv4l2: error turning on stream: Invalid argument cap 在析构函数中我有作释放。请问这是什么原因啊?? ~~~~~~~~~~~~~~~~ VideoCapture cap; cap.open(camId); // open the default camera if(!cap.isOpened()) // check if we succeeded { return false; } cap.release(); 图片说明![图片说明](https://img-ask.csdn.net/upload/201506/29/1435541831_96278.jpg) 我点击上面的 x 可以关闭程序,切可以二次打开,并且仅析构执行。。但是如果我点击stopping debug 就会出现我描述的无法二次打开,是不是这种强行关闭 无法进析构函数释放资源啊。谁能帮忙解释下或给点意见。。 主函数 int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; //================kint============== w.configure_file = argv[1]; w.camera_ID = atoi(argv[2]); // w.init(argv[1], 1); //================kint============== w.show(); return a.exec(); } 析构函数 MainWindow::~MainWindow() { delete ui; delete pCam_qr_estimation; }
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
这篇文章通过对话的形式,由浅入深带你读懂 AVL 树,看完让你保证理解 AVL 树的各种操作,如果觉得不错,别吝啬你的赞哦。 1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。 2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。 3、它的左右子树也分别可以充当为二叉查找树。 例如: 例如,我现在想要查找数值为14的节点。由于二叉查找树的特性,我们可...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
《C++ Primer》学习笔记(六):C++模块设计——函数
专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 https://blog.csdn.net/TeFuirnever/article/details/100700212 —————————————————————————————————————————————————————— 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数 文章目录专栏C+...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问