JAVA(J2EE)
文章平均质量分 91
孔子-说
成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!
屡战屡败,屡败屡战
失败是我无奈的宿命
坚韧是我不屈的灵魂
展开
-
java8新特性Stream流操作详解及实战3
java8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda,给我们操作集合(Collection)提供了极大的便利。本文主要介绍Stream的排序、去重、合并操作,以及常用方法简单汇总。转载 2022-11-09 09:38:08 · 656 阅读 · 3 评论 -
Redis 主从复制、哨兵和集群区别
转自:http://www.kongzid.com/archives/redis1Redis Cluster是Redis的分布式集群解决方案,在 3.0 版本正式推出。在3.0之前的集群方案主要是主从复制和哨兵机制,3种方案各有优缺点。主从复制(Replication)主要是备份数据、读写分离、负载均衡,一个Master可以有多个Slaves服务器作为备份。原创 2021-10-17 16:21:46 · 7623 阅读 · 2 评论 -
理清JAVA日志体系、框架组成、推荐组合及常见问题处理
转自http://www.kongzid.com/archives/java1 ,Apache基金会最早实现的一套日志框架,在Java1.4之前只有这一种选择。谁能想到Java1.4之前,JDK都没有内置的日志功能!。1.2J.U.L(jdk-logging)终于在2002年Java1.4发布,Sun推出了自己的日志库J.U.L(jdk-logging)。但基本上是模仿Log4j的实现。有点儿鸡肋,但最起码解决了有无的问题。从此开发者有了两种选择。原创 2021-09-26 10:06:55 · 399 阅读 · 0 评论 -
SpringBoot maven项目打jar包并部署到 linux/windows服务
转自http://www.kongzid.com/archives/java3 ,使用Spring自带的DriverManagerDataSource<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" <!—设定dataSourceà <!—使用原创 2021-09-22 16:58:37 · 3483 阅读 · 0 评论 -
springboot加载指定的属性文件(properties和yml文件)
转自http://www.kongzid.com/archives/java4 ,springboot提供了多个注解可以将外部的值动态注入到Bean中,最常用的包括@Value注解,@ConfigurationProperties注解。这些注解只能读取默认的配置文件application.properties,要想加载非默认配置文件,需结合@PropertySource使用原创 2021-08-23 10:18:37 · 5201 阅读 · 0 评论 -
java多线程之精灵线程/守护线程(Daemon)
转自http://www.kongzid.com/archives/thread4 ,在java中,本身无法使虚拟主机保持活动的线程称为精灵线程Daemon,又称为守护线程,就是运行在程序后台的线程,一般被用于在后台为其它线程提供服务。既然它在后台运行,当前台线程(即主线程,又叫用户线程)运行完,主体程序就结束了,理所当然该后台线程也应该随之结束了。原创 2021-08-06 15:07:52 · 781 阅读 · 0 评论 -
Java进阶知识点6:泛型之协变和逆变
一、协变,逆变,不可变逆变与协变用来描述类型转换(type transformation)后的继承关系,其定义:如果A、B表示类型,f(⋅)表示类型转换,≦表示继承关系(比如,A≦B表示A是由B派生出来的子类):当A ≦ B时,如果有f(A) ≦ f(B),那么f是协变(covariant)的; 当A ≦ B时,如果有f(B) ≦ f(A),那么f是逆变(contravariant)的;...原创 2019-11-11 15:14:37 · 816 阅读 · 0 评论 -
Java进阶知识点5:白捡的扩展性 - 枚举值也是对象
一、背景枚举经常被大家用来储存一组有限个数的候选常量。比如下面定义了一组常见数据库类型:public enum DatabaseType { MYSQL, ORACLE, SQLSERVER}当围绕这一组常量出现功能上的扩展点时,很多人的做法是为新的功能编写一个新类,新类中依赖该枚举类型。比如要在界面上显示常见数据库类型的官方名称,可以用如下类实现这一功...转载 2019-11-11 13:50:27 · 212 阅读 · 0 评论 -
Java进阶知识点4:不要只会写synchronized - JDK十大并发编程组件总结
一、背景提到Java中的并发编程,首先想到的便是使用synchronized代码块,保证代码块在并发环境下有序执行,从而避免冲突。如果涉及多线程间通信,可以再在synchronized代码块中使用wait和notify进行事件的通知。不过使用synchronized+wait+notify进行多线程协作编程时,思维方式过于底层,常常需要结合具体的并发场景编写大量额外的控制逻辑。好在ja...转载 2019-11-11 10:46:33 · 174 阅读 · 0 评论 -
Java进阶知识点3:并发容器背后的设计理念 - 锁分段、写时复制和弱一致性
一、背景容器是Java编程中使用频率很高的组件,但Java默认提供的基本容器(ArrayList,HashMap等)均不是线程安全的。当容器和多线程并发编程相遇时,程序员又该何去何从呢?通常有两种选择:1、使用synchronized关键字,将对容器的操作有序错开,确保同一时刻对同一个容器只存在一个操作。Vector,HashTable等封装后的容器本质也是这种解决思路,只不过sync...转载 2019-11-11 10:34:00 · 165 阅读 · 0 评论 -
Java进阶知识点2:服务端高并发的基石 - NIO与Reactor模式以及AIO与Proactor模式
一、背景要提升服务器的并发处理能力,通常有两大方向的思路。1、系统架构层面。比如负载均衡、多级缓存、单元化部署等等。2、单节点优化层面。比如修复代码级别的性能Bug、JVM参数调优、IO优化等等。一般来说,系统架构的合理程度,决定了系统在整体性能上的伸缩性(高伸缩性,简而言之就是可以很任性,性能不行就加机器,加到性能足够为止);而单节点在性能上的优化程度,决定了单个请求的时延,以及...转载 2019-11-11 10:22:48 · 174 阅读 · 0 评论 -
Java进阶知识点1:更优雅地关闭资源 - try-with-resource及其异常抑制
一、背景我们知道,在Java编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们。因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制,如果我们不在编程时确保在正确的时机关闭外部资源,就会导致外部资源泄露,紧接着就会出现文件被异常占用,数据库连接过多导致连接池溢出等诸多很严重的问题。二、传统的资源关闭方式为了确保外部资源一定...原创 2019-11-08 17:02:12 · 328 阅读 · 0 评论 -
Java关键字之native,strictfp,transient,volatile
Java关键字(keywords)abstract default if private this boolean do implements protected throw break double import public throws byte转载 2009-07-06 14:27:00 · 2417 阅读 · 0 评论 -
StringTokenizer类
StringTokenizer类Java语言中,提供了专门用来分析字符串的类StringTokenizer(位于java.util包中)。该类可以将字符串分解为独立使用的单词,并称之为语言符号。语言符号之间由定界符(delim)或者是空格、制表符、换行符等典型的空白字符来分隔。其他的字符也同样可以设定为定界符。StringTokenizer类的构造方法及描述见表15-6所示。转载 2009-06-10 15:13:00 · 2150 阅读 · 1 评论 -
Java实现HTTP文件下载
java 中使用代理服务器的问题求教 :http://www.linuxsir.org/bbs/archive/index.php/t-188774.html序言 许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。 在Internet上很多的资源转载 2009-05-31 14:38:00 · 1918 阅读 · 0 评论 -
jsp自定义标签返回值的含义
doStartTag()和doEndTag()返回值是在Tag Interface里定义的静态int SKIP_BODY隐含0 Skip body evaluation. Valid return value for doStartTag and doAfterBody. 跳过对body的处理。 就是跳过了开始和结束标签之间的代码。 EVAL_BODY_INCLUDE 隐含1 Ev原创 2009-06-02 17:35:00 · 2916 阅读 · 0 评论 -
java MD5加密
package test;import java.security.*;/* * TestEncrypt.java * Description: A test progrm to encrypt a string using MD5 or SHA-1,etc. */public class MessageEncrypt { public static String Encrypt(转载 2009-05-08 12:07:00 · 758 阅读 · 0 评论 -
认识java.security.MessageDigest 类
Java 加密技术:消息摘要。一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。消息摘要有两个基本属性: 两个不同的报文难以生成相同的摘要 难以对指定的摘要生成一个报文,而由该报文反推算出该指定的摘要代表:美国国家标准技术研究所的SHA1和麻省理工学院Ronald Rivest提出的MD5转载 2009-05-08 11:34:00 · 2616 阅读 · 0 评论 -
java生成UUID通用唯一识别码 (Universally Unique Identifier)
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需原创 2009-03-17 16:15:00 · 44108 阅读 · 4 评论 -
XFire构建服务端Service的两种方式
XFire构建服务端service的两种方式,一是用xfire构建,二是和spring集成构建。 一,xifre构建,确保把xfire的jar包导入到工程中或classpath。 1,service的接口类 package cn.cjw.services.exchange; public interface ExchangeService { public double RMB2Dol转载 2009-03-18 09:57:00 · 4841 阅读 · 2 评论 -
Integer之toString()详解
Integer.toString(int par1,int par2),par1表示要转成字符串的数字,par2表示要转成的进制表示,如:Integer.toString(22,2),表示把22转成2进制表示的字符串,Integer.toString(22,10),表示把22转成10进制表示的字符串,Integer.toString(22,16),表示把22转成16进制表示的字符串,原创 2009-03-17 14:28:00 · 47112 阅读 · 3 评论 -
JDK1.5新特性
“JDK1.5”(开发代号猛虎)的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。 下面我们简单介绍一下这些新特性。 1.泛型(Generic) C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,原创 2009-03-19 13:36:00 · 725 阅读 · 0 评论 -
一个帐号在同一时间只能一个人登录
对于一个帐号在同一时间只能一个人登录,可以通过下面的方法实现: 1 .在用户登录时,把用户添加到一个ArrayList中 2 .再次登录时查看ArrayList中有没有该用户,如果ArrayList中已经存在该用户,则阻止其登录 3 .当用户退出时,需要从该ArrayList中删除该用户,这又分为三种情况 ① 使用注销按钮正常退出 ② 点击浏览器关闭按钮或者用Alt+F4退出,可以用javascr转载 2009-12-08 16:39:00 · 1811 阅读 · 2 评论 -
XFire构建client的几种方式
XFire构建客户端也有几种方式。 一,如果能够知道并得到service的类,那么可以在客户端中通过xfier的代理工厂生成service类。然后调用相应的方法。 package test.client; import org.codehaus.xfire.client.XFireProxyFactory;import org.codehaus.xfire.service.Ser转载 2009-03-18 10:06:00 · 10262 阅读 · 0 评论 -
Java打包jar内幕(初级篇)
这篇内容部分来自官网及维基的翻译,大部分的代码都亲自做了测试,如果遇到问题可以联系我,高手们可以大略读一下初级篇或直接略过读高级篇。 学过c++的同学都知道,编译过后的程序是可以直接点击运行的,.exe文件是windows里的可执行文件,那么我们在java中如何产生这种可执行文件呢?解决这个问题,我们要知道java程序的打包发布。 Java程序的打包发布也就是打包成jar压缩包的过转载 2009-07-07 16:05:00 · 1885 阅读 · 0 评论 -
java防止sql注入
SQL 注入简介: SQL注入是最常见的攻击方式之一,它不是利用操作系统或其它系统的漏洞来实现攻击的,而是程序员因为没有做好判断,被不法用户钻了SQL的空子,下面我们先来看下什么是SQL注入: 比如在一个登陆界面,要求用户输入用户名和密码: 用户名: or 1=1 -- 密 码原创 2009-09-08 16:22:00 · 2039 阅读 · 3 评论 -
一个效果不错的Java数据库连接池
虽然现在用APACHE COMMONS DBCP可以非常方便的建立数据库连接池, 但是像这篇文章把数据库连接池的内部原理写的这么透彻,注视这么完整, 真是非常难得,让开发人员可以更深层次的理解数据库连接池,真是非常感 谢这篇文章的作者。 import java.sql.Connection; import java.sql.DatabaseMet转载 2009-09-08 15:32:00 · 851 阅读 · 0 评论 -
运用递归实现字符串反转
//------------------------------------------------- //程序目的:运用递归实现字符串反转 //------------------------------------------------- import java.util.*;public class Reverse{ public static Strin原创 2008-07-28 16:03:00 · 4162 阅读 · 1 评论 -
DWR3.0框架入门(3) —— ScriptSession的维护及优化
1.ScriptSession使用中存在的问题 在上一节实现了服务器的推送功能,但是根据 ScriptSession的生命周期我们可以得出以下几点的问题:(1)ScriptSession不会与HttpSession同时创建当我们访问一个页面的时候,如果是第一次访问,就会创建一个新的HttpSession,之后再访问的时候,就会保持当前的Session,即使是转载 2013-12-09 16:58:24 · 8697 阅读 · 2 评论 -
DWR3.0框架入门(1) —— 实现ajax
框架简介:DWR(Direct Web Remoting) 是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。本Demo实现的基本功能:点击jsp界面的按钮,通过DWR调用到服务器端的java代码,在控制台打印出js转载 2013-12-09 16:52:36 · 4028 阅读 · 2 评论 -
DWR3.0框架入门(2) —— DWR的服务器推送
在开始本节内容之前,先来了解一下什么是服务器推送技术和DWR的推送方式。1.服务器推送技术和DWR的推送方式传统模式的 Web 系统以客户端发出请求、服务器端响应的方式工作,服务端不能主动发送请求(消息)给客户端。这种方式并不能满足很多现实应用的需求,譬如: 监控系统:后台硬件热插拔、LED、温度、电压发生变化; 即时通信转载 2013-12-09 16:54:29 · 4481 阅读 · 2 评论 -
合理使用Ehcache
Ehcache是来sourceforge(http://ehcache.sourceforge.net/)的开源项目,是纯Java实现的简单、快速的Cache组件。可以对页面、对象、数据进行缓存,支持集群/分布式缓存。如果整合Spring、Hibernate也非常的简单,Spring对Ehcache的支持也非常好。EHCache支持内存和磁盘的缓存,支持LRU、LFU和FIFO多种淘汰算法,支持分原创 2013-09-02 15:14:52 · 18842 阅读 · 5 评论 -
多tomcat并行,用户名、密码及虚拟路径设置
多tomcat设置步骤:1. 对于每个tomcat 6.0目录,打开apache-tomcat-6.0.32\bin下面的catalina.bat和startup.bat在rem Guess CATALINA_HOME if not defined之后加上set CATALINA_HOME="D:\下载\apache-tomcat-6.0.32",我解压缩的目录为D:\下载\。替换为相原创 2013-08-16 00:07:35 · 1601 阅读 · 0 评论 -
Java获取真实IP地址
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为http://www.xxx.com/ 的URL时,用request.getRemote转载 2010-01-24 20:44:00 · 1518 阅读 · 0 评论 -
Java中用Calendar类计算周和周的起始日期
package com.itywweeksoft.ambow.common;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/** * Title: 周计算类,星期日为一周的开始,星原创 2009-10-29 09:59:00 · 1516 阅读 · 0 评论 -
java 截图
import java.awt.Dimension;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.io.File;import javax.imageio.ImageIO;转载 2009-11-04 17:43:00 · 1085 阅读 · 0 评论 -
解决文字过长,表格被撑大,自动换行,文字超出,切割
style="table-layout: fixed;WORD-BREAK: break-all; WORD-WRAP: break-word" 语法: word-break : normal | break-all | keep-all 参数: normal : 依照亚洲语言和非亚洲语言的文本规则,允许在字内换行 break-all : 该行为与亚洲语言的normal相同。也允许原创 2009-09-18 18:15:00 · 4563 阅读 · 1 评论 -
js截取字符串处理
js截取方式1、区别汉字和英文function widthCheck(name, maxLength){ if(!maxLength){ maxLength = 20; } if(name==null||name.length<1){ return ["", ""]; } var w = 0;//字符串长度,一个汉字长度为2 var s原创 2009-09-10 10:56:00 · 9715 阅读 · 1 评论 -
java .class与getClass的区别
.class其实是在java运行时就加载进去的getClass()是运行程序时动态加载的下面以例子说明:首先建一个基类Baseclasspackage classyongfa;public class Baseclass {private String height;public String getHeight(){ return height转载 2009-03-17 15:44:00 · 5414 阅读 · 0 评论 -
java.math中NumberFormat,BigInteger和BigDecimal的简单用法
NumberFormat类:(public abstract class NumberFormat extends Format) 用java.text.NumberFormat类对输出的数字结果进行必要的格式化。 使用该类如下方法类实例化一个NumberFormat对象: public static final NumberFormat getInstance() 然后用该对象调用如原创 2009-03-12 13:43:00 · 4388 阅读 · 0 评论