自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

龙吟山庄

用技术改变世界,用代码改变命运!

  • 博客(76)
  • 资源 (5)
  • 收藏
  • 关注

原创 Java代码优化之超搞笑的小技巧

前言代码优化是一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的:呜呼!泰山不让土壤,故能成其大;河海不择细流,故能就其深;王者不却众庶,故能明其德。一点一滴的优化都是未来系统飞速疾驰的巨大动力。代码优化的目标是:1.减小代码的体积。2.提高代码运行的效率。优化细节1、尽量指定类、方法的final修饰符带有 final 修饰符的类是不可派生的。在 Java 核心 API 中,有许多应用 final 的例子,例如 jav

2021-09-29 11:03:50 9

原创 Java8 LocalDate、Date、LocalDateTime、时间戳的转换

1.LocalDate转DateLocalDate nowLocalDate = LocalDate.now();Date date = Date.from(localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant());2.LocalDateTime转DateLocalDateTime localDateTime = LocalDateTime.now();Date date = Date.from(localDateTime.atZo

2021-06-23 13:08:27 179

原创 Spring MVC及Spring Boot项目中RestTemplate的运用

第一、RestTemplate简介RestTemplate是Spring提供的用于访问Rest服务的客端, RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端比如Android或者第三方服务商都是使用RestTemplate请求restful服务。第二、Spring MVC项目中RestTemplate的使用1、使用RestTemplate之前,需要初始化其实例。创建一个工具类如下,初始化实例后,可以通过注解注入调用类中。import or

2021-03-09 19:21:22 48

原创 Tomcat配置图片保存路径

1.使用Tomcat作为服务器的时候,如果不配置图片保存路径,将图片保存在项目路径下,那么再次打war包发布项目可能会造成图片的丢失,每次重启前将图片先保存再copy到服务器明显不方便,这时可以配置图片保存位置,将图片保存到项目外的地方,方法如下:打开tomcat - conf下的server.xml文件,在Host节点下添加<Context docBase="D:/imgs" path="/imgs" />docBase为图片保存的位置,path为图片的访问路径。例如:1.该

2020-12-24 10:06:44 166

原创 Java后端正则表达式校验数字、字母及特殊字符

下面以Java代码为例简述用正则表达式校验密码复杂度。/** * 正则表达式校验密码复杂度 * @author shixiangcheng * 2020-12-17 */public class TestPattern { public static final String LETTER_PATTERN="^.*[a-zA-Z]+.*$";//字母 public static final String NUMBER_PATTERN="^.*[0-9]+.*$";//数字 public s

2020-12-17 11:08:25 1643

原创 linux杀死指定端口的进程命令

假设要杀死端口:8160的进程netstat -apn|grep 8160kill -9 pid示例

2020-10-29 11:42:33 517

原创 org.apache.commons.beanutils.ConversionException: No value specified for ‘BigDecimal‘

问题描述:当使用org.apache.commons.beanutils.BeanUtils进行对象拷贝时,遇到BigDecimal的属性会报错No value specified for ‘BigDecimal’问题重现:1.新增类:Aimport java.math.BigDecimal;public class A { private String name; private BigDecimal money; public String getName() { return nam

2020-10-14 14:53:57 278

原创 Java Out Of Memory解决之JAVA_OPTS参数说明与配置

JAVA_OPTS="-server -Xms1024m -Xmx2048m -Xss512k -XX:PermSize=300m -XX:MaxPermSize=1024m"-Xms256m :初始化内存-Xmx1024m :能获得的最大内存-Xss1024K :每增加一个线程消耗的内存-XX:PermSize=300m :最小内存的永久保存区域,主要存放class文件。-XX:MaxPermSize=456m :最大内存的永久保存区域。...

2020-09-30 17:28:36 234

原创 Eclipse如何安装lombok工具

第一、下载lombok.jar第二、双击下载好的lombak.jar,安装步骤如下1、点击Specify location,选择eclipse安装目录2、点击:Install/Update3、点击Quit Installer,完成安装第三、安装完成之后,请确认eclipse安装路径下是否多了一个lombok.jar包,并且其配置文件eclipse.ini中是否 添加了如下内容:-javaagent:D:\Tools\Eclipse2020\eclipse\lombok.jar第四、重启e

2020-09-17 17:18:19 62

原创 JSON串的字段和类中字段不一致时如何转换?

第一、前言Json串是我们现在经常会遇到的一种描述对象的字符串格式。在用Java语言开发的功能中,也经常需要做Json串与Java对象之间的转换。第二、正常转换fastjson就是经常用来做Json串与Java对象之间的转换,就像下面我用fastjson实现的示例。import com.alibaba.fastjson.JSON;/** * JSON与对象转换 * @author shixiangcheng * 2020-08-22 */public class JsonDemo {

2020-08-22 18:36:42 1887 1

原创 JSP+Servlet中使用cos.jar实现文件上传下载

第一、前言本文通过JSP+Servlet的架构,用cos.jar实现文件的上传与下载。不涉及数据库交互。第二、引入相关jar包第三、代码示例1、新建com.servlet.UploadServlet.javaimport java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;impor

2020-08-09 11:49:41 121

原创 JQuery实现复选框全选或全不选

第一、前言在做前端开发时,经常会遇到对复选框的全选或全不选,本文主要探讨JQuery实现方式。第二、下载JQuery开发包第二、代码示例<%@ page contentType="text/html;charset=UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitiona

2020-08-09 09:41:49 85

原创 JQuery.validate验证表单后Ajax异步提交

第一、前言本文主要介绍jquery.validate+jquery.form实现表单验证,然后用Ajax方式异步提交。本文重在介绍前端技术,故省略和数据库交互部分。后端仅提供Controller代码来模拟效果。第二、场景用户注册时,录入个人信息后,做表单验证,然后提交。第三、代码示例1、新建web Project,命名:Examination1,引入Spring MVC相关jar包。下面仅提供jar包截图,请读者自行下载,若个人无法自行下载,可在文章下留言向本人索要相关jar包。2....

2020-08-08 21:29:18 202

原创 探究ThreadLocal内存泄漏及弱引用

第一、前言有些程序员在使用ThreadLocal的过程中会发现有内存泄漏的情况,就猜测这个内存泄漏与Entry中使用了弱引用的key有关系。第二、内存泄漏的相关概念1.Memory overflow:内存溢出是没有足够的内存提供申请者使用。2.Memory leak:内存泄漏是指程序中已动态分配的内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃的严重后果。内存泄漏的堆积终将导致内存溢出。第三、弱引用的相关概念Java中的引用有4种类型:强、软、弱、虚。当

2020-08-02 21:23:24 345

原创 ThreadLocalMap线性探测法解决hash冲突

第一、前言ThreadLocal使用的是自定义的ThreadLocalMap,接下来我们来探究一下ThreadLocalMap的hash冲突解决方式。第二、ThreadLocal的set()方法public void set(T value) { Thread t = Thread.currentThread(); ThreadLocal.ThreadLocalMap map = getMap(t); if (map != null) map.set(this,

2020-08-01 17:20:33 2755

原创 ThreadLocal无锁化线程封闭及与Synchronized的区别

第一、前言建议将本文和ThreadLocal应用场景-事务案例一起阅读。第二、ThreadLocal简介从Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程上下文。总结:1.线程并发:在多线程并发的场景下2.传递数据:我们可以通过ThreadLocal在同一线程,不同组件中

2020-07-25 10:48:08 81

原创 ThreadLocal的核心方法源码

第一、前言基于ThreadLocal的内部结构,我们继续探究一下ThreadLocal的核心方法源码,更深入的了解其操作原理。除了构造之外, ThreadLocal对外暴露的方法有以下4个:第二、get方法1、源码和对应的中文注释 /** * 返回当前线程中保存ThreadLocal的值 * 如果当前线程没有此ThreadLocal变量,则它会通过调用{@link #initialValue} 方法进行初始化值 * @return 返回当前线程对应此Thread

2020-07-19 21:16:33 61

原创 ThreadLocal内部结构探究实现线程数据隔离的原理

第一、前言本篇文章主要通过分析ThreadLocal的内部结构,探究它能够实现线程数据隔离的原理。第二、JDK早期设计每个ThreadLocal都创建一个Map,然后用线程作为Map的Key,要存储的局部变量作为Map的value,这样就能达到各个线程的局部变量隔离的效果。第三、JDK8的设计每个Thread维护一个ThreadLocalMap,这个Map的key是ThreadLocal实例本身,value才是真正要存储的值Object。具体的过程是这样的:1、每个Thread线程内部都有一

2020-07-19 20:54:51 199

原创 ThreadLocal应用场景-事务案例

第一、ThreadLocal介绍1.线程并发: 在多线程并发的场景下2.传递数据: 我们可以通过ThreadLocal在同一线程,不同组件中传递公共变量3.线程隔离: 每个线程的变量都是独立的,不会相互影响第二、常用方法第三、事务案例1、场景构建这里我们先构建一个简单的转账场景: 有一个数据表account,里面有两个用户Jack和Rose,用户Jack 给用户Rose 转账。 案例的实现就简单的用mysql数据库,JDBC 和 C3P0 框架实现。2、数据准备,新建表t_account,

2020-07-18 18:25:58 248

原创 Hibernate中的Criteria查询

第一、前言阅读本篇文章之前,请先阅读:Hibernate中的HQL查询第二、QBC简介QBC:Query By Criteria,它是一种更加面向对象的查询方式,它把生成语句的过程全都融入到方法之中了。效率比HQL低。第三、代码演示1、基本查询package com.demo;import java.util.List;import org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.Trans

2020-07-04 21:21:55 40

原创 Hibernate中的HQL查询

第一、前言阅读本篇文章之前,请先阅读:Hibernate中的事务控制第二、HQL的查询0、准备测试数据1、基本查询package com.demo;import java.util.List;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.query.Query;import com.demo.dto.Teacher;import com.demo.util.Hibe

2020-07-04 17:15:22 64

原创 Hibernate中的事务控制

第一、前言阅读本文章之前请先阅读:ORM框架之Hibernate基本入门配置第二、要解决的问题让Session对象符合使用原则。即一个线程只能有一个Session。本文将介绍Session和线程绑定的配置和使用细节。第三、代码示例首先,复用之前的代码,建一个测试类package com.demo;import org.hibernate.Session;import com.demo.util.HibernateUtil;/** * 测试类 * @author shixiangchen

2020-07-04 15:29:44 59

原创 Hibernate若干面试题

第一、get方法与load方法的区别:1.查询的时机不同get的查询时机:每次调用get方法时,马上发起查询。 立即加载load的查询时机:每次真正使用的时候,发起查询. 延迟加载2.返回的结果不同get方法返回的对象是实体类类型load方法返回的对象是实体类类型的代理对象load方法默认情况下是延迟,可以通过配置的方式改为立即加载第二、Hibernate中的对象状态瞬时状态(临时状态):没有OID,和Session没关系。持久化状态:有OID,和Session有关系。只有持久化状

2020-07-04 14:43:37 53

原创 Hibernate的一级缓存与快照机制

第一、Hibernate的一级缓存Hibernate的一级缓存指的是Session对象的缓存,一旦Session对象销毁了,则一级缓存也就消失了。第二、测试类Test.java。package com.demo;import org.hibernate.Session;import org.hibernate.Transaction;import com.demo.dto.Teacher;import com.demo.util.HibernateUtil;/** * 测试类 * @au

2020-06-21 15:51:17 77

原创 ORM框架之Hibernate基本入门配置

第一、ORM介绍ORM对象-关系映射,是随着面向对象的软件开发方法发展而产生的。用来把对象模型表示的对象映射到基本SQL的关系模型数据库结构中。这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作实体对象的属性和方法。ORM技术是在对象和关系之间提供了一条桥梁。简单的说就是把程序中的实体类和数据库表建立起来对应关系。第二、Hibernate概述Hibernate是一个轻量级,企业级,开源的ORM持久层框架。是可以操作数据库的框架。它就是一个架构。通常情况下软件工程

2020-06-20 18:23:49 81

原创 为什么HashMap是非线程安全的?

HashTable是线程安全的,因为里面的方法使用了synchronized进行同步。但是HashMap为什么是非线程安全的呢?难道仅仅就是因为内部的方法没有synchronized关键字修饰吗?这篇文章主要来分析一下原因。我们知道HashMap底层是一个Entry数组,当发生hash冲突的时候,HashMap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入。1、 HashMap 在插入的时候现在假如 A 线程和 B 线程同时进行插入操作,然后计算出

2020-06-02 14:28:27 190

原创 HashMap的数据结构存储过程和扩容机制

1、HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。JDK1.8之前HashMap由数组+链表组成的,数组是HashMap的主体,链表则是为了解决哈希冲突(两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同)而存在的(“拉链法”)解决冲突。JDK1.8之后在解决哈希冲突时有了较大的变化,当链

2020-05-24 16:09:47 403

原创 Spring Boot以注解方式整合Dubbo

1.本文旨在总结Spring Boot和Dubbo的整合方式,对于Spring Boot和Dubbo的具体介绍不再赘述,如有兴趣可参考文章:Spring Boot 2 入门案例和Dubbo中Provider与Consumer搭建以及Dubbo的Admin管理界面2.代码示例第一、新建一个Maven工程DubboServer作为服务端。a.新建DubboServer.javapackage...

2020-04-30 18:05:00 230

原创 将JSON报文转为Java对象

1.对于不同系统之间的接口调用,一般采用JSON作为数据传输格式,调用方将对象转为JSON报文,服务端将JSON报文解析转为Java对象,然后进行业务处理。本文旨在总结服务端如何将JSON报文转为Java对象。代码示例a.RequestDTO.javaimport java.io.Serializable;/** * 请求参数通用类 * @author shixiangcheng *...

2020-04-29 22:15:10 437

原创 RSA生成公私钥并加解密

1.RSA简介RSA是目前使用最广泛的公钥密码体制之一,可以实现非对称加密。它是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA算法的安全性基于RSA问题的困难性,也就是基于大整数因子分解的困难性上。但是RS...

2020-04-29 21:12:16 646

原创 Java使用replaceAll()方法替换字符串中的(“.“)点号

场景:把字符串2020.04.28中的(.)点号全都换成(-)横线。代码示例/** * 测试类 * @author shixiangcheng * 2020-04-28 */public class Test { public static void main(String [] args){ //原始字符串 String sourceStr="2020.04.28"; ...

2020-04-28 10:36:45 2165

原创 java BeanUtils 对象属性复制,将一个对象的属性值赋值给另一个对象

import org.springframework.beans.BeanUtils;BeanUtils.copyProperties(源对象, 目标对象);

2020-04-21 14:04:49 933

原创 通过javap反汇编学习synchronized的原理

编写简单的同步代码块public class Demo{ private static Object obj=new Object(); public static void main(String [] args){ synchronized(obj){ System.out.println("HelloWorld"); } }}我们要看synchroni...

2020-03-29 21:23:01 183

原创 并发编程之Synchronized与Lock的区别

第一、synchronized的特性1、可重入特性一个线程可以多次执行synchronized重复获取同一把锁。2、代码演示/** * 演示synchronized可重入 * 1.自定义一个线程类;2.在线程类的run方法中使用嵌套的同步代码块;3.使用两个线程来执行 * @author shixiangcheng * 2020-03-28 */public class Dem...

2020-03-28 22:51:03 67

原创 Java实现简单的邮件发送

1、新建一个Maven工程,并加入依赖。<dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.5</version></dependency>2、编写代码...

2020-02-23 15:43:09 97

原创 MySQL实现自增的序列(Sequence)

1、Mysql不支持直接的Sequence,首先需要创建一张表来模拟Sequence的功能。CREATE TABLE t_sequence(seq_name varchar(100) NOT NULL COMMENT '主键',table_name varchar(100) NOT NULL COMMENT '表名标识该序列是某张表的',column_name varchar(200) N...

2020-02-22 15:37:13 1205

原创 EasyExcel导出数据到多个sheet并实现页面下载

第一、Java解析Excel工具EasyExcelJava 程序员在项目上一般会经常遇到解析数据、生成Excel的需求,比较流行的就是Apache poi框架了,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。esayExcel在大数据量的时候是一行一行的解析,不同于POI的...

2020-01-17 16:28:02 13765 18

原创 伪共享问题-并发编程无声的性能杀手

本文以LongAdder源码为例进行说明。关于原子累加器的论述可以参考文章:原子累加器LongAdder与AtomicLong1.LongAdder部分源码2.多核机器的存储结构CPU为了提升性能,在设计上都设计了多级缓存。一个CPU会分多个核心,每个CPU核心都有自己的一级缓存、二级缓存,多个核心之间可以共享三级缓存,多个CPU之间可以共享内存。时间对比3.伪共享问题因为CPU与...

2020-01-12 16:35:55 170

原创 浅谈maven基本使用

1.Maven是Apache公司开源项目,是项目构建工具。用来依赖管理。2.Maven第一大核心依赖管理:对Jar包的管理过程,通过坐标信息自动引入jar包。第二大核心项目构建:项目编码完成后对项目进行编译、测试、打包、部署等一系列的操作都通过命令来实现。3.Maven安装、配置本地仓库maven程序安装前提:maven程序java开发,它的运行依赖JDK。3.1 maven的下载安装...

2019-12-25 14:39:11 62

原创 Java子父类间静态代码块、非静态代码块、构造方法的执行顺序

Java子父类间静态代码块、非静态代码块、构造方法的执行顺序class B{static{System.out.println(“父类B静态代码块”);}{System.out.println(“父类B非静态代码块”);}public B(){System.out.println(“父类B构造函数”);}}class A extends B{static{System....

2019-12-20 10:47:31 101

RSAHelper.java

RSA非对称加密工具类,封装了通用的函数。可以获取公钥和私钥,以及加密,解密方法。用于接口调用时的安全控制。

2020-04-29

dubbo-admin-2.5.3.war

Dubbo的Admin管理界面war包

2021-01-13

JSP+Servlet+cos文件上传下载Jar包.rar

包含4个jar:cos.jar,jsp-api.jar,servlet-api.jar;smartupload.jar。可实现Java Web中的文件上传与下载。

2020-08-09

jquery.validate+jquery.form.rar

jquery.validate+jquery.form开发包,可以实现交互友好的form表单验证功能,及异步提交机制。

2020-08-08

Oracle之分析函数.pdf

分析函数是 Oracle 专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计。本文总结了若干分析函数的使用方式,供大家学习参考,有问题可以随时私信沟通。十分乐意和大家学习交流。谢谢!

2019-08-27

空空如也

空空如也

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

TA关注的人 TA的粉丝

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