自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 342. 4的幂

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x示例1输入:n = 16输出:true示例2输入:n = 5输出:false示例3输入:n = 1输出:true代码:class Solution { public boolean isPowerOfFour(int n) { //第一段排除存在多个1,第二段排除2的幂次方

2021-06-07 20:59:46 79 1

原创 (三)Redis数据类型之hash类型

Hash类型存储的困惑对象类数据的存储如果具有较为频繁的更新需求操作会显得笨重因为第一个拿数据容易,但是更新数据难,需要整个覆盖掉。然而hash的话,就将外面的user????xxxx作为key,存储空间的name作为field(属性),然后剩下的就作为value,然后要访问指定字段,就访问对应的属性即可。hash类型新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息需要的内存结构:一个存储空间保存多少个键值对数据hash类型:底层使用哈希表结构实现数据存储ha

2020-08-18 14:19:13 201

原创 (二)Redis数据类型之String类型

数据存储类型介绍业务数据的特殊性,分析数据类型应该有哪些作为缓存使用原始业务功能设计秒杀618活动双十一活动排队购票运营平台监控到的突发高频访问数据突发市政要闻,被强势关注围观高频、复杂的统计数据在线人数投票排行榜附加功能系统功能优化或升级单服务器升级集群Session管理Token管理Redis 数据类型(5种常用)string --> Stringhash --> Hashmaplist --> LinkListset -->

2020-08-17 17:53:24 227

原创 (一)Redis入门和基础操作指令

问题的抛出出现的问题海量数据高并发罪魁祸首性能瓶颈:磁盘IO性能低下扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群解决思路降低磁盘IO次数,越低越好 —— 内存存储去除数据间的关系,越简单越好 —— 不存储关系,仅存储数据NoSQL简介NoSQL:即 Not-Only SQL( 泛指非关系型的数据库),作为关系型数据库的补充。作用:应对基于海量用户和海量数据前提下的数据处理问题。特征:可扩容,可伸缩大数据量下得高性能灵活得数据模型高可用常见No

2020-08-17 15:34:20 162

原创 使用maven搭建springboot项目(IDEA版)

一、创建工程使用IDE创建新的项目,选择Maven项目,这里不适用骨架点击Next,输入GroupId与ArtifactId点击Next,输入项目名和项目存放路径名,然后就点击finish创建完成。二、编辑pom.xml首先指定父级依赖,将如下配置添加到project标签中<!--指定父级依赖 所有springboot项目都必须继承spring-boot-starter-parent--><parent> <groupId>org.springf

2020-08-02 00:29:50 570

原创 高级排序之快速排序

1、什么是快速排序快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序 过程可以递归进行,以此达到整个数据变成有序序列。2、原理1、设定一个分界值,通过其分界值将数组分为两部分。2、将小于分界值的数组放到左边,大于/等于分界值的数组放到右边。3、对左右两部分去重复1、2步。(可采用递归)PS:当左、右两部分的数据排序完后,整个数组的排序也就完成了

2020-07-13 00:42:34 172

原创 Git入门到实战

一、Git 基础1、什么是GitGit是一个分布式版本控制系统。版本控制系统是一种用于记录一个或多个文件内容变化,方便我们查阅特定版本修订情况的系统。示例:以前在没有使用版本控制的时候,我们通常在我们的项目根目录下这样命名项目:project_v1、project_v1.1、project_v2等等,通过这种方式记录我们项目的不同版本的修改,有的时候我们还会在不同版本的文件中写一个说明,记录此版本项目新增、修改,删除等操作。这样的操作是很繁杂的,有的时候还可能因为一些非人为因素导致文件丢失这样的

2020-07-12 15:48:53 155

原创 高级排序之归并排序

1、什么是归并排序归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。2、原理1、尽可能的一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每个子组的元素个数是 1为止。2、将相邻的两个子组进行合并成一个有序的大组;3、不断的重复步骤2,直到终只有一个组为止。

2020-07-06 16:10:00 78

原创 高级排序之希尔排序

1、什么是希尔排序希尔排序是插入排序的一种,又称“缩小增量排序”,是插入排序算法的一种更高效的改进版本。2、原理1、选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组;2、对分好组的每一组数据完成插入排序;3、减小增长量,最小减为1,重复第二步操作。4、增长量h的确定:增长量h的值没一固定的规则,我们这里采用以下规则:int h=1 while(h < 数组长度/2){ h=2h+1;//3,7 } //循环结束后我们就可以确定h的大值; //h的减小规则

2020-07-05 17:53:15 82

原创 简单排序之插入排序

1、什么是插入排序插入排序(Insertion sort)是一种简单直观且稳定的排序算法。插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,我 们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在 手中的每张牌进行比较,如下图所示:2、原理1、把所有的元素分为两组,已经排序的(默认为将第一个元素当为已排序的)和未排序的(剩下的元素为未排序);2、找到未排序的组中的第一个元素,向已经排序的组中进行插入;

2020-07-05 17:12:37 418

原创 简单排序之选择排序

1、什么是选择排序选择排序是一种更加简单直观的排序方法。即:选择元素放到合适的位置而这个选择元素不是随便选的,可以选择最小/最大如:选择最小的元素,放到数组的第一个位置2、原理1、定义一个minIndex存储最小值的索引,先假设第一个索引处的值为最小,即minIndex = 0,然后遍历后面的元素,跟他们进行值的比大小,如果minIndex处的值大于其他索引处 X 的值,那么minIndex = X,如果数组还没遍历完,那么就继续找最小的,直到一次遍历结束。2、交换第一个索引处(0)和minI

2020-07-05 16:23:41 182

原创 简单排序之冒泡排序

1、什么是冒泡排序冒泡排序是一种简单的交换排序算法。它适合小规模数据的排序,并且其效率比较低。2、原理(以正序为例,即从小到大)1、比较相邻两个元素,若前者大于后者,则两个元素交换位置2、对每一对相邻元素做相同的工作,从开始的第一对元素到结尾的最后一对元素。最终最后位置的元素为最大元素。3、重复第1、2步,知道整个数组为有序的。3、代码实现public static void sort(int[] arr){ for (int i = arr.length-1; i >= 1

2020-07-05 15:25:07 114

原创 SpringMVC学习(一)之常用注解

常用的注解1、RequestParam注解作用: 把请求中的指定名称的参数传递给控制器中的形参赋值属性:value:请求参数中的名称name:作用和value一样required:请求参数中是否必须提供此参数,默认值是true,必须提供代码:@RequestMapping("/testRequestParam")//@RequestParam 绑定请求参数,将其值赋给方法中的形参...

2020-03-20 15:31:38 128

原创 SpringMVC学习(一)之入门

一、三层架构和MVC三层架构1、开发服务器端程序,一般都基于两种形式,一种C/S架构(客户端/服务器)程序,一种B/S架构(浏览器/服务器)程序2、使用Java语言基本上都是开发B/S架构的程序,B/S架构又分成了三层架构3、三层架构  表现层:WEB层,用来和客户端进行数据交互的。表现层一般会采用MVC的设计模型  业务层:处理具体的业务逻辑的  持久层:用来操作数据库的MVC模...

2020-03-18 23:35:30 93

原创 Mybatis学习(四)之延时加载、缓存

表之间的关系有几种:

2020-03-16 17:20:30 115

原创 Mybatis学习(三)之多表查询

表之间的关系有几种:3 或 4种,取决于多对一一对多多对一(可以看成一对一)一对一多对多举例:用户和订单就是一对多订单和用户就是多对一 一个用户可以下多个订单 多个订单属于同一个用户人和身份证号就是一对一 一个人只能有一个身份证号 一个身份证号只能属于一个人老师和学生之间就是多对多 一个学生可以被多个老师教过 一个老师可以交多个学生mybatis中的多表...

2020-03-08 16:20:30 299 2

原创 Mybatis学习(三)之使用动态SQL

为什么使用动态SQL在写SQL语句时,往往会有一些查询条件,但这些查询条件有时候有,有时候没有,那么mybatis提供的动态SQL可以解决这类问题。如:根据条件查询用户列表,如果用户名不为空,则返回名字为参数的用户列表,如果为空则返回全部用户列表。不过静态SQL也可以解决,但是写起来比较繁琐。各有各的优缺点,待详细了解。动态SQL之 if 标签IUserDao接口,创建方法/** ...

2020-03-07 14:59:56 190

原创 Mybatis学习(三)之事务控制

mybatis事务控制的分析什么是事务?百度百科的解释:事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务的四大特性 ACID数据库事务 transanction 正确执行的四个基本要素。ACID:原子性(Atomicity):事务是一个原子操作单元,事...

2020-03-06 23:59:56 286

原创 Mybatis学习(三)之连接池

mybatis中连接池使用及分析1、连接池的介绍什么是连接池?百度百科对其的解释:连接池相当于一个容器,把这些连接都初始化出来,然后将这些初始化好的连接存放到容器里,想要的时候,就从容量里取,不用的时候就放回容器。那是如何取的呢?这个流程如下:基本原理:基本原理:在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返回方法。如外部使用者可通过getConnect...

2020-03-06 23:03:44 206

原创 Mybatis学习(一)之入门

一、什么是框架?这是一个很抽象的概念框架是一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度(好处)。它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。换个角度说:开发工程师建立在框架的基础之上完成开发者完成部分加框架自身完成部分组成一个完整的产品。二、三层架构和ssm框架的...

2020-03-04 20:58:56 131

原创 Servlet笔记

1、Servlet在web.xml中的配置web版本3.0以下(servlet3.0以下)<!--配置Servlet --> <!--配置servlet类路径 --> <servlet> //表示一个servlet <servlet-name>my</servlet-name> //指定servlet的唯一标识...

2020-02-27 01:08:02 276

原创 Spring学习(二)之IOC的注解使用

一、Spring基于注解的IOC

2020-02-03 00:34:35 159

原创 Spring学习(一)之概述&IOC

Spring(一)一、Spring的概述1、 Spring是什么?Spring是一个full-stack轻量级开源框架

2020-01-22 22:19:20 139

原创 Java多线程(基础)

什么是程序,进程和线程?程序:是一组指令的集合(如我们写的代码),它静态存储于诸如磁盘之类的存储器里。当一个程序被操作系统执行时,它就会被载入内存空间,并在逻辑上产生一个独立的实例,这就是进程。进程:是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例,即运行中的程序。通常由程序、数据和进程控制块(Process Control Block,PCB)组成的,PCB时进程存在的唯...

2020-01-14 00:26:57 169

空空如也

空空如也

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

TA关注的人

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