基于Jitsi的网页视频通话项目

Jitsi-meet.js如下:

(function e(t, n, r) {
    function s(o, u) {
        if (!n[o]) {
            if (!t[o]) {
                var a = typeof require == "function" && require;
                if (!u && a)
                    return a(o, !0);
                if (i)
                    return i(o, !0);
                var f = new Error("Cannot find module '" + o + "'");
                throw f.code = "MODULE_NOT_FOUND", f
            }
            var l = n[o] = {
                exports : {}
            };
            t[o][0].call(l.exports, function(e) {
                var n = t[o][1][e];
                return s(n ? n : e)
            }, l, l.exports, e, t, n, r)
        }
        return n[o].exports
    }
    var i = typeof require == "function" && require;
    for (var o = 0; o < r.length; o++)
        s(r[o]);
    return s
})
        (
                {
                    1 : [
                            function(require, module, exports) {
                                'use strict';
                                var _createClass = function() {
                                    function defineProperties(target, props) {
                                        for (var i = 0; i < props.length; i++) {
                                            var descriptor = props[i];
                                            descriptor.enumerable = descriptor.enumerable || false;
                                            descriptor.configurable = true;
                                            if ("value" in descriptor)
                                                descriptor.writable = true;
                                            Object.defineProperty(target,descriptor.key, descriptor);
                                        }
                                    }
                                    return function(Constructor, protoProps,staticProps) {
                                        if (protoProps)
                                            defineProperties(Constructor.prototype,protoProps);
                                        if (staticProps)
                                            defineProperties(Constructor,staticProps);
                                        return Constructor;
                                    };
                                }();

                                function _classCallCheck(instance, Constructor) {
                                    if (!(instance instanceof Constructor)) {
                                        throw new TypeError("Cannot call a class as a function");
                                    }
                                }

                                function _possibleConstructorReturn(self, call) {
                                if (!self) {
                                    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                                    }
                                    return call&& (typeof call === "object" || typeof call === "function")?call:self;
                                }

                                function _inherits(subClass, superClass) {
                                    if (typeof superClass !== "function"&& superClass !== null) {
                                        throw new TypeError(
                        "Super expression must either be null or a function, not "+typeof superClass);
                                    }
                                    subClass.prototype = Object.create(
                                            superClass && superClass.prototype,
                                            {
                                                constructor : {
                                                    value : subClass,
                                                    enumerable : false,
                                                    writable : true,
                                                    configurable : true
                                                }
                                            });
                        if (superClass)
                         Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;
                                }

                                var EventEmitter = require('events').EventEmitter;
                                var loadScript = require('load-script2');

                                var JitsiMeet = function(_EventEmitter) {
                                    _inherits(JitsiMeet, _EventEmitter);

                                    function JitsiMeet(baseUrl) {
                                        _classCallCheck(this, JitsiMeet);

                                        var _this = _possibleConstructorReturn(
                                        this,(JitsiMeet.__proto__ || Object.getPrototypeOf(JitsiMeet)).call(this));

                                        _this._baseUrl = new window.URL(baseUrl);
                                        _this._ready = false;

                                        setTimeout(function() {
                                            return _this._loadApi();
                                        });
                                        return _this;
                                    }

                                    _createClass(
                                            JitsiMeet,
                                            [
                                                {
                                                  key : '_loadApi',
                                                    value : function _loadApi() {
                                                    var _this2 = this;
                                                    if (window.JitsiMeetExternalAPI) {
                                                                // Already
                                                                // loaded
                                                        this._ready = true;
                                                        this.emit('ready');
                                                        return;
                                                            }
                                            var apiUrl = this._baseUrl.href+ 'external_api.js';
                                                loadScript(
                                                    apiUrl,
                                                        function(err) {
                                                            if (err) {
                                             console.error('Error loading external API from '+ apiUrl);
                                                        _this2.emit('initError');}
                                                      else {
                                                            _this2._ready = true;
                                                          _this2.emit('ready');
                                                                        }
                                                                    });
                                                        }
                                                    },
                                                    {
                                                key : 'join',
                                                value : function join(room, selector,options) {
                                                    if (!this._ready) {
                                                        throw new Error('The library is not ready yet!');
                                                        }
                                            return new JitsiMeetConference(
                                                    this._baseUrl,'' + room,selector,options);
                                                        }
                                                    }, {
                                                        key : 'ready',
                                                        get : function get() {
                                                            return this._ready;
                                                        }
                                                    } ]);
                                    return JitsiMeet;
                                }(EventEmitter);

                                var JitsiMeetConference = function(_EventEmitter2) {
                                    _inherits(JitsiMeetConference,_EventEmitter2);
                                    function JitsiMeetConference(baseUrl, room,selector, options) {
                                        _classCallCheck(this,JitsiMeetConference);
                                        var _this3 = _possibleConstructorReturn(
                    this,(JitsiMeetConference.__proto__ || Object.getPrototypeOf(JitsiMeetConference)).call(this));
                                        _this3._roomUrl = '' + baseUrl.href+ room;
                    _this3._node = typeof selector === 'string' ? document.querySelector(selector): selector;
                                        // XXX Fixup config overrides
                                    var config = Object.assign({},options.config);
                                    config.startAudioMuted = 9999; // make sure we always start unmuted
                                    config.startVideoMuted = 9999; 
                                    config.enableRecording = false; // fix bug when customizing toolbars
                                    fixupConfigObject(config);
                                    var interfaceConfig = Object.assign({},options.interfaceConfig);
                                    fixupConfigObject(interfaceConfig);
                                        _this3._api = new window.JitsiMeetExternalAPI(
                                          baseUrl.host, // domain
                                          room, undefined, undefined, _this3._node, // HTML DOM element
                                                config, interfaceConfig,
                                                baseUrl.protocol !== 'https:' // No SSL?
                                        );
                                        // XXX workarounds
                                        //_this3._api.iframeHolder.style.height = '100%';
                                        //_this3._api.iframeHolder.style.width = '100%';
                                        //_this3._api.frame.style.border = 0;
                                        _this3._avatarUrl = '';
                                        _this3._displayName = '';
                                        _this3._email = '';
                                        _this3._audioMuted = false;
                                        _this3._videoMuted = false;
                                        _this3._shareScreen = false;
                                        // Setup event listeners
                                        _this3._api.addEventListeners({
                                            videoConferenceJoined : _this3._onVideoConferenceJoined.bind(_this3),
                                            videoConferenceLeft : _this3._onVideoConferenceLeft.bind(_this3),
                                            readyToClose : _this3._onReadyToClose.bind(_this3)
                                                });
                                        return _this3;
                                    }

                                    _createClass(
                                            JitsiMeetConference,
                                            [
                                                {
                                                  key : 'hangup',
                                                    value : function hangup() {
                                                        this._api.hangup();
                                                        }
                                                    },
                                                    {
                                                        key : 'dispose',
                                                        value : function dispose() {
                                                            if (this._api !== null) {
                                                                this._api.dispose();
                                                                this._api = null;
                                                            }
                                                        }
                                                    },
                                                    {
                                                        key : '_onVideoConferenceJoined',
                                                        value : function _onVideoConferenceJoined() {
                                                            this.emit('joined');
                                                        }
                                                    },
                                                    {
                                                        key : '_onVideoConferenceLeft',
                                                        value : function _onVideoConferenceLeft() {
                                                            this.emit('left');
                                                        }
                                                    },
                                                    {
                                                        key : '_onReadyToClose',
                                                        value : function _onReadyToClose() {
                                                            this.dispose();
                                                        }
                                                    },
                                                    {
                                                        key : 'avatarUrl',
                                                        get : function get() {
                                                            return this._avatarUrl;
                                                        },
                                                        set : function set(value) {
                                                            this._avatarUrl = value;
                                                            this._api.executeCommand('avatarUrl',value);
                                                        }
                                                    },
                                                    {
                                                        key : 'displayName',
                                                        get : function get() {
                                                            return this._displayName;
                                                        },
                                                    set : function set(value) {
                                                    this._displayName = value;
                                                    this._api.executeCommand('displayName',value);
                                                        }
                                                    },
                                                    {
                                                        key : 'email',
                                                        get : function get() {
                                                            return this._email;
                                                        },
                                                        set : function set(
                                                                value) {
                                                            this._email = value;
                                                            this._api.executeCommand('email',value);
                                                        }
                                                    },
                                                    {
                                                        key : 'roomUrl',
                                                        get : function get() {
                                                            return this._roomUrl;
                                                        }
                                                    },
                                                    {
                                                        key : 'audioMuted',
                                                        get : function get() {
                                                            return this._audioMuted;
                                                        },
                                                        set : function set(
                                                                muted) {
                                                            if (this._audioMuted === muted) {
                                                                return;
                                                            }

                                                            this._audioMuted = muted;
                                                            this._api.executeCommand('toggleAudio');
                                                        }
                                                    },
                                                    {
                                                        key : 'videoMuted',
                                                        get : function get() {
                                                            return this._videoMuted;
                                                        },
                                                        set : function set(
                                                                muted) {
                                                            if (this._videoMuted === muted) {
                                                                return;
                                                            }

                                                            this._videoMuted = muted;
                                                            this._api.executeCommand('toggleVideo');
                                                        }
                                                    },
                                                    {
                                                        key : 'shareScreen',
                                                        get : function get() {
                                                            return this._shareScreen;
                                                        },
                                                        set : function set(
                                                                share) {
                                                            if (this._shareScreen === share) {
                                                                return;
                                                            }
                                                            this._shareScreen = share;
                                                            this._api.executeCommand('toggleShareScreen');
                                                        }
                                                    } ]);
                                    return JitsiMeetConference;
                                }(EventEmitter);

                                function fixupConfigObject(config) {
                                    for ( var key in config) {
                                        if (typeof key !== 'string') {
                                            continue;
                                        }
                                        try {
                                            config[key] = encodeURIComponent(JSON
                                                    .stringify(config[key]));
                                        } catch (e) {
                                            console.warn('Error encoding '+ key + ': ' + e);
                                            delete config[key];
                                        }
                                    }
                                }
                                module.exports = JitsiMeet;

                                // Export also to the window object if running
                                // in a browser.
                                if (typeof window !== 'undefined') {
                                    window.JitsiMeet = JitsiMeet;
                                }
                            }, {
                                "events" : 2,
                                "load-script2" : 3
                            } ],2:[
                            function(require, module, exports) {
                                function EventEmitter() {
                                    this._events = this._events || {};
                                    this._maxListeners = this._maxListeners|| undefined;
                                }
                                module.exports = EventEmitter;
                                // Backwards-compat with node 0.10.x
                                EventEmitter.EventEmitter = EventEmitter;
                                EventEmitter.prototype._events = undefined;
                                EventEmitter.prototype._maxListeners = undefined;
                                // By default EventEmitters will print a warning
                                // if more than 10 listeners are
                                // added to it. This is a useful default which
                                // helps finding memory leaks.
                                EventEmitter.defaultMaxListeners = 10;
                                // Obviously not all Emitters should be limited
                                // to 10. This function allows
                                // that to be increased. Set to zero for
                                // unlimited.
                                EventEmitter.prototype.setMaxListeners = function(
                                        n) {
                                    if (!isNumber(n) || n < 0 || isNaN(n))
                                        throw TypeError('n must be a positive number');
                                    this._maxListeners = n;
                                    return this;
                                };
                                EventEmitter.prototype.emit = function(type) {
                                    var er, handler, len, args, i, listeners;
                                    if (!this._events)
                                        this._events = {};
                                    // If there is no 'error' event listener
                                    // then throw.
                                    if (type === 'error') {
                                        if (!this._events.error|| (isObject(this._events.error) && !this._events.error.length)) {
                                            er = arguments[1];
                                            if (er instanceof Error) {
                                                throw er; // Unhandled 'error'
                                                            // event
                                            } else {
                                                // At least give some kind of
                                                // context to the user
                                var err = new Error('Uncaught, unspecified "error" event. ('+ er + ')');
                                        err.context = er;
                                        throw err;
                                            }
                                        }
                                    }
                                    handler = this._events[type];
                                    if (isUndefined(handler))
                                        return false;
                                    if (isFunction(handler)) {
                                        switch (arguments.length) {
                                        // fast cases
                                        case 1:
                                            handler.call(this);
                                            break;
                                        case 2:
                                            handler.call(this, arguments[1]);
                                            break;
                                        case 3:
                                            handler.call(this, arguments[1],
                                                    arguments[2]);
                                            break;
                                        // slower
                                        default:
                                            args = Array.prototype.slice.call(arguments, 1);
                                            handler.apply(this, args);
                                        }
                                    } else if (isObject(handler)) {
                                        args = Array.prototype.slice.call(arguments, 1);
                                        listeners = handler.slice();
                                        len = listeners.length;
                                        for (i = 0; i < len; i++)
                                            listeners[i].apply(this, args);
                                    }
                                    return true;
                                };
                                EventEmitter.prototype.addListener = function(type, listener) {
                                    var m;
                                    if (!isFunction(listener))
                                        throw TypeError('listener must be a function');
                                    if (!this._events)
                                        this._events = {};
                                    // To avoid recursion in the case that type
                                    // === "newListener"! Before
                                    // adding it to the listeners, first emit
                                    // "newListener".
                                    if (this._events.newListener)
                                        this.emit('newListener',type,isFunction(listener.listener) ? listener.listener: listener);
                                    if (!this._events[type])
                                        // Optimize the case of one listener.
                                        // Don't need the extra array object.
                                        this._events[type] = listener;
                                    else if (isObject(this._events[type]))
                                        // If we've already got an array, just
                                        // append.
                                        this._events[type].push(listener);
                                    else
                                        // Adding the second element, need to
                                        // change to array.
                                    this._events[type] = [this._events[type], listener ];
                                    // Check for listener leak
                                    if (isObject(this._events[type])&& !this._events[type].warned) {
                                        if (!isUndefined(this._maxListeners)) {
                                            m = this._maxListeners;
                                        } else {
                                            m = EventEmitter.defaultMaxListeners;
                                        }
                                        if (m&& m > 0&& this._events[type].length > m) {
                                            this._events[type].warned = true;
                                            console.error(
  '(node) warning: possible EventEmitter memory '+ 'leak detected. %d listeners added. '+ 'Use emitter.setMaxListeners() to increase limit.',
                                            this._events[type].length);
                                            if (typeof console.trace === 'function') {
                                                // not supported in IE 10
                                                console.trace();
                                            }
                                        }
                                    }
                                    return this;
                                };
                                EventEmitter.prototype.on = EventEmitter.prototype.addListener;
                                EventEmitter.prototype.once = function(type,
                                        listener) {
                                    if (!isFunction(listener))
                                        throw TypeError('listener must be a function');
                                    var fired = false;
                                    function g() {
                                        this.removeListener(type, g);
                                        if (!fired) {
                                            fired = true;
                                            listener.apply(this, arguments);
                                        }
                                    }
                                    g.listener = listener;
                                    this.on(type, g);
                                    return this;
                                };
                                // emits a 'removeListener' event iff the listener was removed
                                EventEmitter.prototype.removeListener = function(type, listener) {
                                    var list, position, length, i;
                                    if (!isFunction(listener))
                                        throw TypeError('listener must be a function');
                                    if (!this._events || !this._events[type])
                                        return this;
                                    list = this._events[type];
                                    length = list.length;
                                    position = -1;
                                    if (list === listener
                                            || (isFunction(list.listener) && list.listener === listener)) {
                                        delete this._events[type];
                                        if (this._events.removeListener)
                                            this.emit('removeListener', type,listener);
                                    } else if (isObject(list)) {
                                        for (i = length; i-- > 0;) {
                                            if (list[i] === listener
                                                    || (list[i].listener && list[i].listener === listener)) {
                                                position = i;
                                                break;
                                            }
                                        }
                                        if (position < 0)
                                            return this;
                                        if (list.length === 1) {
                                            list.length = 0;
                                            delete this._events[type];
                                        } else {
                                            list.splice(position, 1);
                                        }
                                        if (this._events.removeListener)
                                            this.emit('removeListener', type,
                                                    listener);
                                    }
                                    return this;
                                };
                                EventEmitter.prototype.removeAllListeners = function(type) {
                                    var key, listeners;
                                    if (!this._events)
                                        return this;
                                    // not listening for removeListener, no need to emit
                                    if (!this._events.removeListener) {
                                        if (arguments.length === 0)
                                            this._events = {};
                                        else if (this._events[type])
                                            delete this._events[type];
                                        return this;
                                    }
                                    // emit removeListener for all listeners on all events
                                    if (arguments.length === 0) {
                                        for (key in this._events) {
                                            if (key === 'removeListener')
                                                continue;
                                            this.removeAllListeners(key);
                                        }
                                        this
                                                .removeAllListeners('removeListener');
                                        this._events = {};
                                        return this;
                                    }

                                    listeners = this._events[type];

                                    if (isFunction(listeners)) {
                                        this.removeListener(type, listeners);
                                    } else if (listeners) {
                                        // LIFO order
                                        while (listeners.length)
                                            this.removeListener(
                                            type,listeners[listeners.length - 1]);
                                    }
                                    delete this._events[type];
                                    return this;
                                };
                                EventEmitter.prototype.listeners = function(
                                        type) {
                                    var ret;
                                    if (!this._events || !this._events[type])
                                        ret = [];
                                    else if (isFunction(this._events[type]))
                                        ret = [ this._events[type] ];
                                    else
                                        ret = this._events[type].slice();
                                    return ret;
                                };
                                EventEmitter.prototype.listenerCount = function(
                                        type) {
                                    if (this._events) {
                                        var evlistener = this._events[type];

                                        if (isFunction(evlistener))
                                            return 1;
                                        else if (evlistener)
                                            return evlistener.length;
                                    }
                                    return 0;
                                };
                                EventEmitter.listenerCount = function(emitter,type) {
                                    return emitter.listenerCount(type);
                                };
                                function isFunction(arg) {
                                    return typeof arg === 'function';
                                }
                                function isNumber(arg) {
                                    return typeof arg === 'number';
                                }
                                function isObject(arg) {
                                    return typeof arg === 'object'
                                            && arg !== null;
                                }
                                function isUndefined(arg) {
                                    return arg === void 0;
                                }
                            }, {} ],3 : [
                            function(require, module, exports) {
                                module.exports = load
                                function load(src, cb) {
                                    var head = document.head || document.getElementsByTagName('head')[0]
                                    var script = document.createElement('script')
                                    script.type = 'text/javascript'
                                    script.async = true
                                    script.src = src
                                    if (cb) {
                                        script.onload = function() {
                                            script.onerror = script.onload = null
                                            cb(null, script)
                                        }
                                        script.onerror = function() {
                                            script.onerror = script.onload = null
                                            cb(new Error('Failed to load '+ src), script)
                                        }
                                    }
                                    head.appendChild(script)
                                }
                            }, {} ]
                }, {}, [ 1 ]);

Jitsi.html代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
          <style type="text/css">
            #meet {
                position: absolute;
                bottom: 0;
                right: 0;
                width: 100%;
                height: 100%;
                overflow: hidden;
            } 
        </style><!-- 此处配置视频在整个页面的大小 -->
    </head>
    <body>
        <div id="meet"></div><!-- css与js要对这个div进行操作时就能通过id来找到这个div -->
        <script src="script/jitsi-meet.js"></script>
        <script>
            var meet = new JitsiMeet('https://meet.jit.si');
            meet.on('ready', function() {
                var interfaceConfig = { 
                    //filmStripOnly: true,
                    DEFAULT_REMOTE_DISPLAY_NAME: 'John Doe',
                };
                var options = {};
                options.interfaceConfig = interfaceConfig;
                var conference = meet.join('Test1234', '#meet', options);
                conference.on('joined', function() {
                    console.log('We are in!');
                });
            });
        </script>
    </body>
</html>

上面的两个文件是整个项目的所有文件。在eclipse上编译运行,在浏览器上可以用localhost访问,但是输入本机ip地址无法获取音频和视频:
图片说明
我尝试过在tomcat服务器上运行其他的.html文件,用localhost和ip地址都可以访问,请各位大佬帮忙看看,帮助我理解一下上面的.js文件,解决这个问题。先谢谢大家了!

2个回答

谢谢大家哈,我找到原因了:浏览器不支持http协议的ip地址访问,把项目配置成hhtps访问就可以啦!

题主可以搜索下 navigator.getusermedia 获取摄像头 和话筒权限, 需要localhost 或者域名是https的

qq_39088036
eat_Cookie 感谢!
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
软件测试入门、SQL、性能测试、测试管理工具

软件测试2小时入门,让您快速了解软件测试基本知识,有系统的了解; SQL一小时,让您快速理解和掌握SQL基本语法 jmeter性能测试 ,让您快速了解主流来源性能测试工具jmeter 测试管理工具-禅道,让您快速学会禅道的使用,学会测试项目、用例、缺陷的管理、

LibJitsi如何通过java程序启动?

最近在研究一个基于sip协议的网络语音通话,服务端已经搭好,可以正常注册通话。还需要做一个java版的客户端,使用的开源项目jitsi。直接安装版的我试过,并且能够正常通话。 当我使用jitsi的核心包libjitsi打算进行二次开发,无法正常启动。 知道怎么解决的大牛们请留下宝贵意见~ 附上我的操作流程: 1.检出libjitsi: https://github.com/jitsi/libjitsi.git 2.执行官方提供的使用案例:AVReceive2、AVTransmit2 3.运行结果: Exception in thread "main" java.lang.NullPointerException at org.jitsi.impl.neomedia.MediaStreamImpl.addDynamicRTPPayloadType(MediaStreamImpl.java:467) at org.jitsi.examples.AVReceive2.initialize(AVReceive2.java:180) at org.jitsi.examples.AVReceive2.main(AVReceive2.java:349) ps: 我尝试着解决空指针异常,但是一些相关的参数无从下手,不知如何配置。

jitsi videobridges 集群当需要配置多个 jitsi-videobridges 时候 如何修改配置文件 Single Jitsi-Meet, multiple videobridges

jitsi videobridges 集群如何配置? 当需要配置多个 jitsi-videobridges 时候 如何修改配置文件 呢?官网有这样的配置说明,但是并不知道括号里的内容具体如何配置,哪位大神帮帮我!!! ``` jitsi-videobridge2 You will need to adapt the following files (see the files in example-config-files/scalable) Each videobridge will have to have it's own, unique nickname /etc/jitsi/videobridge/config (hostname, password) /etc/jitsi/jicofo/sip-communicator.properties (hostname of jitsi-meet, nickname of videobridge, vb_password) ```

jitsi meet源码中,在登录界面提交登录信息的代码处理

登录jitsimeet,在登录界面填写用户名和密码后,压下OK键,进入jitsimeet。 如下代码为压下OK按键的代码: <pre> _onLogin() { const { _conference: conference, dispatch } = this.props; const { password, username } = this.state; const jid = toJid(username, this.props._configHosts); let r; // If there's a conference it means that the connection has succeeded, // but authentication is required in order to join the room. if (conference) { r = dispatch(authenticateAndUpgradeRole(jid, password, conference)); } else { r = dispatch(connect(jid, password)); } return r; } </pre> <pre> export function authenticateAndUpgradeRole( id: string, password: string, conference: Object) { return (dispatch: Dispatch, getState: Function) => { const { password: roomPassword } = getState()['features/base/conference']; const process = conference.authenticateAndUpgradeRole({ id, password, roomPassword, onLoginSuccessful() { // When the login succeeds, the process has completed half // of its job (i.e. 0.5). return dispatch(_upgradeRoleFinished(process, 0.5)); } }); dispatch(_upgradeRoleStarted(process)); process.then( /* onFulfilled */ () => dispatch(_upgradeRoleFinished(process, 1)), /* onRejected */ error => { // The lack of an error signals a cancellation. if (error.authenticationError || error.connectionError) { logger.error('authenticateAndUpgradeRole failed', error); } dispatch(_upgradeRoleFinished(process, error)); }); return process; }; } </pre> 在authenticateAndUpgradeRole函数中,如下代码段 <pre> const process = conference.authenticateAndUpgradeRole({ id, password, roomPassword, onLoginSuccessful() { // When the login succeeds, the process has completed half // of its job (i.e. 0.5). return dispatch(_upgradeRoleFinished(process, 0.5)); } }); </pre> 其中的conference.authenticateAndUpgradeRole应该实现的是用户名和密码的验证功能,但是我在源码工程中没有找到该接口的定义,请大神指教上述代码段的功能,以及如何能够找到提交登录信息后,是如何验证用户名和密码的?

帮我看下这个网页中的三个图片div的大小和位置怎么更改设置

我想更换几张大图,但是无论放多大的图片都会局限在这个边框里,怎么样才能更改所放图片的大小和位置呢? ![图片说明](https://img-ask.csdn.net/upload/201912/25/1577260837_900227.png) 下边的图其实我放了一张很大的图,但是都会按比例缩放到这个位置,怎么才能更改默认图片的长宽?和位置? ![图片说明](https://img-ask.csdn.net/upload/201912/25/1577260847_818926.png) ``` <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CSS3鼠标悬停图片遮罩层动画特效</title> <!--bootstrap布局框架--> <link rel="stylesheet" type="text/css" href="css/bootstrap-grid.min.css" /> <!--字体图标样式--> <link rel="stylesheet" type="text/css" href="https://cdn.bootcss.com/font-awesome/4.6.0/css/font-awesome.min.css"> <style> body{background-color: #353535} .box { font-family: 'Ubuntu', sans-serif; overflow: hidden; position: relative; transition: all 0.3s; } .box:hover { box-shadow: 0 0 15px -5px #000; } .box:before { content: ''; background-color: transparent; background-image: radial-gradient(circle at 20% 80%, transparent 29%, rgba(255,255,255,0.4) 30%, rgba(255,255,255,0.4) 33%, transparent 34%), radial-gradient(circle at 80% 20%, transparent 29%, rgba(255,255,255,0.4) 30%, rgba(255,255,255,0.4) 33%, transparent 34%); background-size: 30px 30px; height: 100%; width: 100%; opacity: 0; position: absolute; left: 0; top: 0; z-index: 1; transition: all 0.3s ease 0.2s; } .box:hover:before { opacity: 1; } .box img { width: 100%; height: auto; transition: all 0.3s ease 0s; } .box:hover img { filter: blur(2px); } .box .box-content { color: #fff; background-color: rgba(0,0,0,0.6); text-align: center; width: 100%; height: 59%; padding: 18% 0 0 0; position: absolute; left: 0; top: -100%; z-index: 2; transition: all 0.3s ease 0s; } .box:hover .box-content { top: 0; } .box .title { color: #fff; font-size: 23px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; margin: 0; } .box .post { color: #32c287; font-size: 14px; font-style: italic; text-transform: capitalize; letter-spacing: 2px; } .box .icon { background: rgba(50,194,135,0.6); text-align: center; height: 39%; width: 100%; padding: 15px 0 0; margin: 0; list-style: none; transform: translateX(50%); position: absolute; right: 50%; bottom: -100%; z-index: 1; transition: all 0.3s; } .box:hover .icon { bottom: 0; } .box .icon li { display: inline-block; margin: 0 3px; } .box .icon li a { color: #32c287; background-color: #fff; font-size: 18px; line-height: 40px; height: 40px; width: 40px; border-radius: 40%; display: block; transition: all 0.3s; } .box .icon li a:hover { color: #fff; background-color: #04a562; box-shadow: 0 0 0 3px rgba(255,255,255,0.5), 0 0 5px rgba(0,0,0,0.5) inset; } @media only screen and (max-width:990px) { .box { margin-bottom: 30px; } } @media only screen and (max-width:479px) { .box .title { font-size: 20px; } } </style> </head> <body> <h4 style="text-align: center; color: aliceblue;line-height: 50px">CSS3图片鼠标悬停动画特效 <span>Hover Effect Style</span></h4> <div class="demo"> <div class="container"> <div class="row"> <div class="col-md-4 col-sm-6"> <div class="box"> <img src="images/img-1.jpg" alt=""> <div class="box-content"> <h3 class="title">餐饮软件</h3> <span class="post">web developer</span> </div> <ul class="icon"> <li><a href="#"><i class="fa fa-search"></i></a></li> <li><a href="#"><i class="fa fa-link"></i></a></li> </ul> </div> </div> <div class="col-md-4 col-sm-6"> <div class="box"> <img src="images/img-2.jpg" alt=""> <div class="box-content"> <h3 class="title">零售软件</h3> <span class="post">web designer</span> </div> <ul class="icon"> <li><a href="#"><i class="fa fa-search"></i></a></li> <li><a href="#"><i class="fa fa-link"></i></a></li> </ul> </div> </div> <div class="col-md-4 col-sm-6"> <div class="box"> <img src="images/img-3.jpg" alt=""> <div class="box-content"> <h3 class="title">会员系统</h3> <span class="post">web developer</span> </div> <ul class="icon"> <li><a href="#"><i class="fa fa-search"></i></a></li> <li><a href="#"><i class="fa fa-link"></i></a></li> </ul> </div> </div> </div> </div> </div> <div style="text-align:center;margin:50px 0; font:normal 14px/24px 'MicroSoft YaHei';color:#ffffff"> <p>适用浏览器:360、FireFox、Chrome、Opera、傲游、搜狗、世界之窗. 不支持Safari、IE8及以下浏览器。</p> <p>来源:<a href="https://www.lanrenzhijia.com/" target="_blank">懒人</a></p> </div> </body> </html> ```

知道网址和登录该网址的用户名密码,怎么实现直接登录?

知道网站网址(jitsi meet),登录该网站的用户名和密码,怎么使用java语言实现点击某app(spark)的按钮,使用本机默认浏览器打开登陆过的网站页面? 目前使用HttpURLConnection的GET方法发送了用户名和密码,然后再打开该网址,显示的还是未登录的网站页面。

Could not find or load main class

我在bash上运行《java编程思想》(中文第四版)p154 Music3.java源代码 CLASSPATH:.:/home/wsf/java/jdk1.8.0_20/lib:/home/wsf/java/jdk1.8.0_20/jre/bin:/home/wsf/java/TIJ/Thinking in java:/home/wsf/java/TIJ/Exercise:/home/wsf/java/TIJ/solution 当前目录:/home/wsf/java/TIJ/Thinking in java/polymorphism/music3 在当前目录下编译后,生成一系列Class文件: Brass.class Music3.class Percussion.class Wind.class Instrument.class Music3.java Stringed.class Woodwind.class 键入java Music3后系统提示 Error: Could not find or load main class Music3 我的类目录包含了当前目录,为何还提示无法寻找或载入指定的类文件呢? ![bash截图](https://img-ask.csdn.net/upload/201505/25/1432563533_237390.jpg)

这边有个prosody关于启动的问题不知道哪位大神,知道如何解决?感谢了

``` Dec 25 15:30:08 startup info Hello and welcome to Prosody version 0.11.3 Dec 25 15:30:08 startup info Prosody is using the select backend for connection handling Dec 25 15:30:08 portmanager info Activated service 'component' on [127.0.0.1]:5347, [::1]:5347 Dec 25 15:30:08 portmanager info Activated service 's2s' on [::]:5269, [*]:5269 Dec 25 15:30:08 portmanager info Activated service 'http' on [::]:5280, [*]:5280 Dec 25 15:30:08 portmanager error Error binding encrypted port for https: No certificate present in SSL/TLS configuration for https port 5281 Dec 25 15:30:08 portmanager error Error binding encrypted port for https: No certificate present in SSL/TLS configuration for https port 5281 Dec 25 15:30:08 portmanager info Activated service 'https' on no ports Dec 25 15:30:08 portmanager info Activated service 'c2s' on [::]:5222, [*]:5222 Dec 25 15:30:08 portmanager info Activated service ' ' on no ports Dec 25 15:30:08 mod_posix info Prosody is about to detach from the console, disabling further console output Dec 25 15:30:08 mod_posix info Successfully daemonized to PID 9750 Dec 25 15:30:19 jcp164f750 info Incoming Jabber component connection Dec 25 15:30:19 jitsi-videobridge.xxxx.xxxx.xx.xxxx:component info External component successfully authenticated**** ```

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

玩转Python-Python3基础入门

总课时80+,提供源码和相关资料 本课程从Python零基础到纯Python项目实战。内容详细,案例丰富,覆盖了Python知识的方方面面,学完后不仅对Python知识有个系统化的了解,让你从Python小白变编程大牛! 课程包含: 1.python安装 2.变量、数据类型和运算符 3.选择结构 4.循环结构 5.函数和模块 6.文件读写 7.了解面向对象 8.异常处理

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:itxy41)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

基于VHDL的16位ALU简易设计

基于VHDL的16位ALU简易设计,可完成基本的加减、带进位加减、或、与等运算。

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

利用Verilog实现数字秒表(基本逻辑设计分频器练习)

设置复位开关。当按下复位开关时,秒表清零并做好计时准备。在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。 设置启/停开关。当按下启/停开关后,将

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

计算机操作系统 第三版.pdf

计算机操作系统 第三版 本书全面介绍了计算机系统中的一个重要软件——操作系统(OS),本书是第三版,对2001年出版的修订版的各章内容均作了较多的修改,基本上能反映当前操作系统发展的现状,但章节名称基

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

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

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

SEIR课程设计源码与相关城市数据.rar

SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

GIS程序设计教程 基于ArcGIS Engine的C#开发实例

张丰,杜震洪,刘仁义编著.GIS程序设计教程 基于ArcGIS Engine的C#开发实例.浙江大学出版社,2012.05

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

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

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

去除异常值matlab程序

数据预处理中去除异常值的程序,matlab写成

用verilog HDL语言编写的秒表

在秒表设计中,分模块书写。用在七段数码管上显示。输入频率是1KHZ.可以显示百分秒,秒,分。如要显示小时,只需修改leds里的代码和主模块代码。改程序以通过硬件电路验证。完全正确。

[透视java——反编译、修补和逆向工程技术]源代码

源代码。

用QUARTUS设计模可变计数器器

用QUARTUS设计摸20|60的模可变计数器,文本设计

随机迷宫路径算法

基于C++写成的路径寻找,能够自动生成随机迷宫,并通过A*算法得到最短路径到达出口,可以直观地看到迷宫的构成以及路径的生成

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

Spring Boot -01- 快速入门篇(图文教程)

Spring Boot -01- 快速入门篇 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机 app,去找【Spring Boot 2.0 深度实践】的课程,令人开心的是,课程完全免费! 什么是 Spring Boot? Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot...

MySQL数据库从入门到实战应用

限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利2:购课后添加学习助手(微信号: itxy41),按消息提示即可领取编程大礼包! 为什么说每一个程序员都应该学习MySQL? 根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。 使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能! 【课程设计】 在本课程中,刘运强老师会结合自己十多年来对MySQL的心得体会,通过课程给你分享一条高效的MySQL入门捷径,让学员少走弯路,彻底搞懂MySQL。 本课程包含3大模块:&nbsp; 一、基础篇: 主要以最新的MySQL8.0安装为例帮助学员解决安装与配置MySQL的问题,并对MySQL8.0的新特性做一定介绍,为后续的课程展开做好环境部署。 二、SQL语言篇: 本篇主要讲解SQL语言的四大部分数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,学会熟练对库表进行增删改查等必备技能。 三、MySQL进阶篇: 本篇可以帮助学员更加高效的管理线上的MySQL数据库;具备MySQL的日常运维能力,语句调优、备份恢复等思路。 &nbsp;

MATLAB环境下ISI信道仿真及自适应均衡器设计

本文的程序时在matlab底下,在ISI信道条件下关于自适应均衡器的仿真

Android音视频开发全套

Android平台音视频开发全套,涉及:FFmpeg软解码解码、Mediacodec硬解码编码、Openssl音频播放、OpenGL ES视频渲染、RTMP推流等核心重要知识点。

CCNA+HCNA+wireshark抓包综合网工技能提升套餐

本套餐包含思科路由交换CCNA,部分CCNP核心,华为HCNA以及wireshark抓包等类容,旨在培养具有综合能力的网络工程师。

MySQL 8.0.19安装教程(windows 64位)

话不多说直接开干 目录 1-先去官网下载点击的MySQL的下载​ 2-配置初始化的my.ini文件的文件 3-初始化MySQL 4-安装MySQL服务 + 启动MySQL 服务 5-连接MySQL + 修改密码 先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini文件的文件 ...

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

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

Python数据分析与挖掘

92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元 &nbsp; 为什么学习数据分析? &nbsp; &nbsp; &nbsp; 人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。 &nbsp; &nbsp; &nbsp; 从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。 &nbsp;&nbsp; 本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。 &nbsp; 二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 &nbsp; 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。 &nbsp; 四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。 &nbsp; 五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

web网页制作期末大作业

分享思维,改变世界. web网页制作,期末大作业. 所用技术:html css javascript 分享所学所得

相关热词 c#分级显示数据 c# 不区分大小写替换 c#中调用就java c#正则表达式 验证小数 c# vscode 配置 c#三维数组能存多少数据 c# 新建excel c#多个文本框 c#怎么创建tcp通讯 c# mvc 电子病例
立即提问