随笔分类 - JAVA
摘要:为什么Java程序需要运行在虚拟机上 因为Java在设计之初的跨平台特性,我们知道Java程序是运行在Java虚拟机上的。如果你要问为什么Java程序要运行在虚拟机上,我可以反问你几个问题。 为什么买来的电器插上电就能直接使用?你可能会说,因为电是基础设施。电源有统一的标准,电器有统一的标准,所以买
阅读全文
摘要:Given an n ary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level). For example, given a 3 ary tree:
阅读全文
摘要:最近公司的项目中,有个树形结构变图结构的问题。本来我们对项目中实体之间的关系是按树形结构来表示的,也就是说实体之间不会重用,也不会有环。现在我们需要变成图的结构,实体之间可以重用,但不能有环。那么该如何解决这个问题呢? 我们先定义出什么是环: 环定义:从一条边出发,如果能回到当前边则证明有环。 可见
阅读全文
摘要:Mybatis Plus 是Mybatis的增强插件,对数据库操作Mybatis Plus提供了抽象层次比Mybatis更高的操作方法。 Wrapper是Mybatis Plus里拼接sql的包装类。具体的各种查询功能可以查看 "Mybatis Plus 条件构造器官方文档" 一、自定义查询字段 E
阅读全文
摘要:Given the root node of a binary search tree (BST) and a value to be inserted into the tree, insert the value into the BST. Return the root node of the
阅读全文
摘要:cron表达式是使用任务调度经常使用的表达式了。对于通常的简单任务,我们只需要一条cron表达式就能满足。但是有的时候任务也可以很复杂。 最近我遇到了一个问题,一条任务在开始的时候要触发A方法,在结束的时候需要触发B方法。所以每次我添加触发器的时候都需要两个cron表达式,两个表达式需要间隔一定的时
阅读全文
摘要:cron表达式是使用任务调度经常使用的表达式了。对于通常的简单任务,我们只需要一条cron表达式就能满足。但是有的时候任务也可以很复杂。 最近我遇到了一个问题,一条任务在开始的时候要触发A方法,在结束的时候需要触发B方法。所以每次我添加触发器的时候都需要两个cron表达式,两个表达式需要间隔一定的时
阅读全文
摘要:写Java代码有三年多了,遇到过很多坑,也有一些小小的心得。特地分享出来供各位学习交流。这些技巧主要涉及谷歌Guava工具类的使用、Java 8新特性的使用、DSL风格开发、代码封装等技巧。 一、null的判断 对于Java Developer来说空指针异常让我们深恶痛绝。我们进行单元测试的时候很多
阅读全文
摘要:本篇不算原创,因为主要内容来自网上的博客,所以给出我参考文章的链接。 本文cron表达式详解的大部分内容参考了 "cron表达式详解]和[Quartz使用总结、Cron表达式" 这两篇文章。 cron校验的内容参考了 "判断cron表达式输入是否有效的正则表达式" 和 "Verifying a cr
阅读全文
摘要:上一篇学习了下Function接口的使用,本篇我们学习下另一个实用的函数式接口Predicate。 Predicate的源码跟Function的很像,我们可以对比这两个来分析下。直接上Predicate的源码: Predicate是个断言式接口其参数是,也就是给一个参数T,返回boolean类型的结
阅读全文
摘要:Java8 添加了一个新的特性Function,顾名思义这一定是一个函数式的操作。我们知道Java8的最大特性就是函数式接口。所有标注了 注解的接口都是函数式接口,具体来说,所有标注了该注解的接口都将能用在lambda表达式上。 标注了 的接口有很多,但此篇我们主要讲Function,了解了Func
阅读全文
摘要:最近项目中有个邮件发送的需求,不过要求发送的HTML格式的邮件。由于Beetl对java语言的良好支持和很好的性能,我们决定使用Beetl作为我们的模板引擎。 Beetl官网已经有了很详细的教程,所以本篇侧重于实战应用,适合需要不懂beetl或其他模板引擎但需要快速上手写出代码的人。 那么为什么要用
阅读全文
摘要:一、Disruptor基本原理 在多线程开发中,我们常常遇到这样一种场景:一些线程接受用户请求,另外一些线程处理这些请求。比如日志处理中的日志输入和告警。这种典型的生产者消费者场景十分常见,而生产者消费者模式的核心就是阻塞队列。由于阻塞队列会涉及大量的锁竞争和线程阻塞,都是非常耗费CPU的操作,因此
阅读全文
摘要:群里的一个朋友有个需要,要让把word里的表格数据插入到数据库里面。 我的思路是,把格式化的数据转成insert语句,然后去执行就可以了。 要求的insert语句格式是:'insert into xxx values("字段1","字段2","字段3");" java public class Wo
阅读全文
摘要:You're given strings J representing the types of stones that are jewels, and S representing the stones you have. Each character in Sis a type of stone
阅读全文
摘要:Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。 Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。 Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁
阅读全文
摘要:如果你读过Java源码,那你应该已经见到了源码中优美的javadoc。在eclipse 中鼠标指向任何的公有方法都会显示出详细的描述,例如返回值、作用、异常类型等等。 本文主要来自《Thinking in java》的内容以及我在工作中写javadoc的经验。 三种类型的注释文档 注释文档有三种类型
阅读全文
摘要:1. 代理模式的定义和应用 1.1 代理模式的定义 Provide a surrogate or placeholder for another object to control access to it .(为其他对象提供一种代理以控制对这个对象的访问) 代理模式的类图如下: 代理模式也叫做委托
阅读全文
摘要:Java开发中不可避免的会遇到并发的问题。在进行并发编程的时候我们需要确保程序在被多个线程并发访问时可以得到正确的结果,也就是要实现线程安全。 那么什么样的标准可以称为线程安全呢?这里有线程安全的定义: 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码
阅读全文
摘要:本文整理自漫画: "什么是ConcurrentHashMap? 小灰的文章 知乎" 。已获得作者授权。 HashMap 在高并发下会出现链表环,从而导致程序出现死循环。高并发下避免HashMap 出问题的方法有两种。一是使用HashTable,二是使用Collections.syncronizedM
阅读全文