Java
文章平均质量分 60
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
空~自由
懒虫,心血来潮更一下
展开
-
控制某些请求不记录日志
LogPermission(print=false,write=false) //不允许日志存储,也不允许日志输出到控制台。:由于统一拦截日志请求,导致所有匹配的请求都会打印日志,这里需要控制有些请求执行不打印日志,比如定时每隔几秒执行某些请求。@LogPermission(print=false) //不允许日志输出到控制台,但允许日志存储。@LogPermission(write=false) //不允许日志存储,但允许日志输出到控制台。可以根据业务需要,在不需要日志记录的地方,添加下列注解。原创 2024-08-08 15:01:27 · 296 阅读 · 0 评论 -
Job定时任务不允许并行&错过(misfire)策略说明
将所有错过的执行时间点全都补上,例如,任务15s执行一次,执行的任务错过了4分钟,则执行MisFire时,一次性执行4*(60/15)=16次任务。任务完成后,如果下次触发时间为null,则状态变更为COMPLETE,如果下次触发任务不为nul。列,对quartz而言,就已经调度完成了,后续任务的执行状态无法跟追,导致原生注解@Disa。l,则状态变更为WAITING,进入等待下一次任务的触发。当任务执行时间过长、服务停机、任务暂停等原因,导致其超过其下次执行的时间点时,就。原创 2024-08-08 15:36:21 · 872 阅读 · 0 评论 -
Xpath 解析xml
xpath语法参考:XPath 语法 | 菜鸟教程原创 2022-06-19 18:17:05 · 368 阅读 · 0 评论 -
Maven中依赖包为provided,导致NoClassDefFoundError
明明包引入了,却报类找不到,查找后发现pom文件中依赖包引入的方式maven pom.xml中dependency配置了<scope>provided<scope/>,运行时该依赖无效,导致异常但是在IDEA中,maven配置<scope>provided</scope>,依赖只作用于编译和打包等,但不能用于运行类。通俗的说,配置了<scope>provided</scope>,就是在告诉IDEA,你不要担心,...原创 2021-07-14 18:33:35 · 3370 阅读 · 0 评论 -
IDEA中 Tomcat 控制台打印log4j日志中文乱码的解决
一、tomcat日志编码修改logging.properties,增加ava.util.logging.ConsoleHandler.encoding = UTF-8,设置控制台输出编码为UTF-8二、idea的日志显示控制台编码设置File Encodings在工具栏help -》 Edit Custom VM Options,加上-Dfile.encoding=UTF-8 注意:在idea里面改才能生效正确的操作如下所示:三、idea控制台tomcat...原创 2021-05-14 10:50:19 · 1144 阅读 · 1 评论 -
通过javadoc 生成java通用文档
说明:idea整合了javadoc的操作,可以一键生成doc文档具体步骤如下:1.选中你要生成文档的项目或者文件2. 点击上方tools->Generate JavaDoc,进行相关配置注意:前方有坑,javadoc命令运行时,默认用了gbk,需要我们在"Tools->Gerenate JavaDoc”面版的Other command line arguments 栏里输入:-encoding utf-8 -charset utf-8否则报错: 编码gbk的不可映射字符.原创 2021-04-27 15:54:06 · 179 阅读 · 0 评论 -
日志框架冲突、适配问题
日志框架的冲突那么为什么会出现共存或者冲突呢?一般是以下几种原因: 项目手动引用了各种日志框架的包 - 比如同时引用了log4j/log4j2/logback/jboss-logging/jcl等 包管理工具的传递依赖(Transitive Dependencies)导致,比如依赖了dubbo,但是dubbo依赖了zkclient,可zkclient又依赖了log4j,此时如果你的项目中还有其他日志框架存在并有使用,那么就会导致多套共存 同一个日志框架多版本共存 JAV原创 2021-04-02 23:37:57 · 252 阅读 · 0 评论 -
volatile关键字原理
Java内存模型(JMM)工作内存:虚拟机栈JMM8大操作JMM带来的问题线程间的变量副本不可见,会出现数据脏读的现象。volatile主要作用:使变量在多个线程间可见。也就是说被volatile修饰的变量能够保证每个线程能够获取该变量的最新值,从而避免出现数据脏读的现象。底层使用了MESI缓存一致性协议。线程1,线程2从主内存中读取变量flag加载到自己的现场栈内存中,假如线程2将flag的值修改为true,并写入到主内存中,这时候会触发总线嗅探机制,会将线程1..原创 2021-03-29 23:52:30 · 179 阅读 · 0 评论 -
泛型
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,以提高代码的重用率。下面来看看这些 T、E、K、V、?这些究竟是何方神圣?其实这些全都属于java泛型的通配符,刚开始如果看到这么多通配符,可能觉得就够自己喝一壶的了,实际上这几个其实没啥区别,只不过是一个约定好的字母标识,不要害怕。其实也可以 使用大写字母A,B,C,D......X,Y,Z定义的,就都是泛型,把T换成A也一样,这里T只是名字上的意义而已。E - Element (在集合中使用,因为集合中存放的是元素),原创 2021-03-10 12:11:03 · 84 阅读 · 0 评论 -
后端Long类型传到前端精度丢失问题解决
产生原因:在Spring Boot应用中,使用Jackson进行JSON序列化的时将Long类型ID转成String响应给前端前端是什么类型,JSON字符串转js对象,接收Long类型的是number,Number精度是16位(雪花ID是19位的),So:JS的Number数据类型导致的精度丢失。解决方式:1、后端的Long类型的id转用String存储,不推荐,失去了其Long类型本身的意义。2、在Long类型字段上使用注解标明序列化方式,代码量不大的情况可以考虑(局部修改)@Js.原创 2021-02-18 14:18:45 · 1547 阅读 · 2 评论 -
Spring 中经典的 9 种设计模式,打死也要记住啊!
1.简单工厂(非23种设计模式中的一种)实现方式:BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。实现原理:bean容器的启动阶段: 读取bean的xml配置文件,将bean元素分别转换成一个BeanDefinition对象。 然后通过Bean...转载 2021-02-17 21:20:54 · 77 阅读 · 0 评论 -
mybatis in 性能问题
存在问题:1.低版本mysql中in子查询导致不走索引 (测试发现MYSQL5.7之后版本是会走索引)EXPLAINSELECT *FROM workflow_task tWHERE t.task_owner_id IN ( SELECT user_id FROM sys_user u WHERE u.org_id='027366835bcf4ddb9bf767b370f751ab' and u. ENABLE = 1 )执行结果如下:原创 2021-02-02 15:21:37 · 789 阅读 · 0 评论 -
springboot重写Datasource,getConnection方法
不多说,直接上代码import com.lb.connection.LbConnection;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.springframework.stereotype.Component;import java.sql.Connection;原创 2020-12-20 14:06:28 · 2742 阅读 · 2 评论 -
Beetl-新一代Java模板引擎
简介Beetl是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,超过当前流行的模板引擎。而且还易学易用。优势:1、简单易用Beetl类似Javascript语法和习俗,只要半小时就能通过半学半猜完全掌握用法。拒绝其他模板引擎那种非人性化的语法和习俗。同时也能支持html 标签,使得开发CMS系统比较容易2、易于整合Beetl能很容易的与各种web框架整合,如Act Framework,Spring MVC,原创 2020-12-03 11:42:12 · 2145 阅读 · 0 评论 -
阿里云对象存储 OSS帮助文档
https://help.aliyun.com/document_detail/114894.html?spm=a2c4g.11186623.6.541.45ec490bdNFbNV原创 2020-11-17 22:35:09 · 373 阅读 · 0 评论 -
InputStream只能读取一次,如何实现复用?
需要对同个文件流进行两个操作,一个是上传文件存储到当前结点,一个是同步文件到其他结点。由于流只能读取一次。于是要想办法让流可以重复使用。public class BaseFileService { /** * 把InputStream首先转换成byte[]. * @param source * @return * @throws IOException */ protected byte[] getBytes(InputStream原创 2020-11-13 18:17:47 · 2247 阅读 · 0 评论 -
form表单添加认证
前端实现 var authorization="1213"; var html = "<form action='/bigdata-workflow/workflow/demand' method='post' name='testform' style='display:none'>" + "<input type='hidden' name='authorization' value="+author.原创 2020-10-10 15:36:43 · 595 阅读 · 0 评论 -
下次二面再回答不好“秒杀系统“设计原理,我就捶死自己...
秒杀业务分析正常电子商务流程: 查询商品 创建订单 扣减库存 更新订单 付款 卖家发货 秒杀业务的特性 低廉价格 大幅推广 瞬时售空 一般是定时上架 时间短、瞬时并发量高 秒杀技术挑战假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有:1、对现有网站业务造成冲击秒杀活动只是网站营销的一个附加活动,这个活动具有时间转载 2020-09-13 21:18:11 · 624 阅读 · 0 评论 -
整合ElasticSearch,出现IllegalStateException: availableProcessors is already set to [12], rejecting [12]
问题:整合es,出现如下异常信息问题原因:由于es的netty-transport版本冲突导致的解决方法:方法一:在启动类main方法中设置@SpringBootApplicationpublic class WebApplication { public static void main(String[] args) { // 解决netty-transport版本冲突 System.setProperty("es.set.netty.ru原创 2020-09-08 12:13:21 · 2287 阅读 · 2 评论 -
springboot获取应用配置的数据源,并执行sql
@RunWith(SpringRunner.class)@SpringBootTest(classes = WebApplication.class)@WebAppConfigurationpublic class WebTest { @Autowired DataSourceProperties dataSourceProperties; @Autowired protected ApplicationContext applicationContext; .原创 2020-09-01 09:34:11 · 6736 阅读 · 0 评论 -
使用juel表达式进行条件判断
简介Juel是统一表达语言轻量而高效级的实现,具有高性能,插件式缓存,小体积,支持方法调用和多参数调用,可插拔多种特性。具体可以去Juel官方网站进行详细阅读。具体实现:一、在pom文件中引入juel依赖<dependency> <groupId>de.odysseus.juel</groupId> <artifactId>juel</artifactId> <version>2.1.3</ve原创 2020-08-21 16:51:34 · 2715 阅读 · 0 评论 -
hibernate-validator service层校验注意事项
起因:javax.validation.ConstraintDeclarationException: HV000151: A method overriding another method must not redefine the parameter constraint configuration, but method SopManagerClientImpl#createDocumentInstanceAndSubmit(DocumentFlowRequest) redefines the原创 2020-08-20 14:06:02 · 2611 阅读 · 0 评论 -
SimpleDateFormat、FastDateFormat和Joda-Time
注意:SimpleDateFormat是线程不安全的,不能多个线程公用。而FastDateFormat和Joda-Time都是线程安全的,可以放心使用。例如:SimpleDateFormat在对时间进行格式化的方法format中,会先对calendar对象进行setTime的赋值,若是有多个线程同时操作一个SimpleDateFormat实例的话,就会对calendar的赋值进行覆盖,进而产生问题。SimpleDateFormat是JDK提供的,不需要依赖第三方jar包,而其他两种都得依赖第三方jar包原创 2020-08-09 15:31:34 · 1843 阅读 · 0 评论 -
CPU、内存、I/O设备速度差异
随着科技的进度,CPU、内存、IO设备都在不断的迭代,不断朝着更快的方向努力。但是在快速发展的过程中,有一个核心矛盾一直存在,就是这三者的速度差异。CPU和内存的速度差异可以形象描述为:CPU是天上一天,内存是地上一年(假设CPU执行一条普通指令需要一天,那么CPU读写内存就得等待一年时间)。内存和I/O设备的速度差异可以形象描述为:内存是天上一天,I/O设备是地上10年。程序里大部分语句都要访问内存,有些还要访问I/O,根据木桶理论(一只木桶能装多少水取决于它最短的那块木板),程序整体的性能取原创 2020-08-02 10:13:51 · 4638 阅读 · 0 评论 -
springboot读取配置文件
一、读取properties配置文件新建配置文件config.properties,位于工程resources/conf/config.properties,内容如下:paramsign.whitelist=/user/**,/order/**后台读取配置信息定义ParamSignProperties.java具体实现如下:@Component@PropertySource(value="classpath:conf/config.properties",ignoreResourc原创 2020-07-29 18:17:20 · 330 阅读 · 0 评论 -
isAssignableFrom()方法&instanceof说明
两者主要区别总结:isAssignableFrom()是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。 instanceof是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。 其中instanceof是子-->父 ,isAssignableFrom是父-->子 用法: 父类.class.isAssignableFrom(子类.class) 子类实例 instanceof 父类类型 举例说明:...原创 2020-07-21 11:01:24 · 834 阅读 · 0 评论 -
springboot2.x启动后初始化mysql脚本
方法一:配置application.yml文件在SpringBoot项目中,当有在项目启动时先执行指定的sql语句的需求时,可以在resources文件夹下创建目录sql,并添加需要执行的sql文件(schema1-init.sql,schema2-init.sql,data-init.sql),文件中的sql语句可以是DDL(数据定义)脚本或DML(数据操作),DQL(数据查询)脚本.spring: #数据库配置 datasource: url: jdbc:mysql://${.原创 2020-07-07 18:16:17 · 908 阅读 · 1 评论 -
lombok插件安装
在 java平台上,lombok 提供了简单的注解的形式来帮助我们消除一些必须有但看起来很臃肿的代码, 比如属性的get/set,及对象的toString等方法,特别是相对于 POJO;1.安装插件IDEA中安装lombok插件1.打开IDEA的Settings面板,并选择Plugins选项,然后点击 “Browse repositories..”2.在输入框输入”lombok”,得到搜索结果,选择第二个,点击安装,然后安装提示重启IDEA,安装成功; myeclipse..原创 2020-07-06 22:23:42 · 1642 阅读 · 0 评论 -
springboot 引入外部yml配置文件
如果不想把所有的配置都写在application.yml文件中,把它拆分成多个yml文件,并在application.yml文件中引用,则只需要做以下配置在application.yml文件中配置如下:spring: profiles: include: upload...原创 2020-06-29 18:41:20 · 1916 阅读 · 0 评论 -
还在用Date么,不妨试试Java8 LocalDate,真香!
初识伴随lambda表达式、streams 以及一系列小优化,Java 8推出了全新的日期时间API。Java处理日期、日历和时间的不足之处:将java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。然后就在 java8 上面增加新的特性。全新API的众多好处之一就是,明确了日期时间概念,例如:瞬时(instant)、 长短(duration)、日期、时间、时区和周期。同时继承了Joda 库按人类语言和计算机各自解析的时间处理方式。原创 2020-06-28 23:56:13 · 273 阅读 · 0 评论 -
jAVA/JS URL转码解码
Java转码:URLEncoder.encode(name,"UTF-8");js解码decodeURIComponent(name)js使用encodeURIComponent()方法进行编码,例如:var url = encodeURIComponent(encodeURIComponent(url));java解码URLDecoder.decode(url);js的encodeURIComponent与java的URLEncoder.encode编码后不同的字符有如下..原创 2020-06-24 10:54:52 · 792 阅读 · 0 评论 -
SpringBoot项目多线程中bean无法注入问题处理
一、定义bean获取工具类/** * spring 上下文辅助类 * @author */public class SpringContextUtil { private static ApplicationContext applicationContext; private SpringContextUtil() { //spring 上下文辅助类 } /** * 获取上下文 * @return */原创 2020-06-18 17:22:25 · 794 阅读 · 0 评论 -
基于springboot的策略模式(实现不同数据库下的日志操作)
一、定义策略类型public class Const { private Const(){ } /** * 日志存储 mysql */ public static final String LOG_STORGE_MYSQL = "mysql"; /** * 日志存储 hbase */ public static final String LOG_STORGE_HBASE = "hbase";}二原创 2020-06-16 19:13:11 · 372 阅读 · 0 评论 -
集群路由策略
路由策略1.第一个:当选择该策略时,会选择执行器注册地址的第一台机器执行,如果第一台机器出现故障,则调度任务失败。2.第二个:当选择该策略时,会选择执行器注册地址的第二台机器执行,如果第二台机器出现故障,则调度任务失败。3.轮询:当选择该策略时,会按照执行器注册地址轮询分配任务,如果其中一台机器出现故障,调度任务失败,任务不会转移。4.随机:当选择该策略时,会按照执行器注册地址随机分配任务,如果其中一台机器出现故障,调度任务失败,任务不会转移。5.一致性HASH:当选择该策略时,每个任务按原创 2023-08-27 11:53:03 · 167 阅读 · 0 评论 -
springboot配置文件加密
主要有以下两种方式一、通过jasypt 加解密使用方法1.引入maven依赖 <!-- 加密于解密 --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> .原创 2020-06-11 16:23:14 · 759 阅读 · 3 评论 -
统计两个日期间工作日的天数
统计两个日期间工作日天数 /** * 将LocalDate转成Date * @param localDate * @return */ public static Date LocalDateToDate(LocalDate localDate) { ZoneId zone = ZoneId.systemDefault(); Instant instant = localDate.atStartOfDay().atZon.原创 2020-05-29 19:00:50 · 613 阅读 · 0 评论 -
sonarQube扫描bug、漏洞处理汇总
目录Bugs漏洞Bugs Use an "instanceof" comparison instead. Cast one of the operands of this integer division to a "double" Remove this throw statement from this finally block. 漏洞原创 2020-05-21 18:53:13 · 35002 阅读 · 3 评论 -
String工具类
/** * 每隔num位添加分割符,例如:aabbcc,每2位用‘-’分隔,aa-bb-cc * @param str 指定字符串 * @param separator 分割符 * @param num 位数 * @return */ public static String splitString(String str,String separator, int num) { str = str.replaceAl...原创 2020-05-13 18:29:28 · 826 阅读 · 0 评论 -
openssl 跨平台方案证书生成
使用预先生成各平台key的方式,规避跨平台问题生成模长为1024bit的私钥文件private_key.pemopenssl genrsa -out private_key.pem 1024生成IOS证书生成证书请求文件rsaCertReq.csropenssl req -new -key private_key.pem -out rsaCerReq.csr生成证书rsaCert.crt,并设置有效时间为10年openssl x509 -req -days 36500 -in r原创 2020-05-11 21:31:42 · 250 阅读 · 0 评论 -
springboot 整合工程,不同包中类名相同冲突问题解决
出现冲突原因:spring提供两种beanName生成策略,基于注解的sprong-boot默认使用的是AnnotationBeanNameGenerator,它生成beanName的策略就是,取当前类名(不是全限定类名)作为beanName。由此,如果出现不同包结构下同样的类名称,肯定会出现冲突。解决方法1.重新定义beanName生成策略,继承AnnotationBeanNameGenerator,重写generateBeanName,如下所示:public class UniqueNam原创 2020-05-11 10:05:11 · 10581 阅读 · 2 评论