自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

七弦桐

Stay Hungry, Stay Foolish

  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

转载 使用 try-with-resources 优雅关闭资源

我们知道,在 Java 编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等、redis),我们必须在这些外部资源使用完毕后,手动关闭它们。因为外部资源不由 JVM 管理,无法享用 JVM 的垃圾回收机制,如果我们不在编程时确保在正确的时机关闭外部资源,就会导致外部资源泄露,紧接着就会出现文件被异常占用,数据库连接过多导致连接池溢出**等诸多很严重的问题。JDK7 之前的资源关闭方式...

2019-12-07 19:38:49 957

转载 为什么阿里巴巴要禁用Executors创建线程池?

看阿里巴巴开发手册并发编程这块有一条:线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,通过源码分析禁用的原因写在前面通过阅读本篇文章你将了解到:线程池的定义Executors创建线程池的几种方式ThreadPoolExecutor对象线程池执行任务逻辑和线程池参数的关系Executors创建返回ThreadPoolExecutor...

2019-11-19 23:01:49 1492 1

原创 Jave Timer 使用

使用 Java 来调度定时任务时,我们经常会使用 Timer 类搞定。Timer 简单易用,在一些业务场景下用来实现简单定时调度。简单使用创建 Timer 对象编写 自己的 task 类,该类集成 TimerTask,重写 run 方法,把要定时执行的逻辑写在里面使用 Timer 执行 TimerTask// 5秒后开始执行,每秒执行一次Timer timer = new Time...

2019-11-18 23:02:36 519

原创 Reids 之用 scan 模糊匹配 key

在 redis 实际使用中,会遇到一个问题:如何从海量的 key 中找出满足特定前缀的 key 列表来?1. 不要使用 keys*redis 提供了一个简单暴力的指令 keys 用来列出所有满足特定正则字符串规则的 key。keys xxx*这个指令有致命的弊端,在实际环境中最好不要使用:这个指令没有 offset、limit 参数,是要一次性吐出所有满足条件的 key,由于 red...

2019-11-17 12:19:44 1450

原创 分布式任务调度平台 XXL-JOB

在朋友那里偶然听说到了 XXL-JOB,一个轻量级分布式任务调度平台,之前接触过 Quartz,那么这个 XXL-JOB 的优势又在哪里呢?先看下这个框架的特性以及对比 Quartz 的优势。特性1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;2、动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;3、调度中心HA(中心式):调度采用中心式...

2019-11-16 23:40:48 925

原创 WebSocket 心跳检测和重连机制

为什么会进行心跳检测简单地说是为了证明客户端和服务器还活着。websocket 在使用过程中,如果遭遇网络问题等,这个时候服务端没有触发onclose事件,这样会产生多余的连接,并且服务端会继续发送消息给客户端,造成数据丢失。因此需要一种机制来检测客户端和服务端是否处于正常连接的状态,心跳检测和重连截止就产生了。如何进行心跳检测和重连思路是:每隔一段指定的时间(计时器),向服务器发送一个...

2019-11-16 19:23:15 4272

原创 WebSocket 在 SpringBoot 中的使用

介绍WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作...

2019-11-16 19:22:05 245

转载 volatile 关键字

内存可见性由于 Java 内存模型(JMM)规定,所有的变量都存放在主内存中,而每个线程都有着自己的工作内存(高速缓存)。线程在工作时,需要将主内存中的数据拷贝到工作内存中。这样对数据的任何操作都是基于工作内存(效率提高),并且不能直接操作主内存以及其他线程工作内存中的数据,之后再将更新之后的数据刷新到主内存中。这里所提到的主内存可以简单认为是堆内存,而工作内存则可以认...

2018-10-31 10:44:38 145

原创 Quartz 教程

一、关于 Quartz - Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。 - Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。 - Quartz 允许程序开发人员根据时间的间隔来调度作业。 - Quartz 实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。...

2018-06-24 19:51:12 668

转载 Java汉字转拼音pinyin4j用法

一、工具介绍pinyin4j 是一个支持将简体和繁体中文转换到成拼音的Java开源类库;1. 功能支持同一汉字有多个发音还支持拼音的格式化输出,比如第几声之类的,同时支持简体中文、繁体中文转换为拼音…使用起来也非常简单。下面是其官方网址,其中提供了下载: pinyin4j的官方下载地址2. 目录结构及说明doc : pinyin4j的api文档lib : piny...

2018-06-19 14:55:02 1185

原创 搜索技术 Solr 入门详解

一、介绍企业站内搜索技术选型在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。1. 单独使用Lucene实现单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优...

2018-06-18 13:07:40 922

原创 时区计算

一、 JS两个函数得到标准时区的时间//得到标准时区的时间function getLocalTime(i) { //参数i为时区值数字,比如北京为东八区则输入8,西5输入-5,现默认东八区北京时间 var i=i?parseFloat(i):8; //得到本地时间 var d = new Date(); //得到1970年一月...

2018-03-27 20:04:12 2191

原创 构建一个Node树

方便遍历查找数据,比如存储机构人员数据。建立 Node 对象public class Node implements java.io.Serializable{ private int id; private int parentId; // 父节点的ID private Node parent; // 父节点 private List<...

2018-03-26 22:41:50 831

原创 接入钉钉API发送企业消息

工作中有个需求,是要把录入的销售机会由系统自动分配给销售,然后对接钉钉给销售人员发送企业消息,通知他进行跟单。参考资料 - 官方文档主页 - API1. 获取Access_TokenAccess_Token是企业访问钉钉开放平台全局接口的唯一凭证,即调用接口时需携带Access_Token。对于企业接入来说,AccessToken需要用CorpID和CorpSecret...

2018-03-26 22:35:38 38100 8

转载 从输入url到页面展示到底发生了什么

输入地址浏览器查找域名的 IP 地址  浏览器向 web 服务器发送一个 HTTP 请求服务器的永久重定向响应浏览器跟踪重定向地址服务器处理请求服务器返回一个 HTTP 响应 览器显示 HTML浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)总的过程大概如下:1、输入地址当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 ur

2017-05-01 16:06:45 1473

原创 多线程之 synchronized 和 volatile

synchronized 关键字和 volatile

2017-05-01 15:59:51 238

原创 Spring 事务

1. 关于事务事务控制就是将一系列操作当成一个不可拆分的逻辑单元,保证这些操作要么都成功,要么都失败。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。

2017-03-22 23:37:14 271

转载 jQuery Validate 验证框架详解

jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。

2017-03-13 21:12:34 376

原创 Java IO 基础

一、File 类java.io.File 类:文件和目录路径名的抽象表示形式。 通过File对象可以访问文件的属性、访问空文件或目录。分隔符:路径分割符:File.pathSeparator 名称分割符:File.separator路径的表示方式:path = “E:\test\2.jpg”; path = “E:” + File.separator + “test” + File.separ

2017-03-05 23:34:07 227

原创 sessionStorage 和 localStorage

HTML 5 中的 Web Storage 包括了两种存储方式:sessionStorage和localStorage。都是用来存储客户端临时信息的对象.他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现)。sessionStorage:用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问,并且当会话...

2017-02-27 21:22:42 317

转载 Struts 中的 Token 机制

在提交表单的时候,通常有一种情况是新增加一条记录。当新增成功的时候,跳到添加成功的界面,如果用户点击了浏览器的回退,转到刚才的提交页面,再次点击提交。此时如果没有做处理,就会发生重复提交的问题。如果新插入一条记录不对重复提交进行处理的话,那么就会在数据库中重复插入同一记录,这样会在数据库产生冗余的重复记录。

2017-02-25 10:35:27 869

原创 SLF4J使用和与Log4J对比

每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库如java.util.logging、Apache log4j、logback。在这篇文章中,我们将学习为什么使用SLF4J比log4j或者java.util.logging要优秀。

2017-02-21 11:36:24 1097 2

原创 深入 Web 请求过程

大多数传统的互联网应用程序采用长连接的交互模式,而 HTTP 协议采用无状态的短连接的通信方式。一次请求就完成了一次数据交互,通常也对应一个业务逻辑。

2017-02-20 21:24:49 382

原创 Java 多线程

进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间。线程:进程中的一个执行单元,负责进程中程序的执行。一个进程中至少有一个线程,也可以有多个线程,此时称为多线程程序。硬盘:持久化存储数据区域(关机后数据仍在)。内存:临时性存储数据区域(关机后数据消失),提高性能。CPU处理程序是通过快速切换完成的,与我们来说是随机的;多线程的使用可以合理的使用CPU资源,如果线程过多会导致降低性能。

2017-02-20 11:44:19 250

原创 内部类

内部类(Nested Class)仍是独立的类,只不过被包含于其他类中。编译之后内部类会被编译成独立的.class文件。但是前面冠以外部类的类名和$符号.成员内部类: 1. 便于访问外部类属性。 2. 内部类辅助外部类完成某些功能。

2017-02-10 15:30:17 237

转载 ajax 详解

详细介绍了 ajax 的相关属性以及用法。

2017-01-23 16:38:18 327

原创 controller 之间的跳转

在开发中,有时会遇到 controller 之间跳转的情况,而且有时在跳转的时候需要把不同的参数传递过去,比如从controller a跳转到controller b,再从controller b到前端页面,并且把controller a里的数据比如String、List、Map或者对象传递到页面,等等类似情况。结合查找网上的资料以及自己的试验,现总结如下。注: 本文实例均在springmvc框架下

2017-01-21 21:29:28 1412

原创 页面刷新导致插入重复的问题

描述项目保存后直接进入承保界面调用’new ActionForward’时,由于是请求转发(服务器行为),导致页面右键刷新的时候,会重新插入一条信息。

2017-01-18 22:45:25 542

原创 SpringMVC 中文件的上传和下载

在参照了网上的相关代码之后,总结了一下在springmvc框架中实现文件上传和下载的实现方法。内容如下。

2017-01-18 22:38:59 313

原创 Java 中利用 Freemarker 生成 Word 文档

FreeMarker是一款模板引擎:即一种基于模板、用来生成输出文本(任何来自于HTML格式的文本用来自动生成源代码)的通用工具。 使用MVC模式的动态页面的设计构思使得你可以将前端设计师(编写HTML页面的人员)从程序员中分离出来。本文为使用 freemarker 来生成 word 文档的示例工具。

2017-01-17 23:25:26 405

原创 解决tomcat启动时8080端口被占用问题

问题相信很多人会遇到这种问题:在运行tomcat的时候, 死机了,然后重启Eclipse后再次启动Tomcat的时发现起不来了,并且报以下错误:Several ports (8005, 8080, 8009) required by Tomcat v8.0 Server at localhost are already in use. The server may already be runni

2017-01-15 22:55:57 30415 3

原创 Java中数据导出到Excel实例

在平时的开发中,我们会经常遇到这样一个需求,要在页面通过一个『导出』按钮把查询出的数据导出到 Excel 表格中。本文即为实现上述需求的一个小实例。环境配置jar包 poi.jarjdk 1.6tomcat 7.0eclipse 4.4.0本 Demo 是在 SpringMVC框架中实现,有关 SpringMVC 相关的教程详见我的博客。 点击查看整个 Demo 的源码:https:/

2017-01-09 23:28:39 1021 1

原创 PO、VO、DTO、POJO以及JavaBean介绍

不管是实际开发还是过程中还是阅读各类技术书籍,PO/VO/DTO/POJO以及JavaBean出现的频率都很高,可是经常我们还是傻傻分不清楚。因此有必要对它们各自的含义以及相互间的区别有一个清晰的认识和理解。PO / ENTITYpersistent object持久对象 1. 有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。 2. 在hiber

2017-01-09 23:21:58 381

转载 Git 详解

一Git简介集中式 vs分布式二安装Git在Linux上安装Git在Mac OS X上安装Git在Windows上安装Git三创建版本库创建一个版本库通过 git init 命令把这个目录变成Git可以管理的仓库把文件添加到版本库Demo小结四版本库操作版本回退总结工作区和暂存区管理修改撤销修改撤销工作区的修改撤销已到缓存区的修改撤销提交到版本库的修

2017-01-02 12:05:58 491

原创 org.apache.commons.lang3.StringUtils 的相关用法

介绍 org.apache.commons.lang3.StringUtils 的相关用法

2016-12-31 17:17:18 3439

原创 BigDecimal 使用详解

在商用计算中,往往要求计算结果的精确,由此会使用BigDecimal,此文详细讲解了BigDecimal的使用和原理

2016-12-31 17:09:57 301

转载 @Inject 使用

这个是 Java EE 6 规范 JSR 330 – Dependency Injection for Java 中的东西,也就是 Java EE 的依赖注入。 根据 API document 上的说明,被 @Inject 标注的构造、成员字段和方法是可注入的。

2016-12-30 14:02:05 26227 1

原创 Spring MVC 框架

介绍 Spring MVC 框架的简单实用

2016-12-28 22:58:44 652

转载 Spring MVC 之 参数绑定

介绍Spring MVC 相关参数的绑定使用。

2016-12-28 22:51:14 229

css设计指南

css讲义,详细介绍了css的相关知识,希望可以对你有用

2015-12-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除