自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

龙吟山庄

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

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

原创 设计模式之责任链

设计模式之责任链

2022-08-24 14:59:58 27

原创 Java8之Stream

第一、Java8 Stream之filter,distinct,skip,limit,map,flatmap详细介绍List<Integer> list= Arrays.asList(1,2,3,4,5,1);//1.filter过滤流中的数据。List<Integer> result=list.stream().filter(i->i%2==0).collect(Collectors.toList());System.out.println("filter过滤流中的数

2022-05-22 18:19:24 61

原创 Java内置线程池ExecutorService介绍及商品秒杀案例

第一、ExecutorService接口是java内置的线程池接口,通过学习接口中的方法,可以快速的掌握java内置线程池的基本使用常用方法:void shutdown() 启动一次顺序关闭,执行以前提交的任务,但不接受新任务。List shutdownNow() 停止所有正在执行的任务,暂停处理正在等待的任务,并返回等待执行的任务列表。 Future submit(Callable task) 执行带返回值的任务,返回一个Future对象。Future<?> submit(Ru

2022-05-14 19:52:19 433

原创 自定义线程池

第一、什么是线程池线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队里中,然后在创建线程后自动启动这些任务。这里的任务就是实现了Runnable或Callable接口的实例对象。第二、为什么使用线程池使用线程池最大的原因就是可以根据系统的需求和硬件环境灵活的控制线程的数量,且可以对所有线程进行统一的管理和控制,从而提高系统的运行效率,降低系统运行压力;第三、使用线程池有哪些优势a.线程和任务分离,提升线程重用性b.控制线程并发数量,降低服务器压力,统一管理所有线程c.提升系统响应速

2022-05-08 21:02:32 578

原创 Oracle的SQL优化建议

第一、SQL语句尽量用大写的因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行第二、使用表的别名当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误。第三、选择最有效率的表名顺序(只在基于规则的优化器(RBO)中有效)ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表也称为驱表,driving table)将被最先处理,在FROM子

2022-05-04 22:07:33 651

原创 docker查询日志输出到文件的优雅实践

第一、创建日志文件vim file.txt顺便普及一下vim退出的方式按 ESC,左下角就可以进行输入:w 保存但不退出:wq 保存并退出:q 退出:q! 强制退出,不保存:e! 放弃所有修改,从上次保存文件开始再编辑命令历史第二、查询容器iddocker ps第三、写入指定容器在某时间段的日志--将最近225分钟的日志写到file.txt文件docker logs --since 225m 4261ce7f5c14 >>file.txt第四、将file.tx

2022-01-15 15:13:18 5989

原创 序列化与反序列化

1.序列化与反序列化的概念序列化:将对象写入到IO流中反序列化:从IO流中恢复对象Serializable接口是一个标记接口,不用实现任何方法,标记当前类对象是可以序列化的,是给JVM看的。序列化机制允许将这些实现序列化接口的对象转化为字节序列,这些字节序列可以保证在磁盘上或者网络传输后恢复成原来的对象。序列化就是把对象存储在JVM以外的地方,序列化机制可以让对象脱离程序的运行而独立存在。序列化在业务代码也许用的不多,但是在框架层面用的是很多的。先给出序列化的例子。package com.s

2021-12-16 15:34:11 457

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

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

2021-09-29 11:03:50 103

原创 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 1128

原创 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 391

原创 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 1198

原创 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 7948

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

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

2020-10-29 11:42:33 992

原创 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 1485

原创 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 423

原创 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 676

原创 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 4695 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 335

原创 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 153

原创 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 627

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

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

2020-08-02 21:23:24 670

原创 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 4708

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

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

2020-07-25 10:48:08 110

原创 ThreadLocal的核心方法源码

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

2020-07-19 21:16:33 73

原创 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 369 1

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

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

2020-07-18 18:25:58 403

原创 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 117

原创 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 244

原创 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 153

原创 Hibernate若干面试题

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

2020-07-04 14:43:37 64

原创 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 102

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

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

2020-06-20 18:23:49 139

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

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

2020-06-02 14:28:27 428

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

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

2020-05-24 16:09:47 784

原创 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 338

原创 将JSON报文转为Java对象

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

2020-04-29 22:15:10 756

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

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

2020-04-29 21:12:16 1146

原创 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 5724

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

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

2020-04-21 14:04:49 1257

原创 通过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 248

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

RSAHelper.java

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

2020-04-29

Oracle之分析函数.pdf

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

2019-08-27

空空如也

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

TA关注的人

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