目录
前言
Spring简介
Spring体系结构
一、IOC控制反转思想
二、IOC自定义对象容器
1. 创建实体类,Dao接口,实现类
2. 创建配置文件bean.properties
3. 创建容器管理类
4. 创建StudentService类
5. 测试方法
6. 测试结果
前言
Spring简介
Spring是一个开源框架,为简化企业级开发而生。它以IOC(控制反转)和AOP(面向切面)为思想内核,提供了控制层SpringMVC、数据层SpringData、服务层事务管理等众多技术,并可以整合众多第三方框架。Spring将很多复杂的代码变得优雅简洁,有效的降低代码的耦合度,极大的方便项目的后期维护、升级和扩展。 Spring官网地址:https://spring.io/
Spring官方网站:
Spring体系结构
Spring框架根据不同的功能被划分成了多个模块,这些模块可以满足一切企业级应用开发的需求,在开发过程中可以根据需求有选择性地使用所需要的模块。
Core Container:Spring核心模块,任何功能的使用都离不开该模块,是其他模块建立的基础。
Data Access/Integration:该模块提供了数据持久化的相应功能。
Web:该模块提供了web开发的相应功能。
AOP:提供了面向切面编程实现
Aspects:提供与AspectJ框架的集成,该框架是一个面向切面编程框架。
Instrumentation:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。
Messaging:为Spring框架集成一些基础的报文传送应用
Test:提供与测试框架的集成
一、IOC控制反转思想
控制反转就是让框架创建对象
IOC(Inversion of Control) :程序将创建对象的权利交给框架。之前在开发过程中,对象实例的创建是由调用者管理的,代码如下:
public interface StudentDao {
// 根据id查询学生
Student findById(int id);
}
public class StudentDaoImpl implements StudentDao{
@Override
public Student findById(int id) {
// 模拟从数据库查找出学生
return new Student(1,"程序员","北京");
}
}
public class StudentService {
public Student findStudentById(int id){
// 此处就是调用者在创建对象
StudentDao studentDao = newStudentDaoImpl();
return studentDao.findById(1);
}
}
这种写法有两个缺点:
浪费资源 :StudentService调用方法时即会创建一个对象,如果不断调用方法则会创建大量StudentDao对象。
代码耦合度高 :假设随着开发,我们创建了StudentDao另一个更加完善的实现类StudentDaoImpl2,如果在StudentService中想使用StudentDaoImpl2,则必须修改源码。
而IOC思想是将创建对象的权利交给框架,框架会帮助我们创建对象,分配对象的使用,控制权由程序代码转移到了框架中,控制权发生了反转,这就是Spring的IOC思想。而IOC思想可以完美的解决以上两个问题。
二、IOC自定义对象容器
接下来我们通过一段代码模拟IOC思想。创建一个集合容器,先将对象创建出来放到容器中,需要使用对象时,只需要从容器中获取对象即可,而不需要重新创建,此时容器就是对象的管理者。
1. 创建实体类,Dao接口,实现类
Student实体类
package com.example.pojo;
public class Student {
private int id;
private String name;
private String address;
public Student(int id, String name, String address) {
this.id = id;
this.name = name;
this.address = address;
}
public Student(){}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student[ " +
"id=" + id +
", name='" + name + '\'' +
", address='" + address + '\'' +
" ]";
}
}
StudentDao接口
package com.example.dao;
import com.example.pojo.Student;
public interface StudentDao {
// 根据id查询学生
Student findById(int id);
}
StudentDao接口实现类1:StudentDaoImpl1
package com.example.dao;
import com.example.pojo.Student;
public class StudentDaoImpl1 implements StudentDao{
public StudentDaoImpl1() {
}
public StudentDaoImpl1(int a){};
@Override
public Student findById(int id){
return new Student(id,"程序员","北京");
}
}
StudentDao接口实现类1:StudentDaoImpl2
package com.example.dao;
import com.example.pojo.Student;
public class StudentDaoImpl2 implements StudentDao{
@Override
public Student findById(int id) {
// 模拟根据ID查询学生
System.out.println("新方法!!!");
return new Student(id,"程序员","上海");
}
}
2. 创建配置文件bean.properties
该文件中定义管理的对象
studentDao=com.example.dao.StudentDaoImpl2
3. 创建容器管理类
package com.example;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class Container {
static Map map = new HashMap<>();
static {
// 读取配置文件
InputStream is = Container.class.getClassLoader().getResourceAsStream("bean.properties");
Properties properties = new Properties();
try{
properties.load(is);
}catch (Exception e){
e.printStackTrace();
}
// 遍历配置文件的所有配置
Enumeration keys = properties.keys();
while(keys.hasMoreElements()){
String key = keys.nextElement().toString();
String value = properties.getProperty(key);
try{
Object o = Class.forName(value).newInstance();
map.put(key,o);
}catch (Exception e){
e.printStackTrace();
}
}
}
// 从容器中获取对象
public static Object getBean(String key){
return map.get(key);
}
}
4. 创建StudentService类
package com.example.service;
import com.example.Container;
import com.example.dao.StudentDao;
import com.example.domain.Student;
public class StudentService {
public Student findStudentById(int id){
// 从容器中获取对象
StudentDao studentDao = (StudentDao) Container.getBean("studentDao");
System.out.println(studentDao.hashCode());
return studentDao.findById(id);
}
}
5. 测试方法
package com.example.test;
import com.example.Container;
import com.example.service.StudentService;
public class Test {
public static void main(String[] args) {
StudentService studentService = new StudentService();
System.out.println(studentService.findStudentById(1));
System.out.println(studentService.findStudentById(1));
}
}
6. 测试结果
StudentService从容器中每次拿到的都是同一个StudentDao对象,节约了资源。 如果想使用StudentDaoImpl2对象,只需要修改bean.properties的内容为:
studentDao=com.itbaizhan.dao.StudentDaoImpl2
即可,无需修改Java源码。
或者如果不想new StudentService,也可以在bean.properties加上一行:
studentService = com.example.service.StudentService
你可能感兴趣的:(ssm框架,#,Spring,java,maven,spring,mybatis)
JavaScript 番茄工作法倒计时器:轻松实现时间管理,新手友好教程前端倒计时设计案例:用 JavaScript 实现番茄工作法,代码全解析从零开始构建番茄工作法倒计时器:JavaScript
南北极之间
前端进阶练手实战 javascript 前端 开发语言 1024程序员节 番茄工作法 倒计时
效果图:博客教程:用JavaScript构建番茄工作法倒计时器目录项目介绍工具与环境准备项目结构HTML构建页面结构CSS美化倒计时页面JavaScript实现倒计时与番茄工作法功能总结1.项目介绍在本教程中,我们将使用HTML、CSS和JavaScript创建一个带有番茄工作法的倒计时器。番茄工作法是一种有效的时间管理方法,将工作时间分为25分钟的工作时间和5分钟的休息时间循环。你将学习如何:使
Vue01
memorycx
vue.js javascript ecmascript
vuevue基础vue-clivue-routervuexelement-uivue3vue基础vue是什么一套用于构建用户界面的渐进式JavaScript框架采用组件化模式,提高diamagnetic复用率,让代码更好维护声明式编码,让编码人员无需直接操作DOM,提高开发效率去vue官网下载开发版本,然后在html文件中引入//这是在头部引入细节:root容器里的代码依然符合html规范,只不过
Java 中 Math.pow 的用法
Yuan_o_
JavaSE初阶 java 开发语言
常见用法pow是静态方法,要用类名Math来访问该方法,如下:Math.pow(底数a,指数b)表示a的b次方,返回类型为double应用:用Math.pow()实现数组的交错求和publicstaticvoidmain(String[]args){intn=0;inta=0;int[]b={1,2,3,4,5,6,7,8,9};for(inti=0;i
Java中的泛型是什么?它有什么作用?
python资深爱好者
java java
Java中的泛型是什么?它有什么作用?在Java中,泛型(Generics)是一个强大的工具,它允许你在定义类、接口和方法时使用类型参数(typeparameters)。这些类型参数在实例化时会被具体的类型所替换,从而实现了代码的重用和类型安全。以下是关于Java中泛型的一些详细解释:泛型的基本概念类型参数:在类、接口或方法声明中使用的特殊类型变量,用于指定类或方法所操作的对象类型。类型参数以大写
HarmonyOS学习第2天: 解锁语言与框架的无限可能
老三不说话、
HarmonyOS开发 harmonyos 学习 华为
HarmonyOS开发语言大盘点HarmonyOS为开发者提供了丰富的开发语言选择,每种语言都有其独特的优势和适用场景,能够满足不同类型应用开发的需求。Java:作为一种广泛使用且成熟的编程语言,Java在HarmonyOS开发中占据重要地位。它拥有卓越的跨平台能力,一次编写,到处运行,这使得开发者能够高效地开发出适用于多种设备的应用。其丰富的API库涵盖了网络、I/O、图形用户界面等多个方面,为
高效Java对象池:Commons-Pool2入门与进阶
中國移动丶移不动
java 开发语言 spring maven 后端
高效Java对象池:Commons-Pool2入门与进阶1.什么是池化技术以及池化技术的核心思想池化技术(Pooling)是一种通过预先创建并管理可复用资源来提升系统性能和资源利用率的设计思想。其核心是避免重复创建和销毁资源的开销,通过共享和复用资源来减少系统压力。池化技术的核心思想资源复用:重复利用已分配的资源(对象、线程、连接等),避免频繁创建和销毁。预先分配:在系统初始化时或按需提前创建一批
SpringCloud Alibaba系列——6Dubbo的SPI机制分析
木木_2024
SpringCloud alibaba系列 spring cloud dubbo java spring boot 微服务
目标理解Dubbo的SPI机制能口述Dubbo和JDK中的SPI机制的区别第1章SPI简介SPI,全称为ServiceProviderInterface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。我们先通过一个很简单的例子来看下
Java 基础易错面试题
小新19
java面试题 java 面试
1.包装类型的缓存机制了解么?Java基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。Byte,Short,Integer,Long这4种包装类默认创建了数值[-128,127]的相应类型的缓存数据,Character创建了数值在[0,127]范围的缓存数据,Boolean直接返回TrueorFalse,如果超出对应范围仍然会去创建新的对象,缓存的范围区间的大小只是在性能和资源之间的权衡
Node.js 完全教程:从入门到精通
web15117360223
面试 学习路线 阿里巴巴 node.js
Node.js完全教程:从入门到精通Node.js是一个基于ChromeV8引擎的JavaScript运行环境,允许开发者在服务器端使用JavaScript。它的非阻塞I/O和事件驱动架构使得Node.js非常适合于构建高性能的网络应用。本文将详细介绍Node.js的安装、基本语法、模块系统、异步编程、Express框架、数据库操作等内容,帮助你从入门到精通Node.js。1.Node.js简介N
一文读懂 Spring、Spring Boot 和 Spring Cloud
刘小炮吖i
Java后端开发面试题 spring spring spring boot spring cloud 面试
Spring:Spring是一个开源的轻量级Java开发框架,犹如一座大厦的基石,为整个Java开发领域奠定了坚实的基础。它的核心灵魂是控制反转(IoC)和面向切面编程(AOP)。IoC(InversionofControl,控制反转)IoC,即控制反转,是一种极具智慧的设计思想。在传统的软件开发模式中,对象就像是一个个独立的个体,它们不仅要负责自己的业务逻辑,还要操心自己所依赖的对象的创建和管理
Java基础常见的面试题(易错!!)
刘小炮吖i
Java后端开发面试题 Java 面试 java 职场和发展
面试题一:为什么Java不支持多继承Java不支持多继承主要是为避免“菱形继承问题”(又称“钻石问题”),即一个子类从多个父类继承到同名方法或属性时,编译器无法确定该调用哪个父类的成员。同时,多继承会使类的层次结构变得复杂,增加代码维护难度。Java通过接口来实现类似多继承的功能,一个类可以实现多个接口,从而获得多个行为的组合。面试题二:==和equals有什么区别==:对于基本数据类型,比较的是
mybatisPlus打印sql配置
m0_74823683
面试 学习路线 阿里巴巴 sql 数据库
MyBatis-Plus提供了方便的配置方式来打印SQL查询语句,以便进行调试和性能分析。可以通过配置log来输出SQL语句以及执行的参数。方法1:通过application.properties或application.yml配置打印SQL可以通过配置application.properties或application.yml文件来启用MyBatis-Plus的SQL打印功能。1.1在appli
Haxe:OpenFL框架与Haxe游戏开发_2024-07-15_07-13-55.Tex
chenjj4003
游戏开发2 网络 游戏引擎 c++ 开发语言 深度学习
Haxe:OpenFL框架与Haxe游戏开发Haxe简介Haxe语言概述Haxe是一种开源的、多范式编程语言,它被设计为一种高级语言,用于编写跨平台的应用程序。Haxe的独特之处在于它的编译器,能够将Haxe代码编译成多种目标语言,包括JavaScript、C++、Java、PHP、Python、C#和ActionScript。这种能力使得开发者能够使用相同的代码库为不同的平台生成代码,极大地提高
CF 58A.Chat room(Java实现)
Dr_Si
java 算法 开发语言
问题分析输入一个字符串,判断这个字符串是否能按序组成“hello”。思路分析题目说的意思是任意删除字母,能否组成"hello",实际就是判断'h'、'e'、'l'、'o'的下标是否一个比一个大,同时看'e'和'o'之间是否有两个'l'。这里我使用了indexof函数,判断'h'的首次出现位置,确认有‘h’时就使用substring函数删掉前面的所有字符,再判断‘e’的位置,同理删除前面的所有字符,
java数学函数的库函数,Java数学函数Math类常用方法~
weixin_39976499
java数学函数的库函数
Java数学函数Math类常用方法~Thorn•2019年04月15日一.三角函数方法Math.PI=**π**Math.E=自然对数的底sin/cos/tan(radians)--返回以弧度位单位的角度的三角正弦/余弦/正切函数值toRadians(degree)--把度的单位转换为弧度toDgress(radians)--把弧度的单位转换为度asin/acos/atan(radians)--返
<tauri><rust><GUI>基于rust和tauri的图片显示程序(本地图片的加载、显示、保存)
机构师
rust 开发语言 后端 tauri javascript
前言本文是基于rust和tauri,由于tauri是前、后端结合的GUI框架,既可以直接生成包含前端代码的文件,也可以在已有的前端项目上集成tauri框架,将前端页面化为桌面GUI。环境配置系统:windows10平台:visualstudiocode语言:rust、javascript库:tauri2.0概述本文基于tauri框架,创建一个图片显示器程序。要实现的功能是,如何从本地路径加载、显示
深入解析Spring Boot中的@ConfigurationProperties注解
m0_51274464
面试 学习路线 阿里巴巴 spring boot java 后端
深入解析SpringBoot中的@ConfigurationProperties注解在SpringBoot框架中,配置管理是一个核心功能。SpringBoot提供了多种方式来处理外部配置,其中@ConfigurationProperties注解是一个非常强大且灵活的工具。本文将深入探讨@ConfigurationProperties注解的概念、用法、工作原理、配置绑定、类型安全以及如何在实际开发中
JAVA基础函数库集合
PHP(Mr. Hamster)
Java java
|多个参数类型选择[]被包含参数为选填Systemin系统输入out系统输出arraycopy(a,0,b,2,3)数组复制原数组原数组起始下标目标数组目标数组起始下标复制长度currentTimeMillis()获取系统毫秒级时间gc()通知GC垃圾回收机制回收内存执行时间由JVM决定java.net.ServerSocketjava.net.Socketaccept()返回一个socket实例
Java线程池入门02
StarPlatinum2
Java java 开发语言
1.如何使用原生方式创建线程池ThreadPoolExecutor的构造函数ThreadPoolExecutor(int,int,long,TimeUnit,BlockingQueue)ThreadPoolExecutor(int,int,long,TimeUnit,BlockingQueue,ThreadFactory)ThreadPoolExecutor(int,int,long,TimeUn
1.10 常量特定方法
StarPlatinum2
onJava进阶版读书笔记 java 开发语言
Java的枚举机制可以通过为每个枚举实例编写不同的方法,来赋予它们不同的行为。packagewww.com.cat.chapter01;importjava.util.Arrays;publicenumConstantSpecificMethod{QU{@Overridevoidaction(){System.out.println("生死喧嚣,归于寂静");}},SUOLONG{@Overrid
6.1 接口
StarPlatinum2
Java核心技术卷1读书笔记 java 开发语言 笔记
6.1.1接口的概念在java中,接口不是类,而是对希望符合这个接口的类的一组需求。如果你的类符合某个特定的接口,我们会履行这项服务。如Arrays类中的sort方法承诺可以对对象数组进行排序,但要求对象所属的类必须实现Comparable这个接口。下面是Comparable接口中的代码publicinterfaceComparable{publicintcompareTo(To);}Compar
JavaScript系列(86)--现代构建工具详解
ᅟᅠ 一进制
JavaScript javascript rust 开发语言
JavaScript现代构建工具详解现代前端开发离不开构建工具,它们帮助我们处理模块打包、代码转换、资源优化等任务。让我们深入了解主流的构建工具及其应用。构建工具概述小知识:构建工具主要解决代码转换、文件优化、模块打包、自动刷新、代码分割等问题。主流的构建工具包括webpack、Vite、Rollup等,它们各有特点和适用场景。webpack详解//1.webpack配置classWebpackC
ECMAScript6
2401_85112041
作者\/ es6 前端 ecmascript
因此,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现(另外的ECMAScript方言还有Jscript和ActionScript)。日常场合,这两个词是可以互换的ECMAScript是由ECMA(一个类似W3C的标准组织)参与进行标准化的语法规范。ECMAScript定义了:语言语法–语法解析规则、关键字、语句、声明、运算符等类型–布尔型、数字、字符串、
MySQL 数据库作发布系统的存储,一天五万条以上的增量, 预 计运维三年,怎么优化?思维导图 代码示例(java 架构)
用心去追梦
数据库 mysql 运维
对于一个每天有五万条以上增量、预计运维三年的MySQL发布系统,优化和规划是非常重要的。这不仅涉及到数据库本身的性能优化,还包括架构设计、硬件选择、监控与维护等多个方面。以下是一些建议和策略:优化策略数据库架构设计分库分表(Sharding):将数据分散到多个数据库或表中,减轻单个实例的压力。读写分离:使用主从复制,将读操作分流到从服务器上,减少主服务器负载。缓存机制:利用Redis或Memcac
卷积神经网络八股(一)------20行代码搞定鸢尾花分类
有幸添砖java
opencv
编写不易,未有VIP但想白嫖文章的朋友可以关注我的个人公众号“不秃头的码农”直接查看文章,后台回复java资料、单片机、安卓可免费领取资源。你的支持是我最大的动力!卷积神经网络八股(一)------20行代码搞定鸢尾花分类引言用TensorflowAPI:tf.keras实现神经网络搭建八股Sequential的用法compile的用法fit的用法(batch是每次喂入神经网络的样本数、epoch
Springboot集合RabbitMQ运行过程中报错:Channel shutdown: channel error; protocol method解决方法
珠峰日记
RabbitMQ rabbitmq java
一、问题现象:消息消费后日志中存在以下ERROR二、产生问题背景:在消息的消费处理逻辑中有手动确认消息的操作:三、问题分析:1、默认情况下spring-boot-data-amqp是自动ACK机制,就意味着MQ会在消息发送完毕后,自动帮我们去ACK,然后删除消息的信息。2、消息确认的类型:channel.basicAck(deliveryTag,multiple);consumer处理成功后,通知
java23种设计模式-单例模式
千里码!
后端技术 设计模式 # Java 单例模式 设计模式
单例模式(SingletonPattern)学习笔记定义单例模式属于创建型设计模式,确保一个类只有一个实例,并提供全局访问点。是Java中最简单但实现最复杂的设计模式。适用场景需要控制资源访问(如数据库连接池)全局配置对象日志记录器设备管理器(如打印机服务)缓存系统线程池/连接池管理模式结构类图Singleton-staticinstance:Singleton-Singleton()+stati
Spring MVC框架二:创建第一个MVC程序
嘵奇
Spring MVC spring mvc java
精心整理了最新的面试资料,有需要的可以自行获取点击前往百度网盘获取点击前往夸克网盘获取有两种方式利用配置1、利用IDEA新建一个Maven项目,添加一个web支持2、导入常用的依赖junitjunit4.12org.springframeworkspring-webmvc5.1.9.RELEASEjavax.servletservlet-api2.5javax.servlet.jspjsp-api
面试题:SpringCloud的优缺点有哪些
clownAdam
SpringCloud面试 spring cloud 后端 面试 微服务
面试题:SpringCloud的优缺点有哪些在面试中回答SpringCloud的优缺点时,可以结合其实际应用场景和技术特点,给出简洁、清晰的回答。以下是一个适合面试场景的回答模板:SpringCloud的优点微服务生态完善SpringCloud提供了微服务架构中常见的解决方案,如服务注册与发现(Eureka、Consul)、配置中心(SpringCloudConfig)、负载均衡(Ribbon)、
java输入数量扑克牌排序_java实现简单斗地主(看牌排序)
刘伊一呀
java输入数量扑克牌排序
本文实例为大家共享了java实现简单斗地主的详细代码,供大家参考,详细内容如下第一种方法/***@paramargs*//***项目编码格式:*1.GBK:只支持简体中文*2.GB2312:支持简体和繁体*3.UTF-8:国际公用的编码格式**模拟实现斗地主发牌的过程实现步骤*1.准备一副扑克牌*a.定义一个Map集合用来存放54张扑克map的key(下标)对应的是map的值(扑克)*b.定义一个
java杨辉三角
3213213333332132
java基础
package com.algorithm;
/**
* @Description 杨辉三角
* @author FuJianyong
* 2015-1-22上午10:10:59
*/
public class YangHui {
public static void main(String[] args) {
//初始化二维数组长度
int[][] y
《大话重构》之大布局的辛酸历史
白糖_
重构
《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。
背景
公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中
电驴链接在线视频播放源码
dubinwei
源码 电驴 播放器 视频 ed2k
本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网:
http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。
项目源码:
http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。
项目源码依赖于两个库项目,库项目一链接:
http://git.oschina.
Javascript中函数的toString()方法
周凡杨
JavaScript js toString function object
简述
The toString() method returns a string representing the source code of the function.
简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。
句法
function.
struts处理自定义异常
g21121
struts
很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。
非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。
此处我们用的是非运行时异常,首先定义一个异常LoginException:
/**
* 类描述:登录相
Linux中find常见用法示例
510888780
linux
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
SpringMVC的各种参数绑定方式
Harry642
springMVC 绑定 表单
1. 基本数据类型(以int为例,其他类似):
Controller代码:
@RequestMapping("saysth.do")
public void test(int count) {
}
表单代码:
<form action="saysth.do" method="post&q
Java 获取Oracle ROWID
aijuans
java oracle
A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row.
The oracle.sql.ROWID class i
java获取方法的参数名
antlove
java jdk parameter method reflect
reflect.ClassInformationUtil.java
package reflect;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.Modifier;
import javassist.bytecode.CodeAtt
JAVA正则表达式匹配 查找 替换 提取操作
百合不是茶
java 正则表达式 替换 提取 查找
正则表达式的查找;主要是用到String类中的split();
String str;
str.split();方法中传入按照什么规则截取,返回一个String数组
常见的截取规则:
str.split("\\.")按照.来截取
str.
Java中equals()与hashCode()方法详解
bijian1013
java set equals() hashCode()
一.equals()方法详解
equals()方法在object类中定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I
精通Oracle10编程SQL(4)使用SQL语句
bijian1013
oracle 数据库 plsql
--工资级别表
create table SALGRADE
(
GRADE NUMBER(10),
LOSAL NUMBER(10,2),
HISAL NUMBER(10,2)
)
insert into SALGRADE values(1,0,100);
insert into SALGRADE values(2,100,200);
inser
【Nginx二】Nginx作为静态文件HTTP服务器
bit1129
HTTP服务器
Nginx作为静态文件HTTP服务器
在本地系统中创建/data/www目录,存放html文件(包括index.html)
创建/data/images目录,存放imags图片
在主配置文件中添加http指令
http {
server {
listen 80;
server_name
kafka获得最新partition offset
blackproof
kafka partition offset 最新
kafka获得partition下标,需要用到kafka的simpleconsumer
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.
centos 7安装docker两种方式
ronin47
第一种是采用yum 方式
yum install -y docker
java-60-在O(1)时间删除链表结点
bylijinnan
java
public class DeleteNode_O1_Time {
/**
* Q 60 在O(1)时间删除链表结点
* 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点
*
* Assume the list is:
* head->...->nodeToDelete->mNode->nNode->..
nginx利用proxy_cache来缓存文件
cfyme
cache
user zhangy users;
worker_processes 10;
error_log /var/vlogs/nginx_error.log crit;
pid /var/vlogs/nginx.pid;
#Specifies the value for ma
[JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题
comsci
嵌入式
假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:
string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"
定义一个0整数c,然后用这个整数c去
如何集成支付宝官方文档
dai_lm
android
官方文档下载地址
https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash
集成的必要条件
1. 需要有自己的Server接收支付宝的消息
2. 需要先制作app,然后提交支付宝审核,通过后才能集成
调试的时候估计会真的扣款,请注意
应该在什么时候使用Hadoop
datamachine
hadoop
原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html
存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。
--------------------------------------------万能的分割线--------------------------------
有人问我,“你在大数据和Hado
在GridView中对于有外键的字段使用关联模型进行搜索和排序
dcj3sjt126com
yii
在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord {
...
}
class Post extends CActiveRecord {
...
function relations() {
return array(
'
使用NSString 的格式化大全
dcj3sjt126com
Objective-C
格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c
使用activeX插件对象object滚动有重影
蕃薯耀
activeX插件 滚动有重影
使用activeX插件对象object滚动有重影 <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#
SpringMVC4零配置
hanqunfeng
springmvc4
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。
项目说明如下:
1.db.sql是项目中用到的表,数据库使用的是oracle11g
2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动;
3.默认项目为零配置启动,如果需要更改启动方式,请
《开源框架那点事儿16》:缓存相关代码的演变
j2eetop
开源框架
问题引入
上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。
该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。
当然去看相关实现代代码的时候,大致是下面的样子。
[java]
view plain
copy
print
?
public vo
AngularJS浅析
kvhur
JavaScript
概念
AngularJS is a structural framework for dynamic web apps.
了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm
Directive
扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间
架构师之jdk的bug排查(一)---------------split的点号陷阱
nannan408
split
1.前言.
jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug.
2.代码
String[] paths = "object.object2.prop11".split("'");
System.ou
如何对10亿数据量级的mongoDB作高效的全表扫描
quentinXXZ
mongodb
本文链接:
http://quentinXXZ.iteye.com/blog/2149440
一、正常情况下,不应该有这种需求
首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。
说一下,
C语言算法之水仙花数
qiufeihu
c 算法
/**
* 水仙花数
*/
#include <stdio.h>
#define N 10
int main()
{
int x,y,z;
for(x=1;x<=N;x++)
for(y=0;y<=N;y++)
for(z=0;z<=N;z++)
if(x*100+y*10+z == x*x*x
JSP指令
wyzuomumu
jsp
jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %>
常用的三种指令: page,include,taglib
page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%>
include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include