webrtc 原生的js怎么调用AEC 消除回音模块

//获取音视频.
function getUserMedia() {
try {
navigator.getUserMedia({
'audio' : true,
'video' : pVideo
}, onUserMediaSuccess, onUserMediaError);
} catch (e) {
try {
navigator.getUserMedia("video,audio", onUserMediaSuccess, onUserMediaError);
} catch (e) {
alert(e.message);
console.log(e);
}
}
}

    //加载本地 视频
    function onUserMediaSuccess(stream) {
        console.log("User has granted access to local media.");
        var url = URL.createObjectURL(stream);
        localVideo.style.opacity = 1;
        localVideo.src = url;
        localStream = stream;
        if (initiator)
            maybeStart();
    }

    //创建 PeerConnection
    function createPeerConnection() {

        try {
            pc = new RTCPeerConnection(pc_config);
            pc.onicecandidate = onIceCandidate;
        } catch (e) {
            try {
                var stun_server = "";
                if (pc_config.iceServers.length !== 0) {
                    stun_server = pc_config.iceServers[0].url.replace('stun:', 'STUN ');
                }
                pc = new RTCPeerConnection(stun_server, onIceCandidate);
                isRTCPeerConnection = false;
                console.log("Created webkitPeerConnnection00 with config \"" + stun_server + "\".");
            } catch (e) {
                alert("Failed to create PeerConnection, exception: " + e.message);
                return;
            }
        }
        pc.onconnecting = onSessionConnecting;
        pc.onopen = onSessionOpened;
        pc.onaddstream = onRemoteStreamAdded;
        pc.onremovestream = onRemoteStreamRemoved;
    }

2个回答

在video标签里面加了个mute属性

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
基于chrome的webrtc在web端能不能实现分辨率动态调整,回音消除等等?

基于chrome的webrtc在web端能不能实现分辨率动态调整,回音消除等等? 1.还是必须要经过中转服务器对媒体流进行处理,能不能在web段进行处理呢? 2.如果有中转服务器,可以对媒体流进行二次处理吗?比如二次编码,自适应编码? 3.视频传输机制,chrome有没有做?还是传输方面,服务器端还要进行优化?谢谢各位大神!

webrtc原生API,如何使peerconnection以pcc拥塞控制运行

如题,请教一下各位大神,如何在peerconnection中配置拥塞控制算法为pcc,使其用pcc算法进行拥塞控制? 十分感谢!

Android视频通话消除回声

项目中有用到视频通话,采用了RTMP双向推流拉流实现,但是会出现较大回声和噪音,使用了WebRTC的 ACME模块不知道是没接好还是什么原因,没有效果,想问下有Jspeex或者Speex处理回声经验的大佬吗,求指导

Delphi 使用Dcef3开通Webrtc

请问Delphi 使用Dcef3的控件如何开通webrtc功能呢

webrtc音频采集传输问题

phonertc或者webrtc在安卓机顶盒上采集到的声音,传给对方,对方听不到或者声音断断续续

移动端WebRTC实时视频

最近在研究P2P实时视频,信令服务器与stun服务器都是部署在公网上(阿里云),最终测出来的结果为同一个局域网的两台移动设备可以链接进行通信;移动4G与WiFi,移动4G与联通4G,移动4G与电信4G,联通4G与电信4G都是可以通的; 后又经测试发现,联通4G与WiFi,电信4G与WiFi,WiFi与WiFi偶尔可以通信,但是大多数是不通的,测试中NAT给电信4G或者联通4G分配的内网外网IP映射是一只变化的,经查电信4G与联通4G分配是多IP,而移动的4G给分配的公网IP一直是一个(在p2p连接使用中),而电信,联通4G给分配的公网IP一直是变化的,请教各位大神,本人小白,能否给指点下电信和联通的分配的公网IP怎么一直是变化的能否更改stun配置来给固定分配一个可直接两客户端直接建立连接的公网IP,或者只考虑锥型路由器用stun穿透,不考虑turn,各位大神给指点下

webrtc并发测试有哪些好用的工具

我们自己做了一个webrtcServer,目前是200路视频流能够正常,但是超过200路,目前无法测试,因为每个PC机上面启动的Chrome浏览器且编解码根据不通PC机的性能是有区别的,目前我能够找到的PC机是有限的,那么问题就来了: 我如何能够用有限的PC机模拟出多个浏览器,来并发压我的webrtcServer

Webrtc如何添加进去x265编码器。编译上面如何编译

Webrtc如何添加进去x265编码器。编译上面如何编译,webrtc源码支持的是ffmpeg的h265解码,但是编码的话,总感觉自己用ninja编译不进去

WebRTC库在Android端声音问题

我使用webRTC库开发音视频聊天app,运行成功后图像能够联通,但是没有声音或者声音小 AudioSource audioSource = factory.createAudioSource(new MediaConstraints()); localMS.addTrack(factory.createAudioTrack("ARDAMSa0", audioSource));

webrtc理论上是看了个大概可是不知怎么着手?

我已经大概在webrtc中文网看了一下内容: 在webrtc中SDP是用于交互多媒体流信息的最小不接去除单位 _____________________________________________________________________________ webrtc是先定位两个人的位置,然后两个人都跳到同一个链接里面进行数据互通。信令结束以后,就不需要web服务器在中间传递数据。 编解编码器的功能是压缩和解压音频和视频数据。 还有实现设备间的信息互通,可能需要中继TURN服务器,因为可能因为对方的防火墙和NAT和限制了(隐藏了IP地址或者)用于通信的洞,所以只好在通话的时候进行ICE协商。就是发起者这边发了一个offer,有关怎么找到要准备进行通话的小伙伴的方法。然后,将这个数据给到服务器,然后服务器再给到那个小伙伴,然后那个小伙伴就可以通过设备找到发起人,然后就可以开始设备之间的互通,而不需要服务器在中间传递数据。 webrtc 三大API getUserMedia PeerConnection Data Channel getUserMedia 应用: #为用户文件档案拍照 #录制语音数据,并将数据发送到语音转文字引擎 #为用户录制语音或者视频,而且在掉包的情况下能保证语音及视频的质量不下滑 webrtc实例 https://www.jianshu.com/p/57fd3b5d2f80 Peer Connection #生成并传递SDP (不是通过网络本身传递,而是生成他们并处理输入的消息) #对音视频进行压缩和解压 #通过回声消除算法处理语音 #丢包隐藏,数据重传,抖动缓存区,估计宽带等功能 Data Channel #信息传输的通道,设置通道是否可靠,设置可靠则可以自动重传。 #通道设计类似于websocketAPI界别的通道,所以可以用websocket的想法去看待它。 #通道设计类似于在websocketAPI级别上工作,所以可以用websocket的思考法式对待它。 想要一个webrtc的应用的实现方法,有以下几点: 1.客户端 2.信道 3.NAT 4.媒体 1.客户端 浏览器端使用javasrcipt进行开发,或者用框架,或者很多人都是直接从github上开始的。 如果是软件的话,应该挑选合适的sdk。 如果是pc,则使用psdn或者嵌入式的方法进行开发。 如果是pc的话,则可以用Electron进行完成,说着用嵌入式的方式完成。 2.信道 你需要一个新到服务器,当然也可以不要。在用之前,你必须检查你的服务器是否有信道机制用于 非webrtc上。如果有,你可以在这些机制上搭载sdp消息和其他webrtc信令。 3.NAT 一下是你不应该做的: #不用trun服务器 #不用公共服务器 #不用stun公共服务器 #所有服务都在同一个服务器上实现 #不要一上来就想布置世界级的全球服务网络。 以下是你应该做的: #部署stun和turn在同一进程 #stun和turn应该在同一个服务器上部署,而且要部署到同一进程中。 #用coturn,几乎所有人都在使用。 #你也可以从其他公司获取NAT服务,例如XirSys和T willio也是不错的选择。 4.媒体 如果你使用pstn或者视频会议,音频或者更高级的功能,建议使用一个媒体服务器。 现在市面和商业服务器有很多,他们在很很多方面是有区别的。 现在开源和商业的服务器有很多,他们在很多方面都是有区别的。 webrtc使用领域前瞻 1.机器学习和人工智能 2.在线学习 3.在线医疗 4.社交媒体 webrtc打洞就是将交换数据双方ip,port和nat信息通过信令服务器进行交互,然后双方各自获得对方的信息后就进行穿透,stun对p2p依然后有问题,所以还需要用到ICE。然后libjingle就是ICE思想的具体实现。 _____________________________________________________________________________ 但是我不知道怎么着手去弄,信令服务器我查了,没有说买信令服务器的,都是说配置的。所以我不知怎么做了?希望有哪位老师指点一下。感激不尽!

关于icecandidate和webrtc的sdp的一些问题

<div class="post-text" itemprop="text"> <p>Suppose there has 3 users A , B , C . And i am use Ajax rather than websockets to send and get messages.</p> <p>Question blow:</p> <p>1, In this case I just need that (B and C) can see A ,and don't need that A can see (B and C). I have added A's sdp(offer) to B . So is it necessary for A to add B's sdp(answer)? </p> <p>2, I have found there has so many(about 17) icecandidate generated when A createOffer(). and I don't know how to handle these icecandidate . should B (and C) add these all icecandidate one by one for 17 times ? </p> <p>3, As I said 3 users. This is a one-to-many application. How to implement it? my main question is how to deal the sdp and icecandidate of each one.Does A need to add others' sdp and icecandidate .</p> <p>here is the icecandidates blow:</p> <pre class="lang-js prettyprint-override"><code>{"candidate":"candidate:1754064501 1 udp 2122255103 2001::5ef5:79fd:8c8:c74e:f166:22f 52522 typ host generation 0","sdpMid":"audio","sdpMLineIndex":0} {"candidate":"candidate:1026183099 1 udp 2122194687 192.168.2.100 52523 typ host generation 0","sdpMid":"audio","sdpMLineIndex":0} {"candidate":"candidate:1754064501 2 udp 2122255102 2001::5ef5:79fd:8c8:c74e:f166:22f 52524 typ host generation 0","sdpMid":"audio","sdpMLineIndex":0} {"candidate":"candidate:1026183099 2 udp 2122194686 192.168.2.100 52525 typ host generation 0","sdpMid":"audio","sdpMLineIndex":0} {"candidate":"candidate:1754064501 1 udp 2122255103 2001::5ef5:79fd:8c8:c74e:f166:22f 52526 typ host generation 0","sdpMid":"video","sdpMLineIndex":1} {"candidate":"candidate:1026183099 1 udp 2122194687 192.168.2.100 52527 typ host generation 0","sdpMid":"video","sdpMLineIndex":1} {"candidate":"candidate:1754064501 2 udp 2122255102 2001::5ef5:79fd:8c8:c74e:f166:22f 52528 typ host generation 0","sdpMid":"video","sdpMLineIndex":1} {"candidate":"candidate:1026183099 2 udp 2122194686 192.168.2.100 52529 typ host generation 0","sdpMid":"video","sdpMLineIndex":1} {"candidate":"candidate:638524037 1 tcp 1518275327 2001::5ef5:79fd:8c8:c74e:f166:22f 0 typ host tcptype active generation 0","sdpMid":"audio","sdpMLineIndex":0} {"candidate":"candidate:1940501323 1 tcp 1518214911 192.168.2.100 0 typ host tcptype active generation 0","sdpMid":"audio","sdpMLineIndex":0} {"candidate":"candidate:638524037 2 tcp 1518275326 2001::5ef5:79fd:8c8:c74e:f166:22f 0 typ host tcptype active generation 0","sdpMid":"audio","sdpMLineIndex":0} {"candidate":"candidate:1940501323 2 tcp 1518214910 192.168.2.100 0 typ host tcptype active generation 0","sdpMid":"audio","sdpMLineIndex":0} {"candidate":"candidate:638524037 1 tcp 1518275327 2001::5ef5:79fd:8c8:c74e:f166:22f 0 typ host tcptype active generation 0","sdpMid":"video","sdpMLineIndex":1} {"candidate":"candidate:1940501323 1 tcp 1518214911 192.168.2.100 0 typ host tcptype active generation 0","sdpMid":"video","sdpMLineIndex":1} {"candidate":"candidate:638524037 2 tcp 1518275326 2001::5ef5:79fd:8c8:c74e:f166:22f 0 typ host tcptype active generation 0","sdpMid":"video","sdpMLineIndex":1} {"candidate":"candidate:1940501323 2 tcp 1518214910 192.168.2.100 0 typ host tcptype active generation 0","sdpMid":"video","sdpMLineIndex":1} null </code></pre> <p>and here is my application's code: you will find that i use a temp button which call "Get Answer" to let A to get sdp and icecandidate (has Commented out) of B or C </p> <pre class="lang-js prettyprint-override"><code>var getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia); //use Google's stun server var iceServer = { "iceServers": [{ "url": "stun:stun.l.google.com:19302" }] }; var PeerConnection = (window.PeerConnection || window.webkitPeerConnection00 || window.webkitRTCPeerConnection || window.mozRTCPeerConnection); var pc = new PeerConnection(iceServer); var iceTimes = 1; function getAnswer(cid) { teacherLoop(cid); /*for(i=1;i&lt;4;i++) { $.ajax({ url:'/get_webrtc_info.php', type:'POST', async:false, data:{role:'get_answer_ice',times:i,"cid": cid}, success:function(msg) { var msg = JSON.parse(msg); pc.addIceCandidate(new RTCIceCandidate(msg)); } }); }*/ } //start live function startLive(cid) { pc.onicecandidate = function(event){ $.ajax({ url:"/webrtc.php", type:'POST', async:false, data:{ "event": "__ice_candidate", "times": iceTimes, "cid": cid, "data": { "candidate": JSON.stringify(event.candidate) } }, }); iceTimes++; }; $(".course-item-play-block").slideDown(); getUserMedia.call(navigator, { "audio": true, "video": true }, function(stream){ var myselfVideoElement = document.getElementById('video'); myselfVideoElement.src = URL.createObjectURL(stream); pc.addStream(stream); pc.createOffer(function(desc){ pc.setLocalDescription(desc); $.ajax({ url:'/webrtc.php', type:'POST', async:false, data:{ "event": "__offer", "cid": cid, "data": { "sdp": JSON.stringify(desc) } }, success:function() { //var timer = setInterval(teacherLoop,4000); } }); }); }, function(error){ // }); } function joinLive(cid) { $(".course-item-play-block").slideDown(); pc.onaddstream = function(event) { var remote_video = document.getElementById('video'); remote_video.src = URL.createObjectURL(event.stream); } pc.onicecandidate = function(event){ $.ajax({ url:"/webrtc.php", type:'POST', async:false, data:{ "event": "__ice_candidate_answer", "times": answerIceTimes, "cid": cid, "data": { "candidate": JSON.stringify(event.candidate) } }, }); answerIceTimes++; }; studentLoop(cid) getIce(cid) } function getIce(cid) { for(i=1;i&lt;17;i++) { $.ajax({ url:'/get_webrtc_info.php', type:'POST', async:false, data:{role:'get_ice',times:i,"cid": cid}, success:function(msg) { var msg = JSON.parse(msg); pc.addIceCandidate(new RTCIceCandidate(msg)); } }); } } function teacherLoop(cid) { $.ajax({ url:'/get_webrtc_info.php', type:'POST', data:{role:'teacher',"cid": cid}, success:function(msg) { var msg = JSON.parse(msg); pc.setRemoteDescription(new RTCSessionDescription(msg)); } }); } function studentLoop(cid) { $.ajax({ url:'/get_webrtc_info.php', type:'POST', async:false, data:{role:'student',"cid": cid}, success:function(msg) { var msg = JSON.parse(msg); pc.setRemoteDescription(new RTCSessionDescription(msg)); pc.createAnswer(function(answer) { pc.setLocalDescription(new RTCSessionDescription(answer), function() { $.ajax({ url:'/webrtc.php', type:'POST', async:false, data:{ "event": "__answer", "cid": cid, "data": { "sdp": JSON.stringify(answer) } }, success:function() { //var timer = setInterval(student,4000); //studentLoop() } }); }); }); }); } </code></pre> <pre class="lang-html prettyprint-override"><code>&lt;div class="block course-item-play-block"&gt; &lt;h3&gt;Living:&lt;/h3&gt; &lt;video id="video" autoplay&gt;&lt;/video&gt; &lt;/div&gt; &lt;?php if ($isTeacher) {?&gt; &lt;div class="btn edit-course-btn common-btn common-btn-6x18 common-btn-blue" onclick="startLive(&lt;?=$Data['cid']?&gt;)"&gt;Start Live&lt;/div&gt; &lt;div class="btn edit-course-btn common-btn common-btn-6x18 common-btn-blue" onclick="getAnswer(&lt;?=$Data['cid']?&gt;)"&gt;Get Answer&lt;/div&gt; &lt;?php }else{?&gt; &lt;div class="btn edit-course-btn common-btn common-btn-6x18 common-btn-blue" onclick="joinLive(&lt;?=$Data['cid']?&gt;)"&gt;Join Live&lt;/div&gt; &lt;?php }?&gt; </code></pre> </div>

webrtc做一个简单的视屏通话Demo用tomcat服务器

现在webrtc开发用什么工具,环境部署怎样的,用什么语言nodejs? 可以推荐学习webrtc好的网站 有源码demo的

WebRTC怎么断线重连?

用户加入房间后因为意外断网,导致该用户的信息并不能删除!再次进入会提示用户已经存在!敢问类似的聊天室是如何处理断网的?必须发送保活连接的心跳包吗?

请教一下webrtc相关的问题

具体情况是这样的,我们公司主要是做音视频这方面的,cs架构,有自己的设备,一般就是把设备卖出去,然后pc客户端这边能看见设备拍摄的一些画面之类的,然后公司领导看见别的公司也做音视频,bs架构的,用的是webrtc的技术,视频传回来的流没什么延迟,比我们的效果要好,还有就是客户那边也要求说想要bs这种架构的,不用安装下载,方便一些,我们公司领导就心动了,然后让我了解,我纯小白,代码也不会写= = 刚入职,以前也没做过音视频这方面,真是一点点都不懂。 都有什么公司用这个webrtc技术啊,市场占比高嘛?开发成本、优缺点什么的都是什么啊,自己也查过一些资料,要不就是看不懂,要不就是复制粘贴,有没有哪个大神可以指教一下。

关于如何在java客户端通过webrtc实现音频通话

求大神指教! 现在服务是好的,PC客户端需要通过webrtc与服务通讯,实现音频通话,求支撑库和DEMO。 网上都是需要自己下载编译,有没有拿来主义。 不要浏览器的。 当然,如果你能让它在java客户端运行也可以。

webRTC在本机部署后,无法看到本地画面

在本机部署了webRTC,刚开始在本地浏览器看到的是本地的画面,当另外一台电脑打开我发送的链接后,我们相互能看到对方的画面,但是看不到本地的,请教大神是为什么,该怎么解决??

webrtc音视频通话,除了在华为手机上正常,其他手机均是远程视频黑屏情况

情况和问题描述: 最近在开发webrtc的音视频通话功能,本使用org.webrtc:google-webrtc:1.0.28513/这个版本开发,但是却发现远程视频显示不出来,过程没有任何报错,信令交互一切正常,我很疑惑,就将版本调整至org.webrtc:google-webrtc:1.0.24465@aar;让我惊喜的是在华为手机上正常了,远程和本地视频一切正常;但在1+、小米和红米等手机上无法正常显示出远程视频;本以为是没有video的candidate造成,但是经过华为手机反复测试和看log后发现,即使没有video的candidate都能正常显示出远程视频,所以我将这点给排除了;然后经过反反复复的测试和调整,华为手机只要不要用太新的webrtc版本就能正常,但其他手机均不正常;我在这个问题上已经纠结了两个星期,希望有大能能够帮助我。 这个问题实在很奇怪,没有报错,信令正常,交互正常,最终流能通,但就是无法显示远程视频;是解析的问题呢,还是渲染的问题,还是其他问题。很疑惑了,希望业界大佬指教!!! 正常截图: ![图片说明](https://img-ask.csdn.net/upload/201909/17/1568702658_848334.jpg) 异常截图: ![图片说明](https://img-ask.csdn.net/upload/201909/17/1568702684_763667.jpg) 然后经过log的反复查看,发现了以下的一个log,怀疑也可能有关系,本人webrtc小白,贴出讨论,虚心请教 ![图片说明](https://img-ask.csdn.net/upload/201909/17/1568702792_787513.png)

webrtc建立连接,对端无法接收视频流

通过webkitRTCPeerConnection创建实例调用addStream对端无法接收到,回调函数onaddStream没有调用,怎么解决?其他信令交换都正常

iOS WebRTC视频语音不同网段下点对点连接

我需要做WebRTC,在网上找了DEMO,测试了一下。在同一网段下能视频聊天,但是我将一个手机使用4G是就无法连接。问是STUN穿墙的原因吗?

学Python后到底能干什么?网友:我太难了

感觉全世界营销文都在推Python,但是找不到工作的话,又有哪个机构会站出来给我推荐工作? 笔者冷静分析多方数据,想跟大家说:关于超越老牌霸主Java,过去几年间Python一直都被寄予厚望。但是事实是虽然上升趋势,但是国内环境下,一时间是无法马上就超越Java的,也可以换句话说:超越Java只是时间问题罢。 太嚣张了会Python的人!找工作拿高薪这么简单? https://edu....

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

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

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

为什么程序猿都不愿意去外包?

分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助

Java校招入职华为,半年后我跑路了

何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

@程序员:GitHub这个项目快薅羊毛

今天下午在朋友圈看到很多人都在发github的羊毛,一时没明白是怎么回事。 后来上百度搜索了一下,原来真有这回事,毕竟资源主义的羊毛不少啊,1000刀刷爆了朋友圈!不知道你们的朋友圈有没有看到类似的消息。 这到底是啥情况? 微软开发者平台GitHub 的一个区块链项目 Handshake ,搞了一个招募新会员的活动,面向GitHub 上前 25万名开发者派送 4,246.99 HNS币,大约价...

用python打开电脑摄像头,并把图像传回qq邮箱【Pyinstaller打包】

前言: 如何悄悄的打开朋友的摄像头,看看她最近过的怎么样,嘿嘿!这次让我带你们来实现这个功能。 注: 这个程序仅限在朋友之间开玩笑,别去搞什么违法的事情哦。 代码 发送邮件 使用python内置的email模块即可完成。导入相应的代码封装为一个send函数,顺便导入需要导入的包 注: 下面的代码有三处要修改的地方,两处写的qq邮箱地址,还有一处写的qq邮箱授权码,不知道qq邮箱授权码的可以去百度一...

C++(继承):19---虚基类与虚继承(virtual)

一、菱形继承 在介绍虚继承之前介绍一下菱形继承 概念:A作为基类,B和C都继承与A。最后一个类D又继承于B和C,这样形式的继承称为菱形继承 菱形继承的缺点: 数据冗余:在D中会保存两份A的内容 访问不明确(二义性):因为D不知道是以B为中介去访问A还是以C为中介去访问A,因此在访问某些成员的时候会发生二义性 缺点的解决: 数据冗余:通过下面“虚继承”技术来解决(见下) 访问...

计算机网络——浅析网络层

一、前言 注意,关于ipv4和ipv6,ipv4是ip协议第4版本,也表示这个版本的ip一共4个字节,同样地,ipv6是ip协议第6版本,也表示这个版本的ip一共6个字节。 关于网络层使用路由器实现互联:在计算机网络的分层结构中,不同层有不同的中继设备: 计算机网络层 中继设备/中继系统 物理层 中继器、集线器Hub 数据链路层 网桥或交换机(交换机是多端口网桥,两者本质上是一个东西) 网络层 路...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

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

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

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

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

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

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

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

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

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

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

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

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

女朋友过生日,我花了20分钟给她写了一个代理服务器

女朋友说:“看你最近挺辛苦的,我送你一个礼物吧。你看看想要什么,我来准备。” 我想了半天,从书到鞋子到电子产品最后到生活用品,感觉自己什么都不缺,然后和她说:“你省省钱吧,我什么都不需要。” 她坚持要送:“不行,你一定要说一个礼物,我想送你东西了。” 于是,我认真了起来,拿起手机,上淘宝逛了几分钟,但还是没能想出来缺点什么,最后实在没办法了:“这样吧,如果你实在想送东西,那你就写一个代理服务器吧”...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

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

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

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

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

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

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

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

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

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

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

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

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中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多个条件是什么逻辑关系?条件判断在什么时候执...

立即提问
相关内容推荐