自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mybatis

MybatisMybatis是持久层(将程序的数据从瞬间状态转换成持久状态)框架,优点方便小巧易学耦合性低,实现了sql和代码的分离。配置文件在子模块src/main/resources目录下创建配置文件mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

2020-07-31 13:38:29 285

原创 343.整数拆分

343.整数拆分题解​ 我们并不知道这个数分成几个相乘会最大,所以要使用动态规划遍历计算所有的情况。一个数i,可以分为j和i-j,也可以把i-j继续细分。设f[i]为所求值,所以比较j*(i-j)和j*f[i-j]即可。其中1 <= j < i,f[0] = f[1] = 0代码class Solution { public int integerBreak(int n) { int[] f = new int[n+1]; int max = 0

2020-07-30 22:54:44 190

原创 104.二叉树的最大深度

104.二叉树的最大深度题解:计算左子树深度,计算右子树深度,递归比较得出最大深度/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int maxD

2020-07-28 21:29:31 96

原创 392.判断子序列

392.判断子序列题解:​ 双指针遍历class Solution { public boolean isSubsequence(String s, String t) { int n = s.length(), m = t.length(); int i = 0, j = 0; while(n > i && m > j){ if(s.charAt(i) == t.charAt(j)){

2020-07-27 17:01:35 91

原创 329.矩阵中的最长递增路径

329.矩阵中的最长递增路径题解:遍历计算出每一个格子的最长路径长度,用hashmap记录,避免重复计算class Solution { Map<Long, Integer> map = new HashMap<>(); public int helper(int[][] matrix, int startX, int startY) { long key = (long) startX << 32 | startY;//计算以当前

2020-07-26 22:26:25 83

原创 Mysql函数、事务、视图、日志、主从复制

Mysql函数字符函数# 获取字节数select length('join') # 为4select length('张三丰') # 9show variables like '%char%' # 可查询到我们使用的是utf8字符集 # utf8一个汉字三个字节# gbk一个汉字两个字节# 拼接字符串select concat(last_name,_,first_name) from employees#大小写select upper('john');select lower(

2020-07-26 10:00:14 595

原创 410.分割数组的最大值

410.分割数组的最大值题解:​ 设f[i][j]为从前i个数中分出j个数组,各数组和的最大值最小,设数字k,让k到i的数为一个数组,sub[b]为前b项和。则f[i][j] = Max(f[k][j-1],sub[i] - sub[k+1])class Solution { public int splitArray(int[] nums, int m) { int n = nums.length; int[][] f = new int [n+1][m+1

2020-07-25 22:05:56 106

原创 64.最小路径和

64.最小路径和题解设定dp[i][j]为从i+1行j+1列到右下角的最小路径和可知dp[i][0]=dp[i-1][0]+当前格子路径dp[0][j]=dp[0][j-1]+当前格子路径dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])代码class Solution { public int minPathSum(int[][] grid) { if(grid == null || grid.length == 0 || grid[0]

2020-07-24 23:27:38 80

原创 1025.除数博弈

1025.除数博弈题解列举N=1 2 3 … 5的情况​ 发现当N为偶数,且两个玩家都以最佳状态参与游戏的时候爱丽丝必胜,N为奇数鲍勃必胜。可通过数学归纳法证明:​ 当N为1或N为2,结论成立。​ 当N大于2,假设N<=k的时候成立,则当N=k+1,当N为偶数,x为N的因数,可以是偶数也可以是奇数,那么爱丽丝取奇数,N-x就为奇数,且N-x<=k,爱丽丝必胜。当N为奇数,x为N的因数,则只能是奇数,N-x只能是偶数,且N-x<=k,鲍勃必胜。代码class

2020-07-24 20:34:24 162

原创 Mysql设计规范

Mysql设计规范数据库命名规范采取24个英文字母**(区分大小写)**和0-9的自然数(很少)和下划线_组成命名简洁明了(不能超过30字符)备份数据库可以加标识 如user_db_20200724数据库表名命名规范采取24个英文字母**(区分大小写)**和0-9的自然数(很少)和下划线_组成命名简洁明了,多个单词以下划线隔开 user_login数据库字段名命名规范采取24个英文字母**(不区分大小写)**和0-9的自然数(很少)和下划线_组成命名简洁明了,多个单词以下划线隔

2020-07-24 15:51:35 147

原创 数据库连接池

数据库连接池存放数据库连接的容器让系统初始化好之后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完时,会将对象归还给容器.连接池的优点节约资源用户访问高效C3P0:数据库连接技术Druid:数据库连接池实现技术,由阿里巴巴提供.用法:getConnection();Connection.close();1.导入两个jar包c3p0-0.9.5.2 jar mchange-commons-java-0.2.12.jarc3p0.prop

2020-07-24 14:00:23 85

原创 Mysql锁机制

大一菜鸡的个人笔记,欢迎指点和交流。Mysql锁机制锁的划分按锁的粒度划分:行锁、表锁、页锁按锁的使用方式划分:共享锁、排它锁(悲观锁的一种实现)按思想划分:悲观锁、乐观锁InnoDB中的几种行级锁类型:Record Lock、Gap Lock、Next-key Lock索引记录的锁:Record Lock间隙锁:Gap Lock行锁​ 行级锁是mysql中粒度最细的锁,表示只对当前操作的行进行加锁。行级锁能大大减小数据库操作的冲突。但粒度小同时加锁的开销也最大,而且有可能会出现死锁的情

2020-07-23 15:30:23 162

原创 Mysql索引

Mysql索引​ 索引(index)是帮助Mysql高效获取数据的数据结构。即索引是数据结构。同一个表的索引总数为16个。由于算法一般只能应用于特定的数据结构,所以索引的底层数据结构和算法有很多种,各有优势。​ 二叉搜索树B-Tree索引​ 现在大多数数据库系统及文件系统都使用的是BTree和其变种B+Tree(每一个叶子节点都指向下一叶子节点的指针,方便叶子节点的范围遍历)B-Tree通常意味着所有的值都是按顺序存储好的,并且每一个叶子到根的距离相同,很适合

2020-07-23 11:26:36 126

原创 剑指Offer 11.旋转数组的最小数字(二分法)

剑指Offer 11.旋转数组的最小数字(二分法)题解​ 首先使用start + (end - start)/2 表示mid,可以防止当start和high特别大时可能造成的溢出。画图可知当number[mid] > number[end] 则可忽略左半部分,反之忽略右半部分。若相等,则仅可end–代码:class Solution { public int minArray(int[] numbers) { int start = 0, end = numbe

2020-07-22 18:28:29 116

原创 Maven

大一菜鸡的个人笔记,欢迎指点和交流。Maven不用Maven的问题一个项目就是一个工程​ 如果项目非常庞大,不适合继续使用package来划分模块。最好是每一个模块对应一个工程,利于分工协作。​ 借助maven实现jar包必须手动复制到lib​ 同样的jar包存在多个工程中 浪费空间​ 借助Maven 可以把jar包仅仅保存在仓库中​ Maven或SVN依赖搞定框架和jar包jar要自己准备jar包其他依赖的jar包还要找​ commons系列等仓库本地仓库

2020-07-22 14:06:37 130

原创 设计模式及七大原则

23种设计模式学习设计模式的意义​ 设计模式的本质是面向对象设计原则的实际应用,是对类的封装性、继承性、和多态性以及类的关联关系和组合关系的充分理解。​ 优点:可以提高程序员的思维能力,编程能力和设计能力。使程序设计更加标准化,代码编程更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。OOP七大原则开闭原则对扩展开发 对修改关闭里氏替换原则继承必须确保超类所拥有的性质在子类中仍然成立意思是不重写父类的方法

2020-07-22 14:00:55 258

原创 95.不同的二叉搜索树Ⅱ

95.不同的二叉搜索树Ⅱ题解​ 二叉搜索树:左子树都比根结点小,右子树都比根结点大。关于生成树的题目,很多都可以利用递归生成左右子树。对于此题,设输入值为n,则根结点可为1 2 3…n 各自递归生成左右子树。设根结点值为i,则左子树结点范围为(start,i-1),右子树结点范围为(i+1,end),start和end分别是左右边界值。最后从左子树集合中选出一颗左子树,从右子树集合中选出一颗右子树,拼接到根结点,并放入树list即可。代码:/** * Definition for a binar

2020-07-21 21:56:17 148

原创 Docker

大一菜鸡的个人笔记,欢迎指点和交流。DockerDocker的意义把项目和运行环境打包成镜像,在docker仓库下载我们发布的镜像。Docker和虚拟机的不同传统虚拟机虚拟出一条硬件,运行一个完整的操纵系统,然后在这个系统上安装和运行软件。容器中的应用直接运行在宿主机,没有内核,也没有虚拟硬件,所以效率高。每个容器之间互不影响。组成​ 镜像(image):镜像像是一个模板,通过这个模板创建容器服务,通过这个镜像可以创建多个容器。(最终服务运行或者项目运行就是在容器中的)​ 容器(c

2020-07-21 15:59:46 2187

原创 Linux

大一菜鸡的个人笔记,欢迎指点和交流。LinuxLinux环境LAMP(Linux+Apache+Mysql+PHP)或LNMP(Linux+Nginx+Mysql+PHP)阿里云开放端口添加安全组规则如果要让所有人都可以连接,则在授权对象填0.0.0.0/0指令clear 清空屏幕Ctrl+鼠标滚轮 放大或缩小字体上传文件使用xftpls命令list的缩写,可以查看linux文件夹包含的文件。而且可以查看文件权限,目录信息等。ls -a 列出目录所有文件 包含以.开始的隐藏文件

2020-07-18 12:01:11 404

原创 AQS

大一菜鸡的个人笔记,欢迎指点和交流。想要学透AQS非常困难,希望之后多看源码和更新笔记…AQS​ AbstractQueuedSynchronizer,提供一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架。ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等并发类都是基于AQS实现的,通过继承AQS实现其模板方法,然后将子类作为同步组件的内部类。​ AQS维护了一个volatile语义(支持多线程下的可见性)的共享变量state和一个FI

2020-07-17 19:58:49 159

原创 多线程

多线程原来只有一条路,车多了会拥挤,效率极低多加几个车道,效率高,即多线程。进程与线程进程:在操作系统中运行的程序就是进程,比如QQ、游戏等。一个进程可以有多个线程,比如在视频中可以同时听声音、看图像、看弹幕。线程的特性​ 程序是一个静态的概念。而进程是执行程序的一次执行过程,是一个动态的概念。是系统分配资源的概念。​ 一个进程中可以包含多个线程,至少有一个线程(Main线程)。 线程是CPU调度和执行的单位。​ 很多的多线程是模拟出来的,即一个CPU在同一时间点,只能执行一段代码。因为

2020-07-16 19:58:42 1929 3

原创 计网部分笔记

计算机网络OSI参考模型应用层所有能产生网络流量的程序如QQ等表示层解决传输时是否要压缩或加密与解密等问题图像传输之前是使用二进制还是ascii码使用何种编码模式也是表示层的问题。会话层​ 输入网址,访问网站,就要建立一个会话。网页的前进快退,都是需要和服务器进行交互。​ 网页信息传完了,一定时间没刷新,会话就被释放了。会话可以通过命令行命令 netstat -n查看木马程序,不管怎么隐藏,都必须建立会话,都可以被我们查到建立的会话。传输层​ 可靠传输:当某一部分数据未成功传

2020-07-15 14:45:15 522

原创 反射

大一菜鸡的个人笔记,欢迎指点和交流。反射静态语言与动态语言动态语言​ 是一类在运行时可以改变其结构的语言,比如运行时可以修改或删除新的函数,对象或代码。​ Object-C、C#、JS、PHP、Python属于动态语言静态语言​ 运行时结构不可变​ Java、C、C++属于静态语言Java不是动态语言,但可以称为"准动态语言"。因为Java有一定的动态性,我们可以利用反射来获得类似动态语言的特性。反射使得Java编程变得更加的灵活。反射的定义反射机制可以获得任何类的内部信息,并能直接操

2020-07-14 13:56:59 300

原创 注解

大一菜鸡的个人笔记,欢迎交流。注解Java注解(Annotation),又称Java标注、元数据,是Java5.0引入的一种注释机制。Java语言中的类、方法、变量、参数和包等都可以被标注。(1)注解和注释注解:说明程序的,给计算机看的。注解不需要分号.注解本质就是一个接口,该接口默认继承Annotation接口。注释:用文字描述程序的。给程序员看的。(2)注解的作用编写文档:通过代码里标识的注解生成文档(javadoc api文档)代码分析:通过代码里表示的注解对代码进行分析编译检查

2020-07-13 21:11:59 251

原创 动态代理模式

动态代理模式意义使真实角色的任务更加纯粹。代理角色实现了任务的分工业务扩展的时候 方便集中管理一个动态代理类可以代理多个类(方便添加功能)简介动态代理和静态代理角色一样动态代理的代理类是动态生成的,不是我们直接写好的动态代理分为两大类:基于接口的动态代理,基于类的动态代理基于接口:JDK动态代理基于类:cglib需要了解两个类:Proxy、invokatio/** * @author:zmc * @function: * @date: 2020/7/13 15:37 *

2020-07-13 20:56:58 254

空空如也

空空如也

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

TA关注的人

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