自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单例设计模式

什么是单例设计模式?单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类只有一个实例。即一个类只有一个对象实例。具体实现:将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。在该类内部产生一个唯一的实例化对象,并且将其封装为private static类型。定义一个静态方法返回这个唯一对象。1 饿汉模式直接创建实例对象,无论是否需要创建1.1 饿汉式单例public class Si.

2020-10-31 23:07:30 149 1

原创 MySQL表的复杂操作

1. 数据库约束1.1 约束类型NOT NULL - 指示某列不能存储 NULL 值。UNIQUE - 保证某列的每行必须有唯一的值。DEFAULT - 规定没有给列赋值时的默认值。PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHE

2020-08-15 20:08:53 408

原创 MySQL表的基础操作

1. 表的基础操作需要操作数据库中的表时,需要先使用该数据库use db_test;1.1 查看表结构desc 表名;1.2 创建表基本语法:CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype);代码示例:可以使用comment增加字段说明create table stu_test ( id int, name varchar(20) comment '

2020-08-02 21:37:08 373

原创 MySQL数据库基础操作

1. MySQL数据库简介MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQ

2020-08-02 20:21:56 455

转载 MySQL5.7安装教程

MySQL5.7参考 http://blog.csdn.net/u013205623/article/details/79171698一、下载https://dev.mysql.com/downloads/mysql/按照自己电脑位数下载相应安装包 二、安装1. 解压到想要安装的目录&nb...

2020-08-02 19:41:55 181

原创 排序

1 排序1.1 排序的概念排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。平时的上下文中,如果提到排序,通常指的是排升序(非降序)。通常意义上的排序,都是指的原地排序(in place sort)。1.2 稳定性两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。2 七大基于比较的排序2.1 直接插入排序排序原理整个区间被分为有序区间无序区间每次选择无序区间的第一个元素,在有序区间内选择合

2020-05-31 18:39:08 698

原创 泛型

1 泛型类的定义1.1 语法class 泛型类名称<类型形参列表> {// 这里可以使用类型参数}class ClassName<T1, T2, ..., Tn> {}class 泛型类名称<类型形参列表> extends 继承类/* 这里可以使用类型参数 */ {// 这里可以使用类型参数}class ClassName<T1, T2, ..., Tn> extends ParentClass<T1> {// 可以只使用部

2020-05-31 15:52:15 166

原创 java对象的比较

1 元素的比较1.1 基本类型的比较在Java中,基本类型的对象可以直接比较大小。public class TestCompare {public static void main(String[] args) {int a = 10;int b = 20;System.out.println(a > b);System.out.println(a < b);System.out.println(a == b);char c1 = 'A';char c2 = 'B';Sy

2020-05-30 17:04:06 174

原创

1 堆的概念如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为 小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。v堆的性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。2 堆的存储方式

2020-05-29 18:24:14 167

原创 二叉树

1 树型结构1.1 概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的节点,称为根节点,根节点没有前驱节点除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、…、Tm,其中每一个集合 Ti (1 <= i <= m) 又是一棵与树类似的子树。每棵子树的根节点有且只有一个前驱,可以有0个或多个后继。树是递归定义的。

2020-05-29 17:17:48 251

原创 栈和队列

1 栈1.1 栈的概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈,出数据在栈顶。1.2 栈的实现public class MyStack<T> { public T[] elem; public int top; pub

2020-05-29 14:57:40 127

原创 卡牌游戏

代码展示:class Card{ public int rank; public String suit; public Card(int rank,String suit) { this.rank = rank; this.suit = suit; } @Override public String toString() { return String.format("[%s %d]",suit,rank

2020-05-29 14:19:30 553

原创 Java中如何如理异常

异常的背景初识异常我们曾经的代码中已经接触了一些 “异常” 了. 例如:除以 0System.out.println(10 / 0);// 执行结果Exception in thread "main" java.lang.ArithmeticException: / by zero数组下标越界int[] arr = {1, 2, 3};System.out.println(arr[100]);// 执行结果Exception in thread "main" java.lan

2020-05-11 21:57:10 139

原创 面向对象编程

继承代码中创建的类, 主要是为了抽象现实中的一些事物(包含属性和方法).有的时候客观事物之间就存在一些关联关系, 那么在表示成类和对象的时候也会存在一定的关联.例如, 设计一个类表示动物public class Animal { public String name; public Animal(String name) { this.name = name; } public void eat(String food) { System.out.println(this.name

2020-05-11 16:26:29 282

原创 LeetCode——234. 回文链表

题目描述:请判断一个链表是否为回文链表。输入示例:示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true解题思路:先找到中间节点然后逆置后半部分节点head节点从前开始往中间走,slow节点从后开始往中间走,判断首尾节点的数据是否相等解题代码: public boolean isPalindrome(ListNode head) { //为空或者只有一个节点..

2020-05-09 21:26:41 123

原创 LeetCode——142. 环形链表 II

题目描述:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。输入示例:示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释...

2020-05-08 14:08:20 179

原创 LeetCode——141. 环形链表

题目描述:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。输入示例:示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2],...

2020-05-08 13:37:25 129

原创 LeetCode——22. 链表中倒数第k个节点

题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。输入示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.解题思路:...

2020-05-08 12:55:17 139

原创 LeetCode——876. 链表的中间结点

题目描述:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。输入示例:示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val...

2020-05-07 21:55:37 121

原创 LeetCode——203. 移除链表元素

题目描述:删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5解题思路:创建一个cur节点从前往后遍历,判断每个节点的val是否与给定的val相等;创建一个prev节点保存cur的前一个节点,发现与给定val相等的值是,通...

2020-05-07 21:21:47 123

原创 LeetCode——160. 相交链表

题目描述:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。输入实例:示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入...

2020-05-07 17:15:37 365

原创 LeetCode——21. 合并两个有序链表

题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:首先构造一个虚拟节点newHead,然后比较l1和l2节点中存放数据的大小,小的节点放在newHead的后面,让tmp节点代替newH...

2020-05-07 16:55:57 112

原创 无头双向链表

class Node { public int data;//数据 public Node next;//后继信息 public Node prev;//前驱信息 public Node(int data) { this.data = data; }}public class MyLinkedList { public No...

2020-05-02 16:29:32 211

原创 单链表

链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 相比于顺序表,单链表有其独特的优点:任意位置插入删除时间复杂度为O(1) ,并且没有增容问题,插入一个开辟一个空间。但也有缺点,即以节点为单位存储,不支持随机访问。class Node { public int data; public Node next; public N...

2020-05-01 16:48:31 105

原创 顺序表

顺序表的概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储。静态顺序表适用于确定知道需要存多少数据的场景.静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用public class MyArrayList { ...

2020-04-22 17:05:34 143

原创 Java中的类和对象

1.类和类的实例化类就是一类对象的统称。对象就是这一类具体化的一个实例。简单的例子:我们做月饼的模子就是一个类,而通过这个模子可以做出月饼,那么在这个例子当中,类就是那个模子,而月饼就是那个对象,所以月饼就是一个实体。一个模子可以实例化无数个对象。总的来说:类相当于一个模板,对象是由模板产生的样本。一个类,可以产生无数的对象。声明一个类就是创建一个新的数据类型,而类在 Java 中属于引用...

2020-04-21 15:44:49 146

原创 时间复杂度和空间复杂度

1. 算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间...

2020-04-18 21:04:18 173

原创 Java中的数组

1. 一维数组数组本质上就是让我们能 “批量” 创建相同类型的变量。1.1 创建数组基本语法:// 动态初始化数据类型[] 数组名称 = new 数据类型 [] { 初始化数据 };// 静态初始化数据类型[] 数组名称 = { 初始化数据 };代码示例:int[] arr = new int[]{1, 2, 3};int[] arr = {1, 2, 3};注...

2020-04-18 20:30:58 151

原创 Java中方法的使用

1. 方法的基本用法1.1 什么是方法方法就是一个代码片段, 类似于 C 语言中的 “函数”,方法有一下几点意义:能够模块化组织代码做到代码被重复使用, 一份代码可以在多个位置使用.让代码更好理解更简单.直接调用现有方法开发, 不必重复编写1.2 方法定义语法基本语法格式:// 方法定义public static 方法返回值 方法名称([参数类型 形参 ...]){ ...

2020-04-17 18:57:04 240

原创 猜数字游戏(Java)

之前在学习C语言的时候,我们用循环语句和函数写了一个猜数字的小游戏,现在学习了Java语言之后,我又写了一次猜数字小游戏,相比之下,Java语言更加方便简洁,大家一起来看看吧游戏规则:系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 “太小了”, 如果输入的数字比该随机数大, 提示 “太大了” , 如果输入的数字和随机数相等, 则提示...

2020-04-16 11:49:46 254

原创 Java中的逻辑控制语句

1.顺序结构顾名思义,顺序结构就是按照代码书写的顺序一行一行执行,直到结束。System.out.println("a");System.out.println("b");System.out.println("c");// 运行结果abc2.分支结构2.1 if语句基本语法格式:单分支if(布尔表达式){ //条件满足时执行代码}双分支if...

2020-04-16 11:37:03 276

原创 Java中的数据类型与运算符

1.变量和类型变量指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据,类型则是对变量的种类进行了划分, 不同的类型的变量具有不同的特性。1.1整型变量基本语法格式:int 变量名 = 初始值;代码示例:int a = 10;System.out.println(a);注意事项:int 表示变量的类型是一个整型变量名是变量的标识. 后续都是通过这个名字来使用...

2020-04-14 11:52:20 223 1

原创 Java开发环境安装与初识Java

安装开发环境1.简介JDK:Java开发工具包 ,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。JRE:运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。JVM:整个...

2020-04-12 13:37:34 269

原创 调整奇数偶数顺序

题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。解题思路:给定两个下标left和right,left放在数组的起始位置,right放在数组中最后一个元素的位置循环进行一下操作a. 如果left和right表示的区间[left, right]有效,进行b,否则结束循环b. left从前往后找,找到一个...

2020-04-06 17:49:28 446

原创 strcpy实现

模拟实现库函数strcpy#include <stdio.h>#include <assert.h>char* my_strcpy(char* dest, const char* src){ char *ret = dest; assert(dest != NULL); assert(src != NULL); //把src指向的字符串拷贝到dest指向的...

2020-04-05 19:33:01 199

原创 计算求和

求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222#include <stdio.h>int Sum(int num){ int a = 2; int sum = 0; int i = 0; for (i = 1; i <= num; i++) { sum += a; a = (a *...

2020-04-02 19:42:54 174

原创 使用指针打印数组内容

写一个函数打印arr数组的内容,不使用数组下标,使用指针。arr是一个整形一维数组。#include <stdio.h>void PrintArr(int arr[]){ int i = 0; int* p = arr; for (i = 0; i < 10; i++) { printf("%d ", *(p + i)); }}int main(){...

2020-04-02 19:41:10 357

原创 扫雷小游戏

//game.h(需要使用的头文件)#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <time.h>#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#d...

2020-04-01 21:36:51 94

原创 交换两个变量(不创建临时变量)

//不允许创建临时变量,交换两个整数的内容#include <stdio.h>int main(){ int a = 5; int b = 3; printf("交换之前:a=%d b=%d\n", a, b); a = a^b; b = a^b; a = a^b; printf("交换之后:a=%d b=%d\n", a, b); return 0;}...

2020-03-29 18:54:09 313

原创 打印整数二进制的奇数位和偶数位

获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列#include <stdio.h>int main(){ int i = 0; int num = 10; for (i = 31; i >= 1; i-=2) { printf("%d ", (num >> i) & 1); } printf("\n"); for (...

2020-03-29 18:53:02 223

空空如也

空空如也

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

TA关注的人

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