LibEvent Tcp客户端如何指定IP

电脑装两块网卡,使用Libevent设现的tcp客户端如何指定网卡。

1个回答

不同网卡有不同IP,指定IP就可以· http_addr="192.168.1.2"`

int ret = evhttp_bind_socket(http_server,http_addr,http_port);
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
使用libevent库进行dns解析获得的ip地址无法用来登入网页
用libevent库中的evdns_resolve_ipv4()函数来进行dns解析,回调函数中显示解析后的ip地址 ``` event_base *base=event_init(); 103 evdns_init(); 104 evdns_resolve_ipv4(ourl->domain,0,callback,ourl);//调用了evdns_ bas\ 105 e_resolve_ipv4函数 106 event_dispatch(); 107 event_base_free(base); ``` 回调函数 ``` //dns解析回调函数 64 static void callback(int result,char type,int count,int ttl,void *addresses,void *arg){ 65 Url *ourl=(Url *)arg; 66 struct in_addr *addrs=(in_addr *) addresses; 67 68 if(result!=DNS_ERR_NONE||count==0){//如果结果出错或者ip地址数量为0 69 LOG(S_ERROR,"dns 解析出错:%s \n",ourl->domain); 70 } 71 else{ 72 char *ip=inet_ntoa(addrs[0]); 73 LOG(S_DEBUG,"dns 解析成功:%s \n",ourl->domain); 74 host_ip_map[ourl->domain]=strdup(ip); 75 ourl->ip=strdup(ip); 76 LOG(S_INFO,"ip 地址为:%s \n",ourl->ip); 77 push_ourlqueue(ourl); 78 printf("回调函数完成.\n"); 79 } 80 81 82 event_loopexit(NULL); 83 84 } ``` ``` [2016/11/30 17:21][DEBUG][file:url.h][line:73]dns 解析成功:baidu.com [2016/11/30 17:21][INFO][file:url.h][line:76]ip 地址为:111.13.101.208 ``` 编译后解析baidu.com ,可以得到ip 为 111.13.101.208 。 ``` [2016/11/30 17:21][DEBUG][file:url.h][line:73]dns 解析成功:blog.csdn.net [2016/11/30 17:21][INFO][file:url.h][line:76]ip 地址为:60.205.8.179 ``` 解析blog.csdn.net 获得的ip 为 60.205.8.179 。 用解析baidu的ip可以访问baidu.com 用下面的ip地址却只能获得一个403 的错误提示。 求教这是什麽原因
libevent数据接收问题..
我客户端一直循环的去发送数据。比如发送1-20000.我发现在libevent服务端出现监听事件丢失。执行的事件并没有20000次。请各位大神们给出一些建议。
关于libevent 中event_base_dispatch退出的问题
用libevent写一个服务器,用一个定时器事件去检测心跳包,如果超时就close连接的文件描述符,然后会调用libevent自带的error_cb,在那里面调用自己写的一个清理函数,清理服务器保存的客户端相关资源,很多客户端在比较接近的时候被超时,而关闭连接的时候,很容易发生event_base_dispatch退出循环,返回-1,但是如果客户端那边手动关闭,则不会出现,求高手解惑
新手剖析libevent的方法
自己想剖析一下libevent,学习一下思想,但不知道该怎样去分析它,请指导··· 谢谢·
libevent函数如何使用linux manual查询
已经安装libevent-2.0-5 libevent-dev
libevent多线程服务器错误
#include "lib_net.h" #include "lib_thread.h" #include "lib_public.h" #include<event.h> #include<event2/util.h> #include<signal.h> #define BACKLOG 10 #define MAX_EVENTS 500 #define THRD_NUM 5 char ip[24]; short port; struct st_listenserv { int sockfd; struct event *ev_listen; struct event_base *base; }; struct st_thrd_work { int clifd; pthread_t pid; int status; struct event_base *base; struct event *ev_read; struct event *ev_write; char buf[1024]; }; int last_active = 0; struct st_thrd_work *st_thrd; void initsocket(struct st_listenserv *listenserv); void accept_cb(int fd, short events, void *arg); void send_cb(int fd, short events, void *arg); void release_read(struct st_thrd_work *thrd_work); void release_write(struct st_thrd_work *thrd_work); void thrd_work_cb(int fd, short events, void *arg); void thrd_work(struct st_thrd_work *st_work); void thrd_work_process(void *arg); int main(int argc, char *argv[]) { int i=0; sigset(SIGPIPE, SIG_IGN); if(argc < 3) { perror("input server port"); return -1; } memcpy(ip, argv[1], 24); port = atoi(argv[2]); struct st_listenserv listenserv; initsocket(&listenserv); //创建线程池 st_thrd = calloc(THRD_NUM, sizeof(struct st_thrd_work)); for(i=0; i<THRD_NUM; ++i) { st_thrd[i].base = event_base_new(); } for(i=0; i<THRD_NUM; ++i) { thrd_work(&st_thrd[i]); } listenserv.base = event_base_new(); listenserv.ev_listen = event_new(listenserv.base, listenserv.sockfd,EV_READ | EV_PERSIST,accept_cb,NULL); event_add(listenserv.ev_listen, NULL); event_base_dispatch(listenserv.base); } void initsocket(struct st_listenserv *listenserv) { listenserv->sockfd = lib_tcpsrv_init(ip,port); if(listenserv->sockfd < 0) { perror("server create socket error"); return; } if(lib_set_nonblock(listenserv->sockfd) < 0) { perror("set nonblock error"); return; } printf("init socket ok\n"); } void accept_cb(int fd, short events, void *arg) { struct sockaddr_in cin; socklen_t socklen = sizeof(cin); int clifd = lib_tcpsrv_accept(fd, &cin); if(clifd <0) { perror("accept error"); } if(lib_set_nonblock(clifd) < 0) { perror("set nonblock error"); return; } printf("new conneciotn [%s:%d]\n", inet_ntoa(cin.sin_addr), ntohs(cin.sin_port)); int tid = (++last_active) % THRD_NUM; struct st_thrd_work *thrd = st_thrd + tid; last_active = tid; thrd->clifd = clifd; printf("{%lu : %d}\n", thrd->pid, thrd->clifd); thrd->ev_read = event_new(thrd->base, thrd->clifd, EV_READ|EV_PERSIST, thrd_work_cb, thrd); if(thrd->ev_read != NULL) event_add(thrd->ev_read, NULL); if(last_active > 1000) last_active = 0; } void thrd_work_cb(int fd, short events, void *arg) { struct st_thrd_work *thrd_work = (struct st_thrd_work *)arg; //有事件时进行处理 int recvlen = 0; if( thrd_work != NULL) { recvlen = lib_tcp_recv(thrd_work->clifd, thrd_work->buf,1024, -1); if(recvlen < 0) { perror("recv error"); close(thrd_work->clifd); release_read(thrd_work); return; } printf("recv data:%s\n", thrd_work->buf); memset(thrd_work->buf, 0, sizeof(thrd_work->buf)); thrd_work->ev_write = event_new(thrd_work->base, thrd_work->clifd, EV_WRITE, send_cb, thrd_work); if(thrd_work->ev_write != NULL) event_add(thrd_work->ev_write, NULL); } } void thrd_work_process(void *arg) { struct st_thrd_work *st_work = (struct st_thrd_work *)arg; printf("====%lu====\n", st_work->pid); do { if(st_work->clifd > 0) { break; } } while (1); event_base_dispatch(st_work->base); event_base_free(st_work->base); } void thrd_work(struct st_thrd_work *st_work) { if(st_work != NULL) { lib_thread_create(&(st_work->pid), thrd_work_process, st_work, 1); } } void send_cb(int fd, short events, void *arg) { struct st_thrd_work *thrd_work = (struct st_thrd_work*)arg; if(thrd_work->clifd <= 0) return; int sendlen = lib_tcp_send(thrd_work->clifd, thrd_work->buf, 1024); if(sendlen < 0) { perror("send error"); close(thrd_work->clifd); release_write(thrd_work); } memset(thrd_work->buf, 0, sizeof(thrd_work->buf)); } void release_read(struct st_thrd_work *thrd_work) { if(thrd_work == NULL) { return; } if(NULL != thrd_work->ev_read) { event_del(thrd_work->ev_read); event_free(thrd_work->ev_read); } } void release_write(struct st_thrd_work *thrd_work) { if(thrd_work == NULL) return; if(thrd_work->ev_write != NULL) { event_free(thrd_work->ev_write); } } 完整代码:https://github.com/Addision/test_libevent_thrd_server 总是报段错误,不知道什么地方有问题,求解答
libevent http server 如何匹配并解析restful url里的路径参数
比如查询一个用户的信息 我们输入url: http://xxxx.com/user/12345 这是目前流行的restful的标准 主流的java web框架,C++的cppcms web框架都支持解析出 http://xxxx.com/user/{userid} 这里面的userid输入参数 但高并发的C++ http服务框架里libevent http是很常用的,但我看参考文档里只有解析传统的cgi模式的http参数,也就是: http://xxxx.com/user?userid=xxxxx这样的形式。 更关键的是,libevent http需要绑定callback相应函数和http url, restful的url连绑定都做不到,因为url包含可变参数,而libevent的evhttp_set_cb函数貌似不支持url的正则匹配?连接收请求都做不到就更别谈解析了。 libevent到底有没有官方的restful url解析方法? 有没有其他麻烦点儿但能用的民间解决方法? 希望大家说说自己的经验,我看用libevent开发http服务的还不少,不会都不用restful吧,我面临的场景非常符合restful的经典场景。。 大家还可以推荐在http配置解析上做的好的其他C++框架
同一个服务器,客户端就差一条send函数,为什么有send消耗CPU更少
libevent用多线程写了个服务器,刚在测试,无意中发现个不理解的现象 服务器在自己的电脑上运行,再在自己的电脑上打开客户端,客户端很简单,就while循环里面发送数字 while(1) { send(sock,(char*)&i,sizeof(int),0); ++i; } 这样的客户端,打开20个,电脑也没有卡,但是如果把send那一句注释了,打开3个就会卡. 打开资源管理器看了下,单个客户端消耗内存都差不多,打开多少个都是600多K, 没有send的客户端,打开3个,单个占用Cpu 30%左右, 有send的客户端,打开3个,单个占用CPU 15%--20%左右,打开10个,单个占用CPu不到10%. 为什么没有send,消耗CPU更大,而且当总的CPU占用都是100%的时候,有send的时候电脑不感觉到卡
windows下libevent的使用
要封装一个libevent的类,对这个库不太熟悉,该怎么设计呢?
libevent怎么建立https连接
libevent可以建立http连接。struct evhttp 这个结构体有关吗?网上的例子,都是基于这个结构体,而后建立了http连接。那么 https 应该怎么改 ?
求教libevent编译的一个问题
在vs下(是准备做成跨平台的,linux下还没试),我用libevent编写了一个服务器的网络库(编译成了静态库),提供了一些接口给使用者创建使用服务器,做了一个测试文件调用我自己写的静态库,如果不我的测试文件不包含libevent的三个静态库 ibevent_core.lib, ibevent_extras.lib, libevent.lib 或者缺少 连接器: 输入->附加依赖项: ws2_32.lib wsock32.lib libevent.lib libevent_core.lib libevent_extras.lib 就会报很多错误,基本上是不识别libevent里面的东西,静态库不是编译的时候就加载进去了吗,我写的网络库本身就是静态库,我写的测试文件只是调用接口,不直接使用libevent,怎么也需要包含libevent
libevent安装过程 make产生错误问题
版本是libevent-2.0.21-stable 1:cd libevent-2.0.21-stable 2:-configure -prefix=/usr 3:make 在第三步make的时候产生了错误![图片说明](https://img-ask.csdn.net/upload/201804/24/1524572209_359161.png) 求指点迷津
php配置libevent扩展的相关问题
php上配置libevent扩展,网上教程说将libevent0.1.0.tgz解压后执行./configure,但下载的包解压后都没有configure文件,没有办法按照该命令安装,该怎么解决?
阅读libevent中的小问题
下面一个断言: `EVUTIL_ASSERT(chain->refcnt > 0);` 看其实现: ``` #define EVUTIL_ASSERT(cond) EVUTIL_NIL_CONDITION_(cond) #define EVUTIL_NIL_CONDITION_(condition) do {\ (void)sizeof(!(condition));\ }while(0) ``` 疑问 - EVUTIL_ASSERT(cond)是一个断言吗?如果不是,那么这是在干什么? - 强制转换成void这是在干什么?
netstat之后服务器端显示查询的链接已经没有啦,但客户端仍然显示 ESTABLISHED ??
如题目,服务器端网络层使用了libevent,丢失这种连接之后收不到任何事件。
libevent多线程处理新手问题
小弟最近在做个项目 服务端: 主线程用event_base_dispatch(g_eventBase);阻塞掉 子线程负责从数据库中读数据发送bufferevent_write() 初始化如下 [code=c] struct sockaddr_in sSvrAddr; memset(&sSvrAddr, 0, sizeof (sSvrAddr)); try { sSvrAddr.sin_family = AF_INET; sSvrAddr.sin_addr.s_addr = inet_addr(g_strListenIP.c_str()); sSvrAddr.sin_port = htons(atoi(g_strListenPort.c_str())); } catch (...) { LOGERROR(g_Log, ERROR_CODE_UNDEFINED, "系统启动失败!请检查IP/PORT是否设置正确! IP:%s PORT:%s", g_strListenIP.c_str(),g_strListenPort.c_str()); exit(0); } // 新建Base事件 g_eventBase = event_base_new(); evconnlistener *listener = evconnlistener_new_bind(g_eventBase, listener_cb, g_eventBase, LEV_OPT_REUSEABLE | LEV_OPT_CLOSE_ON_FREE|LEV_OPT_THREADSAFE, 5, (struct sockaddr*) &sSvrAddr, sizeof (struct sockaddr_in)); evthread_use_pthreads(); event_base_dispatch(g_eventBase); [/code] listener_cb函数如下 [code=c] struct sockaddr_in sCliAddr; memcpy(&sCliAddr, sock, sizeof(sCliAddr)); //evutil_make_socket_nonblocking(iCliFd); struct bufferevent* buf_ev; buf_ev = bufferevent_socket_new(g_eventBase, iCliFd, BEV_OPT_CLOSE_ON_FREE|BEV_OPT_THREADSAFE); bufferevent_setcb(buf_ev, readcb, NULL, errorcb, NULL); bufferevent_enable(buf_ev, EV_READ | EV_WRITE); [/code] 现在出现的问题是 过一段时间(不确定)就会出现所有的消息都无法触发任何callback函数,接收(进不了readcb函数)和发送消息(bufferevent_write返回成功加入,但是没有真正发出)也没有反应,但是调试跟踪代码时,发现还是在dispatch的循环中!请问是什么情况! 最新更新进展!我将bufferevent_write更新为write函数后,跑了几个小时了!目前没问题!应该是因为我只有一个线程涉及到了libevent,但是为什么啊!求教原因!
在ubuntu上面安装了libevent之后,编译main.cpp,显示链接错误,可是都找到了这个库,为什么链接会失败
已经明确指定了-levent,在/usr/local/lib/路径下面也有对应的库文件。但是还是链接不成,我在centos上面同样方法安装的libevent就可以编译通过![图片说明](https://img-ask.csdn.net/upload/201810/31/1540970547_237097.png)
vector,libevent,c++
``` #include "dem01.h" class tcpServer; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; int m_threads = 0; typedef struct multival { int pipefd[2]; pthread_t tid; tcpServer *server; struct event_base *base; } multival_t; class tcpServer { public: tcpServer(unsigned int port, int threads); public: void start(); void initializepthred(); private: void acceptHandler(); public: vector<multival_t> multivector; private: int m_threads; unsigned int m_port; }; void *worker_pthread(void * ptr); void read_callback(int fd, const short event, void *arg); void master_callback(struct evconnlistener *listener, int connfd, struct sockaddr, int len, void *ptr); tcpServer::tcpServer(unsigned int port, int threads = 5) { m_port = port; this->m_threads = threads; ::m_threads = threads; multivector(threads); } void read_callback(int fd, const short event, void *arg) { char buffer[10]; int res = read(fd, buffer, sizeof(buffer) - 1); if(res < 0) { cout << "read_callback read failure" << endl; return; } buffer[res] = '\0'; cout << buffer << endl; } void *worker_pthread(void *ptr) { pthread_mutex_lock(&mutex); multival_t *data = static_cast<multival_t *>(ptr); pthread_mutex_unlock(&mutex); data->base = event_base_new(); struct event *listener = event_new(data->base, data->pipefd[0], EV_READ | EV_PERSIST, read_callback, ptr); event_add(listener, NULL); event_base_dispatch(data->base); event_base_free(data->base); pthread_exit(NULL); } void master_callback(struct evconnlistener *listener, int connfd, struct sockaddr *peeraddr, int len, void *ptr) { tcpServer *server = static_cast<tcpServer *>(ptr); assert(server); int position = connfd % m_threads; int fd = server->multivector[position].pipefd[1]; string buffer; stringstream stream; stream.str(""); stream << connfd; stream >> buffer; stream.str(""); int res = write(fd, buffer.c_str(), buffer.length()); if(res < 0) { cout << "acceptHandler write failure" << endl; return; } } void tcpServer::start() { struct event_base *m_base = event_base_new(); struct sockaddr_in srvaddr; memset(&srvaddr, 0, sizeof(srvaddr)); srvaddr.sin_family = AF_INET; srvaddr.sin_port = htons(m_port); srvaddr.sin_addr.s_addr = INADDR_ANY; struct evconnlistener *listener = evconnlistener_new_bind(m_base, master_callback, this, LEV_OPT_REUSEABLE | LEV_OPT_CLOSE_ON_FREE, -1, (struct sockaddr *)&srvaddr, sizeof(srvaddr)); initializepthred(); event_base_dispatch(m_base); cout << "loop the main exit" << endl; evconnlistener_free(listener); event_base_free(m_base); } void tcpServer::initializepthred() { for(int i = 0; i < m_threads; i ++) { multivector[i].base = NULL; multivector[i].server = this; if(pipe(multivector[i].pipefd) < 0) { cout << "create pipe failure" << endl; } pthread_create(&multivector[i].tid, NULL, worker_pthread, &multivector[i]); } } int main () { tcpServer *server = new tcpServer(8001, 5); assert(server); server->start(); return 0; } ``` 在构造函数出出现关于vector的问题,不能正常编译,来个好心人帮忙看看。
在win10子系统ubuntu18.04下安装mysql5.7尝试重新启动的时候出现以下报错
在win10子系统ubuntu18.04下安装mysql5.7尝试重新启动的时候出现以下报错 1.安装mysql-server ``` root@PC-5200:/home/tom# apt-get -y install mysql-server ``` ``` Reading package lists... Done Building dependency tree Reading state information... Done The following package was automatically installed and is no longer required: libfreetype6 Use 'apt autoremove' to remove it. The following additional packages will be installed: libaio1 libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-6 libfcgi-perl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libssl1.1 libtimedate-perl liburi-perl mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7 Suggested packages: libdata-dump-perl libipc-sharedcache-perl libwww-perl mailx tinyca The following NEW packages will be installed: libaio1 libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-6 libfcgi-perl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libtimedate-perl liburi-perl mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server mysql-server-5.7 mysql-server-core-5.7 The following packages will be upgraded: libssl1.1 1 upgraded, 21 newly installed, 0 to remove and 136 not upgraded. Need to get 21.0 MB of archives. After this operation, 157 MB of additional disk space will be used. Get:1 http://mirrors.aliyun.com/ubuntu bionic/main amd64 mysql-common all 5.8+1.0.4 [7308 B] Get:2 http://mirrors.aliyun.com/ubuntu bionic-updates/main amd64 libaio1 amd64 0.3.110-5ubuntu0.1 [6476 B] Get:3 http://mirrors.aliyun.com/ubuntu bionic-security/main amd64 libssl1.1 amd64 1.1.1-1ubuntu2.1~18.04.5 [1300 kB] Get:4 http://mirrors.aliyun.com/ubuntu bionic-security/main amd64 mysql-client-core-5.7 amd64 5.7.28-0ubuntu0.18.04.4 [6644 kB] Get:5 http://mirrors.aliyun.com/ubuntu bionic-security/main amd64 mysql-client-5.7 amd64 5.7.28-0ubuntu0.18.04.4 [1943 kB] Get:6 http://mirrors.aliyun.com/ubuntu bionic-security/main amd64 mysql-server-core-5.7 amd64 5.7.28-0ubuntu0.18.04.4 [7432 kB] Get:7 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libevent-core-2.1-6 amd64 2.1.8-stable-4build1 [85.9 kB] Get:8 http://mirrors.aliyun.com/ubuntu bionic-security/main amd64 mysql-server-5.7 amd64 5.7.28-0ubuntu0.18.04.4 [2932 kB] Get:9 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libhtml-tagset-perl all 3.20-3 [12.1 kB] Get:10 http://mirrors.aliyun.com/ubuntu bionic/main amd64 liburi-perl all 1.73-1 [77.2 kB] Get:11 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libhtml-parser-perl amd64 3.72-3build1 [85.9 kB] Get:12 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libcgi-pm-perl all 4.38-1 [185 kB] Get:13 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libfcgi-perl amd64 0.78-2build1 [32.8 kB] Get:14 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libcgi-fast-perl all 1:2.13-1 [9940 B] Get:15 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libencode-locale-perl all 1.05-1 [12.3 kB] Get:16 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libhtml-template-perl all 2.97-1 [59.0 kB] Get:17 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libtimedate-perl all 2.3000-2 [37.5 kB] Get:18 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libhttp-date-perl all 6.02-1 [10.4 kB] Get:19 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libio-html-perl all 1.001-1 [14.9 kB] Get:20 http://mirrors.aliyun.com/ubuntu bionic/main amd64 liblwp-mediatypes-perl all 6.02-1 [21.7 kB] Get:21 http://mirrors.aliyun.com/ubuntu bionic/main amd64 libhttp-message-perl all 6.14-1 [72.1 kB] Get:22 http://mirrors.aliyun.com/ubuntu bionic-security/main amd64 mysql-server all 5.7.28-0ubuntu0.18.04.4 [9940 B] Fetched 21.0 MB in 9s (2376 kB/s) Preconfiguring packages ... Selecting previously unselected package mysql-common. (Reading database ... 28663 files and directories currently installed.) Preparing to unpack .../0-mysql-common_5.8+1.0.4_all.deb ... Unpacking mysql-common (5.8+1.0.4) ... Selecting previously unselected package libaio1:amd64. Preparing to unpack .../1-libaio1_0.3.110-5ubuntu0.1_amd64.deb ... Unpacking libaio1:amd64 (0.3.110-5ubuntu0.1) ... Preparing to unpack .../2-libssl1.1_1.1.1-1ubuntu2.1~18.04.5_amd64.deb ... Unpacking libssl1.1:amd64 (1.1.1-1ubuntu2.1~18.04.5) over (1.1.0g-2ubuntu4.3) ... Selecting previously unselected package mysql-client-core-5.7. Preparing to unpack .../3-mysql-client-core-5.7_5.7.28-0ubuntu0.18.04.4_amd64.deb ... Unpacking mysql-client-core-5.7 (5.7.28-0ubuntu0.18.04.4) ... Selecting previously unselected package mysql-client-5.7. Preparing to unpack .../4-mysql-client-5.7_5.7.28-0ubuntu0.18.04.4_amd64.deb ... Unpacking mysql-client-5.7 (5.7.28-0ubuntu0.18.04.4) ... Selecting previously unselected package mysql-server-core-5.7. Preparing to unpack .../5-mysql-server-core-5.7_5.7.28-0ubuntu0.18.04.4_amd64.deb ... Unpacking mysql-server-core-5.7 (5.7.28-0ubuntu0.18.04.4) ... Selecting previously unselected package libevent-core-2.1-6:amd64. Preparing to unpack .../6-libevent-core-2.1-6_2.1.8-stable-4build1_amd64.deb ... Unpacking libevent-core-2.1-6:amd64 (2.1.8-stable-4build1) ... Setting up mysql-common (5.8+1.0.4) ... update-alternatives: using /etc/mysql/my.cnf.fallback to provide /etc/mysql/my.cnf (my.cnf) in auto mode Selecting previously unselected package mysql-server-5.7. (Reading database ... 28832 files and directories currently installed.) Preparing to unpack .../00-mysql-server-5.7_5.7.28-0ubuntu0.18.04.4_amd64.deb ... Unpacking mysql-server-5.7 (5.7.28-0ubuntu0.18.04.4) ... Selecting previously unselected package libhtml-tagset-perl. Preparing to unpack .../01-libhtml-tagset-perl_3.20-3_all.deb ... Unpacking libhtml-tagset-perl (3.20-3) ... Selecting previously unselected package liburi-perl. Preparing to unpack .../02-liburi-perl_1.73-1_all.deb ... Unpacking liburi-perl (1.73-1) ... Selecting previously unselected package libhtml-parser-perl. Preparing to unpack .../03-libhtml-parser-perl_3.72-3build1_amd64.deb ... Unpacking libhtml-parser-perl (3.72-3build1) ... Selecting previously unselected package libcgi-pm-perl. Preparing to unpack .../04-libcgi-pm-perl_4.38-1_all.deb ... Unpacking libcgi-pm-perl (4.38-1) ... Selecting previously unselected package libfcgi-perl. Preparing to unpack .../05-libfcgi-perl_0.78-2build1_amd64.deb ... Unpacking libfcgi-perl (0.78-2build1) ... Selecting previously unselected package libcgi-fast-perl. Preparing to unpack .../06-libcgi-fast-perl_1%3a2.13-1_all.deb ... Unpacking libcgi-fast-perl (1:2.13-1) ... Selecting previously unselected package libencode-locale-perl. Preparing to unpack .../07-libencode-locale-perl_1.05-1_all.deb ... Unpacking libencode-locale-perl (1.05-1) ... Selecting previously unselected package libhtml-template-perl. Preparing to unpack .../08-libhtml-template-perl_2.97-1_all.deb ... Unpacking libhtml-template-perl (2.97-1) ... Selecting previously unselected package libtimedate-perl. Preparing to unpack .../09-libtimedate-perl_2.3000-2_all.deb ... Unpacking libtimedate-perl (2.3000-2) ... Selecting previously unselected package libhttp-date-perl. Preparing to unpack .../10-libhttp-date-perl_6.02-1_all.deb ... Unpacking libhttp-date-perl (6.02-1) ... Selecting previously unselected package libio-html-perl. Preparing to unpack .../11-libio-html-perl_1.001-1_all.deb ... Unpacking libio-html-perl (1.001-1) ... Selecting previously unselected package liblwp-mediatypes-perl. Preparing to unpack .../12-liblwp-mediatypes-perl_6.02-1_all.deb ... Unpacking liblwp-mediatypes-perl (6.02-1) ... Selecting previously unselected package libhttp-message-perl. Preparing to unpack .../13-libhttp-message-perl_6.14-1_all.deb ... Unpacking libhttp-message-perl (6.14-1) ... Selecting previously unselected package mysql-server. Preparing to unpack .../14-mysql-server_5.7.28-0ubuntu0.18.04.4_all.deb ... Unpacking mysql-server (5.7.28-0ubuntu0.18.04.4) ... Setting up libhtml-tagset-perl (3.20-3) ... Setting up libevent-core-2.1-6:amd64 (2.1.8-stable-4build1) ... Processing triggers for ureadahead (0.100.0-21) ... Setting up libencode-locale-perl (1.05-1) ... Setting up libtimedate-perl (2.3000-2) ... Setting up libio-html-perl (1.001-1) ... Setting up liblwp-mediatypes-perl (6.02-1) ... Processing triggers for libc-bin (2.27-3ubuntu1) ... Setting up libaio1:amd64 (0.3.110-5ubuntu0.1) ... Setting up liburi-perl (1.73-1) ... Setting up libssl1.1:amd64 (1.1.1-1ubuntu2.1~18.04.5) ... Checking for services that may need to be restarted...done. Checking for services that may need to be restarted...done. Checking init scripts... Restarting services possibly affected by the upgrade: invoke-rc.d: could not determine current runlevel Services restarted successfully. Processing triggers for systemd (237-3ubuntu10.21) ... Setting up libhtml-parser-perl (3.72-3build1) ... Setting up libcgi-pm-perl (4.38-1) ... Processing triggers for man-db (2.8.3-2ubuntu0.1) ... Setting up mysql-client-core-5.7 (5.7.28-0ubuntu0.18.04.4) ... Setting up libfcgi-perl (0.78-2build1) ... Setting up libhttp-date-perl (6.02-1) ... Setting up libhtml-template-perl (2.97-1) ... Setting up mysql-server-core-5.7 (5.7.28-0ubuntu0.18.04.4) ... Setting up libcgi-fast-perl (1:2.13-1) ... Setting up libhttp-message-perl (6.14-1) ... Setting up mysql-client-5.7 (5.7.28-0ubuntu0.18.04.4) ... Setting up mysql-server-5.7 (5.7.28-0ubuntu0.18.04.4) ... invoke-rc.d: could not determine current runlevel * Stopping MySQL database server mysqld [ OK ] update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode Renaming removed key_buffer and myisam-recover options (if present) Cannot open /proc/net/unix: No such file or directory Cannot stat file /proc/1/fd/5: Operation not permitted Cannot stat file /proc/1/fd/10: Operation not permitted Cannot stat file /proc/1/fd/6: Operation not permitted Cannot stat file /proc/7/fd/7: Operation not permitted Cannot stat file /proc/7/fd/10: Operation not permitted Cannot stat file /proc/7/fd/5: Operation not permitted Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service. invoke-rc.d: could not determine current runlevel Setting up mysql-server (5.7.28-0ubuntu0.18.04.4) ... Processing triggers for libc-bin (2.27-3ubuntu1) ... Processing triggers for ureadahead (0.100.0-21) ... Processing triggers for systemd (237-3ubuntu10.21) ... ``` 2.启动mysql服务 ``` root@PC-5200:/home/tom# systemctl start mysql.service ``` 3.出现如下报错 ``` System has not been booted with systemd as init system (PID 1). Can't operate. ```
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
MyBatis研习录(01)——MyBatis概述与入门
C语言自学完备手册(33篇) Android多分辨率适配框架 JavaWeb核心技术系列教程 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往——自定义View系列教程(10篇) 走出思维困境,踏上精进之路——Android开发进阶精华录 讲给Android程序员看的前端系列教程(40集免费视频教程+源码) 版权声明 本文原创作者:谷哥的小弟 作者博客
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
Python绘图,圣诞树,花,爱心 | Turtle篇
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turtle.Turtle()
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
web前端javascript+jquery知识点总结
Javascript javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ,语法同java类似,是一种解释性语言,边执行边解释。 JavaScript的组成: ECMAScipt 用于描述: 语法,变量和数据类型,运算符,逻辑控制语句,关键字保留字,对象。 浏览器对象模型(Br
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序
Python:爬取疫情每日数据
前言 有部分同学留言说为什么412,这是因为我代码里全国的cookies需要你自己打开浏览器更新好后替换,而且这个cookies大概只能持续20秒左右! 另外全国卫健委的数据格式一直在变,也有可能会导致爬取失败! 我现在已根据2月14日最新通报稿的格式修正了! 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 为什么已经有大量平台做
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告(本文) 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧...... 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升
粒子群算法求解物流配送路线问题(python)
粒子群算法求解物流配送路线问题(python) 1.查找论文文献 找一篇物流配送路径优化+粒子群算法求解的论文 参考文献:基于混沌粒子群算法的物流配送路径优化 2.了解粒子群算法的原理 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/details/81382794 3.确定编码方式和解码策略 3.1编码方式 物流配送路线的
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang.
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问