JAVA自学教程之线程的同步问题



JAVA自学教程之线程的同步。

继续以卖票为例

 

一、线程安全问题的解决

同步的第一种表现形式:同步代码块

 

思路:


将多条操作共享数据的线程代码封装起来,当有线程在执行这些代码的时候,其他线程是不允许参与运算的,必须要当期线程把代码执行完毕后,其他线程才可以参与运算

在java中用同步代码块解决这个问题

同步代码块格式:

synchronized(对象)

{

需要被同步的代码部分

}

  1. class Ticket im[......]

Read more

JAVA自学教程之单例设计模式涉及的多线程问题

JAVA自学教程之单例设计模式涉及的多线程问题。

一、多线程下的单例设计模式

 

利用双重判断的形式解决懒汉式的安全问题和效率问题

 

  1. //饿汉式
  2. /*class Single
  3. {
  4.     private static final Single t = new Single();
  5.     private Single(){} //private构造函数,确保其他类对象不能直接new一个该对象实例
  6.     public static Single g[......]

Read more

Spring3.0 AOP 详解

Spring3.0 AOP 详解

一、什么是 AOP。

AOP(Aspect Orient Programming),也就是面向切面编程。可以这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度考虑程序运行过程

 

二、AOP 的作用。

常常通过 AOP 来处理一些具有横切性质的系统性服务,如事物管理、安全检查、缓存、对象池管理等,AOP 已经成为一种非常常用的解决方案。

 

三、AOP 的实现原理。

<img src="AOP代理.jpg" />

如图:AOP 实际上是由目标类的代理类实现的AOP 代理其实是由 AOP 框架动态生成的一个对象[......]

Read more

Spring原理

Spring原理

一、 IoC(Inversion of control): 控制反转
概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系
核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean

 

 

内部最核心的就是IOC
动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射
反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml  Spring的配置 文件来动态的创建对象,和调用对象里的方法的 。

 

二、AO[......]

Read more

hibernate基本的缓存原理

Hibernate缓存分为二级,第一级存放于session中称为一级缓存,默认带有且不能卸载。

第二级是由sessionFactory控制的进程级缓存。是全局共享的缓存,凡是会调用二级缓存的查询方法 都会从中受益。只有经正确的配置后二级缓存才会发挥作用。同时在进行条件查询时必须使用相应的方法才能从缓存中获取数据。比如Query.iterate()方法、load、get方法等。必须注意的是session.find方法永远是从数据库中获取数据,不会从二级缓存中获取数据,即便其中有其所需要的数据也是如此。
查询时使用缓存的实现过程为:首先查询一级缓存中是否具有需要的数据,如果[......]

Read more

Servlet过滤器原理分析

Servlet过滤器原理分析。

Servlet过滤器是J2EE Web应用程序级的Java代码组件,是一种类似于Servlet,由窗口管理的对象,它能够以声明的方式插入到HTTP请求响应的过程中。它们拦截和响应,以便查看、提取或以某各方式操作正在客户机和服务器之间交换的数据。它是通常封装了一些功能的类,实现了对Web应用程序中的预处理和后期逻辑。
  过滤器提供一种面向对象的模块化机制,用以将公共任务封装到可插入的组件中。这些组件通过Web部署描述符(web.xml)配置文件恶声明,可以方便地添加和删除过滤器,无需改动任何应用程序代码或JSP页面,并由Servlet窗口进行动态调用。通过在[......]

Read more

SQL注入原理及PreparedStatement的使用

SQL注入原理及PreparedStatement的使用。

SQL注射原理

SQL注射能使攻击者绕过认证机制,完全控制远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web应用在后台都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起的。如果开发人员不细心的话,用户数据就有可能被解释成命令,这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。
登陆验证
现在以一个需要用户身份认证的简单的Web应用程序为例进行讲解。假[......]

Read more

JAVA的动态代理

JAVA的动态代理 。

JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。

&[......]

Read more

Hibernate常用的主键生成策略的原理、特点、应用场合

Hibernate常用的主键生成策略的原理、特点、应用场合。

关于映射文件的问题下次再介绍,这次主要总结hibernate常用主键生成策略。

(1)increment

a)对主键值采取自动顺序增长的方式生成新的主键,值默认从1开始。

b)原理:在当前应用实例中维持一个变量,以保存当前最大值,之后每次需要生成主键值的时候将此值加1作为主键.不依赖于底层的数据库,因此所有的数据库都可以使用

c)缺点:通过increment的生成主键的原理可推断,此种主键生成策略不适用于集群、同一时段大量用户并发访问的系统,既当大量用户同一时间段同时进行插入操作的时候,可能存在取得相同[......]

Read more

iBatis 入门实例教程

iBatis 入门实例教程。

iBatis 简介:

iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了。

官网为:http://www.mybatis.org/

 

今天学习下ibatis ,要学习他,首先需要搭建ibatis需要的环境

1.导入相关的jar包

2.编写配置文件

jdbc连接的属性文件

总配置文件,Sql[......]

Read more