暂无个人介绍
<div class="markdown_views"> <h1 id="基于schema配置入门实例">基于Schema配置入门实例</h1> <p>除了基于@AspectJ注解的形式来实现AOP外,我们还可以在IOC容器中配置。先来看看一个常见的应用场景,在我们的web项目中,我们需要为service层配置事务,传统的做法是在每个业务逻辑方法重复下面配置中:</p>
<div class="markdown_views"> <h1 id="增强的织入顺序">增强的织入顺序</h1> <p>当一个连接点同时织入多个增强时,就存在顺序调用问题: <br> 1. 增强在同一个切面类中定义:依照增强在切面类中定义的顺序依次织入。 <br> 2. 增强位于不同的切面,但果这些切面都实现了org.springframework.core.Ordere
<div class="markdown_views"> <h1 id="spring中的aspectj切点表达式函数">Spring中的AspectJ切点表达式函数</h1> <p>切点表达式函数就像我们的GPS导航软件。通过切点表达式函数,再配合通配符和逻辑运算符的灵活运用,我们能很好定位到我们需要织入增强的连接点上。经过上面的铺垫,下面来看看Springz中支持的切点表
<div class="markdown_views"> <h1 id="aspectj准备">@AspectJ准备</h1> <blockquote> <p>AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。 <br> 在使用AspectJ之前,我们需要导
<div class="markdown_views"> <h1 id="自定义annotation">自定义annotation</h1> <p>先看一个注解实例:</p> <pre class="prettyprint"><code class="language-java hljs "><span class="hljs-keyword">import</span
<div class="markdown_views"> <h1 id="override">@Override</h1> <p>标注在子类方法中,表示此方法是覆盖父类的重载方法,具有强制性,即如果父类没有此方法,则会编译出错。那它到底有什么用呢?让我们来看这一需求场景:</p> <blockquote> <p>假如我们利用面向对象的多态特性特性编程,有子类Sa,Sb继
<div class="markdown_views"> <p>通过上一篇文章对AOP的一些实例讲解后,我们在这篇文章中结合一些例子来系统地了解AOP中涉及到的一些基本概念。</p> <h2 id="1-增强">1. 增强</h2> <p>上一篇文章我们都在讲增强,但并未谈及它的概念,但通过很多实例分析,我们很容易理解,增强就是为程序执行过程的很多特定地方添加一些新的功
<div class="markdown_views"> <h1 id="增强类型">增强类型</h1> <p>增强(advice)主要包括如下五种类型 <br> 1. 前置增强(BeforeAdvice):在目标方法执行前实施增强 <br> 2. 后置增强(AfterReturningAdvice):在目标方法执行后实施增强 <br> 3. 环绕增强(MrthodInter
<p>本文其实不应该算作Spring4.1新特性,该测试框架目前是独立于Spring Framework发展的。<a target="_blank" href="https://github.com/spring-projects/spring-test-htmlunit">Spring MVC Test HtmlUnit</a>提供了<a target="_blank" href="ht
<p>Spring 4.1对Spring MVC部分做的增强是最多的,提供了一些视图解析器的mvc标签实现简化配置、提供了GroovyWebApplicationContext用于Groovy web集成、提供了Gson、protobuf的HttpMessageConverter、提供了对groovy-templates模板的支持、JSONP的支持、对Jackson的@JsonView的支
<p>在Spring 4.1之前我们在准备测试数据时可能通过继承AbstractTransactionalJUnit4SpringContextTests,然后调用executeSqlScript()进行测试,其中存在一个主要问题:如果要同时执行多个数据源的初始化就靠不住了,而且使用起来也不是特别便利,Spring4.1提供了@Sql注解来完成这个任务。</p> <p> </p> <p
<p>Spring 4.1对异步调用提供了AsyncResult及SuccessCallback、FailureCallback、和异常处理的支持;对事件调度也提供了相应的异常处理器。</p> <p> </p> <p><strong>1、事件调度异常处理器</strong></p> <p>1.1、定义异常处理器:</p> <div id="" class="dp-highlight
<div class="markdown_views"> <h1 id="外部文件引用">外部文件引用</h1> <p>在配置数据库参数或邮箱服务器参数等静态资源时,相对于直接将信息写入Spring的.xml,.java等配置文件中,更好的做法是将配置信息分类独立地存放到外部属性文件中,然后在Spring配置文件中引入使用。这种做法的好处是: <br> 1. 提高配置信息的资
<div class="markdown_views"> <p>常用的注入方式有四种: <br> 1. 属性注入 <br> 2. 构造方法注入 <br> 3. 工厂方法注入 <br> 4. 注解注入 <br> 下面先定义我们后面用到的POJO类:</p> <pre class="prettyprint"><code class="langu
<div class="markdown_views"> <h1 id="spring-资源抽象接口下的几个常用实现类">spring 资源抽象接口下的几个常用实现类</h1> <table> <thead><tr> <th>实现类</th> <th>说明</th> </tr></thead> <tbody> <tr> <td>ClassPathResource</td>
<div class="markdown_views"> <h1 id="底层数据结构实现">底层数据结构实现</h1> <p>jsonArray的底层数据结构有列表(list)来维护。它的定义和构造函数初始化工作如下图所示。一般创建对象时默认不传参来构造一个空的列表。</p> <pre class="prettyprint"><code class="language
<div class="markdown_views"> <p><strong>Ioc</strong>—Inversion of Control,即“控制反转”。在传统面向对象编程中,我们往往会在客户类里主动去创建、配置我们需要用到的依赖。比如,我们有一个客户类userDao需要完成数据库的增删改查操作,我们需要先在客户类对象中创建我们需要的依赖(数据库连接对象conn):<
<div class="markdown_views"> <h1 id="底层数据结构实现">底层数据结构实现</h1> <p>本对象的底层数据结构是一个Map(映射),我们用<code>def private jsonMap</code>将其定义为对象变量。我们在构造函数中对其进行初始化,它以键值对的形式存储数据,其中键必须为字符串,值可以为字符串、Boolean、Inte
<div class="markdown_views"> <p>groovy是一门以java为基础的动态语言,它强大地动态特性为我们的敏捷开发带来了极大的便利,下面是一个由grovvy(完美兼容嵌套java实现的json)解析器的部分代码展示,我们都知道,json字符串只要满足格式要求,那么它是可以无限循环嵌套的,而本解析器的核心实现就是大量的递归函数运用,将json字符串一层
<div class="markdown_views"> <p>在实际Java编程中,我们可能想要使用matlab编写一些复杂的数值计算算法,然后导入我们的java项目中调用。这首先需要我们matlab的jdk版本和java项目的jdk版本对应一致。想查看matlabjdk版本,可以在matlab命令行中输入<code>version -java</code>来查看,会看到类似
<div class="markdown_views"> <p>使用matlab制作漂亮的烟花,核心实现在于烟花图式的控制和关于如何控制多支烟花的同时释放。烟花样式的呈现需要经过复杂的数学表达式生成,升级到发射的角度和位移事变公式等,而多支烟花的同时释放难题源于matlab对多线程的不支持,幸运的是,matlab有Timer定时器,这样,我们可以实现单线程的非阻塞式烟花齐放。先
### 1. 斜体和粗体<br><br> 使用 * 和 ** 表示斜体和粗体。<br><br> 示例:<br><br> 这是 *斜体*,这是 **粗体**。<br><br> ### 2. 分级标题<br><br> 使用 === 表示一级标题,使用 --- 表示二级标题。<br><br> 示例:<br><br> ```<br> 这是一个一级标题<br> ==========
<div class="markdown_views"> <h1 id="git初接触核心指令">git初接触核心指令</h1> <h2 id="1-配置git的基本信息">1. 配置git的基本信息。</h2> <p>在每次提交时都会引用这两条基本信息,标识更新提交者,会随更新一起保存在log中 <br><code>git config –-global user.n
<p>Spring 4.1对静态资源处理进行了细化,ResourceHttpRequestHandler细分为两大部分:ResourceResolver和ResourceTransformer。</p> <div id="" class="dp-highlighter"> <div class="bar"> <div class="tools">Java代码 <a target="
<div class="markdown_views"> <h1 id="多事务运行并发问题">多事务运行并发问题</h1> <p>在实际应用中,往往是一台(或多台)服务器向无数客户程序提供服务,当服务器查询数据库获取数据时,如果没有采用必要的隔离机制,可能会存在数据库事务的并发问题,下面是一些常见的并发问题分类:</p> <pre><code>1. 第一类丢失更新:撤销一
<div class="markdown_views"> <h1 id="数据类型初识">数据类型初识</h1> <pre><code>作为 Key-value 型数据库,Redis 也提供了键(Key)和键值(Value)的映射关系。但是,除了常规的数值或字符串,Redis 的键值还可以是以下形式之一: </code></pre> <p>Lists (列表) <br> S
<div class="markdown_views"> <h1 id="光标移动">光标移动</h1> <table> <thead><tr> <th>操作指令</th> <th>具体内容</th> </tr></thead> <tbody> <tr> <td>h或向左箭头(←)</td> <td>光标向左移动1个字符</td> </tr> <tr> <td>j或向
<div class="markdown_views"> <h3 id="绪论">绪论</h3> <ol> <li> <p>基本要求: <br> 在一个可以接受的时间内返回一个和该用户查询匹配的网页信息列表,这个列表的每一条目至少包含三个元素(标题,网址链接,摘要)。其中的关键字:</p> <ol> <li>“可以接受的时间”:指响应时间,通常也就在“秒”这个量级。更进一步
<h3 style=""> <span style="font-size:15px; line-height:1.6"> </span><span style="font-size:1.2rem; line-height:1.6">跨站脚本攻击(XSS Cross Site Script)</span> </h3> <div style=""> <span style="line-hei
<div class="markdown_views"> <p>1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件</p> <pre><code>-a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出文件的详细信息 -c 根据ctime排序显示 -t 根据文件修改时间排序 ---color[=WHEN] 用