
Java
文章平均质量分 60
花2不谢
热爱开发,乐于分享、
展开
-
Java堆和栈的区别
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器原创 2017-05-24 10:43:51 · 8910 阅读 · 0 评论 -
Spring Task定时任务
Spring框架自带的异步执行(TaskExecutor)和任务调度(TaskScheduler)接口。task任务调度配置:spring-tasks.xml<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context原创 2017-04-20 09:26:17 · 2807 阅读 · 0 评论 -
Java常用的八种排序算法与代码实现精解
1.直接插入排序直接插入排序算法是排序算法中最简单的,但在寻找插入位置时的效率不高。基本思想就是将一个待排序的数字在已经排序的序列中寻找找到一个插入位置进行插入。直接插入排序的算法重点在于寻找插入位置。例:原有序表:(9 15 23 28 37) 20找插入位置 : (9 15 ^ 23 28 37) 20新有序表: (9 15 20 23 28 37)2.原创 2017-04-16 12:49:15 · 6401 阅读 · 0 评论 -
微信支付一直签名错误
这两天无数次在做微信支付的时候出现签名错误,都快崩溃了。明明我自己生成的签名是没得问题的。自己手动生成的签名,和官方的微信支付接口测试结果是一样的。后来无意中提到了 postMethod.setRequestEntity(new StringRequestEntity(xmlString,"text/xml",encode)); 这行代码,我才想起这个问题,我的httpclient版本是原创 2017-02-16 11:25:14 · 31929 阅读 · 3 评论 -
微信支付之微信公众号网页支付(各种总结)
微信支付除了坑,就是坑!!!网上也还是好多吐槽的,各种签名问题,文档也比较乱。重点是,安卓最后报错就只报chooseWXPay failed。什么具体错误也不显示。最后还是喊朋友的苹果机远程帮忙测试(苹果机会返回错误信息)。一:签名问题微信网页支付。需要3个签名。后面2个签名的文档总连接页面,开发前一定要仔细看。https://mp.weixin.qq.com/wiki/11/74ad原创 2017-02-19 22:33:14 · 15115 阅读 · 2 评论 -
nginx反向代理+tomcat(nginx转发规则和实现负载均衡)
有时候想通过nginx实现反向代理,分别根据不同的url映射到不同的tomcat服务器,已达到在一台服务器挂多个网站和应用的目的。1)最简单的就是修改下nginx安装目录的nginx.conf文件:原来的文件一部分是: server { listen 80; server_name localhost; #char原创 2017-02-10 14:10:50 · 17410 阅读 · 0 评论 -
Java获取IP地址的多种方法
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为 http://www.javapeixun.com.cn / 的URL时,转载 2017-02-19 11:05:36 · 5010 阅读 · 0 评论 -
Java微信支付总结(一):获得prepay_id(以及生成微信支付签名)
默认你已经取得了微信支付相关的权限,并且有了商户号,key值等等。如果你一直签名错误,请看上一篇帖子:http://blog.youkuaiyun.com/qq_25821067/article/details/55253399要想获取prepay_id,就必须要生成正确的签名,一下是微信官方文档说明https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?ch原创 2017-02-16 11:57:20 · 50204 阅读 · 1 评论 -
mysql7.x单独安装mysql
是CentOS7的yum源中默认好像是没有MySQL的。为了解决这个问题,我们要先下载mysql的repo源。1. 下载mysql的repo源$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm2. 安装mysql-community-release-el7-5.noarch.rpm包原创 2017-01-16 00:03:44 · 853 阅读 · 0 评论 -
Linux上安装Javaweb环境
已经在linux上安装了很多次javaweb的环境了。一般linux服务器,我用的是centos7.2 64位的。之前是用的centos6.5 32位,发现最后安Jdk后运行java -version会出现一个问题:bash: /usr/local/bin/rar: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directo原创 2017-01-09 00:45:12 · 2383 阅读 · 0 评论 -
Java中public、private、protected、默认四种访问权限
java的访问权限有四种,public,protected,默认,private四种权限作用图。Y代表可以访问到。类的成员方法的访问权限: 其从语法角度来讲,这写访问权限控制符作用于类的方法和作用于类的属性上的效果是一样的。 public:所有类可见。 private:只有同一类内部的方法可见,在有就是内部类也可以访问到。 默认(friendly):包内可见。 pr原创 2016-12-30 12:16:12 · 17859 阅读 · 0 评论 -
Java+Jquery实现转盘抽奖系统
今天平安夜,协会需要做活动,第一个活动就是在群里发红包,第二个就是进协会网站的抽奖系统进行抽奖。由于需要,所以我零时做了一个抽奖系统,是一种大转盘抽奖的。效果图如下:这个基于Java抽奖的幸运大转盘抽奖系统是和微信的有点像,改编自一个网友的代码。前台大概就是html+css+js,后台就是Java(实现的Java抽奖系统)。后台Java代码为:packa原创 2016-12-24 23:21:57 · 10615 阅读 · 6 评论 -
Java微信开发-微信java开发接入平台实例
微信上接入平台的demo是PHP的,没得java的,所以我自己做接入的时候遇到了一点小问题。用java做带薪开发,首先就要先通过微信的接入配置,大概原理就是微信往服务器发送一些数据,然后在服务器端做一些数据的处理,再返回数据就行了。微信官方的名称是:验证服务器地址的有效性下面是微信官方的文档:开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET原创 2016-12-08 17:14:37 · 9341 阅读 · 3 评论 -
maven下载速度太慢(换成阿里云的maven中央仓库)
默认的maven中央仓库是国外的,卡的很,非常慢,改为阿里云的中央仓库就好了。只需要在setting.xml中mirrors节点中增加一段代码: nexus-aliyun * Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public 然后切换成功后原创 2016-11-20 18:48:34 · 6709 阅读 · 4 评论 -
Java实现SHA1加密
微信接入中需要用到SHA1的算法。Java版的SHA1加密如下:/* * 微信公众平台(JAVA) SDK * * Copyright (c) 2016, Ansitech Network Technology Co.,Ltd All rights reserved. * http://www.ansitech.com/weixin/sdk/ * * Licensed under原创 2016-12-14 18:11:00 · 36365 阅读 · 6 评论 -
getContextPath、getServletPath、getRequestURI、getRealPath、getRequestURL、的区别
很多同学容易搞混getContextPath、getServletPath、getRequestURI、getRealPath、getRequestURL这几个的区别,我一一实验了下。JSP种实验代码如下:<% out.println("getContextPath: "+request.getContextPath()+""); out.println("getServletPath原创 2016-11-11 20:10:45 · 3285 阅读 · 0 评论 -
Jsp页面中路径问题(${pageContext.request.contextPath} JSP取得绝对路径)
在jsp页面中会引用到很多的CSS,JS或者图片连接,如果直接输入jsp文件的路径访问,一般没得问题,但是如果我们用Struts2或者springmvc或者Servlet传值(只要用到了服务器内部转发功能),就很可能出现找不到CSS、JS等资源。解决办法就是在引入样式表等资源前加上请求的路径。下面做个对比:第一种:平时我们的做法: 第二种:经过处理后的做法:原创 2016-11-11 19:51:06 · 7944 阅读 · 0 评论 -
HttpClient+Jsoup 抓取网页信息
利用HttpClient和Jsoup技术抓取网页信息。HttpClient是支持HTTP协议的客户端编程工具包,并且它支持HTTP协议。jsoup 是一款基于 Java 平台的 网页html解析器,可直接解析某个 URL 地址、HTML 文本内容,提供了一套非常方便的 API接口,通过类似于 jQuery 的操作方法来操作数据。 httpClient相关文档:http://转载 2017-04-16 12:55:55 · 11305 阅读 · 1 评论 -
Java获取时间戳的几种方式
//方法 一 System.currentTimeMillis(); //方法 二 Calendar.getInstance().getTimeInMillis(); //方法 三 new Date().getTime(); 其中,方法一最快,也是用得最多的一个。原创 2017-04-24 00:37:27 · 2638 阅读 · 0 评论 -
eclipse package,source folder,folder区别及相互转换
在eclipse下,package,source folder,folder都是文件夹. 它们的区别如下: package:当你在建立一个package时,它自动建立到source folder下,也只能建立在这个目录之下. source folder:存放java源代码的文件夹,当然也包括一些package文件夹,还可以包含其他文件. 项目构建后,source folde原创 2017-06-27 17:22:44 · 254 阅读 · 0 评论 -
设计模式之单例模式(Java)
概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机...转载 2018-04-04 17:15:08 · 206 阅读 · 0 评论 -
Intellij IDEA 2017 debug断点调试技巧与总结详解篇
IntelliJ IDEA使用教程 (总目录篇)在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的,有的人keymap是mac版的,有的是Windows版的。我的就是Windows,而且修改keymap为eclipse的keymap,因为我算是eclipse转过...转载 2018-04-04 16:54:42 · 572 阅读 · 0 评论 -
关于synchronized和ReentrantLock之多线程同步详解
一、线程同步问题的产生及解决方案问题的产生:Java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),将会导致数据不准确,相互之间产生冲突。如下例:假设有一个卖票系统,一共有100张票,有4个窗口同时卖。public class Ticket implements Runnable { // 当前拥有的票数 private int num = 100...原创 2018-04-09 16:13:20 · 398 阅读 · 0 评论 -
你真的了解volatile关键字吗?
volatile关键字经常在并发编程中使用,其特性是保证可见性以及有序性,但是关于volatile的使用仍然要小心,这需要明白volatile关键字的特性及实现的原理,这也是本篇文章的主要内容。一、Java内存模型想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的。Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存...转载 2018-04-09 16:10:26 · 368 阅读 · 0 评论 -
JDK1.8+Spring5+SpringMVC5+Mybatis3.4项目(SMM框架)搭建
版本情况:spring5.0.4、SpringMVC5、Mybatis3.4、Log4J2、JDK1.8、servlet2.5web.xml配置:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://j...原创 2018-03-21 13:49:45 · 11526 阅读 · 0 评论 -
servlet2.5+Spring5 springMVC5 +Log4J2配置
搞了几乎一天。因为项目用到了spring5,配置Log4J的时候发现spring5少了Log4jConfigListener这个监听器,导致在web.xml里面不能启动log4j,官方建议用log4j2。用的是servlet2.5,所以就需要在web.xml中配置监听器。如果是servlet3的话,直接导入log4J2的jar包就行了,不需要再在web.xml中配置了,因为会自动启动的。log4J...原创 2018-03-19 12:56:13 · 4451 阅读 · 2 评论 -
Java并行:线程安全前传之Singleton
1.寂寞的Singleton 如果你是一名OO程序员,Singleton的名字对你来说就不会陌生,它是GoF设计模式的一种,江湖人称“单例”的便是;即便你不是OO程序员,中国人你总该是吧?那么下面一段你应该也会背:“世界上只有一个敏感词,敏感词是敏感词的一部分,敏感词是代表敏感词的唯一合法敏感词,任何企图制造两个敏感词的企图都是注定要失败的。”说的多么好!一语道破Singleton的转载 2017-10-01 12:32:06 · 439 阅读 · 0 评论 -
Java多线程并发编程一览笔录
知识体系图:1、线程是什么?线程是进程中独立运行的子任务。2、创建线程的方式方式一:将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法方式二:声明实现 Runnable 接口的类。该类然后实现 run 方法推荐方式二,因为接口方式比继承方式更灵活,也减少程序间的耦合。3、获取当前线程信息?Thread.currentTh转载 2017-09-26 09:37:29 · 349 阅读 · 0 评论 -
Java Websocket实例
记录下自己在用的websocket 介绍现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非转载 2017-08-31 09:41:22 · 1200 阅读 · 0 评论 -
过滤器(Filter)和拦截器(Interceptor)的区别
Filter介绍 Filter可以认为是Servlet的一种“加强版”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。Filter也可以对用户请求生成响应,这一点与Servlet相同,但实际上很少会使用Filter向用户请求生成响应。使用Filter完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servle转载 2017-09-05 17:11:29 · 271 阅读 · 0 评论 -
Java使用POI读取Excel操作
package com.util; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.commons.logging.Log; import org.apache.commons.logg原创 2017-09-05 16:23:35 · 2729 阅读 · 0 评论 -
对多种对象的简单解析:PO/VO/DTO/DAO的区别
PO :persistent object持久对象 1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。 2 .在hibernate持久化框架中与insert/delet操作密切相关。 3 .PO中不应该包含任何对数据库的操作。 ---------------------------------------------------转载 2017-08-08 14:53:20 · 635 阅读 · 0 评论 -
SpringMvc @InitBinder 表单多对象精准绑定接收
问题出现要在一张表单中提交多个对象,并且还要在后台Controller 中精准的绑定接收。可是,这些对象中的参数名可能相同,后台接收入参时无法像struts那样jsp表单中使用Object.Param形式对表单进行精准绑定入参,我们都知道struts2默认就是这种方案,这是因为struts2采用了OGNL,并通过栈(根对象)进行操作的,而且栈中默认有action实例,所以很自然的没有这种问原创 2017-07-18 10:46:41 · 11994 阅读 · 0 评论 -
SpringMVC日期类型转换问题的几种处理方法
方法一:实体类中加日期格式化注解@DateTimeFormat(pattern = "yyyy-MM-dd") private Date receiveAppTime; 如上,在对应的属性上,加上指定日期格式的注解,,轻松解决问题!方法二:控制器Action中加入一段数据绑定代码 @InitBinder public void initBin原创 2017-06-27 17:28:28 · 10981 阅读 · 1 评论 -
从程序员到CTO的Java技术路线图
在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了。但如果有清晰的指示图供参考还是非常不错的,这样我们清楚的知道我们大概处于那个阶段和水平。 Java程序员高级特性 反射、泛型、注释符、自动装箱和拆箱、枚举类、可变 参数、可变返回类型、增强循环、静态导入原创 2017-06-27 17:37:59 · 11189 阅读 · 0 评论 -
spring配置数据源的4种方式
不管采用何种持久化技术,都需要定义数据源。Spring中提供了4种不同形式的数据源配置方式:spring自带的数据源(DriverManagerDataSource),DBCP数据源,C3P0数据源,JNDI数据源。1.spring自带的数据源DriverManagerDataSourceXML代码:<bean id="dataSource"原创 2017-06-27 17:36:25 · 8495 阅读 · 0 评论 -
多线程并发常见问题
一 概述1.volatile保证共享数据一旦被修改就会立即同步到共享内存(堆或者方法区)中。2.线程访问堆中数据的过程线程在栈中建立一个变量的副本,修改完毕后将数据同步到堆中。3.指令重排为了提高执行效率,CPU会将没有依赖关系的指令重新排序。如果希望控制重新排序,可以使用volatile修饰一个变量,包含该变量的指令前后的指令各自独立排序,前后指令原创 2017-06-27 17:32:35 · 7335 阅读 · 0 评论 -
Java中的字节流和字符流
Java中流的概念:在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。字节流与字符流在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用Outpu原创 2016-11-11 16:09:10 · 620 阅读 · 0 评论 -
java三大框架之spring配置template连接数据库中文乱码问题
连接数据库经常会遇到中文乱码问题,一般来说创建数据库得时候设定utf8编码,然后连接数据库得时候加上编码设置就可以了。今天碰到一个奇怪得现象,因为我配置得数据库连接相关信息再properties文件里面。虽然在地址后面加了?useUnicode=true&characterEncoding=UTF-8这个,但是还是不得行。后来发现可能这样在xml配置文件里面获取不到,于是乎在xml中写成这原创 2016-08-18 11:47:54 · 3502 阅读 · 1 评论 -
java三大框架之spring事务传播行为
•当事务方法被另一个事务方法调用时,必须指定事务应该如何传播.例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行.•事务的传播行为可以由传播属性指定.Spring 定义了 7 种类传播行为.PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATION_SUPPORTS--支持当前事务,原创 2016-08-19 00:34:33 · 3089 阅读 · 0 评论