Struts1.x 调用一个action的大致流程: 1)首先前端发送 *.do的一个action请求(通过点击表单提交按钮,js 事件等): 2)web.xml 文件通过 *.do 找到 ActionServlet 这个中心控制器: 3)中心控制器ActionServlet 查找它的初始化参数(应该是通过 getInitParameter方法) config,找到配置文件(从这点就可知,这个config 是绝对不能改的字符串),默认是struts-config.xml: 4)解析配置文件: 5…
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource2 本博客同步在https://cnodejs.org/topic/56e3be21f5d830306e2f0fd3 本博客同步在http://www.cnblogs.com/papertree/p/5225201.html 2.1 项目代码结构 node 主要的部分有4个[下图最左列就是node项目源码(4.2.2)的根目录]: 1. 原生 js…
<AngularJS>5个实例详解Directive(指令)机制 大漠穷秋 本文整理并扩展了<AngularJS>这本书第六章里面的内容,此书近期即将由电子工业出版社出版,敬请期待口令:Angular 1.一点小说明 指令的作用:实现语义化标签 我们常用的HTML标签是这样的: <div> <span>一点点内容</span> </div> 而使用AngularJS的directive(指令)机制,我们可以实现这样的东西: <t…
详解npm的模块安装机制 依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm) 在一个npm项目下: tree -d命令以树状图的方式列出一个项目下所有依赖的物理结构 npm ls命令以树状图的方式列出一个项目下所有依赖的逻辑结构   以官方文档为例子: 项目example1有两个依赖模块:mod-a模块和mod-c模块: mod-a模块有一个依赖模块mod-b@1.0.0…
Redis详解(六)--哨兵机制 一.概述 Redis Sentinel是一个分布式系统,为Redis提供高可用性解决方案.可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来 接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故 障迁移, 以及选择哪个从服务器作为新的主服务器. Redis 的 Sentinel 系统用于管理多个 Redis 服务器(insta…
前言 JVM 一直都是面试的必考点,大家都知道,但是要把它搞清楚又好像不是特别容易.JVM 的知识点太散,不系统,今天带大家详细的了解一下jvm的运行原理. 正文 1 什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.由一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一个存储方法域等组成.JVM屏蔽了与操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就…
我准备了WEB应用程序及WinForm应用程序,分别在WIN SERVER 2012/2008/2003.Win7/10上实测,以下为实测结果截图: 2012 2008 2003 WIN7 WIN10 .net dll保护系列 -------------------------------------------------------------------------------------------- .NET DLL 保护措施详解(一)(非混淆加密加壳) .NET DLL 保护措施详解…
前面的六篇文章,我们已经讨论了dapm关于动态电源管理的有关知识,包括widget的创建和初始化,widget之间的连接以及widget的上下电顺序等等.本章我们准备讨论dapm框架中的另一个机制:事件机制.通过dapm事件机制,widget可以对它所关心的dapm事件做出反应,这种机制对于扩充widget的能力非常有用,例如,对于那些位于codec之外的widget,好像喇叭功放.外部的前置放大器等等,由于不是使用codec内部的寄存器进行电源控制,我们就必须利用dapm的事件机制,获得相应的…
一   setCookie        bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] ) 参数 说明 举例 name Cookie 的名字. 使用 $_COOKIE['cookiename'] 调用名为 cookiename 的 cookie. value Cookie 的值.此值保存在客户端,不要用来保存敏感数据. 假…
python的垃圾回收机制 一.引子 我们定义变量会申请内存空间来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾)就应该将其占用的内存空间给回收掉,而变量名是访问到变量值的唯一方式,所以当一个变量值没有关联任何变量名时,我们就无法再访问到该变量值了,该变量值就是一个垃圾会被python解释的垃圾回收机制自动回收 二.什么是垃圾回收机制 垃圾回收机制(简称GC)是python解释器自带的一种机制,专门用来回收不可用的变量值所占用的内存空间 三.为什么要用垃圾回收机制 程序运行过…
本文整理并扩展了<AngularJS>这本书第六章里面的内容,此书近期即将由电子工业出版社出版,敬请期待口令:Angular 1.一点小说明 指令的作用:实现语义化标签 我们常用的HTML标签是这样的: <div> <span>一点点内容</span> </div> 而使用AngularJS的directive(指令)机制,我们可以实现这样的东西: <tabpanel> <panel>子面板1</panel>…
  依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm) 在一个npm项目下: tree -d命令以树状图的方式列出一个项目下所有依赖的物理结构 npm ls命令以树状图的方式列出一个项目下所有依赖的逻辑结构   以官方文档为例子: 项目example1有两个依赖模块:mod-a模块和mod-c模块: mod-a模块有一个依赖模块mod-b@1.0.0模块 mod-c模块有…
  依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm) 在一个npm项目下: tree -d命令以树状图的方式列出一个项目下所有依赖的物理结构 npm ls命令以树状图的方式列出一个项目下所有依赖的逻辑结构   以官方文档为例子: 项目example1有两个依赖模块:mod-a模块和mod-c模块: mod-a模块有一个依赖模块mod-b@1.0.0模块 mod-c模块有…
HDFS(Hadoop Distributed File System)是一个分布式文件存储系统,几乎是离线存储领域的标准解决方案(有能力自研的大厂列外),业内应用非常广泛.近段抽时间,看一下 HDFS 的架构设计,虽然研究生也学习过相关内容,但是现在基本忘得差不多了,今天抽空对这块做了一个简单的总结,也算是再温习了一下这块的内容,这样后续再看 HDFS 方面的文章时,不至于处于懵逼状态. HDFS 1.0 架构 HDFS 采用的是 Master/Slave 架构,一个 HDFS 集群包含一个单…
一.概述 1.介绍 类比一下:红框就好比内存的运行时数据区,在各自不同的位置放了不同的东西.而厨师就好比执行引擎. 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JVM的高效稳定运行.不同的JVM对于内存的划分方式和管理机制存在着部分差异(典型的不同,就是针对方法区).结合JVM虚拟机规范,来探讨一下经典的JVM内存布局.运行时数据区-详图: 红框处有变化,叫方法区,JDK7…
一.堆 1.介绍 Java运行程序对应一个进程,一个进程就对应一个JVM实例.一个JVM实例就有一个运行时数据区(Runtime),Runtime里面,就只有一个堆,一个方法区.这里也阐述了,方法区和堆是一个进程一份.而一个进程当中,可以有多个线程,那就意味着一个进程中的多个线程会共享堆空间和方法区. 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域.堆在JVM启动的时候被创建,其空间大小也就确定了,是JVM管理的最大一块内存空间,堆内存大小是可以调节的. Java虚拟机规范规定…
不管是BAT面试,还是工作实践中的JVM调优以及参数设置,或者内存溢出检测等,都需要涉及到Java虚拟机的内存模型.内存分配,以及回收算法机制等,这些都是必考.必会技能. JVM内存模型 JVM内存模型可以分为两个部分,如下图所示,堆和方法区是所有线程共有的,而虚拟机栈,本地方法栈和程序计数器则是线程私有的. 1. 堆(Heap) 堆内存是所有线程共有的,可以分为两个部分:年轻代和老年代.下图中的Perm代表的是永久代,但是注意永久代并不属于堆内存中的一部分,同时jdk1.8之后永久代也将被移除…
前言 Feign组件默认使用Ribbon的重试机制并增加了根据状态码判断重试机制,默认情况下是不启用的.Feign使用的是Spring Retry组件,需要引入依赖才能启用. 一.POM引入Spring Retry <dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </dependency> 二…
1.新建一个测试用例,把下面的四个方法勾选以便查看效果 2.我们在各个方法里面写上输出语句 3.运行之后我们可以发现,它的执行顺序是这样的 注:junit4中的运行流程 1.@BeforeClass修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所有当测试类被加载后接着就会运行它, 而且在内存中它只会存在一份实例,它比较适合加载配置文件 2.@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接 3.@Before和@After会在每个测试方法的前后各执行一次…
首先通过一张图了解 Java程序的执行流程: 我们编写好的Java源代码程序,通过Java编译器javac编译成Java虚拟机识别的class文件(字节码文件),然后由 JVM 中的类加载器加载编译生成的字节码文件,加载完毕之后再由 JVM 执行引擎去执行.在加载完毕到执行过程中,JVM会将程序执行时用到的数据和相关信息存储在运行时数据区(Runtime Data Area),这块区域也就是我们常说的JVM内存结构,垃圾回收也是作用在该区域. 关于这幅图涉及到的: ①.class文件 ②.类加载…
上一篇介绍 TCP 的文章「TCP 三次握手,四次挥手和一些细节」反馈还不错,还是蛮开心的,这次接着讲一讲关于超时和重传那一部分. 我们都知道 TCP 协议具有重传机制,也就是说,如果发送方认为发生了丢包现象,就重发这些数据包.很显然,我们需要一个方法来「猜测」是否发生了丢包.最简单的想法就是,接收方每收到一个包,就向发送方返回一个 ACK,表示自己已经收到了这段数据,反过来,如果发送方一段时间内没有收到 ACK,就知道很可能是数据包丢失了,紧接着就重发该数据包,直到收到 ACK 为止. 你可能…
本节实现一个类继承的小程序,下面一边结合代码一边介绍相关继承的知识.例子以车.汽车为例,车为父类.汽车为子类. 一.    定义父类Vehicle class Vehicle():    def __init__(self,wheelcount, power):#构造方法,参数有轮子数和动力        self.wheelcount,self.power,self.totaldistance = wheelcount,power,0        #初始化行驶总里程为0    def get…
一.概述 1.介绍 <Java虚拟机规范>中明确说明:尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩.但对于HotSpot JVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开. 所以,方法区看作是一块独立于Java堆的内存空间.官方文档: 方法区在JVM启动的时候被创建,并且它的实际的物理内存空间和Java堆区一样,可以是不连续的.方法区的大小和堆一样,可选择固定大小或可扩展.方法区的大小决定了系统可以保持多少个类,如…
前言,文件读取是提高应用体验度的必须接口,应用场景中需求很频繁. Js处理文件读取,由于处于安全方面的考虑,在2000年以前,都是以“<input type="file">”字段来实现文件上传,这样有很多的局限性,比如无法在本地上传时看到自己上传的文件(如图片),也无法读取到文件内容,审查文件流大小. HTML5中,主流浏览器引擎都支持新的FILE API,为“<input type="file">”提供一个files数组,包含每个文件,为每…
搞清楚struts-config.xml中各项元素的作用,对于我们构建web项目有莫大的好处.<struts-config>是struts的根元素,它主要有8个子元素,DTD定义如下: <!ELEMENT struts-config (data-sources?,form-beans?,global-exceptions?,global-forwards?, action-mappings?,controller?,message-resources*,plug-in*)> 以上8…
1.Action类 execute 方法 ActionMapping 对应 <action path="user" type="myuser.UserAction" name="user" parameter="op"></action> ActionForward 对应 <forward name="list" path="/userlist.jsp" r…
1.JVM简析:      作为一名Java使用者,掌握JVM的体系结构也是很有必要的.      说起Java,我们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言.Java类文件格式.Java虚拟机和Java应用程序接口(Java API).它们的关系如下图所示:  Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个平台的通道,用Java语言编写并编译的程序可以运行在这个平台上.这个平台的结构如下图所示:     运…
Struts1工作原理图: 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象.(面向对象思想) 2.发送请求:用户提交表单或通过URL向WEB服务器提交请求,请求的数据用HTTP协议传给web服务器. 3.form填充:struts的总控制器ActionServlet在用户提交请求时将数…
Net is as typeof 运行运算符详解   概述 在了解运行运算符的前提我们需要了解什么是RTTI ,在任何一门面向对象的语言中,都有RTTI这个概念(即 运行时). RTTI(Run-Time Type Identification),通过运行时类型信息程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型. RTTI提供了以下两个非常有用的操作符: (1)typeid(C#中叫TypeOf)操作符,返回指针和引用所指的实际类型. (2)dynamic_cast操作…
1.前言 在当下微服务架构盛行的时代,用户希望应用程序时时刻刻都是可用,为了满足不断变化的新业务,需要不断升级更新应用程序,有时可能需要频繁的发布版本.实现"零停机"."零感知"的持续集成(Continuous Integration)和持续交付/部署(Continuous Delivery)应用程序,一直都是软件升级换代不得不面对的一个难题和痛点,也是一种追求的理想方式,也是DevOps诞生的目的. 2.滚动发布 把一次完整的发布过程,合理地分成多个批次,每次发布…