自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 问答 (2)
  • 收藏
  • 关注

原创 悲观锁和乐观锁

悲观并发控制,又叫悲观锁,在整个数据处理的过程中,将数据处于锁定状态,悲观锁的实现,往往依靠数据库提供的锁机制。例如:当前正在进行更新数据,就会对该数据进行加锁,其他操作不能对该数据进行查看或者更新,以免出现错误数据。具体的使用:在编写sql的时候尾部加上for update即可,通过开启排他锁的方式实现悲观锁。这样做的好处就是使数据更为安全,但是效率会降低,加锁机制会让数据库产生额外的开销,还增...

2018-11-21 16:50:36 174

原创 数据库相关认知

数据库优化优化数据库从两个方面考虑,一个是安全,一个是性能;首先从安全来说,为了防止数据库损坏丢失数据,往往会多配置一台数据库,一台为主,另一台为从,通过配置实现主从的关系,当主数据库损坏,从数据库通过二进制的日志文件把主数据库中的数据copy到从数据库中,通过keepalived进行监测,主数据库修复好后再用回主数据库。性能上面是加引擎,设置主数据库为innodb,innodb涉及事...

2018-11-21 16:48:48 197

原创 rabbitMQ简单实例

** * 消息发送 */public class Send { //创建队列的名称 private final static String QUEUE_NAME="queue"; public static void main(String[] args) { /** * 创建连接 */ Conn...

2018-11-21 16:15:13 202

原创 Jvm调优总结--5:典型配置

堆设置-Xms:初始堆大小-Xmx:最大堆大小-XX:NewSize=n:设置年轻代大小-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,...

2018-11-21 16:07:08 155

原创 Jvm调优总结--4:分代垃圾回收

为什么要分代不同生命周期的对象采用不同的收集方式,提高回收效率如何分代持久代主要存放java类的类信息,与垃圾收集要收集的java对象关系不大。年轻代:所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。当eden区满时,还存活的对象被复制到survivor区,当该区满时分配到另一个区,三个区都满的时候复制到年老区。年老代:在年轻代经历...

2018-11-21 16:01:50 160

原创 Jvm调优总结--3:垃圾回收面临的问题

如何处理碎片“复制”和“标记-整理”都可以如何解决同时存在的对象创建和对象回收问题进行垃圾回收前,暂停内存的分配,进行垃圾回收,回收完继续应用。这种方式最直接最有效(弊端:堆空间持续增大时,垃圾回收的时间也相应持续增大,对应的暂停时间也相应增大)为了解决这个问题就有了并发垃圾回收算法,垃圾回收线程与程序运行线程同时运行。(在新生成对象的同时要回收对象,算法复杂性增大,系统的处理...

2018-11-21 15:56:06 312

原创 Jvm调优总结--2:基本垃圾回收算法

按照基本回收策略分:引用计数(Reference Counting):对象有一个引用,增加一个引用则增加一个计数,删除一个引用则减少一个计数,垃圾回收的时候,只对收集计数为0的对象。(最致命的是无法处理循环引用的问题)标记-清除(Mark-Sweep):第一阶段:从引用根节点开始标记是所有被引用的对象。第二阶段:遍历整个堆,把未标记的对象清除。(此算法需要暂停应用,还会产生内存锁...

2018-11-21 15:54:14 170

原创 Jvm调优总结--1:概念

数据类型基本数据类型:基本数据类型的变量值保存原始值——它代表的值就是数值本身包括:byte–short–int–long–char–float–double–Boolean–returnAddress引用数据类型:引用数据类型的变量保存引用值——代表对象的引用,不是对象本身,对象本身存放在这个引用值所标示的地址的位置包括:类类型–接口类型–数组堆与栈栈是运行时的单位,堆是...

2018-11-21 15:47:57 202

原创 Dubbo分布式服务

什么是DubboDubbo是一个分布式的服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是SOA服务化治理方案的核心框架。RPC(Remote Procedure Call Protocol):远程过程调用:两台服务器A、B,分别部署不同的应用a,b。当A服务器想要调用B服务器上应用b提供的函数或方法的时候,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义传达调...

2018-11-21 15:35:54 236

原创 java序列化

java序列化和反序列化Java序列化是指把Java对象转换为字节序列的过程Java反序列化是指把字节序列恢复为Java对象的过程。为什么需要序列化与反序列化当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可以的。如何做到呢?这...

2018-11-21 14:53:46 103

原创 java反射机制

反射是框架设计的灵魂反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射就是把java类中的各种成分映射成一个个的Java对象例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把...

2018-11-19 17:21:18 105

原创 java注解

注解 :Annotaction当我们进行框架配置的时候,XML中配置太多导致维护不方便,使用注解来减少配置文件,增加开发效率,注解就是在代码中添加信息,提供一种形式化的方法JDK1.5之后产生的新功能。jdk内置注解:@OverRide放在方法之前,如果加上此注解的方法不是复写超类的方法,就会报错@Deprecated:声明程序已经过时,或者有更好的替代方案,不建议别人调用。@Suppr...

2018-11-19 17:15:35 112

原创 cookie和session的区别(简单理解)

由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端保...

2018-11-19 16:57:11 480

原创 ConcurrentHashMap原理分析

HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占。ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的Hashtabl...

2018-11-19 16:47:11 123

原创 Java 集合--List、Set、M

List常用的List分为ArrayList、Vector、LinkedListArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,二者都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快,插入数据慢;Vector由于使用了synchronized方法(如add、insert、remove、set、eq...

2018-11-19 16:33:36 152

原创 IO流的分类及应用

高端流:所有的内存中的流都是高端流(InputStreamReader)低端流:所有的外界设备中的流都是低端流(InputStream,OutputStream)如何分区:所有的流对象的后缀中包含Reader或者Writer的都是高端流,反之为低端流,也有例外(PrintStream就是高端流)

2018-11-19 15:56:00 324

原创 String,StringBuffer,StringBuilder的区别与相同点

可变与不可变①String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。②StringBuilder与StringBuffer都继承自AbstractStringBuilder类AbstractStringBuilder中也是使用字符数组保存字符串,如下就是,可知这两种对象都是可变的。是否多线程安全①String中的...

2018-11-19 15:42:52 1270

原创 svn配置使用

下载TortoiseSVN,并完成安装,安装过程中要注意选择安装SVN命令(command line client tools).SVN的默认安装目录为C:\Program Files\TortoiseSVN\bin打开intelij idea,根据下图指示完成SVN的初始配置,接下来就可以对项目进行版本控制了下面以如何将一个项目导入到SVN仓库为例,介绍SVN仓库的配置依次打开如下...

2018-11-01 15:18:11 172

翻译 java定时器

在实际开发过程中,可通过定时器的方法来自测异步回调接口,方便快捷。 /** * @author rk.zhang * @date 2018/11/1 10:53 * @note : 实现定时器的四种方式 */ public class Test01 { public static void main(String[] args)...

2018-11-01 15:05:17 99

翻译 线上HttpClient请求跳过https证书解决方案

HttpClient简介HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common下的子...

2018-09-29 12:01:56 2019

原创 IE8上传图片后台控制

/* * 通过流的方式上传文件 * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象 */@RequestMapping("/fileUpload")public String fileUpload(@RequestParam("file") MultipartFile file) throws IOEx...

2018-09-19 16:47:40 455

原创 IE8不兼容文件上传-java后台处理

文件上传ajaxFileUpload.js使用方法-包含后台接收方法。

2018-09-19 16:40:41 1556

原创 redis工具类

import java.util.Date;import java.util.List;import java.util.Map;import java.util.Set;import java.util.concurrent.TimeUnit;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.spri...

2018-09-19 16:36:55 94

原创 HttpClient请求工具类

import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.ParseException;import org.apache.http.client.ClientProtocolExcepti...

2018-09-19 16:34:52 111

原创 PDF文件转化byte数组

开发过程中遇到这个问题,给出自己最简单的解决办法import java.io.*;import java.net.*;public class DownloadPdf { /** * 从网络Url中下载文件 * @param urlStr * @throws IOException */ public static byte[] ...

2018-09-19 16:26:12 10566

原创 解决跨域配置

无需多说,直接最简单的方法,一切的理解都简历在实现上面。import org.springframework.stereotype.Component;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;im...

2018-09-19 16:23:12 6261 1

原创 电子签章

对于菜鸟级别的开发来说(@本人),可能连电子签章还搞不明白是什么东西,直接贴代码,看效果就知道了!import java.awt.AlphaComposite;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.aw...

2018-09-19 16:19:11 2104

原创 ssm快速搭建-集成shiro+freemarker

菜鸟入手,理解性不是很强,直接上代码操作。(本章用作eclipse创建项目)新建项目:shiro_parentshiro_parent-pom.xml <properties><properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding&g...

2018-09-18 19:03:45 372

原创 Mybatis简单理解

Mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。配置文件中需要配置数...

2018-09-18 14:08:36 7644

原创 SpringMVC简单理解

SpringMVC是一个web底层框架,用来简化我们获取客户端传来数据的方式和简化返回数据的。它的底层源码也看过,了解那么一点,首先来说一下它的底层原理。底层原理:用户向服务器发送请求,请求被前端控制器DispatcherServet截获,请求查询Handler,调用处理器映射器HandlerMapping,根据xml配置和注解找到具体的Handler,底层源码是通过一个doService...

2018-09-18 13:45:38 769

原创 Spring简单理解-代理及事务

spring是一个轻量级的开源框架,它的核心就是IOC和AOP。IOC,控制反转,又称依赖注入,它不需要我们再去频繁的new对象,spring会自动帮我们装配bean,需要的时候直接到这个IOC容器中去取,就好比如租房子,以前租房子需要一个房子一个房子找,费时费力,然后现在加入一个房屋中介,把你需要的房型告诉中介,就可以直接选到需要的房子,中介就相当于spring容器。有反转,也就有正转。由...

2018-09-18 11:51:47 1596 2

空空如也

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

TA关注的人

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