context

tomcat架构分析(概览)

瘦欲@ 提交于 2020-02-06 19:57:42
出处: http://gearever.iteye.com Tomcat是目前应用比较多的servlet容器。关于tomcat本身的特点及介绍,网上已经有很多描述了,这里不再赘述。Tomcat除了能够支撑通常的web app外,其本身高度模块化的架构体系,也能带来最大限度的可扩展性。目前tomcat版本已经衍生到tomcat7,但是主流的版本还是tomcat6。此系列架构体系介绍还是以tomcat6为蓝本。 Tomcat是有一系列逻辑模块组织而成,这些模块主要包括: 核心架构模块,例如Server,Service,engine,host和context及wrapper等 网络接口模块connector log模块 session管理模块 jasper模块 naming模块 JMX模块 权限控制模块 …… 这些模块会在相关的文档里逐一描述,本篇文档以介绍核心架构模块为主。 核心架构模块说明 核心架构模块之间是层层包含关系。例如可以说Service是Server的子组件,Server是Service的父组件。在server.xml已经非常清晰的定义了这些组件之间的关系及配置。 需要强调的是Service中配置了实际工作的Engine,同时配置了用来处理时间业务的线程组Executor(如果没有配置则用系统默认的WorkThread模式的线程组)

SpringCloud学习之Zuul

心不动则不痛 提交于 2020-02-06 16:05:34
1. zuul   zuul是Netflix设计用来为所有面向设备、web网站提供服务的所有应用的门面,zuul可以提供动态路由、监控、弹性扩展、安全认证等服务,他还可以根据需求将请求路由到多个应用中。 2. zuul的作用 (1)要进入一个服务本身,很明显我们没有特别好的办法,直接输入IP地址+端口号,我们知道这样的做法很糟糕的,这样的做法大有问题,首先暴露了我们实体机器的IP地址,别人一看你的IP地址就知道服务部署在哪里,让别人很方便的进行攻击操作。   (2)我们这么多服务,我们是不是要挨个调用它呀,我们这里假设做了个权限认证,我们每一个客户访问的都是跑在不同机器上的不同的JVM上的服务程序,我们每一个服务都需要一个服务认证,这样做比较繁琐。 那么我们这时候面临着这两个极其重要的问题,这时我们就需要一个办法解决它们。首先,我们看IP地址的暴露和IP地址写死后带来的单点问题,我是不是对这么服务本身我也要动态的维护它服务的列表呀,我需要调用这服务本身,是不是也要一个负载均衡一样的玩意, 还有关于IP地址暴露的玩意,我是不是需要做一个代理呀,像Nginx的反向代理一样的东西,还有这玩意上部署公共的模块,比如所有入口的权限校验的东西。因此我们现在需要Zuul API网关。它就解决了上面的问题,你想调用某个服务,它会给你映射,把你服务的IP地址映射成 某个路径,你输入该路径,它匹配到了

【Flutter】入门14-对话框

十年热恋 提交于 2020-02-06 11:51:02
SimpleDialog String _choice = '请选择'; Future _openSimpleDialog() async { final option = await showDialog( context: context, builder: (BuildContext context) { return SimpleDialog( title: Text('请选择'), children: <Widget>[ SimpleDialogOption( child: Text('item1'), onPressed: () { //关闭对话框并放回 "item1" Navigator.pop(context, "item1"); }, ), SimpleDialogOption( child: Text('item2'), onPressed: () { Navigator.pop(context, 'item2'); }, ), FlatButton( onPressed: () { Navigator.pop(context, '请选择'); }, child: Text('取消')) ], ); }); setState(() { _choice = option; }); } @override Widget build(BuildContext

canvas简单图片处理(灰色处理)

…衆ロ難τιáo~ 提交于 2020-02-06 07:15:36
反色处理写的比较简单,灰色处理写了一些注释 <!DOCTYPE html> <html > <head > < meta charset = "UTF-8" > <title ></title > </head > <body > < canvas id ="board" width ="1000" height ="1000" style =" background : lightgrey ;" ></ canvas > </body > </html > < script type ="text/javascript" > var board = document.getElementById( "board"); var context = board.getContext( "2d"); //图像处理必须运行在服务器环境 var aImg = new Image(); aImg.src = "img/7.jpg" ; context.beginPath(); aImg. onload = function (){ //绘制一张图片到 canvas 画布 //三个参数分别为 图片对象 画布位置(X轴 Y轴) context.drawImage(aImg, 10, 10); //getimageData--获取图片指定区域的像素 var imageDatas = context

AutoMapper(三)

十年热恋 提交于 2020-02-06 06:41:33
返回总目录 自定义类型转换 有时,需要完全控制一个类型到另一个类型的转换。一个类型一点都不像另一个类型,而且转换函数已经存在了,在这种情况下,你想要从一个“宽松”的类型转换成一个更强壮的类型,例如一个string的源类型到一个int32的目标类型。 这里有两个类Source和Destination,要把前者映射到后者,代码如下: public class Source { public string Value1 { get; set; } public string Value2 { get; set; } public string Value3 { get; set; } } public class Destination { public int Value1 { get; set; } public DateTime Value2 { get; set; } public Type Value3 { get; set; } } 截至发稿前,官方文档这样描述的 “因为AutoMapper不清楚从string到int,Datetime或Type的映射,如果要尝试映射的话,AutoMapper就会抛出异常(在映射时和配置检查时)”。 为了创建 这些类型的映射,我们必须提供自定义的类型转换器,我们有三种方法这样做: void ConvertUsing(Func<TSource,

Canvas入门03-绘制弧线和圆

半城伤御伤魂 提交于 2020-02-06 05:18:39
绘制弧线的API: context.arc(centerx:number, centery: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean) 参数说明: centerX 圆心坐标x centerY 圆心坐标y radius 圆半径 startAngle 起始弧度 endAngle 结束弧度 anticlockwise 是否逆时针绘制,默认false,也就是顺时针绘制 对于一个圆来说,0弧度是从水平方向右侧开始的。 var canvas = document.getElementById('canvas'); canvas.width = 1024; canvas.height = 768; if (canvas.getContext('2d')) { var context = canvas.getContext('2d'); console.log(context); // CanvasRenderingContext2D // context.arc(300, 300, 200, 0, 1.5 * Math.PI); // context.arc(300, 300, 200, 0, 1.5 * Math.PI, true); // context.arc

jQuery.proxy() 函数详解

房东的猫 提交于 2020-02-06 05:08:02
jQuery.proxy() 函数用于 改变函数的上下文 。 你可以将指定函数传入该函数,该函数将返回一个新的函数,其执行代码不变,但函数内部的上下文( this )已经被更改为指定值。 该函数属于 全局 的 jQuery 对象。 语法 jQuery 1.4 新增该静态函数。 jQuery.proxy() 函数有如下两种用法: 用法一 : JavaScript: jQuery.proxy( function, context [, additionalArguments ] ) 将函数 function 的上下文对象更改为指定的 context 。 用法二 : JavaScript: jQuery.proxy( context, name [, additionalArguments ] ) 将名为 name 的函数的上下文更改为指定的 context 。函数 name 应是 context 对象的一个属性。 参数 请根据前面语法部分所定义的参数名称查找对应的参数。 参数 描述 function Function类型需要更改上下文对象的函数。 context 任意类型指定为函数设置的上下文对象。 name String类型需要更改上下文对象的函数名称(它应该是context的一个属性)。 additionalArguments 可选/任意类型指定调用该函数时需要传入的参数

Spring条件注解@Conditional

Deadly 提交于 2020-02-06 01:00:18
@Conditional是Spring4新提供的注解,它的作用是根据某个条件创建特定的Bean,通过实现Condition接口,并重写matches接口来构造判断条件。总的来说,就是根据特定条件来控制Bean的创建行为,这样我们可以利用这个特性进行一些自动的配置。   本文将分为三大部分,@Conditional源码的介绍、Condition的使用示例和@Conditional的扩展注解的介绍。 一、@Conditional的源码 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Conditional { /** * All {@link Condition Conditions} that must {@linkplain Condition#matches match} * in order for the component to be registered. */ Class<? extends Condition>[] value(); } 从源码中可以看到,@Conditional注解可以用在类和方法上,需要传入一个实现了Condition接口class数组。 二、代码示例

学习使用Spring实例化Bean

烈酒焚心 提交于 2020-02-05 23:44:54
学习使用Spring实例化Bean 1.通过默认构造方法实例化Bean 创建代码 package com.imooc.spring.ioc.class05; public class Bean1 { public Bean1() { System.out.println("Bean1.Bean1"); } } <bean class="com.imooc.spring.ioc.class05.Bean1" name="bean1_1,bean1_2" id ="bean1"></bean> 2.通过静态方法实例化Bean 创建代码 Bean2.java package com.imooc.spring.ioc.class05; public class Bean2 { public Bean2() { System.out.println("Bean2.Bean2"); } } Bean2Factory.java public class Bean2Factory { public static Bean2 getBean2() { return new Bean2(); } } 为了调用此方法: 相当于写出如下公式: Bean2 bean2 = Bean2Factory.getBean2(); 在spring.xml中配置如下: <bean class="com.imooc

安卓调用系统自带浏览器打开网页的实现方法

你说的曾经没有我的故事 提交于 2020-02-05 14:02:30
实现方案 备注: 下面是通过给Context添加扩展方法实现的,如果不这样,也可以增加Context入参,调用Context入参的startActivity方法. fun Context.openBrowser(url: String) { val intent = Intent() intent.action = "android.intent.action.VIEW" intent.data = Uri.parse(url) startActivity(intent) } 来源: CSDN 作者: 程序园中猿 链接: https://blog.csdn.net/yinxing2008/article/details/104179883