自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 问答 (1)
  • 收藏
  • 关注

原创 Spring注入的三种方式

1

2022-08-08 14:39:46 4349 1

原创 Java枚举的基本用法

基本步骤:1.定义枚举变量(变量之间用逗号隔开而不是分号)2.声明枚举对象的属性(不可更改用final关键字修饰)3.私有化构造方法4.get返回枚举变量定义声明状态的枚举Enum类实际应用部分代码

2022-07-02 10:04:06 345

原创 随手记录一下工作中遇到的开发知识

1.@ConfigurationProperties总体概述:读取相关的配置文件获取指定的参数值两种使用方法:1)搭配@Bean使用绑定第三方属性。如实现自动任务消息推送@Configurationpublic class AutoTaskConfig { //注入构件到容器中,创建这个类的实体对象 @Bean("构件ID") public AutoTaskService sendMsg(){ return new AutoTaskService();

2022-05-21 15:01:20 241

原创 SpringBoot使用JPA中的EntityManager保证事务的一致性

**问题背景:**在数据库中存在两个表:主表和从表,需要将主表中的指定内容插入到从表中,且二者必须同时成功或失败,即要保证事务ACID特性中的原子性。**现存问题:**目前使用Spring Data JPA自定义继承接口仓库来完成对数据的CRUD,如果主表插入成功但从表由于某种原因出现内部错误时,数据库中仍然显示主表添加成功解决方案:使用事务相关注解和持久化上下文来保证事务的原子性;同时JPA仓库的优点是查询效率较快,因为采用EntityManager来提高插入删除效率前置配置:1.使用@Persi

2022-04-21 10:18:56 2128

原创 Mysql查询时使用UNION和ORDER BY的问题

问题:Mysql中表student_table(id,name,birth,sex),查询男生、女生人数分别最多的3个姓氏及人数,正确的SQL是A.SELECT sex ,substr(name,1,1) as first_name ,count(*) as c1 from student_table where length(name) >=1 and sex = '男'group by first_name order by sex ,c1 desc limit 3 unio

2022-03-09 14:47:25 891

原创 【笔记】log日志的五个级别

//日志的级别 //从低到高 //可以调整输出的日志级别;日志就只会在这个级别以后的高级别生效 logger.trace("trace日志"); logger.debug("debug信息"); //SpringBoot默认给的是info级别,如果没指定就是默认的root级别 logger.info("info日志"); logger.warn("warn信息"); logger.error("Error信息");...

2022-03-05 16:15:39 2288

原创 MySql六:行锁

基本概念:对数据库中表的行记录的锁,同一张表上任何一个时刻只能有一个更新在执行,即对同一行的数据不能有多个事务同时对它进行操作。行锁是InnoDB引擎所特有的。两阶段锁协议:在 InnoDB 事务中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放,而是要等到事务结束时才释放。这就启示我们当执行某一事务时要把造成锁冲突和影响并发度最大的锁尽量往后放,否则可能会影响正常的工作流程。死锁:当并发系统中不同线程出现循环资源依赖,涉及的线程都在等待别的线程释放资源时,就会导致这几个线程都进入无限等待的状

2022-02-17 16:33:09 494

原创 数据结构与算法:回溯法之全排列

题源:46.全排列初次接触回溯法真的好难,debug了半天才了解到了其中的具体原理过程,接下来我引用weiwei哥的讲解和我自己的一些理解,希望可以为读者讲明白其中的原理。什么是回溯法?简单来说,就是分步地去解决问题,当发现某一步不符合我们的条件时就跳回到上一个步骤,再次尝试其它的路径寻求当前问题的解决方案。类似于dfs(深度优先搜索)回溯法的具体步骤1.choose:选择当前"迷宫"的一条路径2.explore:判断当前路径是否满足条件3.un-choose:如果成功就做个已经访问过的标记

2022-01-25 18:27:31 513

原创 数据结构与算法:三数之和

题源:15.三数之和这题一开始没做出来,首先用两数之和的暴力循环肯定是做不出来的,后来还是看的题解才总结出来思路。下面以nums = [-1,0,1,2,-1,-4]为例说一下我的思路并附上代码详解package com.algorithm.array;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * @program: Java IDEA Projects * @cre

2022-01-22 21:23:12 507

原创 数据结构与算法:二叉树三种遍历的java实现

题源:144.二叉树的前序遍历94.二叉树的中序遍历145.二叉树的后序遍历第一种方法:递归实现比较简单,记住三种遍历的顺序即可//二叉树的前序遍历public class PreOrderTraversal { public List<Integer> preOrderTraversal(TreeNode root) { List<Integer> list=new ArrayList<>(); //递归跳出的条件

2022-01-21 20:37:38 597

原创 MySql五:锁

锁设计的初衷:解决Mysql并发访问的问题,当出现并发访问问题时,数据库就要合理地控制资源的访问规则。锁的分类:全局锁、表锁和行锁。全局锁顾名思义,全局锁的作用范围是整个数据库,全局锁的命令为Flush tables with read lock (FTWRL),使用该命令后,整个数据库将只处于只读状态,即DML和DDL操作不能进行。全局锁的典型使用场景:用于数据库全库逻辑的备份,但是让全库都处于 只读状态这样是危险的1.如果在主库上备份,那么备份期间就不能进行任何更新,整个业务都处于停止状态2

2022-01-10 15:57:38 299

原创 MySql四:索引

回表的概念:回到主键索引树搜索的过程就是回表,有没有一种可能避免回表呢?覆盖索引如果执行语句查询的值已经在非主键索引树上了,那么我们就避免了回表的操作。覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的性能优化手段。联合索引联合索引是指对表上的多个列进行索引,本质的数据结构也是一颗B+树,不同的是该B+树上的键值对数量大于等于2.对于是否要为两个或多个列建立联合索引要取决于需求是否频繁,如果要经常地查询多列之间的对应关系,那么联合索引就是必要的。它可以在这个高频请求上使用

2022-01-09 16:56:49 518

原创 Mysql四:索引

首先介绍索引的概念,类比来说一本 500 页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下,那我估计你可得找一会儿。同样,对于数据库的表而言,索引其实就是它的“目录”。索引的常见模型介绍三种常见、也比较简单的数据结构,它们分别是哈希表、有序数组和搜索树。1.哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value

2022-01-09 15:58:34 94

原创 MySql三:事务及其隔离

首先简单描述事务的概念;事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在 MySQL 中,事务支持是在引擎层实现的,但是要注意并不是所有的引擎都支持事务。事务的特性:原子性(强调事务的不可分割)、隔离性(一个事务执行的过程中,不应该受到其他事务的干扰)、一致性(事务的执行的前后数据的完整性保持一致.)、持久性(事务一旦结束,数据就持久到数据库)。本文的重点来详细描述事务的隔离性,首先引入隔离性的必要条件当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(n

2022-01-09 14:43:00 190

原创 MySql二:更新过程中两个重要的日志redo log(重做日志)和 binlog(归档日志)

重要的日志模块:redo log在此之前,需要先了解WAL技术:WAL 的全称是 Write-Ahead Logging,它的关键点就是先写日志,再写磁盘。具体来说,当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log里面,并更新内存,这个时候更新就算完成了。同时,InnoDB 引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做。当redo log里面的记录过多时,就不得不擦除某些记录,下面给出一张图来用于加深理解write pos

2022-01-08 20:05:11 202

原创 MySql一:逻辑架构图

1.连接器:负责跟客户端建立连接、获取权限、维持和管理连接。负责连接数据库.在验证账户和密码连接成功后,如果没有后续的动作就会进入"sleep"状态,此外,客户端如果长期没有操作执行,就会自动断开连接。...

2022-01-08 17:25:04 424

原创 SSM过程详解(二)配置文件详解

一.MyBatis配置文件首先,配置文件中有严格的顺序,如果顺序不一致则会报错。正确的配置顺序如下图1.属性(properties):主要作用为读取外部配置文件,即数据库中的配置信息<properties resource="db.properties"></properties>2.常用的为autoMappingBehavior,自动完成字段的映射,更多详细配置信息见MyBatis的XML配置信息3.类型别名(typeAliases):给类起别名,减少冗余性增加可读性,

2022-01-07 11:00:31 923

原创 SSM框架搭建过程详解(一)环境及其层次配置

1.创建maven项目1.1GroupID和ArtifactID的区别通俗来讲就是横坐标和纵坐标的区别,GroupID填写形式一般为com.xxx.xxx即包名,ArtifactID则填写工程项目名,如本项目中的ssmShoppingGroupID:是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。ArtifactID:是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。1.2Maven项目仓库的构建可以使用网络上自带的maven,也可以使

2022-01-06 18:10:11 1370

原创 java反射基础操作

获取类对象采用静态方法获取类对象Class c = Class.forName("包名.类名");构建一个类package javatest;public class csdnClass { String name; String sex; String number; int age; double gpa; public void Introduction() { System.out.println("一名" + age

2020-07-27 20:41:10 63

原创 MySql学习心得:连接查询

表与表之间的关系:1.一对多一对多的建表原则:在多的一方创建一个字段,字段作为外键指向一方的主键.2.多对多多对多的建表原则:需要创建第三张表,中间表中至少要有两个字段,这两个字段分别作为外键指向各自一方的主键。3.一对一一对一的建表原则:主键对应,让一对一的双方的主键进行建立关系,唯一且非空。多表查询:1.合并结果集作用:合并结果集就是把两个select语句的查询结果合并到一起合并结果集有两种方式:union:去除重复记录;union all:不去除重复记录;被合并的两个结果列数

2020-07-27 20:40:43 469

原创 MySql学习心得:约束

完整性的分类:1.实体完整性:行2.域完整性:列3.引用完整性:表和表有相关联的数据实体完整性约束实体:表中的一行(entity)约束类型分为三种,分别为主键约束(primary key),唯一约束(unique),自动增长列(auto_increment)主键约束(primary key)每个表中都要有一个主键。特点:数据唯一且不能为空值创建主键的两种方式:1.`create table if not exists student1(id char(12) primay key,

2020-07-27 16:50:56 175

原创 MySql学习心得:DML基础查询

基础查询1.查询所有列:select * from 表名;2.查询指定列:select 列名1,列名2,… from 表名;条件查询在查询时给出where子句限制查询条件1.比较运算符=、!=、<>、<=、<、>、>=;between a and b(a<b);in(set)与or的作用一致;2.关系运算符and、or、not;模糊查询通配符:_任意一个字符;%:任意0到n个字符;模糊查询时在where子句后必须使用like关键字排序

2020-07-27 11:23:22 135

原创 MySql学习心得:DML基础操作

DML是对表中的数据进行增、删、改的操作,主要包括insert、delete、update。插入操作:insertinsert into 表名(列名1,列名2…) values (列值1,列值2…);如果要插入空值,要使用null;在MySql中,字符串类型和日期都要用’'括起来;修改操作:updateupdate 表名 set 列名1=列值1,列名2=列值2,… where 列名=值(限制条件) ;删除操作:deletedelete from 表名 where 列名=值;删除表中所有的数

2020-07-24 15:02:57 187

原创 MySql学习心得:DDL操作表基础操作

创建一个新表::create table if not exists 表名(字段名 字段类型(长度) 限制条件(一般为not null),字段名 字段类型(长度) 限制条件,);显示表的创建细节即原始语句: show creat table 表名;显示表的详细内容: select * from 表名;删除现有表: drop table 表名;显示表的字段信息: desc 表名;在表的基础上增加一个列: alter table 表名 add 列名 字段类型(长度) 限制条件;修改表上已有的列

2020-07-24 15:02:53 94

原创 pycharm爬虫的scrapy框架的创建和项目目录结构

创建项目和爬虫(cmd命令提示符下)1.创建项目:scrapy startproject (爬虫的名字)完成创建项目2.创建爬虫:scrapy genspider (爬虫名字) (爬虫的域名).注意爬虫名字不能和项目名称一致,否则会报错正确创建后的提示符:项目目录结构1.items.py:用来存放爬虫爬取下来数据的模型2.Middlewares.py:用来存放各种中间...

2020-04-21 18:51:19 471

原创 python关于for循环中用列表list使用append方法出现多个列表重复的解决办法

今天利用python爬电影的时候发现了一个问题,先贴代码 browser.get('http://dianying.2345.com/list/jingdian------.html') html = browser.page_source doc = pq(html) items = doc('#contentList > ul > li').item...

2020-04-01 16:42:09 4083

原创 爬虫pycharm(python)的selenium+pyquery+CSS选择器模拟浏览器爬取京东商品信息

准备工作:库的安装::pip3 install selenium pip3 install pyquery引入库与定义浏览器驱动对象:from selenium import webdriverfrom selenium.common.exceptions import TimeoutExceptionfrom selenium.webdriver.common.by import By...

2020-04-01 15:54:37 777

原创 利用pycharm(python)的requests库爬虫来下载一部网络小说

。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;全新的 KaTeX数学公式 语法...

2020-03-20 21:57:35 2191

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除