- 博客(17)
- 收藏
- 关注
原创 Mybatis 中 mapper 的实现原理
相信只要是使用过 MyBatis 开发的同学, 都有使用其中的 Mapper 接口来开发, 因为确实是很方便, 方便到我们只需要编写接口而不需要写实现类, 就能够完成对数据库的 CRUD 操作, 但是不知道大家有没有去思考过, 如果我们真的只有 Mapper 接口的话, 程序又是如何去完成实际的业务的呢? 来看看下面的代码cn.wolfcode.mybatis.mapper.UserMapper 接口public interface UserMapper { void save(User u)
2021-07-25 16:27:23 205
原创 java中getInstance()
getInstance方法的主要作用主函数当中使用此类的getInstance()函数,即可得到系统当前已经实例化的该类对象,若当前系统还没有实例化过这个类的对象,则调用此类的构造函数对象实例化对象的实例化方法,也是比较多的,最常用的方法是直接使用new。而这是最普通的,如果要考虑到其它的需要,如单实例模式,层次间调用等等。直接使用new就不是最好的设计,这时候需要使用间接使用new,即getInstance方法。这是一个设计方式的代表,而不仅仅指代一个方法名。GetInstance与new区别:
2021-07-25 10:28:58 1371
原创 java项目中的classpath
在java项目中,你一定碰到过classpath,通常情况下,我们是用它来指定配置/资源文件的路径。在刚开始学习的时候,自己也糊里糊涂,但是现在,是时候弄清楚它到底是指什么了。顾名思义,classpath就是class的path,也就是类文件(*.class的路径)。一谈到文件的路径,我们就很有必要了解一个java项目(通常也是web项目)它在真正运行时候,这个项目内部的目录、文件的结构;这样,我们才好分析、理解classpath。开发时期的web项目结构下面,我以一个ssm的项目为例,我先把开发时候
2021-07-17 17:46:17 132
原创 深入理解Java虚拟机
深入理解Java虚拟机(程序编译与代码优化)对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化。本文就从虚拟机层面来看看虚拟机对我们所编写的代码采用了哪些优化手段。一. 早期优化(编译期优化)Java 语言的「编译期」其实是一段「不确定」的操作过程。因为它可能是一个前端编译器(如 Javac)把 *.java 文件编译成 *.class 文件的过程;也可能是程序运行期的即时编译器(JIT 编译器,Just In T
2021-07-17 17:40:56 95
原创 常见监控摄像头专业术语(码流、分辨率、帧率)
常见监控摄像头专业术语(码流、分辨率、帧率)对于新入行视频监控行业的同事来说,有几个概念可能会混淆,并且弄不清楚他们相互之间的关系,那就是帧率、分辨率、码流。今天就来谈谈这几个概念,希望对有需要的人加深对它们的理解。一、分辨率(Resolution)视频分辨率是指视频成像产品所成图像的大小或尺寸,它的表达式为:“水平像素数 * 垂直像素数”。常见的图像分辨率有 QCIF(176×144)、CIF(352×288)、D1(704×576)、720P(1280×720)、1080P(1920*1080)。
2021-07-15 17:23:08 8994
原创 Spring用Junit单元测试
spring 的单元测试如果 spring 4.3.18 这个版本的 spring 要使用 junit,需要使用 junit 的 junit-4.12 之上的版本。使用这个版本 junit 的时候需要引入 hamcrest-all 的 jar 包。之前的 junit 版本是不需要单独引入这个 jar 包的,因为之前版本把 hamcrest-all 的jar 包集成进来了,从 4.12 开始,该 jar 包不集成,需要单独的引入。/*** 使用junit进行单元测试*/public class
2021-07-15 13:29:13 202
原创 VO/DTO/DO/PO/POJO/BO/DAO概念及其区别
1、***VO(View Object)***:视图对象,用于展示层。例如:对应controller层的入参对象和页面上需要显示的数据(表单)。2、***DTO(Data Transfer Object):***数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。例如:service层的入参对象和响应参数对象。3、***DO(Persi
2021-07-14 07:57:42 413
原创 JSP中JSTL标签中的c:import出现乱码问题
今天学习JSTL,在看到<c:import>的时候出现一个问题<c:import url=“guosan.txt” charEncoding=“GB2312” var=“yanziguosan”/><c:out value="${yanziguosan}" escapeXml=“false”/>在测试的时候网页中显示的是乱码。我把jsp页面中<%@ page contentType=“text/html;charset=GB2312” %>和<
2021-07-13 17:05:26 354
原创 MyBatis中的JdbcType映射
Java项目涉及到数据库交互,以往常用的是JDBC,现在则有Hibernate、Mybatis等这些持久化支持。项目中用到了MyBatis,和JDBC最显著的区别,就是SQL语句配置化,通过xml文件定义SQL语句,当然JDBC也可以将SQL配置化,需要定制开发,MyBatis则直接支持这种方法。官方对于MyBatis的介绍,MyBatis is a first class persistence framework with support for custom SQL, stored proc
2021-06-16 09:13:51 153
原创 MyBatis返回值用 BaseResultMap
mabtis中写查询语句时,返回值直接用BaseResultMap错误情形:错误原因:返回值使用的是resultType=“User”,这样的话,当pojo类和数据库字段有不同的名称时,如(pojo类:userId,数据库:user_id)。这时候取出来的User对象的userId就会为null。错误分析:把查询语句修改成因为BaseResultMap里是使用column和property对应的。column对应pojo字段,property对应数据库字段。这时才能够完美取出对象的所有属
2021-06-16 08:43:12 1265
原创 Java中this和super用法详解
<一>. this的用法构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器返回该类的对象,但是这个对手并不是完全由构造器负责创建. 创建一个对象分为如下四步:a. 分配对象空间,并将对象成员变量初始化为0或者nullb. 执行属性值的显式初始化c. 执行构造方法d. 返回对象的地址给相关变量this的本质就是“创建好的的对象的地址”, 由于在构造方法调用前,对象已经创建. 因此,在构造方法中也可以使用this代表“当前对象”.书上对于this的描述this
2021-06-15 20:48:57 83
原创 npm 淘宝镜像
方法一:使用阿里定制的cnpm命令行工具代替默认的npm,输入以下代码 npm install -g cnpm --registry=https://registry.npm.taobao.org检查是否安装成功: $ cnpm -v安装成功之后,以后安装依赖包的方式和npm的是一样的,只是npm的命令换成是cnpm就可以了。方法二:a:单次使用: npm install --registry=https://registry.npm.taobao.orgb:永久替换:在开发rea
2021-05-24 23:52:02 951
原创 使用SLF4J和Logback
前面介绍了Commons Logging和Log4j,它们一个负责充当日志API,一个负责实现日志底层,搭配使用非常便于开发。有的童鞋可能还听说过SLF4J和Logback。这两个东东看上去也像日志,它们又是啥?其实SLF4J类似于Commons Logging,也是一个日志接口,而Logback类似于Log4j,是一个日志的实现。为什么有了Commons Logging和Log4j,又会蹦出来SLF4J和Logback?这是因为Java有着非常悠久的开源历史,不但OpenJDK本身是开源的,而且我们
2021-05-20 09:11:14 346
原创 数据库连接池原理介绍,以及开发常用连接池介绍
什么是连接池数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。为什么要使用连接池数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程
2021-05-14 09:04:42 282
原创 spring 到底注入接口还是实现类?
今天半夜写代码时把@Repository注解写在了接口上,导致bean无法完成注入。这其实都是spring的内容,可能是半夜脑子不好使,一直没看出来哪里的问题。关于上面的问题的解释:@Service注解是标注在实现类上的,因为@Service是把spring容器中的bean进行实例化,也就是等同于new操作,只有实现类是可以进行new实例化的,而接口则不能,所以是加在实现类上的。问题1:spring 到底注入接口还是实现类?实现类在最初学习spring时,我们使用的时配置的方式来实现。大概是这
2021-05-13 19:10:45 2159 1
原创 entity、bo、vo、po、dto、pojo如何理解和区分?
Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo、Vo来命名,面试的时候,也有可能被问到这些问题。那么,这几者分别代表什么意思呢?Entity最常用实体类,基本和数据表一一对应,一个实体一张表。Bo(business object)代表业务对象的意思,Bo就是把业务逻辑封装为一个对象(注意是逻辑,业务逻辑),这个对象可以包括一个或多个其它的对象。通过调用Dao方法,结合Po或Vo进行业务操作。形象描述为一个对象的形为和动作,当然也有涉及到基它
2021-05-12 10:01:30 233
原创 IntelliJ IDEA 整合Tomcat ,控制台输出中文乱码解决方式
一、首先需要确认IDEA 的所有编码方式要是UTF-8,如下图:二、Run Configuration中的VM option设置为:-Dfile.encoding=utf-8三、在IDEA 安装目录/bin目录下,有一个名为idea64.exe.vmoptions的文件,打开在最后一行添加:-Dfile.encoding=utf-8四、找到Tomca主目录/conf/logging.properties文件,打开修改:java.util.logging.ConsoleHandler.enco
2021-01-26 16:21:05 107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人