
java
MonkeyKing.sun
未来已来,记录现在,验证未来
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
大数据量csv数据的批量导入
注意:可以做到1秒5000条左右,读取csv部分使用easyexecl 。但是这种可读性不是很好原创 2022-12-08 13:58:40 · 712 阅读 · 0 评论 -
LocalDateTime 生成随机的日期,随机时间,随机日期+时间
项目测试用例,需要随机生成一一批日期,LocalDateTime怎么实现呢,以下是实现类import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;import java.util.Random;import java.util.concurrent.ThreadLocalRandom;/** * @program: ReservedInstance * @description原创 2021-09-18 15:48:43 · 2040 阅读 · 0 评论 -
设计模式-单列模式-饿汉模式
/** *是否多线程安全:是 * 优点:没有加锁,执行效率会提高。它 基于classloder机制避免了多线程的同步问题 * 缺点:类加载时就初始化,浪费内存。 */public class Singletonhungry { //设置一个空的构造函数,引用者不能通过构造函数创建一个null对象 private Singletonhungry(){}; //创建一个静态实例,这个类在第一次使用的时候就会被创建 private static Singletonhu.原创 2020-06-04 10:35:14 · 147 阅读 · 0 评论 -
设计模式-抽象工厂模式
使用抽象工厂模式一般要满足以下条件。系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。系统一次只可能消费其中某一族产品,即同族的产品一起使用抽象工厂模式除了具有工厂方法模式的优点外,其他主要优点如下。可以在类的内部对产品族中相关联的多等级产品共同管理,而不必专门引入多个新的类来进行管理。当增加一个新的产品族时不需要修改原代码,满足开闭原则。其缺点是:当产品族中需要增加一个新的产品时,所有的工厂类都需要进行修改。以生产电脑为例子:当涉及到这种产品族的问题的时候,就需要抽象.原创 2020-06-03 23:45:01 · 187 阅读 · 0 评论 -
设计模式-工厂模式
/** * 定义工厂接口 */public interface FoodFactory { Food makeFood(String name);}public class ChineseFoodFactory implements FoodFactory{ @Override public Food makeFood(String name) { if (name.equals("A")) { return new Chine原创 2020-06-03 22:43:30 · 170 阅读 · 0 评论 -
设计模式-简单工厂模式
简单工厂模式,通常来说这不是一种设计模式,而是大家的一种编程的写法。/** * 简单工厂模式通常就是这样, * 一个工厂类 XxxFactory,里面有一个静态方法,根据我们不同的参数, * 返回不同的派生自同一个父类(或实现同一接口)的实例对象 * 强调职责单一原则,一个类只提供一种功能, * FoodFactory 的功能就是只要负责生产各种 Food。 * 缺点:如果需要两个或者两个以上的工厂,无能为力了 */public class FoodFactory { public原创 2020-06-03 22:23:40 · 209 阅读 · 0 评论 -
Java中的线程中断
1.概述线程中断是一种机制,用于向线程发出信号,告知它必须在方便时停止执行。但是,是否检查中断状态并停止则取决于正在运行的任务。2.使用Thread.interrupt中断首先,我们将看到如何中断线程。 当我们在Thread实例上调用 interrupt时,它将设置线程的中断状态,以便代码的其他部分可以检查并对其执行操作。public class TestInterrupt { public static void main(String[] args) { TestIn原创 2020-05-25 21:44:28 · 365 阅读 · 0 评论 -
面试官系列-java线程状态
java线程的状态,java线程一共存在6中状态。分别为初始、运行、阻塞、等待、超时等待、终止。1、初始状态:也就是new,就是新建了一个线程对象,但是还没有调用start()方法。2、运行状态:也就是runnable,java线程中将就绪ready和运行中running两种状态统统超过成为运行状态。线程对象创建成功后,其他对象调用了该对象的start()方法,该状态的线程位于可运行线程池中,...原创 2020-03-12 21:37:42 · 127 阅读 · 0 评论 -
多线程解决excel数据多上传问题
excel名单人数过多,超多140000条,单个线程处理问题,已经不能满足需求,需要做多线程的优化。再一点就是多个线程导入需要给是否导入成功的标志。 首先,上传excel根据业务校验excel,这个部分省略,可以查上传excel和校验的相关知识。 其次,就是怎么将整个excel分拆成各个小的部分,然后分线程上传。A、将excel全部加载在内存list中(batchParams...原创 2019-12-22 21:18:06 · 1052 阅读 · 0 评论 -
NGINX反向代理,JAVA获取客户端IP
生产上,配置NGINX的反向代理,为了统计IP访问记录,需要代理服务器知道来自用户的IP,这部分应该怎样实现。第一步:NGINX的反向代理的配置upstream MLSCHECK{ server 10.3.51.XX:9802 weight=3 max_fails=3 fail_timeout=10s; server 10.3.XXX.XXX:9802 ...原创 2019-11-14 18:42:10 · 991 阅读 · 0 评论 -
org.apache.catalina.connector.ClientAbortException: null 异常处理
2019-07-01 23:12:42.182 [http-9500-3] ERROR com.neusoft.grp.support.spring.LoggingExceptionResolver [222.172.160.147,/geeRunner/webapi/queryCmptList,]-nullorg.apache.catalina.connector.ClientAbortEx...原创 2019-07-02 10:22:53 · 3896 阅读 · 0 评论 -
排查tomcat发包重启失败问题
重启tomcat重新发布war包,日志打印如下错误信息: Deploying web application archive integration.warlog4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).log4j:WARN Please ini...原创 2019-01-10 11:17:46 · 542 阅读 · 0 评论 -
java邮件发布代码
由于阿里云邮箱和腾讯邮件的接口,都有每天发送邮件数量的限制,而公司自己搭建的邮件服务器没有这个限制,以下是java调用公司邮件服务器,发送邮件的代码:package com.neusoft.www.photo_wingman; import java.util.ArrayList; import java.util.Collection; ...原创 2018-07-10 10:13:21 · 654 阅读 · 0 评论 -
JVM调优的liunx命令
在平时的运维工作中,我们经常会碰到下面这些问题:1、OutOfMemoryError,内存不足 2、内存泄露 3、线程死锁 4、锁争用(Lock Contention) 5、Java进程消耗CPU过高导致服务器CPU或者内存飙高影响线上业务,对于解决以上问题,我们常用的JVM性能调优监控工具有:jps、jstat、jstack、jmap、jhat、hprof、jinfo如果想要查看Java进转载 2017-12-15 13:08:06 · 1222 阅读 · 0 评论 -
状态的进行中、未开始、已结束状态的排序
if( now()< start_time, 2, if(start_time <= now() and now() <= end_time,1,0))原创 2017-08-14 14:27:41 · 6957 阅读 · 1 评论 -
时间加上偏移量于当前时间比较大小 java实现
public static int compareNowDate(String dateStr,int excursion){ SimpleDateFormat formatt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); Date dt=formatt.pars原创 2017-10-19 15:28:30 · 2221 阅读 · 0 评论 -
Java 位运算
public class test { public static void main(String[] args){ //1、左移 System.out.println(5<<2); //0101左移2位==》010100==》20 //2、右移 System.out.println(5>>2);原创 2017-10-19 16:42:35 · 215 阅读 · 0 评论 -
java7 新特性
switch中增加对String类型的支持。public String generate(String name, String gender) { String title = ""; switch (gender) { case "男": title = name + " 先生";原创 2017-11-07 09:45:09 · 440 阅读 · 0 评论 -
《Java虚拟机原理图解》 1.1、class文件基本组织结构
找一个class文件,用文本工具打开如图所示按照上面的二进制编码,了解他的组成结构 1、魔数 所有的java编译器编译而成的class文件的前四个字节都是OXCAFEBEBE 作用:在JVM在尝试加载某个文件到内存中来的时候,会首先判断此class文件有没有jvm认为可以接受的‘签名’,即jvm会首先读取文件的前四个字节,如果是OXCAFEBEBE,则JVM会认为可以将此文件当作class文件转载 2017-12-13 11:39:29 · 377 阅读 · 0 评论 -
《Java虚拟机原理图解》 1.2 Class文件中的常量池详解
NO1.常量池在class文件的什么位置? 在class文件中的魔数,副版本号、主版本之后,紧接着就是常量池的数据区域,红线包括的位置。NO2.常量池的里面是怎么组织的? 常量池的组织很简单,前端的两个字节占有的位置叫做常量池计数器(constant_pool_count),它记录着常量池的组成元素 常量池项(cp_info) 的个数。紧接着会排列着constant_pool_count-转载 2017-12-13 15:01:35 · 527 阅读 · 1 评论 -
《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合
讲完了class文件中的常量池,我们就相当于克服了class文件中最麻烦的模块了。现在,我们来看一下class文件中紧接着常量池后面的几个东西:访问标志、类索引、父类索引、接口索引集合访问标志、类索引、父类索引、接口索引集合 在class文件中的位置 访问标志(access_flags)能够表示什么? 访问标志(access_flags)紧接着常量池后,占有两个字节,总共16位,如下图所示:当转载 2017-12-13 16:57:33 · 462 阅读 · 0 评论 -
《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
1.概述 字段表集合是指由若干个字段表(field_info)组成的集合。对于在类中定义的若干个字段,经过JVM编译成class文件后,会将相应的字段信息组织到一个叫做字段表集合的结构中,字段表集合是一个类数组结构,如下图所示: 注意:这里所讲的字段是指在类中定义的静态或者非静态的变量,而不是在类中的方法内定义的变量。请注意区别。 比如,如果某个类中定义了5个字段,那么,JVM在编译此类的转载 2017-12-13 17:50:27 · 283 阅读 · 0 评论 -
《Java虚拟机原理图解》1.5、 class文件中的方法表集合--method方法在class文件中是怎样组织的
1.概述 方法表集合是指由若干个方法表(method_info)组成的集合。对于在类中定义的若干个,经过JVM编译成class文件后,会将相应的method方法信息组织到一个叫做方法表集合的结构中,字段表集合是一个类数组结构,如下图所示: method方法的描述-方法表集合在class文件中的位置 method方法的描述-方法表集合紧跟在字段表集合的后面,如下图所示: 一个类中的method方法转载 2017-12-14 13:23:08 · 342 阅读 · 0 评论 -
《Java虚拟机原理图解》2.JVM机器指令集
前言 Java虚拟机和真实的计算机一样,运行的都是二进制的机器码;而我们将.java 源代码编译成.class 文件,class文件便是Java虚拟机能够认识的二进制机器码,Java能够识别class文件中的信息和机器指令,进而执行这些机器指令。那么,Java虚拟机是如何运行这些二进制的机器码的呢? 本文将通过一个非常简单的例子,带你感受一下Java虚拟机运行机器码的过程和其工作的转载 2017-12-14 15:09:05 · 531 阅读 · 0 评论 -
《Java虚拟机原理图解》3. JVM类加载器机制与类加载过程
前言 读完本文,你将了解到: 一、为什么说Jabalpur语言是跨平台的 二、Java虚拟机启动、加载类过程分析 三、类加载器有哪些?其组织结构是怎样的? 四、双亲加载模型的逻辑和底层代码实现是怎样的? 五、类加载器与Class 实例的关系 六、线程上下文加载器一、为什么说Java语言是跨平台的? Java语言之所以说它是跨平台的、可以在当前绝大部分的操作系统平台下运行,是因为Ja转载 2017-12-14 16:44:22 · 317 阅读 · 0 评论 -
Java中String和byte[]间的转换浅析
Java语言中字符串类型和字节数组类型相互之间的转换经常发生,网上的分析及代码也比较多,本文将分析总结常规的byte[]和String间的转换以及十六进制String和byte[]间相互转换的原理及实现。String转byte[]首先我们来分析一下常规的String转byte[]的方法,代码如下:public static byte[] strToByteArray(String str) {转载 2017-08-02 18:53:41 · 701 阅读 · 0 评论