自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 java对接微信支付收不到支付通知问题(亲身实践)

问题描述: 用java对接微信支付时,统一下单接口正常。但是用户扫码付款成功后,设置用于回调的notify_url对应的接口并没有收到请求(这个url测试过,是正常的且外网能访问的)。由于官方文档没有demo,自己之前也没相关对接经验,就去网上查了查。查到一堆乱七八糟的错误解决方法,比如:必须用域名且必须是80端口... 解决方法: 一开始对接时,由于从微信官方文档上看是xm...

2020-03-09 16:41:34 1224 4

转载 springmvc的拦截器详解

简介SpringWebMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于处理器进行预处理和后处理。应用场景1、日志记录,可以记录请求信息的日志,以便进行信息监控、信息统计等。2、权限检查:如登陆检测,进入处理器检测是否登陆,如果没有直接返回到登陆页面。3、性能监控:典型的是慢日志。HandlerInterceptorpublic interface H...

2019-03-06 17:52:34 250

转载 RabbitMQ的5种模式与Activemq的2种模式

一、RabbitMQ的5种模式1 简单模式Hello World功能:一个生产者P发送消息到队列Q,一个消费者C接收生产者实现思路:创建连接工厂ConnectionFactory,设置服务地址127.0.0.1,端口号5672,设置用户名、密码、virtual host,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建队列queue,使...

2018-09-21 16:59:27 793

转载 Java的三种代理模式

Java的三种代理模式1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不...

2018-08-29 10:01:34 140

转载 linkedlist链表结构原理

一、LinkedList实现原理概述LinkedList 和 ArrayList 一样,都实现了 List 接口,但其内部的数据结构有本质的不同。LinkedList 是基于链表实现的(通过名字也能区分开来),所以它的插入和删除操作比 ArrayList 更加高效。但也是由于其为基于链表的,所以随机访问的效率要比 ArrayList 差。二、LinkedList类定义public c...

2018-08-29 10:00:21 5355 2

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

阿里巴巴java开发手册的建议在看阿里巴巴java开发手册时,有一条建议是这样的。【强制】不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。反例: List<String> a = new ArrayList<String>(); a.add("1...

2018-08-29 09:58:53 481

转载 理解线程池的原理

1.关于线程池   线程池的技术背景在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是...

2018-08-22 18:46:56 138

转载 HashMap 里的“bucket”、“负载因子” 介绍

【以下内容摘抄自点击打开链接 末尾几段】对于 HashMap 及其子类而言,它们采用 Hash 算法来决定集合中元素的存储位置。当系统开始初始化 HashMap 时,系统会创建一个长度为 capacity 的 Entry 数组,这个数组里可以存储元素的位置被称为“桶(bucket)”,每个 bucket 都有其指定索引,系统可以根据其索引快速访问该 bucket 里存储的元素。 无论何时...

2018-08-21 16:19:26 650

转载 .classpath文件详解

1 前言在使用eclipse或者myeclipse进行java项目开发的时候,每个project(工程)下面都会有一个.classpath文件,那么这个文件究竟有什么作用?2 作用.classpath文件用于记录项目编译环境的所有信息,包括:源文件路径、编译后class文件存放路径、依赖的jar包路径、运行的容器信息、依赖的外部project等信息。如果把该文件删除,则eclipse不...

2018-08-08 08:53:48 4542 1

转载 数据库存储过程

浅谈数据库之存储过程什么是存储过程      如果你接触过其他的编程语言,那么就好理解了,存储过程就像是方法一样。  竟然他是方法那么他就有类似的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名有存储过程参数也有返回值。   存储过程的优点:          存储过程的能力大大增强了SQL语言的功能和灵活性。   可保证数据的安全性和完整性。   通过存储过程...

2018-07-27 08:55:26 148

转载 jvm大全

深入理解JVM1   Java技术与Java虚拟机说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:图1   Java四个方面的关系运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.cl...

2018-07-06 17:41:10 358

转载 JVM基本结构和功能介绍

什么是JVM?为什么要有它?JVM(Java虚拟机)是一个运行已编译Java程序的抽象计算机。之所以说是”虚拟“的,是因为它基于“真正”的硬件平台和操作系统,一般以软件的形式实现。所有的Java程序都为JVM而编译。因此,在特定平台上运行已编译Java程序之前,该平台的JVM必须先要被实现。JVM在Java的跨平台特性中,起着中间人的角色。它在已编译Java程序与底层硬件平台和操作系统之间,提供一...

2018-07-06 14:43:45 664

转载 英文字母和汉字的字节长度问题

英文字母和中文汉字在不同字符集编码下的字节数英文字母:字节数 : 1;编码:GB2312字节数 : 1;编码:GBK字节数 : 1;编码:GB18030字节数 : 1;编码:ISO-8859-1字节数 : 1;编码:UTF-8字节数 : 4;编码:UTF-16字节数 : 2;编码:UTF-16BE字节数 : 2;编码:UTF-16LE 中文汉字:字节数 : 2;编码:GB2312字节数 : 2;编...

2018-07-06 14:24:56 3538

转载 为什么不能从静态的方法里面调用非静态方法,或变量and类加载机制

1.程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问...

2018-06-22 17:37:10 346

转载 java类的加载机制

1  开门见山以前曾经看到过一个java的面试题,当时觉得此题很简单,可是自己把代码运行起来,可是结果并不是自己想象的那样。题目如下: [java] view plain copy class SingleTon {      private static SingleTon singleTon = new SingleTon();     ...

2018-06-21 17:29:09 99

转载 Java中的Atomic包使用指南

引言Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作。原子变量的底层使用了处理器提供的原子指令,但是不同的CPU架构可能提供的原子指令不一样,也有可能需要某种形式的内部锁,所以该方法不能绝对保证线程不被阻塞。Atomic包介绍在Atomic包里一共有12个类,四种原子更新方式,分别是原子更新基本类型,原子更新数组...

2018-06-20 14:57:35 144

转载 线程的join()方法

一、使用方式。 join是Thread类的一个方法,启动线程后直接调用,例如: [java] view plain copy print?Thread t = new AThread(); t.start(); t.join();  Thread t = new AThread(); t.start(); t.join();二、为什么要用join()方法 在很多情况下,主线程生成并起动了子线程,如...

2018-06-20 14:16:15 5241

转载 volatile关键字

一、Java内存模型想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的。Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来)。线程对变量的所有操作(读取,赋值)都必须在工作内存中进行。不同线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主...

2018-06-20 13:07:23 129

转载 高级查询over()

注:标题中的红色order by是说明在使用该方法的时候必须要带上order by。一、rank()/dense_rank() over(partition by ...order by ...)现在客户有这样一个需求,查询每个部门工资最高的雇员的信息,相信有一定oracle应用知识的同学都能写出下面的SQL语句:[html] view plain copyselect e.ename, e.jo...

2018-06-15 14:28:26 143

转载 windows下搭建SFTP服务器

必须是在windows下的,最终在网上找了到了一个比较好的软件,FREESSHD,并且我也在windows下搭建成功了,下面我就讲步骤把。   首先是下载FREESSHD,http://download.csdn.net/detail/xx5595480/9406498   下载好之后解压,直接打开,一路同意就好,完成后打开,选择SSH然后一般情况下你会遇到说端口被占用情况,不要怕这是端口地址被占...

2018-06-12 14:35:45 4451

转载 ulimit命令

ulimit命令用来限制系统用户对shell资源的访问。如果不懂什么意思,下面一段内容可以帮助你理解:假设有这样一种情况,当一台 Linux 主机上同时登陆了 10 个人,在系统资源无限制的情况下,这 10 个用户同时打开了 500 个文档,而假设每个文档的大小有 10M,这时系统的内存资源就会受到巨大的挑战。而实际应用的环境要比这种假设复杂的多,例如在一个嵌入式开发环境中,各方面的资源都是非常紧...

2018-06-08 15:14:13 243

转载 泛洪攻击以及防护方法

泛洪攻击种类:SYN泛洪攻击。   SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击端发出的响应报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接的过程中消耗了资源,如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。我们可以利用路由器的TCP拦截功能,使网络上的主机受到保护(以Cisco路由器为例)。DHCP报文泛洪攻击DHCP报文泛...

2018-06-08 14:59:35 13106

转载 java抓包代码

一、实验内容描述本实验是用java实现的网络抓包程序,在windows环境下安装winpcap4.0和jpcap6.0后,下载eclipse和jigloo插件(一种在eclipse底下作图形化开发的工具),将其安装好,然后就可以进行java的网络抓包图形化开发了。二、原理与关键技术2.1 网络抓包技术原理网络层上有各种各样的数据包,它们以不同的帧格式在网络层上进行传输,但是在传输时它们都遵循相同的...

2018-06-08 14:24:50 1217

转载 JAVA中Stack和Heap的区别

1.Java中对象都是分配在heap(堆)中。从heap中分配内存所消耗的时间远远大于从stack产生存储空间所需的时间。 (1)每个应用程序运行时,都有属于自己的一段内存空间,用于存放临时变量、参数传递、函数调用时的PC值的保存。这叫stack。 (2)所有的应用可以从一个系统共用的空间中申请供自己使用的内存,这个共用的空间叫heap。 (3)stack中的对象或变量只要定义好就可使用了,应用程...

2018-06-08 14:04:40 107

转载 TCP协议中的三次握手和四次挥手(图解)

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:【注意】中断连接端可以是Client端,也可以是Server端。...

2018-06-08 10:42:12 184

转载 linux、windows最大连接数

一、理论知识(文章来源:http://www.cnblogs.com/zwq194/archive/2012/12/14/2817673.html)Socket 编程时,单机最多可以建立多少个 TCP 连接,受到操作系统的影响。  Windows 下单机的TCP连接数受多个参数影响:   最大TCP连接数[HKEY_LOCAL_MACHINE \System \CurrentControlSet ...

2018-06-08 10:12:04 920

转载 JVM client模式和Server模式的区别

专用和公用JRE的不同不同点在于专用JRE的bin里不仅有“client”目录,还有“server”目录,而公用的只有"client"目录。其实client和server是Java运行的两种模式,那么它们有什么区别呢?JVM client模式和Server模式启动,分别针对桌面应用和服务器应用做了相应的优化,client版本加载速度较快,server版本加载速度较慢但运行起来较快。。Java Ho...

2018-06-07 16:02:57 398

转载 shell 脚本中双引号、单引号、反引号的区别

最近要编个shell脚本处理数据,需要检测数据文件是否存在,文件名中包含日期,所以需要生成最近几天的日期,以便检测文件是否存在,看下面的脚本中如何使用双引号、单引号、反引号:[plain] view plain copyOPDATE=`date -d '-1 day' +%Y%m%d`    for i in $(seq 10)  do     FILEDATE=`date -d "-$i day...

2018-06-07 15:48:02 132

转载 JVM内存组成及分配

java内存组成介绍:堆(Heap)和非堆(Non-heap)内存       按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用...

2018-06-07 15:08:12 98

转载 JVM参数设置、分析

       不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机...

2018-06-07 15:04:04 99

转载 内存溢出java

工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题、分析问题、解决问题。 一、认识问题:首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4,测试程序:Java代码  import java.util.concu...

2018-06-07 13:46:36 120

转载 jre、jvm、jdk区别

JDK,开发java程序用的开发包,JDK里面有java的运行环境(JRE),包括client和server端的。需要配置环境变量。。。。JRE,运行java程序的环境,JVM,JRE里面只有client运行环境,安装过程中,会自动添加PATH。参考:http://ihyperwin.iteye.com/blog/1513754大家肯定在安装JDK的时候会有选择是否安装单独的jre,一般都会一起安...

2018-06-05 14:51:34 119

转载 db2备份恢复

在DB2V9的情况下,如果使用自动存储的数据库,备份之后恢复的话可能出现上述报错,必须使用如下办法恢复restore ..........taken at......... ON path-list DBPATH ON target-dir例如:db2 restore db test from "d:\oa" taken at 20121026203410 on "d:\db2i1" dbpath...

2018-05-28 17:22:57 201

转载 Spring单例模式与线程安全

Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式,这是在多线程开发的时候要尤其注意的地方。 单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求多对应的业务逻辑(成员方法),此时就要注意了,如果该处理逻辑中有对该单...

2018-05-25 17:43:19 157

转载 servlet的处理方式

Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在一个Servlet实例);2.容器初始化化Servlet主要就是读取配置文件(例如tomcat,可以通过servlet.xml的<Connector>设置线程池中线程数目,初始化线程池通...

2018-05-25 17:26:03 3199

转载 servlet int、destroy方法执行

今天稍微温习了一下 Servlet,Servlet 主要有以下几个方法: 1) destroy() 2) getServletConfig() 3) getServletInfo() 4) init(ServletConfig arg0) 5) service(ServletRequest arg0, ServletResponse arg1)destroy 和 service 方法的调用时刻很明...

2018-05-25 16:44:58 1559

转载 spring的单利模式

使用过spring的程序猿应该都知道,我们的bean(controller、service和Dao,实体bean除外)都是通过spring的IoC容器统一管理的,同时这些bean都是默认单例的,即一个bean在一个IoC容器中就只有一个实例。这一点跟设计模式中的单例略有不同,在单例模式中的单例是在整个应用中只有一个实例。我们把bean放在IOC容器中统一进行管理,只在初始化加载的时候实例化一次,一...

2018-05-25 15:47:37 359

转载 java单例模式

摘要:    本文首先概述了单例模式产生动机,揭示了单例模式的本质和应用场景。紧接着,我们给出了单例模式在单线程环境下的两种经典实现:饿汉式和懒汉式,但是饿汉式是线程安全的,而懒汉式是非线程安全的。在多线程环境下,我们特别介绍了五种方式来在多线程环境下创建线程安全的单例,即分别使用synchronized方法、synchronized块、静态内部类、双重检查模式和ThreadLocal...

2018-05-25 14:59:26 45415 9

转载 正则表达式规则、贪婪、非贪婪模式

原文地址:http://blog.csdn.net/jethai/article/details/523453681、什么是正则表达式的贪婪与非贪婪匹配  如:String str="abcaxc";    Patter p="ab*c";  贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。  非贪婪匹配...

2018-05-24 10:28:02 944

转载 JAVA编码问题汇总

工作中经常遇到java编码问题,由于缺乏研究,总是无法给出确切的答案,这个周末在网上查了一些资料,在此做些汇总。    问题一:在java中读取文件时应该采用什么编码?Java读取文件的方式总体可以分为两类:按字节读取和按字符读取。按字节读取就是采用InputStream.read()方法来读取字节,然后保存到一个byte[]数组中,最后经常用new String(byte[]);把字节数组转换成...

2018-05-23 12:36:59 275

空空如也

空空如也

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

TA关注的人

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