Other

数据结构与算法之选择排序

上一篇说了冒泡排序,这次说选择排序.选择排序与冒泡排序十分相似.冒泡排序是每一轮中的每一次都讲最小值交换.而选择排序是将每一轮中最小的值记录下标记录下来,一轮过后只交换一次,从空间上来说比冒泡排序好. 但是从时间复杂度来说是一样的.此算法的时间复杂度为O(n^2) public static void xuanze(int[] arr) { for (int i = 0; i < arr.length; i++) { int min =i; for (int x = i + 1; x < arr.length; x++) { if (arr[x] < arr[min]) { min = x; } } int temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } 以下提供了一个测试方法. public static void main(String[] args) { Random random = new Random(); while (true) { int length = random.

redis中级

redis命令 语法 $ redis-cli -h host -p port -a password 实例 以下实例演示了如何连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上。 $redis-cli -h 127.0.0.1 -p 6379 -a mypass 要在 redis-cli 后面加上 --raw redis-cli --raw 就可以避免中文乱码了。 键key Redis 键命令用于管理 redis 的键。 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> command KEY_NAME 实例 redis 127.0.0.1:6379> set runoobkey redis OK redis 127.0.0.1:6379> del runoobkey (integer) 1 在以上实例中 DEL 是一个命令, runoobkey 是一个键。 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0 Redis keys 命令 下表给出了与 Redis 键相关的基本命令: 序号 命令及描述 set key jeff get key dbsize # 查看当前的所有key keys * # 查看当前所有有效key info # 查看redis信息 1 del key 该命令用于在 key 存在时删除 key。 2 dump key 序列化给定 key ,并返回被序列化的值。 3 exists key 检查给定 key 是否存在。存在返回1,否则返回0 4 expire key seconds 为给定 key 设置过期时间,以秒计。 5 expireat key timestamp EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。 6 pexpire key milliseconds 设置 key 的过期时间以毫秒计。 7 pexpireat key milliseconds-timestamp 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计 8 keys pattern 查找所有符合给定模式( pattern)的 key 。 9 move key db 将当前数据库的 key 移动到给定的数据库 db 当中。 10 persist key 移除 key 的过期时间,key 将持久保持。 11 pttl key 以毫秒为单位返回 key 的剩余的过期时间。 12 ttl key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 13 randomkey 从当前数据库中随机返回一个 key 。 14 rename key newkey 修改 key 的名称 15 renamenx key newkey 仅当 newkey 不存在时,将 key 改名为 newkey 。 16 scan cursor [MATCH pattern] [COUNT count] 迭代数据库中的数据库键。 17 type key 返回 key 所储存的值的类型。 集合set Redis 集合(Set) Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)。 实例 redis 127.

go-redis分布式锁

redis分布式锁 package main import ( fmt log sync time github.com/go-redis/redis ) // 声明一个全局的rdb变量 var rdb *redis.Client var mutex sync.Mutex // 初始化连接 func initClient() (err error) { rdb = redis.NewClient(&redis.Options{ Addr: ip:port, Password: , DB: 7, }) _, err = rdb.Ping().Result() if err != nil { return err } return nil } // 加锁 func Lock(key string) bool { // ex:设置默认过期时间10秒,防止死锁 ex:=10*time.Second mutex.Lock() defer mutex.Unlock() bool,err := rdb.SetNX(key, `{lock:1}`, ex).Result() if err !

java中的Random类

Random类 (java.util)  Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。 相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。 下面介绍一下Random类的使用,以及如何生成指定区间的随机数组以及实现程序中要求的几率。 1、Random对象的生成 Random类包含两个构造方法,下面依次进行介绍: a、public Random() 该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象。 b、public Random(long seed) 该构造方法可以通过制定一个种子数进行创建。 示例代码: Random r = new Random(); Random r1 = new Random(10);  再次强调:种子数只是随机算法的起源数字,和生成的随机数字的区间无关。  2、Random类中的常用方法 Random类中的方法比较简单,每个方法的功能也很容易理解。需要说明的是,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。下面对这些方法做一下基本的介绍: a、public boolean nextBoolean() 该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。 b、public double nextDouble() 该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。 c、public int nextInt() 该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-231到231-1之间。 如果需要生成指定区间的int值,则需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。 d、public int nextInt(int n) 该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。 如果想生成指定区间的int值,也需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。 e、public void setSeed(long seed) 该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。  3、Random类使用示例 使用Random类,一般是生成指定区间的随机数字,下面就一一介绍如何生成对应区间的随机数字。以下生成随机数的代码均使用以下Random对象r进行生成: Random r = new Random(); a、生成[0,1.0)区间的小数 double d2 = r.nextDouble();  b、生成[0,5.0)区间的小数

MongoDB

一、MongoDB相关概念 1.1 业务应用场景 传统的关系型数据库(如MySQL)。在数作的三高需求以及应对Web.0的网站需求面前,显得力不从心。 解释:三高“需求: ·High performance-高并发 ·Huge Storage-海量数据 ·High Scalability&&High Availability-高扩展性和高可用性的需求 1.1.1 而MongoDB可应对“三高需求· 具体的应用场景: 1)社交场景,使MongoDB存存用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现跗近的人、地点等功能。 2〕游戏场景,使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。 3〕物流场景。使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。 4〕物联网场景,使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,对这些信息讲行多维度的分析· 5)视频直播,使用MongoDB存用户信息、点赞互动信息等。 使用MongoDB共同特点: 1.数据量大 2.写入操作频繁 3.价值较低的数据,对事务性要求不高 1.1.2 什么时候选择MongoDB? 在架构选型上,除了上述的三个特点外,如果你还犹是否要选择它?可以考虑以下的一些问题: 应用不需要事务及复杂join支持 新应用,需求会变,数据模型无法确定。想快速迭代开发 应需要2000-3000以上的读写QPS(更高也可以) 应用需要TB至PB级别数存储 应甲发展迅速,需要能快速水平扩展 应甲要求存的数庭不丢失 应需要的99%高可用 应用需要大量的地理位置查询、文本查询 如果上述有1个符合,可以考虑MongoDB,2个及以上符合,选怿MongoDB绝不会后悔. 1.1.3 如果用mysql? 相对于mysql,MongoDB可以耕地的成本解决问题(包括学习,开发,运维等成本) 1.1.4MongoDB的特点 1.高性能:索引支持更快的查询,减少了数据库系统上的IO活动 2.高可用性:复制工具成为副本集,它可提供自动故障转移和数据冗余 3.高扩展性:水平扩展性 4.丰富的查询支持:支持读写,数据聚合,文本搜索和地理空间查询 5.其他特点:如无模式(动态模式)、灵活的文档模型 二、MongoDB简介 MongoDB是一个开源、高性能、无模式的文档型数据库。当初的设计就是用于简化开发和方便扩展,是nosql(非关系性)数据库产品中的一种。是最像关系型数据库(MySQL)的非关系型数据库。 它支持的数结构非常松散,是一种类似于JSON的格式叫BSON,所以它既可以存储比较复杂的数庭类型,又相当的灵活. MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。字段的数据类型是字符型,它的值除了便用基本的一些类型外,还可以包括其他文档、普通数组和文档数组 三、体系结构 Mysql和MongoDB对比 3.1 数据模型 MongoDB的小存储单位就是文档(document)对象。文档(document)对象对应于关系型数据库的行。数据在MongoDB中以 BSON(Binary-JSON)文档的格式存储在磁盘上。 BSON(Binary Serialized Document Format)是一种类json的一种二进制形式的存储格式,简称Binary JSON。BSON和JSON一样,支持 内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。 BSON采用了类似于 C 语言结构体的名称、对表示方法,支持内嵌的文档对象和数组对象,具有轻量性、可遍历性、高效性的三个特点,可 以有效描述非结构化数据和结构化数据。这种格式的优点是灵活性高,但它的缺点是空间利用率不是很理想。 Bson中,除了基本的JSON类型:string,integer,boolean,double,null,array和object,mongo还使用了特殊的数据类型。这些类型包括 date,object id,binary data,regular expression 和code。每一个驱动都以特定语言的方式实现了这些类型,查看你的驱动的文档来获取详 细信息。 BSON数据类型参考列表:

JAVA TCP结合线程使用

package Inter; import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class ServeDemo { public static void main(String[] args) throws IOException { ServerSocket ss = new ServerSocket(10000); while (true){ Socket s = ss.accept(); new Thread(new ServerThread(s)).start(); } } } package Inter; import java.io.*; import java.net.Socket; public class ServerThread implements Runnable { private Socket s; public ServerThread(Socket s) { this.s = s; } @Override public void run() { try { BufferedReader br = new BufferedReader(new InputStreamReader(s.

|NO.Z.00008|——————————|Deployment|——|Hadoop&EbProjec电商实时数仓项目.v08|---------------------------|EbProje

[BigDataHadoop:EbProject&电商实时数仓项目.V08] [Deployment.EbProject电商实时数仓项目][|EbProject:可视化&node_exporter部署.V3|]一、部署prometheus-exporter### --- 在系统层用作系统监控exporter ~~~ # 下载exporter版本包,主机是centos系统;因此用的监控export是node_exporter-0.16.0.linux-amd64.tar.gz , [root@hadoop00 software]# wget -c https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz### --- 解压node_exporter版本包 ~~~ # 解压node_exporter版本包 [root@hadoop00 software]# tar -zxvf node_exporter-1.0.1.linux-amd64.tar.gz -C ../servers/ ~~~ # 修改版本包目录名称 [root@hadoop00 servers]# mv node_exporter-1.0.1.linux-amd64/ node_exporter [root@hadoop00 ~]# chown -R root:root /opt/yanqi/servers/node_exporter/### --- 启动node_exporter版本包 ~~~ # 启动node_exporter版本包 [root@hadoop00 ~]# nohup /opt/yanqi/servers/node_exporter/node_exporter &二、在prometheus-web_UI下查看node_exporter是否在线### --- 在prometheus-web_UI下查看node_exporter是否在线 ~~~ 通过web-UI查看:http://hadoop00:9090/targets===============================END===============================Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.

07 sql函数

函数:切记函数和括号要紧密相连内置函数1.算术函数abs mod roundmax min avg sum count 这几个为聚集函数,特别在分组中常用 select abs(-1); select mod(101,2); select round(37.25,1); 2.字符串函数 concat,length,char_length,lower,upper,replace,substring select concat(111,222,333); select length(7777年后咕咕咕); select char_length(7777年后咕咕咕); select lower(777ABC); select upper(666abc); select replace(77acwing,77ac,77av); select substring(76543721,1,3); -- 765 第一位下标为1 3.日期函数 select current_date(); select current_time(); select current_timestamp(); -- 可以用year()平替 select extract(year from '2022-04-05 06:55:57'); -- 取日期 select date('2022-04-05 06:55:57'); -- 取时间 select time('2022-04-05 06:55:57'); -- 取小时 select hour('2022-04-05 06:55:57'); 4.转换函数 转换数据类型 自定义函数

Python线性回归应用举例

在发电场中电力输出(PE)与温度(AT)、压力(V)、湿度(AP)、压强(RH)有关。 (1)利用线性回归分析命令,求出其之间的线性回归关系数向量(包括常数项)和拟合优度 (2)AT=28.4,V=50.6,AP=1011.9,RH=80.54 预测PE值 1、读取数据,确定自变量x、因变量y import pandas as pd data = pd.read_excel('发电场数据.xlsx') data AT V AP RH PE 0 14.96 41.76 1024.07 73.17 463.26 1 25.18 62.96 1020.04 59.08 444.37 2 5.11 39.40 1012.16 92.14 488.56 3 20.86 57.32 1010.24 76.64 446.48 4 10.82 37.50 1009.23 96.62 473.90 ... ... ... ... .