minio对象存储
官网:
https://www.minio.org.cn/overview.shtml
什么是Minlo
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或 MySQL。
开源, S3 兼容, 让企业存储更强大,比快更快MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。
MinIO与传统的存储和其他的对象存储不同的是它一开始就针对性能要求更高的私有云标准进行软件架构设计。因为MinIO一开始就只为对象存储而设计。所以他采用了更易用的方式进行设计,它能实现对象存储所需要的全部功能,在性能上也更加强劲,它不会为了更多的业务功能而妥协,失去MinIO的易用性、高效性。 这样的结 ...
初级算法之字符串(一)
344. 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
思路一:从中间开始向两边遍历,然后两边交换位置,最终获得字符串的反转
123456789101112//class Solution { public void reverseString(char[] s) { int len = s.length,size = len; for(int i = 0;i < len/2;i++){ size--; char tmp = s[i]; s[i] = s[size]; s[size] = tmp; } }}
思路二:使用位运算,每次异或进行赋值
12345678910111213class Solution { public void reverseString(char[] s) { i ...
数据结构与算法之图的认识
什么是图定义包含
一组顶点:通常用V(Vertex)表示顶点集合
一组边:通常用E(Edge)表示边的集合
边是顶点对:(v,w)属于E,其中v,w属于V
有向边<v,w>表示从v指
3.不考虑重边和自回路
抽象数据类型定义
1.类型名称:图(Graph)
数据对象集:G(V,E)由一个非空的有限顶点集合V和一个有限边集合E组成(可以一条边都没有,但不 能一个顶点都没有)
操作集:对于任意图G属于Graph,以及v属于V,e属于E123456781. Graph Create():建立并返回空图2. Graph InsertVertex(Graph G, Vertex v):将v插入G3. Graph InsertEdge(Graph G, Edge e):将e插入G;4. void DFS(Graph G,Vertex v):从顶点v出发深度优先遍历图G;5. void BFS(Graph G,Vertex v):从顶点v出发宽度优先遍历图G;6. void ShortestPath(Graph G,Vertex v,int ...
初级算法之数组(二)
数组
删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
思路及代码遍历数组的每一个数,如果当前元素和下一个元素不一样,那么就加一.
123456789101112class Solution { public int removeDuplicates(int[] nums) { int index=0; for(int i=0;i<nums.length;i++){ if(nums[i]!=nums[index]){ ...
初级算法之数组(一)
删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
思路及代码遍历数组的每一个数,如果当前元素和下一个元素不一样,那么就加一.
123456789101112class Solution { public int removeDuplicates(int[] nums) { int index=0; for(int i=0;i<nums.length;i++){ if(nums[i]!=nums[index]){ ...
设计模式日常学习(三)
创建者模式二.工厂模式在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的;所以说,工厂模式最大的优点就是:解耦。
简单工厂模式(不属于GOF的23种经典设计模式)
工厂方法模式
抽象工厂模式
1.简单工厂模式简单工厂不是一种设计模式,反而比较像是一种编程习惯。
1.1 结构简单工厂包含如下角色:
抽象产品 :定义了产品的规范,描述了产品的主要特性和功能。
具体产品 :实现或者继承抽象产品的子类
具体工厂 :提供了创建产品的方法,调用者通过该方法来获取产品。
1.2 实现
123456789101112public class SimpleCoffeeFactory { public Coffee createCoffee(String type) { Coffee ...
牛客刷题笔记(二)
命令javac-d参数的用途-d destination 目的地-s source 起源地javac -d 指定放置生成的类文件的位置javac -s 指定放置生成的源文件的位置
杂记A.StringBuilder线程不安全,StringBuffer线程安全。B.同时用 abstract和final就会自相矛盾。C.Hashmap中的value可以之null,get(key)==null有两种情况,一是key不存在,二是该key中存的是null,所以应该使用map.containskey(key)返回的true/false来判断是否存在这个key。D.volatile关键字有两个作用:1.并发环境可见性:volatile修饰后的变量能够保证该变量在线程间的可见性,线程进行数据的读写操作时将绕开工作内存(CPU缓存)而直接跟主内存进行数据交互,即线程进行读操作时直接从主内存中读取,写操作时直接将修改后端变量刷新到主内存中,这样就能保证其他线程访问到的数据是最新数据2.并发环境有序性:通过对volatile变量采取内存屏障(Memory barrier)的方式 ...
设计模式日常学习二
跟着黑马的视频学习设计模式总结记录地址:BV1Np4y1z7BU
软件设计原则
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。
一.开闭原则对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节可以从抽象派生来的实现类来进行扩展,当软件需要发生变化时,只需要根据需求重新派生一个实现类来扩展就可以了。
二.里氏代换原则
里氏代换原则是面向对象设计的基本原则之一。
里氏代换原则:任何基类可以出现的地方,子类一定可以出现。通俗理解:子类可以扩展父类的功能,但不能改变父类原有的功能。换句话说,子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。如果通过重写父类的方法来完成新的功能,这样写起来虽然简单,但是整个继承体系的可复用性会比 ...
设计模式日常学习一
设计模式软件设计模式的概念软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。
学习设计模式的必要性设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。
正确使用设计模式具有以下优点。
可以提高程序员的思维能力、编程能力和设计能力。
使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。
设计模式分类
创建型模式用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF(四人组)书中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。
结构型模式用于描述如何将类或对象按某种布局组成更大的结构,GoF(四人组)书中提供了代理、适配器 ...
牛客刷题笔记(-)
java基本类型的默认值和取值范围字节型 : 0 -2^7—-2^7-1 byte b=10;字符型 : ‘ \u0000′ 0—-2^16-1 char c=’c’ ;short : 0 -2^15—-2^15-1 short s=10;int : 0 -2^31—-2^31-1 int i=10;long : 0 -2^63—-2^63-1 long o=10L;float : 0.0f -2^31—-2^31-1 float f=10.0Fdouble : 0.0d -2^63—-2^63-1 double d=10.0;boolean: false true\false boolean flag=true;
关于JAVA的垃圾回收机制java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具 ...