- 博客(60)
- 收藏
- 关注
原创 函数式编程-Stream流学习第二节-中间操作
Stream还是很简单和方便的,因为我也是刚学,使用比较少,所以介绍比较笼统和简单,但是只要实操一下,就能很快记住。
2023-08-26 16:57:30 421
原创 函数式编程-Stream流学习第一节
Lambda表达式是JDK1.8的一个语法糖,它可以对某些匿名内部类的语法进行简写。是函数式编程的一个重要体现,让我们不用关注是什么对象,而且关注于对数据进行了什么样的操作。
2023-08-22 21:45:28 322
原创 一位毕业生的自我分享
我的大学是一个普通二本,学的是物联网工程专业。二本院校大家也都知道,是考研的主力军,我的很多同学从大二开始就决定考研了,而我从大二就决定毕业直接就业,他们考研的原因也很简单,就是不会编程,也不对编程感兴趣。虽然我的专业是物联网工程,但是从毕业的情况下来看,大多数都是从事软件开发行业。我不考研的原因也简单 1.英语不太好 2.考研太累了,太卷了(我们班15个人考研,就上了4个)从大二开始,也用Java写了几个所谓的系统,我记得影响最深的是我第一次学习使用Mybatis时,获取了sqlSessionFactor
2022-06-29 09:53:01 1534 1
原创 反射学习总结
反射是Java被视为动态语言(可以在运行时改变自身结构的语言)的关键,反射机制允许程序在运行期间借助Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性和方法。优点:可以动态创建对象和编译,体现出很大的灵活性缺点:对性能有影响,使用反射基本上是一种解释操作,我们告诉JVM,我们想希望做什么,并且要它满足我们的要求。这类要求总是慢于直接执行相同的操作。一个类只有一个Class类下面这些类型都可以有Class对象1.class:外部类,成员(成员内部类,静态内部类),局
2022-06-24 14:04:01 317
原创 注解学习总结
Annotation是JDK1.5后引入的新技术不是程序本身,可以对程序做出解释(这一点跟注释(comment)没什么区别)可以被其他程序读取(如编译器)定义在java.lang.Override中,此注解只适合于修辞方法,表示一个方法打算重写超类中另一个方法声明当一个类型或者类型成员使用@Deprecated修饰的话,编译器将不鼓励使用这个被标注的程序元素。用来抑制编译时的警告信息3.元注解元注解的作用就是负责注解其他注解简单来说就是被描述的注解可以用在什么地方 ● ElementType.C
2022-06-22 09:22:48 175
转载 Java异常学习总结
异常本质上是程序上的错误,包括程序逻辑错误和系统错误在Java中异常被当做对象来处理,根类是java.lang.Throwable类,在Java中定义了很多异常类(如OutOfMemoryError、NullPointerException、IndexOutOfBoundsException等),这些异常类分为两大类:Error和Exception。 Error是无法处理的异常,比如OutOfMemoryError,一般发生这种异常,JVM会选择终止程序。因此我们编写程序时不需要关心这类异常。 Exce
2022-06-16 17:33:36 665
原创 Java集合
由来Java是面向对象的语言,我们在编程的时候自然需要存储对象的容器,数组可以满足这个需求,但是数组初始化时长度是固定的,但是我们往往需要一个长度可变化的容器,因此,集合出现了。集合与数组的区别(1)长度区别:集合长度可变,数组长度不可变(2)内容区别:集合可存储不同类型元素,数组存储只可单一类型元素(3)元素区别:集合只能存储引用类型元素,数组可存储引用类型,也可存储基本类型Java集合框架图:Java集合要从两大接口说起,一为Collection接口,二为Map接口,它们是同一个层次的。Collecti
2022-06-16 16:15:44 114
原创 Java基础语法
凡是可以自己命名的地方都叫标识符。例如:包名,类名,方法等。定义合法标识符规则类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。方法名,变量名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ包名:多单词组成时所有字母都小写:xxxyyyzzz定义:被java语言赋予了特殊含义,用作专门用途的字符串。特点
2022-06-11 14:34:49 225
原创 依赖注入之Set注入
实体类package POJO;import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.Set;public class User { private String name; private Address address; private String[] books; private List<String> hobbys;
2022-03-02 20:37:46 94
原创 Spring配置
<!--别名--> <alias name="user" alias="myuser"></alias> <!-- id是bean的唯一标识符,也是我们的对象名 class是bean对象的全限命名 name也是别名,而且可以起多个 --> <bean id="qwe" class="POJO.User" name="q,w"> <constructo..
2022-03-01 20:43:41 192
原创 IOC创建对象的方式
1.使用无参构造方法,也是默认方法实体类package POJO;public class User { private String name; public User(String name){ this.name=name; } public String getName() { return name; } public void setName(String name) { this
2022-02-26 17:02:53 99
原创 Spring第一个程序
首先我们还是创建一个类POJO类package com.xi.POJO;public class Hello { private String str; public String getStr() { return str; } public void setStr(String str) { this.str = str; } @Override public String toString()
2022-02-26 16:13:27 199
原创 初学Spring
Spring为JavaEE开发提供了一个轻量级的解决方案,主要表现为,IOC(或者叫做DI)的核心机制,提供了bean工厂(Spring容器),降低了业务对象替换的复杂性,提高了组件之间的解耦。 AOP的将一些通用任务,如安全、事务、日志等集中进行管理,提高了复用性和管理的便捷性 ORM和DAO提供了与第三方持久层框架的良好整合,简化了底层数据访问。 提供了优秀的Web MVC框架。可以说Spring是贯穿表现层、业务层、持久层,为javaEE提供一站式解决方案的框架。此外,使用Spring还有
2022-02-21 20:54:28 119
原创 Mybatis学习总结
1. 什么是MybatisMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。2. 编写Mybatis的步骤首先我们要写一个Mybatis的核心配置文件,我们一般叫Mybatis-config.xm.
2022-02-08 21:44:53 634
原创 Mybatis一级,二级缓存
1. 什么是缓存1 存在内存中的临时数据2.将用户经常查询的数据存放到缓存中,用户查询数据就不用从磁盘上查询,从缓存里面查询。从而提高查询效率,提高了高并发系统的性能问题为什么用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率什么数据能使用缓存?经常查询并不经常修改的数据2. Mybatis缓存Mybatis包含一个十分强大的查询缓存特性,它可以非常方便的定制和配置缓存,缓存可以极大的提高查询效率Mybatis默认定义了两级缓存:一级缓存和二级缓存默认情况下只
2022-01-23 17:09:17 613
原创 Mybatis之动态SQL
我们发现写的 SQL 语句都比较简单,如果有比较复杂的业务,我们需要写复杂的 SQL 语句,往往需要拼接,而拼接 SQL ,稍微不注意,由于引号,空格等缺失可能都会导致错误。 那么怎么去解决这个问题呢?这就是本篇所讲的使用 mybatis 动态SQL,通过 if, choose, when, otherwise, trim, where, set, foreach等标签,可组合成非常灵活的SQL语句,从而在提高 SQL 语句的准确性的同时,也大大提高了开发人员的效率。我对动态SQL的理解就...
2022-01-17 21:27:09 613
原创 Mybatis一对多,多对一
1.一对多一对多很好理解,就像是一个老师有很多个学生,那么就是一对多,一个老师对应多个学生学生实体类package Models;public class Student { private int cid; private String cname; private int teacherid; public Student(int cid, String cname, int teacherid) { this.cid = c...
2022-01-16 16:22:56 224
原创 Mybatis配置之别名优化
它主要的目的是用来减少类完全限定名的冗余第一种:<typeAliases> <typeAlias type="pojo.User" alias="user"/> </typeAliases>第二种:扫描实体类的包,它的默认名是这个实体类的类名,首字母小写<typeAliases> <package name="pojo"/> </typeAliases>
2022-01-05 20:42:32 272
原创 Mybatis第一次学习记录
1. 什么是 MyBatis?MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。2. Mybatis操作步骤首先我们要写一个Mybatis的核心配置文件,我们一般叫Mybatis-config.xml
2021-12-30 21:37:18 535
原创 Mysql学习总结
首先我们说下数据库,数据库有两种分别是关系型数据库和非关系性数据库一、关系型数据库关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织优点:1、易于维护:都是使用表结构,格式一致;2、使用方便:SQL语言通用,可用于复杂查询;3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。缺点:1、读写性能比较差,尤其是海量数据的高效率读写;2、固定的表结构,灵活度稍欠;3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。二
2021-12-19 21:19:46 1109
转载 数据库三大范式
目前关系型数据库有6种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。而通常我们用的最多的就是第一范式(1NF)、第二范式(2NF)、第三范式(3NF),也就是本文要讲的“三大范式”。第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项。举例说明:在上面的表中,“家庭信息”和“学校信息”列均不满足原子性的要求,故不满足第一范式,讲大白话就是有歧义,我们要保证每一列都不可再分。.
2021-12-14 21:15:13 289
原创 事务ACID原则
谈到事务一般都是谈ACID这四点1.原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,通俗的讲就是事务的操作要么都成功,要么都失败2.一致性(Consistency)事务前后数据的必须保持一致3.隔离性(Isolation)事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离4.持久性(Durability)通俗的讲就是事务一旦提交则不可逆,被持久化到数据库中这里举一个用的最多的
2021-12-11 15:50:46 494
原创 数据库聚合函数
1. 常用函数常用函数这里就不过多的阐述和演示,大家感兴趣的话,可以去官网看官网地址:MySQL :: Developer Zone我们主要讲聚合函数2. 聚合函数聚合函数是我们经常使用的函数常用聚合函数名称 描述 1. count() 计数 2. sum() 求和 3. avg() 平均值 4. max() 最大值 5. min() 最小值 2.1 count()说到count那么就不得不说到count的三种方式
2021-12-09 21:13:59 1826
原创 数据库连表查询join
操作 解释 inner join 如果表中有匹配的,就返回行 left join 会从左表中返回值,即使右表中没有匹配 right join 会从右表中返回值,即使左表中没有匹配 -- 我们想看学号,学生姓名,成绩,科目 -- 明确交叉点,就是两张表里面都有的,作为查询条件 SELECT a.id,myname,score,course FROM `aaa` AS a INNER JOIN `bbb` AS b WHERE a.id=b.c...
2021-12-04 17:20:49 616
原创 数据库模糊查询
常用的模糊查询语句有1. like-- 查询姓李的同学,使用like-- like 结合 %(代表多个字符)——(代表一个字符) SELECT `id`,`myname` FROM `aaa` WHERE myname LIKE '李%'like的用法就像我们使用百度搜索时啊,我们刚打一个字,下面就出现许多的结果,我们要记住%表示0到多个字符,_表示一个字符例如,我们想查姓李的,而且名字是两个字的SELECT `id`,`myname` FROM `aaa` WHERE.
2021-12-03 21:36:00 8737 1
原创 数据库查询语句
数据库查询语句无疑是所有语句中,最重要的语句,经常配合where一起使用1. 最基本的查询公式1:select * from 表名-- 查看aaa表中的所有数据SELECT * FROM `aaa`你说,我不想查看表中所有的数据,我就想查看表中id字段和myname字段信息,也是可以的公式2:select 想要查看的字段名1,想要查看的字段名2,from 表名-- 查看表中的id,myname信息SELECT id,myname FROM `aaa`2. 别名的使用.
2021-12-02 21:45:03 6942
原创 数据库修改,新增,删除语句
1. 新增数据库新增语句用insert into关键字实现公式:insert into 表名('字段名1','字段名2','字段名3',) values('值1','值2','值3',);使用insert into语句要注意的是字段名和值一定要一一对应,表名和字段名用 `字段名` ,值用 '值' 。而且都是中文符举例:INSERT INTO `aaa`(`id`,`myname`,`sex`) VALUES ('6','小红','女');结果:2. 修改修改数据..
2021-12-01 21:30:10 13414
原创 数据库搜索引擎
MYISAM INNODB 事务 不支持 支持 数据行锁定 不支持 支持 外键约束 不支持 支持 全文索引 支持 不支持 表空间大小 较小 较大,约为MYISAM的两倍 MYISAM节约空间,速度较快INNODB安全性高,事务的处理,多表用户操作...
2021-11-28 21:47:52 278
原创 数据库的数据类型与字段属性
1.数据类型 1.1数值 1. tinyint 表示很小的数据 1字节 2.smallint 表示较小的数据 2字节 3.mediumint 表示中等大小的数据 3字节 4. int 表示标准的整数 4个字节(这个用的最多) 5.bigint 表示很大的数据 6.float 浮点数 4个字节 7.double 浮点数 8个字节 8.decimal 字符串形式...
2021-11-27 21:53:47 1136
原创 数据库基本命令
所有命令后面都要跟一个中文分号;1.显示所有数据库 -- show databases;2.进入其中一个数据库-- use atm;(这里进入的就是atm数据库)如果显示Database changed。则表示进入成功3.显示数据库下的表名(还是以atm数据库为例)-- show tables;4.显示一个表的字段等信息(以atm下的aaa表为例)--describa aaa;5.创建一个数据库--create database win;(创建一个win...
2021-11-26 21:25:44 696
转载 关系型数据库和非关系型数据库
一、关系型数据库关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织优点:1、易于维护:都是使用表结构,格式一致;2、使用方便:SQL语言通用,可用于复杂查询;3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。缺点:1、读写性能比较差,尤其是海量数据的高效率读写;2、固定的表结构,灵活度稍欠;3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。二、非关系型数据库非关系型数据库严格上不是一种数据库,应..
2021-11-24 21:23:35 122
原创 线程学习总结
1.线程和进程1.1进程的概念 进程就是正在运行的程序,它会占用对应的内存区域,由CPU进行执行与计算。1.2线程的概念 线程是操作系统OS能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.1.3多线程并发和并行 并发:两个或多个事件在同一时间间隔发生。 并行:两个或者多个事件在同一时刻发生。并行是真正意义上,同一时刻做多件事情,而并发在同一时刻只会做一件事件,只是可以将时间切碎,交替做多件事情。网上有个例子挺形...
2021-11-21 21:50:10 373
原创 线程池学习记录
1.为什么要使用线程池 经常创建和销毁,使用量大的资源时,比如并发下的线程,对性能影响很大2.使用线程池的好处 1.提高响应速度 2.降低资源消耗 3.便于线程管理3.线程池中的几个关键方法 1.corePoolSize->线程池的大小 2.maximumPoolSize->最大线程数 3.keepAliveTime->线程没有任务时最多保持多少时间后终止代码演示结果...
2021-11-20 21:51:54 277
原创 线程协作之信号灯法
源码package com.lixi.lambda;public class SignalLight { public static void main(String[] args) { TV tv=new TV(); new Player(tv).start(); new Watcher(tv).start(); }}//生产者class Player extends Thread{ //构
2021-11-20 21:32:38 206
原创 线程Lock锁
代码演示可以看见线程冲突当我们使用Lock锁后结果synchronized与Lock的区别1.Lock是显示锁,需要手动开启和关闭,而synchronized是隐式锁,不需要手动2.Lock只有代码块锁,synchronized有代码块锁和方法锁3.Lock是个接口,synchronized是个关键字...
2021-11-19 21:59:31 291
原创 线程的死锁学习
死锁概念:某一个同步块,同时拥有两个以上对象的锁时,就有可能发生死锁现象代码演示结果解决方法:将另一个的synchronized代码块,移出去形成死锁的四个条件1.互斥条件:一个资源一次只能被一个线程使用2.请求与保持条件:一个线程因请求资源而造成阻塞时,并不释放资源3.不剥夺条件:进程已经获得的资源,在未使用完前,不可剥夺4.循环等待条件:若干进程之间形成头尾相连的循环等待资源打破死锁的方法:我们只需打破上面的任意一个或多个条件,那么...
2021-11-19 21:38:58 181
原创 synchronized关键字
synchronized主要是保护线程安全,被它修饰的方法也叫同步方法代码演示结果:我们可以看见结果是错的,一张票有几个线程都拿到了,而且还拿到了-1的票,当我们加上synchronized关键字后加上synchronized关键字后,结果出现的就是正常的,这是因为synchronized关键字,它让线程去排队,一个线程拿到一张票后,就轮到下一个线程拿票,依此类推。...
2021-11-18 21:54:30 278
原创 线程的守护和优先级学习
线程的优先级代码演示结果注意线程优先级大的,并不是一定先执行,只能说大概率事件,还是要看CPU的调度线程守护代码演示结果可以看见本来是无限循环的上帝线程,在你的线程结束后,也结束了...
2021-11-17 21:38:44 153
原创 线程的停止,休眠,礼让,强制执行
线程的停止,一般是写一个停止方法,让线程停止线程的休眠,常用的方法是sleep线程礼让,用的是yield方法,线程礼让有时候能成功,有时候不会礼让如果不加yield方法的话,那么执行结果应该是b线程开始执行和结束,然后在a线程开始执行和结束。但是要注意yield方法,不是每次都会执行成功线程的强制执行使用join方法强制执行当前线程最后来一张线程状态图...
2021-11-16 21:49:45 479
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人