![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
Monday_@@
java开发的老司机
展开
-
java中设计模式之策略模式
策略模式定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换,实际上,就是将每个算法分离出来,定义一个公共的接口,可以选择性的实现功能,这就是策略模式。策略模式使用场景和结构:应用场景:可以应用在商场打折促销活动,例如 六一期间,商场搞促销活动,会员8折 ,普通客户不打折等等。结构:1、公共策略:定义一个接口作为公共策略,所有的算法规则实现该接口;2、具体策...原创 2019-05-30 20:29:19 · 146 阅读 · 0 评论 -
Java中设计模式之观察者模式
观察者模式定义:观察者模式又被称为发布-订阅模式,在对象之间定义一对多的关系,这样在一个对象改变状态,依赖它的对象就会收到通知。观察者模式一般用于实现订阅功能的场景,例如公众号订阅、微博订阅、抖音关注;当我们订阅的人发布了新动态,我们就会收到。代码演示:package com.lzw.observer;/** * 抽象被观察者接口 * 含有增加、删除、通知观察者的方法 ...原创 2019-05-26 15:58:31 · 221 阅读 · 0 评论 -
java中设计模式之适配器模式
适配器模式定义:适配器模式:就是一个中间件,将不匹配的两个接口或者类,通过这个适配器链接之后变得匹配。类似于我们的充电器转换头等等。适配器模式有三种:类适配器、对象适配器、接口适配器。我们常用的应该属于接口适配器了。适配器应用场景:代码演示:定义两个视频播放器:package com.lzw.adapter;/** * 原始播放器接口 * @author l...原创 2019-06-04 10:14:40 · 148 阅读 · 0 评论 -
java中设计模式之模板方法模式
模板方法模式定义:模板方法模式,顾名思义就是通过模板去实现重复的动作;准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。应用场景:银行项目的利率计算或者汇率计算、公司报表打印等等。。。。。代码演示:模板方法定义:p...原创 2019-05-31 19:42:34 · 356 阅读 · 0 评论 -
Java中设计模式之工厂模式
package com.lzw.factory;import com.lzw.demo.Add;/** * 工具厂 * @author lzw * @Date 2019年5月24日 */public interface Factory { public Operation createOperate();}class AddFactory implements ...原创 2019-05-24 20:07:21 · 122 阅读 · 0 评论 -
Java中设计模式之单例模式
package com.lzw.singleton; /** * 饿汉式 静态常量 -- 可用 * 优点:简单;在类装载的时候就完成实例化;避免了线程同步问题 * 缺点:在类装载的时候就完成实例化,没有达到Lazy Loading的效果。如果从始至终从未使用过这个实例,则会造成内存的浪费 * @author lzw * @Date 2019年5月23日 */public cl...原创 2019-05-23 17:34:06 · 149 阅读 · 0 评论 -
java中23种设计模式
设计模式的六大原则:开闭原则(Open Close Principle)、里氏代换原则(Liskov Substitution Principle)、依赖倒转原则(Dependence Inversion Principle)接口隔离原则(Interface Segregation Principle)、迪米特法则(最少知道原则)(Demeter Principle)、合成复用原则(Co...原创 2019-05-22 22:19:13 · 232 阅读 · 0 评论 -
Java中设计模式之外观模式
什么是外观模式:外观模式也可以称作门面模式,将子系统的内部的复杂性隐藏,为外界或者客户端提供一个接口使用,使子系统更容易被使用和访问。应用场景:1、开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口;2、维护大型遗留系统时,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互;3、子系统之间相互独立。代码演示:审...原创 2019-05-29 14:42:48 · 139 阅读 · 0 评论 -
数据库连接超时,自动关闭 was active for 309594 milliseconds and has been removed automaticaly
#3264 was active for 309594 milliseconds and has been removed automaticaly由于大数据量导出导致操作数据库时间超过了30秒,导致连接被关闭了;出现这种问题可以将连接数据库的设置修改一下:maximumActiveTime 设置到 900000然后下面又报了这个错:ERROR Could not togg...原创 2019-05-16 21:08:05 · 2985 阅读 · 1 评论 -
.UnsupportedClassVersionError: Bad version number in .class file
Caused by: org.codehaus.groovy.grails.exceptions.NewInstanceCreationException: Could not create a new instance of class [QuartzGrailsPlugin]Caused by: java.lang.UnsupportedClassVersionError: Bad vers...原创 2018-10-11 17:49:26 · 282 阅读 · 0 评论 -
java.sql.SQLException: Cannot create PoolableConnectionFactory (Network error IOException
在连接另一个系统同步数据的时候突然就报了这个错误:java.sql.SQLException: Cannot create PoolableConnectionFactory (Network error IOExcepton:Connection timed out :connect )找了很多贴子,基本上都是说是网络的问题。。但是我的是因为另一个数据库的ip做了修改,新IP没有同...原创 2019-07-18 15:09:21 · 5658 阅读 · 0 评论 -
[Ljava.lang.Object 或者 No signature of method
终于解决了这个陈年老问题了:报错信息如下:No signature of method: mm.jihe.utils.NotifyService.sendRegularIssueEmail() is applicable for argument types: (java.util.ArrayList, [Ljava.lang.Object;, java.util.ArrayList) ...原创 2019-06-13 11:12:24 · 5262 阅读 · 0 评论 -
List一边循环一边删除会如何?如何解决?
啊啊啊原创 2020-07-18 12:35:25 · 1185 阅读 · 0 评论 -
No space left on device 解决方法
今天上传文件的时候,NGINX报了异常,通过查看NGINX的日志发现报了No space left on device的错误,因为最近两天一直做上传文件的压测,导致生成了很多临时文件。解决方案:df -h ##查看磁盘空间情况 发现磁盘都已经满了,删除一下临时文件就可以解决。...原创 2020-05-15 12:17:26 · 2309 阅读 · 0 评论 -
java.lang.NumberFormatException 异常 int value overflow :int值溢出
解决这个问题就要从java中short、int、long、float、double的取值范围来说:基本类型:short二进制位数:16最小值:Short.MIN_VALUE=-32768 (-2的15此方)最大值:Short.MAX_VALUE=32767 (2的15次方-1)基本类型:int 二进制位数:32包装类:java.lang.Integer最小值:Integer.MI...原创 2019-04-01 16:36:20 · 2532 阅读 · 0 评论 -
org.springframework.mail.MailAuthenticationException: Authentication failed
遇到这个神奇的问题: ERROR org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException首先,邮箱是没问题的,系统可以发出部分邮件,那么邮箱的验证就没问题。。。。但是,...原创 2019-01-18 09:00:36 · 1331 阅读 · 2 评论 -
There is no getter for property named 'cname' in 'class java.lang.String'
在使用spring boot 整合myBatis的时候,报了这个错误:This application has no explicit mapping for /error, so you are seeing this as a fallback.Sun Mar 31 09:00:12 CST 2019There was an unexpected error (type=Inter...原创 2019-03-31 10:46:39 · 723 阅读 · 0 评论 -
Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
项目系统上偶尔会报这个错:org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect):查了很多资料,很多是说,由于乐观锁机制导致的这个问题,在项目中确实启用了,乐观锁version,....原创 2018-11-06 15:08:40 · 15561 阅读 · 0 评论 -
weblogic中java.lang.OutOfMemoryError 内存溢出解决方式
一:WebLogic配置问题:由于WebLogic的配置问题,我们的测试出现了失败情况。原因是为WebLogic分配的内存太少了。通过修改commom/bin/commEnv.cmd文件来增加内存分配。修改的部分如下::sunif "%PRODUCTION_MODE%" == "true" goto sun_prod_modeset JAVA_VM=-clientset MEM_A...原创 2019-04-25 09:38:16 · 2906 阅读 · 0 评论 -
用java从sql server2008中读取得到的date时间数据比数据库里的实际时间要少两天
问题如下:这用语句查出来的数据这是用Java代码查出来的数据造成这种问题的原因:数据库中存储该字段使用的时date类型,当使用jdbc读取的时候就会发生少两天的情况。解决方式:将date类型改为datetime类型...原创 2019-04-01 14:51:42 · 765 阅读 · 0 评论 -
线程并发和集合相关面试题总结
线程并发相关面试题1:进程和线程的区别?进程是资源分配的基本单位,线程是程序执行的最小单位 进程有独立的地址空间,线程依托于进程存在,线程切换的开销小 多进程组成的服务更稳定,一个进程挂了不会对另一个进程造成影响,相反,一个线程挂了,依托该进程的所有线程都会崩溃2:进程间通信方式?管道 信号量 消息队列 共享内存(IPC) socket核心目的是交换数据Q:线程间通...原创 2018-10-23 14:30:08 · 325 阅读 · 0 评论 -
多线程处理Excel导入数据入库
springboot整合mybatisPlus,模拟导入2.4万条数据。一、目录结构如下图二、依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa<...原创 2020-04-04 23:18:23 · 3257 阅读 · 5 评论 -
Java中的多线程
学习多线程的话,首先我们要弄明白是什么是进程,什么是线程?一、进程和线程进程是资源分配的最小单位,线程是程序执行的最小单位。通常在一个程序中包含至少一个进程,在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义;线程可以共享进程中的所有资源;进程如下图所示:线程的生命周期:New(新生),Runnable(可运行/就绪)(Runnable与Runni...原创 2019-05-19 17:19:31 · 180 阅读 · 0 评论 -
多线程相关面试问题
一、创建线程的几种方式。https://blog.csdn.net/weixin_42228950/article/details/90312024二、线程同步的方法。https://blog.csdn.net/scgyus/article/details/79499650三、wait和sleep区别。答: sleep()方法属于Thread类,而wait()方法属于Object类;...原创 2019-06-12 17:55:21 · 226 阅读 · 0 评论 -
String 、StringBuffer 和StringBuilder的区别
一、可变与不可变String类中使用字符数组保存字符串;通过源码分析我们可以看出String是由final修饰的,如图StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,即这两种对象都是可变的。如图二、线性安全String 是不可变的,显然是线程安...原创 2019-06-11 09:28:20 · 107 阅读 · 0 评论 -
NIO和IO的区别
目录什么是NIONIO工作原理什么是I/ONIO和I/O的区别前段时间在面试的时候,和面试官探讨一个I/O处理数据慢的问题,所以想到了写这篇文章整理一下NIO和I/O。I - 就是从硬盘到内存O - 就是从内存到硬盘什么是NIONIO是在Java1.4中提出的,是面向块的I/O系统,既是系统以块的方式处理数据,每个操作在一步中生产或消费一个数据库,这种处理方式...原创 2019-08-17 14:17:47 · 619 阅读 · 0 评论 -
四种常用线程池
目录一、什么是线程池二、线程池作用三、四种线程池代码一、什么是线程池在 java.util.concurrent.Executors类中提供了一个 Executor接口的实现用于创建线程池,线程池就是我们先创建一批线程,不会等到需要的时候再去创建,而这些线程的集合就称为线程池。当需要线程时去线程池中拿,如果线程池没有线程了再新建线程。二、线程池作用1、减少线程创建和...原创 2019-09-06 19:37:50 · 198 阅读 · 0 评论 -
深入了解volatile关键字
学习volatile关键字,必然会接触到并发编程的问题,并发编程的三个基本概念:1、原子性 2、可见性 3、有序性。原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。可见性:指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。有序性:程序执行的顺序按照代码的先后顺序执行在Java内存模型中,为了效...原创 2019-03-30 17:39:41 · 293 阅读 · 0 评论 -
JDK1.8 Stream 切分集合
很多时候我们会遇到大批量数据往数据库写的场景,需要手写一个将集合分成很多份然后分批次入库。当我们学习了1.8的Stream之后,会发现这很简单哈JDK1.8 Streampackage com.bootMybatis.util;import java.util.Collection;import java.util.stream.Collectors;import java.util.stream.Stream;/** * @Date: 2021/3/30 22:15 */p原创 2021-03-30 22:37:56 · 919 阅读 · 0 评论 -
使用ThreadPoolExecutor构建线程池,实现多线程
一、场景最近做工作的时候,我们需要将树结构的数据存入到Redis中,由于数据量比较大,在存入Redis的时候使用了多线程。二、四种方式创建线程池的方式我以前的文章总结过四种方式:https://blog.csdn.net/weixin_42228950/article/details/100583510三、为什么阿里不允许使用四种方式? public static ExecutorService newCachedThreadPool() { return new Th原创 2020-08-01 16:15:50 · 733 阅读 · 0 评论 -
Java数组转LIst方式
一、Arrays.asList()public class ListDemo { public static void main(String[] args) { String[] split = "abc,bcd,cde,def".split(","); List<String> list = Arrays.asList(split); //list.ad...原创 2020-03-08 12:05:20 · 609 阅读 · 0 评论 -
Oracle Clob类型和Blob类型之间的转换
目录一、背景二、Clob 和 Blob 的区别三、使用JDK的Base64编码四、使用Oracle自带的Base64编码一、背景最近在迁移数据时,遇到了将Clob类型转换成Blob的问题,历史数据中文件内容是使用Clob类型存储,而新表使用的Blob类型,这样就导致在迁移文件时需要将类型转换。二、Clob 和 Blob 的区别BLOB和CLOB都是大字段类型,...原创 2019-12-28 11:39:38 · 3490 阅读 · 0 评论 -
Java 使用AES加密解密
package com.lzw.aes;import java.io.UnsupportedEncodingException;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import javax.crypto.BadPaddingException;imp...原创 2019-10-18 15:00:34 · 467 阅读 · 0 评论 -
JAVA使用 STMP 发送带有附件的邮件 免费下载commons-lang3-3.8.1.jar activation.jar email.jar
import java.io.IOException;import java.io.UnsupportedEncodingException;import java.security.GeneralSecurityException;import java.util.Date;import java.util.Properties;import javax.mail.Authentic...原创 2019-02-21 08:55:20 · 908 阅读 · 0 评论 -
java 两个时间段中的日期和两个时间段中月份以及当前时间的前一周
/** * 将时间段转换成list集合 * * @param dBegin * @param dEnd * @return * @throws ParseException */ public static List<String> findDates(String dBegin, String dEnd) throws ParseExcepti...原创 2019-03-01 14:19:39 · 885 阅读 · 0 评论 -
RabbitMQ必备核心知识
现在很多知名的互联网公司都有用到RabbitMQ,其性能,可扩展性让很多大公司青睐于使用它,不过想要完全使用好RabbitMQ需要掌握其核心的一些概念,这里就说说掌握RabbitMQ所需的必要知识生产者与消费者生产者: 创建消息,然后发送到代理服务器(RabbitMQ)的程序消费者:连接到代理服务器,并订阅到队列上接收消息消息流程AMQP协议规定,AMQP消息必须有三部分,交换...转载 2019-02-15 17:36:05 · 111 阅读 · 0 评论 -
关于Jvm知识看这一篇就够了
2016年左右的时候读了周志明《深入理解Java虚拟机:JVM高级特性与最佳实践》,读完之后受益匪浅,让我对Java虚拟机有了一个完整的认识,这是Jvm书籍中最好的读物之一。后来结合实际工作中遇到的问题,写了一系列关于Jvm的文章,其中开篇的几篇内容大部分参考于此书,后期加入自己一些实战的理解,转载了几篇高质量的文章,就形成了此系列读物。在金三银四的跳槽季中,很多小伙伴们都已经蠢蠢欲动,将...转载 2019-02-15 17:05:29 · 441 阅读 · 0 评论 -
多态的了解及应用
1.1多态的概述多态是面向对象的三大特征(封装 继承 多态)之一.通俗理解:多态就是一种事物的多种形态,例如学生是人的一种,则一个具体的同学张三既是学生又是人,即出现了两种形态.专业的术语说就是:同一个实现接口,使用不同的实例而执行不同的操作。1.2多态的定义和使用格式定义格式:父类的引用变量指向子类对象父类类型 变量名 = new 子类类型();变量名.方法名();普通类多态的定...原创 2018-07-01 14:55:42 · 376 阅读 · 0 评论 -
批量下载文件,将文件打包成压缩文件
批量压缩文件 public static byte[] zipFiles(List<File> listfiles) throws IOException { byte[] buf = new byte[1024]; ByteArrayOutputStream outPut = new ByteArrayOutputStream(); ...原创 2019-01-04 15:30:19 · 683 阅读 · 0 评论 -
JSONArray转换成list
List<String> idList = new ArrayList<>(); if (jsonArray != null && jsonArray.size() > 0) { for (int i = 0; i < jsonArray.si...原创 2018-12-18 09:36:41 · 11400 阅读 · 0 评论