- 博客(45)
- 资源 (1)
- 收藏
- 关注
转载 Spring – 控制反转 vs 依赖注入
在软件工程中,控制反转(IoC) 是一种编程技术,其中对象耦合在运行时由汇编程序对象绑定,并且通常在编译时使用静态分析未知。在本spring教程中,通过示例了解spring中ioc和依赖注入的区别。目录1. 控制反转 (IoC) 2. 依赖注入 (DI) 3. 如何实现控制反转4. Spring Framework 中的 IoC 5. Spring中创建 bean 的方法6. Spring Framework 中的依赖注入7. IoC vs DI 访谈问题1.什么是控制反转(I
2021-06-29 07:46:08
201
转载 Spring – IoC 容器
在Spring IoC容器是在Spring框架的核心。容器将创建对象,将它们连接在一起,配置它们,并管理它们从创建到销毁的完整生命周期。Spring 容器使用依赖注入 (DI) 来管理组成应用程序的组件。Spring 提供了以下两种类型的容器。BeanFactory 容器 应用上下文容器阅读更多:控制反转和依赖注入1. 豆工厂一个Bean工厂本质上不过界面更加的能够维持不同的豆类及其相关的注册表的先进工厂。这BeanFactory使我们能够读取 bean 定义并使用 bean 工
2021-06-29 07:32:32
136
转载 Spring教程
春季教程此页面列出了 HowToDoInJava.com 上提供的所有 Spring 教程和示例。这个页面每次都会更新,我会写任何关于Spring框架的帖子。随意建议您想阅读更多的主题。Spring 核心教程Spring bean 作用域 spring 容器中的 bean 可以在五个作用域中创建。单例、原型、请求、会话和全局会话。详细了解它们。 Spring bean 生命周期回调方法 Spring 框架提供了以下 4 种方式来控制 bean 的生命周期事件: Initial
2021-06-29 07:29:56
198
原创 1.3垃圾回收——内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定
垃圾收集器与内存分配策略1 概述2 对象已死吗 2.1 引用计数算法 2.2 可达性算法 2.3 再谈引用 2.4 生存or死亡 2.5 回收方法区3 垃圾收集算法 3.1 标记-清除算法 3.2 复制算法 3.3 标记-整理算法 3.4 分代收集算法4 HotSpot算法 4.1 枚举根节点 4.2 安全点 4.3 安全区域...
2018-03-28 22:34:05
2060
原创 1.2Java内存模型——原子性、内存可见性、重排序、顺序一致性、volatile、锁、final
一、原子性原子性操作指相应的操作是单一不可分割的操作。例如,对int变量count执行count++d操作就不是原子性操作。因为count++实际上可以分解为3个操作:(1)读取变量count的当前值;(2)拿count的当前值和1做加法运算;(3)将加完后的值赋给count变量。在多线程环境中,非原子操作可能会受其他线程的干扰。比如,上述例子如果没有对相应的代码进行同步(Synchronizat...
2018-03-26 23:03:43
3748
1
原创 1.1JVM内存结构——堆、栈、方法区、直接内存、堆和栈区别
一、定义 1、堆:FIFO队列优先,先进先出。jvm只有一个堆区被所有线程所共享!堆存放在二级缓存中,调用对象的速度相对慢一些,生命周期由虚拟机的垃圾回收机制定。2、栈:FILO先进后出,暂存数据的地方。每个线程都包含一个栈区!栈存放在一级缓存中,存取速度较快,“栈是限定仅在表头进行插入和删除操作的线性表”。3、方法区:用来存放方法和static变量。二、存储的数据类型1、堆用来存储new出来的对...
2018-03-24 10:28:31
18102
3
原创 反射
反射是框架设计的灵魂一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.反射就是把...
2018-03-21 08:59:49
385
原创 jQuery jsonp跨域原理
实际上单jQuery还是实现不了跨域加载数据的,由于XMLHttpRequest的安全设置,是不允许直接跨域的。jQuery的jsonp虽然能跨域,但是还得请求的页面支持才行,如果请求的页面不理会jQuery发送的参数,是无法跨域的,实际上来说是获取不到输出的页面内容。 jQuery jsonp跨域原理实际就是使用script标签加载配置对象中的跨域url,再使用script标签加载之前,会在客...
2018-03-07 15:59:35
305
原创 Uncaught SyntaxError: Unexpected token :
json格式错误Uncaught SyntaxError: Unexpected token :该错误是由于返回的结果格式错误导致,我出现这个错误的原因是由与jsonp的跨域请求,但是返回的json而导致的错误。在这里由于jsonp的跨域请求返回的应该是callback(json);但是接口返回的是json,所以错误。解决方法:1、改造后台的接口,让后台将json放在你jsonp发给后台的call...
2018-03-07 15:45:05
1317
原创 window.print()打印网页中指定内容的实现方法
一般直接使用window.print();是直接打印了整个页面,但只打印其中的一部分时就需要一些方法了1、在页面的代码头部处加入JavaScript:function doPrint() { bdhtml=window.document.body.innerHTML; sprnstr=""; //开始打印标识字符串有17个字符eprnstr=""; //结束打印标识字符串pr
2018-02-02 16:37:42
2135
原创 日志组件slf4j介绍及配置详解
1 基本介绍每一个Java程序员都知道日志对于任何一个Java应用程序尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库,如java.util.logging、Apache log4j、logback。但如果你还不知道SLF4J(Simple logging facade for Java)的话,那么是时候在你的项目中学习使用SLF4J了。SLF4J不同于其他日志
2018-01-29 10:52:47
1005
原创 zip4j -- Java处理zip压缩文件的完整解决方案
前言一个多月前,因项目需要对Java语言下的zip格式压缩文件的处理作了一些了解,尝试了多种开源项目并写了几篇博客做记录:http://blog.youkuaiyun.com/zhangyihui1986/article/details/7724229http://blog.youkuaiyun.com/zhangyihui1986/article/details/7723649http://bl
2018-01-23 09:58:42
681
原创 怎样替换jar包的指定文件
在做(或修改别人的)项目的时候,可能遇到要修改调用的的jar包内的类属性或方法的问题。在eclipse或是其他的IDE中是无法直接修改的,所以需要一个解压jar-->修改文件-->编译-->打包成jar文件的过程,下面简要的记录下我是如何做的:1.将工程中的jar文件拷出来,用解压工具解压得到对应的文件;2.在文件中找到要修改的class文件,将class文件拷出来,用
2017-12-26 16:16:38
7295
原创 log4j.properties配置详解与实例及LOG4J:ERROR Failed to rename
################################################################################ #①配置根Logger,其语法为: # #log4j.rootLogger = [level],appenderName,appenderName2,... #level是日志记录的优先级,分为OFF,TRACE,DEBU
2017-11-30 10:56:35
1353
原创 RESTful API 设计最佳实践
项目资源的URL应该如何设计?用名词复数还是用名词单数?一个资源需要多少个URL?用哪种HTTP方法来创建一个新的资源?可选参数应该放在哪里?那些不涉及资源操作的URL呢?实现分页和版本控制的最好方法是什么?因为有太多的疑问,设计RESTful API变得很棘手。在这篇文章中,我们来看一下RESTful API设计,并给出一个最佳实践方案。每个资源使用两个URL
2017-11-26 19:35:42
223
转载 Java线程同步:synchronized锁住的是代码还是对象
在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。synchronized既可以加在一段代码上,也可以加在方法上。关键是,不要认为给方法或者代码段加上synchronized就万事大吉,看下面一段代码:[java] view plain copy
2017-11-14 11:21:15
237
原创 Spring 知识点提炼
1. Spring框架的作用轻量:Spring是轻量级的,基本的版本大小为2MB控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程AOP:Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Spring包含并管理应用中对象的生命周期和配置
2017-11-12 22:53:25
244
原创 Spring、Spring MVC、MyBatis 整合文件配置详解
使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了。先总结一下SSM整合的文件配置。其实具体的用法最好还是看官方文档。Spring:http://spring.io/docsMyBatis:http://mybatis.github.io/mybatis-3/基本的组织结构和用法就不说了,前面的博客和官方文档上都非常的全面。jar包可
2017-11-12 22:44:31
246
原创 Java调用C/C++编写的第三方dll动态链接库(非native API)--- JNI
这里主要用的方法是JNI。在网上查资料时看到很多人说用JNI非常的复杂,不仅要看很多的文档,而且要非常熟悉C/C++编程。恐怕有很多人在看到诸如此类的评论时已经决定绕道用其他方法了。但是,假如你要实现的功能并不复杂(简单的参数传递,获取返回值等等),我还是支持使用这个方法的。Java Native Interface,简称JNI,是Java平台的一部分,可用于让Java和其他语言编写的代码
2017-10-17 23:04:02
326
原创 深入 char * ,char ** ,char a[ ] ,char *a[] 内核
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。 1 数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2 指针。
2017-10-16 15:53:37
218
原创 使用JNA框架调用dll动态链接库
介绍给大家介绍一个访问本机代码的Java框架—JNA。JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架。非常强大、易用,功能上类似与.NET的P/Invoke。不堪回首的JNI我们知道,使用JNI调用.dll/.so共享类库是非常非常麻烦和痛苦的。如果有一个现有的.dll/.s
2017-10-16 10:28:33
4075
原创 maven项目没有或移除Maven Dependencies后如何在添加进去
今天碰到了这样的一个问题:svn下载maven工程时,该工程没有Maven Dependencies。就是红线的东西不存在 然后找了一些办法都无法解决。最终发现在该工程的.ClassPath文件中添加这段代码即可 Xml代码 classpathentry kind="con" path="org.eclipse.m
2017-10-10 11:29:43
684
原创 Eclipse 4.6 Neon 的Tomcat插件安装方法
- 第一步:打开http://marketplace.eclipse.org/ 搜索Eclipse Tomcat Plugin(翻译成中文是Eclipse Tomcat插件)结果如图 点击图示的红色区域。- 第二步:点击向下的箭头。- 第三步:复制链接 http://tomcatplugin.sf.net/update- 第四步:打开Eclipse
2017-09-25 22:09:46
237
原创 基于TCP协议的Socket通信(文件传输且续传)
本节引言:上节中我们给大家接触了Socket的一些基本概念以及使用方法,然后写了一个小猪简易聊天室的 Demo,相信大家对Socket有了初步的掌握,本节我们来学习下使用Socket来实现大文件的断点续传! 这里讲解的是别人写好的一个Socket上传大文件的例子,不要求我们自己可以写出来,需要的时候会用 就好!1.运行效果图:1.先把我们编写好的Socket服务
2017-09-25 11:39:54
6767
原创 Socket理论知识
OSI七层网络模型OSI七层网络模型(从下往上): OSI是一个理想的模型,一般的网络系统只涉及其中的几层,在七层模型中,每一层都提供一个特殊 的网络功能,从网络功能角度观察:下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能, 即以节点到节点之间的通信为主 第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;上3层(会话层、表示
2017-09-25 11:29:27
430
原创 定时任务:Java中Timer和TimerTask的使用
java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。 一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类的方式创建。 一个完整的Timer:java.util.Timer timer = new java.util.Timer(true); // true 说明这
2017-09-22 11:25:44
222
原创 Oracle 存储过程
一,基本入门介绍CREATE [OR REPLACE] PROCEDURE procedure_name [ (parameter [,parameter]) ]IS [declaration_section]BEGIN executable_section[EXCEPTION exception_section]
2017-09-15 09:19:00
313
原创 Java常见面试(15)
148,AJAX有哪些有点和缺点?优点: 1、最大的一点是页面无刷新,用户的体验非常好。 2、使用异步方式与服务器通信,具有更加迅速的响应能力。 3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”
2017-09-06 21:50:15
419
原创 Java常见面试(14)
139. Java中的泛型是什么 ? 使用泛型的好处是什么? 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。好处: 1、类型安全,提供编译期间的类型检测 2、前后兼容 3、泛化代码,代码可以更多的重复利用 4、性能较高,用GJ
2017-09-06 21:49:17
257
原创 Java常见面试(13)
121,什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。122,线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,
2017-09-06 21:46:11
185
原创 Java常见面试(12)
作为一枚Java后端开发者,数据库知识必不可少,对数据库的掌握熟悉度的考察也是对这个人是否有扎实基本功的考察。特别对于初级开发者,面试可能不会去问框架相关知识,但是绝对不会不去考察数据库知识,这里收集一些常见类型的SQL语句,无论对于平常开发还是准备面试,都会有助益。基本表结构: student(sno,sname,sage,ssex)学生表 cou
2017-09-06 21:45:31
209
原创 Java常见面试(11)
作为一枚Java后端开发者,数据库知识必不可少,对数据库的掌握熟悉度的考察也是对这个人是否有扎实基本功的考察。特别对于初级开发者,面试可能不会去问框架相关知识,但是绝对不会不去考察数据库知识,这里收集一些常见类型的SQL语句,无论对于平常开发还是准备面试,都会有助益。基本表结构: student(sno,sname,sage,ssex)学生表 cou
2017-09-06 21:41:52
310
原创 Java常见面试(10)
91,什么是ORM? 对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模型互不匹配问题的技术; 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据(在Java中可以用XML或者是注解),将程序中的对象自动持久化到关系数据库中或者将关系数据库表中的行转换成Java对象,其本质
2017-09-06 21:41:05
838
原创 Java常见面试(8)
71,谈谈你对Struts的理解。 1. struts是一个按MVC模式设计的Web层框架,其实它就是一个Servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件将各个请求分别分配给不同的action去处理。
2017-09-06 21:40:05
755
原创 Spring中抛出异常时,既要要返回错误信息,还要做事务回滚
情况一:如果没有在程序中手动捕获异常,如下代码事务会回滚Java代码 @Transactional(rollbackFor = { Exception.class }) public void test() throws Exception { doDbStuff1(); doDbStuff2();//假如这个操作数据
2017-09-04 11:40:39
6953
2
原创 Java常见面试(7)
61,JDBC访问数据库的基本步骤是什么?1,加载驱动2,通过DriverManager对象获取连接对象Connection3,通过连接对象获取会话4,通过会话进行数据的增删改查,封装对象5,关闭资源62,说说preparedStatement和Statement的区别1,效率:预编译会话比普通会话对象,数据库系统不会对相同的sql语句不会再次编译2
2017-09-03 13:27:53
231
原创 Java常见面试(6)
51、说一说Servlet的生命周期? Servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init(),service()和destroy方法表达。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自
2017-09-03 13:26:53
462
原创 Java常见面试(5)
41、a.hashCode() 有什么用?与 a.equals(b) 有什么关系? hashCode() 方法对应对象整型的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。它与 equals() 方法关系特别紧密。根据 Java 规范,两个使用 equal() 方法来判断相等的对象,必须具有相同的 hash
2017-09-03 13:26:20
211
原创 Java常见面试(4)
31、String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可能,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。NewString每写一遍,就创建一个新的对象,它使用常量”xyz”对象的内容来创建出一个新String对象。如果以前就用
2017-09-03 13:24:41
189
原创 Java常见面试(3)
21、ArrayList和Vector的区别 这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是与HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其中的元素,也不
2017-09-03 13:17:05
202
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人