`
huangyongxing310
  • 浏览: 507265 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论
文章列表
Servlet的多线程和线程安全 Servlet的生命周期 1.Servlet的生命周期有四个阶段:加载并实例化、初始化、请求处理、销毁。 加载并实例化 1.Servlet容器(如:Tomcat)负责加载和实例化Servelt。当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。 2.当Servlet容器启动后,Servlet容器通过类加载器来加载Servlet类,加载完成后再new一个Servlet对象来完成实例化。 初始化 1.在Servlet实例化之后,容器将调用init()方法,并传递实现ServletConfig接口的 ...
Spring filter的用法 1.Filter技术是servlet 2.3新增加的功能。它能够对Servlet容器的请求和响应对象进行检查和修改。 2.过滤器是JavaEE标准,采用函数回调的方式进行。是在请求进入容器之后,还未进入Servlet之前进行预处理,并且在请求结束返回给前端这之间进行后期处理。 3.Filter本身并不生成请求和响应对象,只是提供过滤功能。 4.Filter能够在Servlet被调用之前检查Request对象,并修改Request Header和Request内容;在Servlet被调用之后检查Response对象,修改Response Header和Respo ...
Javascript函数 定义函数 使用function关键字来定义函数,分为两种形式: 1.声明式函数定义 function add(m,n) { alert(m+n); } 这种方式等同于构造一个Function类的实例的方式: var add = new Function("m", "n", "alert(m+n);"); 2.函数表达式 //将一个匿名函数赋值给变量add var add = function(m, n) { alert(m + n); }; add(1, 2);//3 //函数表达 ...
spring kafka 配置详解 使用spring-integration-kafka发送消息 1.Outbound Channel Adapter用来发送消息到Kafka。 2.消息从Spring Integration Channel中发出,一旦配置好这个Channel,就可以利用这个Channel往Kafka发消息。(MessageChannel类)。 1.int:channel是配置Spring Integration Channel, 此channel基于queue。 2.int-kafka:outbound-channel-adapter是outbound-channel- ...
spring properties文件相关 1.properties文件放resources目录下 2.spring容器中最多只能定义一个context:property-placeholder。所以引入多个文件要用正则表达式进行,如: <context:property-placeholder location="classpath:/*.properties" /> 3.使用变量方式 topic="${kafkaConfig.device_report}" //kafkaConfig.properties里的kafkaConfig.d ...
javascript匿名函数与闭包 匿名函数 1.就是没有名字的函数 (function(x, y){ alert(x + y); })(2, 3); 创建了一个匿名函数(在第一个括号内),第二个括号用于调用该匿名函数,并传入参数。 闭包 1.使用闭包可以大大减少我们的代码量 ...
JavaScript 作用域和作用域链 JavaScript作用域 1.作用域就是变量与函数的可访问范围 2.即作用域控制着变量与函数的可见性和生命周期 变量的作用域有全局作用域和局部作用域两种 全局作用域 1.最外层函数和在最外层函数外面定义的变量拥有全局作用域 2.所有末定义直接赋值的变量自动声明为拥有全局作用域(就是没有var开头就直接赋值了,不管在那里(函数内、外)直接赋值) 3.所有window对象的属性拥有全局作用域,例如window.name、window.location、window.top等 局部作用域 1.局部作用域一般只在固定的代码片段内可访问到,最常见的例如 ...
spring-integration-kafka简单应用 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion> ...
java连接池实现原理 1.连接池管理器负责管理连接。 2.实例化连接池时就创建好相关的连接,并放入连接池。 3.应用使用连接就直接从连接池中得到一个连接,用完就归还给连接池。 4.连接断开后,由连接池管理器进行新连接的创建。 5.连接断开必然会出然异常的发生。 连接池的目的: 1.减少应用每次使用时再进行连接的时间(建立连接是需要时间的(TCP)),提高效率。 连接是通过阻塞队列的方式进行存放的,一个存放空闲的连接,另一个存放使用着的连接 阻塞队列的实现是通过wait/notify方式实现的 锁的阻塞实现是通过LockSupport来实现的 参考原文:http://www. ...
Java 线程池工作原理 背景和目的: 1.假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。 2.如果每个任 ...
java ReentrantLock应用 ReentrantLock可重入锁 1.使用ReentrantLock接口要比使用synchronized关键字效率高一些 不公平锁与公平锁的区别: private ReentrantLock lock = new ReentrantLock(); //参数默认false,不公平锁 private ReentrantLock lock = new ReentrantLock(true); //公平锁 1.公平情况下,操作会排一个队按顺序执行,来保证执行顺序。(会消耗更多的时间来排队) 2.不公平情况下,是无序状态允许插队,jvm会自动计算如何处 ...
Javascript执行步骤与顺序 1.JavaScript是单线程 执行步骤: step 1.  读入第一个代码块(以<script>指令串</script>)。 step 2.  做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5。 step 3.  对var变量和function定义做“预编译处理”(永远不会报错的,因为只解析正确的声明)。 step 4.  执行代码段,有错则报错(比如变量未定义)。 step 5.  如果还有下一个代码段,则读入下一个代码段,重复step2。 step6. 结束。 执行原理: (1)所有任务都在主线程 ...
kafka java原生简单应用 KafkaTestMain.java package com; public class KafkaTestMain extends Thread{ private static String topic = "test-xing"; public static void main(String[] args) { new KafkaConsumer(topic).start();// 消费者 new KafkaProducer(topic).start();// 生 ...
开闭原则(OCP) 1.开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的、灵活的系统。 2.对扩展开放,对修改关闭, 开 指的是可以在源代码的基础上进行扩展,比如继承,接口,抽象 ...
悲观锁和乐观锁 悲观锁 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁, 这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁, 写锁等,都是在做操作之前先上锁。 乐观锁 乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候 会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量, 像数据库如果提供类 ...
Global site tag (gtag.js) - Google Analytics