学习笔记
强子在学习
持之以恒
展开
-
Linux实现定时操作
Linux实现定时操作原创 2022-07-09 16:42:39 · 737 阅读 · 1 评论 -
MyBatis (六)MyBatis关联映射(下)
三、一对多查询每个老师有多少学生1.第一种形式:按照结果嵌套处理SELECT teacher.id,teacher.name,student.name FROM teacher LEFT JOIN student on student.t_id = teacher.id①.设置实体类public class Student { private Integer id; private String Sname; private String sex;原创 2022-04-23 16:54:02 · 770 阅读 · 0 评论 -
MyBatis (六)MyBatis关联映射(上)
关联映射一、创建表结构1.学生表SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for student-- ----------------------------DROP TABLE IF EXISTS `student`;CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_.原创 2022-04-23 16:45:14 · 1318 阅读 · 0 评论 -
MyBatis (五)MyBatis动态SQL
一、动态sql的简述什么是动态sql:在不同条件下拼接不同的sqlMybatis框架的动态sql技术是一种根据特定条件动态拼接SQl语句的功能,他存在的意义是为了解决拼接SQL语句字符串时的痛点问题。比如我们在用淘宝之类的软件在进行商品属性选择的时候,我们会发现我们可以选择的商品的属性有很多条件,其中一些条件可以选择也可以不选择,那么如果使用传统的方式进行查询,反而在拼接sql的时候会造成一些列的问题。二、动态sql的使用案例1. <if>标签---(注意:usernam原创 2022-04-23 15:49:00 · 3498 阅读 · 1 评论 -
MyBatis (四)MyBatis获取参数值的两种方式
Mybatis获取参数值得两种方式:${}和#{}${}的本质是字符串拼接,#{}的本质是占位符赋值${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段赋值时,可以自动添加单引号;1.配置sql输出日志注意:要在配置文件的第一行进行配置<!-- settings:控制mybatis的全局行为--><settings> &.原创 2022-04-16 14:30:30 · 479 阅读 · 0 评论 -
MyBatis (三)MyBatis参数详解
1. parameterType1. 简单数据类型int double类型 String类型简单的写法:java.lang.Integer --> int integer Int Integer 都可以,框架提供简写的方式。2. POJO(JavaBean实体类)对象类型,默认是不能简写,可以配置。User对象2. resultType1. 返回简单数据类型int double long String2. 返回POJO数据类型返回User对象类型3.原创 2022-04-16 14:20:09 · 448 阅读 · 0 评论 -
MyBatis (二)代理Dao方式的增删改查
1. 创建项目2. UserDao接口代码import com.qcby.entity.User;import java.util.List;public interface UserDao { /** * 全部查询 * @return */ public List<User> findAll(); /** * 根据id进行查询 * @param id */ public User f原创 2022-04-16 14:16:16 · 504 阅读 · 0 评论 -
MyBatis (一)配置MyBatis
第一章:框架的概述JDBC存在的问题我们要想研究mybatis就必须知道jdbc所存在的问题,那我那么我们首先来复习一下jdbc操作数据库的大致流程1.加载数据库驱动2.创建并获取数据库连接对象connection3.通过连接对象获取会话对象statement4.编写sql语句5.如果有参数的话需要通过Statement设置参数5.执行sql语句并获取结果6.关闭资源上述是最原始的JDBC操作数据库的方式,有以下问题:数据库连接的频繁创建、释放浪费资源进而影响系统性能。原创 2022-04-16 14:39:02 · 611 阅读 · 0 评论 -
7.Maven依赖的基本概念
7.1 依赖的基本配置 根元素project下的dependencies可以包含多个 dependence元素,以声明多个依赖。每个依赖都应该包含以下元素: 1. groupId, artifactId, version : 依赖的基本坐标, 对于任何一个依赖来说,基本坐标是最重要的,Maven根据坐标才能找到需要的依赖。 2. Type: 依赖的类型,大部分情况下不需要声明。 默认值为jar 3. Scope: 依赖范围(compile,test,provided,...原创 2022-04-07 15:12:40 · 1060 阅读 · 0 评论 -
6.Maven打包操作
对于企业级项目,无论是进行本地测试,还是测试环境测试以及最终的项目上线,都会涉及项目的打包操作。对于每个环境下的项目打包,对应的项目所需要的配置资源都会有所区别,实现打包的方式有很多种,可以通过ant,或者通过idea 自带的打包功能实现项目打包,但当项目很大并且需要的外界配置很多时,此时打包的配置就会异常复杂,对于maven 项目,我们可以用过 pom.xml 配置的方式来实现打包时的环境选择,相比较其他形式打包工具,通过maven 只需要通过简单的配置,就可以轻松完成不同环境下项目的整体打包。使用i原创 2022-04-07 15:10:59 · 2327 阅读 · 0 评论 -
5.Maven环境下构建多模块项目
使用maven提供的多模块构建的特征完成maven环境下多模块的项目的管理和构建这里以四个模块为例来搭建项目,以达到通俗易懂的初衷模块 maven_parent -- 基模块,也就是常说的parent (pom) 模块 maven_dao -- 数据库访问层,例如jdbc操作(jar) 模块 maven_service -- 项目的业务逻辑层(jar) 模块 maven_controller -- 用来接收请求,相应数据(war)1.创建maven_parent项目原创 2022-04-07 15:00:27 · 3204 阅读 · 0 评论 -
4.Maven仓库的基本概念
当第一次运行Maven命令的时候, 你需要Internet链接, 因为它需要从网上下载一些文件。 那么它从哪里下载呢?它是从Maven默认的远程库下载的。 这个远程仓库有Maven的核心插件和可供下载的jar文件。当Maven根据坐标寻找构件的时候,它首先会查看本地仓库,如果本地仓库存在,则直接使用; 如果本地没有,Maven就会去远程仓库查找,发现需要的构件之后,下载到本地仓库再使用。 如果本地仓库和远程仓库都没有,Maven就会报错。远程仓库分为三种:中央仓库,私服, 其他公共库。中央仓库.原创 2022-04-07 14:43:35 · 527 阅读 · 0 评论 -
Linux服务器安装kafka
1.下载安装包2.服务器上传安装包进入usr/local文件夹下,创建kafka文件夹mkdir kafka然后进入文件夹,rz上传安装包解压安装包tar -zxvf kafka_2.11-2.4.0.tgz3.修改配置文件进入config目录cd config打开配置文件vim server.properties然后执行以下操作//第一步:放开listenerslisteners=PLAINTEXT://127.0.0.1:9092原创 2022-04-06 19:02:03 · 2295 阅读 · 0 评论 -
3.IDEA编译器集成Maven环境/Maven项目的创建
选择:“File” ---> "Othoer Setting" --> "Settings for New Projects..." --->搜索“Maven”3.1创建java项目3.1.1 新建项目创建resources目录利用maven命令去编译这个项目利用maven命令去打包3.2创建web项目3.2.1 新建项目新建web项目和创建java项目基本一致,区别在于选择Maven模板...原创 2022-04-06 15:59:14 · 1075 阅读 · 0 评论 -
2.maven的安装配置
2.1 Maven的安装配置2.1.1检测jdk的版本jdk版本1.7及以上版本2.1.2下载maven(请自行寻找资源下载)2.1.3配置maven环境变量解压后把maven的根目录配置到下同环境变量中Maven_HOME,将bin目录配置到path变量中。注:maven解压后存放的目录不要包含中文和空格。编辑环境变量 :变量名:MAVEN_HOME 变量值:自己的安装目录编辑系统变量 Path 添加变量值:%MAVEN_HOME...原创 2022-04-02 22:58:54 · 77 阅读 · 0 评论 -
1.maven简介
1.1 简介maven最主要体现在两个词上:项目和管理。maven给我们整个开发团队找出了一种能够更加科学的去管理我们项目的思想。maven通过使用配置文件的方式使得项目在管理和交接的过程中成本变得非常低。maven提出了一种叫做maven仓库的概念,使得我们可以将第三方和我们需要引用的项目都放置在maven仓库当中。如果其他人或项目组也需要使用,就可以直接通过maven进行配置就行。这样就可以将人员成本、沟通成本等等都进行降低。如果还不理解我们举个例子:加入我们现在想做一份菜:糖醋排骨。如果我们想原创 2022-04-02 22:44:52 · 334 阅读 · 0 评论 -
HashMap和Hashtable的区别
1 HashMap不是线程安全的 HashMap是map接口的子类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。2 HashTable是线程安全的 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。...原创 2022-03-31 17:35:49 · 120 阅读 · 0 评论 -
Java中==和eqauls()的区别
==是运算符,用于比较两个变量是否相等,对于基本类型而言比较的是变量的值,对于对象类型而言比较的是对象的地址. equals() 是Object类的方法,用于比较两个对象内容是否相等.默认Object类的 equals() 实现如下: public class Object { ...... public boolean equals(Object obj) { return (this == obj); } ......}原创 2022-03-31 17:28:04 · 1374 阅读 · 0 评论 -
Linux服务器安装zookeeper
zk安装教程(单机版)#先将安装包上传到服务器tar -xvf apache-zookeeper-3.6.3-bin.tar.gz cp zoo_sample.cfg zoo.cfg#创建zk数据文件夹mkdir data#修改配置文件,dataDir改为刚才创建的data目录vim zoo.cfg#进入到bin,启动 ./zkServer.sh startzookeeper增删改查#查询ls /#创建(/节点 内容)create /node_1 123#查询具体节原创 2022-03-31 17:22:49 · 3556 阅读 · 0 评论 -
Linux服务器安装redis
java环境配置#方案1:自己下载jdk解压#修改环境变量vim /etc/profile#添加环境变量JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64JRE_HOME=$JAVA_HOME/jreCLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libPATH=$PATH:$JAVA_HOME/bin:$J原创 2022-03-31 17:16:17 · 360 阅读 · 0 评论 -
throws和throw的区别
throws关键字定义一个方法的时候可以使用throws关键字声明。使用throws关键字声明的方法表示此方法不处理异常,而交给方法调用处进行处理。throws关键字格式:public class ThrowsDemo01 { public static void main(String args[]){ Math m = new Math() ; // 实例化Math类对象 try{ System.out.pri原创 2022-03-18 20:14:47 · 849 阅读 · 0 评论 -
Java异常
首先我们来看一下java异常体系结构图一、java异常体系Thorwable类(表示可抛出)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常, 这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。1、Error与Exception Error是程序无法处...原创 2022-03-18 20:12:19 · 182 阅读 · 0 评论 -
八大排序之归并排序
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。java代码实现:import java.util.Arrays;import java.util.Random;public class guibingSort { public static void main原创 2022-03-13 14:50:38 · 80 阅读 · 0 评论 -
八大排序之快速排序
快速排序:运用到了递归的方法。java代码实现:import java.util.Arrays;public class quickSort { public static void main(String[] args) { int[] arr = {5,7,8,9,1,4,3,2}; quickSort(arr,0,arr.length-1); System.out.println(Arrays.toString(arr)); }原创 2022-03-12 11:29:44 · 134 阅读 · 0 评论 -
八大排序之堆排序
从下往上进行构建。大顶堆从上往下看,上面大下面小,排好序后将顶部最大值和最后面的值互换,互换后将下面最大值暂时屏蔽,其余元素按大顶堆排序,然后再交换,再排序,最终效果如下:(参考网站https://www.cnblogs.com/chengxiao/p/6129630.html)java代码实现:import java.util.Arrays;public class duiSort { public static void main(String[] args) { int...原创 2022-03-12 11:28:32 · 638 阅读 · 0 评论 -
八大排序之基数排序
基数排序:先看个位,按个位是0,1,2……进行分组,然后依次拿出排序,然后再按十位排序,进行分组,依次拿出排序,以此类推。java代码实现:import java.util.Arrays;public class JishuSort { public static void main(String[] args) { int[] arr = new int[] {100,15,10,2,23,14,61,97,54,101,13,65}; redixSort(arr); }原创 2022-03-12 11:26:48 · 435 阅读 · 0 评论 -
八大排序之希尔排序
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。(比如8个数,15一组,26一组,37一组,48一组,分别组内进行插入排序,然后1357一组,2468一组,组内进行插入排序,最后12345678一组,进行插入排序)java代码实现:import java.util.Arrays;public class ShellSort { public static void main(原创 2022-03-12 11:25:31 · 200 阅读 · 0 评论 -
八大排序之插入排序
插入排序:从前往后,第一个作为基准,后面的数与前面比较,然后插入适当位置。使用java代码实现插入排序import java.util.Arrays;public class InsertSort { public static void main(String[] args) { int[] arr = new int[] {5,7,4,2,0,3,1,6}; insertSort(arr); } public static void insertSort(int[] arr)原创 2022-03-12 11:24:16 · 315 阅读 · 0 评论 -
八大排序之选择排序
选择排序:从前往后找到最小数,将其与第一位(或最后一位)交换,以此类推。使用java代码实现选择排序import java.util.Arrays;public class SearchSort { public static void main(String[] args) { int[] arr = new int[] {5,7,4,2,0,3,1,6}; searchSort(arr); } public static void searchSort(int[] arr)原创 2022-03-12 11:23:12 · 42 阅读 · 0 评论 -
八大排序之冒泡排序
冒泡排序:从前往后两两进行比较。使用java代码实现冒泡排序import java.util.Arrays;public class BubbleSort { public static void main(String[] args) { int[] arr = new int[] {5,7,4,2,0,3,1,6}; bubbleSort(arr); } public static void bubbleSort(int[] arr) { for(int i = 0;原创 2022-03-12 11:21:37 · 435 阅读 · 0 评论 -
Linux指令
ls查看信息,ls -a查看隐藏信息“/”代表根目录,cd /是进入根目录,蓝色的是文件夹,浅蓝色的是快捷方式,类似于链接,白色是文件,红色是压缩包文件mkdir创建文件夹touch创建文件vi打开文件,进入后点a进入编辑(i也可以进入编辑),esc退出编辑:wq w保存q退出(一定要先打冒号!)cat查看文件,more也是查看文件,cat是将文件内容全部展开,more是内容多的时候分批展示,展开一部分,这样在文件内容过多的时候不易使系统崩溃cd ../是返回上一级(后边可以继续原创 2022-03-12 11:19:11 · 1096 阅读 · 0 评论 -
java浅拷贝和深拷贝
对于java拷贝的理解在java语言中,当我们需要拷贝一个对象的时候,常见的会有两种方式的拷贝;深拷贝和浅拷贝。浅拷贝只是拷贝了原对象的地址,所以原对象的任何值发生改变的时候,拷贝对象的值也会随之而发生变化。深拷贝则是拷贝源对象的所有值而不是地址,所以即源对象的值发上变化时,拷贝对象的值不会发生变化。一:浅拷贝浅拷贝示意图:我们来做一个基本的演示:定义一个User类public class User { private String username = "张三"原创 2022-03-12 11:13:52 · 453 阅读 · 0 评论 -
java 代理
代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法java中的代理模式:*定义:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用*目的:①:通过代理对象的方式间接的访问目标对象,防止直接访问目标对象给系统带来不必要的复杂性②:原创 2022-03-12 11:06:26 · 7487 阅读 · 0 评论 -
java 内部类
内部类是一个定义在另一个类中的类。那为什么要使用内部类呢?其主要原因有以下三点:1.内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据2.内部类可以对统一包中的其他数据隐藏起来,增强面向对象的封装性3.当想定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷内部类代码示例:public class Person { //人在出生的时候选择性别 private String[] sex = {"男性","女性"}; class Xiaoming{ privat原创 2022-03-06 11:03:05 · 64 阅读 · 0 评论 -
抽象方法、接口interface
①在抽象类中创建抽象方法,需要abstract字段,过于繁琐,因此出现了接口interface,在接口中,抽象方法可以直接定义,不需要加上abstract。②在接口中,只能定义常量和抽象方法:因此,接口中不能new对象,不能实例化。③类要实现接口需要implements,一个类要实现接口,必须要把接口里面的所有方法实现:④接口支持多实现,类不可以进行多继承,通过接口可以间接地实现多继承:⑤一个类如果既要实现接口,又不想实现接口所有方法,可以把这个类定义为抽象类(加上abstra...原创 2022-03-06 10:49:01 · 205 阅读 · 0 评论 -
前后端交互——后端知识点总结
解决中文乱码 //中文乱码 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); 设置后端给前端发送的数据格式类型 response.setContentType("text/json;charset=utf-8");//响应json格式的数据 response.setContentType("text/html;charset=utf-8");//响应字符串格式的数据原创 2022-02-13 09:22:50 · 516 阅读 · 0 评论 -
前后端交互——前端知识点总结
jquery使用,引用jquery底层文件,掌握jquery语法:$(selector).action()//jquery核心语法 文档就绪函数$(document).ready(function()) 简化写法$(function()),等待html渲染完毕之后再执行js代码,保证执行js代码中需要寻找的html元素已经存在 垂直居中的原理及代码实现,原理:(窗口的高度-主体的高度)/2就是主体的上外边距,jquery实现代码,$(window).height()是获取窗口的高度 css中的8种基本原创 2022-02-13 09:14:05 · 284 阅读 · 0 评论 -
eclipse实现前后端交互的初步操作
首先new创建,选择Other(在最下面),然后然后next起名,再两次next后进行选择创建完成如下:所有的前端代码写在WebContent里面;所有的Java代码写在Java Resource里的src里面。创建html文件:在window里面找到Preferences(最下面就是):在这里选择文件路径,选择之前在群里下载的文档,然后JRE选择jdk:之后finish就行。最后运行html:以上就是全部步骤了。...原创 2022-01-20 21:10:04 · 3275 阅读 · 3 评论 -
泛型数组列表;对象包装器与自动装箱;参数数量可变的方法;枚举类
一、泛型数组列表泛型可以代表任意类型。泛型不能代表基本类型,只能代表引用类型。public XXX[] arr = (XXX[])new Object[20]; //只能这样写,不能=new XXX[];二、对象包装器与自动装箱引用类型转基本类型叫拆箱,反过来叫装箱。什么是128陷阱?看下面的代码:import java.util.*;public class Test{ public static void main(String[] args){原创 2022-01-20 21:04:36 · 182 阅读 · 0 评论 -
Object:所有类的超类
Object默认是所有类的父类。以上是Object自带的9个方法。下面我们来详细介绍下这几个方法:equals :比较的是两个句柄引用的值是否是同一地址,返回true或false;getClass :反射获取类信息;hashCode :获取对象的散列码(哈希就是散列),散列代表无规则的分布,但是分布地相对均匀;通常用数组去实现散列,往数组里面无规律的放数据;notify :唤醒一个线程,让线程进入就绪状态;notifyAll :唤醒全部线程;toString :默认的是输出.原创 2022-01-20 20:52:56 · 390 阅读 · 0 评论