07 2021 档案
摘要:MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。在MyBatis开发中,涉及到主要开发要素是:Dao接口类,Mapper映射文件,以及PO类。它们之间的关系如下: 映射器(mapper)的XML文件,有几个顶级元素: select
阅读全文
摘要:一、MyBatis核心对象 1. SqlSessionFactory SqlSessionFactory是MyBatis框架中十分重要的对象,它是单个数据库映射关系经过编译后的内存镜像,其主要作用是创建SqlSession。可以利用SqlSessionFactoryBuilder对象,通过XML配置
阅读全文
摘要:因工作需要,写了一个自动登录某网站的线程,每隔一秒检查有否有新图片(图片为验证码),有的话,将图片以BASE64编码格式提交到网站,再将网站处理结果保存到系统剪贴板,供自己的前台程序调用。 主程序如下: package com.clzhang.sample.net; import com.aliba
阅读全文
摘要:因工作需要,特意写段将图片与Base64编码实现互转的程序。本程序使用到sun.misc.BASE64Decoder.jar,请在网上自行下载此Jar包。或者单击下面链接: https://pan.baidu.com/s/1xRV-UL2JgjskHApuPoS2Og 提取码: ptij 转换代码参
阅读全文
摘要:一、事务的概念可以描述为具有以下四个关键属性,也就是 ACID 原子性(Atomicity):事务应该当作一个单独单元的操作,这意味着整个序列操作要么是成功,要么是失败; 一致性(Consistency):这表示数据库的引用完整性的一致性,表中唯一的主键等; 隔离性(Isolation):可能同时处
阅读全文
摘要:本篇文章,类似于:Spring深入浅出(十四),JDBC,Oracle数据库基本CRUD操作,以及获得插入记录的主键值,差别在于:这次是MySQL数据库。 首先,需要在项目中引用相关包,包括Spring JDBC包、Spring事务驱动包、MySQL数据库驱动包: spring-jdbc-5.2.3
阅读全文
摘要:本篇文章,类似于:Spring深入浅出(十三),AOP,AspectJ,基于注解开发,只是从更加全面的角度看注解。注解的初步知识,请参考上文。 一、创建接口类 package com.itheima.jdk; public interface UserDao { public void addUse
阅读全文
摘要:本篇文章相当于Spring深入浅出(十二),AOP,AspectJ,基于XML开发、Spring,AOP,五大通知类型,通知的常用属性及其描述 两篇文章的结合体。 只是觉得教材写得不错,能让人深刻理解XML声明式配置AspectJ,所以把它重新写一遍。 一、创建接口 package com.ithe
阅读全文
摘要:Spring中代理对象可通过XML配置方式获得,也可通过ProxyFactory手动编程方式创建对象。Spring中的代理对象其实是JDK Proxy和CGLIB Proxy 的结合。一、创建接口 package com.itheima.jdk; public interface UserDao {
阅读全文
摘要:本文主要部分转载自:https://www.cnblogs.com/chuijingjing/p/9806651.html,略作修改和添加。 一、前置通知在目标方法执行之前的通知。 前置通知方法,可以没有参数,也可以额外接收一个JoinPoint,Spring会自动将该对象传入,代表当前的连接点,通
阅读全文
摘要:关于AOP的基本介绍,参考:Spring深入浅出(十二),AOP,AspectJ,基于XML开发 AOP的代理就是由AOP框架动态生成的一个对象,该对象可以作为目标对象使用。Spring中的AOP代理,可以是JDK动态代理,也可以是CGLIB代理(Code Generation Library)。
阅读全文
摘要:一、查询表空间所有表 select table_name from all_tables where TABLESPACE_NAME='USERS'; 二、查询表所在的表空间 select * from user_tables where table_name='PANTAB'; 一个数据库由多个表
阅读全文
摘要:一、HelloWorld程序 参考: Spring深入浅出(一),基本概念,HelloWorld实例 二、依赖注入 参考: Spring深入浅出(五),依赖注入,构造函数/设值/注入内部Bean Spring深入浅出(六),依赖注入,注入集合(含注入 Bean 引用) 三、Bean的实例化 1. 构
阅读全文
摘要:问题: UltraEdit打开Java源代码,中文显示乱码。这些Java文件有用ANSI编码的,也有用UTF-8编码的。 解决: 1. 在UltraEdit配置中设置默认编码,及启用自动检测编码 打开菜单,点击配置-》文件处理-》编码,默认编码选择【UTF-8】,选中【自动检测编码】。如此一来,UT
阅读全文
摘要:现象: 在MyEclipse2020中,导入另一个项目的Java源文件,打开后,中文注释显示为乱码。 原因: MyEclipse的工作空间中默认的编码方式的GBK,所以有时候导入一个工程后会出现乱码。 解决: 将工作空间的编码方式改为UTF-8,具体步骤: 1. 将整个Project设置编码为UTF
阅读全文
摘要:因工作需要,写了一个按键精灵的程序,用于实现自动登录某网站的功能,特意记录如下常见操作: 一、激活窗口 Delay 1000Hwnd = Plugin.Window.Find(0, "Microsoft Excel - MyTest.xls [兼容模式]") Call Plugin.Window.A
阅读全文
摘要:一、以 sys管理员身份登录sqlplus,打开命令行(cmd.exe),语法: sqlplus sys/Manager001 as sysdba 二、创建独立的表空间 create tablespace USER_TEST_DATA logging datafile 'C:\app\Andy\or
阅读全文
摘要:写一个简单示例,阐述Spring环境、Oracle数据库之下,实体表的CRUD 操作;包括获得插入记录的主键值。 首先,需要在项目中引用相关包,包括Spring JDBC包、Spring事务驱动包、Oracle数据库驱动包: spring-jdbc-5.2.3.RELEASE.jar spring-
阅读全文
摘要:问题: 项目本来很正常,Spring只打印该打印的信息,包括Warn、Error,正常输出等;但某天,Spring突然狂打Debug级别的日志,导致后台输出过多。 反思: 近期项目变动,引用Tess4J模块,一个基于Java的OCR图形识别软件,Tess4J引用logback-core-1.2.3.
阅读全文
摘要:一、概述 在 Spring 中,尽管使用 XML 配置文件可以实现 AOP 开发,但是如果所有的相关配置都集中在配置文件中,势必会导致 XML 配置文件过于臃肿,从而给维护和升级带来一定的困难。为此,AspectJ 框架为 AOP 开发提供了一套注解。AspectJ 允许使用注解定义切面、切入点和增
阅读全文
摘要:本文转载自:https://www.cnblogs.com/xrq730/p/4919025.html,略作修改。 一、AOP概念 AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)
阅读全文
摘要:带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源。@Bean 注解告诉 Spring,一个带有 @Bean 的注解方法将返回一个对象,该对象应该被注册为在 Spring 应用程序上下文中的 bean。 参考如下代码: package
阅读全文
摘要:可能会有这样一种情况,当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的一个进行装配,在这种情况下,你可以使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 bean 将会被装配来消除混乱。 一、创建实体Bean package com.clz
阅读全文
摘要:在 Spring 中,尽管可以使用 XML 配置文件实现 Bean 的装配工作,但如果应用中 Bean 的数量较多,会导致 XML 配置文件过于臃肿,从而给维护和升级带来一定的困难。Java 从 JDK 5.0 以后,提供了 Annotation(注解)功能,Spring 2.5 版本开始也提供了对
阅读全文
摘要:这种模式与 byType 非常相似,但它应用于构造器参数。Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 constructor。然后,它尝试把它的构造函数的参数与配置文件中 beans 名称中的一个进行匹配和连线。如果找到匹配项,它会注入这
阅读全文
摘要:Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式。Spring 容器支持多种装配 Bean 的方式,如基于 XML 的 Bean 装配、基于 Annotation 的 Bean 装配和自动装配等。 自动装配就是指 Spring 容器在不使用 <constr
阅读全文
摘要:前面已经讲解如何使用 value 属性来配置基本数据类型和在 bean 配置文件中使用<property>标签的 ref 属性来配置对象引用。现在如果想传递多个值,如 Java Collection 类型 List、Set、Map 和 Properties,应该怎么做? Spring 提供了四种类型
阅读全文
摘要:依赖注入的概念 Spring 依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念。使用依赖注入可以更轻松的管理和测试应用程序。 当某个Java对象(调用者)需要调用另一个Java对象(被调用者)时,在传统模式下,调用者通常采用【new 被调
阅读全文
摘要:Spring Bean 定义的继承与 Java 类的继承无关,但是继承的概念是一样的。你可以定义一个父 bean 的定义作为模板和其他子 bean 就可以从父 bean 中继承所需的配置。 一、创建HelloWorld类 package com.clzhang.spring.demo; public
阅读全文
摘要:BeanPostProcessor 接口也被称为后置处理器,通过该接口可以自定义调用初始化前后执行的操作方法。postProcessBeforeInitialization 方法是在 Bean 实例化和依赖注入后,自定义初始化方法前执行;而 postProcessAfterInitializatio
阅读全文
摘要:在传统的 Java 应用中,Bean 的生命周期很简单,使用关键字 new 实例化 Bean,当不需要该 Bean 时,由 Java 自动进行垃圾回收。 Spring 中 Bean 的生命周期较复杂,可以简单表示为:Bean 的定义 -> Bean 的初始化 -> Bean 的使用 -> Bean
阅读全文
摘要:什么是Spring Spring是一个分层的Java SE/EE full-stack(一站式)轻重级开源框架,它以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为内核,使用基本JavaBean来完成以前只
阅读全文
摘要:1、MyEclipse 快捷键1(CTRL)Ctrl+1 快速修复,比如方法名写错,它可以提示纠正。Ctrl+D 删除当前行Ctrl+Q 定位到最后编辑的地方Ctrl+L 定位在某行,输入行号后定位Ctrl+O 快速显示 OutLine,然后可以单击方法名,切换到相关代码行Ctrl+T 快速显示当前
阅读全文
摘要:功能:实现Mapper接口,封装SqlSession之类的调用,进一步简化程序的调用,就像操作普通对象一样,感觉不到后台数据库 预备:请先阅读MyBatis之工作原理,简单实体的增加、修改、删除、查询 一、目录结构 com.clzhang.mybatis.entity ProductBean.jav
阅读全文
摘要:一、MyBatis之工作原理 MyBatis是一个半自动映射框架。所谓半自动,是相对Hibernate全表映射而言的,MyBatis需要手动匹配提供POJO、SQL和映射关系。 我们知道,JDBC有四个核心对象:(1)DriverManager,用于注册数据库连接(2)Connection,与数据库
阅读全文
摘要:一、先看下面的代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="../js/vue.js" type="text/javascript" charset="utf-8"></scr
阅读全文
摘要:你可以用 v-model 指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。 一、文本 <input v-model="message" placeholder="edit me"> <p>Message is: {{ message }}</p> 二、
阅读全文
摘要:可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。 一、基本示范 <div id="example-1"> <button v-on:click="counter += 1">Add 1</button> <p>The button above has bee
阅读全文
摘要:一、我们可以用 v-for 指令基于一个数组来渲染一个列表。 <ul id="example-1"> <li v-for="item in items" :key="item.message"> {{ item.message }} </li> </ul> var example1 = new Vu
阅读全文
摘要:v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染。 一、基本用法 <h1 v-if="awesome">Vue is awesome!</h1> <h1 v-if="awesome">Vue is awesome!</h1> <h1 v-else>
阅读全文
摘要:一、绑定HTML Class 1. 对象语法 我们可以传给 v-bind:class 一个对象,以动态地切换 class: <div v-bind:class="{ active: isActive }">这是测试一</div> 又或者: <div class="static" v-bind:cla
阅读全文
摘要:虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。 一、示范代码 <div id="watch-example"> <p> Ask
阅读全文
摘要:对于任何复杂逻辑,你都应当使用计算属性。 一、适用场景 <div id="example"> <p>Original message: "{{ message }}"</p> <p>Computed reversed message: "{{ reversedMessage }}"</p> </di
阅读全文
摘要:Vue 为 v-bind 和 v-on 这两个最常用的指令,提供了特定简写: 一、v-bind 缩写 <!-- 完整语法 --> <a v-bind:href="url">单击我试试</a> <br/> <!-- 缩写 --> <a :href="url">单击我试试</a> <br/> <!--
阅读全文
摘要:一、参数:一些指令能够接收一个“参数”,在指令名称之后以冒号表示 <a v-bind:href="url">单击我试试</a> 在这里 href 是参数,告知 v-bind 指令将该元素的 href attribute 与表达式 url 的值绑定。 <a v-on:click="doSomethin
阅读全文
摘要:一、文本:数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值 <div id="app-10"> {{lastname}} </div> 通过使用 v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新。如下: <div id="app-10" v
阅读全文
摘要:Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、销毁等一系列过程,我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。 一、每一个组件或者实例都会经历一个完整的生命周期,总共分为三个阶段:初始化、运行中、销毁 实例、
阅读全文
摘要:当一个 Vue 实例被创建时,它将 data 对象中的所有的 property 加入到 Vue 的响应式系统中。当这些 property 的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。 一、示范代码 // 我们的数据对象 var data = { firstname: 'CL', las
阅读全文
摘要:在 Vue 里,一个组件本质上是一个拥有预定义选项的一个 Vue 实例。 一、示范代码 Vue.component('todo-item', { props: ['todo'], template: '<li>{{ todo.text }}</li>' }) var app7 = new Vue({
阅读全文
摘要:Vue 还提供了 v-model 指令,它能轻松实现表单输入和应用状态之间的双向绑定。 一、示范代码 <div id="app-6"> <p>{{ message }}</p> <input v-model="message"> </div> var app6 = new Vue({ el: '#a
阅读全文
摘要:为了让用户和你的应用进行交互,我们可以用 v-on 指令添加一个事件监听器,通过它调用在 Vue 实例中定义的方法。 一、示范代码 <div id="app-5"> <p>{{ message }}</p> <button v-on:click="reverseMessage">反转消息</butt
阅读全文
摘要:v-for 指令可以绑定数组的数据来渲染一个项目列表: 一、示范代码 <div id="app-4"> <ol> <li v-for="todo in todos"> {{ todo.text }} </li> </ol> </div> var app4 = new Vue({ el: '#app-
阅读全文
摘要:控制切换一个元素是否显示也相当简单 一、示范代码 <div id="app-3"> <p v-if="seen">现在你看到我了</p> </div> var app3 = new Vue({ el: '#app-3', data: { seen: true } }) 二、结果如下图所示 三、在控制
阅读全文
摘要:指令带有前缀 v-,以表示它们是 Vue 提供的特殊 attribute。它们会在渲染的 DOM 上应用特殊的响应式行为。 一、示范代码 <div id="app-2"> <span v-bind:title="message"> 鼠标悬停几秒钟查看此处动态绑定的提示信息! </span> </di
阅读全文
摘要:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。 一、安装VUE 1. 通过如下方式引入 Vue <!-- 开发环境版本,包含了有帮助的命令行警告 --> <script src="ht
阅读全文
摘要:下面程序的输出结果,参考代码中的注释,原因也在其中。 public class MyDemo { public static void main(String[] args) { String s1 = "Programming"; String s2 = new String("Programmi
阅读全文
摘要:JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。 JavaScript 中,数组值可以是以上的 JSON 数据类型,也可以是 JavaScript 的表达式,包括函数,日期,及 undefined。 一、对象属性的值可以是一个数组 { "n
阅读全文
摘要:一、访问对象 可以使用点号(.)来访问对象的值: var myObj, x; myObj = { "name":"runoob", "alexa":10000, "site":null }; x = myObj.name; 也可以使用中括号([])来访问对象的值: var myObj, x; myO
阅读全文
摘要:jquery.validate官网地址:http://jqueryvalidation.org/ 1. 导入JavaScript库 <script src="../js/jquery.js"></script> <script src="../js/jquery.validate.js"></scr
阅读全文
摘要:一、循环的适用场景(建议) for : 比较适合遍历数组,字符串等等。 for in : 比较适合遍历对象,遍历对象时使用这个再合适不过。 while : while 与 for 的使用场景差不多。 do while : 至少执行一边的循环,遍历数组和字符串也很方便。 二、while遍历数组需要注意
阅读全文
摘要:一、JavaScript for/in 语句循环遍历对象的属性 var person={fname:"Bill",lname:"Gates",age:56}; var txt = ""; // x 为属性名 for (x in person) { txt = txt + person[x]; } c
阅读全文
摘要:你可以使用 typeof 操作符来检测变量的数据类型。 一、typeof示范代码 typeof "John" // 返回 string typeof 3.14 // 返回 number typeof false // 返回 boolean typeof [1,2,3,4] // 返回 object
阅读全文
摘要:ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。 let 声明的变量只在 let 命令所在的代码块内有效。const 声明一个只读的常量,一旦声明,常量的值就不能改变。 一、使用 var 关键字声明的变量不具备块级作用域的特性,它在 {} 外依然能
阅读全文
摘要:网上看到的,关于多线程的详细介绍,特意记录下来,原始网站:http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html 翻译后的目录: 1 Java Reflection 教程 2 Java反射指南
阅读全文
摘要:网上看到的,关于IO的详细介绍,特意记录下来,原始网站:http://tutorials.jenkov.com/java-io/index.html 翻译后的目录: 1 Java IO 教程 2 Java IO 概述 3 Java IO: 文件 4 Java IO: 管道 5 Java IO: 网络
阅读全文
摘要:网上看到的,关于多线程的详细介绍,特意记录下来,原始网站找不到。 翻译后的目录: 1 Java 网络教程: 基础 2 Java 网络教程: Socket 3 Java 网络教程: ServerSocket 4 Java Networking: UDP DatagramSocket 5 Java 网络
阅读全文
摘要:网上看到的,关于多线程的详细介绍,特意记录下来,原始网站:http://tutorials.jenkov.com/java-concurrency/index.html 翻译后的目录: Java并发性和多线程介绍 多线程的优点 多线程的代价 并发编程模型 如何创建并运行java线程 竞态条件与临界区
阅读全文
摘要:网上看到的,关于NIO的详细介绍,特意记录下来,原始网站:http://tutorials.jenkov.com/java-nio/index.html 翻译后的目录: Java NIO 教程 Java NIO概述 Java NIO Channel Java NIO Buffer Java NIO
阅读全文
摘要:一、参考如下代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> </head> <body> <!-- <header>元素主要用于定义内容的介绍展示区域.!--> <article> <header> <h1>Internet Expl
阅读全文
摘要:一、<form> / <input> autocomplete 属性 autocomplete 属性规定 form 或 input 域应该拥有自动完成功能。 <form action="demo-form.php" autocomplete="on"> First name:<input type=
阅读全文
摘要:HTML5 拥有多个新的表单输入类型。这些新特性提供了更好的输入控制和验证。 color date datetime datetime-local email month number range search tel time url week 一、示范代码 <!DOCTYPE html> <ht
阅读全文
摘要:拖放是一种常见的特性,即抓取对象以后拖到另一个位置。在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。 一、参考如下代码 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>拖放操作</title> <style type
阅读全文
摘要:HTML5 有以下新的表单元素: <datalist> <keygen> <output> 一、参考如下代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <input li
阅读全文
摘要:HTML5 Geolocation(地理定位)用于定位用户的位置。鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。 一、示范代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <!
阅读全文
摘要:HTML5 <canvas> 标签用于绘制图像(通过脚本,通常是 JavaScript)。<canvas> 元素本身并没有绘制能力(它仅仅是图形的容器) ,你必须使用脚本来完成实际的绘图任务。 getContext() 方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性。 一、参考如下代码
阅读全文