
Java
文章平均质量分 73
样young
没有什么可介绍的,希望能够在这里学到更多的知识
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java PDFBox提取PDF中字符的坐标或位置
为了提取 pdf 中字符的坐标或位置和大小,我们将扩展 PDFTextStripper 类,拦截并实现 writeString(String string, List textPositions)方法。org.apache.pdfbox.contentstream 类。PDFTextStripper 去除所有文本。writeString() 方法中的List 包含有关字符的信息,例如是否其 Unicode、字符的 X 坐标、Y 坐标、高度、宽度、x 缩......转载 2022-06-23 14:53:58 · 5695 阅读 · 0 评论 -
Java线程池种类及关键参数
在Java编码的过程中,我们经常会创建一个线程来提高程序的执行效率,虽然这样实现起来很方便,但是会有一个问题:如果并发的线程数多,并且每个线程都是执行一个时间很短的任务就结束了,这样会造成频繁的创建和销毁线程从而导致降低系统的效率。那么问题来了,有没有办法可用复用创建好的线程呢,也就是线程执行完一个任务后,不被销毁,继续执行其他的任务?在Java可以通过线程池来实现这样的效果。下面从三个方面和大家一起来探讨一下Java线程池相关的内容:Java中的ThreadPoolExecutor类 Java中转载 2021-09-01 20:50:02 · 1191 阅读 · 0 评论 -
juc包下四大并发工具
1.juc.CountDownLatch 闭锁一个线程在等待一组线程后再恢复执行await()等待其他线程执行完毕被等待线程执行完毕后计数器-1如何知道其他线程执行完了?计数器,若一组线程为,CountDown为5,减到0代表等待线程被全部执行完毕一次性工具:当Countdown的值减到0的时候再也无法恢复juc内部的代码都是lock体系来实现的import java.util.concurrent.CountDownLatch;import java.util.conc转载 2021-08-31 23:38:40 · 354 阅读 · 0 评论 -
Java原子类及内部原理
一、引入 原子是世界上的最小单位,具有不可分割性。比如 a=0;(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作是原子操作。再比如:a++;这个操作实际是a = a + 1;是可分割的,所以他不是一个原子操作。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。 但是,像i++这种非原子操作,我们除了使用synchroinzed关键字实现同步外,还可以使用java.util.concurre...转载 2021-08-31 23:22:15 · 295 阅读 · 0 评论 -
单例模式的八种写法
1、饿汉式(静态常量)[可用]public class Singleton { private final static Singleton INSTANCE = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return INSTANCE; }}优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题。缺点原创 2021-08-02 14:54:22 · 655 阅读 · 0 评论 -
K8S健康检查--探针
参考链接https://segmentfault.com/a/1190000021402257https://jimmysong.io/kubernetes-handbook/guide/configure-liveness-readiness-probes.htmlhttps://www.jianshu.com/p/d87a50272310背景:在k8s部署服务的时候,会出现pod是running状态,也可以进入到容器中,但是服务端口没有起,尤其再是小组件,没有受到关注的情况下,就.转载 2021-05-11 14:23:02 · 772 阅读 · 0 评论 -
Java:多线程中的volatile
一、为什么使用volatile首先,通过一段简单的代码来理解为什么要使用volatile: 1 public class RunThread extends Thread{ 2 private boolean isRunning = true; 3 public boolean isRunning(){ 4 return isRunning; 5 } 6 7 public void setRunning(boolean isRunnin转载 2021-03-01 11:36:22 · 269 阅读 · 0 评论 -
volatile关键字的用法
关键字volatile的主要作用是使变量在多个线程间可见,强制从公共堆栈中取得变量的值,而不是从线程的私有数据栈中取得变量的值。这么说很难理解,我们直接看代码例子来说明。创建一个RunThread.java的类如下:运行类Run代码如下:public class RunTest { public static void main(String[] args){ try { RunThread thread = new RunThread();转载 2021-02-25 08:43:40 · 454 阅读 · 0 评论 -
Thymeleaf直接调用后台Service之${@serviceBean.doSomething()}
方法说明:thymeleaf的官方文档中提到了${@myBean.doSomething()}可以访问容器中bean的数据。前端thymeleaf写法:<label>性别: </label> <select name="status" th:with="type=${@dict.getType('sys_sex')}"> <option value="">--请选择--</option> ...转载 2020-05-13 14:41:03 · 2619 阅读 · 2 评论 -
Java NIO之ByteBuffer
本文https://blog.csdn.net/eddle/article/details/6950333缓冲区分配和包装 在能够读和写之前,必须有一个缓冲区,用静态方法 allocate() 来分配缓冲区: ByteBuffer buffer = ByteBuffer.allocate(1024); allocate() 方法分配一个具有指定大小的底层数组,并将它包装到一个缓冲区对象中 — 在本...转载 2018-07-15 21:20:19 · 1029 阅读 · 0 评论 -
Java NIO(五)——NIO总结及NIO新特性
本文转自:https://blog.csdn.net/a953713428/article/details/64907250我们知道是NIO是在2002年引入到J2SE 1.4里的,很多Java开发者比如我还是不知道怎么充分利用NIO,更少的人知道在Java SE 7里引入了更新的输入/输出 API(NIO.2)。但是对于普通的开发者来说基本的I/O操作就够用了,而NIO则是在处理I/O性能优化方...转载 2018-07-15 17:11:34 · 1046 阅读 · 0 评论 -
Java NIO(四)——Selector
本文转自:https://blog.csdn.net/a953713428/article/details/63252803这一节我们将探索选择器(selectors)。选择器提供选择执行已经就绪的任务的能力,这使得多元 I/O 成为可能。就像在第一章中描述的那样,就绪选择和多元执行使得单线程能够有效率地同时管理多个 I/O 通道(channels)。C/C++代码的工具箱中,许多年前就已经有 s...转载 2018-07-15 17:08:08 · 166 阅读 · 0 评论 -
Java NIO(三)——Channel
本文转自:https://blog.csdn.net/a953713428/article/details/62420813通道(Channel)是java.nio的第二个主要创新。它们既不是一个扩展也不是一项增强,而是全新、极好的Java I/O示例,提供与I/O服务的直接连接。Channel用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。channel介绍通...转载 2018-07-15 17:02:16 · 985 阅读 · 0 评论 -
Java NIO(二)——Buffer
本文转自:https://blog.csdn.net/a953713428/article/details/62217160当我们需要与 NIO Channel 进行交互时, 我们就需要使用到 NIO Buffer, 即数据从 Buffer读取到 Channel 中, 并且从 Channel 中写入到 Buffer 中。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成N...转载 2018-07-15 16:58:29 · 205 阅读 · 0 评论 -
Java NIO(一)
本文转自:https://blog.csdn.net/a953713428/article/details/62217068I/O简介在 Java 编程中,直到最近一直使用 流 的方式完成 I/O。所有 I/O 都被视为单个的字节的移动,通过一个称为 Stream 的对象一次移动一个字节。流 I/O 用于与外部世界接触。它也在内部使用,用于将对象转换为字节,然后再转换回对象。Java NIO即Ja...转载 2018-07-15 16:54:24 · 194 阅读 · 0 评论 -
Java之Arrays.asList的用法
本文转自:https://www.cnblogs.com/hoobey/p/6661294.html 使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportOperationException异常。说明:asList的返回对象是一个Arrays内部类,并没有实现集合的修改方法。Arrays.a...转载 2018-07-13 18:48:17 · 3488 阅读 · 0 评论 -
Java之BIO、NIO、AIO的区别
本文转自:https://blog.csdn.net/skiof007/article/details/52873421 IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默...转载 2018-07-19 17:26:02 · 154 阅读 · 0 评论 -
Socket通信(Java)
sdsd原创 2018-07-07 18:05:14 · 498 阅读 · 0 评论 -
Java通过反射调用一个类的私有方法
本文转载自:https://www.cnblogs.com/ghq120/p/8439204.html获得私有方法的流程是(1)获取目标类(2)获取目标方法 Method method=clazz.getDeclaredMethod(name);//可以调用类中的所有方法(不包括父类中继承的方法) Method method=clazz.getMethod(name);//...转载 2018-07-13 11:50:17 · 31069 阅读 · 3 评论 -
Java中创建线程的三种方式及比较
本文转载自:https://blog.csdn.net/longshengguoji/article/details/41126119Java中创建线程主要有三种方式:一、继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程...转载 2018-07-12 21:49:03 · 167 阅读 · 0 评论 -
Java之泛型通配符
本文转自:http://www.linuxidc.com/Linux/2013-10/90928.htmT 有类型? 未知类型一、通配符的上界既然知道List<Cat>并不是List<Anilmal>的子类型,那就需要去寻找替他解决的办法, 是AnimalTrianer.act()方法变得更为通用(既可以接受List<Animal>类型,也可以接受List&...转载 2018-07-12 09:51:18 · 315 阅读 · 0 评论 -
线索二叉树原理及前序、中序线索化(Java实现)
本文转自:https://blog.csdn.net/UncleMing5371/article/details/54176252一、线索二叉树原理 前面介绍二叉树原理及特殊二叉树文章中提到,二叉树可以使用两种存储结构:顺序存储和二叉链表。在使用二叉链表的存储结构的过程中,会存在大量的空指针域,为了充分利用这些空指针域,引申出了“线索二叉树”。回顾一下二叉链表存储结构,如下图: ...转载 2018-07-18 09:49:47 · 25541 阅读 · 17 评论 -
Java之Enum枚举类
本文转载自:http://blog.csdn.net/qq_31655965/article/details/55049192 原创自CSDN:http://blog.csdn.net/qq_31655965 博主:clever_fan为什么要引入枚举类一个小案例你写了一个小程序,不过好久不用了,突然有一天,你想使用一下它。程序要想正确运行,需要将今天星期几存到数据库里。这个时候,你...转载 2018-07-12 09:38:40 · 239 阅读 · 0 评论 -
Java中普通代码块,构造代码块,静态代码块区别及代码示例
本文转载自:https://www.cnblogs.com/sophine/p/3531282.html执行顺序:(优先级从高到低)静态代码块>mian方法>构造代码块>构造方法。其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。1 普通代码块 1 //普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--...转载 2018-07-11 21:02:29 · 167 阅读 · 0 评论 -
JSTL中taglib uri=""prefix=""的使用
在早期的jsp开发中,是使用java代码来控制逻辑和显示的,但这样会给前端开发人员带来些麻烦并且代码的可读性也会降低。为了解决上述情况,标签库被创造出来了。标签库的目的在于让开发人员能像使用html标签一样的标签来完成前端的逻辑控制和内容显示,而把那些繁琐、复杂的java代码隐藏在背后,返还jsp文件的干净整洁。标签库的组成 一个标签库一般由两大部分组成:jar文件...转载 2018-08-03 22:33:25 · 27154 阅读 · 3 评论 -
依赖注入(DI)和控制反转(IoC)的理解
本文转自:https://blog.csdn.net/bestone0213/article/details/47424255 学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解...转载 2018-08-09 11:13:56 · 21012 阅读 · 4 评论 -
彻底理解ThreadLocal
ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线...转载 2019-09-11 11:36:06 · 387 阅读 · 0 评论 -
使用MySQL时出现The server time zone value '�й���ʱ��' is unrecogni的解决方法
开发数据库相关的项目时,出现如下的异常:org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: The server time zone value '�й���ʱ��' is un...原创 2019-08-22 14:27:22 · 32843 阅读 · 16 评论 -
Java中的堆和栈的区别
本文转自:https://www.cnblogs.com/wwicked/articles/4707696.html当一个人开始学习Java或者其他编程语言的时候,会接触到堆和栈,由于一开始没有明确清晰的说明解释,很多人会产生很多疑问,什么是堆,什么是栈,堆和栈有什么区别?更糟糕的是,Java中存在栈这样一个后进先出(Last In First Out)的顺序的数据结构,这就是java.uti...转载 2018-09-24 22:02:25 · 350 阅读 · 0 评论 -
详解java.lang.Class
本文转自:https://www.cnblogs.com/xinhuaxuan/p/6019497.html一、Class类是什么 Class是一个类,位于java.lang包下。 在Java中每个类都有一个相对应的Class类的对象,换句话说:Java程序在启动运行时 一个XXX.java类经过编译生成XXX.class文件后,就会在JVM虚拟机中产生一个XXX类对应的...转载 2018-09-10 23:02:04 · 1364 阅读 · 0 评论 -
Java之字符串数组排序(介绍两种方式)
对于字符串数组的大小排序,首先需要做的就是比较两个字符串的大小,如果直接使用>或<等符号比较字符串的大小,会直接报出错误:The operator > is undefined for the argument type(s) java.lang.String, java.lang.String。下面介绍两种比较方法:方法1——可以通过如下的规则进行比较:1.比较对应位置...原创 2018-09-03 16:32:52 · 50141 阅读 · 1 评论 -
Java之Runtime类介绍
本文转自:https://www.cnblogs.com/slyfox/p/7272048.htmlRuntime类代表着Java程序的运行时环境,每个Java程序都有一个Runtime实例,该类会被自动创建,我们可以通过Runtime.getRuntime() 方法来获取当前程序的Runtime实例。常用方法:获取当前JVM的内存信息/* * 获取当前jvm的内存信息,返回...转载 2018-09-11 21:43:35 · 825 阅读 · 0 评论 -
Java之String、StringBuilder和StringBuffer的区别及相互转换
1.三者的运行速度 首先从三者的执行速度来看,String<StringBuffer<StringBuilder。String最慢的原因: String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。以下面一段代码为例:S...原创 2018-09-08 18:27:45 · 5717 阅读 · 2 评论 -
Java之字符串数组元素的排列与组合(递归实现)
1.字符数组元素的组合 字符数组元素的组合通常是要求输入一个字符串,然后输出得到字符串中字符的所有组合。例如输入字符串“abc”,输出为“a”,“b”,“c”,“ab”,“ac”,“bc”,“abc”这七种组合方式。求解思路:假设要在长度为len的字符串中求num个字符的组合,可以先从头扫描字符串的第一个字符,对于第一个字符可以有两种处理方式:一是把这个字符放到组合中去,接下来还需...原创 2018-09-04 17:59:30 · 5002 阅读 · 0 评论 -
事务的隔离等级及MySQL中InnoDB的幻读问题
本文转自:http://blog.sina.com.cn/s/blog_499740cb0100ugs7.htmlMySQL InnoDB事务的隔离级别有四级,默认是“可重复读”(REPEATABLE READ)。未提交读(READ UNCOMMITTED)。另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)。提交读(READ COMMITTED)...转载 2018-08-13 21:02:23 · 216 阅读 · 0 评论 -
关于JNDI的理解
本文转自:https://www.cnblogs.com/zhchoutai/p/7389089.htmlJNDI是 Java 命名与文件夹接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之中的一个,不少专家觉得,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。 那么,JNDI究竟起什么作用?//带着问题...转载 2018-08-13 09:55:45 · 198 阅读 · 0 评论 -
JSP的四个作用域 :page、request、session和application的区别
本文转自:https://www.cnblogs.com/qianbaidu/p/6006459.html1、区别:1.page指当前页面有效。在一个jsp页面里有效2.request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中。在这个过程中可以使用forward方式跳转多个jsp。在这些页面里你都...转载 2018-08-03 11:06:43 · 2636 阅读 · 0 评论 -
JDBC的PreparedStatement用法(Java)
本文转自:https://blog.csdn.net/dzy21/article/details/51932352PreparedStatement它是Statement接口的子接口; 强大之处:防SQL攻击;提高代码的可读性、可维护性;提高效率 学习PreparedStatement的用法: 如何得到PreparedStatement对象:给出SQL模板;调用Connection的...转载 2018-08-03 10:30:30 · 3776 阅读 · 0 评论 -
实现两个autocompleter标签内容的关联(Struts2-AJAX)
通过指定autocompleter标签的formld属性,可以使两个<s:autocompleter>标签关联起来进行联动。如在某些网站的注册系统中,可以选择注册用户所在的省和所有的市,当用户选择某一个省时,在市列表框中就会列出该省所有的市。这个功能使用autocompleter标签非常容易实现。 实现该功能的基木原理是将显示省的autocompleter标...原创 2018-08-11 21:01:10 · 462 阅读 · 0 评论 -
OGNL表达式基本原理和使用方法
本文转自:https://www.cnblogs.com/cenyu/p/6233942.html1.Ognl表达式语言1.1.概述OGNL表达式OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,他是一个开源项目。Struts框架使用OGNL作为默认的表达式语言。OGNL优势支持对象方法调用,如:×××.doSomeSpeci...转载 2018-08-11 00:09:14 · 2678 阅读 · 0 评论