it
文章平均质量分 67
czqqqqq
这个作者很懒,什么都没留下…
展开
-
java对接微信支付收不到支付通知问题(亲身实践)
问题描述: 用java对接微信支付时,统一下单接口正常。但是用户扫码付款成功后,设置用于回调的notify_url对应的接口并没有收到请求(这个url测试过,是正常的且外网能访问的)。由于官方文档没有demo,自己之前也没相关对接经验,就去网上查了查。查到一堆乱七八糟的错误解决方法,比如:必须用域名且必须是80端口... 解决方法: 一开始对接时,由于从微信官方文档上看是xm...原创 2020-03-09 16:41:34 · 1370 阅读 · 4 评论 -
ulimit命令
ulimit命令用来限制系统用户对shell资源的访问。如果不懂什么意思,下面一段内容可以帮助你理解:假设有这样一种情况,当一台 Linux 主机上同时登陆了 10 个人,在系统资源无限制的情况下,这 10 个用户同时打开了 500 个文档,而假设每个文档的大小有 10M,这时系统的内存资源就会受到巨大的挑战。而实际应用的环境要比这种假设复杂的多,例如在一个嵌入式开发环境中,各方面的资源都是非常紧...转载 2018-06-08 15:14:13 · 281 阅读 · 0 评论 -
泛洪攻击以及防护方法
泛洪攻击种类:SYN泛洪攻击。 SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击端发出的响应报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接的过程中消耗了资源,如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。我们可以利用路由器的TCP拦截功能,使网络上的主机受到保护(以Cisco路由器为例)。DHCP报文泛洪攻击DHCP报文泛...转载 2018-06-08 14:59:35 · 13349 阅读 · 0 评论 -
java抓包代码
一、实验内容描述本实验是用java实现的网络抓包程序,在windows环境下安装winpcap4.0和jpcap6.0后,下载eclipse和jigloo插件(一种在eclipse底下作图形化开发的工具),将其安装好,然后就可以进行java的网络抓包图形化开发了。二、原理与关键技术2.1 网络抓包技术原理网络层上有各种各样的数据包,它们以不同的帧格式在网络层上进行传输,但是在传输时它们都遵循相同的...转载 2018-06-08 14:24:50 · 1256 阅读 · 0 评论 -
JAVA中Stack和Heap的区别
1.Java中对象都是分配在heap(堆)中。从heap中分配内存所消耗的时间远远大于从stack产生存储空间所需的时间。 (1)每个应用程序运行时,都有属于自己的一段内存空间,用于存放临时变量、参数传递、函数调用时的PC值的保存。这叫stack。 (2)所有的应用可以从一个系统共用的空间中申请供自己使用的内存,这个共用的空间叫heap。 (3)stack中的对象或变量只要定义好就可使用了,应用程...转载 2018-06-08 14:04:40 · 125 阅读 · 0 评论 -
为什么不能从静态的方法里面调用非静态方法,或变量and类加载机制
1.程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问...转载 2018-06-22 17:37:10 · 373 阅读 · 0 评论 -
TCP协议中的三次握手和四次挥手(图解)
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:【注意】中断连接端可以是Client端,也可以是Server端。...转载 2018-06-08 10:42:12 · 199 阅读 · 0 评论 -
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 · 1000 阅读 · 0 评论 -
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 · 426 阅读 · 0 评论 -
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 · 149 阅读 · 0 评论 -
JVM内存组成及分配
java内存组成介绍:堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用...转载 2018-06-07 15:08:12 · 118 阅读 · 0 评论 -
JVM参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机...转载 2018-06-07 15:04:04 · 118 阅读 · 0 评论 -
内存溢出java
工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题、分析问题、解决问题。 一、认识问题:首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4,测试程序:Java代码 import java.util.concu...转载 2018-06-07 13:46:36 · 139 阅读 · 0 评论 -
java类的加载机制
1 开门见山以前曾经看到过一个java的面试题,当时觉得此题很简单,可是自己把代码运行起来,可是结果并不是自己想象的那样。题目如下: [java] view plain copy class SingleTon { private static SingleTon singleTon = new SingleTon(); ...转载 2018-06-21 17:29:09 · 116 阅读 · 0 评论 -
高级查询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 · 166 阅读 · 0 评论 -
volatile关键字
一、Java内存模型想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的。Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来)。线程对变量的所有操作(读取,赋值)都必须在工作内存中进行。不同线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主...转载 2018-06-20 13:07:23 · 150 阅读 · 0 评论 -
线程的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 · 5923 阅读 · 0 评论 -
springmvc的拦截器详解
简介SpringWebMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于处理器进行预处理和后处理。应用场景1、日志记录,可以记录请求信息的日志,以便进行信息监控、信息统计等。2、权限检查:如登陆检测,进入处理器检测是否登陆,如果没有直接返回到登陆页面。3、性能监控:典型的是慢日志。HandlerInterceptorpublic interface H...转载 2019-03-06 17:52:34 · 273 阅读 · 0 评论 -
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 · 838 阅读 · 0 评论 -
Java的三种代理模式
Java的三种代理模式1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不...转载 2018-08-29 10:01:34 · 155 阅读 · 0 评论 -
linkedlist链表结构原理
一、LinkedList实现原理概述LinkedList 和 ArrayList 一样,都实现了 List 接口,但其内部的数据结构有本质的不同。LinkedList 是基于链表实现的(通过名字也能区分开来),所以它的插入和删除操作比 ArrayList 更加高效。但也是由于其为基于链表的,所以随机访问的效率要比 ArrayList 差。二、LinkedList类定义public c...转载 2018-08-29 10:00:21 · 5402 阅读 · 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 · 526 阅读 · 0 评论 -
HashMap 里的“bucket”、“负载因子” 介绍
【以下内容摘抄自点击打开链接 末尾几段】对于 HashMap 及其子类而言,它们采用 Hash 算法来决定集合中元素的存储位置。当系统开始初始化 HashMap 时,系统会创建一个长度为 capacity 的 Entry 数组,这个数组里可以存储元素的位置被称为“桶(bucket)”,每个 bucket 都有其指定索引,系统可以根据其索引快速访问该 bucket 里存储的元素。 无论何时...转载 2018-08-21 16:19:26 · 673 阅读 · 0 评论 -
理解线程池的原理
1.关于线程池 线程池的技术背景在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是...转载 2018-08-22 18:46:56 · 158 阅读 · 0 评论 -
.classpath文件详解
1 前言在使用eclipse或者myeclipse进行java项目开发的时候,每个project(工程)下面都会有一个.classpath文件,那么这个文件究竟有什么作用?2 作用.classpath文件用于记录项目编译环境的所有信息,包括:源文件路径、编译后class文件存放路径、依赖的jar包路径、运行的容器信息、依赖的外部project等信息。如果把该文件删除,则eclipse不...转载 2018-08-08 08:53:48 · 5008 阅读 · 1 评论 -
数据库存储过程
浅谈数据库之存储过程什么是存储过程 如果你接触过其他的编程语言,那么就好理解了,存储过程就像是方法一样。 竟然他是方法那么他就有类似的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名有存储过程参数也有返回值。 存储过程的优点: 存储过程的能力大大增强了SQL语言的功能和灵活性。 可保证数据的安全性和完整性。 通过存储过程...转载 2018-07-27 08:55:26 · 168 阅读 · 0 评论 -
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 · 394 阅读 · 0 评论 -
JVM基本结构和功能介绍
什么是JVM?为什么要有它?JVM(Java虚拟机)是一个运行已编译Java程序的抽象计算机。之所以说是”虚拟“的,是因为它基于“真正”的硬件平台和操作系统,一般以软件的形式实现。所有的Java程序都为JVM而编译。因此,在特定平台上运行已编译Java程序之前,该平台的JVM必须先要被实现。JVM在Java的跨平台特性中,起着中间人的角色。它在已编译Java程序与底层硬件平台和操作系统之间,提供一...转载 2018-07-06 14:43:45 · 688 阅读 · 0 评论 -
英文字母和汉字的字节长度问题
英文字母和中文汉字在不同字符集编码下的字节数英文字母:字节数 : 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 · 3592 阅读 · 0 评论 -
Java中的Atomic包使用指南
引言Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作。原子变量的底层使用了处理器提供的原子指令,但是不同的CPU架构可能提供的原子指令不一样,也有可能需要某种形式的内部锁,所以该方法不能绝对保证线程不被阻塞。Atomic包介绍在Atomic包里一共有12个类,四种原子更新方式,分别是原子更新基本类型,原子更新数组...转载 2018-06-20 14:57:35 · 186 阅读 · 0 评论 -
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 · 135 阅读 · 0 评论 -
windows下搭建SFTP服务器
必须是在windows下的,最终在网上找了到了一个比较好的软件,FREESSHD,并且我也在windows下搭建成功了,下面我就讲步骤把。 首先是下载FREESSHD,http://download.csdn.net/detail/xx5595480/9406498 下载好之后解压,直接打开,一路同意就好,完成后打开,选择SSH然后一般情况下你会遇到说端口被占用情况,不要怕这是端口地址被占...转载 2018-06-12 14:35:45 · 4504 阅读 · 0 评论 -
正则表达式规则、贪婪、非贪婪模式
原文地址: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 · 978 阅读 · 0 评论 -
多线程死锁的产生以及如何避免死锁
原文网址:点击打开链接一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,2个人一起吃饭但是只有一双筷子,2人轮流吃(同时拥有2只筷子才能吃)。某一个时候,一个拿了左筷子,一人转载 2018-01-19 16:05:21 · 165 阅读 · 0 评论 -
sleep与wait的区别
一sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复,调用sleep 不会释放对象锁。由于没有释放对象锁,所以不能调用里面的同步方法。sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会;sleep()是Thread转载 2018-01-19 13:51:01 · 196 阅读 · 0 评论 -
多线程同步锁
一、同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。 public class Foo { private int x = 100; public int getX() { return x; } public int f转载 2018-01-19 11:04:34 · 259 阅读 · 0 评论 -
开发时验证的前后台验证
正常来说,前台验证和后台验证是都要有的。因为JS验证不安全,如果有意为之,那么完全可以绕过你的JS验证。如果你开发的是商业应用,那么稳定性和安全性是相当重要的,而这里就存在有安全漏洞。客户端验证:仅仅是为了方便,它可以为用户提供快速反馈,给人一种运行在桌面应用程序的感觉,使用户能够及时察觉所填写数据的不合法性。基本上用脚本代码实现,如JAVASCRI转载 2018-01-26 14:01:45 · 497 阅读 · 0 评论 -
map集合在页面上的遍历
public class Login { @RequestMapping(value="login") public ModelAndView login(){ ModelAndView mav = new ModelAndView(); mav.setViewName("welcome"); //返回的文件名转载 2018-01-18 13:47:49 · 579 阅读 · 0 评论 -
java和c定义二维数组下标省略问题
c中可以省略前者,后者不可省略: c在初始化数组的时候c,第一维的数字代表分配内存倍数,第二维的数字代表分配内存的长度;倍数可以让机器去数,但长度没有的话就不好开辟空间了 引用评论区的解释:java中二维数组是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。 二维简单数据类型数组的动态初始化如下: int a[ ][ ] = new int[2][ ]; a...原创 2018-02-01 14:27:40 · 4718 阅读 · 2 评论 -
java/js获取网页代码
package test;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;public class HttpTest { private String u; private Strin转载 2018-01-17 15:33:54 · 233 阅读 · 0 评论