python-区间划分,统计年龄段性别占比

问题描述: 有个DataFrame(gender,age),需要按指定间隔划分不同分组,并求该分组的性别占比(男性+女性=100%) 间隔:bin = [0, 20, 40, 60, 100],左开右闭 知识点 1、通过该例可以学习random的使用 2、学习pd.cut划分数值区间 3、pd.agg() 解答: # 1、构造测试数据 random.seed(1) # 指定随机种子,保证每次运行结果一致 df = pd.DataFrame( {'gender': [random.choice([1, 0]) for _ in range(100)], 'age': [random.randint(1, 100) for _ in range(100)]} ) # 2、将年龄划分不同时间段 age_bin = [0, 20, 40, 60, 100] df['layered'] = pd.cut(x=df['age'], bins=age_bin) # 3、将age划分对应区间 df = df.groupby(['layered']).agg({'gender': 'sum', 'age': 'count'}) # 4、计算男女占比情况 df = df.assign( male_rate=df['gender'] / df['age'], female_rate=1 - df['gender'] / df['age'] ) # 5、输出结果 print(df[['male_rate', 'female_rate']])

ubuntu18.04安装部署openvion

Intel® Distribution of OpenVINO™ Toolkithttps://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit/choose-download/linux.html这里是openvion官网,下载后得到一个tgz文件 第一步 找到下载好的文件然后进行解压缩得到一个文件夹,进入文件夹打开终端 然后进行 sudo ./install_GUI.sh 之后进入安装的界面,一路next直到finsh完成安装 安装后的是在/用户名/intel/openvion的路径下可以找到 第二步 进入openvion/install_dependencies文件夹打开终端或者cd到这里也可以 然后下载依赖 执行 sudo -s 获得root权限后 sudo -E ./install_openvino_dependencies.sh 第三步 设置永久的环境变量 vim ~/.bashrc 进入之后拉到最下面,将 source ~/intel/openvino_2021/bin/setupvars.sh 添加到最后一行回车输入 :wq 进行保存退出 如果出现 则代表安装成功了,如果出现 代表没有找到openvion里的python模块 具体操作方法可以参考 Openvino Mac版部署踩坑记录_进击の攻城狮的博客-CSDN博客 但是本人并没有解决这个问题 如果没有报错的话请进行配置模型优化器 打开/openvion/deployment_tools/model_optimzer/install_prerequisites或cd到此位置打开终端 执行 sudo ./install_prerequisites.sh 此操作会安装所有的框架,如果需要分开或者只安装一个的话 对于caffe pip install -r requirements_caffe.txt 对于tensorflow pip install -r requirements_tf.txt 对于MXnet pip install -r requirements_mxnet.txt 对于onnx pip install -r requirements_onnx.txt 对于kaldi pip install -r requirements_kaldi.

ip校验和 及 udp校验和 的计算方法

一、ip校验和的计算: 计算方法: 1. ip包头(共20个字节)按照每16个bit作为一个值依次进行相加 2. 将计算结果的进位加到低16位上 3. 将结果取反 ip包头的内存内容 eg: 45 00 00 20 0F B8 00 00 80 11 00 00 C0 A8 0A 9F C0 A8 0A C7 将 0x4500 0x0020 0x0FB8 0x0000 0x8011 0x0000 0xC0A8 0x0A9F 0xC0A8 0x0AC7 依次相加 所得结果为0x26B9F 然后将 0x0002 + 0x6B9F = 0x6BA1 然后将 0x6BA1 取反得 0x945E 要注意两点: 1 在给ip_header计算校验和之前 首先把ip_header的checksum字段置为0 2 计算得到checksum之后 赋值时要转换为网络字节序: ip_header.checksum = htons(checksum); struct ip_header //小端模式__LITTLE_ENDIAN { unsigned char ihl:4; //ip header length unsigned char version:4; //version u_char tos; //type of service u_short tot_len; //total length u_short id; //identification u_short frag_off; //fragment offset u_char ttl; //time to live u_char protocol; //protocol type u_short check; //check sum u_int saddr; //source address u_int daddr; //destination address }; // 计算ip数据包的checksum // 将20个字节的ip数据包每16位组成一个字 依次相加 设所得结果为 0x34ACE // 将 进位的3与 0x4ACE相加 得 0x4AD1 // 将 0x4AD1取反得到checksum u_short get_ip_checksum(char* ip_hdr) { char * pkt = ip_hdr; u_long checksum = 0; u_long sum = 0; for (int i = 0; i < 20; i += 2) sum += ((pkt[i] << 8) & 0xFF00) | pkt[i+1]; checksum = (sum & 0x0000FFFF) + (sum >> 16); checksum += (checksum >> 16); return (u_short)~checksum; } 二、udp校验和

docker 安装redis集群配置3主3从,实现hash槽分配存储数据

目录 一、docker集群安装 1.分别在宿主机的/docker/redis下创建每个节点数据同步的目录 2.执行容器启动命令 3.执行命令参数解释: 4.集群节点不够提示:提示需要至少3个master 5.执行命令构建主从关系 6.查看集群状态 二、验证集群hash槽位(slot)自动分配键值 1.传统单机登陆错误示范 2.正确存储键值示范 3.集群检查 一、docker集群安装 1.分别在宿主机的/docker/redis下创建每个节点数据同步的目录 2.执行容器启动命令 docker run -d --name redis-node81 --net host --privileged=true -v /docker/redis/node-6381/data:/data redis --cluster-enabled yes --appendonly yes --port 6381 docker run -d --name redis-node82 --net host --privileged=true -v /docker/redis/node-6382/data:/data redis --cluster-enabled yes --appendonly yes --port 6382 docker run -d --name redis-node83 --net host --privileged=true -v /docker/redis/node-6383/data:/data redis --cluster-enabled yes --appendonly yes --port 6383 docker run -d --name redis-node84 --net host --privileged=true -v /docker/redis/node-6384/data:/data redis --cluster-enabled yes --appendonly yes --port 6384 注意 --cluster-enabled yes 需要跟在镜像后

DHCP(详解)

DHCP 一.DHCP 简介 二.DHCP 工作原理(租约四部曲+续租) 1.DHCP客户端进行IP请求 2.DHCP服务器相应请求 3.DHCP客户机选择IP 4.DHCP服务器确认租约 5.DHCP客户机续租 三.DHCP服务搭建 1.准备实验环境 2.DHCP相关信息 3.DHCP配置文件详解 四.DHCP实验部署 1.DHCP基本功能实验 2.保留地址(固定地址分配) 3.超级作用域(同一局域网) 4.DHCP中继 一.DHCP(动态主机配置协议)是一个工作在应用层的局域网网络协议(不在公网上使用),数据传输时使用UDP不可靠传输协议工作,通常被应用在大型局域网络中的管理,分配网络资源,使网络环境中的主机能动态的获得IP地址,Gateway网关地址,DNS服务器地址等信息,并能够提升地址的使用率。可以减少管理员的工作量,避免用户手工配置网络参数时造成的地址冲突 像我们通过无线路由器连接的pc端 都靠这个DHCP去集中管理和网络分配 包括引导文件 TFTP文件的传输 像生产环境中很多台服务器安装服务器批量装机 无人值守自动部署 没有网络地址 没有操作系统的服务器能够自动获取或者自动分配到可用的ip地址等网络资源然后再进行引导文件等其他网络资源的获取这就是DHCP在实际生产环境中的应用 无人值守安装必须依赖DHCP 对于我们来说很重要 二.租约四部曲+续租 模式:给需要ip地址的客户机分配ip地址 等对方不用了再把ip地址回收 类似于租房子 要和房东签合同 不住了要和房东讲 DHCP相对于更复杂 左侧客户端 右侧服务端 左侧没有网络资源 无法和其他人正常直接通讯 它想通讯要向所在局域网广播数据包 没有自己的源地址 也不知道其他任何人的目标地址 只能广播 会想给自己找一个合理的ip地址 广播ip地址的请求 我们称这种数据包叫DHCP Discover 包 目的是向局域网内发送DHCP请求 看看局域网内有没有人是DHCP服务器 如果有人是 然后下一步让他给我一个可用的ip地址 假如说网络中真的有一个DHCP服务器 那么这个DHCP服务器在接受到这个主机发过来的DHCP Discover 请求数据包之后 DHCP服务器会给客户机回一个DHCP Offer包 类似于投简历不知道这家公司会不会要你入职 投了很多家 面了很多家 最终给你Offer那家就是让你来工作 同样回复了DHCP Offer包的这个服务器就是要给你分配网络资源的服务器 客户机接受到Offer之后要确认要去要使用这个服务器发送过来的 类似于有好几家公司都给你发了Offer 让你入职 那你一定会给其中某一家回复我要去你公司入职 并且给其他公司回复我不去你家入职 DHCP Request包含两部分 一部分是告诉给我发了Offer的人我要去你家 一部分是告诉那些给我发了Offer的我不去你们几家 所以说Request分为两部分 那这个时候当给客户端发Offer包的那个服务器收到了客户端发来的Request 客户机要用它的ip地址的Request之后呢 服务器要再次向客户端确认并且告诉它这个东西可用 那么最终这个一步就类似于签合同了 拆分看一下DHCP四部曲的详细步骤

IMX6ULL-QT项目之mplayer音乐播放器-交叉编译mplayer

在linux环境下安装mplayer后,打开ubuntu里的QT,QT安装的版本5.12.9,QT界面的图标基本都是正点原子收集的图片,实现方式参考B站里的教学 简单介绍mplayer命令: 按键操作: 音量减小:/、9 音量增大:*、0 上、下键: 前进、后退1分钟, 左键、右键:前进、后退10秒 mplayer Music/* 这个就是播放Music目录下的所有音乐,是按顺序播放的 命令: -shuffle 随机播放 -playlist list.txt 列表顺序播放 -slave 开启从模式后台播放 -loop N 重复播放N次,N=0则永远重复播放 -quiet 指定mplayer不向屏幕上,打印乱码信息 -slave 可以敲入指定命令后回车控制 -idle 播放文件至文件末尾后mplayer不退出 -softvol 不加这个参数可能无法设置静音 mplayer * < /dev/null & 后台播放,可以加参数 mplayer * < /dev/null > /dev/null 2>1& 后台播放,不可以加参数,把 mplayer *产生的所有的标准输出/输入都丢掉, 包括标准错误输出(2>1&),这样即使出错也不会跳出任何提示,完全安静的后台运行 -input命令行模式下的://注意很重要,发送的指令结尾一定要\n结尾,不然无效 loadfile string //播放string指定的歌曲,string为歌曲路径+文件名(例:“loadfile ../easylove.mp3”)。 volume x 1 //设置音量,x为音量的大小。1-100 mute 1/0 //静音开关。1:静音;0:取消静音。 pause //暂停/取消暂停。 seek value //快进或快至参数value指定的秒数 当value为正时,快进;当value为负时,快退。 get_percent_pos //获得文件的播放进度(百分比:0--100)。 get_time_pos //获得文件的当前位置,以秒为单位,精确到小数位1位。

5种电脑定时关机的方法分享

转自:微点阅读 https://www.weidianyuedu.com (方法汇总于网络) 目录 ⊙如何用系统命令设置定时关机 ⊙两款定时关机软件,小而好用,功能强大 ⊙如何用任务计划程序设置 ⊙常用的电脑软件如何设置,包括360安全卫士、迅雷 1 定时关机设置方法 方法一:用系统命令设置 1.鼠标右击【开始菜单】选择【运行】或在键盘上按【Win+R】快捷键打开运行窗口。 2.输入shutdown -s -t 1200 后点击【确定】。 (说明:输入每个完整代码后别忘记打空格, -s表示关机, -t 表示多长时间后关机,以秒为单位。如果你需要将电脑设置10分钟后关机,把1200改为600即可 ) 3.如果想取消自动关机指令,只要在运行窗口中输入shutdown -a 点击【确定】。 4.指定时间关机的设置方法: “at”命令安排在特定日期和时间运行命令和程序 。 “23:00”处指定了运行命令的时间,格式为24小时制。 “shutdown”为系统内置的一个命令,我们可以配合它的参数对系统进行关机、重启等操作。 .例如:设置上午12点整自动关机: at 12:00 shutdown -s 5.如何取消? cmd中输入 at 空格 /delete (然后问你是否全清), 输入Y 回车如下图 6.如果你有兴趣的话,可以再看看其他命令,如下: shutdown -a 取消关机 shutdown -s 马上关机 shutdown -f 强行关闭应用程序 shutdown -m \\计算机名 控制远程计算机 shutdown -i 显示“远程关机”图形用户界面,但必须是Shutdown的第一个参数 shutdown -l 注销当前用户 shutdown -r 关机并重启 shutdown -s -t 100 设置100秒后自动关机 shutdown -h 休眠

数字逻辑电路(八)

数字逻辑电路(八) 目录 数模与模数转换电路 1.数字控制系统 2.数模转换器(DAC) 3.模数转换器(ADC) 数模与模数转换电路 1.数字控制系统 ADC转换器:能将模拟信号转换成数字信号的电路,称为 模数 转换器 ; DAC转换器:将能把数字信号转换成模拟信号的电路,称为 数 模转换器。 2.数模转换器(DAC) DAC的功能——将数字量成正比地转换与之对应成模拟量 对于有权码,先将每位二进制代码按其权的大小转换成相应的模拟量,然后 将这些模拟量相加,即可得到与数字量成正比k(转换比例系数)的总模拟 量,从而实现了数字/模拟转换。 相邻两数码转换出的电压差值由 最低位码 所代表的电压的 位权值决定。 LSB :信息所能分辨的最小值为1LSB 。 FSR:对应于最大数字量的最大电压输出值(绝对值)为 1FSR。 2.1DAC转换器的一般构成 2.2权电阻网络 缺点 ——各权电阻的阻值都 不相同 , 位数多 时,其阻值相差甚 远,这给保证精度带来很大困难,特别是对于集成电路的制作 很不利,因此在集成的 DAC 中 很少单独 使用该电路。 2.3R-2R倒T形电阻网络DAC 2.4单值电流型网络DAC 2.5DAC的主要指标 I. 转换精度 :通常用分辨率和转换误差来描述。 分辨率 : 其定义为D/A转换器模拟输出电压可能被分离的等级数。 实际应用中往往用输入数字量的位数表示D/A转换器的分辨率。 II. 转换速度 转换速度一般由建立时间决定。 建立时间:从输入由全 0 突变为全 1 时开始,到输出电压稳定 在 𝑭𝑺𝑹 ± 𝑳𝑺𝑩范围(或以𝑭𝑺𝑹 ± 𝒙%𝑳𝑺𝑩 指明范围)内为止。 建立时间是DAC的最大响应时间,所以用它衡量转换速度的快慢。 3.

IDEA 远程调试 Remote JVM Debug

一,Linux(Centos7) 基本环境环境搭建 1,JDK安装 2,打开5005端口(默认端口) 查看已经开放的端口: firewall-cmd --list-ports 开放端口: firewall-cmd --zone=public --add-port=5005/tcp --permanent 重启防火墙: systemctl reload firewalld 注意:阿里云服务器还需要在官网配置安全组 二,IDEA配置 1,项目配置 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n</jvmArguments> </configuration> </plugin> </plugins> </build> 参数解释: -Xdebug :通知JVM工作在DEBUG模式下; -Xrunjdwp :通知JVM使用(Java debug wire protocol)运行调试环境。该参数同时包含了一系列的调试选项; transport :指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台; address :调试服务器的端口号,客户端用来连接服务器的端口号; server=y/n: VM 是否需要作为调试服务器执行; suspend=y/n: 是否在调试客户端建立连接之后启动 VM; 打包成功后 上传到服务器。 2,IDEA Debug 设置 (1)添加Remote JVM Debug (2)编辑Remote JVM Debug 参数: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 保存好后就可以到服务器启动jar包了 三,服务启动 nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar /home/ftp/new-project/test.jar 启动成功,并监听了5005端口

严重: Parse Fatal Error at line 1 column 1: 文件提前结束。

tomcat在启动状态时,若遇电源断电强制或者长时间不操作导致待机,可能会改变tomcat的xml文件,可能也会改变web/WEB-INF下的xml文件,导致启动出现bug。 我的就是因为长时间没有操作导致电脑待机,tomcat没有关闭导致第二天出现bug bug截图 解决方案: 找到WEB-INF下的web.xml文件,我的就是里面的内容全部丢失。然后找到以前创建的测试工程,将web.xml文件的代码copy到里面了。然后找到target下的web.xml,在末尾名是SNAPHOT的目录下找到web.xml,将代码copy进去。重启服务器。如果里面的代码存在且存在问题,则去tomcat目录下查看tomcat-users.xml和web.xml是否有问题,可以尝试着将以前的测试工程中对应的文件代码copy进去尝试。 我的WEB-INF下的web.xml文件代码 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <session-config> <session-timeout>100</session-timeout> </session-config> </web-app> 重启服务器: 结束!

2.2:常用的Python数据类型、字符串、dtype

一、内置数据类型 1、整型 2、浮点型 3、字符串 4、复数 5、布尔类型bool 6、None类型 二、字符串 1、从键盘输入数据 s = input() 2、用eval去引号求值 eval("5+3") 3、强制类型转换int("8") 4、强制类型转换str(5) 5、字符串连接--“+” print("hello"+"world") 6、字符串复制--“*” print("knock~"*2) 7、字符串判断 "H" in "Hello" 8、字符串索引 s= "Hello Word" s[1] 9、字符串切片 s="123456" s[1:5:2],结果为"24" 10、字符串切割split "192.168.0.1".split(".") 11、联合多个字符串join ":".join("192.168.0.1".split(".")) 12、字符串替换replace "192.168.0.1".replace(".",":") 13、字符串只读特性【不可变】 s = "hello" s[0] ="H" 14、字符串截取 "abc 123#%".strip("# %") 三、dtype类型 1、认识dtype属性 import numpy as np a= np.array([1,2,3,4]) a.dtype 结果输出:dtype('int32') 2、认识dtype()方法 type('i4') type(np.dtype('i4')) np.dtype('i4') 结果输出:<class ‘str’>、<class 'numpy.dtype'>和dtype('int32') 3、使用dtype()函数构造复杂类型 student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])

数字逻辑电路(七)

数字逻辑电路(七) 目录 脉冲单元电路 1.脉冲信号与脉冲电路 2.集成门结构的脉冲单元 3.555定时器及其应用 脉冲单元电路 1.脉冲信号与脉冲电路 狭义上指一种 持续时间极短 的电压或电流波形。 广义上指 不具有 连续正弦波形状的信号。 获得脉冲波形的方法主要有两种: 1.利用脉冲 产生 电路直接产生。 2.对已有的波形进行 整形 ,将它变换成所需要的脉冲波 形。 常见的脉冲波形 矩形波及其参数 常用脉冲电路: 双稳态触发器、单稳态触发器、自激 多谐振荡器 、 射极耦合双稳态触发器( 施密特 电路)及锯齿波电 路。 2.集成门结构的脉冲单元 2.1施密特触发器 具有 回差电压 特性,能将边沿 变化缓慢 的 电压波形 整形为 边沿陡峭的矩形脉冲。 回差电压: 施密特触发器的工作特点: a.施密特触发器属于电平触发电路,当输入信号达到某一定电压 值时,输出电压会发生突变。 b.施密特触发器是一个双稳态电路,两种稳定状态的维持和转 换完全取决于外加触发信号。 c.施密特触发器有 两个转换电平 (上限触发转换电平V T+ 和 下限触发转换电平V T- )。 其上、下限触发器电平典型数值如下表 施密特触发器的应用 波形变换——将输入的正弦波、三角波、锯齿波等变换成矩形波输出 脉冲整形——当矩形脉冲经过传输后因以下原因发生畸变,可通过施密 特触发器的整形获得满意的矩形脉冲波形 图(a) 传输线上电容较大,波形的上升和下降沿变坏。 图(b) 阻抗不匹配,波形的上升沿和下降沿产生振荡。 图(c) 受到干扰,脉冲波形上叠加有噪声。 脉冲鉴幅——只有当输入脉冲信号的幅度大于施密特触发器上限触发电 平时,在输出端才产生输出信号

Mac上安装配置Flutter时遇到的问题以及解决方案

Flutter下载地址 Flutter环境搭建教程 配置Flutter 根据教程配置环境后,执行flutter doctor命令时,出现如下错误: 1.错误1(xcrun: error) xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun 解决方案: 需要执行xcode-select --install命令下载安装xcode-select 参考博客:解决报错:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcru 2.错误2(Android相关) [!] Android toolchain - develop for Android devices (Android SDK version 30.0.3) ✗ cmdline-tools component is missing Run path/to/sdkmanager --install "cmdline-tools;latest" See https://developer.android.com/studio/command-line for more details. ✗ Android license status unknown. Run flutter doctor --android-licenses to accept the SDK licenses.

前端get、post请求接收后端返回的二进制文件流下载到本地

前端get、post请求接收后端返回的二进制文件流下载到本地 请求接口时一定要加上 responseType: 'blob’或responseType: ‘arraybuffer’,且responseType与headers是同级不要写在里面 axios({ method: "post", url: "xxxx", headers: {}, responseType: "arraybuffer", }); 下载方法 export const downloadAsExcel = (data, name) => { // data是二进制流,通过new Blob方法转化为Blob,type是下载文件格式,本方法以excel为例 // name是你想下载的文件名 const url = window.URL.createObjectURL( new Blob([data], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }) ); //如果后端返回的是Blob,则不需要用上面的方法new Blob直接用data //const url = window.URL.createObjectURL(data); const link = document.createElement("a"); link.style.display = "none"; link.href = url; link.setAttribute("download", `${name}` || "template.xls"); document.body.appendChild(link); link.click(); document.body.removeChild(link); }; 最后为了您和他人的健康,开发时请多写注释

pycharm 自定义标识符颜色

英文版pycharm自定义标识符颜色的设置方法: File -> Settings -> Editor -> Color&Theme -> General -> Text -> Default Text 中文版pycharm 自定义标识符颜色: 设置→编辑器→配色方案→语言默认值→标识符 可以更改各种标识符的不同颜色

牛客练习赛100 小红的公倍数【ODT】

题目描述 link: https://ac.nowcoder.com/acm/contest/11251/E 小红拿到了一个数组,她有以下一种操作: 将[l,r]区间所有数变成该区间所有数的lcm,并输出这个lcm。 一共q次操作。 1 ≤ n , q , a [ i ] ≤ 20000 1\le n,q,a[i] \le 20000 1≤n,q,a[i]≤20000,数据随机生成。 题目分析 期末考前随手打一场玩一玩,结果这题写WA了,属于是退役Oier不配打比赛了 比赛结束看了看AC代码,我只能说随机出人才ヽ(≧□≦)ノ 看到 这份代码,用的莫队,但是有个以前没见过的 trick: 因为这题操作会把所有数变成同一个,所以在 t t t 时刻的 [ l , r ] [l,r] [l,r] 操作,它要求的答案实际上是一个更大区间的 lcm,如果要用莫队做的话就要把每一个操作对应的这个“更大的区间”给预处理出来。这个预处理要用ODT,每个节点存四个数,分别是 “操作区间的左右端点” 和 “与lcm有关系的历史区间的左右端点”,具体方法参见链接代码。 预处理结束后问题就变成去除重新赋值的影响后求区间lcm,用莫队做的话,要维护区间每个质因子的数量,用个multiset num[N],每个 a [ i ] a[i] a[i] 对应的不同质因子及对应数量都要记下来,才能在添加和删除的时候通过 gcd 的变化维护 lcm。 复杂度大概是 O ( n n log ⁡ n ∗ C ) O(n\sqrt n \log n*C) O(nn ​logn∗C), C C C 是每个数的不同质因子个数,平均只有3,4

pom文件显示删除线

idea中的maven项目中pom.xml文件显示删除线 解决方案 Ctrl+Alt+S 打开设置搜索Ignored 如下图将排除的文件前的勾去掉即可

flutter简单优秀的开源dialog使用free_dialog

前言 今天我来介绍一款简单,易用的dialog,该dialog比较简洁,可以适应很多app(主要没有其他动画及以外的图片等,黑白风格可以适配多种样式的app)。如果你的app急需一款不错的dialog,并且你懒得开发,那么用这款就对了。 开始 集成dialog dependencies: free_dialog: ^0.0.1 git地址:https://github.com/smartbackme/free_dialog 简单使用 例1(输入文字框): FreeDialog(context: context,title: "请输入文字", iWidget: EditWidget(_controller!), btnOkOnPress: (a){ print(a); }, btnCancelOnPress: (){ }, onDissmissCallback: (DismissType type){ print(type); } ).show(); }, child: const Text("输入文字框")), 说明:free_dialog 提供了多种Widget 配置(目前有,list&edit两种),可以快速集成。 展示效果如下图: 例2(选择框): FreeDialog(context: context,title: "请选择", onDissmissCallback: (DismissType type){ print(type); }, iWidget: ListWidget(["123","1233","12312","12312","12312","12312","12312","12312","12312","12312","12312","12312","12312"],(a){ print(a); },) ).show(); }, child: const Text("选择框")), 展示效果如下图: 例3(内容多dialog): FreeDialog(context: context,title: "提示", desc: "123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321123123211231232112312321", btnOkOnPress: (a){ print(a); }, btnCancelOnPress: (){ }, onDissmissCallback: (DismissType type){ print(type); } ).

Windows系统下常用的网络配置命令

Windows系统下常用的网络配置命令 一、ipconfig二、tracert三、pathping四、arp五、route六、netstat七、nslookup(一)非交互式查询(二)交互式查询 八、ftp 一、ipconfig ipconfig是Windows网络中最常使用的命令,用于显示计算机中网络适配器的IP地址、子网掩码及默认网关等信息。 命令基本格式: ipconfig [/all | renew [adapter] | /release [adapter] | /flushdns | displaydns | /registerdns] 二、tracert tracert是Windows网络中Trace Route功能的缩写。基本工作原理是:通过向目标发送不同IP生存时间(TTL)值的ICMP ECHO报文,在路径上的每个路由器转发数据包之前,将数据包上的TTL减1。当数据包上的TTL减为0时,路由器返回给发送方一个超时信息。 命令基本格式: tracert [-d] [-h maximumhops] [-w timeout] [-R] [-S srcAddr] [-4][-6] targetname 三、pathping pathping是要跟踪路径并未路径中的每个路由器和链路提供网络延迟和数据包丢失等相关信息。其工作原理类似与tracert,并且会在一段指定的时间内定期将ping命令发送到所有路由器,并根据每个路由器的返回数值生成统计结果。 命令行下返回的结果有两部分,第一部分显示到达目的地经过了哪些路由;第二部分显示路径中源和目标之间的路由器,然后根据各个路由器返回的数据包计算结果。 命令基本格式: pathping [-g host-list] [-h maximum_hops] [-i address] [-n] [-p period] [-q num_queries][-w timeout] [-4] [-6] targetname 四、arp ARP协议是在以太网中使用TCP/IP协议时,必需能根据目的计算机IP地址获取对应的MAC地址。当发送计算机和目的计算机不在同一个局域网中时,必须经过路由器才可以通信,因此发送计算机通过ARP协议获得的就不是目的计算机的MAC地址,而是作为网关路由器接口MAC地址,所有发送给目的计算机的帧都将先发给该路由器,然后通过它发送给目标计算机,这就是ARP代理(ARP Proxy)。 命令基本格式: arp -s inet_addr eth_addr [if_addr] //绑定静态MAC地址 arp -d inet_addr [if_addr] //删除IP地址绑定MAC arp -a [inet_addr] [-N if_addr] //显示IP与MAC绑定 五、route route命令主要用于手动配置静态路由并显示路由信息表。