java
文章平均质量分 83
a18792721831
这个作者很懒,什么都没留下…
展开
-
tsf定时任务迁移到xxl-job
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。xxl-job 是一个国人开发的框架,于15年开源启动,到现在也有7年历史,从最开始的基础功能实现,到现在支持分布式,集群,任务重试,分片等等。基本上已经很全面了,很能打了。xxl-job毕竟是国人开发的框架,其文档非常适合国人习惯,而且非常通俗易懂。遇到的问题在文档中都能找到。原创 2022-10-24 16:36:47 · 956 阅读 · 0 评论 -
从0开始学java IO
从0开始学java IOIO 发展BIO设计思想核心类SocketIO 流BIO实例 -- 多人聊天室客户端服务端双阻塞客户端阻塞服务端并发客户端阻塞服务端复用线程并发客户端并发服务端复用线程并发NIOBIO VS NIO设计思想核心类BufferChannelSelectorNIO 实例 -- 本地文件拷贝 -- 编程步骤NIO 改写 BIO 项目 -- 多人聊天室改写前 VS 改写后AIOBIO VS NIO VS AIO设计思想核心类AIO 实例 -- 回音壁 -- 编程步骤AIO 改写 NIO 项目原创 2021-03-20 15:19:47 · 250 阅读 · 0 评论 -
java处理扩大与缩小图片
java处理扩大与缩小图片图片扩大与缩小图片分层图片灰度处理图片变绿色负片图片红化图片锐化java处理扩大与缩小图片图片扩大与缩小在java.desktop.javax.imageio包下有操作图片相关的类。不过,这些ImageIO只支持一些常见的图片类型:jpg,png等。Java SE ImageIO docs使用起来也不难: @Test public void testUp1() throws IOException { ClassPathResource原创 2020-09-29 16:45:05 · 2070 阅读 · 0 评论 -
Java--反射详解
Java--反射详解动态语言反射机制--运行中知道全部的类和属性反射APIClassFieldMethodConstructor反射步骤获取Class==getClass()====class关键字====forName()==获取实例对象==Class的newInstance()====Constructor的newInstance()==动态语言动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化。比如常见的 JavaScript 就是动态语言,除此之外 R原创 2020-08-13 20:17:40 · 222 阅读 · 0 评论 -
Java--异常详解
Java--异常详解异常分类ThrowableErrorExceptionRuntimeExceptionnCheckedException异常处理方式throwthrowsjvm自动抛出throw和throws的异同异常的捕获异常调用链异常分类如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。Throwable原创 2020-08-11 20:06:07 · 365 阅读 · 0 评论 -
ClassPathResource 读取文件本地正常打包后异常
ClassPathResource 读取文件本地正常打包后异常代码:里面使用了classPathResource.getFile().listFiles()获取一个目录下全部的文件,然后返回的是file数组。文件放在了resource下的一个目录中在本地正常使用,但是打成jar包,部署到服务器,使用java -jar启动后,出现异常:从异常中来看,大概是说:目标目录在一个jar包里面,我们使用的是ClassPathResource的getFile方法获取了目录的file对象,然后通过list原创 2020-08-07 13:46:40 · 2794 阅读 · 3 评论 -
Java基础--ThreadPoolExecutor--线程池和锁
Java基础--ThreadPoolExecutor--线程池和锁原创 2020-07-11 17:17:23 · 941 阅读 · 0 评论 -
Java基础--多线程-ConcurrentHashMap(JDK1.8)--转载
Java基础--多线程-ConcurrentHashMap前言ConcurrentHashMap(JDK1.7)putgetsizeConcurrentHashMap(JDK1.8)前言HashMap非线程安全的,HashTable是线程安全的,所有涉及到多线程操作的都加上了synchronized关键字来锁住整个table,这就意味着所有的线程都在竞争一把锁,在多线程的环境下,它是安全的,但是无疑效率低下的。ConcurrentHashMap(JDK1.7)在JDK1.7中,ConcurrentH转载 2020-07-10 19:05:54 · 238 阅读 · 0 评论 -
Java基础--ConcurrentHashMap--线程安全的哈希Map--转载
Java基础--ConcurrentHashMap--线程安全的哈希Map转载 2020-07-09 20:10:12 · 165 阅读 · 0 评论 -
Java基础--StampedLock--强化读写锁
Java基础--StampedLock--强化读写锁原创 2020-07-08 19:59:39 · 644 阅读 · 1 评论 -
Java基础--Semaphore--计数信号量锁
Java基础--Semaphore--计数信号量锁原创 2020-07-04 13:29:16 · 445 阅读 · 0 评论 -
Java基础--CyclicBarrier--屏障锁(循环计数器锁)
@toc原创 2020-07-02 21:52:16 · 514 阅读 · 0 评论 -
Java基础--CountDownLatch--计数器锁(门闩锁)
@toc1. CountDownLatch一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。如果需要重置计数,请考虑使用 CyclicBarrier。1.1 CountDownLatch 的UML图1.2 C原创 2020-07-01 20:02:26 · 1000 阅读 · 0 评论 -
Java基础--ReentrantReadWriterLock--重入读写锁
Java基础--ReentrantReadWriterLock--重入读写锁1. ReentrantReadWriterLock的整体结构1.1 ReentrantReadWriterLock的UML图1.2 ReentrantReadWriterLock的属性、方法2. ReentrantReadWriterLock 实现ReadWriterLock接口2.1 readLock2.2 writerLock3. ReentrantReadWriterLock 内部类Sync继承了AQS1. Reentra原创 2020-07-01 14:26:09 · 371 阅读 · 1 评论 -
Java基础--ReentrantLock--重入锁
Java基础--ReentrantLock--重入锁1. ReentrantLock的整体结构1.1 ReentrantLock的UML图1.2 ReentrantLock的属性、方法2. ReentrantLock 实现Lock接口2.1 tryLock2.2 tryLock(long,TimeUnit)2.3 lock2.4 lockInterruptibly2.5 unlock2.6 newCondition3. ReentrantLock 内部Sync实现了AQS3.1 lock3.2 nonfai原创 2020-06-29 19:01:22 · 320 阅读 · 0 评论 -
Java基础--AQS的Condition源码解析
5.2 ConditionObject首先通过2.4.2.2接口方法说明,可以知道condition有两个状态,分别是等待通知状态,等待锁状态。通过调用await类的方法,将线程转换为等待通知状态。通过调用signal类的方法,将线程从等待通知状态转换为等待锁状态。ConditionObject的属性有两类:1.双向链表的头,双向链表的尾2.状态属性:只有1,-1取值。既然ConditionObject实现了Condition接口,那么ConditionObject里面的方法实际上都是为了实原创 2020-06-27 18:26:00 · 517 阅读 · 4 评论 -
Java基础--AQS原理
Java基础--AQS原理1. Lock 谱系图2. Lock 接口4. AbstractOwnableSynchronizer5. AbstractQueuedSynchronizer5.1 AQS的API5.2 自定义非重入独占锁5.2 自定义非重入独占锁的缺陷5.3 自定义重入独占锁5.4 自定义计数器锁5.1 Node5.2 ConditionObject3. Condition 接口6. synchronized 和 Lock 区别1. Lock 谱系图jdk对锁的实现的类主要是2个:Ree原创 2020-06-21 19:37:44 · 393 阅读 · 1 评论 -
Java基础--HashMap源码
HashMap几乎是我们开发中用到的最多的数据结构之一了,但是,HashMap的源码实现你读过吗?原创 2020-05-23 23:40:57 · 448 阅读 · 0 评论 -
Java基础--HashTable源码
Java基础--HashTable源码1.Map接口2.Dictionary3.HashTable3.1 全局属性3.2 辅助类3.2.1 Entry3.2.2 EnumeratorHashTable的类图可以看到HashTable继承于Dictionary实现了Map、Cloneable、Serializable接口。其中Cloneable和Serializable是标记性接口。标记性接口,就是说接口里面没有定义任何的方法,一个类实现接口,也不需要实现任何的方法。这些接口存在意义只是标识,这些类可原创 2020-05-13 21:10:03 · 411 阅读 · 0 评论 -
Java基础--理解hashCode
用了多年的HashMap,时不时使用HashSet进行去重。那么什么是HashCode,重复的标准是什么?原创 2020-05-08 19:57:56 · 1304 阅读 · 0 评论 -
Command line is too long.
idea运行报错:下午 8:00 Error running 'ServiceAdminApplication': Command line is too long. Shorten command line for ServiceAdminApplication or also for Spring Boot default configuration.解决方式:在.idea文件夹下的...原创 2020-03-26 20:07:00 · 222 阅读 · 0 评论 -
jdk源码学习计划
jdk源码学习计划1.lang2.util3.io4.nio5.net6.beans7.math8.time9.rmi10.sql接下来一段时间,将会过一遍jdk源码。很简单就能够知道,jdk的结构。对比jdk的结构,暂时分为9部分,其中界面和web程序不进行研究。安全也不进行研究,暂时接触不到。自然语言相关的包也不进行研究。每次学习一点,回来增加一点。1.lang说实话,jav...原创 2020-02-03 17:09:36 · 360 阅读 · 0 评论 -
【转载】理解scala中的Symbol
【转载】理解scala中的Symbol 相信很多人和我一样,在刚接触Scala时,会觉得Symbol类型很奇怪,既然Scala中字符串都是不可变的,那么Symbol类型到底有什么作用呢?简单来说,相比较于String类型,Symbol类型有两个比较明显的特点:节省内存和快速比较。在进入正题之前,让我们先来了解一下Java中String的intern()方法。一、String的inte...转载 2019-11-19 20:00:26 · 199 阅读 · 0 评论 -
java Calendar类的add方法与oracle的add_months方法的使用
java Calendar类的add方法与oracle的add_months方法的使用1.java Calendar类2.oracle ADD_MONTHS3.为什么不同最近程序中出现了一个非常怪异的问题:在java程序中时间范围是2019.9.30~2019.10.30但是在c++的程序用的是2019.9.30~2019.10.31java 程序负责往oracle数据库中写入数据,C++...原创 2019-11-07 19:58:36 · 1279 阅读 · 0 评论 -
【转载】深入理解jvm内存模型以及gc原理
转自:https://juejin.im/post/5da02fa2f265da5b7c452744?utm_source=gold_browser_extension整体架构Jvm = 类加载器 + 执行引擎 + 运行时数据区域类加载器作用类加载器是将编译好的class文件加载到内存中,并进行验证、初始化等步骤,形成能被jvm直接使用的类型。加载过程 可分解为5个步骤:加载–>连接–&g...转载 2019-10-12 09:07:22 · 253 阅读 · 0 评论 -
Java集合框架
Java集合框架集合框架在学校上课基本上就是一带而过,但是在实际中,集合框架又是比较重要的知识。集合框架,我们暂且只研究以下几点:本篇文章只着重讲解ArrayList与HashMap,其余类似且使用频率较低。ArrayListArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICol原创 2017-07-16 17:36:23 · 271 阅读 · 1 评论 -
使用js实现点击事件
这个项目实现一个页面上的3*3的格子,点击每个格子,改变其背景颜色。效果如下:1.首先在HTML文件的标签中创建一个表格,背景颜色是红色:①使用css文件:首先在WebRoot的文件夹下创建一个CSS文件夹,创建一个index.css文件写入如下代码:td{ width:200px; height:200px; font-size: 25px;原创 2017-07-20 14:42:19 · 5829 阅读 · 0 评论 -
JQuery实现添加到选框
先上一张效果图:开始我们的小项目:1.先布局好界面: 这时候在界面上什么都看不到,添加如下代码:在第一个内层div中添加: 在第二个内层div中添加: 在第三个内层div中添加: 2.我们既然是JQuery,那么,这些select和button的样式,事件什么的就都在JQuery中写了:先添加JQuer原创 2017-07-22 13:17:29 · 1712 阅读 · 0 评论 -
servlet中的监听器深入
首先,什么是监听器?监听器主要有以下几种:现在,我们来一一试过,把所有的事件监听器全部写好,按照输出,我们来分析:首先是:ServletContextEvent事件:package com.xust.jia.listener;import java.text.SimpleDateFormat;import java.util.Date;import原创 2017-07-27 19:11:31 · 245 阅读 · 0 评论 -
mysql在navicat中查询不能嵌套
事务可以嵌套吗? 1.事务嵌套写,执行没有错误,但是在实际使用时候有问题。 如下: SET autocommit = 0; START TRANSACTION; UPDATE emp SET ename = ‘jia’ WHERE empno = 7; SELECT * FROM emp; START TRANSACTION; UPDATE emp SET ename = ‘yong原创 2017-07-31 12:41:56 · 1205 阅读 · 0 评论 -
MySQL笔记一
数据库(Database,简称DB)的定义: “按照数据结构来组织、存储和管理数据的仓库”PPT 1-2课 1、在Windows命令提示符下运行: 启动MySql服务:net start mysql 停止MySql服务:net stop mysql 卸载:sc delete mysql 一般要先启动MySQL服务器 注意:运行如上命令时,有时会出现“发生系统错误原创 2017-07-31 13:04:36 · 340 阅读 · 0 评论 -
MySQL笔记二
MySQL的检索 1、索引的引入 索引定义:索引是由数据库表中一列或者多列组合而成, 其作用是提高对表中数据的查询速度;类似于图书的目录,方便快速定位,寻找指定的内容。 2、索引的优缺点 优点:提高查询数据的速度; 缺点:创建和维护索引的时间增加了创建索引的三种方式: 一、创建表的时候可以创建索引 create table 表名原创 2017-07-31 13:20:17 · 209 阅读 · 0 评论 -
MySQL笔记三
第九课 1、为每张表定义一个主键 2、增加外键表示一对多关系 外键(Foreign Key):如果表A中的一个字段a对应于表B的主键b,则字段a称为表A的外键,此时存储在表A中字段a的值,要么是NULL,要么是来自于表B主键b的值。 情形一:如果实体间的关系为一对多关系,则需要将“一”端实体的主键放到“多”端实体中,然后作为“多”端实体的外键,通过该外键即可原创 2017-07-31 14:11:26 · 273 阅读 · 0 评论 -
MySQL笔记四
视图视图的特性:视图与表有很多相似的地方,视图也是由若干个字段以及若干条记录构成,视图也可以作为select语句的数据源。视图中保存的仅仅是一条select语句,视图中的源数据都来自于数据库表,数据库表称为基本表或者基表,视图称为虚表。视图的作用:方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;更加安全,数据库授权命令不能限定到特定行和特定列,但是通过合理创建视图,可以把权限限原创 2017-07-31 14:11:56 · 253 阅读 · 0 评论 -
MySQL笔记六
存储过程 存储过程也可以看作是一个“加工作坊”,它接收“调用者”传递过来的“原料”( in参数),然后将这些“原料”“加工处理”成“产品”( 存储过程的out参数或inout参数),再把“产品”返回给“调用者”。 ·创建存储过程的语法格式如下。delimiter $$ create procedure 存储过程名(参数1,参数2,…)[存储过程选项]begin存储过程语句块;end原创 2017-07-31 14:13:18 · 338 阅读 · 0 评论 -
MySQL笔记七
函数1、创建函数的语法格式如下。delimiter $$ create function 函数名(参数1,参数2,…)returns type[函数选项]begin 函数语句块;end $$delimiter ;例子: delimiter && create function f1(id int) returns varchar(20) begin return (select st原创 2017-07-31 14:13:50 · 263 阅读 · 0 评论 -
MySQL笔记八
游标数据库开发人员编写存储过程(或者函数)等存储程序时,有时需要存储程序中的MySQL代码扫描select结果集中的数据,并对结果集中的每条记录进行简单处理,通过MySQL的游标机制可以解决此类问题。游标的使用可以概括为声明游标、打开游标、从游标中提取数据以及关闭游标。游标必须声明在处理程序之前,并且声明在变量之后。1、声明游标声明游标需要使用declare语句,其语法格式如下。declare原创 2017-07-31 14:14:22 · 327 阅读 · 0 评论 -
MySQL笔记五
触发器触发器主要用于监视某个表的insert、update以及delete等更新操作,这些操作可以分别激活该表的insert、update或者delete类型的触发程序运行,从而实现数据的自动维护。一、创建一个触发器使用create trigger语句可以创建一个触发器 语法格式如下。create trigger 触发器名 触发时间 触发事件 on 表名 for each row be原创 2017-07-31 14:12:40 · 282 阅读 · 0 评论 -
MySQL笔记九
MySQL的存储引擎我们通常说的MySql数据库,sql server数据库等等其实是数据库管理系统,它们可以存储数据,并提供查询和更新数据库中的数据的功能等等。根据数据库如何存储数据和如何操作数据的实现机制不同,这些数据库之间即有区别又有共同点。·那么什么是存储引擎呢?存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。·显示表的当前状态值show ta原创 2017-07-31 14:14:53 · 319 阅读 · 0 评论 -
div+css实现经典界面
废话不多说,先上一张效果图:效果还不错吧?下面我来说说实现的过程:1.确定框架:在上面的页面中,被分为三部分:上,中,下上:一张图片中:比较复杂下:一段文字①在项目的WebRoot下新建一个文件夹:CSS②在CSS文件夹下新建一个css文件,如果在待选中找不到css文件,可以点击Other,搜索css好吧,看具体的css代原创 2017-07-18 17:42:32 · 10482 阅读 · 1 评论