java
文章平均质量分 68
Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。
Java 可运行于多个平台,如 Windows, Mac OS 及其他多种 UNIX 版本的系统。
alexander137
见则有,不见则无
展开
-
fastjson序列化和反序列化理解
json序列化直接根据get和set方法进行序列化json反序列化则有以下几个步骤 没有构造函数的类,java中有默认无参构造函数,此时反序列化会根据getset方法的名称进行属性赋值,使用没问题 当类中存在一个自定义有参构造函数的时候,此时java默认无参构造函数就没有了,此时反序列化是以有参构造函数的参数名称进行注入的,与类型无关 当类中存在多个自定义有参构造函数的时候,此时反序列化将以参数长的为优先进行反序列化 当类中存在多个自定义有参构造函数,且参数个数一..原创 2022-03-23 14:36:06 · 4469 阅读 · 0 评论 -
log4j远程注入漏洞模拟和详解
IT之家 12 月 10 日消息,近期一个 Apache Log4j 远程代码执行漏洞细节被公开,攻击者利用漏洞可以远程执行代码。Apache Log4j2 是一款优秀的 Java 日志框架。该工具重写了 Log4j 框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。IT之家获悉,由于 Apache Log4j2 某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊.原创 2021-12-21 11:43:46 · 4508 阅读 · 2 评论 -
kafka多线程并发消费处理
1、在kafka异步处理数据的时候,为了提高kafka的效率,通常是一口气拉取批量数据进行计算,但是kafka分区数的有限决定了消费者的数量限制,简单的增加消费者数量无法获取到性能的提升,此时需要将批量数据进行分批多线程处理,并在多个线程执行完毕之后再统一提交偏移量以下是kafka的消费端的配置kafka.consumer.servers: 192.168.0.1:9092kafka.consumer.enable.auto.commit: falsekafka.consumer.sessio原创 2021-11-29 14:43:07 · 5126 阅读 · 0 评论 -
json生成excel文件
package excel;import com.alibaba.fastjson.JSONObject;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import.原创 2021-11-25 16:14:49 · 1673 阅读 · 0 评论 -
java微基准测试代码块性能
基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。可以简单的类比成我们电脑常用的鲁大师,或者手机常用的跑分软件安兔兔之类的性能检测软件。都是按一定的基准或者在特定条件下去测试某一对象的的性能,比如显卡、IO、CPU之类的。使用如下:1、pom文件引入<!-- https://mvnrepository.com/artifact/org.openjdk.jmh/jmh-core JAVA 微基准测试套件 -->.原创 2021-08-06 15:58:53 · 704 阅读 · 1 评论 -
离线升级curl采坑
先在线yum打包1、安装reporpm -Uvhhttp://www.city-fan.org/ftp/contrib/yum-repo/rhel6/x86_64/city-fan.org-release-2-1.rhel6.noarch.rpm2、查看该 repo 包含的 curl 版本yum.repos.d]# yum --showduplicates list curl --disablerepo="*" --enablerepo="city*"3、修改该repo的...原创 2020-08-19 11:13:48 · 1483 阅读 · 0 评论 -
java常用时间工具方法
1、获取两个时间之间的天数、周数、月数(最小单位为天)有三种实现方式:calendar的date日期获取出来,通过until方法获取之间的差距;转化为毫秒数,再除以一天得毫秒数;字符串的date日期获取然后until获取差距,其中通过java的微基准测试发现方式2的性能最好,方式3的性能最差 public static int getMonthsDiff(Date startDate, Date endDate) { Calendar calendar = Calendar.ge原创 2020-08-04 17:42:29 · 282 阅读 · 0 评论 -
JDK10、JDK11、JDK12新特性
JDK10新特性1、var声明变量很多人抱怨Java是一种强类型,需要引入大量的样板代码。甚至在这些情况下,给定好变量名,通常很清楚发生了什么,明显类型声明往往被认为是不必要的。许多流行的编程语言都已经支持某种形式的局部变量类型推断:如C++ (auto), C# (var), Scala (var/val), Go (declaration with :=)等。JDK10 可以使用v...原创 2019-09-16 15:47:13 · 537 阅读 · 0 评论 -
java Integer判等问题、java基础问题
1、作为Java程序员,了解堆和栈,是最基础的基本功。一句话总结堆和栈的作用,就是:堆放对象栈放常量,当然,栈也放了其他一些东西,比如基本类型。今天说说常量池,这东西是jdk1.5提供的一个“缓存池”,包装类型Integer 在赋值时,比如Integera = 10,这个时候我们会考虑,这个a是个对象吧,那它应该存放在堆里面咯,但事实是这样吗?当a的范围在-128到127之...原创 2019-07-10 20:45:08 · 179 阅读 · 0 评论 -
java必备知识进阶
目录1.java的内存管理a.主要包括:内存分配和内存回收2.堆和栈的区别3.字符串hash方法4.字符串判等5.Apache和tomcat的区别6.nginx和tomcat的区别7.定时任务8.RabbitMQ 中实现RPC的机制是:9.rabbitmq和activemq和kafka的区别10.常见单例模式11.mybatis一级缓存和二级缓存...原创 2019-02-28 23:05:16 · 914 阅读 · 3 评论 -
java学习路线
1、java基础2、java集合框架3、java多线程4、jvm5、数据库基本操作、关系型数据库、非关系型数据库、数据仓库(odps、teradata)6、数据库优化7、jdbc、orm映射框架、领域驱动8、servlet容器、tomcat、apache、nginx等容器9、springmvc、springboot、mybatis、struts210、sprin...原创 2019-04-01 00:59:36 · 107 阅读 · 0 评论 -
jvm调优以及docker容器的远程jms监控
摘要:jdk自带原生可视化查看线程、堆、cpu执行、方法执行的工具jvisualvm.exe,如果想要查看老年代, 新生代、年轻代相关的运行状况可以安装插件Visual GC(VisualVM是Sun的一个OpenJDK项目,其目的在于为Java应用创建一个整套的问题解决工具。它集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump、Thr...原创 2019-05-06 01:18:12 · 848 阅读 · 0 评论 -
RPC原理和理解
前言: RPC的由来,是怎样一步步演进出来的; RPC的基本架构是什么; RPC的基本实现原理,就是下边的这张图,重点中的重点; REST和SOAP、RPC有何区别呢? 整个调用的过程经历了哪几步和SpringMVC的执行流程一样,相当重要; 一、为什么要有RPC随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已...原创 2019-05-19 12:51:19 · 212 阅读 · 0 评论 -
aixcoder使用
ai是目前发展的一种趋势,不仅仅在生活方面ai会自我驱动学习并在日常生活中提供人类便捷和帮助,而且还可以通过ai提高程序员的开发效率,aixcoder就是这样一款比较好用成熟的插件,他有如下功能:智能代码提示 她用强大的深度学习引擎,能给出更加精确的代码提示; 代码风格检查 她有代码风格智能检查能力,帮助开发者改善代码质量; 编程模式学习 她能自主学习开发者的编程模式,边用...原创 2019-06-08 20:07:51 · 14218 阅读 · 7 评论 -
探讨多线程2种实现方式区别
1.Runnable更容易实现资源共享,能多个线程同时处理一个资源。2.runable是实现而thread只能继承导致此类不能再继承其它的类了,具有一定的扩展方面的局限虽然网上存在一些资源表示thread方式也可以实现资源共享,如下代码所示1:public class MyThread extends Thread { private int ticket=5; priv...原创 2019-06-28 15:04:38 · 151 阅读 · 1 评论 -
探讨主线程等待子线程执行完毕的方法
实现子线程未执行完主线程阻塞的方式有很多种,不过大致原理是计数,确保都执行完毕或者通过主线程和所有子线程保证顺序执行的方式,对于countDownLatch以及java线程池的都是concurent下面的jar包方法1:用sleep方法,让主线程睡眠一段时间,当然这个睡眠时间是主观的时间,是我们自己定的,这个方法不推荐 new Thread(new Runnable() { ...原创 2019-06-29 11:40:38 · 850 阅读 · 0 评论 -
java获取exe文件的版本信息
package util;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;public class ExeDllFileVersion { public static int unpack(by...原创 2019-03-16 14:15:30 · 2251 阅读 · 2 评论