java及框架
文章平均质量分 83
java基本概念和基础框架,比如,spring
hu4wufu
心有惊雷,生似静湖
展开
-
java基础之接口、抽象类和实现类
接口对行为的抽象抽象类实现类实现接口定义的方法接口和抽象类的区别1.语法层面上的区别 1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法; 2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的; 3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法; 4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。2.设计层面上的区别.原创 2020-11-06 18:16:34 · 1414 阅读 · 0 评论 -
经常看到的方法
getObjectInstance 方法 (SQLServerDataSourceObjectFactory)检索指定数据源对象的实例。语法:public java.lang.Object getObjectInstance(java.lang.Object ref, javax.naming.Name name, ja原创 2020-09-27 22:08:11 · 168 阅读 · 0 评论 -
《Head First设计模式》设计模式总结
前言:如果你被标题骗进来,直接拉到最后查看参考链接即可。策略模式策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。例子编写各种各样的鸭子类,定义基本的行为呱呱叫(quack)、游泳(swim)、展示(display)。使用继承创建超类Duck,此超类中有swim和quack的具体实现方法,有一个抽象方法display,继承的子类就自动有了swim和quack的方法。问题:如果在Duck超类中添加一个飞行(fly)方法,那么会导致某原创 2020-09-25 18:54:36 · 164 阅读 · 0 评论 -
《Head First设计模式》总结
前言:知己知彼,百战不殆(小声bb)设计原则找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起把会变化的部分取出并封装起来,好让其他部分不会受到影响,这样可以导致代码的变化所引起的后果变少,代码更加可控并且不容易出问题。大多数的模式都着眼于软件变化的主题,允许系统局部改变独立于其他部分。针对接口编程,而不是针对实现编程这里的接口不一定指的interface关键字,而是说针对超类型编程,即利用多态,动态绑定对应的执行方法。多用组合,少用继承“有一个”原创 2020-09-25 18:54:21 · 138 阅读 · 0 评论 -
RMI
RMI(Remote Method Invocation)远程方法调用,RPC本身的实现方式,可以先看一下RPC的实现方式-->https://blog.csdn.net/Candyys/article/details/108774099首先我看到两张还不错的图。用到的类和方法:好了,我们往下。RMI全部的宗旨就是尽可能简化远程接口对象的使用。上图逻辑: Server端监听一个端口,这个端口是JVM随机选择的; Client端并不..原创 2020-09-24 14:50:35 · 145 阅读 · 0 评论 -
RPC
RPC(Remote Procedure Call)远程过程调用框架RPC就是要像调用本地的函数一样去调远程函数。两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上提供的函数/方法,因为不在一个内存空间,所以不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。远程过程调用能使Java编程人员能够在网络环境中分布操作。RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有: 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring原创 2020-09-24 14:44:21 · 129 阅读 · 0 评论 -
LDAP
简介(Lightweight Directory Access Protocol ,轻型目录访问协议)是一种目录服务协议,运行在TCP/IP堆栈之上。LDAP目录服务是由目录数据库和一套访问协议组成的系统,目录服务是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,能进行查询、浏览和搜索,以树状结构组织数据。LDAP目录服务基于客户端-服务器模型,它的功能用于对一个存在目录数据库的访问。 LDAP目录和RMI注册表的区别在于是前者是目录服务,并允许分配存储对象的属性。...原创 2020-09-24 14:42:54 · 135 阅读 · 0 评论 -
JNDI
JNDIJNDI (Java Naming and Directory Interface) ,包括Naming Service和Directory Service。JNDI是Java API,允许客户端通过名称发现和查找数据、对象。这些对象可以存储在不同的命名或目录服务中,例如远程方法调用(RMI),公共对象请求代理体系结构(CORBA),轻型目录访问协议(LDAP)或域名服务(DNS)。JNDI示例JNDI和RMI配合使用Hashtable env = new Hashtable.原创 2020-09-24 14:42:37 · 135 阅读 · 0 评论 -
jvm内存模型概述
前言:Java程序在执行前首先会被编译成字节码文件,然后再由Java虚拟机执行这些字节码文件从而使得Java程序得以执行。事实上,在程序执行过程中,内存的使用和管理一直是值得关注的问题。Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些数据区域都有各自的用途,以及创建和销毁的时间,并且它们可以分为两种类型:线程共享的方法区和堆,线程私有的虚拟机栈、本地方法栈和程序计数器。参考链接:https://blog.csdn.net/justloveyou_/ar.原创 2020-09-22 21:15:39 · 125 阅读 · 0 评论 -
Java垃圾回收机制
java里边关于自动内存管理分为两个问题:1、给对象分配内存2、回收分配给对象的内存(也就是java垃圾回收机制)垃圾回收机制的引入可以有效的防止内存泄露、保证内存的有效使用,也无需多考虑内存管理。补充:内存泄露是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下,Java的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有时也将其称为“对象游离”。参考文章:https://blog.csdn.net/justloveyou_/article..原创 2020-09-22 21:14:59 · 179 阅读 · 0 评论 -
java命令执行的类
Java下的命令执行常用的两种方式:1.使用ProcessBuilderProcessBuilder pb=new ProcessBuilder(cmd); pb.start();2.使用RuntimeRuntime.getRuntime().exec(cmd)由此可见:Runtime.getRuntime().exec()的底层实际上也是ProcessBuilder。也就是说上面cmd参数可控的情况下,均存在命令执行的问题。参考链接:Java下奇怪的命令.原创 2020-09-10 12:03:15 · 686 阅读 · 0 评论 -
Java虚拟机(JVM)、JDK和JRE
JVM架构JVM工作方式:类加载器:类加载器读取.class文件并将字节码保存在方法区域中。方法区域:JVM中只有一个方法区域,在所有类之间共享。它保存每个.class文件(类字节码)的类级别信息。堆:堆是JVM内存中分配对象的一部分。JVM为每个.class文件创建一个Class对象。堆栈:堆栈也是JVM内存的一部分,但与堆不同,堆栈用于存储临时变量。PC寄存器:跟踪已执行的指令和将要执行的指令。由于指令是由线程执行的,因此每个线程都有一个单独的PC寄存器。本机方法堆栈:本原创 2020-08-20 19:17:26 · 426 阅读 · 0 评论 -
java内存分析
java内存分析类的加载过程类的加载与ClassLoader的理解初始化是jvm做的例子:类加载类加载器的作用视频链接:注解和反射原创 2020-07-03 20:12:29 · 206 阅读 · 0 评论 -
【深入理解JVM】:类加载器(ClassLoader)与双亲委派模型
类加载每个编写的".java"拓展名类文件都存储着需要执行的程序逻辑,这些".java"文件经过Java编译器编译成拓展名为".class"的文件,".class"文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的".class"文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载。了解一下ClassLoader类中的比较重要的方法loadClass(String)该方法加载指定名称(包括包名)的二进制类型,该方法在.原创 2020-06-29 20:23:42 · 278 阅读 · 0 评论 -
loadClass()、findClass()、defineClass()区别
loadClass()findLoadedClass(String)调用这个方法protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{ synchronized (getClassLoadingLock(name)) { // 首先,查看这个Class是否已经别加载 Class<?> c = findL原创 2020-06-26 11:30:50 · 874 阅读 · 0 评论 -
jackson和fastjson
json是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON构建基于两种结构“名称/值”对的集合 值的有序列表 结构可以嵌套如下:Jackson实现fastjson是Alibaba开发的,java语言编写的高性能JSON库,采用“假定有序快速匹配”的算法,...原创 2020-06-17 01:49:20 · 172 阅读 · 0 评论 -
调试Java程序时,在堆栈框架中显示变量的哪些信息
在idea中调试java应用程序时,在堆栈框架中看到所有变量,如下所示:@是自应用程序启动以来的对象计数编号。因此,@ 1012表示自应用启动以来创建的第1012个对象。getClass().getName() + '@' + Integer.toHexString(hashCode())参考链接:https://stackoverflow.com/questions/19490428/while-debugging-java-app-what-information-is-show.原创 2020-06-11 19:56:00 · 275 阅读 · 0 评论 -
javaagent使用指南
字节码插桩?bTrace?Arthas?在加载类的时候,对字节码进行修改Javaagent介绍Javaagent是java命令的一个参数。参数 javaagent 可以用于指定一个 jar 包,并且对该 java 包有2个要求:这个 jar 包的 MANIFEST.MF 文件必须指定 Premain-Class 项。 Premain-Class 指定的那个类必须实现 premain() 方法。使用 javaagent 需要几个步骤定义一个 MANIFEST.MF 文件,必须包含 P.原创 2020-06-05 12:36:06 · 402 阅读 · 0 评论 -
HTTP中的重定向和请求转发的区别
在servlet中调用转发,重定向的语句如下:request.getRequestDispatcher("new.jsp").forward(request, response);//转发到new.jspresponse.sendRedirect("new.jsp");//重定向到new.jsp使用jsp写法是<!-- 转发 --><jsp:forward page="apage.jsp" /><!-- 重定向到new.jsp --><%r原创 2020-06-01 16:46:56 · 191 阅读 · 0 评论 -
Tomcat 执行流程
之前也没有研究过tomcat,只知道是服务器,能处理数据。以下为tomcat的体系结构tomcat架构图一般在web里,tomcat扮演两个角色。web容器:web容器所能做的就是接受用户对静态资源的请求并进行恢复。比如apache,但是apache也能处理php 和perl这样的动态资源的原因是因为apache的配置文件里可以做配置。类似于通过加载插件的方式提供对perl和php等动态资源请求的能力。tomcat在web容器的基础上增加了对动态资源处理的能里,也就是所谓的servl原创 2020-05-30 19:59:40 · 1173 阅读 · 0 评论 -
Spring Boot rest api 返回 XML 格式的数据
Spring Boot 默认返回json 格式的数据,Rest Api 可以根据用户请求头的不同 ,返回不同的媒体类型的响应(JSON XML 等)在默认的情况下,Spring 会安装应用所定义的内容协商策略解析正确的内容 (用户可以根据指定 Accept 头信息来返回不同类型的信息) 当我们需要返回xml格式的数据的时候,我们需要使用以下方式来实现。REST 返回XML 格式数据的实现...原创 2020-05-24 20:08:57 · 1137 阅读 · 0 评论 -
Spring HtmlUtils把HTML编码转义,可将HTML标签互相转义
org.springframework.web.util.HtmlUtils 可以实现HTML标签及转义字符之间的转换。代码如下:/** HTML转义 **/ String s = HtmlUtils.htmlEscape("<div>hello world</div><p> </p>"); System.out.println(s); String s2 = HtmlUtils.htmlUnescape(s); ..原创 2020-05-24 18:14:02 · 335 阅读 · 0 评论 -
IDEA调试
本机用IDEA调试远程部署程序代码--->b站视频原创 2020-05-22 19:39:01 · 217 阅读 · 0 评论 -
Java RMI、JRMP详解
RMI远程方法调用(Remote Method Invocation)。能够让在某个java虚拟机上的对象像调用本地对象一样调用另一个java 虚拟机中的对象上的方法。Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能简化远程接口对象的使用。 J原创 2020-05-11 02:13:03 · 1578 阅读 · 0 评论 -
LDAP详解
目录服务目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。目录服务是由目录数据库和一套访问协议组成的系统。类似以下的信息适合储存在目录中:企业员工信息,如姓名、电话、邮箱等; 公用证书和安全密钥; 公司的物理设备信息,如服务器,它的IP地址、存放位置、厂商、原创 2020-05-10 18:42:22 · 623 阅读 · 0 评论 -
Spring核心思想,IoC与DI、AOP详解
IoC IoC(Inversion of Control)控制反转,IoC是一种新的Java编程模式,目前很多轻量级容器都在广泛使用的模式。IoC解决了什么问题在IoC出现以前,组件之间的协调关系是由程序内部代码来控制的,或者说,以前我们使用New关键字来实现两组间之间的依赖关系的。这种方式就造成了组件之间的互相耦合。IoC(控制反转)就是来解决这个问题的,它将实现组件间的关系...原创 2020-04-30 21:02:54 · 368 阅读 · 0 评论 -
动态代理模式
概述我们把微商代理和厂家进一步抽象,前者可抽象为代理类,后者可抽象为委托类(被代理类)。通过使用代理,通常有两个优点,并且能够分别与我们提到的微商代理的两个特点对应起来:优点一:可以隐藏委托类的实现;优点二:可以实现客户与委托类间的解耦,在不修改委托类代码的情况下能够做一些额外的处理。...原创 2020-05-06 21:38:45 · 199 阅读 · 0 评论 -
java泛型
概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型...原创 2020-05-06 21:38:33 · 105 阅读 · 0 评论 -
java动态字节码
概述java动态字节码指的是在java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对代码的二进制文件进行修改。动态java字节码主要是为了减少冗余代码,提高性能。参考链接:JAVA动态字节码...原创 2020-05-06 21:38:18 · 155 阅读 · 0 评论 -
java 的反射
Java 反射机制Java 反射机制在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态的获取信息以及动态调用对象的方法的功能称为java 的反射机制。反射机制很重要的一点就是“运行时”,其使得我们可以在程序运行时加载、探索以及使用编译期间完全未知的 .class 文件。换句话说,Java 程序可以加载一个...原创 2020-05-06 21:39:01 · 474 阅读 · 0 评论 -
Springboot
简介其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。Spring Boot优势原本spring web项目部署过程1)配置 web.xml,加载 Spring 和 Spring mvc2)配置数据...原创 2020-05-06 20:22:14 · 238 阅读 · 0 评论 -
Spring Security
Spring Security 简介Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了Spring IoC,DI(控制反转 Inversion of Control ,DI:Dependency Injection 依赖注入)和 AOP(面向切面编程...原创 2020-04-30 21:02:42 · 136 阅读 · 0 评论 -
Java Socket 简单编程实例
之前照着书写了一个实例,最后一次java实验也就结束了,后来还有一个是写计算机网络课程设计好像写到了套接字Socket现在又把重新拿出来,感觉是有不少东西要学习的。所谓socket通常也称作"套接字"。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于Java而言,这些Api存在与java.net 这个包里面.因此只要原创 2017-06-27 21:27:56 · 4152 阅读 · 3 评论 -
DataStream和FileStream用法
1、DataInputStream和DataOutputStream都是Java中输入输出流的装饰类,用起来很方便。package another;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.DataInputStream;import java.io.Data原创 2017-07-03 09:10:21 · 873 阅读 · 0 评论 -
通过JDBC进行简单的增删改查(以MySQL为例)
通过JDBC进行简单的增删改查(以MySQL为例)目录前言:什么是JDBC一、准备工作(一):MySQL安装配置和基础学习二、准备工作(二):下载数据库对应的jar包并导入三、JDBC基本操作(1)定义记录的类(可选)(2)连接的获取(3)insert(4)update(5)select(6)delete四、测试五、代码分析六、思考问题转载 2017-01-11 19:05:48 · 267 阅读 · 0 评论