自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【算法】动态规划_最小费用购物问题

动归思想问题描述商店中每种商品都有标价。例如,一朵花的价格是 2 元。一个花瓶的价格是 5 元。为了吸引顾客,商店提供了一组优惠商品价。优惠商品是把一种或多种商品分成一组,并降价销 售。例如,3 朵花的价格不是 6 元而是 5 元。2 个花瓶加 1 朵花的优惠价是 10 元。试设计一个算法,计算出某一顾客所购商品应付的最少费用。对于给定欲购商品的价格和数量,以及优惠商品价,编程计算所购商品...

2019-06-29 08:10:05 13092 6

原创 C语言数组总结

数组的定义 所谓数组,是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。 这些无序排列的同类数据元素的集合称为数组。 数组是用于储存多个相同类型数据的集...

2018-06-27 13:45:06 2085

原创 【读书笔记】《深入理解Java虚拟机》

一、Java虚拟机运行时数据区JVM会在执行Java程序的过程中把它管理的内存划分为若干个不同的数据区域。这些数据区域各有各的用处,各有各的创建与销毁时间,有的区域随着JVM进程的启动而存在,有的区域则依赖用户线程的启动和结束而创建与销毁。一般来说,JVM所管理的内存将会包含以下几个运行时数据区域:线程私有区域:程序计数器、Java虚拟机栈、本地方法栈线程共享区域:Java堆、方法区(包括运...

2019-09-18 23:51:06 226

原创 【Java】集合框架JCF

一、Collection的框架类图public interface Collection<E> extends Iterable<E>在Java的类集里面(java.util包)提供了两个最为核心的接口:Collection、Map接口。Collection是单个集合保存的最大父接口。Collection接口只是一个存储数据的标准,并不能区分存储类型。在实际开发...

2019-09-18 11:55:36 259

原创 【Java】Lock体系

Lock体系1、死锁产生条件1、互斥:共享资源只能被一个线程占用2、占有且等待:线程A已经取得共享资源X,在等待获取资源Y时,不释放X3、不可抢占:线程A已经获取X之后,其他线程不能强行抢占X4、循环等待:线程A占用X,线程B占用Y,A等待Y,B等待X2、如何解决死锁问题?只要破坏任何一个条件即可解决为了方便的解决死锁问题,引出了Lock体系Lock体系相较于synchron...

2019-09-08 10:57:24 288

原创 【Java】线程同步synchronized关键字

一、管程1、管程概念操作系统原理课程告诉我们用信号量能解决所有并发问题,而Java采用的是管程技术,synchronized 关键字及 wait()、notify()、notifyAll() 这三个方法都是管程的组成部分。而管程和信号量是等价的,所谓等价指的是用管程能够实现信号量,也能用信号量实现管程。但是管程在利用OOP的封装特性解决了信号量在工程实践上的复杂性问题,因此java采用管程机制...

2019-09-04 09:46:27 277

原创 【Java】线程的四种创建方式

进程与线程进程与线程的概念进程:操作系统中一个程序的执行周期称为一个进程。线程:一个程序同时执行多个任务。通常,每一个任务就称为一个线程。进程和线程的区别:与进程相比较,线程更"轻量级",创建、 撤销一个线程比启动一个新进程开销要小的多。没有进程就没有线程,进程一旦终止,其内的线程也将不复存在。在多线程与多进程的场景下,每个进程由于拥有自己的一整套变量,而线程则共享数据。所以共享变量使得...

2019-09-02 17:30:29 227

原创 【Java】反射与代理模式

反射概念正常的关于对象的处理流程是根据包名.类名找到类,所谓的"反"指的是根据对象来取得对象的来源信息,而这个"反"的操作核心的处理就在于Object类的一个方法:该方法返回的是一个Class类对象,这个Class描述的就是类三种获取某个类Class对象的方式通过类对象获取该类实例反射调用构造方法在定义简单java类的时候一定要保留有一个无参构造,Class类通过反射实例化类...

2019-08-22 16:26:10 200

原创 【Linux】Linux基本命令

文章目录用户管理查看当前用户创建用户与更改密码切换用户删除用户组的创建与删除文件和目录目录结构创建目录显示文件/文件夹清单操作与现实当前路径删除文件夹建立空文件检查目录空间大小查看文本文件内容文本文件划分文件内容统计删除文件及目录重命名/移动文件复制文件查看文件的详细状态检查文件类型包管理检查磁盘空间挂载与卸载文件系统文件的访问权限进程管理其它系统管理任务用户管理查看当前用户users:列...

2019-07-19 09:42:22 285

原创 【网络】TCP/IP协议栈

文章目录网络模型OSI七层TCP/IP四层应用层(application-layer)传输层(transport layer)网络层(network layer)数据链路层(data link layer)物理层(physical layer)数据包的封装和分用IP地址&MAC地址应用层HTTPHTTP报文HTTP的状态码HTTP和HTTPS的区别两个问题:有效载荷与报头如何分离?如何根据...

2019-07-19 06:32:27 325

原创 【读书笔记】《MySQL必知必会》(视图、存储过程、游标、触发器)

视图(VIEW)视图是虚拟表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询视图仅仅是用来查看存储在别处数据的一种设施,本身不包含数据,因此它们返回的数据是从其他表检索出来的,再添加或更改这些表中的数据时,视图将返回改变过得数据。同样,视图是可更新的,更新一个视图将更新基准表视图不能索引,也不能有关联的触发器或默认值视图的作用简化复杂的联结重新格式化检索出来的数据过滤不...

2019-07-09 13:55:15 199

原创 【Java】多线程(二)

Lock体系公平锁等待时间最长的线程祖先获取到锁synchronized无法实现公平锁,引出Lock体系Lock体系是JDK-1.5产生,是基于Java语言实现的(synchronized出现死锁)可重入锁持有锁的线程,可以再对锁的计数器+1,synchronized有可重入锁,没有公平锁Lock体系避免死锁(破坏不可抢占)响应中断:void lockInterruptibl...

2019-06-29 14:05:23 141

原创 【Java】多线程(一)

Java多线程实现a.继承Thread类,覆写run()方法,该方法是每个线程都需要执行的任务b.实现Runnable接口,覆写run()方法本身Thread类实现了Runnable接口,而如果用该方式来创建多线程,自己的类也实现了Runnable接口,这就是设计模式中的代理模式,Thread类实现辅助操作,包括线程的资源调度等任务,自定义线程类完成真实业务c.实现Callable...

2019-06-28 17:29:31 156

原创 【意识流_Mybatis】关联映射

关联映射在进行多表查询的时候,表和表的关系有一对一、一对多、和多对多的关系,如何用mybatis匹配他们之间的关系,查询出需要的数据,这就是关联映射所要解决的问题构建表需要演示关联映射,第一步先得构建表分析表间关系mapper文件resultMap的配置需要进行关联映射,就需要对返回值resultMap进行配置,前面我们在查询单表的时候,如果查询出来表中的字段和实体类的属性值不匹配...

2019-06-26 00:17:27 196

原创 【意识流_Mybatis】初识(mapper代理+动态sql)

基本使用1.导入所依赖的jdbc连接jar包和mybatis jar包2.po的中属性的命名要和数据库中表中字段的命名一致3.配置mybatis-config.xml主要用于数据库的连接和与写sql语句配置文件的关联。configuration中可以给po包起别名(typeAliases),除此之外还要与mapper文件关联(mappers)4.mapper文件中写sql语...

2019-06-24 18:04:03 197

原创 【数据结构】并查集(leetcode-547.朋友圈)

题目描述班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数...

2019-06-22 10:45:41 923

原创 【数据结构】B-树

性质B-树实际上是一棵M阶(M>2)的M路平衡搜索树,可以是空树或者满足下面性质:根节点至少有两个孩子每个非根节点至少有M/2(上取整)个孩子,至多有M个孩子每个非根节点至少有M/2-1(上取整)个关键字,至多有M-1个关键字,并且以升序排列key[i]和key[i+1]之间的孩子节点的值介于key[i]、key[i+1]之间所有的叶子节点都...

2019-06-21 16:03:35 648

转载 【Java】碎片知识小结二

final关键字1)当final修饰类的时候,表示该类不能够被继承2)当final修饰方法的时候,表示该方法不能被子类覆写3)final修饰基本类型变量,表示该变量只有一次赋值机会4)final修饰引用,表示该引用只有一次指向对象的机会...

2019-06-17 20:10:31 144

原创 对MVC 和 Spring MVC的理解

MVC如果仅仅使用Servlet,Servlet不仅要准备数据,还要准备html。 尤其是准备html,可读性非常差,维护起来也很麻烦;而如果仅仅使用JSP,则会发现在JSP页面中写Java代码不是非常方便。而我们在JSP/Sevlet的学习中常见的做法是,制定一个专门的Servlet只用来从数据库中查询数据,然后跳转到JSP页面,这里会用到request.getRequestDispatch...

2019-06-03 18:35:24 452

原创 SpringIoC Bean的依赖和配置

1)Bean属性的直接赋值这里是使用XML文件,对Bean的属性进行赋值,在赋值的过程中不仅有基本类型的属性,也有集合类型的属性,在对XML文件进行配置的时候,这些集合类型属性的赋值有些许差别,需要注意。Bean类import java.util.Date;import java.util.List;import java.util.Map;import java.util.Set;...

2019-05-27 00:07:53 303

原创 基于Java Config配置注解方式构建的SpringIoC

实现思路1)应用程序不主动创建对象,但要描述创建它们的方式。2)在应用程序代码中不直接进行服务的装配,但要配置文件中描述哪一个组件需要哪一项服务。容器负责将这 些装配在一起代码结构实现细节1)SpringConfigBean的定义,在标注了@Configiration的Java类中,通过在类方法上标注@Bean定义一个Bean,方法必须提供Bean的实例化逻辑。Bean的名称默认为方...

2019-05-26 21:09:54 420

原创 【Java】碎片知识小结一

变量默认值Java中每个数据类型在创建变量的时候都有默认值,如果未进行初始化想看到该数据类型的默认值到底是什么通过上面的方式显然是错误的,正确的做法是结合类来实现引用数据类型的默认值为nullJava中一个具体的数值,如果是整数,默认是int类型;如果是小数,默认是double类型&amp;amp; |在C语言中,可以用非0表示真,0表示假,而Java中用于逻辑判断有专门的boolean类...

2018-11-16 11:35:29 270

原创 【Linux】进程

进程调度算法FCFS先来先服务(first-come first-served, FCFS)的调度算法,是按照进程到达的先后次序进行调度,或者说它是优先考虑在就绪队列中等待时间最长的进程,而不管该进程所需执行的时间长短SPF短进程优先(short process first, SPF)的调度算法,是以进程所要求的运行时间长短来衡量优先级,时间越短,其优先级越高缺点必须预知进程的运行时...

2018-11-08 13:14:16 313

原创 【算法】七大排序算法

以下以无序的整形数组调整至非降序为例直接插入排序只存在一个元素的时候是有序的,所以直接调整数组的第二个元素,此时符合上面图示让需要插入元素从后往前依次与前面的已经有序部分进行比较,如果插入元素大于比较的元素,表明已经找到需要插入的位置,否则让前面直接覆盖后面一个元素,从而为插入元素腾出空间,覆盖前已经用临时变量保存了插入元素最后找到合适位置,将临时空间保存的元素赋给需要插入的位置上...

2018-10-27 11:17:29 297

原创 【数据结构】哈希

什么是哈希?将元素的存储位置和该元素的关键码通过某种函数建立一一对应的关系,构造出来的存储结构称之为哈希表,转换时借助的函数称之为哈希函数,在理想情况下,根据关键码搜索元素时可以不经过任何比较,一次性从表中查找到所要搜索的元素但是在通过哈希函数进行元素存储位置确立的时候会出现,不同元素的关键码通过哈希函数计算出来的存储位置是相同的,这便是哈希冲突解决哈希冲突有两种方式:开散列闭散列...

2018-10-25 14:49:52 248 2

原创 【数据结构】搜索二叉树

具有什么特征的树是一棵二叉搜索树:空树若左右子树存在,左子树上的所有结点都小于根节点的值,右子树上的所有结点都大于根结点的值;左右子树也满足以上特征根据以上特征发现二叉搜索树的中序遍历是有序的中序遍历:1 2 3 4 5 6 7 8 9 10查找如果根结点不为空,则进行一下判断:如果根命中,表示找到了如果所要找的值小于根的值,去其左子树找如果所要找的只大于根的值,去其右子...

2018-10-24 21:55:08 201

原创 【数据结构】堆

什么是堆?按照完全二叉树的层序遍历顺序存储的元素集合,当每一个根结点大于左右孩子结点时为大堆,小于左右孩子结点时为小堆小堆:大堆:以下举例以大根堆为例堆的向下调整调整前提:逻辑上表示的完全二叉树,其左右子树已经满足堆的性质先判断需要调整的结点有无左右孩子,由于是完全二叉树,如果不存在左孩子,右孩子一定不存在。假设需要调整的结点存放在数组中的下标为root,则可以根据二叉树的特...

2018-10-17 23:13:08 181

原创 【数据结构】二叉树

关于二叉树的相关操作,是在先要构造出一个二叉树的基础之上,如何创建二叉树?树的存储结构又是怎样表示的?树的存储结构typedef int DataType1;typedef struct TNode{ DataType1 data; struct TNode *lctree; struct TNode *rctree;}TNode;二叉树的创建根据带空结点的前序,采用递归的...

2018-10-15 21:43:37 211

原创 【数据结构】栈及栈的应用

栈栈是一种先进后出的的特殊线性表,只允许在固定的一端进行插入和删除元素操作,进行输入插入和删除操作的一端称为栈顶,另一端称为栈底下面采用静态顺序表实现的方式简单封装一个栈存储方式#define MAX_SIZE 100typedef int DataType;typedef struct{ DataType arr[MAX_SIZE]; int top;}Stack;相应...

2018-09-26 07:47:04 961 3

原创 【数据结构】队列&栈和队列的面试题

栈栈是一个后进先出(LILO)的特殊线性表,以下采用静态顺序表的方式,简单的模拟一个栈存储方式#define MAX_SIZE 100typedef int DataType;typedef struct{ DataType arr[MAX_SIZE]; int top;}Stack;相关操作//初始化void StackInit(Stack *ps){ ps-&amp;amp;amp;amp;g...

2018-09-19 09:25:17 469

原创 【数据结构】双向循环带头结点链表

前面我们写过了不带头结点的单链表,由于没有头结点,在对单链表进行头插/删的时候需要传入二级指针;在需要进行尾插/删的时候,需要先根据头指针找到头结点,然后从头往后遍历找到最后一个结点再进行相应操作。而我们今天要写的双向循环带头结点链表,相对于不带头结点的单链表做增删时,将会方便许多。(1)可以通过头结点找到链表首位(2)在链表中间做增删时,不需要从头遍历(3)有头结点, 对带头结点的链表...

2018-09-17 16:52:16 802 1

原创 【数据结构】链表面试题★★★★★

判断两个链表是否相交,若相交,求交点(假设链表不带环)遍历两个链表到最后一个结点,若两链表的最后一个结点地址相同则相交求得两个指针的长度,然后长链表先遍历(长链表-短链表)步,然后两链表同时向后遍历,当链表遍历到结点地址相同的时候,该结点为交点pNode FindInterNode(pNode p1, pNode p2){ pNode cur1 = p1; pNod...

2018-09-13 07:18:12 403

原创 【数据结构】链表面试题★★★

从尾到头打印链表(1)非递归打印:使用cur指针多次循环遍历,然后不断向前更新指向最后一个结点的指针last,循环结束条件是当last指向链表第一个结点void TailToHeadPrint(pNode plist){ pNode cur = NULL; pNode last = NULL; while (plist != last) { ...

2018-09-10 07:00:14 281

原创 【数据结构】静态顺序表

数据类型的定义:typedef int DataType;typedef struct SeqList{ DataType array[MAX_SIZE]; int size;}SeqList, *pSeqList;创建变量的初始化和销毁:void InitSeqList(pSeqList ps){ assert(NULL != ps); ...

2018-09-04 21:23:32 255

原创 【链表的应用】C语言实现贪吃蛇小游戏

在开始游戏之前先介绍几个游戏中需要用到的Windows API函数:BOOL SetConsoleCursorPosition( HANDLE hConsoleOutput, // handle to screen buffer COORD dwCursorPosition // new cursor coordinates );设置标准输出上光标的位置为posHANDLE...

2018-08-28 17:25:55 1334 1

原创 【数据结构】顺序表 & 链表

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 例如,C语言中的整形变量,其值集为某个区间上的整数(区间大小依赖于不同的机器),定义在其上的操作为加、减、乘、除和取模等算术运算。高级程序语言中的数据类型可分为两类:原子类型:原子类型的值不可再分,例如C语言中的基本类型(整形、实型、字符型和枚举型)、指针类型和空类型(void)。结构类型:结构类型的值是由若干成分按...

2018-08-27 18:45:02 286

原创 自定义类型小结

一、结构体、位段、枚举、联合的初识1.1 什么是结构体结构体同数组一样属于聚合数据类型,只不过数组里面保存的是同类型的元素的集合,访问具体元素或以下表形式访问,或以指针形式访问;但结构中各个成员可能具有不同的类型,他们需要通过名字去访问,每个成员都有自己的名字。 结构体声明:struct tag{ member-list;//成员列表}variable-list;//...

2018-08-06 17:38:23 243

原创 通讯录进阶的心路历程

说是进阶,其实就是将所学习知识的运用到通讯录中,分别是:结构体数组动态内存开辟通讯录实现文件I/O结构体数组(1)首先对功能的实现进行分析:通讯录能够存储大量联系人的信息,每个联系人都可以用一个结构体来创建,首先我们想到了结构体数组。但是这样创建会出现一个问题,我们不知道这个结构体数组已经录入了多少联系人,不便于此通讯录状态的判断和增加、删除联系人操作的实现为了解决...

2018-08-04 00:07:49 480

原创 指针和数组(《C语言深度解剖》——读书小结)

目录:(1)数组?指针?(2)数组和指针的区别(两种形式并存的必要)(2.1)定义为指针,声明为数组(2.2)定义为数组,声明为指针(3)指针数组(4)数组指针(5)函数指针(6)函数指针数组(6.1)计算器常规实现(6.2)计算器函数封装(6.3)计算器转移表实现(7)指向函数指针数组的指针(1)数组?指针?书中一开始提出这样...

2018-07-31 18:06:58 328

原创 小试牛刀(指针和数组练习)

练习一#include &lt;stdio.h&gt; int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int *)(&amp;a + 1); printf( "%d,%d", *(a + 1), *(ptr - 1)); return 0; }代码分析: 一维数组,&amp;数组名取...

2018-07-29 08:45:19 439 2

空空如也

空空如也

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

TA关注的人

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