自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

转载 ThreadLocal笔记

一、概述1、官方术语ThreadLocal类是用来提供线程内部的局部变量。让这些变量在多线程环境下访问(get/set)时能保证各个线程里的变量相对独立于其它线程内的变量。2、大白话ThreadLocal是一个关于创建线程局部变量的类。通常情况下,我们创建的成员变量都是线程不安全的。因为他可能被多个线程同时修改,此变量对于多个线程之间彼此并不独立,是共享变量。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程无法访问和修改。也就是说:将线程公有化变成线程私有化。二、应

2020-08-11 22:10:21 331

转载 sql优化的几种方式

一、为什么要对SQL进行优化我们开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进行专门的优化,而随着时间的积累,业务数据量的增多,SQL的执行效率对程序的运行效率的影响逐渐增大,此时对SQL的优化就很有必要。二、SQL优化的一些方法1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 wh...

2020-06-08 21:53:53 3680

原创 Spring事务

一、数据库的事物的基本特性事物是区分文件存储系统与Nosql数据库重要特性之一,其存在的意义是为了保证即使在并发情况下也能正确的执行crud操作。怎样才算是正确的呢?这时提出了事物需要保证的四个特性即ACID:A: 原子性(atomicity) 事物中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事物的失败; C: 一致性(consistency) 事物结...

2020-04-07 22:19:53 297

转载 Spring IOC 容器源码分析 - 创建单例 bean 的过程

1. 简介在上一篇文章中,我比较详细的分析了获取 bean 的方法,也就是getBean(String)的实现逻辑。对于已实例化好的单例 bean,getBean(String) 方法并不会再一次去创建,而是从缓存中获取。如果某个 bean 还未实例化,这个时候就无法命中缓存。此时,就要根据 bean 的配置信息去创建这个 bean 了。相较于getBean(String)方法的实现逻辑,创建...

2020-03-10 20:14:25 160

转载 Spring IOC 容器源码分析 - 获取单例 bean

1. 简介在本篇文章中,我将会详细分析BeanFactory的getBean(String)方法实现细节,getBean(String)及所调用的方法总体来说实现上较为复杂,代码长度比较长。作为源码分析文章,本文的文章长度也会比较长,希望大家耐心读下去。好了,其他的不多说了,进入主题环节吧。2. 源码分析简单说一下本章的内容安排吧,在本章的开始,也就是2.1节,我将会分析get...

2020-03-08 14:13:38 125

转载 java动态代理详解

目前java动态代理的实现分为两种1.基于JDK的动态代理2.基于CGILB的动态代理在业务中使用动态代理,一般是为了给需要实现的方法添加预处理或者添加后续操作,但是不干预实现类的正常业务,把一些基本业务和主要的业务逻辑分离。我们一般所熟知的Spring的AOP原理就是基于动态代理实现的。1.基于JDK的动态代理基于JDK的动态代理就需要知道两个类:1.InvocationHa...

2020-03-01 15:06:05 119

原创 MyBatis源码解析(二)——动态代理实现函数调用

如果我们要使用MyBatis进行数据库操作的话,大致要做两件事情:定义DAO接口 在DAO接口中定义需要进行的数据库操作。 创建映射文件 当有了DAO接口后,还需要为该接口创建映射文件。映射文件中定义了一系列SQL语句,这些SQL语句和DAO接口一一对应。MyBatis在初始化的时候会将映射文件与DAO接口一一对应,并根据映射文件的内容为每个函数创建相应的数据库操作能力。而我们作为My...

2020-03-01 15:04:38 155

转载 MyBatis源码解析(一)——MyBatis初始化过程解析

1. 准备工作为了看清楚MyBatis的整个初始化过程,先创建一个简单的Java项目,目录结构如下图所示:1.1 Product 产品实体类public class Product { private long id; private String productName; private String productContent; ...

2020-03-01 15:03:52 146

原创 Git基本概念和底层原理

GIT和SVN的主要区别存储方式不一样使用方式不一样管理模式不一样1、存储方式区别GIT把内容按元数据方式存储类似k/v数据库,而SVN是按文件(新版svn已改成元数据存储) 演示git 存储过程演示cd .git/objects/df/git cat-file -p df70460b4b4aece5915caf5c68d12f560a9fe3e4echo ‘version...

2020-02-08 16:23:38 194

转载 web.xml中Spring使用的ContextLoaderListener和SpringMVC的DispatcherServlet之间的关系

首先需要知道的是,ContextLoaderListener属于Spring框架,其实现了ContextLoaderListener接口,本质是一个listener,当服务启动,Context初始化和销毁时被调用;而DispatcherServlet,其继承了HttpServlet,本质是一个Servlet,Servlet初始化以及相关url访问时会被调用。ContextLoaderListe...

2019-12-22 20:26:58 122

转载 hashmap头插法的危害

概念1:Rehash的概念?Rehash 是HashMap在扩容时候的一个步骤。HashMap的容量是有限的。当经过多次元素插入,使得HashMap达到一定饱和度时,Key映射位置发生冲突的几率会逐渐提高。这时候,HashMap需要扩展它的长度,也就是进行Resize影响发生Resize的因素有两个:1.Capacity(HashMap的当前长度–容量)HashMap的当...

2019-12-19 22:28:11 3781

转载 Hash算法及HashMap底层实现原理

简单说下HashMap的实现原理:首先有一个每个元素都是链表(可能表述不准确)的数组,当添加一个元素(key-value)时,就首先计算元素key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这时就添加到同一hash值的元素的后面,他们在数组的同一位置,但是形成了链表,同一各链表上的Hash值是相同的,所以说数组存放的是链表。而当链表长度太长...

2019-12-19 22:24:43 1052 1

原创 Spring Data Jpa笔记

Spring Data Jpa 简介什么么是JPA?全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。JPA仅仅是一种规范,也就是说JPA仅仅定义了一些接口,而接口是需要实现才能工作的。所以底层需要某种实现,而Hibernate就是实现了JPA接口的ORM框架。也就是说:JPA是一套ORM规范,Hi...

2019-12-18 22:06:51 256

原创 Springboot笔记

目录一、springboot整合springmvc+mybatis二、springboot异常处理三、springboot整合 Junit 单元测试四、springboot热部署五、springboot缓存技术六、springboot定时任务springboot目录结构:java: 存放源码resourcesstatic:用于存放静态html、css、js、图...

2019-12-15 23:15:03 175

原创 Nginx的反向代理和负载均衡

一、Nginx配置虚拟主机什么是虚拟主机? 虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的。 通过nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置,1、基于ip的虚拟主机, 2、基于域名的虚...

2019-12-08 19:01:57 81

转载 Spring优雅的实现策略模式

定义定义了一些平行的算法组,分别封装起来,算法之间可以相互替换,此模式使算法的变化独立于调用者之外算法结构抽象策略角色(Strategy):这是一个抽象类或者接口,将算法的行为进行封装,所有的策略类都要实现该接口 具体策略角色(ConcreteStrategy):封装了具体的算法和行为 环境角色(Context):持有一个抽象策略的引用,并提供统一调用的入口结构代码...

2019-11-28 21:57:52 297

原创 solr 8.3安装和配置IK(Linux)

1、准备安装包tomcat:https://tomcat.apache.org/download-90.cgiJDK:https://www.oracle.com/technetwork/cn/java/javase/downloads/java-archive-javase8-2177648-zhs.html下载到服务器/software/下IK:https://sea...

2019-11-23 18:37:00 684 1

转载 jsonp实现数据跨域请求

1、我们知道,哪怕跨域js文件中的代码(当然指符合web脚本安全策略的),web页面也是可以无条件执行的。远程服务器remoteserver.com根目录下有个remote.js文件代码如下:alert('我是远程文件');本地服务器localserver.com下有个jsonp.html页面代码如下:<!DOCTYPE html PUBLIC "-//W3C//D...

2019-11-06 23:45:18 116

原创 Java通过序列化实现深度复制

package beanCopy;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import j...

2019-11-05 23:29:04 211

转载 Java线程的6种状态及切换(透彻讲解)

Java中线程的状态分为6种。1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态...

2019-06-26 21:18:15 94

转载 java nio使用方法(转)

I/O即输入输出,指的是计算机和外界的接口,或者是单个程序同计算机其他部分的接口。在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统每次处理一个字节,输入流(inputstream)生产一个字节,输出流(outputstream)消费一个字节。这种工作模式下,非常容易给流数据创建过滤器(filters),而且也很容易将多个过滤器串起来,每个过滤器针对流过自己的字节做相应处...

2019-06-23 21:32:21 465

原创 Linux Shell脚本

变量: 全局变量 ---- 环境变量 局部变量 ----本地变量 变量名 = 变量值 VAR = 10对比:$变量名 : 取变量的值${变量名} : 取变量的值(更安全)$(命令):取命令执行结果$((变量名)) :对变量执行算术运算$[变量名] : 对变量执行算术运算导出:exportexport ...

2019-06-23 14:37:21 194

转载 Weblogic集群、代理及session共享

weblogic在linux下的集群配置https://blog.csdn.net/Miss_Black/article/details/78919579WebLogic集群代理服务器配置以及实现Session共享功能http://blog.sina.com.cn/s/blog_67fe9ee60102ws3u.htmlweblogic的集群与配置https://...

2019-06-11 19:07:15 883

转载 (Linux)远程挂载网络磁盘详解---nfs共享

前言在Linux或Windows乃至其他的系统,我们经常会需要进行磁盘的挂载。通常从挂载的方式的上分为本地挂载和远程挂载。Linux的本地挂载就不介绍了,这篇文章介绍的是远程挂载网络磁盘。远程挂载网络磁盘实际上,这个操作与使用nfs共享一个文件的方法是相同的。思路是服务端将一块磁盘空间本地挂载到一个目录,然后通过网络使用nfs将这个目录进行共享,客户端最后将服务端共享的目录挂载到...

2019-06-11 13:28:04 10128

转载 linux shell读取配置文件

配置文件CoverageInfoFTP_URL=ftp://svn-fb.sicent.com:21/jenkins/Jifei_Repo/OL-2/IDC_Platform/bar_seats_coverage/trunk/2016-04-06.16FTP_USER=jenkinsFTP_PASS=jenkinsSVN_URL=https://js-yuanshengtao.sice...

2019-05-21 18:29:49 512

转载 java实现读写服务器文件

转载自https://www.cnblogs.com/feathe/p/10510787.html这个主要实现的Java远程访问服务器的读写文件操作,自动登录读写文件pom.xml中要配置<dependency><groupId>ch.ethz.ganymed</groupId><artifactId>ganymed-ssh2<...

2019-05-18 18:29:02 1914

转载 jQuery实现ajax提交form表单

第一种方法(简单易用,防蚊虫):1.1 从form表单到congtroller接收。1 是form表单,2 是ajax提交 3 springmvc接收1.2 debug 看后台数据,看到了吧,userEO接收到数据了1.3 有人想看看seralize和seralizeArray数据不同 seralize:id=1&name=xiaohua&age=1...

2019-04-28 18:39:48 2106

转载 Java导出CSV格式文件

导出csv格式文件的本质是导出以逗号为分隔的文本数据import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import...

2019-03-19 18:52:31 1099

转载 java 为什么遍历的时候不能删除元素

https://blog.csdn.net/wangjun5159/article/details/61415358

2019-03-16 15:04:51 216

原创 Nginx的安装与使用

Nginx的安装与使用一、安装环境1.安装gcc安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++2.安装PCREPCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre...

2019-03-03 18:23:19 189

原创 Linux安装ftp组件

Linux安装ftp组件安装vsftpd组件 安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件。 [root@bogon ~]# yum -y install vsftpd 2.添加一个ftp用户 此用户就是用来登录ftp服务器用的。 [root@bogon ~]# us...

2019-03-03 16:18:26 126

原创 Redis笔记

在分布式数据库中CAP原理CAP+BASE:传统的ACID分别是什么:A(Atomicity)原子性 C(Consistency)一致性 I(Isolation)隔离性 D(Durability)持久性CAP: C(Consistency)强一致性 A(Availability)可用性 P(Partition tolerance)分区容错性CAP理论的核心是:一个分布式系...

2018-11-22 19:11:36 180

转载 java操作excel常用的两种方式

  Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作,在这篇博客中将为大家介绍两种操作Excel的方式,分别为:jxl和poi。对于两者的区别网上有测试如下:测试结果 类型   数据量(行)   执行时间(ms)   执行时间(ms)   执行时间(ms)   平均时间(ms) POI   1000       579      ...

2018-11-21 19:40:51 131

转载 springmvc.xml和applicationContext.xml配置的特点

1:springmvc.xml配置要点一般它主要配置Controller的组件扫描器和视图解析器下为:springmvc.xml文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="htt...

2018-11-05 21:42:16 615 1

原创 SSM框架中 filter中注入service为空的问题解决

最近在做一个自动登录模块的时候遇到一个问题,在过滤器中调用service层方法时,注入的service为NULL,参考网上的几种解决方案web filter 注入service,用了其中的方法后还是无法解决,会报 No bean named 'AutoLoginFilter' is defined最后参考https://www.cnblogs.com/chenying99/archive/20...

2018-11-02 15:33:16 2600

原创 JS中submit提交的问题

&lt;form id="ff" action=" " method="post" &gt; &lt;input type="text" name="username" class="form-control" placeholder="用户名" required&gt; &lt;input type="su

2018-10-27 22:03:25 7809

原创 Mybatis多对多高级映射

用户表 user                                 package com.dh.model;import java.util.Date;import java.util.List;public class User { private String uid; private String username; priva...

2018-10-26 11:16:25 1692 1

原创 SpringMVC笔记

第一步:发起请求到前端控制器(DispatcherServlet)第二步:前端控制器请求HandlerMapping查找Handler,可根据XML配置、注解查找。第三步:处理器映射器HandlerMapping向前端控制器返回Handler。第四步:前端控制器调用处理器适配器去执行Handler。第五步:处理器适配器去执行Handler。第六步:Handler执行完成给适...

2018-10-24 23:02:36 121

原创 Linux笔记

各硬件装置在linux中的文件名在Linux系统中,每个装置都被当做一个档案来对待,举例来说,IDE接口的硬盘文件名为 /dev/hd[a-d],括号内字母为a到d任意一个。常见装置在Linux中档案名简单癿说,整个开机流程到操作系统乀前癿劢作应该是这样癿:1. BIOS:开机主劢执行癿韧体,会讣识第一个可开机癿装置;2. MBR:第一个可开机装置癿第一个扂区内癿主要启劢记录区...

2018-10-17 16:46:29 126

转载 JavaWeb项目中包的问题

Web项目出错时别忘了检查所需jar包是否导入到lib目录下,这个小错误可能会浪费很多时间!!! java开发中 为什么有些包放在lib文件夹中就行 而有些包要配置到classpath环境变量中去?java web项目中,eclipse会自动到lib文件夹中查找需要依赖的jar,所以把驱动程序放到lib文件夹中去就可以,而servlet-api.jar是Tomcat内置的jar包,但是...

2018-10-16 18:32:40 171

java 简单的UDP聊天程序

简单的UDP聊天程序,服务器端:创建DatagramSocket对象用于打开指定端口并监听,然后用创建一个DatagramPacket,利用DatagramSocket中的receive(ds)方法接收数据并放到刚创建的DatagramPacket对象中; 这样就完成了简单的发送,接收过程。 客户端:创建DatagramSocket对象,创建好IP地址和端口号后,利用DatagramSocket中的connect(ip,port)方法和服务端建立连接,然后利用DatagramSocket中的send(dp)方法发送早已准备好的数据。

2017-12-05

空空如也

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

TA关注的人

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