静态方法

spring管理bean的三种创建方式

主宰稳场 提交于 2020-02-23 18:04:57
Spring支持如下三种方式创建Bean 1:调用构造器创建Bean 2:调用静态工厂方法创建Bean 3:调用实例工厂方法创建Bean 一:调用构造方法创建Bean 调用构造方法创建Bean是最常用的一种情况Spring容器通过new关键字调用构造器来创建Bean实例,通过class属性指定Bean实例的实现类,也就是说,如果使用构造器创建Bean方法,则<bean/>元素必须指定class属性,其实Spring容器也就是相当于通过实现类new了一个Bean实例。调用构造方法创建Bean实例,通过名字也可以看出,我们需要为该Bean类提供无参数的构造器。下面是一个通过构造方法创建Bean的最简单实例 1:Bean实例实现类 Person.java [java] view plain copy package public class private public Person(String name) ); public void +name); } 因为是通过构造函数创建Bean,因此我们需要提供无参数构造函数,另外我们定义了一个name属性,并提供了setter方法,Spring容器通过该方法为name属性注入参数。 2:配置文件beans.xml [html] view plain copy <? = = ?> < = = ="http://www

java 静态域与静态方法

ぐ巨炮叔叔 提交于 2020-02-23 15:25:28
静态域 每个类中只有一个这样的域,而每个对象对于所有的实例域都有自己的一份拷贝. 例如,给每个雇员赋予唯一的标识码,这里给employee添加一个实例域ID和一个静态域nextid: class Employee{ private static int nextId = 1 private int id ; … } 这时,这个类的所有实例都会有一个实例域id,但将共享同一个一个静态域nextid。 用一个简单地方法 public void setId(){ id = nextId; nextId++; } 这样,每个雇员的ID将唯一。 静态常量 在Math 中定义静态常量 public class Math{ … public static final double PI = 3.141592653589; … } 在程序中可以直接采用Math.PI的形式来获得这个常量。 如果static关键字被省略,PI就成为了Math类的一个实例域,需要通过Math类的对象来访问PI,并且每个Math对象都有它的一份PI拷贝 静态方法 静态方法可以理解为没有this参数(即没有隐式参数的方法),例如Math.pow(x,a),在计算时,不使用任何Math对象。 注意:静态方法不能访问实例域,因为它不能操作对象。但是静态方法可以访问自身类中的静态域,例如: public int

JVM学习——字节码(学习过程)

旧街凉风 提交于 2020-02-23 12:23:15
JVM——字节码 为什么要学字节码 字节码文件,有什么用? JVM虚拟机的特点:一处编译,多处运行。 多处运行,靠的是.class 字节码文件。 JVM本身,并不是跨平台的。Java之所以跨平台,是因为JVM本身不夸平台。 二进制的文件,显然不是给人看的。是给机器看的。 从根源了解了之后,返回到语言层次 好多都会豁然开朗。 必须要学,学一个东西,还需要理由吗? Java语言规范补充: JVM虚拟机规范(相对底层的)Java,Groovy,kotlin,Scala。 编译后都是Class文件,所以就都能在JVM虚拟机上运行。 字节码:枯燥且重要 字节码文件解读 一个Java类,然后进行编译成字节码文件 package com.dawa.jvm.bytecode; public class MyTest1 { private int a = 1; public int getA() { return a; } public void setA(int a) { this.a = a; } } javap 编译后的结果: ➜ main javap com.dawa.jvm.bytecode.MyTest1 Compiled from "MyTest1.java" public class com.dawa.jvm.bytecode.MyTest1 { public com.dawa

FreeMarker-网页静态化

夙愿已清 提交于 2020-02-23 11:47:57
  网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道。 网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力,但是具体的应用场景不同,缓存比较适合小规模的数据,而网页静态化比较适合大规模且相对变化不太频繁 的数据。另外网页静态化还有利于SEO。另外我们如果将网页以纯静态化的形式展现,就可以使用Nginx这样的高性能的web服务器来部署。Nginx可以承载5万的并发,而Tomcat只有几百。 一.FreeMarker简介    FreeMarker 是一款 用 Java 语言编写的模板引擎 : 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页, XML,JSP 或 Java 等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 中文在线文档: http://freemarker.foofun.cn/ 二.FreeMarker使用步骤 1.第一步:工程中引入FreeMarker依赖 <!-- FreeMarker的坐标 --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency

SEO优化网页伪静态的生成方式和伪静态的用处

痴心易碎 提交于 2020-02-23 11:47:42
  伪静态是什么?伪静态就是动态网页通过重写URL的方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。   伪静态的生成的2种方式:   1、框架型伪静态,这种是非常简单而且也是非常便于识别的,它的原理比较简单,就是做一个静态的主框架页面,然后把动态的内容链入副框架内,这个单从它的URL就可以看出眉目,如果整个网站的URL都是一样的,那么就一定是框架伪静态的。   2、利用组件把asp的后辍显示为htm,这种方法的原理是有一点难度的,它主要是利用一个组件强制性的把asp文件的后辍显示为htm,对于客户来说,它是很难分辨的,因为显示的链接的确是以.htm结尾的,不过如果仔细观察它的链接,也能看出来一些眉目,因为这种URL是很奇怪的,中间带有asp的子样,而且后面还有些参数,不过参数的结果已经被隐藏掉了,但是看到这些就应该保持戒心了;不过,还是有办法找出它的原形,就是看程序文件,去找和URL相同的网页,因为htm的网页都是真实存在的,如果找不到这个网页的话,那它是伪静态化无疑了。   伪静态有什么用?我们做伪静态页面的目的就只有几种:   1、最主要的就是迎合搜索引擎方便搜索引擎蜘蛛(Spider)来抓取网页上的相关内容!   2、方便用户访问网站

伪静态

拈花ヽ惹草 提交于 2020-02-23 11:47:27
UrlRewrite URL重写好处有很多,如有利于SEO、便于记忆、隐藏真实路径使安全性提高、便于更新等等。本文概要描述了各种URL重写的实现。 ASP.NET 2.0 中实现URL重写有很多方法,如:Global.asax中捕获用Application_BeginRequest请求,再用HttpContext类的Rewrite方法或Server.Transfer方法实现重写;自己实现IHttpModule实现重写;还有的利用服务器的404错误引导到新的页面实现重写;最后就是用组件实现重写(基本原理大多也是实现IHttpModule、IHttpHandler接口处理请求)。 如果自己处理请求,实现起来麻烦,特别是在大项目中,做好使用组件实现。网上有很多开源或免费的实现URL重写的组件,选择余地特别大。当初我选择的标准是小巧、快速、实现常用的URL重写功能。经过比较选择了只有32KB大小的 UrlRewritingNet 。 查看其文档主要功能有以下一些: 1.基于正则表达式的重写 2.支持Themes和母版页 3.支持输出缓存 4.支持信任级别为"Medium"的使用环境 5.支持Postback 6.支持无Cookie的Session 7.运行时添加、修改改写规则 8.容易安装使用 OK!功能完全够用,就选他了! Web.config中的配置: < configuration

什么是伪静态?如何设置伪静态?

大城市里の小女人 提交于 2020-02-23 11:45:55
静态是什么?   伪静态就是:动态网页通过重写URL的方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。   伪静态的生成的2种方式:   1,框架型伪静态,这种是非常简单而且也是非常便于识别的,它的原理比较简单,就是做一个静态的主框架页面,然后把动态的内容链入副框架内,这个单从它的URL就可以看出眉目,如果整个网站的URL都是一样的,那么就一定是框架伪静态的。   2,利用组件把asp的后辍显示为htm,这种方法的原理是有一点难度的,它主要是利用一个组件强制性的把asp文件的后辍显示为htm,对于客户来说,它是很难分辨的,因为显示的链接的确是以.htm结尾的,不过如果仔细观察它的链接,也能看出来一些眉目,因为这种URL是很奇怪的,中间带有asp的子样,而且后面还有些参数,不过参数的结果已经被隐藏掉了,但是看到这些就应该保持戒心了;不过,还是有办法找出它的原形,就是看程序文件,去找和URL相同的网页,因为htm的网页都是真实存在的,如果找不到这个网页的话,那它是伪静态化无疑了。 伪静态有什么用?   我们做伪静态的目的就只有几种:   1、 最主要的就是迎合搜索引擎方便搜索引擎蜘蛛(Spider)来抓取网页上的相关内容!   2、 方便用户访问网站

设计模式——单例模式

大城市里の小女人 提交于 2020-02-22 22:29:46
单例模式 什么是单例模式? 单例模式指,采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类肢体东一个取得其对象实例的方法(静态方法) e.g. : Hibernate中的Session Factory。 它否则创建Session对象,一个项目通常只需要一个SessionFactory就够。 饿汉式——静态常量 构造器私有化(使用 private, 防止 new) 类的内部创建实例对象,用final 和 static 关键词修饰 向外暴露一个静态的公共方法 (getInstance) //饿汉式(静态常量) class Singleton { //1. 构造器私有化,外部不能new private Singleton(){} //2. 本类内部创建对象实例 private final static Singleton instance = new Singleton(); //3. 对外提供一个公有的静态方法,返回实例对象 public static Singleton getInstance() { return instance; } } 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。 优点 写法简单,在类装载的时候就完成实例化。避免了线程同步问题

单实例中对静态成员函数及变量的回顾

冷暖自知 提交于 2020-02-22 18:31:45
程序最终都将在内存中执行,变量只有在内存中占有一席之地时才有被访问的可能,除此之外,还要有相应的权限。 静态成员函数和非静态成员函数的一个重大区别是,静态成员函数不接受隐含的this指针,它是属于类的,是公有的,因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员;非静态成员函数带有隐含的this指针,它是属于对象的。 类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,存储在静态存储区,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,存储在栈区,可通过类的对象(实例)去访问。 在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员要等对象实例化之后才会存在,此时可能会访问一个内存中不存在的东西,因此会出错; 此外,即使此时对象已经实例化,非静态成员已经存在,静态成员函数依然不能访问非静态成员,这就是权限问题,如果一定要访问,可通过对象参数进行传递。 由上可知:使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取 更新后的相同的值,这样可以提高时间效率。 静态数据成员的使用方法和注意事项如下: 1

C++类中静态变量和静态方法使用介绍

早过忘川 提交于 2020-02-22 18:31:16
静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。   静态数据成员   在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。   使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。   静态数据成员的使用方法和注意事项如下:   1、静态数据成员在定义或说明时前面加关键字static。//静态变量的定义   2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:     <数据类型><类名>::<静态数据成员名>=<值> //静态变量的初始化   这表明: (1) 初始化在类体外进行,而前面不加static,(这点需要注意)以免与一般静态变量或对象相混淆。   (2) 初始化时不加该成员的访问权限控制符private,public等。   (3) 初始化时使用作用域运算符来标明它所属类,因此