自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 MybatisPlus中自定义sql报错Invalid bound statement (not found)

一、mybatisplus只在yml中配置了mapper的路径扫面不够mapper-locations: classpath:com/jack/shale_porosity/mapper/xml/*.xml这样只有mybatis自带的basemapper可以用。target文件中并不会加载mapper文件。二、在pom.xml文件中再配置一次mapper文件扫描路径 <resources> <resource> &lt

2021-09-17 19:41:36 1233 1

原创 数据库三大范式

第一范式(1NF)原子性:保证每一列不可再分第二范式(2NF)前提:满足第一范式确保表中的每列都和主键相关比如:订单表(总金额,下单时等等)和订单详情表(菜品id,数量,单价等等)要分开,不能放在一张表里面第三范式(3NF)前提:满足第一和第二范式确保每列都和主键列直接相关,而不是间接相关比如:在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段...

2021-06-04 12:45:35 146

原创 209.长度最小的子数组-leetcode-java

滑动窗口(双指针)class Solution { public int minSubArrayLen(int target, int[] nums) { int left = 0; int right = 0; int sum = 0; int min = Integer.MAX_VALUE; //外循环,控制left while (right < nums.length) { sum += nums[right++]; //判断是否总和大于

2021-06-04 11:06:18 159

原创 206.反转链表-leetcode

class Solution { public ListNode reverseList(ListNode head) { if(head==null||head.next==null) return head; //neaHead先指向空 ListNode newHead = null; //遍历head while (head!=null){ //每次遍历提取出head链表第一个,用temp存储第二个的地址。然后再head = temp; //使链表后一

2021-06-04 10:12:13 112

原创 15.三数之和-leetcode

双指针解题步骤:1.首先判断数组长度,<3直接返回空ans。2.对数组进行排序3.排序后判断nums[i]是否大于零,大于零直接返回ans(排序之后,后面的数值都大于零,sum一定也大于零不满足要求)。4.创建左右指针分别指向nums[i]的右边和数组的最后一个。5.如果nums[i] + nums[left] + nums[right]==0,添加进ans,然后移动letf和right,使left和right不等于现在的值,因为三个数确定了nums[i]和任意的一个数,另一个也就固定了,

2021-06-03 10:55:54 115 1

原创 1.两数之和-leetcode

一,暴力求值,两层for循环class Solution { public int[] twoSum(int[] nums, int target) { int len = nums.length - 1; for (int i = 0; i <= len; i++) { for (int j = i + 1; j <= len; j++) { if (target == (nums[j] + nums[i])) { return new int[

2021-06-03 09:55:12 70

原创 网络协议是什么?

网络协议(Protocol)是一种特殊的软件,是计算机网络实现其功能的最基本机制。网络协议的本质是规则,即各种硬件和软件必须遵循的共同守则。网络协议并不是一套单独的软件,它融合于其他所有的软件系统中,因此可以说,协议在网络中无所不在。网络协议遍及OSI通信模型的各个层次,从我们非常熟悉的TCP/IP、HTTP、FTP协议,到OSPF、IGP等协议,有上千种之多。对于普通用户而言,不需要关心太多的底层通信协议,只需要了解其通信原理即可。在实际管理中,底层通信协议一般会自动工作,不需要人工干预。但是对于第三层以

2021-05-24 15:20:28 2217

原创 Springboot链式写法@Accessors(chain = true)

链式写法: Dept dept = new Dept(); dept.setDeptNo(11).setDname('ssss').setDb_source('001');使用方法:@Data@NoArgsConstructor@Accessors(chain = true) //链式写法public class Dept implements Serializable {在实体类上面使用注解@Accessors(chain = true),就可以实现链式写法了...

2021-05-19 14:52:58 2089

原创 Redis中Set类型使用场景

Set类型使用场景:微博,B站,共同关注!(并集)数字集合类:差集 SDIFF交集并集微博,A用户将所有关注的人放在一个set集合中!将它的粉丝也放在一个集合中!共同关注,共同爱好,二度好友,推荐好友!(六度分割理论)集合对象的编码可以是intset和hashtable。intset编码的集合对象使用整数集合作为底层实现,集合包含的所有元素都被保存在整数集合里面。hashtable编码的集合对象使用字典作为底层实现,字典的每个键都是一个字符串对象,每个字符串对象都包含一个集合元素,而

2021-05-18 18:45:26 890

原创 Redis中String类型使用场景

String类似的使用场景:value除了是我们的字符串还可以是我们的数字!1.计数器2.统计多单位的数量3.粉丝数4.对象缓存存储!

2021-05-18 18:38:09 250

原创 Redis集群实现原理

一、节点最开始时,每个Redis实例自己是一个集群,连接各个节点的工作通过CLUSTER MEET 命令完成,A和B握手后,A会将B的信息通过Gossip协议传播给A所在集群中其他节点,让其他节点也与B握手;// 集群的节点struct clusterNode{ // 创建节点的时间 mstime_t ctime; // 节点名字 char name[REDIS_CLUSTER_NAMELEN]; // 节点状态 int flags;

2021-05-18 18:34:00 209 1

原创 redis怎么实现高可用

一、什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。二、Redis高可用机制的一些方法Redis主从复制Redis持久化机制哨兵机制keepaliv

2021-05-18 18:11:20 143 2

原创 为什么redis6.0之后又改为多线程

在 Redis 中,单线程的性能瓶颈主要在网络IO操作上。也就是在读写网络的read/write系统调用执行期间会占用大部分CPU时间。如果要对一些大的键值对进行删除操作的话,在短时间内是删不完的,那么对于单线程来说就会阻塞后边的操作。Redis6.0的多线程是指,将网络数据读写和协议解析通过多线程的方式来处理,对于命令执行来说,仍然使用单线程操作。也就是说,Redis6.0的多线程是为了解决其网络IO的瓶颈。...

2021-05-18 17:16:41 496

转载 Tomcat怎么打破双亲委派机制的

一.首先我们说一下什么是双亲委派机制双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求,他首先不会自己去尝试加载这个类,而是把这个请求委派父类加载器去完成。每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个请求(他的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。为什么要使用双亲委派机制如果没有使用双亲委派模型,由各个类加载器自行加载的话,如果用户自己编写了一个称为java.lang.Object的类,并放在程

2021-05-18 17:11:29 1356

原创 分表之后如何保证ID唯一性

单库的时候,主键唯一ID是自增的,现在好了,我们的数据被分到多个库的多个表里面了,如果我们还是使用之前的主键自增策略,那么这样就会出现两个数据插入到了两个不同的表会出现相同的ID值,这时我们该怎么去使用呢?提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的

2021-05-18 16:07:18 1198

原创 mysql索引理解

一.索引索引:索引是数据结构。可以简单理解为排好序的快速查找数据结构索引的数据结构:二叉树(树的不平衡导致查找效率超级低)红黑树(虽然树平衡了,但树的度为 2,导致树的高度很高,需进行多次 I/O)Hash 表(虽然好,但不适合范围查找)B-Tree(虽然好,但不适合范围查找)B+Tree(这才是大佬)select *from t where col2=89 查询语句的执行过程如果没有建立索引,MySQL 会进行全表扫描,逐行查找假设我们使用二叉树承载了表的索引,该二叉

2021-04-18 17:20:05 111

原创 SpringBoot拿不到yml中自定义属性

SpringBoot拿不到yml中自定义属性一.如果配置文件中有相关定义,但是启动依然报错。这是因为生成的Class文件中配置没有及时被更新。直接删除项目中的target文件(之后会自动生成)再重新运行项目就可以解决。...

2021-04-11 21:13:43 1005

原创 Springboot保存日志文件到本地

1.首先在yml文件中配置(我们对打印日志的配置) (springboot有相关的包,所以我们不用引入依赖)logging: level: root: info(日志级别) config: classpath:logback-spring.xml (配置文件路径) 日志文件的本地保存路径我在logback-spring.xml中配置(下面代码)2.我们在src/main/resources中创建一个logback-spring.xml下方我用<-**************

2020-12-14 21:21:33 1121

原创 Java使用Validation进行参数校验

一.不用springboot,使用validation参数校验需要自己写ValidationUtil工具类,来校验public class ValidatorUtil { private static Validator validator = Validation.buildDefaultValidatorFactory() .getValidator(); public static <T> Map<String,St

2020-12-13 19:14:56 1672

原创 利用Java Socket编写一个简单的Web服务器

1-2 利用Java Socket编写一个简单的Web服务器,具体如下:(1)、使用 ServerSocket 监听某一端口,然后等待连接获取 Socket对象;(2)、创建一个类 HttpServer 继承 java.lang.Thread 类,重写 run()方法,执行浏览器请求;(3)、获得浏览器请求,解析资源文件路径;(4)、读取资源文件,响应给浏览器;(5)、浏览器地址栏输入: http://localhost:8000/index.html;(6)、效果如下:代码:启动类pu

2020-11-23 22:03:25 5579 18

原创 假设Tom和Jerry利用Java UDP进行聊天

1-1 假设Tom和Jerry利用Java UDP进行聊天,请为他们编写程序。具体如下:(1)、Tom和Jerry聊天的双方都应该具有发送端和接收端;(2)、利用DatagramSocket与DatagramPacket;(3)、实现 java.lang.Runnable类,重写 run()方法。Jerry代码:public class UDPSocket_Jerry { public class UDPSocket_Jerry { public static void main(S

2020-11-23 21:58:35 7666 32

原创 递归与回溯区别(附leetcode相关题)

一.递归是一种算法结构:为了描述问题的某一状态,必须用到该状态的上一状态,而描述上一状态,又必须用到上一状态的上一状态……这种用自已来定义自己的方法,称为递归定义。形式如 f(n) = n*f(n-1), if n=0,f(n)=1.二.回溯是一种算法思想,可以用递归实现。从问题的某一种可能出发, 搜索从这种情况出发所能达到的所有可能, 当这一条路走到” 尽头 “的时候, 再倒回出发点, 从另一个可能出发, 继续搜索. 这种不断” 回溯 “寻找解的方法, 称作” 回溯法 “。三.leetcode递归

2020-11-08 21:50:29 376 1

原创 Java如何列出目录中的文件

public String【】 list()用字符串形式返回目录下的全部文件public File【】 listFiles()用File对象形式返回目录下的全部文件public String【】list(FilenameFilter obj)该方法用字符串形式返回目录下的指定类型的所有文件public File【】listFiles(FilenameFilter obj)该方法用File对象形式返回目录下的指定类型的所有文件(上述两个方法的参数FilenameFilter是一个接口)...

2020-11-05 09:06:56 193

原创 Java如何创建一个文件对象

1.创建文件的3种方法1.File(String filename)2.File(String directoryPath,String filename)3.File(File dir,String filename)其中filename是文件名字,directoryPath是文件的路径,dir为一个目录。用File(String filename)创建文件时,被默认为当前应用再同一目录。2.操作案例: String path= "E:\\yuchao\\测试";//所创建文件的路径

2020-11-05 09:03:32 1850

原创 反射的作用及意义

1.反射的定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。反射的应用场合:在编译时根本无法知道该对象或类可能属于哪些类,程序只依靠运行时信息来发现该对象和类的真实信息.在运行阶段使用,不能写死;工厂模式,动态生成对象;框架底层;运行过程中修改jar包中的一些内容(由于反射会额外消耗一定的系统资源,因此如果不需要动态地创建一个对象,那么就不需要用反射

2020-11-05 08:51:28 5232 1

原创 Java线程停止与中断方法的区别

public final void stop(): 让线程停止,方法过失了,但还可以用public void interrupt(): 中断线程,并抛出InterruptedException,程序正常结束实验代码public class ThreadSleepDemp { public static void main(String[] args) { ThreadStop ts = new ThreadStop(); ts.start(); .

2020-10-30 11:21:00 326

原创 Java启动线程(Thread)的两种方法

第一种 :继承Thread类(Thread实现Runnable接口)用继承类创建对象然后使用使用代码(案例:多个窗口卖票)这里用SellTicket extends Thread,然后通过SellTicket创建对象,使用线程方法。public class SellTicketDemo { public static void main(String[] args) { // 创建三个线程对象 SellTicket st1 = new SellTick

2020-10-30 11:04:12 1261

原创 Main 方法中使用 Thread.sleep()方法

## 一 sleep()方法使用的位置,如果使用在main线程执行代码中,则阻塞的是main线程。如果在其他线程执行的代码中,则阻塞的是执行这些代码的线程。## 二 所以一般在继承或者实现的run方法内使用sleep。...

2020-10-30 10:40:26 1066

原创 Java Thread之Sleep()

一.sleep API介绍sleep()方法是Thread类的静态方法,哪个线程调用了这个sleep方法,哪个线程就休眠sleep设置的时间。线程睡眠到期自动苏醒,并返回到可运行状态(就绪),不是运行状态。二.sleep使用方法public class ThreadSleep extends Thread { @Override public void run(){ for (int x = 0; x < 3; x++) { System

2020-10-30 10:37:56 467

原创 Java调用python脚本

Java调用python脚本1.java调用python脚本需要运行python的基本环境2.Process process = Runtime.getRuntime().exec(cmdArr);在java代码中使用上述代码调用python脚本即可,其中cmdArr相当于在cmd调用python脚本时的指令。3.其原理是建立一个新的进程来运行python代码。4.cmdArr是以字符串数组的形式。实例代码public static void main(String[] args) thro

2020-10-27 13:33:49 685 1

原创 HashMAp与ConcurrentHashMap的比较

HashMAp与ConcurrentHashMap的比较1.Hashmap是一个散列表,它存储的内容是键值对(key-value)映射。不支持线程同步,不是线程安全的。在高并发环境下做插入操作,有可能出现环形链表。2.避免HashMap线程安全的问题有很多办法,比如hashtable collections synchronizedmap,但是这些方法都是给整个结合加锁,使他们不能同时访问,同一时间其他的访问会阻塞。concurrenthashmap能兼顾线程安全和运行效率。3.可以说,Concur

2020-10-27 09:39:36 555 1

原创 设计一个Triangle类继承自GeometricObject类

**6-4 设计一个Triangle类继承自GeometricObject类 (10分)**设计一个名为Triangle的类来扩展GeometricObject类。该类包括:■ 三个名为side1、side2和side3的double数据域表示这个三角形的三条边,它们的默认值是1.0。■ 一个无参构造方法创建默认的三角形。■ 一个能创建带制定side1、side2和side3的三角形的构造方法。■ 所有三个数据域的访问器方法。■ 一个名为getArea()的方法返回这个三角形的面积。■ 一

2020-09-30 17:43:33 3748

原创 6-3 图书和音像租赁 (10分)

**6-3 图书和音像租赁 (10分)**图书和音像店提供出租服务,包括图书和DVD的出租。图书包括书名(String,一个词表示)和价格(double),DVD包括片名(String,一个词表示)。它们都是按天出租,但租金计算方式却不同,图书的日租金为图书价格的1%,DVD的日租金为固定的1元。构造图书和DVD类的继承体系,它们均继承自Media类,且提供方法getDailyRent()返回日租金,构造音像店类MediaShop,提供静态函数double calcula...

2020-09-30 17:25:11 3720 5

空空如也

空空如也

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

TA关注的人

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