java
文章平均质量分 71
呆某人
这个作者很懒,什么都没留下…
展开
-
定时任务cron表达式
前言创建定时任务时需要对定时任务的执行时间进行设置,也就是cron表达式,cron表达式用于配置cronTrigger的实例,由七个子表达式组成,这些表达式之间用空格分隔。表达式含义Cron表达式的格式:秒 分 时 日 月 周 年(可选)。字段名 允许的值 允许的特殊字符 Seconds(秒) 0-59 , - * / Minutes(分) 0-59 , - * / Hours(小时) 0-23 , -...原创 2022-03-27 11:26:49 · 27969 阅读 · 0 评论 -
JDK1.8新特性-Stream API
JAVA8中Stream是对集合对象功能的增强,它主要对集合对象进行高效聚合操作和大批量数据操作且StreamAPI支持Lambda表达式。同时提供串行和并行两种模式进行汇聚操作,能够写出高性能、简洁的多线程代码。聚合操作在日常开发中,大部分数据处理都是通过数据库中进行处理,然后取出到内存中使用业务代码进行处理,如:客户每月平均消费 最昂贵的在售商品 本周完成的有效订单 取十个数据样本作为首页推荐一些简单的业务逻辑需求可以直接使用RDBMS中进行处理,这样就不用返回到业务代码层进行处..原创 2022-02-02 14:41:26 · 934 阅读 · 0 评论 -
JDK1.8新特性
Lambda表达式 函数式接口 *方法引用和构造器调用 Stream API 接口中的默认方法和静态方法 新时间日期APILambda表达式Lambda表达式作为Java8语法糖,允许将函数作为参数传入到方法中,但是被传入的函数必须是函数式接口。Lambda表达式语法:() -> ();前置 语法 无参数无返回值 () -> System.out.println(“Hello WOrld”) 有一个参数无返回值 (x) -> S...原创 2022-01-31 22:49:50 · 1148 阅读 · 0 评论 -
Jdbc手动实现事务管理
序言我们平常工作中用到的spring框架中的事务的管理是通过@Transcational注解来控制的声明式事务管理,其底层是通过关闭事务自动提交,手动提交事务来实现事务控制。JdbcTranscational.javaimport java.sql.*;public class JdbcTranscational { /** * mysql连接url */ private static final String URL = "jdbc:mysql://原创 2020-11-21 20:23:59 · 1783 阅读 · 0 评论 -
二、Idea 创建WebService服务端和客户端
最近接触的项目用到了WebService,不过我之前都没有用过,现在来学习下。开发环境jdk1.7tomcat8Idea2018.2.4创建WebService服务端点击Idea中的File -> New -> Project,选择Apache Axis创建WebService输入项目名webservice项目目录右击HelloWo...原创 2019-04-21 22:52:47 · 2528 阅读 · 0 评论 -
查看class文件用哪个jdk版本编译
一次问题排查中需要知道线上class文件是由哪个版本jdk编译的,于是学习了下。第一种方法首先使用EditPlus打开,打开后会有一个弹框让我们选择以什么字符编码打开class文件,这里我们选择Hex viewer(16进制字符编码)然后查看第一行的前8个组合:CA FE BA BE 00 00 00 321:前面8个字节CA FE BA BE是固定的。2:随后4个字节00...原创 2019-04-23 22:44:47 · 3374 阅读 · 3 评论 -
原生jdbc连接MySql数据库
jdbc连接mysql数据库并执行sql的步骤加载mysql的驱动类 使用DriverManager获取数据库连接Connection,入参为连接url、数据库账号、密码 使用Connection获取声明Statement 查询:使用Statement调用excuteQuery获取结果集ResuleSet;增删改:使用Statement调用excuteUpdate获取影响行数 按资源...原创 2019-08-23 22:24:21 · 507 阅读 · 0 评论 -
简单数据库连接池的手写实现
java程序与数据库之间进行的是TCP长连接,如果程序每一次操作数据库都要连接一次数据库的话,会产生比较大的开销,影响性能。这时候数据库池的出现解决了这个问题,数据库连接池在初始化的时候会生成一定数量的数据库连接存放到连接池中,在外界获取连接池时提供数据库连接,再外界不用连接的时候负责回收释放数据库连接。下面是我实现的简单数据库连接池demoJdbcConnect.java用于连接数据...原创 2019-08-25 14:55:56 · 837 阅读 · 0 评论 -
java的8种基本数据类型
boolean boolean数组中boolean是1个字节,单个boolean是4个字节byte 1个字节char 2个字节short 2个字节int 4个字节long 8个字节float 4个字节double 8个字节1、未带有字符后缀标识的整数默认为int类型;未带有字符后缀标识的浮点数默认为double类型。2、如果一...原创 2019-08-21 22:45:35 · 301 阅读 · 0 评论 -
java迭代器
本文源码基于JDK1.7Iterable获取迭代器接口Iterable接口中只有一个iterator方法,用来获取迭代器package java.lang;import java.util.Iterator;public interface Iterable<T> { Iterator<T> iterator();}Iterator迭代...原创 2019-10-02 10:28:10 · 409 阅读 · 0 评论 -
Comparable和Comparator接口解析
在学习集合数据结构源码的时候,我发现TreeMap里有用到比较器,于是学习一下。一:ComparableComparable是排序接口,如果某个数据结构想对自身的数据进行自定义排序的化,就需要实现这个接口。Comparable中定义了比较方法compareTo。package java.lang;public interface Comparable<T> { ...原创 2019-03-16 12:14:30 · 286 阅读 · 0 评论 -
项目缓存运用
之前我对于缓存的理解仅仅停留在redis上,使用第三方组件来帮助我们存储一些经常用到但是不经常变动的数据,因为这些持久化数据如果每次都从数据库中查出来,数据库的压力会比较大,同时也没有必要每次都从数据库中查询。最近我在做一个2014年的老项目,因为业务需求经常要从数据库中查询字典,但是字典表中数据有74万条,数据量大,查询性能上有所欠缺,所以想到了将字典表中数据存储到缓存中。因为是老项目,就不...原创 2019-02-13 17:30:27 · 308 阅读 · 0 评论 -
重写equals以及hashCode方法
Object自带的equals方法是用来比较两个对象的引用地址是否一致的,往往我们自己的对象所需要的equals方法需要一些特定的条件去判断是否是同一个对象,这就需要通过重写我们自定义方法的equals方法来实现了。一:Object类首先让我们一起看看Object中equals和hashCode是如何实现的 public boolean equals(Object obj) {...原创 2018-10-14 09:58:44 · 513 阅读 · 0 评论 -
动态修改线上logback日志级别
这几天稍微在看公司项目里的日志,使用的是logback来打印日志,log日志对于我而言,主要的作用便是在排查问题与监控系统。在我之前的项目里,线上的日志输出级别都是info级别,一般只有info和error级别的日志信息才能被打印出来,这样做减少了线上日志的打印,减小了系统开销。而我们在系统开发过程中,一般都是用log.debug来打印一些调试信息的。但是随着线上项目的运行,久而久之就会出现一点问...原创 2018-11-24 17:48:21 · 5846 阅读 · 0 评论 -
System.arraycopy
今天在学习ArrayList源码的时候发现有个System.arraycopy方法是用来进行数组复制的,于是想更加深入的学习下。System.arraycopy是Native原生态方法,底层是由其它语言实现的,是效率最高的数组浅复制方法。 /** * @param src 原数组 * @param srcPos 原数组开始位...原创 2018-12-06 17:08:21 · 673 阅读 · 0 评论 -
java反射详解
在我还没毕业的时候,同是实习生的一个同事问我,什么是反射,答曰不知道。我当时思索了很久,事后也查阅了相关资料,但是由于能力缺乏,还是没有弄懂。最近在公司项目里有一些功能点我自认为编写的并不是太好,代码的耦合性过大,于是想到了反射,想要深入的学习一番。什么是反射?反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变。通俗的讲就是反射可以在运行时根据指定的类名获得类的信息...原创 2019-01-25 10:14:34 · 636 阅读 · 0 评论 -
读取项目配置文件方法
LoadPropertiesimport java.io.FileNotFoundException;import java.io.IOException;import java.util.Properties;public class LoadProperties { private static Properties props = new Properties();...原创 2019-01-14 23:31:58 · 310 阅读 · 0 评论 -
Autowired注解
spring项目中我们经常使用到spring的一个注解@Autowired,这个注解是用于实现spring的一个特性,IOC(Inversion of Control)控制反转,spring将项目中的实体进行集中管理,然后通过@Autowired注解作为标识,以自动注入的方式来给实体注入属性,这些操作都是基于java反射机制来实现的。因为前段时间学习了反射的一些知识,遂尝试使用反射知识来简单实...原创 2019-01-28 16:17:27 · 16591 阅读 · 0 评论 -
集合迭代器iterator
很久之前在我使用ArrayList进行for循环删除元素的时候,发现总会抛出数组下标越界的错误,那时候我似乎还不知道iterator进行迭代删除,好像是使用for循环处理的。在工作当中几乎很少用到集合的循环删除,现在重新学习一下迭代器iterator。Iterator接口迭代器接口中有三个抽象方法。hasNext:判断容器内是否还有可供访问的元素;next:返回迭代器刚越过的元素的...原创 2019-03-01 10:50:53 · 296 阅读 · 0 评论 -
变量初始化
在类的实例化过程中,成员变量如果没有赋值的话默认都会进行初始化赋值,以下是我写的小demo。Variable类public class Variable { short s; int i; long l; byte b; char c; float f; double d; String str; pu...原创 2019-02-28 17:20:03 · 537 阅读 · 0 评论 -
理解类加载机制
一般来说,我们日常的开发都是在IDE上进行的,这能让我们将更多的注意力放在业务的处理上,但是久而久之我们就忘记了其底层的实现原理。这是一把双刃剑,我们看不到底层实现,但是当有某些问题出现的时候,也只有理解了其底层原理,才能更好的解决问题。类加载的基本原理在完成代码的编写之后,编译器会将我们的java文件编译成对应的class文件(二进制字节码文件),而类加载器的作用便是在用到这些class...原创 2018-09-02 14:07:56 · 7803 阅读 · 1 评论