Java基础
文章平均质量分 87
暗夜猎手-大魔王
热爱运动,喜欢跑步
展开
-
Java问题诊断和排查工具(查看JVM参数、内存使用情况及分析等)
JDK自带的工具在JDK的bin目录下有很多命令行工具: 我们可以看到各个工具的大小基本上都稳定在27kb左右,这个不是JDK开发团队刻意为之的,而是因为这些工具大多数是jdk\lib\tools.jar类库的一层薄包装而已,他们的主要功能代码是在tools类库中实现的。命令行工具的好处是:当应用程序部署到生产环境后,无论是直接接触物理服务器还是远程telnet到服务器上都会受到限制。而借助tools.jar类库里面的接口,我们可以直接在应用程序中实现功能强大的监...转载 2022-03-09 19:16:11 · 4007 阅读 · 0 评论 -
雪花算法(snowflake)生成Id重复问题
原文链接:雪花算法(snowflake)生成Id重复问题 - 简书前言 最近工作上遇到一个雪花算法生成Id重复导致数据库中表主键冲突,导致入库失败的问题,所以顺便学习了一下雪花算法,下面是学习的笔记以及讨论如果解决雪花算法在分布式部署中生成...https://www.jianshu.com/p/71286e89e0c5前言最近工作上遇到一个雪花算法生成Id重复导致数据库中表主键冲突,导致入库失败的问题,所以顺便学习了一下雪花算法,下面是学习的笔记以及讨论如果解决雪花算法在分布式部署中生成重复I转载 2022-02-12 16:27:59 · 23810 阅读 · 1 评论 -
简单介绍 Java 中的编译时注解
看到一篇很好的java注解博文 转发学习一下原文链接:https://segmentfault.com/a/1190000009756015https://segmentfault.com/a/11900000097560151. 前言上一篇主要介绍了什么是注解 (Annotation)以及如何读取运行时注解中的数据, 同时用注解实现了简单的ORM功能. 这次介绍另一部分: 如何读取编译时注解( RetentionPolicy.SOURCE )2. 作用编译时注解可以用...转载 2022-02-07 20:16:40 · 655 阅读 · 0 评论 -
简单介绍 Java 中的注解 (Annotation)
看到一篇很好的注解博文 转发学习一下1. 例子首先来看一个例子: @Override public String toString() { return "xxxxx"; }这里用了@Override, 目的是告诉编译器这个方法重写了父类的方法, 如果编译器发现父类中没有这个方法就会报错. 这个注解的作用大抵是防止手滑写错方法, 同时增强了程序的可读性. 这里需要指出一点,@Override去掉并不会影响程序的执行, 只是起到标记的作用找到@Override的实...转载 2022-02-07 20:13:47 · 285 阅读 · 0 评论 -
Java日志体系学习3--Log4j2
Log4j2试验一下,引入依赖 <!-- Log4j2 门面API--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.13.1</version> </dependency>原创 2021-09-22 20:29:20 · 5684 阅读 · 0 评论 -
Java日志体系学习2--日志门面JCL&Slf4j
JCL全称为Jakarta Commons Logging,是Apache提供的一个通用日志API。 它是为 "所有的Java日志实现"提供一个统一的接口,它自身也提供一个日志的实现,但是功能非常常弱 (SimpleLog)。所以一般不会单独使用它。他允许开发人员使用不同的具体日志实现工具: Log4j, Jdk 自带的日志(JUL)。JCL是一种接口,具体要依赖于其他日志实现。引入依赖: <dependency> <groupId>commons-logg原创 2021-09-20 11:49:27 · 372 阅读 · 1 评论 -
Java日志体系学习1--JUL
最近在工作中遇到了一个有关于日志引起的性能问题,平日里只是简单实用@slj4j @log4j2 等注解来记录日志,但是对于日志记录没有全面学习总结一下,因此系统的学习一下java日志。java日志框架现有的java日志框架JUL(java util logging)、logback、log4j、log4j2JCL(Jakarta Commons Logging)、slf4j( Simple Logging Facade for Java)日志门面 JCL、slf4j日...原创 2021-09-20 10:43:16 · 260 阅读 · 0 评论 -
值比较‘’==“的原理
最近在开发过程中遇到了一个bug,主要是要比较两个正数的大小,如下所示:Obj obj = JSON.parseObject("{\n" + "\"id\":1\n" + "}", Obj.class);System.out.println(obj.id);System.out.println(1 == obj.id);简单来说,需要将一个字符串转换为一个对象obj,其中有个属性id为整数,这里使用==来比较两个整数大小,这里会出现一个空指针错误,如果当字符串中id为空,如下所示:结.原创 2021-08-27 20:29:07 · 367 阅读 · 0 评论 -
Java方法参数传递
最近翻车了,之前学习了java参数传递机制以为理解了,但是团发现还是理解的不太深刻,果然有些问题除非亲身经历否则难以彻底理解。 之前一般都是利用集合来作为方法的入参,然后再方法内部,操作集合,方法调用之后发现集合也的确发生了自己希望的改变,这一次,也是集合参数作为方法入参,在方法内部将入参重新赋值,以为方法执行完成后,集合会发生改变,没想到却失败了。大致意思如下:private void test1() { // 这里的入参list是栈中临时生成的引用变量...原创 2021-08-04 19:53:35 · 626 阅读 · 0 评论 -
由@Data注解进一步理解hashCode和equals方法
最近在阅读代码时 遇到一段代码中使用了HashMap,其中key值为JavaBean对象,由于需要对其进行修改,为了避免书写大量的get和set方法,将该对象使用@Data注解修饰,结果却出现了奇怪的现象。首先将对象作为HashMap的key值是没有问题的,验证如下:创建一个JavaBean对象public class User { private Integer userId; private String userName; public Us...原创 2020-10-08 22:24:26 · 3107 阅读 · 3 评论 -
从jvm源码看synchronized
索引synchronized的使用 修饰实例方法 修饰静态方法 修饰代码块 总结 Synchronzied的底层原理 对象头和内置锁(ObjectMonitor) synchronzied的底层原理 synchronized的优化 偏向锁 轻量级锁 轻量级锁膨胀 重量级锁 自旋 编译期间锁优化 总结 参考资料synchronize...转载 2019-12-27 20:34:12 · 255 阅读 · 0 评论 -
Java8中时间类型
学习一下java8中的新时间类型JDK1.7时间类型JDK1.7中的时间日期类型主要有 Date Calendar TimeZone //时间 Date date = new Date(); System.out.println(date); //日期 Calendar calendar = Calen...原创 2019-10-19 16:55:10 · 1936 阅读 · 0 评论 -
IntelliJ Idea快捷键
记录一下Idea常用的快捷键返回上一个代码查看位置 Ctrl+Alt+左箭头全局查找 Ctrl+Shift+F查看某个所有方法 Alt+7根据右边自动补全左边 Ctrl+Alt+V执行单元测试 Ctrl+Shift+F10...原创 2019-10-19 14:35:17 · 106 阅读 · 0 评论 -
Stream API使用简介
Java8中添加了对于Stream API的支持,Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用sql执行的数据库查询。也可以使用Stream API来并行执行操作,Stream API提供了一种高效且易于使用的处理数据的方式。流(Stream)是数据渠道...原创 2019-10-18 15:44:53 · 307 阅读 · 0 评论 -
Lambda表达式使用解析
JDK8中能够添加了对于Lambda表达式支持,学习一下1.Lambda表达式演进假定有一个集合对象,现在要实现对于集合对象的过滤操作,过滤条件多变。例如@Datapublic class Dog { private Integer size; private String name; private Integer age; private...原创 2019-10-16 19:28:37 · 400 阅读 · 0 评论 -
JsonObject使用浅析
最近在进行接口联调时,频繁使用LomBok@Data,BeanUtils以及fastjson,因此来总结学习一下。在进行web业务开发时,会频繁的将Bean与Json字符串进行转换,其中在使用JSONObject.toJSONString(bean)来进行转换时,发现转换成的json中出现字段缺失,后来研究了一下,原来是JSONObject.toJSONString(bean)默认会...原创 2019-10-16 14:44:29 · 6656 阅读 · 0 评论 -
动态代理----JDK动态代理
动态代理 代理模式一般用于增强类的方法而不直接修改原始类的代码,动态代理可以用于动态生成目标类的代理类来执行相应操作,目前动态代理主要有JDK动态代理以及CGLIB,经常会提起,也会看一下解释,但是并没有真正实践过,现在学习一下。 JDK动态代理使用反射机制,一般用来代理接口类。具体来说1.要有目标...原创 2018-10-20 11:06:59 · 191 阅读 · 0 评论 -
Java 程序员必须了解的 7 个性能指标
来源:王韵菲www.evget.com/article/2015/11/16/22990.html本文中,小编搜集了7个最有影响的衡量标注,让你可以不依赖日志文件来了解应用程序。现在,让我们看看这些性能指标,并了解如何查看并收集它们:1.响应时间和吞吐量根据应用程序的响应时间可以知道程序完成传输数据所用的时间。也可以从HTTP请求级别,或者成为数据库级别来看。对那些缓慢的查询你需要做一些优...转载 2018-12-20 16:53:38 · 126 阅读 · 0 评论 -
JVM内存区域异常模拟
JVM内存区域分为程序计数器,虚拟机栈,本地方法栈,堆区,方法区,运行时常量池以及本地直接内存。程序计数器,每个线程都有一个独立的程序计数器,作为当前线程执行字节码的行号指示器。如果执行java方法则计数器记录正在执行的虚拟机字节码指令地址,如果执行native方法则该值为空。该区域不会发生OOM异常。虚拟机栈,线程私有,java方法执行的内存模型。每个方法会创建一个栈帧,每执行一个方法对...原创 2019-03-14 16:48:50 · 420 阅读 · 0 评论 -
ArrayList源码解析
ArrayList是基于数组形式的List实现ArrayList类继承与实现接口public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable可知继承Abstract...原创 2019-03-19 16:27:34 · 86 阅读 · 0 评论 -
LinkedList源码解析
LinkedList是基于双向链表形式的List实现。类继承实现public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable可知继承一个类...原创 2019-03-19 21:24:09 · 166 阅读 · 0 评论 -
HashMap源码解析
HashMap是Map接口的一种实现,实现key-value高效存储与检索。Table of Contents类继承实现核心变量Node数据类型构造函数tableSizeFor计算大于等于容量的最小2的幂次方核心方法put(K,V)将key进行hash散列resize初始化resize扩容扩容过程中链表再散列核心方法getTreeNode数据结构...原创 2019-03-20 16:02:59 · 213 阅读 · 0 评论 -
Java反射详解
最近学习一下反射,主要参考一下http://ifeve.com/java-reflection/反射的定义以及作用java语言执行过程,由java文件编译为class文件,然后由JVM加载class文件,在内存区域方法区生成来相对应的Class对象来保存class文件的信息,因此可以在运行期通过操纵Class对象来进行相应操作,检查类,接口,变量以及方法的信息,实例化对象,调用方法,通过调...原创 2019-03-27 21:12:51 · 194 阅读 · 0 评论 -
利用科大讯飞API实现语音识别,SWT实现客户端封装
利用科大讯飞API来实现语音识别,利用Java SWT来封装界面。科大讯飞API语音识别的API可以免费试用5小时,许多厂家已经开放了语音识别的API例如百度,阿里等,这里使用科大讯飞的API来实现。其实也可以自己训练数据来实现语音识别的功能,只不过识别率可能不是太高,具体实现原理可以参考如下:日后有时间可以研究一下。https://blog.ailemon.me/2018/08/29...原创 2019-03-26 17:19:14 · 2239 阅读 · 0 评论 -
利用科大讯飞API实现语音识别,SWT实现客户端封装2
解决SWT主线程假死现象,研究SWT UI线程以及非UI线程关系。消息循环所谓“消息循环”,实际是程序循环。即Windows 中有一个系统消息队列,对于每一个正在执行的Windows应用程序,系统为其建立一个“消息队列”,即应用程序队列,用来存放该程序可能创建的各种窗口的消息。应用程序中含有一段称作“消息循环”的代码,用来从消息队列中检索这些消息并把它们分发到相应的窗口函数中。如果应用程序...原创 2019-03-27 19:57:43 · 607 阅读 · 0 评论 -
Java IO详解
参考链接:http://ifeve.com/java-io/http://www.regexlab.com/zh/encoding.htmJava IO主要用于原始数据源以及目标媒介之间传输数据,常见的数据源和目标媒介有:文件 管道 网络连接 内存缓存 System.in, System.out, System.error(注:Java标准输入、输出、错误输出)输入和输出...原创 2019-04-02 14:29:34 · 2220 阅读 · 0 评论 -
Spring AOP的实现机制
转载自:https://deanwangpro.com/2017/02/08/aop-in-java/AOP(Aspect Orient Programming),一般称为面向切面编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为Aspe...转载 2019-04-11 16:15:24 · 138 阅读 · 0 评论 -
大数据--人工智能视频学习资料分享
计算机基础课程分享计算机组成原理--哈工大链接: https://pan.baidu.com/s/19JORvDfGKXx5Goj2sIhMRw 提取码: 75z7B站链接:https://www.bilibili.com/video/av15123338大数据资料分享牛牛学堂链接:https://pan.baidu.com/s/1LMm7KnRSlaHdnYnuxcR...原创 2019-02-27 17:28:18 · 2547 阅读 · 6 评论 -
Java多线程实现加法计算
采用多线程的方式实现从1到N的和1.直接顺序计算 public static void Sum(int N){ long start1 = System.currentTimeMillis(); long sum = 0; for(int i=1; i<=N; i++){ sum += i; ...原创 2018-10-19 11:41:45 · 7784 阅读 · 3 评论