java
文章平均质量分 81
轩鸢无敌
每一行代码都要有灵魂,才是合理的
展开
-
结算单报表模块项目复盘,随手记录
结算单报表页面需要进行列表操作,需要selectForList操作,返回list集合,但是泛型中没有现有domain对象进行封装,怎么办? 做统计计算,没有现有的domain 方案一:自定义类,封装上面的数据,有几个需要字段就封装几个 class Report{ groupType count totalAmount payAmount discountAmount} 方案二: 使用map集合 hashmap map.put("gro原创 2021-05-05 21:23:46 · 221 阅读 · 0 评论 -
(二十三)MyBatis框架基础
MyBatis框架基础什么是框架框架就是骨架,跟建房子的架构一样其实就是对基础代码的一种封装,并且提供相应的API框架是一种经过校验(就是经过前人的采坑,已经测试过了),具有一定功能的半成品软件MybatisMyBatis是一款优秀的持久层框架,支持定制SQL,存储过程.高级映射,**避免了几乎所有的JDBC代码和手动设置参数以及获取结果集 **功能架构API接口层:开发人员通过本地API操纵数据库 ,接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理 ,思考:对象怎么获取才能去原创 2021-03-11 19:38:06 · 121 阅读 · 2 评论 -
(二十二)JDBC,连接池,重构思想
JDBCjdbc是一个组件,能都被多种数据库访问,由java语言编写的类和接口组成为什么要学习JDBC规范JDBC是java连接数据库的一个标准,由数据库各个厂商来完成接口的实现JDBC执行规范注册驱动,加载JDBC驱动获取连接对象获取预编译语句对象preparedStatement执行SQL语句释放资源1.Class.forName(com.mysql.jdbc.Driver);2.Connection connection =DriverManager.getConnectio原创 2021-03-10 10:08:17 · 334 阅读 · 3 评论 -
(二十一)Mysql基础
Mysql基础概述数据库(DB):存储和管理数据的仓库数据库管理系统(DBMS):专门用于管理数据库的计算机系统软件数据库分类关系型数据库DBMS , Oracle ,DB2,MySQL ,SQL Server非关系型数据库ORDBMS ,NoSQL not only sqlSQL数据查询语言(DQL)数据操作语言(DML)事务处理语言(TPL)数据控制语言(DCL)数据定义语言(DDL)指针控制语言(CCL)表与对象间的关系ORM思想(对象关系映射原创 2021-03-07 20:23:39 · 109 阅读 · 2 评论 -
(十九)反射、内省机制
反射什么是反射在程序运行过程中,通过字节码对象,去获取类的信息(构造器,方法,字段)为什么使用反射?当我们知道要使用哪个类时,我们直接调用该类创建对象,调用方法即可,但是当我们不知道使用哪个类时,我们可以通过反射去获取类的信息,使用反射获取到类的对象的真实类型以及调用其方法什么是字节码对象?把类想象成一个一个独立的个体,那么他们所共有的特性就是一个大Class来概括,把类抽象成一个一个对象,而字节码就是可以抽象成一个类,通过类去创建真实对象.正常类创建对象:Person p =new原创 2021-03-04 14:11:18 · 251 阅读 · 5 评论 -
(十八)JUnit与XML概括
Junit与XML软件的生命周期和设计原则生命周期软件生命周期可以分为6个阶段项目开始规划,定义:确定软件开发的目标与可行性需求分析:对软件需要实现的功能进行需求分析软件设计:设计每一个模块的结构,搭建整体框架代码编写:代码编写实现部分软件测试:对代码进行软件测试(白盒,黑盒)运行维护:软件生命周期最长的一部分,对开发的软件进行定期维护设计原则可重用性 :遵循**DRY(Don’t Repeat Yourself)**原则可拓展性可维护性模块要求结构稳定可拓展性可原创 2021-03-02 22:32:21 · 764 阅读 · 4 评论 -
(十七)多线程
多线程程序和进程的概念程序:硬盘上存储的,静止的代码进程:程序的一次执行的产生进程,每个进程对应一定的内存空间,并且 只能使用自己的内存空间,各个进程之间互不干扰进程称为操作系统资源分配的基本单位并发和并行并发:在一段时间内多个进程轮流使用同一个CPU,多个进程形成并发并行:在同一时刻多个进程使用各自的CPU,多个进程形成并行,并行需要多个CPU支持并发是能够让操作系统从宏观看起来同一时间段执行多个任务,操作系统一般通过CPU时间片轮转实现并发线程线程的出现为了解决实时性问题线程:原创 2021-02-25 10:16:00 · 135 阅读 · 1 评论 -
(十六)异常总结
异常概念异常(Exception)是指程序在运行过程中所发生的不正常事件,它会中断正在运行的程序异常不是错误,更不是程序的逻辑错误异常处理机制异常会导致程序中断运行异常处理可以保证程序出现异常后,往正确方向运行异常处理异常对象异常对象时出现异常时的那条语句产生的(jvm自动创建)Exception是所有异常类的子类方法toString返回异常类型和异常信息getMessage返回异常信息printStackTrace打印堆栈信息,位置不固定tr原创 2021-02-03 14:12:17 · 212 阅读 · 1 评论 -
(十五)集合框架(哈希表,二叉树,Set接口,Map集合)
集合框架(二)非线性结构线性数据结构:数组,栈,队列,链表非线性结构:树,哈希表哈希表集合中存储的元素都是引用类型,每个元素都有对应的哈希值(hashCode),元素对象的hashCode值决定了在哈希表中的存储位置当往集合中添加元素对象时,先判断该对象和集合中的对象hashCode是否相等相等:再继续判断新对象和集合对象equals比较equals相等(true),则判断为同一对象,不进行保存equals不相等(false),则存储在之间对象同位置的链表上不相等:直接把新原创 2021-02-02 15:20:21 · 272 阅读 · 6 评论 -
(十四)集合框架(List接口、泛型)
集合框架1.数据结构Java的集合框架其实是对数据的封装,那么什么是数据结构呢?我认为,数据结构其实就是计算机中存储的形式不同数据结构使用来模拟数据的存储操作,其实就是增删改查1.1常见的数据结构数组(Array)链表(Linked List)哈希表(Hash)栈(Stack)队列(Queue)树(Tree)图(Graph)堆(Heap)1.2数组结构数组的特征:数组一旦初始化完成,长度是不再发生改变的,数组在内存中是连续的(物理连续,逻辑连续),可以通过索引值类找到对应原创 2021-02-01 16:50:54 · 340 阅读 · 6 评论 -
(十三)包全解析与枚举类
包全解析与枚举类包1.包的存在解决了什么问题?包是为了解决同名类(类命名冲突)的问题 包可以看成目录2.包的作用防止命名冲突更好组织类,便于管理与维护可以保护类的方法,字段等(包访问权限)3.包的命名规则包名最好小写,不能以 .开始或者结尾 .是分隔符(相当于目录中的.)包名前最好加上唯一前缀(例如,倒置域名)不同机构命名方法不同定义包语句需放在有效代码第一句4.包名原则包名一定要保持唯一语法:通过package关键字声明包 : package 包名;5.编原创 2021-01-29 10:33:06 · 703 阅读 · 1 评论 -
(十二)高级数组(数组复制,冒泡排序,二分法)
高级数组1.数组的拷贝2.数组的冒泡排序3.数组的二分查找4.操作数组方法1.数组的拷贝方法一需求:定义一个方法设为工具方法,不给外界new对象,将指定数组的指定位置复制到目标数组的指定位置分析:构造器私有化将方法定义为static修饰,外界直接用类来调用定义方法,传入参数数组oldArr ,旧数组索引位置fromIndex,新数组newArr,新数组索引位置endIndex,需要复制的长度length定义数组工具类public class ArrayUtils { //原创 2021-01-28 13:42:15 · 206 阅读 · 6 评论 -
(十一)对于StringBuffer和StringBuilder,Math类,Random类,Date类,Calendar类总结
常用类(二)1.StringBuffer和StringBuilder2.Math类3.Random类4.Date类5.Calendar类StringBuffer和StringBuilderjava提供了两类可变字符串的类型StringBuffer和StringBuilderString类型提供了字符串的只读操作,但是如果需要对包装的字符数组进行修改,我们就需要用到可变字符串StringBufferStringBuffer构造方法/// 数组默认长度(容量是16),可以存16个字符原创 2021-01-26 14:04:24 · 422 阅读 · 2 评论 -
(十)工具类设计,包装类,String类等概括
常用类1.工具类的设计2.单例模式3.包装类4.BigDecimal类5.String6.StringBuilder和StringBuffer类1.工具类的设计把很多的通用的方法集合在一起装到一个类中,这个类就叫做工具类工具类起名:XxxUtil,XxxTool等 such as:ArrayUtil,JDBCUtils工具类存在的包起名:util,utils,tool等工具类如何设计?两种设计使用public static修饰使用类名调用工具方法构造器需要私有化,静态方原创 2021-01-24 14:00:11 · 539 阅读 · 1 评论 -
(九)面向对象(补)
面向对象(四)this关键字this关键字表示当前对象本身,一般用于类的内部,其内部存在一个地址,指向当前初始化的对象本身.new 一个对象时,其实产生了两个引用,两个引用执行同一内存空间(对象) 所以类中用this来表示当前对象,因为不用this,我们是不知道在创建对象时具体的对象名的用法1.调用成员变量用于解决成员变量与局部变量之间二义性2.调用其他实例方法同一类中非static方法互调3.调用本类其他构造方法可以调用本类的其他构造方法,但是必须写在第一句public Perso原创 2021-01-23 08:54:47 · 131 阅读 · 3 评论 -
(八)面向对象多态与接口的概括
面向对象(三)接口定义与多继承性接口时一种约定的规范,是多个抽象方法的集合接口中的方法时抽象方法,并不提供功能实现,体现了规范和实现相分离的思想接口不能创建对象,接口不存在构造方法接口体现了低耦合思想(接口用于模块间的解耦)所谓耦合度,表示组件之间的依赖关系。依赖关系越多,耦合性越强,同时表明组件的独立性越差接口可以被认为是一种特殊的类,定义接口使用interface关键字public interface 接口名{ //抽象方法1(); //抽象方法2();原创 2021-01-21 11:31:45 · 189 阅读 · 4 评论 -
(七)面向对象继承,覆盖,抽象类的概括
面向对象(二)1.this关键字2.继承思想3.方法覆盖4.抽象方法和抽象类5.Object中的常用方法this关键字成员变量与方法内部的变量重名时,会产生成员变量与局部变量的二义性这时候我们可以使用thisthis 关键字用来表示当前对象本身,或当前类的一个实例使用 this.变量名 的语法,此时访问的就是成员变量作用域链:作用域链:{}形成作用域,作用域可以嵌套,内层作用域可以访问外层作用域的变量当在作用域中访问一个变量var,首先在自身作用域中找该变量var,如果自身作用域能原创 2021-01-19 21:28:05 · 179 阅读 · 1 评论 -
(六)面向对象类与对象的概括
面向对象软件开发方式面向过程强调的是我该怎么去做,执行过程是先干什么,再做什么,一步一步的执行过程面向对象面向对象强调的是我该让谁来做,强调的是让别人来帮我做事.在面向对象的世界,如果要做事情,就必须要找对象为什么存在面向对象?对象是数据的载体,开发本质上就是把数据存入计算机中.需要一种更复杂的数据类型一定是要自定义的进而,软件开发就是把现实中的数据存储到计算机中,必须把共同的特征和行为抽象到计算机中作为类而存在,类又可以创建对象软件开发数据的展示,一定要找对象 ==>无论你做原创 2021-01-18 14:47:33 · 154 阅读 · 1 评论 -
(五)方法概括
方法方法的定义与调用方法:就是编写有特定功能的一段代码,并且可以被重复调用.格式:修饰符:public,stasic等. static修饰的方法可以使用类名.方法名调用返回值类型:看需求是否需要给调用者返回结果,void表示无返回值方法名遵循标识符规则与规范形式参数():有需要参数的可以在括号中定义,括号不能省略实际参数:调用某一具体方法是,实际传递的值.[修饰符] 返回值值类型 方法名(参数类型 参数名1,参数类型 参数名2,...){ 方法体; [return 返原创 2021-01-13 21:44:11 · 103 阅读 · 1 评论 -
(四)数组概括
数组JVM的内存模型JVm内存划分程序计数器:当前线程执行的字节码的行号指示器本地方法栈:native方法服务(为虚拟机使用)方法区:线程共享的存储区域,有方法加载,就会该方法的类,字节码等就会存在方法区中java虚拟机栈:方法被执行时会创建一个栈帧用于存储方法的局部变量,方法出口,动态链接等java堆:每次使用new关键字,都会在堆中开辟内存空间,所有对象实例以及数组都在堆中分配GC:垃圾回收器:JVM自动垃圾回收机制,自动清理无用的对象,释放内存空间数组的定义把具有相同类型的多个原创 2021-01-11 21:28:52 · 87 阅读 · 1 评论 -
(三)选择与循环语句概括
选择与循环语句选择结构顺序结构如果没有流程控制,程序按照从上往下顺序执行分支结构(选择结构)当面临多个选择时,我们可以采用分支结构,分为条件选择语句if ifelse等值匹配分支switchifif(boolean表达式){ 语句体;}布尔表达式为true才会运行if语句if-elseif(boolean表达式) { 语句体1;} else { 语句体2;}boolean表达式为true则执行语句体1,为false则执行其他语句if-els原创 2021-01-09 21:46:52 · 99 阅读 · 2 评论 -
(二)变量与运算符概括
变量与运算符数据类型,常量,变量常量固定不变的值, 直接量(字面量) .变量变量的定义顾明思义,是可以变化的量.其本质是一块内存空间,用来存放某一类型的常量特征:1.变量没有固定值,该区域的数据可以在同一类型变化2.可以被重复使用3.拥有名字,变量名4.有属于自己的存储空间 声明变量格式:数据类型 变量名 = 初始值;数据类型 变量名;变量命名规则同一作用域内,变量名不能重复可以用数字,字母,下划线,$来命名,但是不能数字开头变量命名规范满足驼峰法命名:原创 2021-01-08 21:48:03 · 217 阅读 · 1 评论 -
(一)Java开发环境与程序
Java开发环境与程序1.起源java实际诞生是在1991年,1995年是官方信息,原属SUN公司,后来被甲骨文(Oracle)公司收购.java三大平台:java SE :java标准平台,开发软件用于电脑桌面 javaME :java微型平台,开发移动设备上的软件(基本没人用了) javaEE:java企业平台,针对WEB方向2.跨平台原理java文件通过编译产生.class字节码文件,在加载到不同系统上的java虚拟原创 2021-01-06 20:03:07 · 144 阅读 · 1 评论 -
css选择器基础
css选择器什么是csscss是级联样式表,是一套设置规则,可以用于控制web页面布局一 CSS引入方式三种引种方式1.head引入,通过style标签2.外部引入,通过link标签引入外部已经定义好的css样式资源3.标签内引入(即属性引入)<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <!-- 1.head引入 --> &l原创 2021-01-03 20:36:07 · 181 阅读 · 2 评论 -
数据连接池的概述
数据连接池概念可以看成是一个容器(集合),存放多个数据连接。当系统初始化后,容器被创建,申请连接多个对象来放进容器,当用户访问数据库时,可以从容器中获取连接对象,使用完后归还连接对象到容器中。优点:节省资源,提高访问效率。实现:标准接口: javax.sql包下的DataSource 方法: 获取连接: getConnection() 归还连接: Connection.close() 技术: 1.C3P0:数据库连接池技术 2.Druid原创 2020-12-08 15:16:16 · 149 阅读 · 1 评论 -
关于JDBC工具类实现
JDBC工具类JDBCUtils简化JDBC代码通过配置文件进行jdbc.properties url= user= password= dirver=JDBCUtils工具类代码实现public class JDBCUtils { private static String url; private static String user; private static String password; private stati原创 2020-12-02 21:31:54 · 90 阅读 · 1 评论 -
关于JDBC的概述
JDBC概念JDBC (Java DataBase Connectivity) java数据库连接即java语言操作数据库,本质是一套操作所有关系型数据的规则(接口),数据厂商去实现接口,提供数据库驱动jar包。真正执行的是驱动jar包中的实现类好处:程序员只需调用JDBC接口中的方法去访问数据库程序,不用关注类如何实现,同一套代码,可以支持其他数据库基本步骤流程1.导入驱动jar包2.注册驱动 Class.forName("com.mysql.jdbc.Driver");3.获取原创 2020-12-02 21:03:36 · 134 阅读 · 1 评论 -
关于缓冲流、转换流、序列化流、打印流的概述
缓冲流、转换流、序列化流、打印流缓冲流在基本流对象基础上进行增加概述缓冲流(也叫高效流),是对4个基本的FileXxx流的增强字节缓冲流:BufferedInputStream,BufferedOutputStream字符缓冲流:BufferedReader,BufferedWriter原理:创建流对象时,会创建一个内置缓冲区数组,通过缓冲区减少系统IO次数,提高读写效率字节缓冲流构造方法public BufferedInputStream(InputStream in) :原创 2020-11-18 18:03:45 · 124 阅读 · 0 评论 -
关于IO流的概述
IO流IO的概述什么是IOjava.ioI/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。数据在设备间的传输可以看成一种数据流动,称为流。以内存为基准,按照流动方向,分为输入input 和输出output,流向内存是输入流,流出内存是输出流IO的分类数据的流向:输入流和输出流输入流:将数据从 其他设备 上读取到 内存 中的流输出流:将数据从 内存 中写到 其他设备 上的流 /* 输入//硬盘 ---原创 2020-11-17 21:14:11 · 117 阅读 · 0 评论 -
File类、递归的概述
File类、递归File类概述java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。构造方法public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。参数: String pathname:字符串的路径名称 路径可以是以文件结尾,也可以以文件夹结尾 路径可以是相对路径,也可以是绝对路径 路径可以存在,也可以是不存在 创建File对象,只是原创 2020-11-16 21:18:53 · 90 阅读 · 0 评论 -
关于线程池、Lambda表达式的概述
线程池、Lambda表达式等待唤醒机制线程间的通信概念:多个线程在处理同一个资源,但是处理的动作(线程任务)却不相同,需要线程通信来解决线程之间对同一个变量的使用或操作,即是多个线程在操作同一份数据时, 避免对同一共享变量的争夺。(通过等待唤醒机制使线程有效利用资源)等待唤醒机制多个线程间的一种协作机制就是在一个线程进行了规定操作后,就进入等待状态(wait()), 等待其他线程执行完他们的指定代码过后 再将 其唤醒(notify());在有多个线程进行等待时, 如果需要,可以使用 notify原创 2020-11-16 16:42:47 · 183 阅读 · 2 评论 -
关于线程的概述
线程多线程并发与并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)线程与进程进程:指一个内存中运行的应用程序,每一个进程都有独立的内存空间。一个程序可以同时运行多个进程,进程是系统运行程序的基本单位线程:线程是进程中的一个执行单位,负责当前进程中程序的执行,一个进程至少有一个线程。一个进行可以有多个线程(多线程程序)线程调度:分时调度:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。抢占式调度:优先原创 2020-11-15 13:21:11 · 241 阅读 · 1 评论 -
关于异常的概述
异常异常概念异常的意思不正常的意思。在程序中,可以理解为:在程序执行过程中出现意外,非正常,导致JVM的运行停止异常在JAVA中是一个类,产生异常就是创建异常对象并且抛出异常对象处理异常的方式一般是中断处理体系//异常机制是帮我们找出程序中出现的问题,异常并不是指语法错误,编译不通过,没有字节码产生。异常根类:java.lang.Throwable其中有两个子类:java.lang.Error与java.lang.Exception异常一般指:java.lang.Exception原创 2020-11-13 23:24:07 · 298 阅读 · 1 评论 -
关于Map的概述
MapMap集合概述IP地址与主机名,身份证号码与个人,这种一一对应的关系,被称为映射。在java中,有用来专门存放这种对象关系的集合类。java.util.Map接口Map接口与Collection接口的存储数据形式不同[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bzaGB9fa-1605169360421)(D:\JavaWolf\思维导图\Collection接口与Map接口的区别.png)]Collection中的集合,元素是孤立存在的(单身),存储原创 2020-11-12 16:25:12 · 707 阅读 · 8 评论 -
数据结构,List,Set,Collections的理解
数据结构,List,Set,Collections常见的数据结构数据存储的常用结构有:栈、队列、数组、链表和红黑树。栈栈:stack,也称为堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。采用该结构的集合,堆元素的存储有下面这些特点先进后出:即最开始存进去的元素,是最后才能被取出的。举例弹夹,最开始的子弹被压在最下面,只有上面的子弹打完才能轮到它栈的入口、出口都是栈的顶端位置**压栈:**存元素,即把元素存到顶端位置,就原创 2020-11-09 18:01:52 · 200 阅读 · 2 评论 -
Collection、泛型的概括
Collection、泛型Collection集合概述集合:集合可以理解为是一种容器,用来存储多个数据集合与数组之间的区别是什么?数组的长度是固定的,元素可以重复,存储基本数据类型集合存储的是对象,长度不固定,对象的类型可以不同集合框架按存储结构可分为两大类:单列集合java.util.Collection,双列集合java.util.MapCollection:单列集合类的根接口,其中有两个重要子接口:java.util.List和java.util.Set。 List的特点是元原创 2020-10-28 21:37:07 · 168 阅读 · 1 评论 -
Object类 常用API基本概括
Object类 常用APIObject类特点: java.lang.object 是java所有类的根类(父类),里面所描述的方法子类都能使用方法: toString toString方法返回该对象的字符串表示, 对象的类型+@+内存地址值 覆盖重写toString public class Person { private String name; private int age; ..原创 2020-10-23 19:56:17 · 124 阅读 · 0 评论 -
常用类,单例设计模式,包装类(装箱/拆箱)
什么是工具类?工具类如何设计?把一些完成通用功能的方法分类放到类中中,就叫工具类.需要的时候直接调用工具类.两种设计 一是用 public static 静态修饰的,直接用工具类名调用方法,但必须要把工具类的构造器私有化,防止工具类的对象调用静态方法. 二是没有用static静态修饰,使用工具类的对象来调用工具方法,把工具类设计为单例模式什么是单例设计模式?有哪些实现方式?单例设计模式,用来规范代码,可以是代码被重复利用.目的:保证应用中某一个类中只有一个实例.实现方式:一:饿汉模式原创 2020-10-23 19:55:44 · 310 阅读 · 0 评论 -
选择语句和循环语句的理解
1. Java代码的执行顺序java代码执行顺序按照从上到下执行2. 什么时候需要使用选择结构当多个元素存在判断的时候,可以使用选择结构.或者需要对结果进行详细分类,逻辑运算判断时可以使用.3. if-elseif-elseif-else的语法和执行流程语法:if-elseif-elseif-elseif(boolean表达式1){ 语句体1;}else if(boolean表达式2){ 语句体2;}else{ 语句体3;}执行流程:首先进入布尔表达式1,如果为t原创 2020-10-23 19:54:21 · 262 阅读 · 0 评论 -
this,super,static ,final的作用理解
this的作用是什么?都有哪些用途?什么是this,this表示的是当前对象 this用在构造器和方法当中 构造器:表示当前对象 方法:哪个对象调用this的方法,哪个对象就是this this可以用来解决局部变量与成员变量的二义性 构造器重载的互调 普通方法的互调super的作用是什么?都有哪些用途?super表示当前对象的父类对象 在子类方法中,要想调用父类方法,需要使用super 同理,在子类构造器中,调用父类构造器也要用supe原创 2020-10-22 17:31:12 · 191 阅读 · 0 评论