自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(45)
  • 收藏
  • 关注

原创 day11 redis HyperLogLog

redis HyperLogLogredis 在 2.8.9 版本添加了 HyperLogLog 结构redis HyperLogLog 是用来做基数统计的算法,HyperLogLog的优点是:在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的,并且很小。在 redis 里,每个HyperLogLog键只需要花费12kb内存,既可以计算接近 2^64个不同元素的技术。这和计算基数时,元素越多消耗内存越多的集合形成鲜明对比。但,HyperLogLog智慧根据输入元素来计算基数,而不会

2021-02-28 17:01:51 61

原创 day10 redis 有序集合(sorted set)

redis 有序集合(sorted set)redis 有序集合与集合一样都是string类型的元素集合,且不允许重复不同的是有序集合的每个元素都会关联一个double类型的分数,用于从小到大进行排序。有序集合的成员唯一,但是分数可以重复。实例ZADD name 1 redisZADD name 2 mongodbZADD name 3 mysqlZADD name 3 mysqlZADD name 4 mysqlZRANGE name 0 10 WITHSCORES1) "r

2021-02-28 15:50:30 69

原创 day9 redis 集合(Set)

redis 集合redis 的 set 是 String类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。redis 中集合是通过哈希表来实现的,所以添加、删除、查找的复杂度都是O(1)集合中最大的成员数为 2^32-1实例SADD name redisSADD name mongodbSADD name mysqlSMEMBERS name1) "mysql"2) "mongodb"3) "redis"redis 命令集合命令描述S

2021-02-28 15:49:52 59

原创 day8 redis 列表(List)

redis 列表(List)redis 列表时简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部或尾部一个列表最多可以包含 2^32-1 元素(40亿+)实例LPUSH name redisLPUSH name mongodbLPUSH name mysqlLPUSH name 0 101) "mysql"2) "mongodb"3) "redis"命令列表命令描述BLPOP key1[,key2] timeout移除并获取列表的第一个元

2021-02-27 21:23:07 69

原创 day7 redis 哈希(hash)

redis 哈希(Hash)redis 中 hash 是一个 string 类型的 field(字段)和value(值)的映射表,hash 特别适合用于存储对象。每个hash 可以存储 2^32-1 键值对(40亿+)实例HMSET info "hello world" 20 likes 3000HGETALL info1) hello world2) 203) likes4) 3000redis hash 命令列表命令描述HDEL key field1[,

2021-02-27 18:25:51 77 1

原创 day6 redis 字符串(String)

redis 字符串(String)redis 字符串数据类型的相关命令用于管理 redis 字符串值语法COMMAND KEY_NAME字符串命令表命令描述SET key value设置指定key的值GET key获取指定key的值GETRANGE key start end返回key中字符串值的子字符GETSET key value将给定key的值设为value,并返回key的旧值GETBIT key offset对 key 所存放的

2021-02-27 18:25:20 53

原创 day5 redis 键(key)

redis 键(key)语法redis 键命令 的基本语法:COMMAND KEY_NAME实例SET name "zs"DEL nameredis keys 命令命令描述DEL key该命令用于在key存在时删除keyDUMP key序列化给定key,并返回被序列化的值EXISTS key检查给定的key是否存在EXPIRE key seconds为给定key设置过期时间,以秒计EXPIREAT key timestampEXPI

2021-02-27 18:24:41 146

原创 day4 redis 客户端启动

redis 客户端启动redis命令用于在redis服务上执行操作。而要在redis 服务上执行命令需要一个redis 客户端。redis客户端在 redis的安装包中。启动客户端redis-cli在远程服务上执行命令redis-cli -h host -p port -a password在 credis-cli 后加上 --raw 可以防止可能出现的中文乱码问题。redis-cli --raw...

2021-02-27 18:24:10 103

原创 day3 redis 数据类型

redis 数据类型redis支持五种数据类型:string(字符串)、hash(哈希)、list(列表)、set(集合)及 zset(sorted set:有序集合)。string(字符串)string 是 redis 最基本的类型,你可以理解成与 Memcached 一样的类型,一个key对应一个value。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如 jpg图片或者序列化的对象。string 类型是 redis 最基础的数据类型,stri

2021-02-27 18:23:32 56

原创 day2 redis 配置

redis 配置redis 的配置文件位于 redis 安装目录下,名为redis.config(windows系统下名为 redis.windows.config)。可以通过 CONFIG 命令查看或设置配置项。查看配置语法redis的 CONFIG 命令格式:redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME使用 * 获取所有配置项redis 127.0.0.1:6379> CONFIG GET *示例red

2021-02-27 18:22:48 55

原创 day1 redis 简介

redis 简介redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库特点redis 支持数据持久化,可以将内存中的数据存放到本地磁盘中,重启时可以再次加载使用redis 不仅支持 key-value 类型的数据,同时提供 list、set、zset、hash 等数据结构的存储redis 支持数据的备份,即 master-slave 模式的数据备份redis 优势性能极高:redis能读的速度为 11w 次/s,写的速度为 8.1w 次/s。丰富的数据

2021-02-27 18:21:54 53

原创 python requests模块

关于python requests模块引入import request设置发送内容确定 url 路径url = "https://www.baidu.com"首先以字典方式存放传输值values = { "user":"zs", "age":20}将字典格式转换为我们需要的格式# 引入 json 模块import json# 转换data = json.dumps(values)准备请求头headers = { "content-

2021-02-25 15:55:28 139

原创 java关于方法引用的补充(::)

补充关于方法引用System.out.println()这是一个很普通的打印方法,我们日常使用,用来单行打印一些参数内容。System.out::println通过::可以看出,使用了方法引用,java8的新特性。查看System.out的代码public final static PrintStream out = null;查看printStream类的代码public void println() { newLine();}所以,调用流程应该是System类 -&gt

2021-02-24 18:02:10 77 1

原创 java关于JDBC

关于JDBC什么是 JDBCJDBC是一种用于执行 sql 语句的 java api。可以为多种关系型数据库提供同一访问,它由一组用 java 语言编写的类和接口组成。JDBC 提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。关于数据库驱动我们安装好数据库后,我们的应用程序也不能直接连接使用数据库,必须要使用相应的数据库驱动程序。其实就是数据库厂商的 JDBC 接口实现。在java中,这个驱动是 mysql-connector-java-8.0.16.jar,

2021-02-24 11:24:40 136

原创 java8 Stream

Java8 StreamJava8 Api 添加了一个新的抽象,称为流Stream,可以让你以声明的方式处理数据Stream 使用一种类似用 SQL语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。这种风格将要处理的元素集合看做流,流在管道中传输,并且可以在管道的节点上进行处理,如筛选、排序、聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。[外链

2021-02-23 15:15:43 79

原创 java8 新特性 方法引用(::)

java8 新特性2方法引用我们用Lambda表达式来实现匿名方法,但有些时候我们使用Lambda表达式仅仅是调用一些已经存在的方法,处理调用动作外,没有其他动作。这种情况下我们更倾向于通过方法名来调用它,而Lambda表达式可以帮我们实现这一要求。它使得Lambda在调用那些已经拥有方法名的方法的代码更加方便简洁。方法引用可以理解为Lambda表达式的另一种表现形式。方法的引用使用一对冒号::理解方法引用的根本,是对Lambda 表达式的进一步简化和省略。方法引用的分类静态方法引用 类

2021-02-22 15:33:44 94

原创 java8 新特性 Lambda

java8 新特性主要方面Lambda 表达式:Lambda允许把函数作为一个方法的参数(函数作为参数传递到方法中)方法引用:提供了非常有用的语法,可以直接引用已有java类或对象(实例)的方法或构造器。与 Lambda联合使用,方法引用可以使语言的构造更加紧凑简洁,减少冗余代码。默认方法:默认方法就是一个在接口里有了一个实现的方法。Date Time Api:加强对日期和时间的处理Optional类:该类已经是java8类库中的一部分,主要解决空指针异常。关于 Lambda 表达式L

2021-02-22 15:33:00 66

原创 java 多线程编程

java 多线程编程概念java 给多线程提供了内置的支持。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但是多线程使用了更小的资源开销。关于进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,知道所有的非守护线程都结束运行后才能结束。多线程可以满足程序高效率运行充分利用cpu的目的。一个线程的生命周期新建:使用 new关键字和

2021-02-20 15:41:22 98

原创 java 简单理解 BIO、NIO、AIO编程

简单理解 BIO、NIO、AIO编程同步与异步同步和异步是针对应用程序与内核的交互而言的。同步指的是用户进程触发 IO操作并等待或者轮询去查看 IO操作是否就绪,而异步是指用户进程触发 IO操作以后便开始做自己的事情,而当 IO操作已经完成的时候会得到 IO完成的通知。简而言之,同步会专注执行这一操作,而异步则只关注开头和结果,中间交由系统完成,不在关注。阻塞与非阻塞阻塞和非阻塞是针对进程在访问数据的时候,根据 IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作方法的实现方式,

2021-02-19 22:01:45 91

原创 java 网络编程

java 网络编程概念网络编程是指编写运行在多个设备的程序,这些设备通过网络连接起来。java.net包中的api类和接口,提供了低层次的通信细节,可以直接调用。其中提供了两种常见的网络协议的支持:TCP通信:这是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP层是位于IP层上、应用层下的中间层。通常用于互联网协议,被称为 TCP/IP 。UDP通信:一个无连接的协议。提供了应用程序之间要发送数据的数据报。由于缺乏可靠性,所有应用程序通常必须容许一些丢失、错误、重复的数据包。一般用

2021-02-19 16:07:11 115

原创 java 关于文档注释

关于文档注释java中的文档注释,除了可以在日常开发中方便查看具体功能外,也可以通过工具抽取,生成具体文档,集中整理。标签列表标签描述@author作者@deprecated指明一个过期的类或成员{@docRoot}指明当前文档根目录的路径@exception标志一个类抛出的异常{@inheritDoc}从直接父类继承的注释{@link}插入一个到另一个主题的链接{@linkplain}插入一个到另一个主题的链接,但是该链接显示

2021-02-16 11:05:38 114

原创 java mysql 数据库连接

mysql 数据库连接这里主要是使用 JDBC 连接mysql 数据库驱动包下载地址:http://dev.mysql.com/downloads/connector/j/请注意驱动包的版本要与mysql的版本一致。在mysql8.0以上的版本,数据库连接会存在不同。使用需要将我们下载的 mysql 驱动包导入到项目中,且mysql已开启。加载驱动和连接数据库方式如下:Class.forName("com.mysql.cj.jdbc.Driver");conn = DriverMana

2021-02-16 10:36:23 67

原创 java序列化

java序列化java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。将序列化对象写入文件后,可以从文件中读取出来,并且对它进行反序列化,也就是说,对象的类型信息、对象的数据,还有对象中数据类型可以用来在内存中新建对象。整个过程都是jvm独立的,在一个平台中序列化的对象可以在另一个平台反序列化恢复该对象。类 ObjectInputStream 和 ObjectOutputStream 是高层次的数

2021-02-15 21:25:30 60

原创 java 泛型

泛型概念泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型方法我们可以声明一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译时适当的处理每一个方法调用。规则:所有泛型方法声明都有一个类型参数声明部分(尖括号隔开),该类型参数声明部分在方法返回类型之前。每个类型参数声明部分包含一个或多个类型参数,参数间逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指

2021-02-15 20:29:14 55

原创 java Object类

Object类##概念Object类是所有类的父类,也就是说java的所有类都继承了Object,子类可以使用Object的所有方法。Object类位于 java.lang 包中,编译时自动导入。方法列表方法描述protected Object clone()创建并返回一个对象的拷贝boolean equals(Object obj)比较两个对象是否相等Class<?> getClass()获取对象的运行时对象的类protected vo

2021-02-15 12:59:34 55

原创 java Iterator 迭代器

Iterator 迭代器java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。Iterator 是 java 迭代器最简单的实现,ListIterator 是 Collection Api中的接口,它扩展了 Iterator接口。相关操作迭代器的基本操作包括 next、hasNext、remove调用 it.next() 返回迭代器的下一个元素,并更新迭代器的状态调用 it.hasNext() 用于检测集

2021-02-15 12:42:58 49

原创 java HashSet

HashSet基于 HashMap 来实现,是一个不允许有重复元素的集合。允许有null值。HashSet是无序的,不会记录插入顺序。HashSet不是线程安全的,如果多线程尝试同时修改HashSet,最终结果是不确定的,必须在多线程访问时显式同步对 HashSet 的并发访问。HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。创建HashSet<String> hs = new HashSet<String>();添加元素hs.add

2021-02-14 13:41:57 200 2

原创 java HashMap

HashMapHashMap 是一个散列表,它存储的内容为键值对映射。它实现了Map接口,根据键的HashCode值来存储数据,具有很快的访问速度,最多允许一条数据的键为 null,不支持线程同步。HashMap是无序的,即不会记录插入顺序。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vmsD1Klk-1613276579289)(HashMap.png)]HashMap 的 value 值不做强制要求。HashMap 中的元素实际上是对象,一些常见的基础类

2021-02-14 12:23:29 101

原创 java LinkedList

LinkedList概念链表是一个常见的基础数据类型,是一种线性表,但并不会按线性的顺序存储数据,而是在每一个节点存储下一个节点的地址。java 中,LinkedList类似于 ArrayList,是一种常用的数据容器。与ArrayList相比,LinkedList增加和删除元素的效率更高,但是查找和修改元素内容的效率较低。适用范围适用 ArrayList频繁访问元素中的某一个元素只需要在列表末尾进行添加和删除元素操作。适用 LinkedList只需要通过循环迭代来访问列表中的某

2021-02-14 11:36:10 84

原创 java ArrayList

ArrayListArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它没有长度大小的限制。我们可以随意增加或删除元素。ArrayList 继承了 AbstractList,并实现了List接口。ArrayList 类位于 java.util 包内。import java.util.ArrayList;ArrayList<E> objectName = new ArrayList<>(); // 初始化添加元素使用add()方法,添加元素到Arr

2021-02-14 10:50:19 93

原创 java集合框架

集合框架框架结构概念接口:是代表集合的抽象数据类型。如 Collection、List、Set、Map等。之所以定义多个接口,是为了以不同的方式操作集合对象。实现(类):是集合接口的具体实现。从本质上讲,他们是可重复使用的数据结构,如 ArrayList、LinkedList、HashSet、HashMap。算法:是实现集合接口的对象里的方法执行的一些有用的结算。如 搜索和排序。这些方法被称为多态,因为相同的方法可以在相似的接口上有不同的实现。除了集合,框架也定义了几个Map接口和类,Ma

2021-02-13 22:22:30 62

原创 java包(package)

关于包(package)作用把功能相似或相关的类或接口组织在同一个包中,方便查找使用包也限定访问权限,拥有包访问权限的类才能访问某个包中的类。如同文件夹一样,包也可以采用树形结构的存储方法。java 使用包这种机制是为了防止命名冲突,访问控制,提供搜索和定位类、接口、枚举、注释等。import 关键字为了能够使用某一个包中的成员,我们需要在 java 程序中明确导入该包。该语句应该位于package语句之前,所有类的定义之前,可以有多条。import java.io.*;packag

2021-02-09 16:31:37 83

原创 java枚举(enum)

枚举(enum)枚举是一种特殊的类,一般表示一组常量,比如一年的四季,一个的12个月,一周的七天等。java枚举使用关键字 enum 来定义,各个常量使用逗号,来分隔实例enum Color{ RED,GREEN,BLUE;}public class Test{ public static void main(String[] args){ Color c1 = Color.RED; System.out.print(c1); }}每个枚举都是通过 Class 在内部实

2021-02-08 17:42:01 129

原创 java接口

java接口接口在java中是一个抽象类型,是抽象方法的集合。通常使用 interface声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。值的注意的是接口并不是类,编写接口的方式与类很相似,但他们是不同的概念。接口包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口不能被实例化,但是可以被实现。一个实现接口的类,必须实现接口中描述的所有方法,否则就必须声明为抽象类。另外在java中,接口类型可以用来声明一个变量,他们可以成为一个空指针,或被绑定在一个以此接

2021-02-08 16:15:10 830

原创 java抽象类

抽象类在面向对象中,并不是所有类都是用来描绘对象的,如果一类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类不能实例化对象,但类的其他功能他都有。因为不能实例化对象,所以抽象类必须被继承才能使用。在java中 抽象类表示一种继承关系。一个类可以继承一个抽象类,而一个类却可以实现多个接口。抽象类在java中,使用 abstract class来定义抽象类。public abstract class Employee{ private String name; priva

2021-02-08 15:33:41 137

原创 java重写与重载

重写与重载重写(Override)重写是子类对父类允许访问的方法的实现过程进行重新编写,返回值和参数不能变,即外壳不变,核心重写。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如,父类方法抛出异常为 IOException异常,则重写方法不能抛出 Exception异常这种父类异常。方法的重写规则参数列表与被重写方法的参数列表必须相同返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类。访问权限不能比父类中被重写的方法的访问权限更低。例如:父类方法被

2021-02-07 14:19:08 86

原创 java面向对象的三个特性(封装、继承、多态)

面向对象的三个特性(封装、继承、多态)封装封装是指一种将抽象性函数式接口的实现细节包装、隐藏起来的方法。封装可以防止该类的代码和数据被外部定义的代码随机访问到。要访问该类的代码和数据必须要通过严格的接口控制。封装主要功能在于我们能修改自己的实现代码,而不是修改那些我们调用的程序片段。适当的封装可以让程序代码更容易理解和维护,提高了程序代码的安全性。优点:良好的封装能够减少耦合类内部的结构可以自由修改隐藏实现细节和信息可以精细操作成员变量实现封装的步骤修改属性的可见性来限制对属

2021-02-07 12:08:25 119

原创 java字符文件流

字符文件流java.io 包几乎包含了所有操作输入、输出需要的类。读取控制台输入BufferedReader br = new BufferedReader(new InputStreamReader(System.in));从控制台读取多字符输入从BufferedReader对象读取一个字符要使用 read() 方法。int read() throws IOException每次调用 read 方法,它从输入流读取一个字符并作为 整型返回,结束时返回-1.从控制台读取字符串使用Buf

2021-02-04 18:08:25 792

原创 java学习笔记 day17

正则表达式正则表达式定义了字符串的模式。可以用来搜索、编辑或处理文本。正则表达式并不限于某一种语言,但是在每种语言中都存在细微差别。按需要点击java 正则表达式

2021-02-04 16:57:58 70

原创 java日期时间

日期时间获取当前时间日期Date date = new Date();System.out.print(date.toString());使用 SimpleDateFormat 格式化日期Date date = new Date();SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");System.out.print(ft.format(date));日期和时间的格式化编码字母描述示例

2021-02-04 16:51:55 136

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除