Java
文章平均质量分 82
Piconjo_Official
你的生活我的梦.
展开
-
SnowFlake雪花算法的介绍及Java实现(工具类)
一、概念❄ 什么是雪花算法SnowFlake算法是Twitter公司出品的开源的分布式id生成算法其特点为 使用一个64 bit的long型的数字作为全局唯一 id雪花算法在分布式系统中的应用十分广泛 且引入了时间戳 基本保持自增的❄ 雪花算法字符串各部分的含义第1位是符号位 始终为0(这是因为生成的id都是正数 而在二进制中第一个bit若为0则不为负数)后面是41位的时间戳 精确到毫秒级41位的长度可以表示2^41-1个毫秒值 也就是说可以使用69年时间戳还有一个很重要的作用 可以原创 2020-06-23 20:41:20 · 10633 阅读 · 0 评论 -
在Java中DES加密/解密的实现[工具类]
使用前需导入Crypto包:<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-crypto</artifactId> <version>5.2.1.RELEASE</version></dependency>Utils工具类:import sun.mis原创 2020-06-02 14:51:23 · 2006 阅读 · 0 评论 -
在Java中MD5、SHA、SHA256、SHA512加密的实现[工具类]
话不多说 直接上Utils:import java.security.MessageDigest;/** * @author Piconjo * @date 2020/6/1 18:45 */public class EncryptionDecryptionUtil { private enum DigestType{ MD5("MD5") ,SHA("SHA") ,SHA256("SHA-256") ,SHA512("原创 2020-06-02 14:45:15 · 3630 阅读 · 0 评论 -
Java封装工具类实现七牛云的文件上传、删除和刷新
七牛云的认证用户有10G的免费额度 用于储存图片之类的文件非常方便 使用起来也很简单为方便使用 封装了个工具类1、如何获取密钥(AccessKey和SecretKey)进入密钥管理:查看AccessKey和SecretKey:2、如何查看工作空间和存储区域:3、为何要刷新文件七牛云存储的文件默认是有缓存的 当删除之后还能用url访问到若想删除之后立刻无法用url访问图片 在删除之后调用方法刷新该url即可public class QiniuCloudUtil { // 密钥1原创 2020-05-18 15:26:22 · 3438 阅读 · 0 评论 -
详解用Java实现爬虫:HttpClient和Jsoup的介绍及使用(请求方式、请求参数、连接池、解析获取元素)
一、介绍:何为爬虫网络爬虫(Web crawler)也叫做网络机器人 可以代替人 自动地在互联网中进行数据信息的采集和整理是一种按照一定的规则 自动地抓取万维网信息的程序或者脚本可以自动采集所有其能够访问到的页面的内容 以获取相关数据在大数据时代 信息的采集是一项重要的工作而互联网中的数据是海量的 如果单纯靠人力进行信息采集 不仅低效繁琐 搜集的成本也会提高爬虫技术就是为了解决如何高效...原创 2020-03-24 18:37:52 · 8560 阅读 · 0 评论 -
两种思考方式解决Java算法之经典兔子问题(斐波那契数列)
题外话:今天小测验的题目考到了兔子问题 觉得对算法还是不能忽视 特此记录一下问题:一对兔子 从出生后第3个月起每个月都生一对兔子小兔子长到第三个月后每个月又生一对兔子假如兔子都不死 问每个月的兔子总数为多少 ?解决:1、思考方式一:分析法已知 兔龄2个月及2个月以上的兔子 在新的1个月 每只都会生1对兔子那么对于新的这个月来说 之前兔龄2个月及2个月以上的兔子就是2个月前的兔子总数...原创 2020-03-06 17:26:29 · 8213 阅读 · 0 评论 -
详解Java的IO流Part1:字节输入流(InputStream)和字节输出流(OutputStream)
计算机上数据的传输可以看做是一种数据的流动 按照流动的方向 以内存为基准 分为 输入input 和 输出output即 流向内存是输入流 流出内存的输出流流:数据(字符 字节)1个字符=2个字节 1个字节=8个二进制位Java中I/O操作是使用 java.io 包下的内容进行输入输出操作输入也叫做读取数据 将硬盘中的数据读取到内存中使用输出也叫做作写出数据 将内存中的数据写入到硬盘中...原创 2020-03-06 23:30:29 · 8967 阅读 · 0 评论 -
详解Java的IO流Part2:字符输入流(Reader)和字符输出流(Writer)
用字节流读取的时候 在遇到中文字符时不会显示完整的字符因为一个中文字符存储时会占用多个字节(GBK:占用2个字节 UTF-8:占用3个字节)因而 用字节流每次读取的是1/2或1/3个字 转换为char类型显示出来的是乱码因此 Java提供了字符流类 可以以字符为单位读写数据 专门用于处理文本文件一、字符输入流 Readerjava.io.Reader抽象类是表示用于读取字符流的所有类的...原创 2020-03-07 13:36:42 · 8108 阅读 · 0 评论 -
详解Java的IO流Part3:Properties属性集的使用
概述:java.util.Properties继承于Hashtable 表示一个持久的属性集它使用键值结构存储数据 每个键及其对应值都是一个字符串该类也被许多Java类使用 比如获取系统属性时System.getProperties方法就是返回一个Properties对象Properties集合是唯一和IO流相结合的集合可以使用Properties集合中的store()方法 将集合中的临...原创 2020-03-08 17:17:07 · 7790 阅读 · 0 评论 -
详解Java的IO流Part4:Buffered缓冲流/高效流(字节缓冲流和字符缓冲流)
缓冲流是在基本的流对象基础之上创建而来的 相当于是对基本流对象的一种增强缓冲流 也叫高效流 是对4个基本的File流的增强 所以也是4个流 将它们按照数据类型分类:字节缓冲流: BufferedInputStream 和 BufferedOutputStream字符缓冲流: BufferedReader 和 BufferedWriter缓冲流的基本原理是在创建流对象时即创建一个内置的默认大...原创 2020-03-09 15:38:42 · 8072 阅读 · 0 评论 -
详解Java的IO流Part5:转换流(IO流字符编解码的处理/输入转换流和输出转换流)
编码问题在IDEA中使用文件字符输入流FileReader读取项目中的文本文件时 由于IDEA的默认设置为UTF-8编码 因此没有任何问题但当读取Windows系统中创建的文本文件时 由于Windows系统的默认是GBK编码 就会出现诸如此类的乱码:����˧��那么 该如何读取GBK类型的文件呢?我们需要转换流!一、InputStreamReader 输入转换流java.io.Inp...原创 2020-03-09 22:50:24 · 8703 阅读 · 0 评论 -
详解Java的IO流Part6:对象序列化流/反序列化流和transient瞬态关键字
Java提供了一种对象序列化的机制:用一个字节序列可以表示一个对象 该字节序列包含该对象的数据 类型 和 对象中存储的属性等信息字节序列写出到文件之后 相当于文件中持久保存了一个对象的信息反之 该字节序列还可以从文件中读取回来 重构对象 对它进行反序列化对象的数据 对象的类型和对象中存储的数据信息 都可以用来在内存中创建对象例:Person p=new Person("陈涛",18)...原创 2020-03-10 22:45:23 · 7814 阅读 · 0 评论 -
详解Java的IO流Part7:PrintStream打印流【完结】
平时在控制台打印输出是调用print()方法和println()方法完成的实际上 这两个方法都来自于java.io.PrintStream类该类能够方便地打印各种数据类型的值 是一种便捷的输出方式PrintStream打印流java.io.PrintStream打印流继承了OutputStreamPrintStream为其它输出流添加了功能 使它们能够方便地打印各种数据值表示形式构造方...原创 2020-03-10 23:27:21 · 7863 阅读 · 0 评论 -
Java IO流实现文件的复制(FileInputStream和FileOutputStream)
无论是什么格式 只要是文件 都是以字节的方式存储在计算机中的因此 使用字节流的方式 可以读写任意的文件需要两个流 一读一写一个读取被复制的文件 一个写到目标目录中步骤:1、创建一个字节输入流对象 构造方法中绑定要读取的数据源2、创建一个字节输出流对象 构造方法中绑定要写入的目的地3、使用字节输入流对象中的read()方法读取文件4、使用直接输入流中的write()方法 将读取到的...原创 2020-03-07 00:14:52 · 7829 阅读 · 0 评论 -
Java的File过滤器(FileFilter和FilenameFilter)
public File[] listFiles() :返回一个File数组 表示该File目录中的所有的子文件或目录listFiles()方法可传入两种参数实现文件的过滤listFiles(FileFilter filter)和listFiles(FilenameFilter filter)1、FileFilter文件过滤器java.io.FileFilter接口:用于抽象路径名(File...原创 2020-03-05 20:19:54 · 12030 阅读 · 0 评论 -
详解Java的File类(成员变量、构造方法及常用方法)
一、概述java.io.File 类是文件和目录路径名的抽象表示主要用于文件和目录的创建 查找和删除等操作Java将电脑中的文件和文件夹目录封装为了一个File类可以使用File类对文件和文件夹进行操作可以使用File的方法来:创建一个文件/文件夹删除文件/文件夹获取文件/文件夹判断文件/文件夹是否存在对文件夹进行遍历获取文件的大小File类是一个与系统无关的类 任何操...原创 2020-03-05 14:51:50 · 9504 阅读 · 0 评论 -
Java函数、静态(static)、类变量和类函数
一、函数在函数中可以直接写成员变量的名字来访问成员变量那么究竟访问的是哪个对象的呢?函数是通过对象来调用的v.insertMoney()此次调用临时简历了insertMoney()和v之间的关系让insertMoney()内部的成员变量指向的是v的成员变量thisthis.XX==XXthis是成员函数的一个特殊的固有的本地变量它表达了调用这个函数的那个对象static静...原创 2020-03-01 00:18:16 · 8811 阅读 · 1 评论 -
Java8的Lambda表达式(箭头函数)
函数式编程思想在数学中 函数就是有输入量和输出量的一套计算方案 也就是“拿什么东西做什么事情”相对而言 面向对象过分强调必须通过对象的形式来做事情而函数式思想则尽量忽略面向对象的复杂语法——强调做什么 而不是以什么形式做面向对象的思想:做一件事情 找一个能解决这个事情的对象 调用对象的方法 完成事情函数式编程思想:只要能获取到结果 谁去做的 怎么做的都不重要,重视的是结果 不重视过...原创 2020-03-04 17:59:25 · 12507 阅读 · 0 评论 -
Java的一维数组、二维数组及数组复制(arraycopy)
一维数组★定义一个数组☆方法1:格式:int(数组格式)[](两个方括号) test(数组名) = new(表示初始化) int(数组格式) [(数字)例:100](表示数组里可以存放多少数据)意思是创建新的100个存放int的数组交给test数组变量例:定义a[10]注意:此方法数组里的数据仓库编号是从0开始的即 a[0]、a[1]…、a[10]☆方法2:格式:int(...原创 2020-02-29 23:22:15 · 9038 阅读 · 0 评论 -
Java多线程Part1:线程(Thread)的介绍及实现
一、 并发与并行1、并发并发:指两个或多个事件在同一个时间段内发生它们会交替执行在操作系统中安装了多个程序 并发指的是在一段时间内宏观上有多个程序同时运行在单 CPU 系统中 每一时刻只能有一道程序执行 即微观上这些程序是分时的交替运行只不过是给人的感觉是同时运行 那是因为分时交替运行的时间是非常短的2、并行并行:指两个或多个事件在同一时刻发生(同时发生)它们会同时执行而在...原创 2020-03-02 00:09:26 · 8063 阅读 · 0 评论 -
Java多线程Part2:线程(Thread)的安全问题和同步机制
一、线程安全问题1、概述单线程程序不会出现安全问题就像电影院只有一个售票窗口 这个窗口售卖所有的票多线程程序 没有访问共享数据 也不会产生问题就像电影院有三个售票窗口 每个窗口售卖三分之一不重复的票多线程程序 访问共享数据 此时会产生问题就像电影院有三个售票窗口 每个窗口售卖所有的票★比如说 第一个窗口卖第100号票 第二个窗口也在卖第100号票此时出现了重复的票★比如说 第一...原创 2020-03-02 20:28:08 · 8024 阅读 · 0 评论 -
Java多线程Part3:线程(Thread)的状态和等待唤醒机制
一、线程状态概述当线程被创建并启动以后 它既不是一启动就进入了执行状态 也不是一直处于执行状态 在线程的生命周期中有很多种状态:New(新建状态) 线程刚被创建 但是并未启动 还没调用start方法Runnable(可运行状态)线程可以在java虚拟机中运行的状态 可能正在运行自己的代码 也可能没有Blocked(锁阻塞状态) 当一个线程试图获取一个对象锁 而该对象锁被其他的线程持有 则该...原创 2020-03-03 23:55:48 · 8624 阅读 · 0 评论 -
Java多线程Part4:线程池(ThreadPool)的介绍及使用【完结】
在使用线程的时候就去创建一个线程 这样实现起来非常简便 但有一个问题:如果并发的线程数量很多 并且每个线程都是执行一个时间很短的任务就结束了 这样频繁创建线程就会大大降低系统的效率 因为频繁创建线程和销毁线程需要时间有一种办法 可以使得线程可以复用 线程在执行完一个任务并不被销毁 而是可以继续执行其他的任务在Java中可以通过线程池来达到这样的效果一、概念线程池:顾名思义 像一个池子 其...原创 2020-03-04 12:21:52 · 7947 阅读 · 0 评论 -
Java基础语法知识点整理(注释、命名规则、类型转换、访问权限、运算符、逃逸字符、包裹类型、包装类和输出语句)
介绍一下Java的基础语法知识点 内容可能会比较杂一、注释//单行注释 快捷键:ctrl+//* 多行注释 */ 快捷键:ctrl+shift+//** 文档注释 */ 快捷键:输入/**+enter注:快捷键为IDEA里的二、命名规则可用大小写字母,数字,下划线,$不能以数字开头命名规则要有意义比如age,userName尽量避免a,b等无意义字符类名或接口名:每个单词...原创 2020-02-29 19:57:03 · 8186 阅读 · 0 评论 -
Java网络通信Part1:网络基础知识及通信协议
一、软件结构B/S:Browser/Server 浏览器/服务器模式C/S:Client/Server 客户端/服务器模式二、网络通讯协议网络通讯协议是一种规则 对数据的传输格式 传输速率 传输步骤等做了统一规定通信双方必须同时遵守才能完成数据交换1、通讯协议的层级应用层负责应用程序的协议例:HTTP协议 FTP协议 等运输层使网络程序进行通信可采用TCP协议也可采用UDP...原创 2020-03-02 20:58:11 · 8017 阅读 · 0 评论 -
Java网络通信Part2:TCP通信及Socket
一、TCP通信概念TCP通信:实现两台计算机之间的数据交互严格区分客户端(Client)和服务器端(Server)客户端和服务端会建立一个逻辑连接这个连接中包含一个对象 即IO对象客户端和服务端即可使用IO对象来进行通信通信数据不仅仅是字符 因此IO对象为字节流多个客户端同时和服务器进行交互 服务器必须明确和哪个客户端进行的交互在服务器端有一个方法:accept() 能够获取到请...原创 2020-03-02 21:14:02 · 7818 阅读 · 0 评论 -
Java网络通信Part3:文件的上传及优化【完结】
一、原理【客户端】读取本地的文件 将文件上传到服务器【服务器】再把上传的文件保存到服务器的硬盘上1、客户端使用【本地字节输入流】 读取要上传的文件2、客户端使用(网络字节输出流) 将读取到的文件上传到服务器3、服务器使用(网络字节输入流) 读取客户端上传的文件4、服务器使用【本地字节输出流】 将读取到的文件保存在服务器的硬盘上5、服务器使用(网络字节输出流) 给客户端回写"上传成功"...原创 2020-03-02 22:36:53 · 7890 阅读 · 0 评论 -
详解Java的反射技术
一、概念反射:框架设计的灵魂框架:半成品软件可以在框架的基础上进行软件开发 简化编码反射机制:将类的各个组成部分封装为其他对象相当于创建了一个大的数组 存放了所有的成员变量又创建了另一个大的数组 存放了所有的构造方法还创建了另一个大的数组 存放了所有的成员方法优点可以在程序的运行过程中操作这些被封装了的对象因为已经被封装好了 因此只需要操作这个封装了所有对象的"大数组"即可...原创 2020-03-01 14:47:59 · 7893 阅读 · 0 评论 -
Java的异常捕捉(Exception)
异常的概念:在Java当中 它是把所有异常信息封装起来 放在一个类里 当遇到异常时 会创建异常类对象 并且抛出Exception和Error的区别:Exception:异常信息 - 发生异常的原因和位置是可以处理的 处理完之后 程序是可以继续执行的在编译 运行时期都可能发生Error:必须修改源程序才能解决(有些问题修改了源程序也未必能解决)只有在运行的时候发生 无法解决什么能扔(抛...原创 2020-03-01 13:31:19 · 8814 阅读 · 0 评论 -
浅谈Java中的泛型通配符
泛型语法:<数据类型>ps:因为()被声明用掉了 []被数组和正则表达式用掉了 {}被方法体用掉了 所以只能用<>符号了<E>中的E为变量例:ArrayList<Integer> arr=new ArrayList<Integer>();定义了<>泛型 就只能存这种类型的数据HashSet<String&...原创 2020-03-01 13:06:34 · 7714 阅读 · 0 评论 -
Java日期格式与文本格式的互相转化
一、将日期【格式化】地转化为String文本1、先有日期,通过Date获取日期对象Date date1=new Date();2、创建格式器对象DateFormat 创建日期格式化对象DateFormat dateFormat1=DateFormat.getDateInstance(DateFormat.LONG);//可传入FULL LONG MEDIUM SHORT 四种参数 各有不...原创 2020-02-29 23:43:15 · 9093 阅读 · 0 评论 -
Java的字符串变量
创建new = 创建☆方法1:String s = new String("a string");创建了一个String的对象用"a string"初始化这个对象创建管理这个对象的变量s让s管理这个对象☆方法2:String s = "a string"编译器自动创建一个String类的变量交给s管理字符串的连接用加号"+"连接当"+"的一边是字符串而另一边不是时...原创 2020-02-29 23:37:32 · 9092 阅读 · 2 评论 -
Java的类与对象、封装和多态
一、概念对象是实体 需要被创建 对象可以帮我们做事情类是规范 我们需要根据类的定义来创建对象得先有这个类 才能根据这个类来创建相应的对象二、定义类★创建对象例:new Machine();或Machine machine= new Machine();★让对象做事例:首先要:void work(){ ........................}或vo...原创 2020-02-29 23:03:29 · 8065 阅读 · 0 评论 -
Java的函数和构造函数
何为函数?可以从另一个地方调用这个函数来实现一些计算当一个函数被调用时,程序就转到这个函数中去运行,函数体里的语句就一条一条地被调用。一旦函数运行结束,就又回到调用它的地方去继续运行。Java的函数必须定义在类的内部 成为类的成员例子:<返回类型> <方法名称>(<参数表>){ <方法体>}public static void...原创 2020-02-29 20:08:40 · 7985 阅读 · 0 评论 -
Java的同步锁和同步方法(synchronized)
一、同步锁当多个线程使用同一个共享资源时 可以将处理共享资源的代码放置在一个代码块中使用synchronized关键字来修饰 被称作同步代码块同步锁(又称 对象监视器)语法:synchronized(lock)//此处的lock为任意对象{}例:@Override public void run() { while (true) { s...原创 2020-02-29 18:05:48 · 8337 阅读 · 0 评论 -
Java的条件语句和循环语句
一、条件语句1、if注:(判断条件要放于小括号中),{执行语句要放于花括号中}具体语法格式:if (条件语句){ㅤ执行语句}2、if···else具体语法格式:if (条件语句){ㅤ执行语句1}else{ㅤ执行语句2}3、if···else if···else具体语法格式:if (条件语句1){ㅤ执行语句1} else if (判断条件2){ㅤ执行...原创 2020-02-29 15:44:58 · 8057 阅读 · 0 评论 -
Java的label标签:快速跳转
设定下面一个循环名为MAIN_LOOP用法:MAIN_LOOP: (记得标签后要加冒号)for(................){ㅤif (...............)ㅤ{ㅤㅤcontinue MAIN_LOOP; (表示continue的是for而不是if,否则continue的会默认是if)ㅤ}}标签还是尽量不要使用 会破坏程序的结构...原创 2020-02-29 15:48:55 · 8267 阅读 · 0 评论 -
Java的继承(extend),super和this
一、继承:子类获得父类中所有非私有的变量和方法就像一个儿子继承了父亲 那么父亲有的东西儿子也有注:只支持单继承 不允许多重继承 一个类只能有一个直接父类多个类可以继承一个父类 可以多重继承继承的关键字:extendsstatic class Son extends Father{}子类中所有的构造方法默认都会访问父类中空参数的构造方法每一个构造方法的第一条语句默认都是supe...原创 2020-02-29 16:00:47 · 8194 阅读 · 0 评论 -
Java的抽象、接口(interface)与实现(implement)
一、abstract抽象类抽象是什么?顾名思义,抽象就是很抽象…(废话抽象类是一种思想 反映了很多类共有的一些特征抽象方法在定义方法时不写方法体 不包含方法体必须用abstract关键字来修饰例:abstract void shout();1、抽象方法没有方法体 不能被调用2、包含抽象方法的类必须声明为抽象类 但抽象类可以不包含任何抽象方法3、抽象类不能被实例化4、抽象类的子...原创 2020-02-29 16:09:55 · 9594 阅读 · 0 评论 -
Java的API(各种自带的类)
一、String字符串类1、字符串的获取功能:java int length() 返回此字符串的长度char charAt(int index) 返回字符串中index位置上的字符int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引int indexOf(String str) 返回第一次出现某段字符的位置int lastIndexOf(Stri...原创 2020-02-29 16:56:36 · 8414 阅读 · 0 评论