自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串编辑距离

    字符串的编辑距离,又称为Levenshtein距离。是利用字符操作,把字符串A转换成字符串B所需要的最少操作数。其中,字符操作包括:删除一个字符 插入一个字符 修改一个字符    例如对于"hello"和"hell",可以通过插入一个'o'和删除一个'o'来达到目的。    一般来说,两个字符的编辑距离越小,则它们越相似。如果两个字符串相同,则它们的编辑距离为0.可以分析出,...

2018-09-22 19:42:51 611

原创 跳台阶问题

1.输出斐波那契数列的第n项。直接上代码:public class Fibonacci { public static int fibonacci(int n){ if(n==0){ return 0; } if(n==1){ return 1; } if(n==2){ return 1; } return fibonacci(n-1)+f...

2018-09-20 19:59:01 146

原创 Lambda表达式详解

    Java 8最值得学习的特性就是Lambda表达式。Lambda写的好可以极大减少代码冗余,同时可读性也好过冗长的内部类,匿名类。举例说明一下:(1)创建线程传统写法: Thread t1=new Thread(new Runnable() { @Override public void run() { System.out.println("hello...

2018-09-18 11:30:38 284

原创 设计模式之单例模式

1.懒汉式,线程不安全public class Demo1 { private static Demo1 instance; private Demo1(){} public static Demo1 getInstance(){ if(instance==null){ instance=new Demo1(); } return instance; }}2....

2018-09-18 10:31:14 125

原创 设计模式之适配器模式

    适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。    音频播放器设备只能播放mp3文件,通过使用一个更高级的音频播放器来播放vlc...

2018-09-18 09:36:54 109

原创 计算二叉树高度的三种方法

 递归public class 递归 { class TreeNode{ int val; TreeNode left; TreeNode right; public TreeNode(int value){ this.val=value; } } public int getHeight(TreeNode root){ if(root==null){...

2018-09-17 20:23:39 57302 11

原创 二叉树镜像

求二叉树镜像。public class Solution { public void Mirror(TreeNode root) { if(root==null){ return; } if(root.left==null&&root.right==null){ retur...

2018-09-17 16:15:29 113

原创 Java代理模式之动态代理

    代理模式是设计模式中非常重要的一种类型。代理模式从类型上来说,可以分为静态代理和动态代理两种类型。    假设一个场景,有一个蛋糕店,卖的蛋糕都是用蛋糕机做的,而且不同种类的蛋糕由不同的蛋糕机来做,有水果蛋糕机,巧克力蛋糕机等。它们卖的面包片也是面包机做的,不同种类的面包机也是由不同的面包机来做,有红豆面包机,葡萄干面包机等。用代码描述如下。//做蛋糕的机器 public i...

2018-09-15 11:28:04 163

原创 Arrays.sort和Collections.sort实现原理解析

Collections.sort方法底层就是调用的Arrays.sort方法。写一个例子看源码:public static void main(String[] args) { List<String> strings = Arrays.asList("6", "1", "3", "1","2"); Collections.sort(st

2018-09-12 16:12:24 2608 2

原创 Integer==int会发生什么情况?

当Integer和int类型进行比较时,Integer是int的包装类,Integer就会自动拆箱为int型,所以还是相当于两个int比较。

2018-09-12 15:32:45 1034

原创 B树、B+树及索引

B树:    每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为null。B+树:    只有叶子节点存储data,叶子节点包含了这棵树的所有键值,叶子节点不存储指针。后来在B+树上加了顺序访问指针,也就是每个叶子节点增加一个指向相邻叶子节点的指针。可以像遍历链表一样遍历叶子节点。B+树是数据库系统实现索引的首选数据结构。    一般来说,索引很大,往往以索引文...

2018-09-12 11:20:53 335

原创 AQS理解

    AbstractQueuedSynchronizer简称AQS,是一个用于构建锁和同步容器的框架。事实上concurrent包内许多类都是基于AQS构建,例如ReentrantLock、Semaphere、CountDownLatch、FutureTask等。AQS解决了在实现同步容器时设计的大量细节问题。    AQS使用一个FIFO的队列表示排队等待锁的线程,队列头节点称作哨兵节点...

2018-09-11 20:53:59 534

原创 MVCC

    在并发读写数据库时,读操作可能会不一致的数据(脏读)。为了避免这种情况,需要实现数据库的并发访问控制,最简单的方式就是加锁访问。由于加锁会将读写操作串行化,所以不会出现不一致的状态。但是读操作会被写操作阻塞,大幅降低读性能。在Java并发包中,有copyonwrite系列的类,专门用于优化读远大于写的情况。而其优化的手段就是,在进行写操作的时候,将数据copy一份,不会影响原有数据,然后进...

2018-09-11 20:00:21 181

原创 volatile关键字

    java提供了一种稍弱的同步机制,volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型的时候,编译器与运行时都会注意到这个变量是共享的,所以不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。    在访问volatile...

2018-09-05 16:52:48 135

原创 CAS操作是怎么实现的

    CAS是compare and swap,翻译过来就是比较并交换。维护三个变量值,一个是内存值V,一个是期望的旧的值A,一个是要更新的值B。更新一个变量的时候,只有当预期值A与内存V中的值相等的时候,才会执行更新操作,把内存V的值改为B。    从思想上来说,synchronized属于悲观锁,悲观的认为程序中的并发情况严重,所以严防死守,CAS属于乐观锁,乐观地认为程序中的并发情况不...

2018-09-05 14:26:06 2770

原创 TOP k问题

题目:有1千万条短信,有重复,以文本文件的形式保存,一行一条,有重复。请用5分钟时间,找出重复出现最多的前10条。解析:对于本题来说,某些面试者想用数据库的办法来实现:首先将文本导入数据库,再利用select语句某些方法得出前10条短信。但实际上用数据库是满足不了5分钟解决这个条件的。这是因为1千万条短信即使1秒钟录入1万条(这已经算是很快的数据录入了)5分钟才300万条。即使真的能在5分钟...

2018-09-05 09:14:22 193

原创 Hashmap1.7和1.8区别+ConcurrentHashmap1.7和1.8区别

HashmapJDK1.7中    使用一个Entry数组来存储数据,用key的hashcode取模来决定key会被放到数组里的位置,如果hashcode相同,或者hashcode取模后的结果相同,那么这些key会被定位到Entry数组的同一个格子里,这些key会形成一个链表;    在hash函数特别差的情况下,比如说所有key的hashcode都相同,这个链表可能会很长,那么put...

2018-09-04 16:58:06 6184 5

原创 堆排序原理与实现

    堆排序实际上是利用堆的性质来进行排序的,我们通常说的堆就是二叉堆,二叉堆又称完全二叉树或者近似完全二叉树。堆排序是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。数组可以根据索引直接获取元素,时间复杂度为O(1)。最大堆的特性如下:父结点的键值总是大于或者等于任何一个子节点的键值 每个结点的左子树和右子树都是一个最大堆最小堆的特性如下:父结点的键值总是小于或者等于...

2018-09-04 16:26:00 464

原创 背包问题详解

1.0-1背包问题问题描述:有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是p[i]。求解将哪些物品装入背包可使这些物品的总重量不超过背包容量,且价值总和最大。思路:每种物品仅有一件,可以选择放或不放。F[i,v]表示前i件物品放入一个容量为v的背包可以获得的最大价值。状态转移方程为:F[i,v]=max{F[i-1,v],F[i-1,v-w[i]]+p[i]}...

2018-09-04 14:55:39 820

原创 网站高并发&高可用处理

1.三大问题高并发:多个进程或线程同时访问同一资源会产生并发问题; 高可用 大数据量2.解决方案初级解决方案:系统或服务器级别的解决方案:增大服务器的CPU; 增加内存条; 增加硬盘个数,对硬盘做Raid5; 换掉免费的Tomcat,使用商用weblogic; 增加到二块网卡; 聘请系统架构师优化Linux内核;应用级别解决方案:网页HTML静态化(需要CMS...

2018-09-03 15:54:26 1031

原创 spring整合JDBC+spring aop事务

1.spring整合JDBC    spring中提供了一个可以操作数据库的对象,对象封装了JDBC技术。    JDBCTemplate:JDBC模板对象。与DBUtils中的QueryRunner非常相似。    JDBCDaoSupport:根据连接池创建JDBC模板。读取properties配置:(替代将DataSource注入到容器中)db.properties:...

2018-09-03 09:36:19 173

Mathtype中丢失Mplugin.dll

Mathtype中丢失Mplugin.dll,把Mplugin.dll文件放到Mathtype安装根目录下就好了。

2019-01-06

hadoop2.7.3 在windows下需要的hadoop.dll winutils.exe等文件(bin目录)

hadoop2.7.3 在windows下需要的hadoop.dll winutils.exe等文件 拷贝到bin目录下覆盖。

2017-11-20

空空如也

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

TA关注的人

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