
java
文章平均质量分 61
1 2 3 一起追梦
Never try never success
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java基础之Synchronized锁升级的原理
Java1.6之后优化synchronized的实现方式,使用了偏向锁升级为轻量级锁再升级到重量级锁的方式,从而降低使用锁带来的性能消耗。原创 2022-07-19 19:07:08 · 323 阅读 · 0 评论 -
java高级之线程池的创建
可以看到50个任务仅创建了16个线程来处理。根据自身电脑配置决定创建的线程数目。可以看到创建了4个线程来执行任务。可以看到仅有一个线程在执行。可以看出延迟3s执行。结果时间相差3s。原创 2022-07-18 21:08:42 · 365 阅读 · 0 评论 -
java高级之线程死锁
死锁的检测和解除措施,有可能使系统获得较好的资源和吞吐量,但在现实上难度也最大。属于事前预防的策略,但它并不需要事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁的产生。两者的主要区别为了预防死锁所施加的限制条件较为严格,这往往会影响到进程的并发执行,而避免死锁所施加的限制条件则较为宽松,有利于进程的并发执行。测机构.及时的检测出死锁的发生,并精确地测出与死锁有关的进程和资源,然后,采取适当的措施,从系统中将已发生的死锁清除掉。..原创 2022-07-18 15:47:00 · 795 阅读 · 0 评论 -
java Io流之 ZipOutputStream实现文件夹和文件压缩
用io流简单实现了一个压缩文件的工具类。测试:结果:原创 2022-07-14 16:21:27 · 2192 阅读 · 0 评论 -
java基础之iterator,foreach,for的差别
打印结果:打印结果:打印结果:原因 : 在集合增加同时,又做了删除操作,导致了list集合中 modCount 和 expectedModCount 不一致,导致抛出异常。这里用的是 list并且是单线程,已导致了异常报错,多线程情况下,异常报错的几率更高。可以使用CopyOnWriteArrayList,Collections.synchronizedCollection()等并发容器,来解决此类问题。......原创 2022-07-13 11:03:15 · 1283 阅读 · 0 评论 -
java基础之线程创建
使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处于运行状态。处于运行状态的线程最为复杂,它可以变为阻塞状态、就绪状态和死亡状态。如果一个线程执行了sleep(睡眠)、suspend(挂起)等方法,失去所占用资源之后,该原创 2022-06-17 10:04:44 · 240 阅读 · 0 评论 -
java基础之枚举类
枚举类型()是指由一组固定的常量组成合法的类型。中由关键字来定义一个枚举类型。下面就是枚举类型的定义。2、特点定义枚举类型的语句很简约。它有以下特点:1)使用关键字2) 类型名称,比如这里的3) 一串允许的值,比如上面定义的春夏秋冬四季4) 枚举可以单独定义在一个文件中,也可以嵌在其它类中除了这样的基本要求外,还有一些其他选择5)枚举可以实现一个或多个接口(Interface)6) 可以定义新的变量7) 可以定义新的方法8) 可以定义根据具体枚举值而相异的类 [中文:春天,枚举常量:SPRI原创 2022-06-11 13:38:08 · 398 阅读 · 0 评论 -
springMVC实现阿里OSS文件上传
您可以通过以下三种方式安装SDK。在Maven项目中加入依赖项(推荐方式)在Maven工程中使用OSS Java SDK,只需在pom.xml中加入相应依赖即可。以3.10.2版本为例,在中加入如下内容:如果使用的是Java 9及以上的版本,则需要添加jaxb相关依赖。添加jaxb相关依赖示例代码如下: 2、新建OSSClientOSSClient是OSS的Java客户端,用于管理存储空间和文件等OSS资源。新建OSSClient时,需要指定Endpoint。...原创 2022-06-10 22:58:56 · 361 阅读 · 0 评论 -
SpringMvc+element实现文件上传
在pom.xml添加这几个依赖二、在springMVC的配置文件添加配置 添加文件上传配置三、开始配置控制器四、jsp页面原创 2022-06-09 21:14:05 · 310 阅读 · 0 评论 -
java基础之HashMap遍历的三种方式
二、entrySet遍历三、foreach方法遍历原创 2022-06-08 10:06:35 · 392 阅读 · 0 评论 -
Mybatis之mybatis配置文档介绍
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。例如:设置好的属性可以在整个配置文件中用来替换需要动态配置的属性值。比如:如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的则是 properties 元素中指定的属性。从 MyBatis 3.4.2 开始原创 2022-06-02 10:59:12 · 417 阅读 · 0 评论 -
java基础之线程状态
线程可以有以下6种状态:确定一个线程的当前状态,可调用getState方法 当用new操作符创建一个新线程时,如new Thread(r),该线程还没有运行。这意味着它的状态是new。当一个线程处于新建状态时,程序还没有开始运行线程中的代码。在运行之前,还有一些基础工作要做。 一旦调用start方法,线程处于runnable状态。一个可运行的线程可能正在运行也可能没有运行,这取决于操作系统给线程提供运行的时间。(Java的规范说明没有将它作为一个单独状态。一个正在运行中的线程仍然原创 2022-06-01 16:26:28 · 128 阅读 · 0 评论 -
错误解决:There is no getter for property named ‘id‘ in class ‘java.lang.String‘
问题图示:错误代码:解决方案:原创 2022-06-01 14:50:19 · 1265 阅读 · 0 评论 -
javaweb之NullPointerException
配置文件中的environments 和 environment中的default 和 id保持一致。原创 2022-05-31 15:44:24 · 178 阅读 · 0 评论 -
javaweb基础之引入maven+mybatis
1、首先引入maven和创建Javaweb项目可以通过Maven官网直接下载两个中任意一个都可以,然后直接解压到磁盘里。由于maven默认的下载远程仓库是国外的,下载比较慢,所以需要改成阿里云镜像。<!--默认依赖jar包下载位置 --> <localRepository>F:\Maven\.m2\repository</localRepository> <!-- 阿里云镜像 --><mirrors>...原创 2022-05-31 15:06:35 · 846 阅读 · 0 评论 -
java基础之Stream流(二)
1 其他流的转换distinct方法会返回一个流,它的流是从原有的流中产生的,即原来的元素按照同样的顺序剔除重复元素后产生的。这个流显然能记住它已经见过的元素。Stream<String> stream = Stream.of("work","word","sister","word") .distinct();对于流的排序,有多种sorted方法变体可用。其中一种利用操做Comparable元素的流,而另一种可以接受一个原创 2022-05-30 13:45:09 · 333 阅读 · 0 评论 -
java基础之Stream流(一)
流提供一种比集合更高级指定计算的视图。通过使用流,我们可以说明想要完成什么任务,而不是说明如何去实现它。我们将操作的调度留给具体的实现去解决。例如,假设我们想要计算某个属性的平均值,那么我们可以指定数据源和该属性,然后,流库可以对计算进行优化。例如,实用多线程来计算总和与个数,并将其合并。1.1 从迭代到流的操作在处理集合时,我们通常会迭代遍历集合所有的元素,并在集合的每个元素上执行某项操作。例如,假设我们想要对某本书中的所有长单词进行计数。首先,将所有单词放进一个列表中:String con原创 2022-05-30 10:42:48 · 316 阅读 · 0 评论 -
java基础之线程与进程的区别
多任务(multitasking):在同一刻运行多个程序的能力。例如,在编辑或下载邮件的同时可以打印文件。现在单台都拥有多个CPU的计算机,但是,并发执行的进程数目并不是由CPU数目制约的。操作系统将CPU的时间片分配给每一个进程,给人并行处理的感觉。多线程:在较低的层次上扩展了多任务的概念,一个程序同时执行多个任务。通常,每一个任务称为一个线程(thread),它是线程控制的简称。可以同时运行一个以上线程的程序称为多线程程序(multithreaded)。多进程:进程是程序的一次执行过程, 正在进原创 2022-05-25 14:31:41 · 123 阅读 · 0 评论 -
java基础之位集(Bitset)
BitSet类用于存放一个位序列(它不是数学上的集,称为位向量或位数组更为合适)。如果需要高效地存储位序列(例如,标志)就可以使用位集。由于位集将位包装在字节里,所以,使用位集要比使用Boolean对象的ArrayList更加高效。BitSet类提供了一个便于读取、设置或清除各个位的接口。使用这个接口可以避免屏蔽和其他麻烦的位操作。如果将这些位存储在int或long变量中就必须进行这些繁琐的操作。例如,对于一个名为bucketOfBits的BitSet...原创 2022-05-20 23:56:12 · 541 阅读 · 0 评论 -
java基础之Collection.removelf 和 List.replaceAll
一、Collection.removeIf(Predicate<? super E> filter) public static void main(String[] args) throws SQLException, ClassNotFoundException { List<String> list=new ArrayList<>(); list.add("add"); list.add("a");原创 2022-05-18 17:09:05 · 402 阅读 · 0 评论 -
java基础之使用反射实现jdbc连接简易通用类
刚学反射就想练下手,有错希望大家指正,这样才能学到更多。public class CommonDao { private String DEFAULT_DRIVER="com.mysql.cj.jdbc.Driver"; private String DEFAULT_USER="?"; private String DEFAULT_PASSWORD="?"; private String DEFAULT_URL="jdbc:mysql://localhost:3306/原创 2022-05-15 00:19:04 · 447 阅读 · 0 评论 -
javaweb基础之servlet创建方式
一、实现Servlet接口/* * 1.实例化(使用构造方法创建对象) * 2.初始化 执行init方法 * 3.服务 执行service方法 * 4.销毁 执行destroy方法 */public class ServletDemo1 implements Servlet { //public ServletDemo1(){} //生命周期方法:当Servlet第一次被创建对象时执行该方法,该方法在整个生命周期中只执行一次 public vo原创 2022-05-13 20:27:30 · 260 阅读 · 0 评论 -
javaweb基础之jsp四大域对象
JSP中的四大域对象:1.page域对象(只在当前页面中有效)2.request域对象(只在一次请求中有效,服务端跳转有效,客户端跳转无效)3.session域对象(在一次会话中有效,服务端客户端跳转都有效)4.application域对象(在整个应用程序中都有效)1.设置域对象<%//设置page作用域pageContext.setAttribute("name1","zhangsan");//设置request作用域request.setAttribu原创 2022-05-13 17:36:19 · 305 阅读 · 0 评论 -
javaweb基础之jsp八大内置对象
一、out对象out对象用于向浏览器输出数据,其常用方法是print(),该方法用于在页面中显示字符串信息。<% out.print("<span id='nav_user'>欢迎用户登录</span>");%>二、request对象request对象中包含了浏览器请求的相关信息。常用方法:1、getParameter(String name)return:String作用:根据页面表单组件获取页面提交数据。2、getPa原创 2022-05-13 17:29:54 · 1822 阅读 · 0 评论 -
java基础之反射
1、简介反射库(reflection library)提供了一个非常丰富的工具集,以便编写能够动态的操纵java代码中的程序。这项功能被大量应用于javaBeans中,他是java组件的体系结构。特别是在设计或运行中添加新类时,能够快速应用开发工具动态地查询新添加类的能力。能够分析类能力的程序被称为反射(reflective)。反射机制功能:在运行时分析类的能力。 在运行时查看对象,例如,编写一个toString方法供所有类使用。 实现数组的操作代码。 利用Method对象,这个对象很象C原创 2022-05-13 12:44:20 · 205 阅读 · 0 评论 -
javaweb基础之如何传参
1、我们可已通过表单传参 可以看到通过from表单向jsp传参,jsp通过request内置对象来接收。2、超链接jsp接收参数原创 2022-05-10 09:41:55 · 376 阅读 · 0 评论 -
javaweb基础之插入java脚本
插入java脚本前我们需在WEB-INF下建一个lib文件夹添加两个jar文件这两个文件就在tomcat的lib文件夹里面。然后就可以在jsp文件里写Java脚本了。文件开头一定要添加下面这段话。这代表该文件支持java脚本。<%@ page contentType="text/html;charset=UTF-8" language="java" %>下面开始代码之路。<%--表示它支持java脚本 不要删除--%><%@ pag原创 2022-05-10 09:32:36 · 511 阅读 · 0 评论 -
javaweb基础之web开发idea创建项目
1、需提前下载Tomcat,注意Tomcat的对应版本和jdk对应的版本,先配置Tomcat的路径让IDEA能找到它。2、3、4、5、6、7、8、9、10、11、12、可以看到Tomcat已经启动。13、到这里首个javaweb项目就建成了。...原创 2022-05-10 09:17:56 · 122 阅读 · 0 评论 -
java基础之文档注释
目录1、注释插入2、类注释3、方法注释4、域注释5、通用注释6、包与概述注释1、注释插入javadoc实用程序(utility)从下面几个特性中抽取信息:包 公有类与接口 公有的和受保护的方法 公有的和受保护的域应该为上面几部分编写注释。注释应该放置在所描述特性的前面。注释以/**开始,并以*/结束。每个/**...*/文档注释在标记之后紧跟着自由文本格式(free-form text),标记以@开始,如@author或@p...原创 2022-05-07 10:58:14 · 300 阅读 · 0 评论 -
java基础之日期对象LocalDate
1、LocalDate(jdk1.8)public final class LocalDate implements Temporal, TemporalAdjuster, ChronoLocalDate, SerializableLocalDate以年月日的格式输出,即yyyy-MM-dd。我们可以使用LocalDate的下列静态方法来初始化LocalDate。1.1 now(): 给出LocalDate实例,该实例包含默认时区的系统时钟的当前日期。LocalDat原创 2022-05-06 23:00:23 · 3933 阅读 · 0 评论 -
java基础之Calendar日期对象
public abstract class Calendarextends Objectimplements Serializable, Cloneable, Comparable<Calendar>1、简介所述Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方法calendar fields如YEAR , MONTH , DAY_OF_MONTH , HOUR ,等等,以及用于操纵该日历字段,如获取的日期下个星期。 时间上的瞬间可以用毫秒值表示,该值是从19.原创 2022-05-06 11:05:00 · 1064 阅读 · 0 评论 -
java基础之大数值(BigInteger和BigDecimal)
当基本的整数和浮点数不能够满足需求时,那么可以使用java.math包中的两个很有用的类:BigInteger和BigDecimal。这两个类可以处理包含任意长度数字的序列的数值。BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。一、BigIntegerpublic class BigInteger extends Number implements Comparable<BigInteger>1.1、简介不可变的任意精度的整数。所原创 2022-05-05 13:14:46 · 874 阅读 · 0 评论 -
java基础之格式化输出
在jdk SE5.0以后沿用了C语言库函数中的printf方法,例如调用System.out.printf("%8.2f",x);可以用8个字符的宽度和小数点后两个字符的精度去打印x。也就是说,打印输出一个空格和7个字符,如下所示:3333.33用printf也可以使用多个参数,例如:System.out.printf("Hello,%s.Next year,you'll be %d",name,age);每一个以%字符开始的格式说明符都用相应的参数替换。格式说明符尾部的转换符将指示被格式化的数原创 2022-05-05 11:30:18 · 1589 阅读 · 0 评论 -
Java基础之Lambda(一)
以一个例子来介绍如何使用lambda,我们来实现一个加减乘除,通过一个接口方法来实现。首先来创建一个接口。interface Calculator<T>{ public void test(T t);}接下来建立一个类来放计算的两个数。//X Y即泛型class Num<X,Y>{ X x; Y y; public Num(X x, Y y) { this.x = x; this.y = y;原创 2022-05-04 17:09:10 · 677 阅读 · 0 评论 -
java基础之HashMap源码分析
1、 HashMap原理分析1.1、 HashMap继承体系HashMap继承体系源码public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable 1.2、Node数据结构分析HashMap内部类Node的源码//静态内部类 实现了Map.Entry这个接口 K key,V value 泛型stat原创 2022-05-02 14:01:48 · 1830 阅读 · 0 评论 -
java基础之数据库连接Reultset接口
目录1、简介2、静态常量介绍3、ResultSet 接口的方法3.1、next3.2、close3.3、wasNull3.4、getString3.5、getBoolean3.6、getByte3.7、 getShort3.8、getInt3.9、getLong3.10、getFloat3.11、getDouble3.12、getBigDecimal3.13、getBytes3.14、getDate3.15、getTime3.16、原创 2022-04-29 16:19:26 · 1121 阅读 · 0 评论 -
Java之红黑树
1、简介红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树是一种特化的AVL树(平衡二叉树),都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以红黑树不是原创 2022-04-28 11:02:55 · 5466 阅读 · 4 评论 -
LeetCode刷题之1508. 子数组和排序后的区间和
给你一个数组 nums ,它包含 n 个正整数。你需要计算所有非空连续子数组的和,并将它们按升序排序,得到一个新的包含 n * (n + 1) / 2 个数字的数组。请你返回在新数组中下标为 left 到 right (下标从 1 开始)的所有数字和(包括左右端点)。由于答案可能很大,请你将它对 10^9 + 7 取模后返回。示例 1:输入:nums = [1,2,3,4], n = 4, left = 1, right = 5输出:13解释:所有的子数组和为 1, 3, 6, 10, 2.原创 2022-04-27 15:08:26 · 242 阅读 · 0 评论 -
LeetCode刷题之826. 安排工作以达到最大收益
你有 n 个工作和 m 个工人。给定三个数组: difficulty, profit 和 worker ,其中: difficulty[i] 表示第 i 个工作的难度,profit[i] 表示第 i 个工作的收益。 worker[i] 是第 i 个工人的能力,即该工人只能完成难度小于等于 worker[i] 的工作。每个工人 最多 只能安排 一个 工作,但是一个工作可以 完成多次 。 举个例子,如果 3 个工人都尝试完成一份报酬为 $1 的同样工作,那么总收益为 $3 。如...原创 2022-04-26 12:41:12 · 513 阅读 · 0 评论 -
java基础之Comparable和Comparator区别
一、Comparable简介Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。该接口定义如下:package java.lang;import java.util.*;public interface Comparable<T>原创 2022-04-24 09:29:50 · 191 阅读 · 0 评论