自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 秋招总结

抓住十月的尾巴,拿到了还算满意的offer。。。从八月初开始投简历,石沉大海的居多,庆幸的是也有收到几个提前批笔试的,然而没有过的,各种挂,内心是无比的复杂,开始担心自己找不到工作了。。。不过看到周围同学提前批好像都没有几个拿到offer,自己还是对正式的秋招充满了信心。九月开始,基本每天有笔试。但是过的也不是很多。秋招的第一个面试是美丽联合的电话面试,当时紧张的要死,二十分钟结束了面试。。。...

2018-10-28 21:20:25 388 6

原创 线程池技术以及原理

一、使用线程池的好处 1.降低资源消耗 可以重复利用已创建的线程降低线程创建和销毁造成的消耗。 2.提高响应速度 当任务到达时,任务可以不需要等到线程创建就能立即执行。 3.提高线程的可管理型 线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低稳定性,使用线程池,统一分配,调优和监控。 二、线程池的工作原理 当任务提交以后,线程池是如何处理的? 1.线程池判断核心线程...

2018-08-09 12:19:25 249

原创 关于内存泄漏与内存溢出

一、内存泄漏与内存溢出 1、内存溢出:简单来理解就是,你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,出现溢出。2、内存泄漏:你用new申请了一块内存,后来很长时间都不再使用了(按理应该释放),但是因为一直被某个或某些实例所持有导致 GC 不能回收,也就是该被释放的对象没有释放。 2.1出现内存泄漏与内存溢出的原因?为什么出现内存溢出(out of memory )...

2018-08-04 11:38:15 341

原创 Java动态规划

一、动态规划 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题 与分治法不同的是。 动态规划经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。 如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。1.1动态规划的步骤 找出最优解的性...

2018-07-25 21:08:55 2043

原创 字典树(java实现)

一、什么是java字典树? Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。 它有3个基本性质: 1...

2018-07-21 22:02:22 7270 6

原创 浅谈海量数据处理

一、海量数据 所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。 二、海量数据常见的解决方式 1.分而治之/hash映射 + hash统计 +堆/快速/归并排序; 2.双层桶划分 3.Bloom filter/Bitmap; 4.Trie树/数据库/倒排索引; 5.外排...

2018-07-19 12:09:33 243

原创 AVL树(java实现)

一、AVL树的四种旋转操作 (1)左旋 代码:/** * AVL树的左旋转操作,从root开始,进行左旋,完成后,把新的根节点返回 * * @param root * @return */ private AvlNode leftRotate(AvlNode root) { AvlNode newroot =...

2018-07-13 19:04:24 257

原创 BST树(java实现)

BST树二叉搜索树 左子树比根节点小,右子树比根节点大BST树节点public class BSTNode { int data; BSTNode left; BSTNode right; public BSTNode(int data, BSTNode left, BSTNode right) { this.data = data;...

2018-07-08 14:35:40 1192

原创 TCP三次握手和四次挥手

一、TCP三次握手 三次握手过程 第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=...

2018-07-03 15:42:30 152

原创 简单工厂&工厂方法&抽象工厂

一、简单工厂(Simple factory) 集中管理对象的产生,业务代码只需要调用相应的方法, 传入不同的参数区分对象,就能得到想要的对象了 把业务代码和对应的对象解耦创建一个抽象类public abstract class CellPhone { protected String name; public CellPhone(String name){ ...

2018-07-01 13:26:40 196

原创 观察者模式

观察者模式也叫发布—订阅模式。 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。...

2018-07-01 10:53:32 164

原创 职责链模式

职责链模式 也叫责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。意图:避免请求发送者与接收者耦合在一起,让多...

2018-06-30 22:24:09 176

原创 子集树与排列树

一、子集树 当所给的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解空间称为子集树 现需打印序列(长度为n)的全部子集,将问题抽象转化为一棵二叉树. 一个序列的所有子集为2^n,即可看成具有2^n个叶节点的满二叉树,总结点个数为2^(n+1)-1. 需定义额外数组保存当前分支的打印信息(左分支置1,右分支置0) 每遍历完一条分支,打印当前分支序列 如上图:用数组arr=...

2018-06-30 22:10:06 11730

原创 单利模式

一、简单介绍单利模式 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控制实例数目,节省系统资源的时候。 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 关键代码:构造函数是私有的。 单利模式的特点: 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一...

2018-06-23 22:43:57 363

原创 动态代理VS静态代理

一、代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。 为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从...

2018-06-19 22:21:54 160

原创 MyBatis总结

一、MyBatis简介 Mybatis 是持久层开发框架。 MyBatis的机制的原理: ①MyBatis支持普通的SQL查询,存储过程和高级映射的持久层框架。 ②MyBatis将大量的SQL语句从程序里面抛离出来,配置在配置文件中,实现SQL的灵活配置。 二、为什么要使用MyBatis? ① 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问...

2018-06-17 10:48:12 173

原创 关于SQL 优化的问题

一、首先当我们面对一个有 SQL 性能问题的数据库时,我们应该从何处入手来进行系统的分析,使得能够尽快定位问题 SQL 并尽快解决问题???1.1通过 show status 命令了解各种 SQL 的执行频率 Com_xxx 表示每个 xxx 语句执行的次数,我们通常比较关心的是以下几个统计参数。 Com_select:执行 select 操作的次数,一次查询只累加 1。 Com...

2018-06-13 09:53:23 251

原创 MySql的索引

一、什么是索引? 一个索引是存储的表中一个特定列的值数据结构(最常见的是B-Tree)。索引是在表的列上创建。所以,要记住的关键点是索引包含一个表中列的值,并且这些值存储在一个数据结构中。请记住记住这一点:索引是一种数据结构 。 创建索引的目的:用于提高数据库表的数据访问速度的。 既然索引是为了提高数据库的查询效率,那么是不是数据库中的表的字段都需要建立索引呢??? 肯定不是的! ...

2018-06-10 18:16:35 183

原创 MySQL存储引擎以及MyISAM与InnoDB的区别

一、MySQL存储引擎概述 插件式存储引擎是 MySQL 数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和索引数据、是否使用事务等。MySQL 默认支持多种存储引擎,以适用于不同领域的数据库应用需要,用户可以通过选择使用不同的存储引擎提高应用的效率,提供灵活的存储,用户甚至可以按照自己的需要定制和使用自己的存储引擎,以实现最大程度的可定制性。 默认情况下,创建新表不指定表的存储引擎...

2018-06-10 17:21:57 217

原创 HashMap总结

一、HashMap的工作原理 Java中的HashMap是以键值对(key-value)的形式存储元素的。HashMap需要一个hash函数,它使用hashCode()和equals()方法来向集合/从集合添加和检索元素。当调用put()方法的时候,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上。如果key已经存在了,value会被更新成新值。HashMap的一些重...

2018-02-23 21:21:11 286

原创 JavaJDBC

一、在使用jdbc对数据库中的数据进行操作时,首先需要在创建的工程中导入mysql-connector-java-5.0.8-bin jar包,然后在Eclipse中的具体操作步骤可以分为以下六步: 1、加载数据库驱动 2、获取链接 3、获取向数据库发sql语句的statement对象 4、向数据库发送sql,获取数据库返回的结

2018-01-11 12:04:24 402

原创 Java集合(2)

Set接口介绍

2017-12-02 21:34:55 154

原创 JAVA集合

集合 接口

2017-11-28 16:25:27 222

原创 泛型

java泛型

2017-11-26 14:36:06 228

原创 迷宫算法(java实现)

迷宫问题是栈的典型应用,因此借助栈来实现迷宫问题; *题目描述:用类来解决迷宫路径的查找问题,寻找一条从左上角迷宫入口到右下角迷宫出口的一条有效路径,0代表可以行走,1代表不能行走,找到,请输入最终的迷宫和路径信息, 找不到,请输出不存在有路径。 例如: * 请输入迷宫的行列数(m * n):5 5 * 请输入迷宫的路径: * 0 0 1 0 0 * 1 0 0 1 0

2017-10-29 20:07:09 1224 1

原创 单链表

(1)单链表:在插入和删除元素的时候比顺序表方便,不需要移动所有元素。单链表的实现class Node{ //创建结点 int value; Node next; public Node(){ this(0); } public Node(int value){ //初始化 this.value=value;

2017-10-25 23:35:53 206

原创 栈的存储结构

(1)栈的定义:限制在表的一端进行删除和插入的线性表,通常能够插入和删除的一端为栈顶(top); (2)顺序栈:顺序栈的实现,从本质上来讲就是顺序线性表的实现,唯一重要的是应该用数组的那一端表示栈顶。主要操作是出栈和入栈,也就是修改栈顶指针; java代码实现:class SqStack{ private int[] stack; private int top;

2017-10-25 23:09:17 588

原创 线程同步与线程安全

一、 线程同步 1.1为什么要进行线程同步? 当多个线程共享同一内存的时候,可能会出现某个线程在修改变量,而另一线程读取到不一致的数据。所以不得不使用锁,在同一时间只允许一个线程访问该变量。 如图描述这种同步,如果线程B要读取该变量,首先要获得锁。同样,线程A要更新该变量,也要获取同样的这把锁。也就是线程B在线程A释放这把锁之前不能读取该变量。 1.2 互斥锁 概念: 实现线程访问临界

2017-10-25 22:33:45 261

原创 线索化二叉树

线索化二叉树等于把一棵树转变成一个双向链表,这样对我们插入、删除结点,查找某个结点带来方便。 线索化的过程实质是将二叉链表的空指针改为指向前驱和后继的线索,由于前驱和后继的信息只有在遍历的过程中才能得到。所以,线索化的过程就是在遍历的过程中修改空指针的过程。typedef enum{Link=0,Thread=1} PointTag; //Link=0表示左右孩子指针

2017-10-03 20:07:36 421

原创 线程

一、 线程的概念及优点 线程是进程之中一条执行序列, 一个进程至少有一条执行序列(程),称之为主线程, 可以通过库函数创建新的线程, 称其为函数线程。 线程可以同时执行。 优点:提高进程的并发度,并且有效利用多处理器和多核计算器。二、 线程与进程的区别 (1)线程是轻量级的进程, 进程是资源分配的最小单位, 线程是调度执行的最小单位。 数据共享不同。 在切换时, 线程比进程效率高。 (2)进

2017-10-03 14:26:05 276

原创 进程间通讯

一、进程间通讯: 两个进程之间能相互发送数据 二、进程间通讯的四种方式:管道 信号量 消息队列 共享内存 1.管道: 有名管道: 在文件系统目录中存在一个管道文件。 (1)管道文件:仅仅是文件系统中的标示,并不在磁盘上占据空间 在使用时,在内存上开辟空间,作为两个进程数据交互的通道 (2)管道文件的创建: 1) mkfifo 命令 2) mkfifo 函数 (在代码中

2017-09-28 22:48:27 311

原创 关于二叉树的结点

(1)二叉树单分支结点int SizeOneBrch(BtNode *ptr) //单分支{ if(ptr==NULL) { return 0; } else { if(ptr->leftchild ==NULL&&ptr->rightchild !=NULL) { retur

2017-09-26 22:03:30 877

原创 二叉树创建以及遍历

char *ps = “ABCDEFGH”; char *is = “CBEDFAGH”; char *ls = “CEFDBHGA”;BtNode * Buynode(){ BtNode *s = (BtNode*)malloc(sizeof(BtNode)); if(s == NULL) exit(1); memset(s,0,sizeof(BtNode));

2017-09-26 20:27:12 240

空空如也

空空如也

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

TA关注的人

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