当前位置: 首页 > news >正文

【Mongoose笔记】HTTP 反向代理

【Mongoose笔记】HTTP 反向代理

简介

Mongoose 笔记系列用于记录学习 Mongoose 的一些内容。

Mongoose 是一个 C/C++ 的网络库。它为 TCP、UDP、HTTP、WebSocket、MQTT 实现了事件驱动的、非阻塞的 API。

项目地址:

https://github.com/cesanta/mongoose

学习

下面通过学习 Mongoose 项目代码中的 http-reverse-proxy 示例程序 ,来学习如何使用 Mongoose 实现一个简单的 HTTP 反向代理。使用树莓派平台进行开发验证。

http-reverse-proxy 的示例程序不长,代码如下:

// Copyright (c) 2020 Cesanta Software Limited
// All rights reserved
//
// Example HTTP reverse proxy
//    1. Run `make`. This builds and starts a proxy on port 8000
//    2. Start your browser, go to https://localhost:8000
//
// To enable SSL/TLS, add SSL=OPENSSL or SSL=MBEDTLSstatic const char *s_backend_url =
#if defined(MG_ENABLE_MBEDTLS) || defined(MG_ENABLE_OPENSSL)"https://cesanta.com";
#else"http://info.cern.ch";
#endif
static const char *s_listen_url = "http://localhost:8000";#include "mongoose.h"// Forward client request to the backend connection, rewriting the Host header
static void forward_request(struct mg_http_message *hm,struct mg_connection *c) {size_t i, max = sizeof(hm->headers) / sizeof(hm->headers[0]);struct mg_str host = mg_url_host(s_backend_url);mg_printf(c, "%.*s\r\n",(int) (hm->proto.ptr + hm->proto.len - hm->message.ptr),hm->message.ptr);for (i = 0; i < max && hm->headers[i].name.len > 0; i++) {struct mg_str *k = &hm->headers[i].name, *v = &hm->headers[i].value;if (mg_strcmp(*k, mg_str("Host")) == 0) v = &host;mg_printf(c, "%.*s: %.*s\r\n", (int) k->len, k->ptr, (int) v->len, v->ptr);}mg_send(c, "\r\n", 2);mg_send(c, hm->body.ptr, hm->body.len);MG_DEBUG(("FORWARDING: %.*s %.*s", (int) hm->method.len, hm->method.ptr,(int) hm->uri.len, hm->uri.ptr));
}static void fn2(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {struct mg_connection *c2 = fn_data;if (ev == MG_EV_READ) {// All incoming data from the backend, forward to the clientif (c2 != NULL) mg_send(c2, c->recv.buf, c->recv.len);mg_iobuf_del(&c->recv, 0, c->recv.len);} else if (ev == MG_EV_CLOSE) {if (c2 != NULL) c2->fn_data = NULL;}(void) ev_data;
}static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {struct mg_connection *c2 = fn_data;if (ev == MG_EV_HTTP_MSG) {struct mg_http_message *hm = (struct mg_http_message *) ev_data;// Client request, create backend connection Note that we're passing// client connection `c` as fn_data for the created backend connection.c2 = mg_connect(c->mgr, s_backend_url, fn2, c);if (c2 == NULL) {mg_error(c, "Cannot create backend connection");} else {if (mg_url_is_ssl(s_backend_url)) {struct mg_tls_opts opts = {.ca = "ca.pem"};mg_tls_init(c2, &opts);}c->fn_data = c2;forward_request(hm, c2);c2->is_hexdumping = 1;}} else if (ev == MG_EV_CLOSE) {if (c2 != NULL) c2->is_closing = 1;if (c2 != NULL) c2->fn_data = NULL;}
}int main(void) {struct mg_mgr mgr;mg_log_set(MG_LL_DEBUG);                       // Set log levelmg_mgr_init(&mgr);                             // Initialise event managermg_http_listen(&mgr, s_listen_url, fn, NULL);  // Start proxyfor (;;) mg_mgr_poll(&mgr, 1000);              // Event loopmg_mgr_free(&mgr);return 0;
}

下面从main函数开始分析代码。

定义变量,struct mg_mgr是用于保存所有活动连接的事件管理器。

  struct mg_mgr mgr;

设置 Mongoose 日志记录级别,设置等级为 MG_LL_DEBUG

  mg_log_set(MG_LL_DEBUG);                       // Set log level

初始化一个事件管理器,也就是将上面定义的struct mg_mgr变量 mgr 中的数据进行初始化。

  mg_mgr_init(&mgr);                             // Initialise event manager

启动代理,通过 mg_http_listen 创建一个 HTTP 监听连接,监听地址s_listen_url。其中fn是事件处理函数。

  mg_http_listen(&mgr, s_listen_url, fn, NULL);  // Start proxy

参数s_listen_url是一个全局变量,默认值为http://localhost:8000

static const char *s_listen_url = "http://localhost:8000";

接下来是事件循环,mg_mgr_poll 遍历所有连接,接受新连接,发送和接收数据,关闭连接,并为各个事件调用事件处理函数。

  for (;;) mg_mgr_poll(&mgr, 1000);              // Event loop

调用 mg_mgr_free 关闭所有连接,释放所有资源。

  mg_mgr_free(&mgr);

分析完main函数后,我们看下事件处理函数fn的代码。

首先判断是否接收到的事件是 HTTP 请求事件MG_EV_HTTP_MSG,如果是则表示收到客户端的请求,开始 HTTP 请求的处理。

  struct mg_connection *c2 = fn_data;if (ev == MG_EV_HTTP_MSG) {

将函数参数ev_data转换为 struct mg_http_message,其中包含已解析的 HTTP 请求。

    struct mg_http_message *hm = (struct mg_http_message *) ev_data;

接着通过mg_connect创建一个新的连接,用于与后端服务器连接,fn2是事件处理函数,并将c传递进去。

    c2 = mg_connect(c->mgr, s_backend_url, fn2, c);

如果c2NULL,则连接失败,不为NULL则使用mg_url_is_ssl函数检查给定的 URL 是否使用加密方案,如果s_backend_urlhttps://,则连接使用 TLS,调用mg_tls_init函数初始化 TLS。将c2的值赋给c->fn_data,接着调用forward_request函数转发客户端请求,然后c2->is_hexdumping置1,开启Hexdump in/out traffic功能。

    if (c2 == NULL) {mg_error(c, "Cannot create backend connection");} else {if (mg_url_is_ssl(s_backend_url)) {struct mg_tls_opts opts = {.ca = "ca.pem"};mg_tls_init(c2, &opts);}c->fn_data = c2;forward_request(hm, c2);c2->is_hexdumping = 1;}

然后是判断是否接收到MG_EV_CLOSE事件,表示连接关闭。如果是则将c2->is_closing置 1,关闭与后端服务器连接,并将c2->fn_data置为NULL,因为与客户端的连接关闭了,所以之前给c2->fn_data赋的值c也就无效了。

  } else if (ev == MG_EV_CLOSE) {if (c2 != NULL) c2->is_closing = 1;if (c2 != NULL) c2->fn_data = NULL;}

接下来看下forward_request函数是如何转发客户端请求的。

定义变量,max的值为最大 HTTP 消息头(Message Headers)的最大数量。

  size_t i, max = sizeof(hm->headers) / sizeof(hm->headers[0]);

使用mg_url_host函数从 s_backend_url 中提取主机名,用于修改 Host 字段的值。

  struct mg_str host = mg_url_host(s_backend_url);

将请求行的数据通过mg_printf放入输出缓冲区。其中hm->message.ptr是包含请求行(Request-Line),消息头(Message Headers),消息体(Message Body)的内容,hm->proto.ptr则是只包含请求行中协议版本(HTTP-Version)的内容,通过hm->proto.ptr + hm->proto.len得到协议版本内容的结尾位置,再减去hm->message.ptr的地址得到请求行的数据长度。

  mg_printf(c, "%.*s\r\n",(int) (hm->proto.ptr + hm->proto.len - hm->message.ptr),hm->message.ptr);

接下来要重写 Host 字段的值,逐个匹配字符串是否等于Host,如果等于Host,则将对应的值改成从 s_backend_url 中提取的主机名。这个程序会将该字段改为Host: info.cern.ch。然后将这些消息头信息通过mg_printf放入输出缓冲区。

  for (i = 0; i < max && hm->headers[i].name.len > 0; i++) {struct mg_str *k = &hm->headers[i].name, *v = &hm->headers[i].value;if (mg_strcmp(*k, mg_str("Host")) == 0) v = &host;mg_printf(c, "%.*s: %.*s\r\n", (int) k->len, k->ptr, (int) v->len, v->ptr);}mg_send(c, "\r\n", 2);

发送消息体(Message Body)数据。

  mg_send(c, hm->body.ptr, hm->body.len);

打印日志,将方法和 URI 打印出来。

  MG_DEBUG(("FORWARDING: %.*s %.*s", (int) hm->method.len, hm->method.ptr,(int) hm->uri.len, hm->uri.ptr));

forward_request函数就结束了。

接下来看下后端的事件处理函数fn2

判断是否收到MG_EV_READ事件,当有从套接字socket接收到数据时,就会发送MG_EV_READ事件。

然后使用mg_send函数将所有来自后端服务器的数据,转发到客户端。并调用mg_iobuf_del函数将接收缓冲区的数据清空。

  struct mg_connection *c2 = fn_data;if (ev == MG_EV_READ) {// All incoming data from the backend, forward to the clientif (c2 != NULL) mg_send(c2, c->recv.buf, c->recv.len);mg_iobuf_del(&c->recv, 0, c->recv.len);}

最后判断是否收到MG_EV_CLOSE事件,当客户端与代理的连接关闭后,会发送MG_EV_CLOSE事件通知关闭与后端服务器的连接。关闭时清空c2->fn_data

  } else if (ev == MG_EV_CLOSE) {if (c2 != NULL) c2->fn_data = NULL;}

http-reverse-proxy 的示例程序代码就都解析完了,下面实际运行一下 http-reverse-proxy 程序。

打开示例程序,编译并运行:

pi@raspberrypi:~ $ cd Desktop/study/mongoose/examples/http-reverse-proxy/
pi@raspberrypi:~/Desktop/study/mongoose/examples/http-reverse-proxy $ make clean all
rm -rf example *.o *.dSYM *.gcov *.gcno *.gcda *.obj *.exe *.ilk *.pdb
cc ../../mongoose.c -I../.. -W -Wall -DMG_IO_SIZE=128  -o example main.c
./example 
6c5a6 3 mongoose.c:3496:mg_listen       1 0x4 http://localhost:8000

代理已经启动了,接下来我们使用curl作为客户端来访问这个代理:

pi@raspberrypi:~ $ curl http://localhost:8000
<html><head></head><body><header>
<title>http://info.cern.ch</title>
</header><h1>http://info.cern.ch - home of the first website</h1>
<p>From here you can:</p>
<ul>
<li><a href="http://info.cern.ch/hypertext/WWW/TheProject.html">Browse the first website</a></li>
<li><a href="http://line-mode.cern.ch/www/hypertext/WWW/TheProject.html">Browse the first website using the line-mode browser simulator</a></li>
<li><a href="http://home.web.cern.ch/topics/birth-web">Learn about the birth of the web</a></li>
<li><a href="http://home.web.cern.ch/about">Learn about CERN, the physics laboratory where the web was born</a></li>
</ul>
</body></html>

可以看到访问成功,获取到了网页原码。

再回头看 http-reverse-proxy 程序的日志:

pi@raspberrypi:~/Desktop/study/mongoose/examples/http-reverse-proxy $ make clean all
rm -rf example *.o *.dSYM *.gcov *.gcno *.gcda *.obj *.exe *.ilk *.pdb
cc ../../mongoose.c -I../.. -W -Wall -DMG_IO_SIZE=128  -o example main.c
./example 
6c5a6 3 mongoose.c:3496:mg_listen       1 0x4 http://localhost:8000
81cc5 3 mongoose.c:4388:accept_conn     2 0x5 accepted 7f000001.39110 -> 7f000001.8000
81cc5 3 mongoose.c:4244:read_conn       2 0x5 snd 0/0 rcv 0/128 n=78 err=0
81cc6 3 mongoose.c:3473:mg_connect      3 0xffffffff http://info.cern.ch
81cc6 3 mongoose.c:3473:mg_connect      4 0xffffffff udp://8.8.8.8:53
81cc6 3 mongoose.c:4116:mg_send         4 0x6 0:0 30 err 0
81cc6 3 main.c:36:forward_request       FORWARDING: GET /
81ce8 3 mongoose.c:4244:read_conn       4 0x6 snd 0/0 rcv 0/128 n=70 err=9
81ce8 3 mongoose.c:278:dns_cb           3 webafs706.cern.ch is 188.184.21.108
81ce8 3 mongoose.c:4330:mg_connect_reso 3 0x7 -> bcb8156c:80 pend
81dcf 3 mongoose.c:4255:write_conn      3 0x7 snd 76/128 rcv 0/0 n=76 err=115
81dcf 2 mongoose.c:4075:iolog           
-- 3 192.168.1.40:42096 -> 188.184.21.108:80  76
0000   47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a   GET / HTTP/1.1..
0010   48 6f 73 74 3a 20 69 6e 66 6f 2e 63 65 72 6e 2e   Host: info.cern.
0020   63 68 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20   ch..User-Agent: 
0030   63 75 72 6c 2f 37 2e 36 34 2e 30 0d 0a 41 63 63   curl/7.64.0..Acc
0040   65 70 74 3a 20 2a 2f 2a 0d 0a 0d 0a               ept: */*....    
81eac 3 mongoose.c:4244:read_conn       3 0x7 snd 0/128 rcv 0/128 n=128 err=115
81eac 2 mongoose.c:4075:iolog           
-- 3 192.168.1.40:42096 <- 188.184.21.108:80  128
0000   48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d   HTTP/1.1 200 OK.
0010   0a 44 61 74 65 3a 20 53 61 74 2c 20 31 39 20 4e   .Date: Sat, 19 N
0020   6f 76 20 32 30 32 32 20 31 30 3a 32 37 3a 34 34   ov 2022 10:27:44
0030   20 47 4d 54 0d 0a 53 65 72 76 65 72 3a 20 41 70    GMT..Server: Ap
0040   61 63 68 65 0d 0a 4c 61 73 74 2d 4d 6f 64 69 66   ache..Last-Modif
0050   69 65 64 3a 20 57 65 64 2c 20 30 35 20 46 65 62   ied: Wed, 05 Feb
0060   20 32 30 31 34 20 31 36 3a 30 30 3a 33 31 20 47    2014 16:00:31 G
0070   4d 54 0d 0a 45 54 61 67 3a 20 22 32 38 36 2d 34   MT..ETag: "286-4
81ead 3 mongoose.c:4244:read_conn       3 0x7 snd 0/128 rcv 0/128 n=128 err=115
81ead 2 mongoose.c:4075:iolog           
-- 3 192.168.1.40:42096 <- 188.184.21.108:80  128
0000   66 31 61 61 64 62 33 31 30 35 63 30 22 0d 0a 41   f1aadb3105c0"..A
0010   63 63 65 70 74 2d 52 61 6e 67 65 73 3a 20 62 79   ccept-Ranges: by
0020   74 65 73 0d 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e   tes..Content-Len
0030   67 74 68 3a 20 36 34 36 0d 0a 43 6f 6e 6e 65 63   gth: 646..Connec
0040   74 69 6f 6e 3a 20 63 6c 6f 73 65 0d 0a 43 6f 6e   tion: close..Con
0050   74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f   tent-Type: text/
0060   68 74 6d 6c 0d 0a 0d 0a 3c 68 74 6d 6c 3e 3c 68   html....<html><h
0070   65 61 64 3e 3c 2f 68 65 61 64 3e 3c 62 6f 64 79   ead></head><body
81ead 3 mongoose.c:4255:write_conn      2 0x5 snd 256/256 rcv 0/128 n=256 err=115
81ead 3 mongoose.c:4244:read_conn       3 0x7 snd 0/128 rcv 0/128 n=128 err=115
81ead 2 mongoose.c:4075:iolog           
-- 3 192.168.1.40:42096 <- 188.184.21.108:80  128
0000   3e 3c 68 65 61 64 65 72 3e 0a 3c 74 69 74 6c 65   ><header>.<title
0010   3e 68 74 74 70 3a 2f 2f 69 6e 66 6f 2e 63 65 72   >http://info.cer
0020   6e 2e 63 68 3c 2f 74 69 74 6c 65 3e 0a 3c 2f 68   n.ch</title>.</h
0030   65 61 64 65 72 3e 0a 0a 3c 68 31 3e 68 74 74 70   eader>..<h1>http
0040   3a 2f 2f 69 6e 66 6f 2e 63 65 72 6e 2e 63 68 20   ://info.cern.ch 
0050   2d 20 68 6f 6d 65 20 6f 66 20 74 68 65 20 66 69   - home of the fi
0060   72 73 74 20 77 65 62 73 69 74 65 3c 2f 68 31 3e   rst website</h1>
0070   0a 3c 70 3e 46 72 6f 6d 20 68 65 72 65 20 79 6f   .<p>From here yo
81ead 3 mongoose.c:4244:read_conn       3 0x7 snd 0/128 rcv 0/128 n=128 err=115
81ead 2 mongoose.c:4075:iolog           
-- 3 192.168.1.40:42096 <- 188.184.21.108:80  128
0000   75 20 63 61 6e 3a 3c 2f 70 3e 0a 3c 75 6c 3e 0a   u can:</p>.<ul>.
0010   3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 68 74 74   <li><a href="htt
0020   70 3a 2f 2f 69 6e 66 6f 2e 63 65 72 6e 2e 63 68   p://info.cern.ch
0030   2f 68 79 70 65 72 74 65 78 74 2f 57 57 57 2f 54   /hypertext/WWW/T
0040   68 65 50 72 6f 6a 65 63 74 2e 68 74 6d 6c 22 3e   heProject.html">
0050   42 72 6f 77 73 65 20 74 68 65 20 66 69 72 73 74   Browse the first
0060   20 77 65 62 73 69 74 65 3c 2f 61 3e 3c 2f 6c 69    website</a></li
0070   3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 68   >.<li><a href="h
81ead 3 mongoose.c:4255:write_conn      2 0x5 snd 256/256 rcv 0/128 n=256 err=115
81ead 3 mongoose.c:4244:read_conn       3 0x7 snd 0/128 rcv 0/128 n=128 err=115
81ead 2 mongoose.c:4075:iolog           
-- 3 192.168.1.40:42096 <- 188.184.21.108:80  128
0000   74 74 70 3a 2f 2f 6c 69 6e 65 2d 6d 6f 64 65 2e   ttp://line-mode.
0010   63 65 72 6e 2e 63 68 2f 77 77 77 2f 68 79 70 65   cern.ch/www/hype
0020   72 74 65 78 74 2f 57 57 57 2f 54 68 65 50 72 6f   rtext/WWW/ThePro
0030   6a 65 63 74 2e 68 74 6d 6c 22 3e 42 72 6f 77 73   ject.html">Brows
0040   65 20 74 68 65 20 66 69 72 73 74 20 77 65 62 73   e the first webs
0050   69 74 65 20 75 73 69 6e 67 20 74 68 65 20 6c 69   ite using the li
0060   6e 65 2d 6d 6f 64 65 20 62 72 6f 77 73 65 72 20   ne-mode browser 
0070   73 69 6d 75 6c 61 74 6f 72 3c 2f 61 3e 3c 2f 6c   simulator</a></l
81ead 3 mongoose.c:4244:read_conn       3 0x7 snd 0/128 rcv 0/128 n=128 err=115
81ead 2 mongoose.c:4075:iolog           
-- 3 192.168.1.40:42096 <- 188.184.21.108:80  128
0000   69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22   i>.<li><a href="
0010   68 74 74 70 3a 2f 2f 68 6f 6d 65 2e 77 65 62 2e   http://home.web.
0020   63 65 72 6e 2e 63 68 2f 74 6f 70 69 63 73 2f 62   cern.ch/topics/b
0030   69 72 74 68 2d 77 65 62 22 3e 4c 65 61 72 6e 20   irth-web">Learn 
0040   61 62 6f 75 74 20 74 68 65 20 62 69 72 74 68 20   about the birth 
0050   6f 66 20 74 68 65 20 77 65 62 3c 2f 61 3e 3c 2f   of the web</a></
0060   6c 69 3e 0a 3c 6c 69 3e 3c 61 20 68 72 65 66 3d   li>.<li><a href=
0070   22 68 74 74 70 3a 2f 2f 68 6f 6d 65 2e 77 65 62   "http://home.web
81eae 3 mongoose.c:4255:write_conn      2 0x5 snd 256/256 rcv 0/128 n=256 err=115
81eae 3 mongoose.c:4244:read_conn       3 0x7 snd 0/128 rcv 0/128 n=110 err=115
81eae 2 mongoose.c:4075:iolog           
-- 3 192.168.1.40:42096 <- 188.184.21.108:80  110
0000   2e 63 65 72 6e 2e 63 68 2f 61 62 6f 75 74 22 3e   .cern.ch/about">
0010   4c 65 61 72 6e 20 61 62 6f 75 74 20 43 45 52 4e   Learn about CERN
0020   2c 20 74 68 65 20 70 68 79 73 69 63 73 20 6c 61   , the physics la
0030   62 6f 72 61 74 6f 72 79 20 77 68 65 72 65 20 74   boratory where t
0040   68 65 20 77 65 62 20 77 61 73 20 62 6f 72 6e 3c   he web was born<
0050   2f 61 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 3c   /a></li>.</ul>.<
0060   2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 0a         /body></html>.  
81eae 3 mongoose.c:4244:read_conn       3 0x7 snd 0/128 rcv 0/128 n=-1 err=115
81eae 3 mongoose.c:3450:mg_close_conn   3 0x7 closed
81eae 3 mongoose.c:4255:write_conn      2 0x5 snd 110/128 rcv 0/128 n=110 err=115
81eae 3 mongoose.c:4244:read_conn       2 0x5 snd 0/128 rcv 0/128 n=-1 err=115
81eae 3 mongoose.c:3450:mg_close_conn   2 0x5 closed

可以看到许多交互过程的信息都被打印了出来。

【参考资料】

examples/http-reverse-proxy

Documentation


本文链接:https://blog.csdn.net/u012028275/article/details/128160095

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-3829655.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

Python爬虫从入门到精通:(1)爬虫基础简介_Python涛哥

第一章&#xff0c;爬虫基础简介 爬虫概述 前戏 你是否在夜深人静的时候&#xff0c;想看一些会让你更睡不着的图片…你是否在考试或者面试前夕&#xff0c;想看一些具有针对性的题目和面试题…你是否想在杂乱的网络世界获取你想要的数据… 爬虫的价值 实际应用就业 什么…...

手机网页端对接企业微信:3网页授权登录

构造网页授权链接 如果企业需要在打开的网页里面携带用户的身份信息&#xff0c;第一步需要构造如下的链接来获取code参数&#xff1a; https://open.weixin.qq.com/connect/oauth2/authorize?appidCORPID&redirect_uriREDIRECT_URI&response_typecode&scopesnsa…...

提升Mac运行速度的十大小技巧,你用过几个?

经常听到小伙伴在抱怨PC电脑很慢&#xff0c;但是其实Mac电脑随着用的时间增长&#xff0c;运行速度也会越来越慢&#xff0c;那么造成Mac运行慢的原因有很多&#xff0c;可能是操作系统过时未更新&#xff0c;也可能是内存&#xff08;RAM&#xff09;不足&#xff0c;以下小编…...

2440: 涛哥爬楼梯(递推)

题目描述 英俊潇洒的涛哥喜欢爬楼梯锻炼身体&#xff0c;因为涛哥腿的长度有限&#xff0c;上楼时一次能跨的台阶有三种&#xff0c;1个台阶或2个台阶或3个台阶&#xff0c;现在给出n个台阶&#xff0c;问一共有几种爬楼梯的方法&#xff1f; 输入 一行&#xff0c;一个整数…...

C语言菜鸟编程笔记

1.scanf()后使用gets()函数注意事项 在gets函数前面加一条语句 fflush(stdin);就OK了&#xff0c;因为scanf函数输入时&#xff0c;它不读取换行符&#xff0c;所以在stdin中会把换行符留在里面&#xff0c;因此到了gets的时候就不用输入读取完这个换行符就结束了 2.浮点数计…...

十大自动化软件测试工具

我们正处在一个到处都是自动化的时代&#xff01;就在不久前&#xff0c;Sepharim Research的首席研究官Bob Egan谈到了移动安全问题。他就2016年企业移动趋势发表了声明:“当下的桌面系统&#xff08;生态&#xff09;已不再是单纯的电脑桌面&#xff0c;而是适合当下的各种体…...

Linux学习日记1-主机规划和磁盘分区

来自百度百科 Linux创始人&#xff1a; 林纳斯托瓦兹 林纳斯本纳第克特托瓦兹&#xff08;Linus Benedict Torvalds, 1969年~ &#xff09;&#xff0c;著名的电脑程序员。Linux内核的发明人及该计划的合作者。 一、各硬件配置在linux中的文件名称 所有的装置在linux看来都…...

权威可信 | 华为云云测通过中国电子技术标准院软件测试工具能力评价

摘要&#xff1a;近期&#xff0c;华为云计算技术有限公司 华为云云测&#xff08;CloudTest&#xff09;通过了中国电子技术标准化研究院的软件测试工具能力评价。本文分享自华为云社区《华为云云测通过中国电子技术标准院软件测试工具能力评价》&#xff0c;作者&#xff1a;…...

Python爬虫从入门到精通:(18)多任务_Python涛哥

多任务 上节课我们用协程写了一段代码&#xff0c;一个任务对象的实现。网址&#xff1a;协程 那么多任务该怎么实现呢&#xff1f; 我们先来看下下面这段代码&#xff1a; import time import asyncioasync def get_request(url):print(正在请求的url&#xff1a;, url)ti…...

跟涛哥一起学嵌入式 第02集:工作还是考研?

大家好&#xff0c;我是涛哥&#xff0c;今天我们聊聊第一个话题&#xff1a;工作还是考研。 工作与考研&#xff0c;是每个大三大四学生都要去纠结一下的问题&#xff0c;也是一个很难做抉择的话题。对自己的现状不满意&#xff0c;蹉跎了岁月&#xff0c;感觉自己学得不够多&…...

Linux用户管理基本配置命令运用1

小记一篇&#xff0c;方便日后翻阅 操作环境&#xff1a;Ubuntu 21.10 desktop shell版本&#xff1a;Xshell 目录一. 要求——添加单一用户与管理二. 前言三. 操作流程一. 要求——添加单一用户与管理 添加cs1和cs2两个普通用户修改两个账户的用户标识符为1100和1101修改两个…...

Conv2Former

又发现了一个说比Transformer好的,通过充分利用卷积探索一种更高效的编码空域特征的方式&#xff1a;通过组合ConvNet与ViT的设计理念&#xff0c;本文利用卷积调制操作对自注意力进行了简化&#xff0c;进而构建了一种新的ConvNet架构Conv2Former超简Transformer风格ConvNet&a…...

跟涛哥一起学嵌入式 第03集:嵌入式要从u-boot移植学起?

大家好&#xff0c;我是涛哥&#xff0c;欢迎阅读《跟涛哥一起学嵌入式》第3集。俄罗斯仲夏夜&#xff0c;世界杯依旧如火如萘。球场上&#xff0c;夕阳下&#xff0c;梅西没落的身影、C罗的黯淡离场&#xff0c;并没有打击大家太多的热情。战火依旧&#xff0c;老兵不死&#…...

【Python面试500强大厂系列】【必会:map()函数+列表推导式】

问题描述&#xff1a; 列表[1,2,3,4,5]&#xff0c;请使用map()函数输出[1,8,27,64,125]&#xff0c;并使用列表推导式从输出中提取出大于50的数&#xff0c;最终输出[64,125] 知识要点&#xff1a; map()函数功能&#xff1a;是Python内置函数&#xff0c;根据提供的函数对…...

新课“杀青”丨千锋涛哥HarmonyOS版锋迷商城项目大结局,学完挑战大厂

满鲜花的世界到底在哪里 如果它真的存在那么我一定会去 我想在那里最高的山峰矗立 不在乎它是不是悬崖峭壁 用力学着努力热爱哪怕肝脑涂地 不求任何人满意只要对得起自己 关于理想我从来没选择放弃 即使在灰头土脸的日子里 向前跑 迎着困难和嘲笑 生命的广阔不历经磨难…...

读书笔记:跟涛哥一起学嵌入式_note_3

目录 指定初始化 数组 switch-case 结构体 举例 container_of 宏 跟涛哥一起学嵌入式:https://zhuanlan.zhihu.com/wanglitao 指定初始化 数组 标准 C 中 int a[10] {0,1,2,3,4,5,6,7,8}; C99 /GNU C 标准 int b[100] { [10] 1, [30] 2}; int b[100] { [10 ... 3…...

读者:涛哥,用Python怎么赚钱啊?

大家好&#xff0c;我是涛哥。前些天读者群以及一些读者都说&#xff0c;学了Python有啥用&#xff0c;怎么赚钱变现呢&#xff1f;今天这篇文章就来给大家讲讲一些常见的变现方法。首先&#xff0c;如果你想让自己的技术变现&#xff0c;你必须具备以下两个条件技术扎实会营销…...

正则匹配日文

匹配日文1、[ぁ-んァ-ヶ]2、[\x{3040}-\x{309F}\x{30A0}-\x{30FF}\x{31F0}-\x{31FF}]转载于:https://www.cnblogs.com/gggzly/p/5926129.html...

第十一章作业

...

软件测试工具

软件测试工具是通过一些工具能够使软件的一些简单问题直观的显示在读者的面前&#xff0c;这样能使测试人员更好的找出软件错误的所在。软件测试工具分为自动化软件测试工具和测试管理工具。软件测试工具存在的价值是为了提高测试效率&#xff0c;用软件来代替一些人工输入。测…...

潦草字体在线识别_潦草字体在线识别_遇到好看的字体?不会识别?教你如何快速识别字体...

很多人都会因为自己不同的需求而想要知道有些字体到底是什么字体。学生会因为一些字很有特色&#xff0c;为之所吸引&#xff0c;想要去查找。设计师会因为客户的需求&#xff0c;从而要想尽办法去找到字体。有字体爱好的人会因为看到好的字体想要而去寻找收藏。还有很多是其他…...

学 Python 编程,关注涛哥聊Python!

戳蓝字 "涛哥聊Python" 进行关注关于涛哥涛哥做过PM&#xff0c;技术负责人&#xff0c;工具控&#xff0c;效率工作者&#xff0c;毕业一年靠自己在市中心购入上百万的房产。喜欢读书&#xff0c;折腾记录有意思的东西 &#xff0c;热爱分享。主要分享 Web开发&…...

大型综合大数据实战项目课程分享——涛哥出品(重磅OFFER杀手)

《Titan大型综合数据运营系统》 这套课程&#xff0c;乃涛哥呕心沥血之作&#xff0c;分享给有缘人&#xff01; 299的课程&#xff0c;价值实在远超价格的10倍以上&#xff0c;得之者&#xff0c;幸&#xff01; B站上有老的公开版&#xff1b; 不过B站老版本的架构、设计、…...

minecraft服务器搭建教程_MC原版服务器搭建教程

前言本教程适用于有自己的服务器并希望和好友进行原版MC游戏的人使用(正版盗版通用)本教程完成后将建立一个完全纯净&#xff0c;无法添加任何mod的服务器&#xff0c;请酌情阅读准备一枚可以正常访问的服务器本教程使用腾讯云主机进行演示官方提供的服务器jar别忘了安装java哦…...

WinHex(三)

目录 一、新建简单卷 二、MBR作用与结构 一、新建简单卷 1.右键点击刚刚新建的虚拟磁盘&#xff0c;选择新建简单卷。我新建了两个一个是NTFS&#xff0c;一个是FAT32 2.我们在刚刚新建的虚拟磁盘中放入一张图片&#xff0c;打开WinHex,点击“打开磁盘”选项&#xff0c;打…...

涛哥的Python脚本工具箱之生成带Logo的二维码

近期须要在二维码上加Logo&#xff0c;网上没有找到好用的&#xff0c;于是自己用python写了一个。须要安装qrcode&#xff0c;PIL库 二维码简称 QR Code&#xff08;Quick Response Code&#xff09;&#xff0c;学名为高速响应矩阵码&#xff0c;是二维条码的一种。由日本的 …...

软件测试(测试开发之测试工具开发1——helloworld)

这期我们来学习下&#xff0c;测试工具的开发。 在我们实际的测试工作中&#xff0c;经常会写一些脚本&#xff0c;来辅助测试。比如测试数据的制造&#xff0c;测试场景的制造等等。可能你写的脚本&#xff0c;很方便&#xff0c;可以推广给你的同事或者朋友。但是他们看不懂…...

linux给用户user1设置密码,Linux用户管理之useradd、passwd命令讲解

在上一章中&#xff0c;我们了解到了Linux用户的每个配置文件的内容及作用&#xff0c;以及通过手动修改用户配置文件来手动添加一个用户。但是在实际工作过程中&#xff0c;我们并不是通过手动修改配置来添加用户&#xff0c;而是通过用户管理的各种命令来管理用户。一、添加用…...

php 读取 日文文件名,PHP文件上传-处理阿拉伯文/中文/日文文件名

我有一个系统,用户在其中上载文档(pdf,word)等.问题是,外国用户正在以阿拉伯文,中文,日文上载文件名,并且该系统能够处理它们,因此将其添加到数据库中.出现问题的地方是尝试使用php下载文件&#xff1a;$result mysql_query($query) or die(Error, query failed);list($filena…...

怎么样做好自己的服务器防御

怎么样做好自己的服务器防御 服务器安全设置 我们处理的是将网站提示错误信息在服务器安全设置隐藏处理&#xff0c;让用户浏览下产生错误代码不显示&#xff0c;这还没完&#xff0c;还需把错误信息记录到错误日志方便管理员查阅。PHP中设置 error_reporting(0) 即可隐藏所有错…...

PaddleOCR识别繁体中文和其他国家文字

关于PaddleOCR识别简体中文的介绍大家可以看公众号文章,MFC Demo查看知识星球链接https://t.zsxq.com/6M3j623 即可。 这里简单介绍一下如何识别繁体中文和其他国家文字: 原来识别简体中文的模型直接拿来识别繁体中文效果并不好,我已经测试过了,就不贴图了。 识别繁体中文…...

第六章 Ambari二次开发之自定义Flink服务 -- metainfo.xml配置文件详解

1、公共框架部分 注意&#xff1a;需要在 内来描述自定义服务相关信息 <?xml version"1.0"?> <metainfo><schemaVersion>2.0</schemaVersion><services><!-->自定义服务相关信息<--></services> </metainfo&…...

Python爬虫从入门到精通:(38)分布式爬虫_Python涛哥

什么是分布式爬虫: 默认情况下&#xff0c;我们使用scrapy框架进行爬虫时使用的是单机爬虫&#xff0c;就是说它只能在一台电脑上运行&#xff0c;因为爬虫调度器当中的队列queue去重和set集合都只能在本机上创建的&#xff0c;其他电脑无法访问另外一台电脑上的内存和内容。分…...

涛哥、星哥即段海涛、赵星本人已不在属于传智播客

自2016年涛哥离职后2年内一直打着涛哥、星哥名义宣传大数据课程及相关内容讲解视频宣传&#xff0c;自2018年11月起涛哥、星哥联合创办了多易教育&#xff0c;联合很多企业牛人一起专业做大数据培训&#xff0c;想了解的涛粉儿、星粉儿、多易粉儿都聚集过来。 讲师组成主要有3类…...

做死涛哥继续死磕!

看过我微信视频号的同学都知道&#xff0c;我拍摄微信短视频主要是三个步奏。写脚本拍视频做后期因为视频脚本简短每次都零碎的记录&#xff0c;也没有给大家看到&#xff0c;每次都浪费掉了&#xff0c;同时自己也要写公众号内容&#xff0c;所以打算把视频脚本结合公众号输出…...

卧槽!终于知道涛哥我为啥赚不到钱了

前几天和一个Java公众号头部大佬D在微信上面聊天&#xff0c;大佬说周末有时间约下一起聊聊&#xff0c;向我请教下&#xff0c;我以为只是一句客套话也没在意&#xff0c;因为一来他的公众号比我做的好&#xff0c;粉丝量比我多很多&#xff0c;其次他也有团队合作。结果周末了…...

UML和模式应用~迭代、进化和敏捷

什么是敏捷方法及其观点 敏捷开发&#xff08;agile development&#xff09;方法通常应用时间定量的迭代和进化式开发、使用自适应计划、提倡增量交付并包含其他提倡敏捷性&#xff08;快速和灵活的响应变更&#xff09;的价值和实践。 敏捷宣言 个体和迭代&#xff0c;超越…...

基于Nacos的注册中心与配置中心

基于Nacos的注册中心与配置中心 Nacos简介 概述 Nacos全称是动态命名和配置服务&#xff0c;Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos主要用于发现、配置和管理微服务。 什么是Nacos Nacos支持几乎所有主流类型的服务的发现、配置和…...

【项目管理】Java OCR实现图片文字识别

【项目管理】Java OCR实现图片文字识别1.项目前言1.1 项目需求1.2 OCR引擎选择1.3 Tess4j介绍2.项目实现2.1 项目搭建2.2 主要实现代码3.效果演示3.1 中文识别3.1.1 需要识别的图片3.1.2 识别过程3.1.3 识别结果3.1.4 总结3.2 英文识别3.2.1 需要识别的图片3.2.2 识别过程3.2.3…...

自从学会这个技巧,涛哥赚了10W+

今天标题有点那个啥&#xff0c;但是确实如此&#xff0c;今天我们主要谈谈分享这件事。这是个老生常谈的话题&#xff0c;因为这个话题我经常给身边的朋友说&#xff0c;不管是在付费微信群还是付费知识星球&#xff0c;我都提过不止一次了。但是呢&#xff1f;我发现除了少数…...

mysql主从复制、并行同步、半同步

复制源码编译的mysql到另一台服务器 [rootserver1 local]# cd /usr/local/ [rootserver1 local]# id mysql uid1001(mysql) gid1001(mysql) groups1001(mysql) [rootserver1 local]# scp -rp mysql server2:/usr/local [rootserver1 init.d]# scp mysqld server2:/etc/init.d/…...

这几款10款主流的软件测试工具,你都用过吗?

随着软件快速交付需求的增长&#xff0c;越来越多的企业开始通过DevOps方法加速软件开发速度但这样的话&#xff0c;有时候就无法保证质量&#xff0c;所以今天小墨就来给大家介绍10款主流的软件测试工具&#xff0c;看好啦。 1、UFT / QTP UFT&#xff0c;前身为Quick Test …...

我是「涛哥聊Python」彭涛,很高兴认识你

朋友们&#xff0c;大家好&#xff0c;我叫彭涛&#xff0c;网名 sitin&#xff0c;终身学习者一枚&#xff0c;平时爱在圈子里面分享一些有趣的东西&#xff0c;江湖人称「涛哥」。程序员一枚&#xff0c;喜欢Python&Golang等WEB开发技术、Linux 容器化等相关技术爱好者。…...

手把手教你开发SpringBoot starter

前言&#xff1a; SpringBoot在java中的地位简直是至尊的存在&#xff0c;非常的好用。Spring Boot有四大神器&#xff0c;分别是auto-configuration、starters、cli、actuator&#xff0c;我们用各种中间件的话就是各种starter 对应版本依赖引用&#xff0c;然后就是配置属性文…...

Html js获取文本框的内容,并请求服务器

<input name"phone" id"phone" placeholder"请输入手机号" style"height:28px; padding-left:10px;"><button onclick"btn()" class"btn btn-primary">添加</button>var phone ; // 定义全局变…...

最全软件测试工具大全

软件测试类工具大全第一部分&#xff0c;现列举如下&#xff0c;并非百分百全面&#xff0c;仅供测试同行参考&#xff1a; 功能自动化测试工具 厂商 工具名称 * Mercury Winrunner 备注&#xff1a;世界上最古老、经典的测试工具厂商Mercury Interactive公司(2004年改名Mercur…...

Jsp 学习笔记

代码可参考: Demo地址 1 入门 1.1 环境搭建 创建moven项目目录结构如下 1.2 依赖配置 <!-- 依赖 --> <dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>…...

涛哥,我ssh老大,级联技术经理

2019独角兽企业重金招聘Python工程师标准>>> session的安全有两层意思: 1> 对最终客户来说, 不会因为session的share和造成混乱, 使end-user的信息泄漏以及其他安全问题 2> 对系统本身来说, 不会因为有hacker通过模拟sessionid和cookie来获取server信任进而进…...

跟涛哥一起学嵌入式 -- 第01集:say you say me

大家好&#xff0c;此时此刻&#xff0c;2018俄罗斯世界杯已暂告一段落&#xff0c;16强已经产生&#xff0c;卫冕冠军德国队提早回家&#xff0c;阿根廷起死回生&#xff0c;C罗一个30多高龄的年纪&#xff0c;还在坚持健身&#xff0c;一身腱子肉&#xff0c;在球场上挥洒青春…...

PotPlayer没有声音解决方案

PotPlayer没有声音解决方案PotPlayer没有声音解决方案1.查看是否将软件设置静音&#xff1a;在该窗口按**m**键或者按 **ctrlaltm**检查是否设置成静音。2. 使用设置界面检查是否静音&#xff1a;点击设置按钮3. 故障错误&#xff1a;重新初始化。在播放界面按f5&#xff0c;调…...

【直播笔记0505】涛哥的Mysql索引原理深入剖析

涛哥的Mysql索引原理深入剖析1. 索引到底是什么东西&#xff1f;2. 建立索引的方式3. 索引的类型&#xff1a;4. 数据结构选型4.1 二叉查找树4.1 平衡二叉树&#xff08;AVL树&#xff09;B树B树Hash索引存储引擎5.索引的使用以及创建索引的使用原则失效的场景1.Mysql索引的本质…...

python Task如何在协程调用

python Task如何在协程调用 说明 1、Tasks用于并发调度协程&#xff0c;通过asyncio.create_task(协程对象)创建Task对象。 2、使协程能够加入事件循环&#xff0c;等待调度执行。 除使用asyncio.create_task()函数外&#xff0c;还可使用低级loop.create_task()或ensure_fu…...

【Linux】用户管理命令

往期内容&#xff1a; Linux常用指令合集 Linux文本编辑器 Linux软件包管理 Linux用户管理 Linux权限管理 文章目录用户配置文件用户信息文件路径&#xff1a; /etc/passwd影子文件路径&#xff1a;/etc/shadow组信息文件和组密码文件组信息文件/etc/group组密码文件/etc/…...

minecraft服务器搭建教程_Minecraft BE(基岩版)服务器搭建教程

Minecraft BE服务器搭建教程写在前面由于目前还在使用12年的MacBook Air&#xff0c;加上身边多数人会使用手机等移动设备玩游戏&#xff0c;所以决定搭建一台BE的服务器。请注意本教程适用于国际版的Minecraft BE&#xff0c;而非我的世界。本文转载自我的博客 https://blog.x…...

与涛哥交流】——【所感

背景&#xff1a; 因为时间管理小组开会交流的时候&#xff0c;发下我存在好多问题。 比如说&#xff1a;谈到上周计划的执行情况&#xff0c;我基本上都没有按照计划执行。 然后师姐就让我找涛哥聊聊&#xff0c;毕竟都是体育生&#xff0c;应该会有好多好的建议可以留给我。…...

Linux用户管理 (实验2)

实验报告 实验名称&#xff1a; Linux用户管理 实验目的&#xff1a; 1、 掌握用户管理的基本内容和原理&#xff1b; 2、 理解与用户管理有关的工具与命令的具体作用以及关键部分的内容&#xff1b; 3、从用户管理的角度初步理解系统安全管理的具体内容。 实验要求实验内…...

跟涛哥一起学嵌入式 14:Linux下的进程江湖

有人的地方&#xff0c;就有江湖 Linux进程也不例外 有进程的地方&#xff0c;也有江湖 那些年&#xff0c;奢望金盆洗手的江湖大佬们 按照武侠世界的套路&#xff1a;一旦一个高手决定金盆洗手、隐退江湖&#xff0c;往往下场会很惨、甚至引发整个武林动荡。比如衡山派的刘正…...

五大最佳自动化软件测试工具

最好的自动化软件测试工具 对测试自动化的依赖性增加导致大量自动化软件测试工具的出现&#xff0c;使得很难确定哪些是最好的。为了帮助您完成自动化工作&#xff0c;我们根据自己和他人的经验创建了五大最佳自动化软件测试工具列表。 1. Selenium Selenium可以说是web开发…...

安装vue devtools总是报错,使用命令行安装

最近遇到一个很头痛的东西 就是安装vue 调试扩展程序 遇到的很多问题 按照正常下载流程 首先应该是去github上下载vue-devtools-dev包&#xff0c; 1:npm install 2:npm run build 3 配置谷歌浏览器 修改vue-devtools->shells->chrome文件夹下的mainifest.json 中的p…...

oracle获取汉字拼音

CREATE OR REPLACE FUNCTION fn_getpy (p_str IN VARCHAR2,p_flag NUMBER DEFAULT NULL)RETURN VARCHAR2 ASv_compare VARCHAR2 (4);v_return VARCHAR2 (4000);v_length INT : 0;v_substr VARCHAR2 (4);FUNCTION fn_nlssort (p_word IN VARCHAR2)RETURN VA...

删库跑路算什么?这个才是更高端的大杀器!

...

项目四算

很久没有写博客了&#xff0c;当我再次写博客的时候&#xff0c;我的身份早已不是研发。————于2019年2月21日感慨。 项目四算&#xff1a;概算、预算、核算、决算 概算&#xff1a;要花多少钱、要赚多少钱&#xff1b; 预算&#xff1a;能花多少钱、能赚多少钱&#xff1b;…...

算力单位

1Flops/s简写为T/s&#xff0c;是数据流量的计数单位&#xff0c;意思是“1万亿次浮点指令每秒”&#xff0c;它是衡量一个电脑计算能力的标准。 1TFlops1024GFlowps&#xff0c;即1T1024G。 各种FLOPS的含义&#xff1a; 1&#xff09; 一个MFLOPS&#xff08;megaFLOPS&…...

java冷知识:代码行数多少才算大项目?

注&#xff1a;以下摘自&#xff1a;《软件工程概论》 郑人杰、殷人民编 java项目的大小衡量标准&#xff08;以代码行作为计量标准的&#xff09;&#xff1a; 微型&#xff1a;只是一个人&#xff0c;甚至是半日工作在几天内完成的软件&#xff1b; 小型&#xff1a;一个人…...

济南月薪一万是什么水平?

在济南&#xff0c;月薪一万什么水平&#xff0c;我们公司一把手去年工资刚到1万&#xff0c;因为天天和他打交道&#xff0c;所以比较清楚他什么水平&#xff0c;典型的一人吃饱全家不饿&#xff0c;不过日子过得还算凑合&#xff0c;有房&#xff0c;单位配的车子&#xff0c…...

【算力理解】DMIPS、FLOPS区别和联系

DMIPS、FLOPS区别和联系1. 什么是DMIPS?2. 什么是FLOPS?3. 怎么评测DMIPS?3.1 用Dhrystone可以实测DMIP3.2 通过公式计算DMIPS4 怎么计算FLOPS?5. DMIPS和FLOPS的关系1. 什么是DMIPS? DMIPS:Dhrystone Million Instructions executed Per Second &#xff1a;主要用于测整…...

一文详解算力

一文详解算力算力&#xff08;也称哈希率&#xff09;是比特币网络处理能力的度量单位。即为计算机&#xff08;CPU&#xff09;计算哈希函数输出的速度。比特币网络必须为了安全目的而进行密集的数学和加密相关操作。 例如&#xff0c;当网络达到 10Th/s 的哈希率时&#xff0…...

第二证券|11月十大牛股出炉 特一药业163%涨幅问鼎榜首

到11月30日收盘&#xff0c;11月份十大牛股中7只个股涨幅超过100%&#xff0c;涨幅最小的也有87%&#xff0c;均匀涨幅较上个月有所扩大。 11月&#xff0c;A股出现震荡爬高态势&#xff0c;到11月30日收盘&#xff0c;上证指数月内涨8.91%&#xff0c;深证成指涨6.84%&#xf…...

cpu算力

cpu算力 起源 偶尔翻到一篇知乎&#xff0c;对各种跑分来了兴致 2020.12.1 刚刚11代intel、AMD Zen3、苹果M1都已经过去一阵&#xff0c;NVIDA的3系列显卡和RadeonRX显卡热火朝天。 我也来凑凑热闹&#xff0c;看看各个厂商最强旗舰都是啥来头。 背景 据木头龙所说&#xf…...

芯片算力

处理器运算能力单位 计算机芯片的计算能力分为四个方面 整数运算&#xff0c;浮点计算&#xff0c;字符和字符串处理&#xff0c;寻址能力和IO FLOPS FLOPS是Floating-point Operations Per Second每秒所执行的浮点运算次数的英文缩写。它是一个衡量芯片计算能力的量&#x…...

算力是什么

目录一、算力是什么&#xff1f;二、POW三、单位四、处理器运算能力单位TOPSGOPSMOPS一、算力是什么&#xff1f; 算力&#xff08;也称哈希率&#xff09;是运算处理能力的一个度量单位。 即为计算机&#xff08;CPU&#xff09;计算哈希函数输出的速度。bit币为了安全目的而…...

java毕业设计毕业生就业去向登记管理系统mybatis+源码+调试部署+系统+数据库+lw

java毕业设计毕业生就业去向登记管理系统mybatis源码调试部署系统数据库lw java毕业设计毕业生就业去向登记管理系统mybatis源码调试部署系统数据库lw本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;idea eclipse…...

使用免费软件Emu8086学习汇编

这里写自定义目录标题使用EMU8086学习汇编使用EMU8086学习汇编 软件下载地址 https://en.softonic.com/download/emu8086-microprocessor-emulator/windows/post-download?sl1 运行界面 汇编程序 assume cs: codesg codesg segment mov ax, 0123h mov bx, 4321h add ax, bx…...

在emu8086中学习汇编语言加减法程序

1 自带示例 先看自带示例&#xff1b; 执行完 09 行如下&#xff1b;bl, al&#xff0c;如你所想&#xff1b; 执行完 12 行&#xff0c;bl 被减去1&#xff0c;结果如你所想&#xff1b; 接下来按二进制输出结果&#xff0c;如下&#xff1b; 十进制14的二进制为1110&#xf…...

通过一段代码发现 emu8086 和 DOSBox 的一点区别

大家学习汇编语言的时候都需要一个能够编译执行的IDE。有的人用的win7或者更老的系统&#xff0c;就可以直接使用debug。而比较新的系统没有debug&#xff0c;就需要一个模拟器了&#xff0c;无论是DOSBox还是emu8086&#xff0c;都能满足我们学习的基本需求。 但是&#xff0…...

Proteus与emu8086实现流水灯联调

Poteus与emu8086联调实现流水灯 这个大家看着玩玩就行了&#xff0c;其实就是自己的笔记吧 虽然是老师留的作业&#xff0c;毕竟调试了那么久&#xff0c;写一下吧&#xff0c; 这一部分或许是我要写的很多的地方了。调试中会遇到各种各样奇奇怪怪的错误&#xff0c;有的别人…...

在 emu8086 中学习汇编In,Out指令

IN&#xff0c;从端口输入&#xff1b; OUT&#xff0c;输出到端口&#xff1b; IN AL,21H  从21H端口读取一字节数据到AL IN AX,21H  从端口地址21H读取1字节数据到AL&#xff0c;从端口地址22H读取1字节到AH OUT 21H,AL  将AL的值写入21H端口 OUT 21H,AX  将AX的值…...

在emu8086中学习汇编语言统计分数段个数程序

s1 segment stackdw 100h dup(?) top label word s1 ends s2 segment score dw 76,69,84,90,73,88,99,63,100,80,$ s6 dw 0,$ s7 dw 0,$ s8 dw 0,$ s9 dw 0,$ s10 dw 0,$ s2 ends s3 segmentassume cs:s3,ds:s2,ss:s3 main...

emu8086打印等腰三角形

emu8086软件下载&#xff1a;https://wwa.lanzoui.com/i2u73bi 三角形的打印可以借助emu8086.inc&#xff0c;这个库里有一些封装好的函数便于我们使用。比如GOTOXY可以让我们定位到屏幕上要显示字符的地方&#xff0c;然后通过PUTC来显示字符。 对于一个三角形&#xff0c;第…...

《EMU8086安装报告》

目 录 《EMU8086安装报告》 1 EMU8086总体介绍 2安装配置 2.1 安装 安装步骤如下&#xff1a; 2.2 示例代码使用 1 EMU8086总体介绍 EMU8086是一种学习汇编工具&#xff0c;它结合了一个原始编辑器、组译器、反组译器、具除错功能的软件模拟工具&#xff08;虚拟…...

vue项目运行后页面一片空白

找了很多文章&#xff0c;都不知道为什么 结果去控制台&#xff0c;找到了问题所在 多写了一个不存在的路由&#xff0c;把这个不存在的路由删掉&#xff0c;页面就能正常显示了 这说明了看控制台的重要性&#xff0c; 一定要对症下药&#xff0c;不要一遇到问题就上网搜索…...

vue打包后一片空白问题

一共两点&#xff0c;关键至极&#xff1a; 1、vue-cli3.0项目新建的vue.config.js文件中&#xff1a;publicPath:’./’ 2、src里边router.js路由配置里边默认模式是hash&#xff0c;如果你改成了history模式的话(我遇到的就是这个问题)&#xff0c;打开也会是一片空白。所以改…...

Rstudio打开文件一片空白

Rstudio打开文件一片空白 无论是打开任何文件&#xff0c;Rstudio一片空白。 解决方法 In Rstudio go to tools.select global options.select UTF-8&#xff0c;Apply&OK....

vue ui打开一片空白的问题解决

记录今天遇到的一个小问题 今天在命令窗口中使用vue ui命令调用脚手架的ui面板时&#xff0c;跳转浏览器后出现空白。直到昨天晚上用的都挺好&#xff0c;今天就不知道为什么出现这个问题。 没有任何地方报错&#xff0c;8000端口号也没被占用 我先是按网上的删除.vue-cli-ui文…...

Vue 做的项目在IE下面打开一片空白解决方法

Vue 做的项目在IE下面打开一片空白解决方法参考文章&#xff1a; &#xff08;1&#xff09;Vue 做的项目在IE下面打开一片空白解决方法 &#xff08;2&#xff09;https://www.cnblogs.com/silent007/p/10220507.html 备忘一下。...

python绘制的Svg图打开一片空白

当使用下面的代码画图的时候&#xff0c;生成的svg是一片空白plt.show() plt.savefig(myplot.svg, formatsvg) print("save t-sne graph") 参考了https://blog.csdn.net/jodie123456/article/details/107939337的解决方案 产生问题的原因是&#xff1a; 在 plt.sh…...

RStudio一片空白

装了R语言 &#xff0c;链接如下 再装了RStudio 发现打开RStudio一片空白 目录没有中文路径、也都将两个放在一个父目录里了。 后来我就去装R语言的bin文件夹下&#xff0c;启动R.exe 再启动RStudio&#xff0c;就报错the R session has a fatal error 啥的 参考了这个ht…...

Excel打开之后没有内容显示一片空白

打开一个有内容的excel表格&#xff0c;发现没有任何显示&#xff0c;一片空白 解决办法&#xff1a; 开始 — 运行 — regedit 修改HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command项默认值 原值&#xff1a; "C:\Program Files\Microsoft Office\Root\Offic…...

解决 vue 项目在 ie 下打开一片空白的问题

问题描述&#xff1a; vue项目运行后&#xff0c;在IE浏览器打开&#xff0c;页面为空白。 分析问题成因 Babel默认只转换新的JavaScript句法&#xff08;syntax&#xff09;&#xff0c;而不转换新的API&#xff0c;比如Iterator、Generator、Set、Maps、Proxy、Reflect、S…...

vue项目打包后一片空白

修改在config文件夹下面的index.js中build模块导出的路径&#xff0c;assetsPublicPath默认的是’/’&#xff0c;也就是根目录。而index.html和static在同一级目录下面&#xff0c;所以改为’./’另外在src里面router/index.js路由设置里边默认模式是hash&#xff0c;如果改成…...

php excel导出数据空白,为什么 PHPexecl 导出的表格下面是一片空白?

为什么 PHPexecl 导出的表格下面是一片空白&#xff1f;public function export_order_bill(){$objPHPExcel new PHPExcel();// Set the excel property$objPHPExcel->getProperties()->setCreator("wboll")->setLastModifiedBy("wboll")->se…...

vue项目打包之后,在服务器打开一片空白

方法一(不建议使用&#xff0c;有可能报错)&#xff1a; 1.1.打包成功后&#xff0c;在dist文件中的index.html中修改&#xff1a; 在两个的导入路径的前面加"." 这个方法也能改变我们npm run dev 之后&#xff0c;形成的网址 1.2.1在根目录下创建vue.config.js文件…...

webview显示一片空白

在Android7.0&#xff0c;第一个加载webview显示是完全没有问题的&#xff0c;但当点击webview内容进行二级页面跳转后&#xff0c;就会显示一片空白&#xff0c;查询了url是正常可以打开的&#xff0c;这就坑了&#xff01;&#xff01; 遇到问题&#xff0c;解决问题&#x…...

nginx php 访问空白,请问搭建的nginx + php + docker环境,为什么访问localhost一片空白?...

我通过docker安装了nginx和php的镜像docker pull php:7.0-fpmdocker pull nginx现在有如下文件php-web-server.confhttp { server { server_name phpdomain; root /app; listen 80; location / { root /app; try_files $uri /index.php;} location ~…...

vs2005 新建项目一片空白

最近在研究 workflow fundation ,但是在安装了他的extensions之后&#xff0c;发现VS2005 新建项目一片空白&#xff0c;除开workflow其他的项目模板全部丢失&#xff0c;新建项目对话框中空空如也。查阅资料后发现&#xff0c;可以通过 命令 devenv.exe /InstallVSTemplates 来…...

python运行空白_学习python曾经遇到的坑 一、JupyterLab点Launch后启动ie一片空白的解决方案...

一、win10下Anaconda Navigator (Anaconda3)中JupyterLab点Launch后启动ie一片空白的解决方案 我也不知道怎么原因&#xff0c;反正改成谷歌的浏览器就好了 Anaconda 下 JupyterLab 更改默认启动路径和默认浏览器 1.Jupyter 更改默认启动路径方法 输入jupyter notebook --gener…...

【精】alibaba-sentinel 管理控制台 啥都没有 ,一片空白解决。

1.首先看下配置对不对 cloud:nacos:discovery:server-addr: localhost:80sentinel:transport:dashboard: localhost:9000 #配置Sentinel dashboard地址#默认8719端口&#xff0c;如果被占用则自动从8719开始依次1扫描&#xff0c;直至找到被占用的端口port: 8719eager: true …...

一片空白

我也不知道为什么有那么多人看。 我只知道转载于:https://www.cnblogs.com/a-loud-name/p/6184771.html...

计算机在开机后显示器在显示桌面,电脑开机后显示屏一片空白

公告&#xff1a; 为响应国家净网行动&#xff0c;部分内容已经删除&#xff0c;感谢读者理解。话题&#xff1a;电脑开机后显示屏一片空白问题详情&#xff1a;就让表叔给我开下电脑看看 他说电脑一片空白 下午我去开单还是回答&#xff1a;右键点桌面空白处--排列图标--显示桌…...

php 一片空白,网页上一片空白什么都没有是怎么回事呀

class testController{function show(){$testModel new testModel();$data $testModel -> get();$testView new testView();$testView -> display($date);}}?><?php class testModel{function get(){return "hello world";}}?><?php class …...

thinkphp php7 空白,安装php7后 运行thinkphp框架的网站显示一片空白

之前是是用的很老的thinkphp框架3.0 在linux上安装php7后 运行发现显示一片空白打开线上调试模式 把debug设置为true 显示错误信息方便 调试define(APP_DEBUG, true);但是还是一片空白把runtime文件夹删掉重新运行也没用网上有人说是因为thinkphp3.0不支持php7 所以我去找t…...

HTML引入vue一片空白,Vue 在IE中一片空白,解决方案

这只企鹅完全可以代表我遇到这个BUG时候的心情。首先&#xff0c;明确一点&#xff0c;引起这个问题的原因有很多&#xff0c;不能一概而论。一、Vue-cli 3.0根据实践&#xff0c;Vue-cli 3.0默认支持ie系列的浏览器&#xff0c;在我使用vue ui 建立的新项目同样可以在IE系列的…...

android 动画 空白页,Android WebView打开网页一片空白的解决方法

问题描述&#xff1a;网页链接是Https链接网页链接在电脑的Chrome浏览器中打开正常网页链接在手机的Chrome浏览器中打开正常网页链接在IOS的App上打开正常网页链接在Android App中打开一片空白&#xff0c;没有任何提示问题原因试了很多方法&#xff0c;最后发现是Https的证书有…...

php 一片空白,解决运行PHP一片空白

今天手打了一个PHP页面&#xff0c;结果运行的时候一片空白&#xff0c;啥都没有&#xff0c;html部分也都被“消失”了&#xff0c;也没有错误提示&#xff0c;甚是不解。删掉PHP部分&#xff0c;html部分出来了&#xff0c;好的&#xff0c;那肯定是PHP部分出问题了。$ok tr…...

QT+OSG/osgEarth编译之五十三:osgWidget+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5工具库osgWidget)

目录 1、osgWidget介绍 2、文件下载 3、文件分析 4、pro文件 5、编译实践 1、osgWidget介绍...

谈谈需求分析规范化

福特汽车创始人 - 亨利福特的一句名言常常被人们作为反面案例引用&#xff1a;“如果听用户的&#xff0c;我们根本造不出汽车来&#xff0c;用户就是需要一匹快马。” 需求是一个项目的源头&#xff0c;也是项目成功的关键所在。而需求本身&#xff0c;是一个复杂的过程&#…...

精益生产制造的三要素,了解一下

由于许多生产制造业务在其整体运作中与提高效率的概念作斗争&#xff0c;许多业务发现自己正在寻求精益的方法。精益生产可以通过降低成本、增加利润、适当的库存管理等方式&#xff0c;轻松地帮助您的生产设施。 aps高级排产精益生产是一套旨在减少生产时间和成本&#xff0c;…...

【学习笔记】产品经理必备技能之竞品分析(下)用户体验五要素分析法 + 竞品分析报告

内容来自小破站《黑马程序员深圳中心 产品经理基础入门&#xff08;2021&#xff09;》复习自用 竞品分析——伴随产品经理职业生涯终生 【学习笔记】产品经理必备技能之竞品分析&#xff08;下&#xff09;用户体验五要素分析法 竞品分析报告5 用户体验五要素分析法5.1 用户体…...

需求分析中应该注意的问题

在做项目时&#xff0c;经常会碰到这样的事情. 客户向我们反映在和你们的工程师谈论需求时&#xff0c;他们总是满口答应没问题。可是&#xff0c;当他们做好以后&#xff0c;拿过来一看&#xff0c;根本就不是这么回事。而开发人员也在诉苦&#xff1a;用户什么都不懂&#xf…...

软件测试需求分析方法有哪些,一起来看看吧

目录 1.前言 1.1 什么是测试需求&#xff1f; 1.2 为什么要做测试需求&#xff1f; 2.测试需求分析方法 2.1 测试需求分析依据  2.2 测试需求架构划分 2.3 测试需求分析过程 3.总结 1.前言 1.1 什么是测试需求&#xff1f; 确切地讲&#xff0c;所谓的测试需求就是在项目中要…...

软件需求分析-需求开发-需求定义与需求捕获

需求开发C4需求定义一、任务二、五步法进行问题分析三、需求定义的产物与要素四、定义需求范围C5需求捕获一、需求捕获的策略二、需求捕获的主要方法三、记录工具C4需求定义 一、任务 确定项目的宏观需求&#xff0c;就是定义项目的业务需求&#xff0c;明确项目的目标和范围…...

Anntec ZKUXFT XT2 FGPA卡DPDK使用方法

1. 建议环境 CPU Architecture x86_64、aarch64 CPU MHz&#xff1a; 2000以上 Memory 每个node空闲内存超过2G 硬盘 剩余空间大于100M OS Ubuntu,centos,银河麒麟&#xff0c;UOS等Linux …...

需求分析和常见的需求问题解决

目录1 常见的需求问题1.1 需求不明确1.2 需求理解不一致1.3. 需求自身经常变动2 需求获取2.1 需求来源2.2 需求分类2.3 获取步骤3 需求要素3.1 角色、场景3.2 业务流程3.3 数据实体3.4 功能性需求3.5 非功能性需求4 案例&#xff1a;电商订单系统4.1 概述4.2 角色4.3 场景(用例…...

js中call函数理解

一直以来&#xff0c;对call函数都不是很理解&#xff0c;经常看到用&#xff0c;有时候把&#xff0c;觉得挺好理解的&#xff0c;有时候吧&#xff0c;又觉得摸不清头脑&#xff0c;最近在看d3,里面又遇到call,所以&#xff0c;还是得把这个问题理解透彻。现在把我的理解记录…...

JS中的 call( ) 方法

this总是指向调用某个方法的对象&#xff0c;但是使用call()和apply()方法时&#xff0c;就会改变this的指向。 call.(thisOject, arg1 ,arg2 ...) 我们单独说说call(),因为apply()和call差不多&#xff0c;只不过apply第二个参数必须传入的是一个数组&#xff0c;而call 第二…...

计算机语言中call,PLC编程入门:子程序调用指令CALL、FROM指令、TO指令

CALL指令描述&#xff1a;梯形图示例&#xff1a;由上面的示例程序可知&#xff0c;若X000为ON,则执行CALL跳转指令&#xff0c;将会到子程序P0中去执行&#xff0c;执行完子程序P0后&#xff0c;继续回到主程序中执行下个语句&#xff1b;同样&#xff0c;若果X001为ON&#x…...

MULTIPLE CALL TO SEGMENT

WARNING L15: MULTIPLE CALL TO SEGMENT 1、什么是Function Multiple Call Warning 关于这个问题Keil C 给出的解释如下&#xff1a; 简单来说&#xff0c;某一个函数被Main 函数调用的时候&#xff0c;这个时候发生了中断&#xff0c;在中断中这个函数被再次调用&#xff0c;…...

make内置函数call

在make中&#xff0c;内置函数call用来扩展变量或者宏&#xff0c;它的语法如下&#xff1a; $(call macro-name[, param1 ...]) call会扩展它的第一个参数并把其余参数依次替换到出现$1、$2 ......的地方&#xff0c;macro-name 可以是任何宏或变量的名称。macro-name之后是…...

call命令

一、call命令总结 【1】call命令简介 学过汇编或C的朋友&#xff0c;肯定都知道call指令表示什么意思。其实&#xff0c;在这里它的意思也是一样的。在批处理脚本中&#xff0c;call命令用来从一个批处理脚本中调用另一个批处理脚本。 语法: call [ [Drive:] [Path] FileName …...

LeetCode70. 爬楼梯(C++动态规划简单题)

题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&a…...

消息扩散(C++,缩点)

题目背景 本场比赛第一题&#xff0c;给个简单的吧&#xff0c;这 100 分先拿着。 题目描述 有 nnn 个城市&#xff0c;中间有单向道路连接&#xff0c;消息会沿着道路扩散&#xff0c;现在给出 nnn 个城市及其之间的道路&#xff0c;问至少需要在几个城市发布消息才能让这所…...

Spring框架之AOP(面向切面编程)

AOP&#xff08;Aspect Oriented Programming&#xff09;面向切面编程作用&#xff1a;在不惊动原始设计的基础上为其进行功能增强 一、AOP入门案例&#xff08;在接口执行前输出当前系统时间&#xff09; 1.导入坐标 <dependencies><dependency><groupId>…...

信息系统项目管理十大管理之风险管理经典范文

2020年3月&#xff0c;我作为项目经理负责某市民政局民生信息系统的开发。该项目投资720万元&#xff0c;工期2年。主要目标是构建覆盖全市民政部门的宽带高速网络&#xff1b;同时在这一网络上&#xff0c;建立集中的民政业务信息数据库以及用于数据分析和处理的通用民政业务应…...

【Java 面试合集】请聊一下Java的集合类,以及在项目中是如何使用的

请聊一下Java的集合类&#xff0c;以及在项目中是如何使用的常用的集合类 如上图所示&#xff0c;下面会对每个集合做大体的概述 其实整个Java集合大体分为两大类&#xff0c;实现Collection接口&#xff0c;以及实现Map接口。 其实每种实现方式都望文生义&#xff0c;接下来我…...

记忆集(Remember Set)和卡表(Card Table)

记忆集和卡表 为了解决对象跨代引用所带来的问题&#xff0c;垃圾收集器在新生代中建立了名为记忆集(Remembered Set)的数据结构&#xff0c;用以避免把整个老年代加进GC Roots扫描范围。事实上并不是只是新生代、老年代之间才有跨代引用的问题&#xff0c;所有涉及部分区域收…...

用心感受当下的平淡

我们习以为常的事情&#xff0c;每天都在发生着。 那些看似平淡的背后&#xff0c;我们却很少去追求其背后的含义。 你感受过重力的作用嘛&#xff1f; 感受过地铁上下站的电动斜梯嘛&#xff1f; 走路的时候&#xff0c;是磨擦力促进了我们的向前&#xff0c;你是否感受过…...

大小智驾Tier 1,各有得意与艰难

作者 | Bruce 编辑 | 王博不是所有车企都有精力迅速搞定智能驾驶的自研工作&#xff0c;这时候就要抬出汽车行业的老规矩&#xff1a; 合作。 对于车企来说&#xff0c;可以提供智能驾驶方案的Tier 1并不少&#xff0c;但靠谱的&#xff0c;估计不超过一双手的数量。 车企到底想…...

只要一句话,为你生成创意画作

图像可以让人更容易看清事物的细节和结构。例如&#xff0c;在摄影中&#xff0c;图像可以帮助观众了解照片背后的故事&#xff0c;并且提供有用的线索来推断场景内发生了什么。图像也可以作为一种媒介&#xff0c;传递某些特定的情感或思想。比如&#xff0c;通过讲述一段动人…...

【数据结构与算法】常见的数据结构及优缺点

常见的数据结构及优缺点 数据结构优点缺点数组支持随机访问&#xff0c;查找快删除和插入慢&#xff0c;由于要预留空间&#xff0c;会造成空间浪费链表插入快&#xff0c;删除快查找慢栈先进后出存取其他项很慢队列先进先出存取其他项都很慢堆插入&#xff0c;删除块&#xff…...

Android-全面理解Binder原理

全面理解Binder原理 本文基于 Android 9.0.0_r3 源码。 如果不了解进程间通信&#xff0c;请先看文末【7. 相关知识补充】 一文打通你对Binder通信机制所有疑惑&#xff1a; 如何理解Binder通信中的 binder实体、handle句柄&#xff1f;——【1 Binder原理】Binder驱动如何…...

android 9.0 Launcher3长按拖拽时,获取当前是哪一屏,获取当前多少个应用图标

1.1概述 在9.0的rom系统开发过程中,在进行Launcher3的一些功能定制的过程中,在判断当前是哪一屏幕,然后这一屏幕有多少个app图标,然后判断能不能拖拽,是否可以拖拽到下一屏,在某些项目中需要实现这个功能,所以需要首先了解Launcher3中的相关判断当前屏是哪一屏,然后获取…...

第58篇-某数美滑块参数分析【2023-02-07】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、分析流程三、参数分析四、总结一、前言 今天看一下数美的滑块,xhs就是使用的数美的滑块。 aHR0cHM6Ly93d…...

PCL 最远点采样

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 简而言之,该方法是通过迭代、增量的方式来选择距离前一个点集最远的点从而实现数据的采样过程。其算法步骤如下所述: (1)从点集 S S S中随机选择一个点 p...

Linux下g++编译c++程序过程说明

文章目录事前准备一.g 编译代码的过程示例二.使用g生成静态链接库和动态链接库生成静态链接库生成动态链接库三.静态编译与动态编译程序静态编译程序动态编译程序四.动态链接库的添加方式五.动态链接库以及头文件搜索顺序动态链接库头文件参考&#xff1a;https://blog.csdn.ne…...

Type Script 学习笔记

一、什么是TypeScript 以javaScript 为基础构建的语言&#xff0c;可以在任何支持javaScript的平台中运行&#xff0c;Ts不能被js解析器直接执行&#xff0c;需要将ts文件编译成js文件一个javaScript的超集&#xff0c;TypeScript扩展了JavaScript并添加了类型 二、TypeScript增…...

集成算法简介

1、集成学习概述 集成学习&#xff08;EnsemblelearningEnsemble learningEnsemblelearning&#xff09;的目的是让机器学习的的效果更好&#xff0c;一个不行&#xff0c;就多个一起。 常用的有三种方式 Bagging&#xff1a;训练多个分类器取平均 f(x)1/M∑m1Mfm(x)f(x)1 / …...

Flutter 3.7 之快速理解 toImageSync 是什么?能做什么?

随着 Flutter 3.7 的更新&#xff0c; dart:ui 下多了 Picture.toImageSync 和 Scene.toImageSync 这两个方法&#xff0c;和Picture.toImage 以及 Scene.toImage 不同的是 &#xff0c;toImageSync 是一个同步执行方法&#xff0c;所以它不需要 await 等待&#xff0c;而调用 …...

Unity动画之1D混合和2D混合

Parameter 参数&#xff0c;用于控制混合的参数&#xff0c;在参数列表中的参数 图像 可以在这里拖拽控制n个动画的阈值 Motion 关联的动画列表&#xff0c;可以用鼠标改变顺序 Threshold 对应动作的临界阈值 当等于这个值时动作权重最大&#xff08;完全播放该动作&…...

离散数学 图论

1 图的基本概念 1、<V,E>是一个图 其中V代表顶点E表示边2、零图&#xff1a;图的边集E为空集 3、平凡图&#xff1a;只有一个结点的零图 4、平行边&#xff1a; 1 在无向图中&#xff1a;有两条或两条以上的边与同一对结点相关联 2 在有向图中&#xff1a;一序偶对应两…...

堆内存溢出定位(Heap Dump)

配置 jvm 参数&#xff0c;内存溢出时会自动HeapDump&#xff08;指定 dump 文件路径是可选的&#xff09; -Xms20m -Xmx20m -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/home或者用 jmap jmap -dump:formatb,file<filename.hprof> <pid>必要时将dump文件从…...

设计模式(六)----创建型模式之原型模式

1、概述 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 2、结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的的 clone() 方法。 具体原型类&#xff1a;实现抽象原型类的 clo…...

【GD32F427开发板试用】USR-C210 WIFI模块进行以太网通信

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;小蜗牛 一、硬件介绍 USR-C210 硬件上集成了 MAC、基频芯片、射频收发单元&#xff0c;尺寸小&#xff0c;易于焊接在客户的单板电路上&#x…...

MOS管的工艺和工作原理

内部结构和表示符号 参考&#xff1a;https://blog.csdn.net/weixin_63069480/article/details/125552621&#xff0c;https://www.bilibili.com/video/BV1N8411T77d/?p9&spm_id_frompageDriver&vd_source00bd76f9d6dc090461cddd9f0deb2d51 工作过程原理 从上图中的…...

区块链学习4-长安链并发测试(2)_部署链

上一篇&#xff1a;https://mp.csdn.net/mp_blog/creation/editor/128927000 二、部署链和prometheus配置 1. 单机模式下部署长安链 https://docs.chainmaker.org.cn/quickstart/通过命令行体验链.html 下载源码&#xff1a; git clone -b v2.3.0 https://git.chainmaker.…...

持续集成Jenkins (一)部署安装

前言环境清单&#xff1a;CentOS7.8安装JDK8或以上版本安装Maven仓库&#xff0c;因一般java程序是由maven工程&#xff0c;需要maven打包git/svn客户&#xff0c;因一般代码是放在git/svn服务器上的&#xff0c;我们需要拉取代码以上是自动化部署java程序jenkins需要的基本环境…...

【鼠标手势】Mouselnc使用笔记/Mouselnc+AHK=无敌好用/鼠标手势分享

当鼠标手势Mouselnc遇上AHK真的太好用了&#xff0c;让win的体验直接更上一层楼。AHK负责改键改功能&#xff0c;Mouselnc负责输出。首先介绍的是Mouselnc的附带功能&#xff0c;这是在众多手势软件中选它的原因&#xff0c;再分享个人常用的手势。 Mouselnc的附带功能 边缘滚…...

JavaScript电子表格:Handsontable 12.3.1

改进嵌套数据结构的工作。2023 年 2 月 7 日 - 10:22 新版本特征 改进了嵌套数据结构的处理。添加了“复制带标题的单元格”功能的日语翻译。外观和感觉都像电子表格的 JavaScript 数据网格。 Handsontable 是一个 JavaScript/HTML5 数据网格组件&#xff0c;具有独立于任何外部…...

【C语言】编程初学者入门训练(3)

文章目录21. 时间转换22. 总成绩和平均分计算23. 计算体重指数24. 计算三角形的周长和面积25. 计算球体的体积26. 大小写转换27. 2的n次方计算28. kiki和酸奶29. 发布信息30. 输出学生信息21. 时间转换 问题描述&#xff1a;给定秒数 seconds &#xff0c;把秒转化成小时、分钟…...

春招 | 标题不重要,待遇好是王道

还沉浸在满桌佳肴、胡吃海喝的喜悦里&#xff1f;依稀能听到耳边爆竹声的此起彼伏&#xff1b;一晃神&#xff0c;已经坐在了办公桌前假期就在猝不及防中悄然溜走了。请叫我一声最强打工仔吧&#xff0c;让我迷失在对工作的热爱中&#xff0c;写完这篇求才文章。一、职位信息01…...

大众集团率先启用高通下一代计算平台,技术升级战打响

全球汽车制造商正在进入芯片平台的切换周期&#xff0c;这是新一轮技术升级战的信号。 2021年&#xff0c;作为全球前两大汽车巨头之一的丰田汽车&#xff0c;决定从2023年开始&#xff0c;在旗下品牌的多款车型陆续采用Mobileye采埃孚的方案来替代一直使用的电装方案。 而另…...

OOP的弊端:自顶向下还是自底向上

[译者注]前不久翻译了Eric Raymond对几大开发语言的评价&#xff0c;引起了网友的热烈讨论。其中涉及到Eric Raymond对OO的批评&#xff0c;引起大家的争议。为此我再翻译他的一段相关文字&#xff0c;请大家阅读思考。模块化 —— Keep it clean, keep it simple程序员所面对的…...

Spring Cloud Bus-4.0.1 附录A

这里写目录标题附录 A&#xff1a;常见的应用程序属性参考地址附录 A&#xff1a;常见的应用程序属性 可以在application.properties文件内部application.yml、文件内部或作为命令行开关指定各种属性。本附录提供了一个常见的 Spring Cloud Bus 属性列表以及对使用它们的底层类…...

cherry-pick等git 高效率命令

前言使用 Git 作为代码版本管理&#xff0c;早已是现在开发工程师必备的技能。可大多数工程师还是只会最基本的保存、拉取、推送&#xff0c;遇到一些commit管理的问题就束手无策&#xff0c;或者用一些不优雅的方式解决。本文分享我在开发工作中实践过的实用命令。这些都能够大…...

椭圆曲线标量乘法快速算法及源码分析

一、椭圆曲线密码算法 椭圆曲线密码算法(elliptic curve cryptograph,ECC)是一类重要的密码算法。椭圆曲线有如下性质: 有限域上椭圆曲线在点加运算下构成有限交换群,且阶与基域规模相近;类似于有限域乘法群的乘幂运算,椭圆曲线多倍点运算构成一个单向函数。ECC安全性依…...

Spring Boot 最核心的 25 个注解

1、SpringBootApplication这是 Spring Boot 最最最核心的注解&#xff0c;用在 Spring Boot 主类上&#xff0c;标识这是一个 Spring Boot 应用&#xff0c;用来开启 Spring Boot 的各项能力。其实这个注解就是 SpringBootConfiguration、EnableAutoConfiguration、ComponentSc…...

Qt开发遇到的坑,创建项目、支持中文、弹出控制台、qt4和qt5切换、内存越界

1、设置创建项目的默认目录 设置好对应创建目录后&#xff0c;勾选上“设为默认的项目路径”&#xff0c;之后创建的目录都会在这目录下&#xff0c;再改改编译生成目录不在上层&#xff0c;就不用改构建目录 2、更改编译后生成文件所在目录 点击工具》选型 构建和运行》Defa…...

记录一次内存调优实战

记录一次内存调优实战 测试使用adb monkey频繁测试App的拍照功能&#xff0c;发现内存持续升高&#xff0c;GC后仍缓慢持续升高&#xff1b; 业务场景描述 拍照界面大致如下&#xff1a; 和传图相机拍照稍许不同&#xff0c;此拍照业务是&#xff1a;点击拍照按钮 —> 系…...

持续集成Jenkins (三)基础配置

界面配置介绍1.1 界面总览1.2 详细配置1.2.1系统配置此处定义Jenkins的全局消息&#xff0c;或者是邮箱的配置。1.2.2全局安全配置主要是配置用户访问的控制&#xff0c;这里仅开启允许用户注册&#xff0c;这样的话&#xff0c;可以让所有开发测试小伙伴在这里以自己的名字注册…...

Tomcat 管理配置

目录 1.host-manager 2.manager 从早期的Tomcat版本开始&#xff0c;就提供了Web版的管理控制台&#xff0c;他们是两个独立的Web应用&#xff0c;位于webapps目录下。Tomcat 提供的管理应用有用于管理的Host的host-manager和用于管理Web应用的manager。 1.host-manager Tomca…...

小白系列Vite-Vue3-TypeScript:002-配置别名

上一篇我们已经初始化了一个ViteVue3TypeScript项目&#xff0c;本篇我们来介绍如何给项目配置别名。之所以要配置别名最直观的就是可以在项目开展编写代码时&#xff0c;避免出现类似 "../../../views/index.vue" 这样乱七八糟、层层嵌套式的路径引用。先安装types/…...

Linux下创建定时任务监控zookeeper进程,异常时自动启动

背景&#xff1a;在有一台服务器上的zookeeper进程会莫名其妙的消失&#xff0c;暂时没找到原因&#xff0c;放假前决定先临时写一个脚本进行监控&#xff0c;消失了就自动启动一下 目录 理论步骤 实现步骤 1、编写脚本并定义zookeeper的bin目录及配置文件以及定时任务周期…...

C语言基础知识(62)

内存本质编程的本质其实就是操控数据&#xff0c;数据存放在内存中。因此&#xff0c;如果能更好地理解内存的模型&#xff0c;以及 C 如何管理内存&#xff0c;就能对程序的工作原理洞若观火&#xff0c;从而使编程能力更上一层楼。大家真的别认为这是空话&#xff0c;我大一整…...

I am a boy!

对于一个字符串&#xff0c;请设计一个算法&#xff0c;只在字符串的单词间做逆序调整&#xff0c;也就是说&#xff0c;字符串由一些由空格分隔的部分组成&#xff0c;需要将这些部分逆序。例&#xff0c;输入"I am a boy!", 输出"boy! a am I"#include&l…...

elementUI el-table上移下移

<el-table :data"channelForm.selectedChannelList" style"width: 100%"> <el-table-column type"index"> </el-table-column> <el-table-column prop"...

iOS 首页标题支持展示图片点击展示lottie动画实现方案

现状&#xff1a;app首页标题只支持展示文字 需求 app首页标题支持展示图片&#xff0c;json 动画 如图 实现思路&#xff1a;将需要展示的资源包下载到沙盒中&#xff0c;在创建频道标题视图的时候&#xff0c;根据该频道在沙盒中是否有对应的图片、json资源来确定是否展示…...

Python安全攻防之第一章渗透测试概述

渗透测试的具体方法一、如何绕过CDN获取网站的真实IP地址通过内部邮箱获取。一般情况下&#xff0c;邮箱服务器位于内网&#xff0c;我们可以通过注册邮箱或者订阅邮件&#xff0c;目的就是让对方给我自己发送邮件&#xff0c;这样查看邮件的原始邮件头&#xff0c;就会发现邮件…...

MySQL-45讲学习笔记(1-3)

0. 开篇词 0.1 学习专题目的 在工作中对于MySQL&#xff0c;最重要的两点就是&#xff1a;如何设计表&#xff0c;还有如何对表查询进行优化&#xff01;能够写出逻辑正确的SQL语句&#xff0c;同时也能够知道语句是不是最优的数据库使用出现了问题&#xff0c;能够快速定位问…...

指针赋值问题

最近写了个代码&#xff0c;被日本客户指出来有问题&#xff0c;对此做了一项研究。 我最开始的时候写的是&#xff1a; char *pointer NULL; pointer “string”; printf(“%s\n”, pointer); 日本客户指出&#xff0c;pointer当前没有分配空间&#xff0c;给它赋值是不规…...

DOM编程-获取文本框的value

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>DOM编程-获取文本框的value</title> </head> <body> <script> /* 1、JavaS…...

Android基础教程——从入门到精通(下)

本文是对B站教程 动脑学院 Android教程 学习过程中所做的笔记。文章分为上下两部分&#xff0c;此文是下部分&#xff0c;上部分链接为&#xff1a;Android基础教程——从入门到精通&#xff08;上&#xff09;。源视频教程并没有录制全&#xff0c;本文还补充了 Service 和 网…...

leadtools 22.0.6 Crack .NET 7 Support

Charlotte, NC (January 9, 2023) - LEAD is pleased to announce the release of another major update to LEADTOOLS Version 22. Highlighting this release is support for .NET 7, the ability to add eSignatures to documents and PDFs, significant recognition enha...

Day882.隐式函数转换索引问题 -MySQL实战

隐式函数转换索引问题 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于隐式函数转换索引问题的内容。 在 MySQL 中&#xff0c;有很多看上去逻辑相同&#xff0c;但性能却差异巨大的 SQL 语句。 对这些语句使用不当的话&#xff0c;就会不经意间导致整个数据库的压…...

第七章:ElasticSearch集群的搭建

上一章&#xff1a;《第六章&#xff1a;IK分词器和Elasticsearch集成使用》 文章目录7.1 集群节点7.2 集群的搭建7.2.1 windows环境下es集群的搭建1.准备三台elasticsearch服务器2.修改每台服务器的配置7.2.2 linux环境下搭建es集群7.3 集群测试7.4 springboot集成客户端使用7…...

《第一行代码》kotlin Android SQLite

参考 《第一行代码 第三版》教程 Android 内置了SQLite数据库 SQLite 是一款轻量级的关系型数据库&#xff0c;运算速度快&#xff0c;占用资源少&#xff0c;支持标准SQL语法&#xff0c;数据库ACID事务&#xff0c;可以用于记录复杂的关系性数据 创建数据库 Android提供了S…...

es-Mapping

文章目录es-Mapping概念查看mappingES数据类型两种映射类型映射参数es-Mapping 概念&#xff1a;映射是定义文档及其包含的字段的存储和索引方式的过程两种映射方式 dynamic mapping&#xff08;动态映射或自动映射&#xff09;expllcit mapping &#xff08;静态映射或手动映…...

Spring事物管理

一.事物的概念? 事物可以看做是由对数据库的若干操作组成的一个单元 事物是一系列的动作,一旦其中有一个动作出现错误,必须全部回滚,提供将事物中对数据库的所有已完成的操作全部撤销,滚回到事物开始的状态,避免出现由于数据不一致而导致接下来的一系列错误. 事物的出现是为…...

九龙证券|重金买入百余股,这类资金连增六日!这个行业被重点盯上

两融资金接连6个交易日添加&#xff0c;杠杆资金加仓哪些股票&#xff1f; 证券时报•数据宝计算&#xff0c;到2月6日&#xff0c;沪深两融余额为15577.13亿元&#xff0c;较上一交易日添加58.79亿元&#xff0c;其间融资余额14641.43亿元&#xff0c;较上一日添加60.38亿元。…...

Self-training 与 Self supervised learning 简明对比

前言 最近搜 self supervised learning 工作时&#xff0c;不知怎么就输成了 self-training 自己还没反应过来已经搜错了hhh&#xff0c;这篇文章简明对比一下。 正文 Self-training 想要详细了解的可以看一篇综述 https://arxiv.org/pdf/2202.12040.pdf Self-training 其…...

C语言——字符串+内存函数及其模拟实现

目录0. 思维导图1. 前言2. 函数介绍2.1 strlen2.2 strcpy2.3 strcat2.4 strcmp2.5 strncpy2.6 strncat2.7 strncmp2.8 strstr2.9 strtok2.10 strerror2.11 memcpy2.12 memmove2.13 memcmp2.14 memset3. 库函数模拟实现3.1 模拟实现strlen3.2 模拟实现strcpy3.3 模拟实现strcat3…...

网络流量回溯分析对业务系统慢访问分析案例

需求简介 某外高桥公司的OA系统是其重要的业务系统&#xff0c;OA系统负责人表示&#xff0c;部分用户反馈&#xff0c;访问OA系统时比较慢。需要通过分析系统看一下实际情况。 报告内容 本报告内容主要为&#xff1a;OA性能整体分析 分析时间 报告分析时间范围为&#xf…...