自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (2)
  • 收藏
  • 关注

原创 浅谈死锁

浅谈死锁死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进。死锁不仅仅是在线程之间会发生,存在资源独占的进程之间同样也可能出现死锁。通常来说,我们大多是聚焦在多线程场景中的死锁,指两个或多个线程之间,由于互相持有对方需要的锁,而永久处于阻塞的状态。 下面是一个死锁的例子/** * create by jingchao on 16:3...

2018-08-14 11:22:29 191

原创 重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树,假设输入的前序遍历和中序遍历的结果中都不含有重复值。 前序遍历:{1,2,4,7,3,5,6,8} 中序遍历:{4,7,2,1,5,3,8,6} 主要思路: 1.前序遍历的第一个元素是根节点,将根初始化。 2.在中序遍历中找到根的位置,根的左边是左子树,右边是右子树。 3.然后

2018-02-06 01:32:04 108

原创 工厂方法模式

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。工厂方法模式通用类图: 抽象人类: public interface Human { void talk();}具体人类;public class YellowHuman implements Human { @Override

2018-02-03 00:18:18 119

原创 面试题5:替换空格

面试题5:替换空格题目:实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“We are happy.”,则输出“We%20are%20happy.”。解题思路:遍历字符串,求出公有多少个字符,和有多少个空格;因为要将空格替换成“%20”,意味着一个空格要增加两个长度。所以新的字符长度为 原有长度+空格长度*2;这是一个指针p1,放在久长度尾部,p2,放在

2018-02-02 01:22:41 140

原创 五分钟掌握——快速排序

快速排序: 快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。先来一张图,说明一下大致过程 通常我们进行快排

2018-02-01 20:24:42 255

原创 二维数组中的查找

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的递增顺序排序。请完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否包含该整数。 #includeusing namespace std;bool find(int a[][4],int rows,int columns,int key){ bool flag=false; in

2018-02-01 02:01:24 108

原创 面试题三:数组中重复的数字

题目一: 在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3.#includeusing namespace std;bool duplicate(int *a,int

2018-01-31 21:43:45 93

原创 Java内存模型---详细总结

Java内存模型一.硬件的效率与一致性 由于计算机的存储设备和处理器的运算速度相差几个数量级,所以现代计算机系统必须加入一层读写速度尽可能接近于处理器运算速度的高速缓存(Cache):这样将运算所使用到的数据复制到缓存中,让运算能够快速进行,并且在运算结束后再从缓存中同步回内存中,这样处理器就无需等待缓慢的读写了 基于高速缓存的存储交互很好的解决了处理器与内存的速度矛盾,但是也为计算机带来

2018-01-31 10:42:46 178

原创 Singleton单例模式

Singleton单例模式 一、 单例模式通俗易懂,其定义为:确保某一个类只有一个实例,而且自行实例化,并向整个系统提供这个实例。 单例模式优点: 1.因为单例模式在内存中只有一个实例,减少了内存的开支,特别是一个对象需要被频繁的创建和销毁时,,单例模式的优势就非常的明显了。 2.可以避免对于资源的多重占用,,例如对文件的写操作,若只有一个实例在内存中就可以

2018-01-27 23:40:38 116

原创 堆排序

堆排序: 1.以数组下标为一颗二叉树的节点编号 2.通过比较交换,把这颗二叉树变成大根堆或小根堆 3将齐根节点首元素与数组最后一个元素交换,缩短数组长度,完成排序。#include#define N 8using namespace std;void M_A_Heap(int *a,int end){//制造一个大根堆int cnt,t,pa;while(1){

2018-01-25 23:15:43 105

原创 约瑟夫环的实现

约瑟夫环约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。如图:我们有由十个节点组成的环形链表,其中数据域的值为编号,假设从1号开始报数,每次第三个人出队,求出队顺序? 1.节点:typedef struc

2017-10-02 18:11:44 337

原创 回溯法——迷宫问题

回溯法——迷宫问题1.首先我们需要自定义一个迷宫; 左上角为入口,右下角为出口,0为路,-1为墙 用二维数组存储 2.我们在走迷宫之前,首先要确立一个走的顺序,即贪心准则,我们首先试探的方向应该是下,然后是右,上,左; 为了确保每一个格子都有上下左右,我们需要给我们的迷宫加上一圈墙8*8,变成10*10; 3.当我们在一个格子上时,通过遍历格子的4个方向,来确定能否行走,若能走,走,不

2017-10-01 18:25:14 1293 2

原创 回溯法—八皇后问题(N皇后)

八皇后问题八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。解题思路: 1.在8*8的棋盘上进行逐行试探,每一行进行逐格试探,判断该格是否能放一个皇后,即判断在该格对应的列,左斜线,右斜线上是否有皇后,若有则放,

2017-09-27 14:19:28 260

原创 二叉树的非递归遍历——前序

**二叉树的非递归遍历——前序** 1.核心思想①非递归,即必须要利用栈来实现;②前序遍历的顺序为,先输出当前节点数据域的值,再输出其左子树上的值,其次为右子树;③利用栈的先进后出,先将右子树存入,再将左子树存入,出栈时自然先左后右,将这个过程写入循环,即可实现非递归遍历;2.代码 ①结构体类型typedef struct Node{ int data; struct No

2017-09-16 12:12:13 207 1

原创 二叉搜索树的创建

链式二叉搜索树的创建 二叉搜索树:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。1.结构体类型:typedef struct Node{ int

2017-09-15 18:15:30 578

乐鑫官方烧写工具

乐鑫官方烧写工具

2019-04-26

JAVA核心36讲

36讲,java优化,java并发包,基础知识

2017-09-12

空空如也

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

TA关注的人

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