![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 63
小小白ovo
那些不起波澜的日复一日,总有一天会让你看到坚持的意义
展开
-
Java | 还在傻傻的用new()或者bulider来转换对象?只需要一个注解即可解决!
Java | 还在傻傻的用new()或者bulider来转换对象?只需要一个注解即可解决!原创 2024-07-19 10:13:10 · 273 阅读 · 0 评论 -
GitHub爬虫项目详解
GitHub爬虫项目原创 2023-10-05 23:51:36 · 2218 阅读 · 0 评论 -
java调用js文件的两种方法(支持V8引擎)
java调用js文件的两种方法(支持V8引擎)原创 2023-09-05 17:11:17 · 3394 阅读 · 7 评论 -
java实现生成RSA公私钥、SHA256withRSA加密以及验证工具类
java实现生成RSA公私钥、SHA256withRSA加密以及验证工具类原创 2023-08-25 17:00:58 · 2079 阅读 · 1 评论 -
java | 使用Cipher类实现AES所有常用加密模式
java | 使用Cipher类实现AES所有常用加密模式原创 2022-12-28 14:48:21 · 3717 阅读 · 0 评论 -
【java】opencv + Tesseract(tess4j) 实现图片处理验证码识别
java + opencv + Tesseract 实现图片验证码识别和训练原创 2022-12-22 17:23:05 · 4384 阅读 · 1 评论 -
static作用
static方法:一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。static变量:static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本【存放在方法区】,它当且仅当在类初次加载时会被初始化。而非..原创 2021-03-10 13:15:20 · 118 阅读 · 0 评论 -
GC垃圾收集器
GC垃圾收集器原创 2020-11-30 20:15:45 · 695 阅读 · 0 评论 -
从0开始了解垃圾回收(GC)
简介Garbage Collection(GC),Java进程在启动后会创建垃圾回收线程,来对内存中无用的对象进行回收。原创 2020-11-26 15:17:18 · 403 阅读 · 0 评论 -
jvm | java类加载机制和类加载器(ClassLoader)详解
jvm | java类加载机制和类加载器(ClassLoader)详解原创 2020-11-21 09:50:56 · 360 阅读 · 1 评论 -
多线程 | Lock体系
锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。在Lock接口出现之前,java程序主要是靠synchronized关键字实现锁功能的,而JDK5之后,并发包中增加了lock接口,它提供了与 synchronized一样的锁功能。虽然它失去了像synchronize**关键字隐式加锁解锁**的便捷性,但是却拥有了**锁获取**和**释放**的可操作性,**可中断的获取锁**以及**超时获取锁**等多种synchronized关键字所不具备的同步特性。原创 2020-11-17 19:41:14 · 209 阅读 · 0 评论 -
多线程基础概念1 | 线程的三种创建方式
多线程基础概念 | 线程的三种创建方式原创 2020-11-16 18:02:52 · 204 阅读 · 0 评论 -
synchronized 内部原理、常见锁策略、CAS、 以及死锁的产生和解决
synchronized 内部原理、常见锁策略、CAS、 以及死锁的产生和解决原创 2020-11-15 20:34:14 · 457 阅读 · 0 评论 -
生产者消费者模型理解及java两种方式实现
生产者消费者问题(Producer-consumer problem),也称有限缓冲问题(Bounded-buffer problem),是一个多线程同步问题的经典案例。> 生产者生成一定量的数据放到缓冲区中,然后重复此过程;与此同时,消费者也在缓冲区消耗这些数据。> 生产者和消费者之间必须保持同步,要保证生产者不会在缓冲区满时放入数据,消费者也不会在缓冲区空时消耗数据。不够完善的解决方法容易出现死锁的情况,此时进程都在等待唤醒原创 2020-10-25 16:49:00 · 315 阅读 · 0 评论 -
多线程基础概念 | 线程安全
线程安全: 如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该的结果,则说这个程序是线程安全的。观察下边代码:package UnsafeThread;public class UnsafeThread { private static int COUNT; public static void main(String[] args) { for (int i = 0; i < 20; i++) { Thread t =原创 2020-10-22 00:54:13 · 190 阅读 · 0 评论 -
多线程基础概念2 | 常用api方法
多线程基础概念(二)常用api方法原创 2020-10-21 20:22:36 · 153 阅读 · 0 评论 -
二叉搜索树详解及代码实现
二叉搜索树又叫二叉排序树,它或者是一颗空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上的所有结点都小于根节点上的值若它的右子树不为空,则右子树上的所有结点都大于根节点上的值它的左右子树也分别是二叉搜索树二叉搜索树的特点:中序遍历后会得到一个升序排列的数组。二叉搜索树的操作(操作里的是伪代码,完整可以运行的代码在最后)原创 2020-10-13 19:19:25 · 795 阅读 · 0 评论 -
java对象的比较 Comparable和 Comparator
java对象的比较 Comparable和 Comparator原创 2020-10-11 09:29:29 · 191 阅读 · 0 评论 -
归并排序递归与非递归实现
基本思路:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 //归并排序递归体,把整个序列递归分为两个长度为1的子序列,然后对其子序列进行比较归并。得到有序子序列 public static void MergeSort(int []array,int left,int right){ if原创 2020-10-10 08:59:58 · 546 阅读 · 0 评论 -
快速排序算法递归和非递归的思路以及java实现
快速排序算法递归和非递归的思路以及java实现原创 2020-10-08 18:49:54 · 452 阅读 · 0 评论 -
常用的排序方式及java实现 - 插入排序、希尔排序、选择排序、堆排序
常用的排序方式及java实现 - 插入排序、希尔排序、选择排序、堆排序原创 2020-10-06 10:36:06 · 159 阅读 · 0 评论 -
二叉树非递归,先序、中序、后序、层序遍历
二叉树非递归,先序、中序、后序、层序遍历原创 2020-10-05 09:22:16 · 186 阅读 · 0 评论 -
java | 堆 - 基本操作实现(1)
概念堆逻辑上是一棵完全二叉树堆物理上是保存在数组中满足任意结点的值都大于其子树中结点的值,叫做大堆,或者大根堆,或者最大堆反之,则是小堆,或者小根堆,或者最小堆堆的基本作用是,快速找集合中的最值操作-向下调整and向上调整目的:把一个不满足堆的结构调整成满足堆的结构操作-建堆下面我们给出一个数组,这个数组逻辑上可以看做一颗完全二叉树,但是还不是一个堆,现在我们通过算法,把它构建成一个堆。根节点左右子树不是堆,我们怎么调整呢?这里我们从倒数的第一个非叶子节点的子树开始调整,一直.原创 2020-10-03 17:50:17 · 177 阅读 · 0 评论 -
二叉树概念及其相关操作(含代码实现)
二叉树概念及其相关操作(含代码实现)原创 2020-10-01 11:07:31 · 264 阅读 · 0 评论 -
java链表ListNode及其常用方法实现
一:单向链表介绍链表是一种数据结构,和数组同级。比如,Java中我们使用的ArrayList,实现原理是数组。而LinkedList的实现原理就是链表。链表在进行循环遍历时效率不高,但是插入和删除时优势明显。单向链表是一种线性表,实际上是由节点(Node)组成的,一个链表拥有不定数量的节点。其数据在内存中存储是不连续的,它存储的数据分散在内存中,每个结点只能也只有它能知道下一个结点的存储位置。由N各节点(Node)组成单向链表,每一个Node记录本Node的数据及下一个Node。向外暴露的只有一个头节点原创 2020-09-24 11:19:16 · 22442 阅读 · 3 评论 -
Java集合框架 ArrayList
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList ,并实现了 List 接口原创 2020-09-21 21:23:55 · 220 阅读 · 0 评论 -
java 集合框架及背后的数据结构(简介)
java 集合框架及背后的数据结构(简介)原创 2020-09-20 12:12:10 · 189 阅读 · 0 评论 -
java中String类最详细解释
java中String类最详细解释之一!!原创 2020-09-19 17:21:36 · 890 阅读 · 0 评论 -
操作系统-银行家算法
目录算法思路:银行家算法数据结构算法具体实现模块定义所需要的资源安全性检测初始化进程申请资源打印函数菜单布局主函数算法思路:我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。为保证资金的安全,银行家规定:(1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;(2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量;(3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾原创 2020-09-18 12:03:30 · 794 阅读 · 0 评论 -
封装、构造方法练习
*编写一个类Calculator,有两个属性num1,num2,这两个数据的值不能在定义的同时初始化,最后实现加减乘除四种运算.1.setter方法实现//1.编写一个类Calculator,有两个属性num1,num2,这两个数据的值不能在定义的同时初始化,最后实现加减乘除四种运算.import java.util.Scanner;public class test { public static void main(String[] args) { System.o原创 2020-09-15 20:33:33 · 172 阅读 · 0 评论 -
类的定义方式、成员变量和成员方法的使用以及对象的实例化和整个初始化过程
1. 类与对象的初步认知C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。面向过程注重的是过程,在整个过程中所涉及的行为,就是功能。面向对象注重的是对象,也就是参与过程所涉及到的主体。是通过逻辑将一个个功能实现连接起来面向过程: 1.把冰箱打开 2. 把大象放入 3. 冰箱关起来面向对象: 打开冰箱,储存,关闭都是对冰箱的操作,是冰箱的行为。冰箱就是一个对象,所以只要操作冰箱原创 2020-09-13 16:20:26 · 2835 阅读 · 0 评论 -
数组的二分查找、冒泡排序、反转
1.有序数组的二分查找什么是有序数组?有序分为 “升序” 和 “降序”如 1 2 3 4 , 依次递增即为升序.如 4 3 2 1 , 依次递减即为降序.以升序数组为例, 二分查找的思路是先取中间位置的元素, 看要找的值比中间元素大还是小. 如果小, 就去左边找; 否则就去右边找.import java.util.Scanner;public class work9121 { public static void main (String [] args){ i原创 2020-09-12 19:41:30 · 332 阅读 · 0 评论 -
Java面试汇总+答案
本文转载,只是加了目录方便阅读,原文链接:https://blog.csdn.net/qq_18298439/article/details/80939968目录1.面向对象和面向过程的区别2.Java的四个基本特性(抽象、封装、继承,多态)3.重载和重写的区别4.构造器Constructor是否可被override5.访问控制符public,protected,private,以及默认的区别6.是否可以继承String类7.String和StringBuffer、StringBuilder的区别8.ha转载 2020-09-11 21:36:50 · 341 阅读 · 0 评论 -
从代码理解递归:汉诺塔,青蛙跳台阶等
1.实现代码: 递归求 N 的阶乘//实现代码: 递归求 N 的阶乘import java.util.*;public class work992 { public static void main(String[] args) { System.out.println("输入需要计算哪个数的阶乘:"); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Syst原创 2020-09-10 11:27:28 · 212 阅读 · 0 评论 -
查找素数;乘法口诀表;给定区间某个特定整数中出现的次数;水仙花数等
1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)import java.util.*;public class work981 { public static void main (String[] args){ System.out.println("请输入年龄"); Scanner sc = new Scanner(System.in); int age = sc.next原创 2020-09-09 10:22:00 · 145 阅读 · 0 评论 -
组件技术期末复习重点
1.什么是软件复用?软件复用:是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的费用。2.什么是组件利用某种编程手段,将一些人们所关心的,但又不便于让用户直接去操作的细节进行封装。同时对各种业务逻辑进行规则化,用于处理用户的内部操作细节,这个封装体称为组件3.平台,框架设计思想框架:一组软件组件互相协作,提供了针对某个给定问题领域中应用程序所用到的一种可复用的体系结构平...原创 2019-12-28 18:14:42 · 706 阅读 · 0 评论