Java
文章平均质量分 70
迹说
一起成长
展开
-
如何实现高效联表查询
本地缓存缓存作为提高性能一种可选方式最先被考虑,其具有简单、易用、高效的特性。在结合Java8之后的新特性 Lambda 表达式,可以轻松实现类似 Join、Groupby、Sort 操作。这个方式也是我首选的处理方式。其本质是将原本数据库处理压力转嫁到服务器内存中,鉴于现在绝大多数公司都是分布式架构,服务性能相比单体架构有明显的提升,反观,MySQL 在分布式时代常常成为性能的瓶颈,从而衍生出 TiDB 这类分布式数据库。但缓存方式存在明显的短板—不适合大数据量操作,容易导致 Out Of Memo原创 2021-07-28 22:53:16 · 981 阅读 · 0 评论 -
Java枚举全解析
enum关键字与class和interface地位相同,其一样有成员变量、方法、可以实现一个或多个接口,也可以有构造器枚举类与普通类的区别枚举类的父类是java.lang.Enum类非抽象枚举类默认使用final修饰,不能存在子类枚举类的构造器只能使用private修饰符,默认就是private枚举类的所有实例必须在枚举类的第一行显式列出,否则这个枚举类永远不能产生实例,列出的实例,系统会自原创 2016-05-25 09:40:58 · 410 阅读 · 0 评论 -
SpringAOP面向切面详解(带实例)
了解AOP的相关术语1.通知(Advice):通知定义了切面是什么,以及何时使用。描述了切面要完成的工作和何时需要执行这个工作。2.连接点(Joinpoint):程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用时、异常被抛出时等等。3.切入点(Pointcut):通知定义了切面要发生的“故事”和时间,那么切入点就定义了“故事”发生的地点,例如某个类或方法的名称,Spring中允原创 2016-05-13 14:06:55 · 14718 阅读 · 2 评论 -
直接明了的告诉你——对象与内存控制
JVM的垃圾回收机制是由一条后台线程执行的,其本身也是非常消耗内存的,因此,滥用创建对象,会导致性能大大下降,对内存的分配的了解就显得尤为重要变量分类局部变量形参:存在于方法签名中定义的局部变量,有方法调用者为其赋值,随着方法的结束而消亡方法内部变量:在方法内部定义的局部变量,必须在方法内对其进行显示初始化,随着方法的结束而消亡代码块内部的局部变量:在代码块内定义的局部变量,必须在代码块内对其原创 2016-05-26 15:20:36 · 503 阅读 · 0 评论 -
maven-settings.xml的那些事
<proxies><localRepository><servers> <mirrors>原创 2016-05-05 22:47:32 · 426 阅读 · 0 评论 -
Lambda真的挺好玩的
Lambda相当于就是一个匿名方法,其在代替匿名内部类创建对象的时候,Lambda表达式代码块会代替实现抽象方法的方法体Lambda表达式的目标类型必须是“函数式接口(FunctionalInterface)”。函数式接口只能包含一个抽象方法接口。函数式接口可以包含多个默认方法、类方法、但只能一个抽象方法函数式接口有且只有一个没有default关键字修饰的接口 可以多个default关键字的抽象原创 2016-05-18 11:33:58 · 364 阅读 · 0 评论 -
JAVA类加载机制全解析
当程序使用某个类时,如果该类还没被初始化,加载到内存中,则系统会通过加载、连接、初始化三个过程来对该类进行初始化。该过程就被称为类的初始化类加载指将类的class文件读入内存,并为之创建一个java.lang.Class的对象类文件来源从本地文件系统加载的class文件从JAR包加载class文件从网络加载class文件把一个Java源文件动态编译,并执行加载 类加载器通常无须等到“首次使原创 2016-05-31 16:15:50 · 439 阅读 · 0 评论 -
ActiveMQ+Spring工程创建详解(附工程文件)
ActiveMQ是Apache所提供的一个开源的消息系统,完全采用Java来实现,因此,它能很好地支持J2EE提出的JMS(Java Message Service,即Java消息服务)规范。JMS是一组Java应用程序接口,它提供消息的创建、发送、读取等一系列服务。JMS提供了一组公共应用程序接口和响应的语法,类似于Java数据库的统一访问接口JDBC,它是一种与厂商无关的API,使得Java程序转载 2016-05-19 15:30:37 · 1399 阅读 · 0 评论 -
Java代理设计模式详解
代理即通过代理类,找到适合你的实现类。相当于现实生活中的中介的角色,你想租房子,这个时候你又不想自己找房子,那你可以找中介,通过中介找到合适自己的房子,同时你也可以让中介帮你签合同等其他事宜。代理存在静态代理和动态代理两种静态代理public interface Sourceable { public void method(); } public class Source imp原创 2016-06-01 14:40:51 · 355 阅读 · 0 评论 -
Java 远程通讯技术及原理分析
消息模式归根结底,企业应用系统就是对数据的处理,而对于一个拥有多个子系统的企业应用系统而言,它的基础支撑无疑就是对消息的处理。与对象不同,消息本质上是一种数据结构(当然,对象也可以看做是一种特殊的消息),它包含消费者与服务双方都能识别的数据,这些数据需要在不同的进程(机器)之间进行传递,并可能会被多个完全不同的客户端消费。消息传递相较文件传递与远程过程调用(RPC)而言,似乎更胜一筹,因为它具有更好转载 2016-05-20 15:38:57 · 635 阅读 · 0 评论 -
Java反射获取类和对象信息全解析
反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题。在两个人协作开发时,你只要知道对方的类名就可以进行初步的开发了。获取类对象Class.forName(String clazzName)静态方法调用类的class属性,Person.class返回的就是Person的class对象(推荐使用)调用某个对象的getClass()方法 具体使原创 2016-06-06 17:26:33 · 6130 阅读 · 0 评论 -
JAVA_NIO详细解析说明
Java NIO是一个用来替代标准Java IO API的新型数据传递方式,像现在分布式架构中会经常存在他的身影。其比传统的IO更加高效,非阻塞,异步,双向NIO主体结构Java NIO的主要构成核心就是Buffer、Channel和Selector这三个对于Channel我想要提醒的是,Channel中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入使用Selector,得向原创 2016-06-08 16:34:05 · 3983 阅读 · 0 评论 -
当MongoDB遇上Spring
Spring-data对MongoDB进行了很好的支持,接下来就讲解一下关于Spring对MongoDB的配置和一些正常的使用我下面的工程使用的是Spring的Java配置的方式和Maven构建具体的工程代码大家可以访问我的Github地址:https://github.com/zoeminghong/springmvc-javaconfig①MongoDB的必要配置package springmv原创 2016-07-04 18:18:18 · 4152 阅读 · 2 评论 -
Redis的Spring配置讲解
Redis是一种特殊类型的数据库,他被称之为key-value存储本文覆盖缓存和存储两方面进行说明,使用的是Spring 4.0和Java配置方式代码地址下载地址:https://github.com/zoeminghong/springmvc-javaconfig存储Redis的配置package springmvc.rootconfig;import org.springframework.ca原创 2016-07-06 09:11:01 · 14286 阅读 · 0 评论 -
pndaox不再需要写mybatis的SQL
之前有个同事在抱怨,最烦写mybatis的SQL语句了,表中新增一个字段还要特意处理一下,动不动还会留一些问题在上面。没错,那位同事就是——ME。之前在Google,寻找的方向是怎么解决mybatis的SQL文件的初始化工具,并没往去除的方向,觉得这个就有点大胆。万万没想到,找到了一款名为pndao的开源工具包。其兼容原有的mybatis模式,有些比较复杂的SQL语句,你可以在XML文件中进行编辑。原创 2016-11-22 08:54:53 · 1755 阅读 · 0 评论 -
Vertx-Phoenix实践
Vertx-Phoenix实践前言VertxVertx是一个高效的异步框架,支持Java、Scala、JavaScript、Kotlin等多种语言。在非性能调优的场景下,TPS可以高达2-3万,同时,支持多种数据源也提供了异步支持。Phoenix大数据的同学肯定对其很了解,是Apache基金会下的顶级工程,Phoenix帮助Hbase提供了SQL语法的支持,让难用的...原创 2018-04-18 19:35:39 · 928 阅读 · 0 评论 -
Java泛型全解析
把一个对象放进集合中之后,集合就会忘记这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成Object类型了为了解决上面的问题,就引出了泛型这一个概念泛型接口和类原创 2016-05-25 09:34:04 · 372 阅读 · 0 评论 -
JsonArray遍历方法
步骤①、转为JsonArray格式 ②、使用Iterator进行遍历准备 String relation = "[{"codeId":"1","codeName":"你们"},{"codeId":"2","codeName":"他们"}]"; JSONArray ja=JSON.parseArray(relation); Ite原创 2016-04-12 15:46:27 · 99408 阅读 · 4 评论 -
Java NIO
Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Asynchronous IO(异步IO):Java NIO可以让你异步的使用IO,例如:当线程从通道读取数据转载 2016-02-04 15:19:52 · 277 阅读 · 0 评论 -
Java重写的规则
参数列表必须完全与被重写方法的相同;返回类型必须完全与被重写方法的返回类型相同;访问权限不能比父类中被重写的方法的访问权限更高。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。父类的成员方法只能被它的子类重写。声明为final的方法不能被重写。声明为static的方法不能被重写,但是能够被再次声明。如果一个方法不能被继承,那么该方法不能被重写。子原创 2015-04-30 17:21:11 · 1167 阅读 · 0 评论 -
JavaWeb中页面跳转的实现方法汇总
JavaWeb中页面跳转的实现方法汇总原创 2015-05-03 22:28:01 · 3518 阅读 · 0 评论 -
线程总结
什么是线程,线程与进程原创 2015-05-11 18:13:09 · 519 阅读 · 0 评论 -
服务端与客户端跳转的区别
服务端跳转又称为请求转发,客户端跳转又称为重定向。服务端跳转后浏览器地址栏URL不变,刷新会导致重复提交;客户端跳转后浏览器地址栏URL将改变。服务端跳转是一次请求一次响应,可以使用request传递数据;而客户端跳转是两次请求两次响应,request中的数据会丢失。服务端跳转只能跳转到同一个应用程序的其他资源;而客户端跳转则可以重定向到任意的URL。原创 2015-06-18 21:32:36 · 1820 阅读 · 0 评论 -
自定义JSTL标签
开发步骤:步骤1:创建自定义标签的处理类步骤2:创建TLD标签库描述文件 使用步骤:配置TLD文件修改JSP文件,使用自定义标签 步骤:1、实现Tag接口或SimpleTag接口或者继承TagSupport类使用接口方式则要实现6个方法 setPageContext():设置PageContext对象 setParent():原创 2015-06-18 23:34:29 · 677 阅读 · 0 评论 -
Java加密技术介绍
加密解密,曾经是我一个毕业设计的重要组件。在工作了多年以后回想当时那个加密、解密算法,实在是太单纯了。 言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书。 如基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法MD5(Message Digest algorithm 5,信息摘要算法)SHA(Secure Hash转载 2015-05-19 21:44:31 · 407 阅读 · 0 评论 -
微信公众平台开发教程1
工程项目图 WeixinServletpackage com.weixin.servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import java.util.Map;import javax.servlet.ServletException;import javax.se原创 2015-07-11 18:33:52 · 610 阅读 · 0 评论 -
BigDecimal用法详解
一、简介 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-原创 2015-07-28 23:31:10 · 7241 阅读 · 0 评论 -
用tomcat部署web工程
1、下载TomcatTomcat下载传送门 我下的是apache-tomcat-7.0.422、下载安装JDKJDK下载传送门 我下的版本是jdk1.7.0_07,64位 安装过程就省略了配置JDK JAVA_HOME: D:\Program Files\Java\jdk1.7.0_07 CLASSPATH: .;%JAVA_HOME%/lib; Pat原创 2015-08-13 22:56:02 · 683 阅读 · 0 评论 -
自定义注解定义和使用
@Target:表示该注解可以用于什么地方,可能的ElementType参数: CONSTRUCTOR:构造器的声明 LOCAL_VARIABLE:局部变量声明 METHOD:方法声明 PACKAGE:包声明 PARAMETER:参数声明 TYPE:类、接口(包括注解类型)或enum声明@Retention:表示需要在什么级别保存该注解信息。可选的R原创 2015-08-05 21:46:59 · 7265 阅读 · 0 评论 -
JAVA使用正则表达式Demo
public static boolean isDate(String strDate) { Pattern pattern = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(原创 2015-09-07 19:20:47 · 1562 阅读 · 0 评论 -
Xml处理——获取Xml格式数据
转换为XML格式 ,获取节点数据,xml数据注入到javabean中原创 2015-11-25 23:32:57 · 1661 阅读 · 0 评论 -
freemarker常见语法大全
运算符:+,-,*,/,%(求余) 比较符:和>=,!=,= 常用的方法:${book.name?if_exists} //用于判断如果存在,就输出这个值${book.name?default(‘xxx’)}//默认值xxx${book.name!"xxx"}//默认值xxx${book.date?string('yyyy-MM-原创 2015-12-16 10:29:14 · 640 阅读 · 0 评论 -
使用URLConnection进行http请求
java文件上传,java的http请求,post,get请求原创 2016-01-12 22:22:24 · 453 阅读 · 0 评论 -
使用HttpClient进行get和post请求
HttpClient转载 2016-01-12 22:28:02 · 947 阅读 · 0 评论 -
JAVA String.format 方法使用介绍
在JDK1.5中,String类增加了静态方法format(String format, Objects... args),format(Local l ,String format, Objects... args)。该方法可以将各类数据按照指定的格式以字符串形式输出。其中format参数指定了输出的格式,而args则是一系列等待被格式化的对象。该方法与c语言中printf函数的用法有一转载 2015-04-30 15:48:53 · 1202 阅读 · 0 评论