Other

Codeforces Round #786 (Div. 3)

A. Number Transformation 令\(a = 1\),则\(b = \dfrac{y}{x}\)。 B. Dictionary 暴力预处理出完整的字典,然后用std::map存单词和下标的映射。 C. Infinite Replacement 如果\(t\)等于a,则答案为\(1\)。 否则,如果\(t\)包含a,则有答案为无穷大。 否则,\(s\)中的每个元素都有两种可能,替换或者不替换,即答案为\(2^n\),其中\(n = |s|\)。 D. A-B-C Sort 先做了E,F才返回来做D。 对于\(n = 3\),所有可能的结果有\(a_1a_2a_3\)和\(a_1a_3a_2\)。 对于\(n = 4\),所有可能的结果有\(a_1a_2a_3a_4\),\(a_1a_2a_4a_3\),\(a_2a_1a_3a_4\)以及\(a_2a_1a_4a_3\)。 以此类推,发现题目所给的操作等价于:当\(n - i\)为偶数的时候,可以交换\(a_i\)和\(a_{i+1}\)。 对于满足条件的\(i\),如果\(a_i > a_{i + 1}\),就交换两元素的位置,否则不变。 然后看数组是否是非降序即可。 E. Breaking the Wall 被hack了,待更新。 可能的操作共有3种: 只砸第\(i\)道墙。 砸第\(i\)道墙和第\(i + 1\)道墙。 拆第\(i\)道墙和第\(j\)道墙。 对于第一种操作,枚举每一道墙。可能砸倒了第\(i\)道墙,顺便把相邻的墙溅射倒了,这种情况会在第二种操作中考虑到。也可能第\(i\)道墙还没砸倒,相邻的墙就都倒了,代价为\(\max(a_{i - 1}, a_{i + 1})\)。\(O(n)\)枚举\(i\)即可。 对于第二种操作,假设砸第\(i\)道墙\(x\)次,第\(i + 1\)道墙\(y\)次,可以得到一个不等式方程组,解出来代价为\(\lceil \dfrac{a_{i} + a_{i + 1}}{3} \rceil\)。\(O(n)\)枚举\(i\)即可。 对于第三种操作,\(j\)的选择可以贪心选,共有4个候选:\(i - 1\),\(i + 1\),\(p(i - 2)\),\(s(i + 2)\)。\(p(x)\)表示前\(x\)个元素中最小值所在下标,\(s(x)\)表示后缀。\(O(n)\)预处理前缀和后缀,然后再\(O(n)\)枚举\(i\)即可。

Docker搭建kafka

一、拉取镜像 docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka 二、检查 docker-compose docker-compose -v 三、创建 docker-compose.yml 文件 cd /data && mkdir docker-compose && cd docker-compose touch docker-compose.yml 添加内容 version: '1' services: zookeeper: image: zookeeper hostname: zookeeper container_name: zookeeper kafka: image: wurstmeister/kafka hostname: kafka container_name: kafka ports: - 9092:9092 environment: KAFKA_ADVERTISED_HOST_NAME: kafka KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 #设置网络,名为local networks: local: driver: bridge 四、进入该文件所在目录执行 cd /data/docker-compose docker-compose build 五、启动服务 docker-compose up -d 六、查看容器 docker ps 七、进入容器之中 docker exec -it kafka bash 八、创建topic

pycharm-python库配置及搭建环境的问题

一 安装anaconda 1、创建环境   2、安装torch0.4.1的坑 github找的项目比较老,怎么装都不成功,网上的教程试了都没用 最后:conda install pytorch==0.4.1 安装成功!

常用API-->Object、Objects,StringBuilder、Math、System、BigDecimal

Object: toString方法           运行结果:    toString()打印的是对象在堆内存的地址,然而在实际的开发中,我们更多的是想看到对象的内容,因此我们需要重写父类的toString方法。 2.euqals方法:  Object的equals方法比较的是对象在堆内存的地址,如果我们只是想比较一下两个对象里边的内容一样则即为相等的对象,则需要在子类重写equals方法:  (1)自己写: 1 public boolean equals(Object obj){ 2 //类型是否一样 3 if(obj instanceof Student){ 4 //强制类型转换,才可以.对象的属性 5 Student stu = (Student) obj; 6 if(this.name.equals(stu.name) && 7 this.sex == stu.sex && 8 this.age == stu.age){ 9 return true; 10 }else { 11 return false; 12 } 13 }else { 14 return false; 15 } 16 }  优化:

SkyWalking在.NET平台的简单使用

APM(Application Performance Management)应用性能管理 在目前这个微服务化的趋势下,需要一个监控web站点的工具,来方便我们进行站点运维工作。 如标题所示,这里主要记录SkyWalking在.NET平台下的简单使用(开发测试),可以收获开发小玩具一枚。 安装SkyWalking https://github.com/apache/skywalking https://skywalking.apache.org/ docker-compose 既然是开发测试使用,那就怎么简单怎么来,用最简单的方式解决问题(偷懒)。  step.1 下载脚本 在这个页面可以找到SkyWalking的docker安装脚本,下载两个文件 .evn 和 docker-compose.yml 。 https://github.com/apache/skywalking/tree/master/docker .env 文件是版本号,可以修改对应的版本号。SkyWalking用的ElasticSearch的大版本是7,不建议换成8。 这里的脚本是本是利用gcc构件镜像包,因为只是开发测试使用,我们可以换种方式来提高效率(偷懒),用DockerHub的镜像包。  step.2 拉取镜像 去DockerHub查询几个镜像的最新版本号,拉到本地docker里。 docker pull apache/skywalking-oap-server:9.0.0 docker pull apache/skywalking-ui:9.0.0 elasticsearch-oss在DockerHub里是查询不到的,在docker-composer.yml文件中能看到,它这里采用的镜像是从这个docker.elastic.co地址拉取的,我们去这里搜索就行。 https://www.docker.elastic.co/r/elasticsearch/elasticsearch-oss 提示: 1.这里可以不拉取镜像 elasticsearch-oss,只需要填上版本号,就可以自动拉取到。 2.oss版本指的是没有X-pack模块,意思就是没有Elastic的一系列商业收费功能。  step.3 设置版本 然后修改.env文件,写上对应的镜像和版本号。 ES_VERSION=7.10.2 OAP_IMAGE=apache/skywalking-oap-server:9.0.0 UI_IMAGE=apache/skywalking-ui:9.0.0  step.4 一键启动 运行指令 docker-compose up  当看到以下信息,则代表着SkyWalking-UI启动成功。 ui | 2022-05-02 17:19:29.745 INFO 1 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port 8080 ui | 2022-05-02 17:19:29.

Java基础知识

面向过程和面向对象 面向过程性能高,面向对象易维护,易复用,易扩展。 java 特点 面向对象(封装,继承,多态) 平台无关性 安全可靠 支持多线程 JVM:Java 虚拟机,是运行 Java 字节码(.class文件)的虚拟机。 JDK:Java开发工具包 JRE:Java运行环境 关系:JDK包含JRE和JAVA的开发工具 ​ JRE包含JVM和JAVA的核心类库 JAVA 与C++比较 都是面向对象的语言,都支持封装、继承和多态。 Java 不提供指针来直接访问内存,程序内存更加安全 Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。 Java 有自动内存管理机制,不需要程序员手动释放无用内存。 重写和重载 重写:子类重新编写父类的方法,方法名相同,参数相同。 重载:方法名相同,参数不同 面向对象的特点:抽象,封装,继承,多态 String:不可变的 (可变的含义:指针是否指向新的对象) ​ StringBuilder:可变的,线程不安全,可在单线程中使用 ​ StringBuffer: 可变的,线程安全,多线程中使用 自动装箱和拆箱 装箱就是 自动将基本数据类型转换为包装器类型;拆箱就是 自动将包装器类型转换为基本数据类型。 Integer i = 10; //装箱 int n = i; //拆箱 接口和抽象类的区别 接口的方法默认是 public,所有方法在接口中不能有实现,而抽象类可以有非抽象的方法。 一个类可以实现多个接口,但只能实现一个抽象类。 抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。 接口中基本数据类型为static 而抽类象不是的。 成员变量和局部变量 成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员

Where did the time go

时间去哪了我的人生版本 2022/05/02 ~ 2022/05/08 开始时间 结束时间 任务目标 2022年5月3日02:04:25 2022年5月3日02:19:39 博客园新增 Where did the time go 栏目 完成英语期末小论文

743. 网络延迟时间(dijkstral算法)

743. 网络延迟时间 有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。 现在,从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1 。  示例 1: 输入:times = [[2,1,1],[2,3,1],[3,4,1]], n = 4, k = 2 输出:2 示例 2: 输入:times = [[1,2,1]], n = 2, k = 1 输出:1 示例 3: 输入:times = [[1,2,1]], n = 2, k = 2 输出:-1  提示: 1 <= k <= n <= 100 1 <= times.

Linux命令篇 - grep 命令

grep grep searches the named input FILEs (or standard input if no files are named, or if a single hyphen-minus (-) is given as file name) for lines containing a match to the given PATTERN. By default, grep prints the matching lines. grep:用于全面搜索的正则表达式,并将结果输出; 格式: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] egrep则是扩展搜索命令,等价于“grep -E”命令,支持扩展的正则表达式。而fgrep则是快速搜索命令,等价于“grep -F”命令,不支持正则表达式,直接按照字符串内容进行匹配; 常用参数: -i 忽略大小写 -c 只输出匹配行的数量 -l 只列出符合匹配的文件名,不列出具体的匹配行 -n 列出所有的匹配行,显示行号 -h 查询多文件时不显示文件名 -s 不显示不存在、没有匹配文本的错误信息 -v 显示不包含匹配文本的所有行 -w 匹配整词 -x 匹配整行 -r 递归搜索 -q 禁止输出任何结果,已退出状态表示搜索是否成功 -b 打印匹配行距文件头部的偏移量,以字节为单位 -o 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位 -F 匹配固定字符串的内容 -E 支持扩展的正则表达式 参考案例:

Linux Centos7 安装Mysql

MYSQL(mariadb) mariadb完全兼容Mysql,Mysql被收购后的免费替代品  安装mariadb 1.首先在Centos系统中添加Mariadb的Yum配置文件Mariadb.repo文件.  因为yum配置仓库中默认并没有mariadb的仓库文件,因此就要先新建一个mariadb.repo的仓库文件  编辑创建mariadb.repo仓库文件 #编辑创建mariadb.repo仓库文件 vim /etc/yum.repos.d/Mariadb.repo #文件中添加repo仓库配置 [Mariadb] name = MariaDB baseurl = https://mirror.mariadb.org/yum/10.8/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 #baseurl地址是可以变动的,看哪里有mariadb下载就可以作为仓库地址 2.安装Mariadb 当 MariaDB 仓库地址添加好后,通过命令安装 MariaDB。 yum install MariaDB-server MariaDB-client -y 3.启动mariadb systemctl start mariadb mariadb数据库的相关命令是: systemctl start mariadb #启动MariaDB systemctl stop mariadb #停止MariaDB systemctl restart mariadb #重启MariaDB systemctl enable mariadb #设置开机启动 初始化mysql/mariadb 在确认MariaDB 数据库软件程序安装完毕并成功启动后请不要立即使用。 为了确保数据 库的安全性和正常运转,需要先对数据库程序进行初始化操作。 这个初始化操作涉及下面 5 个 步骤。 ➢ 设置 root 管理员在数据库中的密码值(注意,该密码并非 root 管理员在系 统中的密 码,这里的密码值默认应该为空,可直接按回车键)。 ➢ 设置 root 管理员在数据库中的专有密码。 ➢ 随后删除匿名账户,并使用 root 管理员从远程登录数据库,以确保数据库 上运行的业务的安全性。 ➢ 删除默认的测试数据库,取消测试数据库的一系列访问权限。 ➢ 刷新授权列表,让初始化的设定立即生效。 1.