Java拾遗
分享Java方面的知识、思考、设计。
余额抵扣
助学金抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
志波同学
做一个有担当的程序猿,为互联网贡献自己的一份力量
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java编程:Beanutils-No destination bean specified问题分析
Beanutils.copyProperties 异常一: No origin bean specified Beanutils.copyProperties 异常二: No destination bean specified原创 2015-09-02 00:22:16 · 10558 阅读 · 0 评论 -
【Nginx】错误 413 Request Entity Too Large 的解决方法
产生该错误的原因,客户端发送的实体主体部分比服务器能够或者希望处理的要大。 一般情况下我们看不到这个状态码。 因为浏览器不会发送太大的数据给网站,但是服务器间的接口交互可能会出现该问题。nginx出现这个问题的原因是请求实体太长了。一般出现这种情况是Post请求时Body内容Post的数据太大了,如上传大文件过大、POST数据比较多。解决方法: 打开nginx主配置文件nginx.conf,找到原创 2015-09-09 10:39:19 · 16155 阅读 · 0 评论 -
【Java-加密算法】对称加密、非对称加密、单向散列
一提到加密,就会联想到数字签名,这两个经常被混淆的概念到底是什么呢? 加密:加密是一种以密码方式发送信息的方法。只有拥有正确密钥的人才能解开这个信息的密码。对于其他人来说,这个信息看起来就像是一系列随机的字母、数字和符号。如果你要发送不应该让其他人看的敏感信息时,加密是特别重要的。数字签名:数字签名是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字原创 2015-08-30 02:05:25 · 8223 阅读 · 1 评论 -
【Java关键字-访问范围修饰符】private、protected、public和default的区别
(1)public:可以被所有其他类所访问。(2)private:只能被自己访问和修改。(3)protected:自身,子类及同一个包中类可以访问。(4)default(默认):同一包中的类可以访问,声明时没有加修饰符,认为是friendly。 修饰符 类内部 本包 子类外部包 public √ √ √ √原创 2015-08-26 14:24:45 · 15257 阅读 · 0 评论 -
【java关键字-Interface】为什么接口中的属性和方法都默认为public
假设方法或属性默认为protected,它的子类也可以为protected,可能存在某种情况,导致正常访问这些属性和方法会引起错误。接口并不知道未来会被哪个类调用,所以尽量减少接口的访问权限控制,就设置权限为public。出于这种考虑,Sun公司一开始就规定,接口属性和方法默认就为public。举例:假如IPerson接口中申明了protected String getName(),Person实现原创 2015-08-28 12:03:59 · 19367 阅读 · 1 评论 -
【java关键字-Thread】Thread.Join()的用法,及其实现线程顺序执行的原理
其实Join方法实现是通过wait(小提示:Object 提供的方法)。 当main线程调用t.join时候,main线程会获得线程对象t的锁(wait 意味着拿到该对象的锁),调用该对象的wait(等待时间),直到该对象唤醒main线程,比如退出后,线程对象t退出后,会在native方法中调用线程对象的natifyAll方法。参考以下文章http://www.blogjava.n原创 2015-08-25 23:23:41 · 8116 阅读 · 0 评论 -
【Java】获取此次请求URL,获取服务器根路径
1、获取此次请求URL,多用在单点登录中使用;2、获取服务器根路径,多用来引用文件;原创 2015-08-27 20:46:05 · 10421 阅读 · 2 评论 -
【nginx】nginx proxy_pass指令"/"注意事项
1)proxy_pass末尾不带”/”server { listen 80; server_name www.baidu.com; location /hello/ { proxy_pass http://server:8080; }}2)proxy_pass末尾带”/”server { listen 80; server_原创 2015-08-31 16:31:44 · 7561 阅读 · 0 评论 -
【java-日志组件】slf4j+logback配置及详解
文本主要介绍一下slf4j+logback在java工程中的配置,面向的读者是已经对slf4j+logback有一定了解的同学,不了解的同学,请看文章末尾的相关链接。以后会写一篇介绍slf4j框架的文章,其中会说明logback与之的关系。下面咱们进入正题。一、基于maven的slf4j+logback pom.xml配置<dependency> <groupId>org.slf4j</gr原创 2015-08-29 00:11:14 · 36712 阅读 · 9 评论 -
【程序设计】定时任务调度平台需求说明书
1. 定时任务调度平台需求说明书 1.1. 概述 本文档详细的描述了定时任务的需求,明确了定时任务的开发内容。供需求人员、设计人员、开发人员、测试人员参考。 定时任务包含任务管理、任务执行、任务预警、日志查询、回调接口、预警服务六部分内容。 1.2. 任务管理 1.2.1. 任务分类 任务分为两种类型: 任务一:周期性的执行业务处理任务 我们采用定时时间、前置任务想结原创 2015-09-02 06:52:31 · 7977 阅读 · 1 评论 -
【Java-异常处理机制】Java异常分类及异常检查(一)
本文章的目的是介绍Java异常分类及Java异常检查,让大家对异常有一个初步的了解。后续的文章中会对异常相关的源码进行分析。一、Java异常分类 Throwable: Java语言中,Throwable为所有异常、错误的超类,它有两个重要的子类:Exception(异常)和Error(错误),它们各自都包含大量的子类,这些类的实例是在异常情况的上下文中创建的,包含了相关的异常信息(比如堆栈跟踪数据原创 2015-08-31 14:38:57 · 9360 阅读 · 0 评论 -
【Java关键字-Interface】为什么Interface中的变量只能是 public static final
三个关键字在接口中的存在原因:public:接口可以被其他接口继承,也可以被类实现,类与接口、接口与接口可能会形成多层级关系,采用public可以满足变量的访问范围;static:如果变量不是static的,那么接口必须实例化才可以访问自己的变量,接口不能被实例化,故非static的变量是无效的;final:如果变量不是final的,而方法是abstract的,因此接口中的方法又不原创 2015-08-26 14:15:28 · 9170 阅读 · 1 评论 -
Java编程:并发编程的3个特性
在并发编程中我们经常会遇到三个问题:原子性问题、可见性问题、有序性问题,下面为大家剖析一下这三个问题。如有不正之处,欢迎批评指正。1、原子性 原子行:即一个或者多个操作作为一个整体,要么全部执行,要么都不执行,并且操作在执行过程中不会被线程调度机制打断;而且这种操作一旦开始,就一直运行到结束,中间不会有任何上下文切换(context switch)。我们用银行账户转账问题来形象的解释一下原子性(当原创 2016-06-15 17:19:41 · 9113 阅读 · 2 评论 -
Spring编程:proxy-target-class="true" 与proxy-target-class="false"的区别
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>proxy-target-class属性值决定是基于接口的还是基于类的代理被创建。如果proxy-target-class 属性值被设置为true,那么基于类的代理将起作用(这时需要cglib库)。如果proxy-targ原创 2015-11-16 14:20:40 · 6469 阅读 · 0 评论 -
【数据库】Join连接
1:INNER JOIN 内连接,也叫等值连接,inner join产生同时符合A表和B表的一组数据。 如图:2:LEFT JOIN 左连接从A表(左)产生一套完整的记录,与匹配的B表记录(右表) .如果没有匹配,右侧将包含null,在Mysql中等同于left outer join。 如图:3:RIGHT JOIN 同Left join,AB表互换即可。 4:Cross join 交原创 2015-10-26 11:11:25 · 4527 阅读 · 0 评论 -
标准SQL规范中定义的四个事务隔离级别
数据库操作面临的问题: 脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据, 那么另外一 个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。不可重复读:指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。 那么,在第一个事务中的原创 2016-06-12 15:48:00 · 10883 阅读 · 0 评论 -
【算法】Hash一致性算法详解
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1、平衡性(Balance):平衡性原创 2015-10-21 15:25:16 · 4808 阅读 · 0 评论 -
Java编程:获取IP地址:request.getRemoteAddr()
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为http://www.xxx.com/ 的URL时,用request.getRemoteAdd原创 2016-06-02 15:40:36 · 11479 阅读 · 0 评论 -
【数据库】关系型数据库和NoSQL数据库
关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据。主流的oracle、DB2、MS SQL Server和mysql都属于这类传统数据库。NoSQL数据库,全称为Not Only SQL,意思就是适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键值存储(memcac原创 2015-10-23 11:35:51 · 6895 阅读 · 0 评论 -
数据缓存-数据分级策略
互联网系统的数据可以划分为以下3类: 1、核心业务数据:比如用户订单表、商户订单表 2、用户相关数据:用户基本信息、头像、简介、爱好等 3、配置信息:数据库配置、分库分表配置等如果以上所有数据的读操作数据库上完成,系统的性能将会大打折扣,也正是为了解决这个问题,才出现了memcached、redis等内存数据库,如何合理、高效的使用内存数据库呢?我们引入数据分级的策略来解决这个问题。我们将互联原创 2016-06-06 17:16:07 · 7390 阅读 · 0 评论 -
【Http】HTTP报文结构及请求数据大小
在项目中遇到了【Nginx】错误 413 Request Entity Too Large 的解决方法该问题,于是引出了本文讨论的问题。HTTP报文结构如下:HTTP报文结构包含请求行、请求头、请求体三部分。一次请求示例如下图: 一、请求行【request-line】POST 请求方法 /sso/login 请求URL,及URI HTTP/1.1 HTTP协议及版本HTTP协议没有限制请求行的原创 2015-09-10 16:35:26 · 53453 阅读 · 0 评论 -
面向对象程序设计-继承与多态
前面我们讨论了如何在 JavaScript 语言中实现对私有实例成员、公有实例成员、私有静态成员、公有静态成员和静态类的封装。这次我们来讨论一下面向对象程序设计中的另外两个要素:继承与多态。 1 又是几个基本概念 为什么要说又呢? 在讨论继承时,我们已经列出了一些基本概念了,那些概念是跟封装密切相关的概念,今天我们要讨论的基本概念,主要是跟继承与多态相关的,但是它们跟封装也有一些联系。 1.原创 2016-06-02 15:48:57 · 7684 阅读 · 1 评论 -
【软件设计】软件设计特性
1、可用性 可用性是在某个考察时间,系统能够正常运行的概率或时间占有率期望值。考察时间为指定瞬间,则称瞬时可用性;考察时间为指定时段,则称时段可用性;考察时间为连续使用期间的任一时刻,则称固有可用性。它是衡量设备在投入使用后实际使用的效能,是设备或系统的可靠性、可维护性和维护支持性的综合特性。2、安全性 为防止把计算机内的机密文件泄露给无关的用户,必须采取某种安全保密措施,这些措施的有效程序如何原创 2015-10-08 14:50:13 · 6017 阅读 · 1 评论 -
Java类加载二:类加载机制分析
大家都知道通过java命令来启动JVM和运行应用程序,但实际的流程又是如何的呢?首先根据java后的运行模式配置项或/jre/lib/i386/jvm.cfg来决定是以client还是server模式运行JVM,然后加载/jre/bin/client或server/jvm.dll,并开始启动JVM;在启动JVM的同时将加载Bootstrap ClassLoader(启动类加载器,使用C/C++编原创 2016-08-31 20:29:53 · 3705 阅读 · 0 评论 -
cron表达式详解
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month DayofWeek Year或 Seconds Minutes Hours DayofMonth Month DayofWeek每一个域可出现的字符如下: 序号 域 描述 1 S原创 2016-06-29 18:57:57 · 5750 阅读 · 0 评论 -
Java并发编程一:volatile关键字
在网络上找了好多关于volatile的文章,一直没有找到体现volatile作用的代码示例,本文通过代码给大家介绍一下volatile的作用。如有不正之处,欢迎批评指正。示例一:public class TestWithVolatile { private volatile static boolean bChanged; public static void main(String[原创 2016-06-15 22:45:06 · 5063 阅读 · 0 评论 -
Java编程:java.lang.Void类分析
源码/* * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.lang;/** * The {@code Void} cl原创 2016-07-28 11:36:15 · 10505 阅读 · 0 评论 -
Java类加载一:Class.forName()和ClassLoader.getSystemClassLoader().loadClass()区别
要想搞清楚这两个方法的区别,我们需要了解一下Class的加载过程。Class的加载过程分为三步:loading(装载)linking(链接)initializing(初始化)大家可以通过这篇文章:Java魔法堂:类加载机制入了个门来了解类的详细加载过程。阅读以上文章后,我们一起分析一下两个方法的区别,如有不正之处,欢迎批评指正。Class.forName()Class.forName有两个重原创 2016-08-30 18:31:47 · 11376 阅读 · 2 评论 -
Java泛型四:泛型实现原理之类型擦除
泛型类型实现原理相关的两个概念:原始类型、类型擦除。原始类型Java总是会自动的为泛型类型提供一个相应的原始类型。所谓原始类型就是是指泛型的第一个限定类型(从左向右),无限定类型泛型的原始类型默认为Object。举例:public class Rectangle<T> {}等价于public class Rectangle<T extends Object> {}因此T的原始类型为Object。pu原创 2016-07-20 16:01:51 · 6789 阅读 · 0 评论 -
Java泛型二:泛型类 泛型接口 泛型方法详解
一、泛型类单参数泛型类:public class Rectangle<T> { private T width; private T height; public Rectangle(T width, T height){ this.width = width; this.height = height; } public T ge原创 2016-07-13 17:22:41 · 12373 阅读 · 0 评论 -
Java编程:内存泄露与内存溢出的区别
要分析这两者之间的区别,通过两者的定义基本上可以理解两者之间的却别。内存泄漏是指程序由于错误或漏洞造成的内存占用过多,或占用内存后无法释放。内存溢出是指已有的数据超过了其获得到的内存所能存储的范围,比如用一个字节存放9999这个数字就属于内存溢出。原创 2016-06-30 17:04:42 · 5957 阅读 · 0 评论 -
Java泛型一:泛型定义及规则
一、泛型定义 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编原创 2016-07-12 15:08:43 · 7636 阅读 · 0 评论 -
Java编程:关于Java异常处理机制
由于项目需要,简单梳理了异常处理机制,后续逐步完善:关于接口调用的404异常处理方式:a) 记录异常信息日志; b) 将异常信息以邮件的形式发出;关于接口调用的超时异常处理方式:a) 记录异常信息日志; b) 将异常信息以邮件的形式发出; c) 超时后隔五分钟调用一次,总共调用3次;关于系统throws exception的异常处理方式:a) 记录异常信息日志; b) 将原创 2016-07-08 13:55:43 · 5330 阅读 · 0 评论 -
eclipse中的特殊注释TODO FIXME XXX
在eclipse中,TODO、FIXME和XXX都会被eclipse的task视图所收集。在编码过程中,可以使用注释来标记未完成的功能,在提交代码前检查task视图,保证所有功能均完成编码。 此外,在eclipse中,我们可自定义自己的特殊注释标签。进入window—>preferences—>Java—>Compiler—>Task Tags窗口即可添加特殊标签,默认只有TODO、FIXME和原创 2016-07-08 14:57:53 · 6877 阅读 · 0 评论 -
Java并发编程四:并发(Concurrent)与并行(Parallel)区别(二)
这段时间在研究并发(Concurrent)与并行(Parallel)的区别,昨天写了 Java并发编程三:并发(Concurrent)与并行(Parallel)的区别,今天看到一篇我认为解释的非常形象的一篇文章,分享给大家。原文地址:Concurrent and Parallel Programming给五岁的孩子解释并发与并行的区别 What’s the difference between原创 2016-08-03 15:22:26 · 7543 阅读 · 0 评论 -
Java并发编程二:Callable Future
概述在jdk1.5之前,线程的创建有两种方式:一种是直接继承Thread,另外一种就是实现Runnable接口。但这2种方式都存在一个问题就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者消息传递的方式来达到效果,这样使用起来就比较麻烦。从Java 1.5开始,就提供了Callable类和Future类,通过它们可以在任务执行完毕之后得到任务执行结果。经过分析和总结原创 2016-07-29 18:26:43 · 6039 阅读 · 0 评论 -
Java泛型三:通配符详解extends super
[TOC] 在java泛型中,? 表示通配符,代表未知类型,< ? extends Object>表示上边界限定通配符,< ? super Object>表示下边界限定通配符。? 与 T 的区别T:作用于模板上,用于将数据类型进行参数化,不能用于实例化对象。 ?:在实例化对象的时候,不确定泛型参数的具体类型时,可以使用通配符进行对象定义。< T > 等同于 < T extends Object>原创 2016-07-18 17:21:03 · 24908 阅读 · 9 评论 -
Javascript中页面加载完成(ready)事件分析
页面加载完成有两种事件:documnet.ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件)document.onload,指示页面包含图片等文件在内的所有元素都加载完成。JQuery中的ready方法就是documnet.ready(),包含如下3中写法:$(function(){ // do something});$(document).ready(functi原创 2016-08-30 20:18:11 · 5696 阅读 · 0 评论 -
移动端App与后台服务的对接方案
1. 方案一 优点: 1) 模块划分清晰,模块间相互独立,互不影响; 缺点: 1)移动端app需要通过两个域名访问门户系统、运营系统提供的服务; 2)需要提供统一的登录接口、权限校验接口;2. 方案二 AppServer请求转发如下图所示: 优点: 1)AppServer整合各系统提供接口,移动端app通过统一的AppServer服务进行数据访问;原创 2016-06-18 13:31:41 · 29450 阅读 · 0 评论 -
Java并发编程三:并发(Concurrent)与并行(Parallel)的区别(一)
并发(Concurrent)与并行(Parallel)是一个大家比较容易混淆的概念。大家在解释并发与并行的时候一般这样说:多线程是并发执行的;多核CPU是并行执行的,单核CPU是不可以不行执行的;以上说法也是可以理解的,大家都是基于场景来描述的。为了搞清楚这个问题,我查阅了一些资料,发现这篇译文:并发不是并行,它更好中的图片很好的说明了并发与并行的区别。定义网络上找到的定义如下: 并发(C原创 2016-08-02 15:28:51 · 23381 阅读 · 6 评论
分享