C++:test类中为什么创建了6个对象,却调用了7次析构函数

自己写了个Test类,原来是想验证在在下面这条语句中是不是先创建一个临时变量,然后再调用拷贝构造函数,

 Test t3 = test_func(t2);

程序共3个文件test.h test.cpp 和prac.cpp,分列如下:

// test.h
 class Test
{
public:
    Test();
    ~Test();
    Test(const Test &);
    const Test operator=(const Test &);
    friend  Test test_func(const Test );
    void say(void);
};
// test.cpp
#include <iostream>
#include "test.h"

Test::Test()
{
    std::cout << "default constructor called!\n";
}
Test::~Test()
{
    std::cout << "default destructor called!\n";
}
Test::Test(const Test &)
{
    std::cout << "Using copy constructor...\n";
}

const Test Test::operator=(const Test& test)
{
    std::cout << "Using default assignment overloaded\n";
}

Test test_func(const Test test)
{
    std::cout << "------------------------------\n";
    Test tst;
    std::cout << "------------------------------\n";
    return tst;
}

void Test::say(void)
{
    std::cout << "I'm here!\n";
}
// prac.cpp
#include "test.h"

int main(void)
{
    Test t1;
    Test t2;
    t1 = test_func(t2);
    Test t3 = test_func(t2);
    t3.say();
    return 0;
}

运行之后,出现了下面的情况

default constructor called!   // t1
default constructor called!   // t2
Using copy constructor...    // 第一次调用test_func函数参数传值
------------------------------
default constructor called!  // 第一次调用test_func函数中的局部变量
------------------------------
Using default assignment overloaded   // 使用test_func函数返回值给t1赋值
default destructor called!   // 第一次调用test_func函数参数释放
default destructor called!   // 第一次调用test_func函数局部变量释放
**default destructor called! **   // 这里的这个是哪个对象调用的呢?
Using copy constructor...   // 第二次调用test_func函数参数传值
------------------------------
default constructor called!// 第二次调用test_func函数中的局部变量
------------------------------
default destructor called! // 第二次调用test_func函数中参数释放
_// 这里不是该有一个第二个局部变量释放调用default desctructor 的语句打印吗吗?
// 这里不是该有一个t3 使用复制构造函数的语句打印吗?_
I'm here!                       // t3 调用say()
default destructor called! // t3 释放
default destructor called! // t2 释放
default destructor called! // t1 释放

现在弄不明白的是那多出的一个析构函数调用是哪里用到的?
还有在t3声明初始化为函数返回值时,用没用临时变量传值(从程序输出看,好像第二次局部变量再函数运行完之后没有释放,而是直接变身成了t3)?

4个回答

const Test Test::operator=(const Test& test)
{
std::cout << "Using default assignment overloaded\n";
}
这里没有返回值,代码根本就没法编译。

wylblq
WitcherLu 回复eagleyan: C++有拷贝构造函数和重载赋值操作符,没听说过有赋值构造函数的
5 年多之前 回复
enpersuen
enpersuen 回复eagleyan: 恩是的,我修改了返回test,但结果还是一样,析构函数比构造函数多调用了一次
5 年多之前 回复
eagleyan
Coursera 这是赋值构造函数
5 年多之前 回复
enpersuen
enpersuen 额,但是我实在是运行了这个程序了啊。
5 年多之前 回复

你的代码

const Test Test::operator=(const Test& test)

返回的是

return Test();

这样的吗?

不好意思,我不会,但我也想上机试试

8次构造,8次析构,你再好好查下你自己的图片图片

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++:test类中为什么创建了6个对象,却调用了7次析构函数
自己写了个Test类,原来是想验证在在下面这条语句中是不是先创建一个临时变量,然后再调用拷贝构造函数, ``` Test t3 = test_func(t2); ``` 程序共3个文件test.h test.cpp 和prac.cpp,分列如下: ``` // test.h class Test { public: Test(); ~Test(); Test(const Test &); const Test operator=(const Test &); friend Test test_func(const Test ); void say(void); }; ``` ``` // test.cpp #include <iostream> #include "test.h" Test::Test() { std::cout << "default constructor called!\n"; } Test::~Test() { std::cout << "default destructor called!\n"; } Test::Test(const Test &) { std::cout << "Using copy constructor...\n"; } const Test Test::operator=(const Test& test) { std::cout << "Using default assignment overloaded\n"; } Test test_func(const Test test) { std::cout << "------------------------------\n"; Test tst; std::cout << "------------------------------\n"; return tst; } void Test::say(void) { std::cout << "I'm here!\n"; } ``` ``` // prac.cpp #include "test.h" int main(void) { Test t1; Test t2; t1 = test_func(t2); Test t3 = test_func(t2); t3.say(); return 0; } ``` 运行之后,出现了下面的情况 ``` default constructor called! // t1 default constructor called! // t2 Using copy constructor... // 第一次调用test_func函数参数传值 ------------------------------ default constructor called! // 第一次调用test_func函数中的局部变量 ------------------------------ Using default assignment overloaded // 使用test_func函数返回值给t1赋值 default destructor called! // 第一次调用test_func函数参数释放 default destructor called! // 第一次调用test_func函数局部变量释放 **default destructor called! ** // 这里的这个是哪个对象调用的呢? Using copy constructor... // 第二次调用test_func函数参数传值 ------------------------------ default constructor called!// 第二次调用test_func函数中的局部变量 ------------------------------ default destructor called! // 第二次调用test_func函数中参数释放 _// 这里不是该有一个第二个局部变量释放调用default desctructor 的语句打印吗吗? // 这里不是该有一个t3 使用复制构造函数的语句打印吗?_ I'm here! // t3 调用say() default destructor called! // t3 释放 default destructor called! // t2 释放 default destructor called! // t1 释放 ``` 现在弄不明白的是那多出的一个析构函数调用是哪里用到的? 还有在t3声明初始化为函数返回值时,用没用临时变量传值(从程序输出看,好像第二次局部变量再函数运行完之后没有释放,而是直接变身成了t3)?
C++析构顺序,出乎意料
为什么下面析构时,b、a的析构函数没有被调用??? 《深度探索C++对象模型》中讲过,先调用自己的析构函数,再调用成员变量的析构函数,最后调用父类的析构函数。 **以下代码的输出,有点超乎我的理解范围,求解,求相助!** #include "stdafx.h" #include <iostream> #include <cstdio> using namespace std; class A { public: A() { puts("In A"); } ~A() { puts("Out A"); } }; class B { public: B() { puts("In B"); } ~B() { puts("Out B"); } }; class X { public: X() { puts("In X"); } ~X() { puts("Out X"); } virtual void test() { puts("test in X"); } }; class C:public X { public: C(): b(), a() { puts("In C"); } ~C() { puts("Out C"); } virtual void test() { puts("test in C"); } private: A a; B b; }; int main() { X* p = new C; p->test(); delete p; return 0; }
关于dos命令 for 的使用或 dir c:\test\test test\ 找不到路径的问题
问题描述: 我想用脚本删除固定的文件,但这些文件在路径上的文件夹有的包含空格从而导致无法找到文件 请帮忙分析下 先谢谢了哈! 删除文件 test.txt 文件所在路径: c:test\test test\test\ for /r c:test %m in (test.txt) do del %m 理想结果: 成功删除 c:test 下的所有text.txt 文件 现在的结果为: 找不到 c:test\test test\test\test.txt 路径 原因是test test这样的文件名不支持 例如dir c:test\test test\test\test.txt 同样找不到路径 修改为dir c:test\"test test"\test\test.txt 才可以 可是我在 for 里面如何给 test test 加双引号变为 "test test " 补充一下,我用的是windows 系统 [b]问题补充:[/b] @for /r "C:\test\test test\" %%m in (test.txt) do @if exist %%m ( del "%%m" & echo 删除:%%m ) 其中"test test" 前面有的路径无法确认 所以不能再路径上写死了 [b]问题补充:[/b] 首先谢谢bohemia (架构师) 的回复 我是先在dos下测试,然后再注入到脚本里. 我的意思是在c:\test到test test中间可能还有其他的路径 比如c:test\dir\test test\或 c:test\dir test\test test\ 其中dir 和dir test 是不确定的路径 [b]问题补充:[/b] 刚才在忙没有注意一个细节 就是"%%m" 谢谢 bohemia (架构师)
<c:if test="${c.cid eq book.category.cid}" >selected="selected" </c:if>到底是什么意思
<c:forEach items="${categoryList }" var="c"> <option value="${c.cid }" <c:if test="${c.cid eq book.category.cid}" >selected="selected" </c:if>>${c.cname }</option> </c:forEach>中 value="${c.cid }"中的value包含了categoryList中的所有cid吗,<c:if test="${c.cid eq book.category.cid}" >selected="selected" </c:if>这句到底是什么意思呢,谢谢了!
有人会Qt调用yolo检测视频的吗?error: C2664: “std::vector<bbox_t,std::allocator<_Ty>> Detector::detect(image_t,float,bool)”: 无法将参数 1 从“cv::Mat”转换为“std::string” with [ _Ty=bbox_t ]
使用Yolov3中的Detector类老是报错: error: C2664: “std::vector<bbox_t,std::allocator<_Ty>> Detector::detect(image_t,float,bool)”: 无法将参数 1 从“cv::Mat”转换为“std::string” with [ _Ty=bbox_t ] ``` void MainWindow::on_pushbutton_video() { std::string names_file = "E:/YoloTest/coco.names"; std::string cfg_file = "E:/YoloTest/yolov3.cfg"; std::string weights_file = "E:/YoloTest/yolov3.weights"; Detector detector(cfg_file,weights_file,0); //std::vector<std::string> obj_names = objects_names_from_file(names_file); //调用获得分类对象名称 //或者使用以下四行代码也可实现读入分类对象文件 std::vector<std::string> obj_names; std::ifstream ifs(names_file.c_str()); std::string line; while (getline(ifs, line)) obj_names.push_back(line); capture.open("E:/YoloTest/test1.mp4"); if (!capture.isOpened()) { printf("文件打开失败"); } cv::Mat frame; while (true) { capture >> frame; std::vector<bbox_t> result_vec = detector.detect(frame); draw_boxes(frame, result_vec, obj_names); cv::namedWindow("test", CV_WINDOW_NORMAL); cv::imshow("test", frame); cv::waitKey(3); } } ``` 求助orz
Java多个类相互调用方法问题
入门Java基础,类和对象的概念。求解一个多个类相互调用方法的小案例 只用到类和对象等基础的知识 1、任务说明 超市商品价格查询,应用类和对象的概念, 2、需求分析 超市购物,查询商品价格,输入物品名称,如果存在,反馈物品价格,如果不存在,提示:没有该商品。 3、实现思路 四个类:超市、商品、顾客。还有测试类Test 超市 属性:名称、商品数组 方法:反馈商品价格。根据商品名称,在商品数组中查询,如果查到该名称,反馈价格,如果查不到,输出"没有该商品”。 商品: 属性:名称、价格 购物者: 属性:姓名 方法:查询商品。 输入商品名称,获得商品价格(需要调用超市的反馈 商品价格的方法得到商品价格)
C++调用python脚本(test.py这个脚本中import numpy)程序崩溃
我想在c++中调用python的一个脚本,这个脚本中我只是import了一个numpy就报错了,而如果是简单的脚本(没有import第三方库)就不会出错,我已经把: INCLUDEPATH += C:/Python27/include/ LIBS += C:/Python27/libs/python27.lib 添加进去了, ``` pyrun_simplestring("import sys"); pyrun_simplestring("import numpy"); pyrun_simplestring("sys.path.append('c:\python27\lib\site-packages\')"); pyerr_print(); pyobject * pmodule = null; pyobject * pfunc = null; pmodule =pyimport_importmodule("test_my"); //test001:python文件名 pfunc= pyobject_getattrstring(pmodule, "testdict"); //add:python文件中的函数名 pyobject *pargs = pytuple_new(1); pyobject *pdict = pydict_new(); //创建字典类型变量 pydict_setitemstring(pdict, "name", py_buildvalue("s", "wangyao")); //往字典类型变量中填充数据 pydict_setitemstring(pdict, "age", py_buildvalue("i", 25)); //往字典类型变量中填充数据 pytuple_setitem(pargs, 0, pdict); //0---序号 将字典类型变量添加到参数元组中 pyobject *preturn = null; preturn = pyeval_callobject(pfunc, pargs); //调用函数 int size = pydict_size(preturn); cout << "返回字典的大小为: " << size << endl; pyobject *pnewage = pydict_getitemstring(preturn, "age"); int newage; pyarg_parse(pnewage, "i", &newage); cout << "true age: " << newage << endl; py_finalize(); ``` 这是python的脚本: ``` #import numpy as np def HelloWorld(): print "Hello World" def add(a, b): #tmp=np.random.randint(10,88) return a+b def TestDict(dict): print dict dict["Age"] = 17 return dict class Person: def greet(self, greetStr): print greetStr #print add(5,7) #a = raw_input("Enter To Continue...") ``` 老是报错,但如果我把import numpy去掉就没问题,求大神解答,困扰好久了~~~
jsp <c:if test=""/>判断求助,在线等。谢谢啦
``` # <c:if test="如何判断?"/> 下面这样写没有效果,应该如何修改? ``` ![图片说明](https://img-ask.csdn.net/upload/201702/16/1487257349_40503.jpg) # <c:if test="如何判断?"/>
Python使用类装饰器出现报错:TypeError: test2() missing 1 required positional argument: 'b'
```python class Timer(object): def __init__(self, func): self.func = func def __call__(self, *args, **kwargs): print("权限验证成功...") result = self.func(*args, **kwargs) print("新添加退出成功提示...") return result class Test(object): @Timer def test2(self, a, b): # 需要参数的 c = a + b print("test2两个数的求和结果是:", c) t = Test() t.test2(2, 3) ``` 出现报错:TypeError: test2() missing 1 required positional argument: 'b' 为什么会出现selef必须传参呢,如果在test2上面添加@staticmethod删除selef参数将不会出现报错,但是这不符合装饰器的用法了,应该怎么改才能使得Test类不该任何代码的情况下加@Timer就能直接使用呢
小白第一次接触C++,构造函数,我的代码没有问题,怎么过不了编译器
还请各位前辈能够指点一下我,谢谢!! ``` #include<iostream> using namespace std; class person { public: person(); ~person(); private: int A; int B; int C; }; person::person() { A = 10; B = 20; C = 30; cout << "调用了构造函数!!" << endl; } person::~person() { cout << "调用了析构函数!!" << endl; } void test01() { person p; } int main() { test01(); system("pause"); return 0; } ```
关于jsp<c:if test标签对比字符串问题
content+="<c:set var='it' value='"+i+"'/>"; content+="<div class='db1'><c:forEach var='item' items='${list}' varStatus='status'> <c:if test='${item.iDay==it}'>${item.count}</c:if> </c:forEach></div>"; 问题是这样的,我需要将item.iDay循环出的值与 it这个对象进行对比,但是提示类型不对,我直接将it在页面用 ${it}打印出来是值是对的,比如 =1 ,但在<c:if test里面对比时提示出错 看报错 这是it的值被认为是:"+i+" 求大神解惑啊!急。。。要怎么写呢.
类的方法调用与类对象的方法调用的区别?
public class A { public static A a=new A(); public void text() {} } public class B { A.a.test(); A a1=new A(); a1.test() //这两种的调用方法的差别请问是什么啊? public static int c; public int c1; //就是一个用Static变量和没有用static声明一个变量的差别吗? //如果非得那么实现,static对象只能在A类里面那样实现吗? }
QT出现错误:error: C2660: “test_data”: 函数不接受 1 个参数,该如何解决?
程序如下: double test_data(); test_data(1)=double (ui->lineEdit->text().toDouble());
JAVA中不能创建抽象类的对象 ? 我觉得可以!
都说抽象类不允许创建具体对象实例,但是只是不能显式创建吧 ? 在一个类继承抽象类的时候,如果 new 一个子类对象,那么 JVM 首先就会创建一个抽象类的实例并调用其构造函数的,然后把这个抽象类对象包含在字类对象中,并通过 super关键子引用. 按 thinking in java 里所说,创建子类对象的时候,首先会递归的创建父类对象,并借助父类构造函数完成对父类对象的初始化。那么当父类为抽象类的时候,JVM 也同样会自动创建抽象父类的对象,然后把它包含在子类对象中。如此一来,我们平时所说的不能创建抽象类的对象并不准确了,只是我们不能在语法上写出 new abstractClass() 而已,但在继承体系中,JVM其实会自动创建的. abstract class Father { public void print() { System.out.println("in father"); } } public class Test extends Father { public void print() { super.print(); } 这里的 super 就是对JVM 自动创建的抽象父类对象的引用,我觉得应该就是如此了. 大家怎么认为呢 ?
两个el表达式在<c:if>的test里比较大小问题
<c:if test="${totalCoins lt goods.eb_count}"> <button name="exchange" disabled="disabled">兑换</button> </c:if> 这里逻辑判断错误,${totalCoins lt goods.eb_count}的结果为true但是totalCoins 是大于goods.eb_count的. 但是如果把totalCoins 或者 goods.eb_count任何一个修改成数字则可以判断成功.另外 判断是写在<c:forEach>中,totalCoins在<c:forEach>外. <div id="totalCoins">${totalCoins}</div> <c:forEach items="${exchangeGoodsList}" var="goods"> <c:if test="${totalCoins lt goods.eb_count}"> <button name="exchange" disabled="disabled">兑换</button> <span>totalCoins:${totalCoins}</span><br> <span>eb_count:${goods.eb_count }</span> </c:if> <c:if test="${totalCoins ge goods.eb_count}"> <button name="exchange">兑换</button> </c:if> </c:forEach>
写了ocx控件 在网页中调用显示 对象不支持此属性或方法
我用的是 vs2010 用模版自动生成的只加了一个方法,然后自己写了一个vbs脚本调用这个方法正常,用的是控件名创建的对象。在网页中控件也创建成功的用的是classid方式创建的,但是调用这个方法就是提示对象不支持此属性或方法。我用activex control test 工具测试一切正常,也能看到这个方法,但是一到网页中就提示对象不支持此属性或方法 麻烦大家帮忙分析分析(我是初学者)
将tkinter放在类方法中后调用会弹出两个
test.py ``` from libs.tk_windows import tk_window window = tk_window("a") window.build_window() window.window_title("aaaaa") b = tk_window("b") b.build_window() b.window_title("bbbbbbb") b.mainloop_window() ``` tk_window.py ``` from tkinter import * class tk_window(): def __init__(self,window_name): self.window_name = window_name # 创建窗口 def build_window(self): self.window_name = Tk() # 窗口主循环 def mainloop_window(self): self.window_name.mainloop() # 窗口标题 def window_title(self,window_title): self.window_name.title(window_title) ``` 在test.py中实例化了a和b两个窗口,最后调用的只有b窗口,但是运行后会同时弹出ab两个窗口。这是为啥,该如何修改,谢谢各位大佬帮忙
Runnable实现类 创建对象时,不会调用默认的无参构造函数吗?
简单的例子: ``` class Test{ public Test() { System.out.println("create test .."); } public static void main(String[] args) { for (int i = 0; i < 5; i++) { new Test(); } } } ``` 输出显而易见: ![图片说明](https://img-ask.csdn.net/upload/201708/10/1502355901_710308.png) 而实现Runnable接口的实现类却出现让我纳闷的情况: ``` public class SimpleDaemons implements Runnable { public SimpleDaemons() { System.out.println("create thread .."); } public static void main(String[] args) { for (int i = 5; i < 5; i++) { new SimpleDaemons(); } } @Override public void run() { try { while (true) { TimeUnit.MILLISECONDS.sleep(100); System.out.println(Thread.currentThread() + " " + this); } } catch (InterruptedException e) { System.out.println("sleep() interrupted"); } } } ``` 不理解的输出,是没有在控制台上打印无参构造函数中的语句。 ![图片说明](https://img-ask.csdn.net/upload/201708/10/1502356182_460657.png) 疑问:Runnable实现类,创建对象时,不会调用默认的无参构造函数吗?
C++调用Python GridSearchCV和joblib报错
我现在使用QT C++调用python的xgboost算法,算法包含了网格搜索gridsearch和模型保存joblib,python算法在pycharm中运行没有错误,但是C++调用的时候会报错。 Python代码段 clf = GridSearchCV(estimator=XGBRegressor(seed=7), param_grid=parameters, cv=5, verbose=1, n_jobs=3) clf.fit(X_study, y_study) print("best param" + str(clf.best_params_)) print("best score" + str(clf.best_score_)) print("best estimator" + str(clf.best_estimator_)) # XGBRegModel = XGBRegressor(**clf.best_params_) # #这是测试集验证集返回验证效果 X_train, X_test, y_train, y_test = train_test_split(X_study, y_study, test_size=0.1) XGBRegModel.fit(X_train, y_train) joblib.dump(XGBRegModel, path) C++代码段中使用PyObjectCallFunction函数获取值,只要我python文件中包含了gridsearchCV或者joblib这两部分就会报错 Exception ignored in: <module 'threading' from 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64\\Lib\\threading.py'> Traceback (most recent call last): File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Lib\threading.py", line 1289, in _shutdown assert tlock.locked() SystemError: <built-in method locked of _thread.lock object at 0x000000000590BC88> returned a result with an error set 如果去掉单独运行xgboost算法不会报错,请问这是什么原因,我看其他帖子里面说的是线程的问题,但是xgboost算法本身也是多线程,就没有报错,所以我个人还是认为Gridsearch和joblib本身存在着什么特殊情况? 请各位大神指点!
C++子函数局部变量空间分配问题 还有 如何使用局部对象?
最近回头重学c++,感觉哪里都一头雾水,我实在太菜了,请求各位大神解答疑惑。 假设有一个void test()函数,里面创建了一个类对象,假设无其他操作。 1.函数体里面return之后,是否这个局部对象的空间被回收了? 2.在main函数里面test函数调用完后,之前产生的局部对象的值在内存中还存在吗?是否被擦除?还是说以后会随机地被其他的覆盖掉? 3.请问如果想要定义一个函数,这个函数创建一个对象,这个对象可以在main函数中使用,有效且效率高的办法是什么?函数体里创建一个对象并return它?还是其他方法? 求解疑,非常感谢。
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
有网友说:2020年还不懂Spring就放弃Java吧?
前言 Spring这个词对于开发者想必不会陌生,可能你每天都在使用Spring,享受着Spring生态提供的服务,理所当然的用着SpringIOC和SpringAOP去实现老板交给你的功能 ,唔 它就是这样使用的(类声明为Bean组件,然后注入),没错 能完成老板任务,没毛病。如果向你提问什么是Spring,Spring有什么核心功能呢,你会想:这太简单了,Spring就是框架嘛,Spring核...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
没用过这些 IDEA 插件?怪不得写代码头疼
使用插件,可以提高开发效率。对于开发人员很有帮助。这篇博客介绍了IDEA中最常用的一些插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
《java面试宝典》三 类初始化和类实例化顺序
前言: 社长,4年api搬运工程师,之前做的都是一些框架的搬运工作,做的时间越长,越发感觉自己技术越菜,有同感的社友,可以在下方留言。现侧重于java底层学习和算法结构学习,希望自己能改变这种现状。 为什么大厂面试,更侧重于java原理底层的提问,因为通过底层的提问,他能看出一个人的学习能力,看看这个人的可培养潜力。随着springboot的流行,大部分的开发,起步就是springboot。也...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
工作十年的数据分析师被炒,没有方向,你根本躲不过中年危机
2020年刚刚开始,就意味着离职潮高峰的到来,我身边就有不少人拿着年终奖离职了,而最让我感到意外的,是一位工作十年的数据分析师也离职了,不同于别人的主动辞职,他是被公司炒掉的。 很多人都说数据分析是个好饭碗,工作不累薪资高、入门简单又好学。然而今年34的他,却真正尝到了中年危机的滋味,平时也有不少人都会私信问我: 数据分析师也有中年危机吗?跟程序员一样是吃青春饭的吗?该怎么保证自己不被公司淘汰...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
张朝阳回应迟到 1 分钟罚 500:资本家就得剥削员工
loonggg读完需要2分钟速读仅需 1 分钟大家我,我是你们的校长。前几天,搜狐的董事局主席兼 CEO 张朝阳和搜狐都上热搜了。原因很简单,就是搜狐出了“考勤新规”。一封搜狐对员工发布...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
立即提问