- 博客(1120)
- 资源 (129)
- 收藏
- 关注
原创 求一个字符串的最长的无重复子串
例如,在”abcabcbb”中,其无重复字符的最长子字符串是”abc”,其长度为 3。对于,”bbbbb”,其无重复字符的最长子字符串为”b”,长度为1。import java.util.HashSet;import java.util.Scanner;public class Main { /** * 获得最长的无重复子串(滑动窗口的思想) * @pa...
2018-09-10 16:20:35 781
翻译 网络编程小结
一、网络编程NIONIO即Non-block I/O,同步非阻塞I/O,与Socket类和ServerSocket类相对应,NIO也提供了SocketChannel和ServerSocketChannel两种不同的套接字通道实现。深入理解NIO之前呢,首先我们要了解与NIO有关的基本概念。如Buffer(缓冲区)、Channel(管道、通道)、Selector(选择器、多路复用器) ...
2018-09-10 10:51:07 285
翻译 操作系统小结
一、大内核和微内核内核分为主要的两个类别:聚内核与微内核(还有第三类,外核,主要存在于研究领域),大内核比其它两类的设计更简单,在1980之前所有内核都采用聚内核的方式。聚内核被实现为运行在单一的地址空间里的单一的进程。因此,这种内核通常以一个静态的二进制文件保存在磁盘中。所以内核的服务都存在并执行于一个大的内核地址空间里。在内核的内部进行通信显得直接了当,因为所有运行在内核态的代码都在相同的...
2018-09-09 19:01:47 255
翻译 Zookeeper的Leader选举算法
一、概述在ZooKeeper中,提供了三种Leader选举的算法,分别是 1)LeaderElection、 2)UDP版本的FastLeaderElection 3)TCP版本的FastLeaderElection 可以通过在配置文件zoo.cfg中使用electionAlg属性来指定,分别使用数字0~3来表示。 0代表LeaderElection,这是一种纯UDP实现的...
2018-09-09 15:13:30 5650
翻译 Mysql总结
一、Mysql优化语句优化,索引优化和失效,和优化锁对象,优化磁盘IO 二、聚簇索引和非聚簇索引 MyISAM的是非聚簇索引,B+Tree的叶子节点上的data,并不是数据本身,而是数据存放的地址。主索引和辅助索引没啥区别,只是主索引中的key一定得是唯一的。这里的索引都是非聚簇索引。非聚簇索引的两棵B+树看上去没什么不同,节点的结构完全一致只是存储的内容不同而已,主键索引B+树的...
2018-09-09 14:23:08 216
翻译 Redis相关问题
一、Redis简介Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件 它支持多种类型的数据结构,如字符串(Strings),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitmaps,Hyperloglogs 和地理空间(Geospatial)索引半径查询。其中常见的数据结构类型有:Strin...
2018-09-09 12:55:46 223
翻译 Mysql主从复制
一、 什么是主从复制将主数据库中的DDL和DML操作通过二进制日志(BINLOG)传输到从数据库上,然后将这些日志重新执行(重做);从而使得从数据库的数据与主数据库保持一致。二、主从复制的作用1、主数据库出现问题,可以切换到从数据库。2、可以进行数据库层面的读写分离,3、可以在从数据库上进行日常备份三、经典架构 MySQL之间数据复制的基础是二进制日志文...
2018-09-09 10:48:42 137
转载 Java抽象类与接口的区别
什么时候使用抽象类和接口 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。 转载链接...
2018-09-06 11:49:43 154
转载 Java开发面试:高并发秒杀系统如何设计与优化
转载链接 如今处在一个大数据时代,应届生找工作面试高级Java开发工程师时,经常会被问一些和大数据相关的问题,比如大数据处理问题、高并发处理问题、数据优化问题等,笔者曾经遇到两个比较经典的问题,高并发秒杀系统的设计优化问题和大数据文件排序问题。在这里总结了高并发秒杀系统的设计和优化点。 面试官常问的问题有:简单说一下秒杀系统的设计思路?你怎么实现秒杀业务的?你怎么保证秒杀成...
2018-09-06 11:29:31 4597
翻译 虚拟机和集合
一、Minor GC ,Full GC 触发条件(1)Minor GC触发条件:当Eden区满时,触发Minor GC。(2)Full GC触发条件:(1)调用System.gc时,系统建议执行Full GC,但是不必然执行(2)老年代空间不足(3)方法去空间不足(4)通过Minor GC后进入老年代的平均大小大于老年代的可用内存(5)由Eden区、From Space...
2018-09-06 11:15:23 292
翻译 SQL的四种连接-左外连接、右外连接、内连接、全连接
一、四种连接1、内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。 2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。 在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定...
2018-09-05 19:30:10 379
翻译 分布式锁的实现方式
在分布式的环境下,我们需要保证一个方法在同一时间内只能被同一个线程执行。在单机环境中,Java中其实提供了很多并发处理相关的API,但是这些API在分布式场景中就无能为力了。也就是说单纯的Java API并不能提供分布式锁的能力。所以针对分布式锁的实现目前有多种方案:一 分布式锁一般有三种实现方式:1. 数据库锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。...
2018-09-04 18:31:20 156
原创 寻找一个字符串中的最长的重复子串
问题:求一个字符串中的最长的重复子串import java.util.*;/**寻找一个字符串中的最长的重复子串*/public class Solution { String reg,left; //最长的重复字串,极端情况就比如abcabc,最长重复字串就是abc //即为字符串长度的一半,当然这是极端情况,通常都是小于串长一半的 ...
2018-09-04 17:56:37 9306 3
转载 Linux常用命令
查看进程 1. ps 查看某个时间点的进程信息示例一:查看自己的进程ps -l示例二:查看系统所有进程ps aux示例三:查看特定的进程ps aux | grep threadxtop 实时显示进程信息示例:两秒钟刷新一次top -d 2pstree 查看进程树示例:查看所有进程树pstree -Anetstat...
2018-09-03 16:19:40 344
转载 HTTP状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。HTTP状态码的英文为HTTP Status Code。下面是常见的HTTP状态码:200 - 请求成功 301 - 资源(网页等)被永久转移到其它URL 404 - 请求的资源(网页等...
2018-09-02 19:05:19 180
翻译 谈谈进程与线程
一、进程概念进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序、数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块(Program Control Block,简...
2018-09-02 17:22:37 244
翻译 循环单词问题
一,问题描述:1,如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。例如:picture和turepic就是属于同一种循环单词。现在给出n个单词,需要统计这n个单词中有多少种循环单词。2,输入格式: (1) 输入包括n+1行; (2) 第一行为单词个数n(1<=n<=50) (3) 接下来的n行,每行一个单词word[i],长度length(1 ≤...
2018-08-29 19:35:33 788
翻译 扔鸡蛋问题-经典动态规划问题
题目 一幢 100 层的大楼,给你2个鸡蛋,如果在第 n 层扔下鸡蛋,鸡蛋不碎,那么从第 n-1 层扔鸡蛋,都不碎。这两只鸡蛋一模一样,不碎的话可以扔无数次,且鸡蛋在0层不会碎。设计一种策略能保证可以测出鸡蛋恰好会碎的楼层,且如果该策略是最坏的情况所扔次数最少一、概述思维分析 首先我们需要确定最坏情况是什么样子的。 假设n是我们的决定第一次尝试的楼层,第一个鸡蛋从n层开始扔。如果...
2018-08-29 16:47:51 2898
翻译 Morris遍历二叉树(非递归,不用栈,O(1)空间)
一、概述实现二叉树的前中后序遍历,达到要求:O(1)空间复杂度,即只能使用常数空间;二叉树的形状不能被破坏(中间过程允许改变其形状)。二、代码详解/** * Morris遍历 * @author superman * */public class MorrisTraversal { public static void process(Node...
2018-08-28 16:31:36 807
翻译 BFPRT算法之解决Top-K问题
一、概要在一大堆数中求其前k大或前k小的问题,简称TOP-K问题。而目前解决TOP-K问题最有效的算法即是BFPRT算法,其又称为中位数的中位数算法,该算法由Blum、Floyd、Pratt、Rivest、Tarjan提出,最坏时间复杂度为O(n)。二、算法实现BFPRT算法步骤如下: (1):选取主元; (1.1):将n个元素划分为⌊n5⌋个组,每组5个元素,若有剩余,舍...
2018-08-28 11:41:50 529
翻译 Manacher算法
一、概要二、算法实现/** * 最大需要回文串的长度 * @author superman * */public class Manacher { public static char[] manacherString(String str) { char[] charArr = str.toCharArray(); char[] r...
2018-08-28 11:29:18 262
原创 给定一个正数包含的数组,和目标数aim,求是否可以任意选择多个数组成aim
/** * 给定一个正数包含的数组,和目标数aim,求是否可以任意选择多个数组成aim? * @author superman * */public class Main { /** * 主函数调用进行优化 * @param arr * @param aim * @return */ public static...
2018-08-27 09:31:59 384
翻译 select、poll、epoll之间的区别总结
一、概述select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从...
2018-08-25 15:40:16 432
翻译 ConcurrentHashMap源码解析
ConcurrentHashMap源码解析ConcurrentHashMap源码解析jdk8之前的实现原理jdk8的实现原理变量解释初始化初始化tableput操作hash算法获取table中对应的元素f链表或红黑树操作table 扩容get操作jdk8之前的实现原理采取Segment分段锁机制jdk8的实现原理JDK8的实现...
2018-08-25 15:11:39 189
翻译 线程池小结
线程池线程池线程池概述创建一个线程池并提交线程任务线程池源码解析参数认识构造方法提交任务addWorker执行任务关闭线程池线程池概述线程池的优势第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺...
2018-08-25 15:06:49 239
翻译 数据库的事务
问题: 数据库的事务,四个性质说一下,分别有什么用,怎么实现的一、数据库的事务性质1、原子性(Atomicity): 事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。 2、一致性(Consistency) : 一个事务中,事务前后数据的完整性必须保持一致。 3、隔离性(Isolation): 事务的隔...
2018-08-24 14:39:53 264
原创 Fork-Join框架的简单使用
一、Fork-Join框架作用 Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。Fork/Join框架要完成两件事情: 1.任务分割:首先Fork/Join框架需要把大的任务分割成足够小的子任务,如果子任务比较大的话还要对子任务进行继续分割 2.执行任务并合并结果:分割的子任务分别...
2018-08-24 10:27:30 575
翻译 二叉树的先序、中序、后序递归和非递归遍历
二、二叉树遍历总结import java.util.Stack;/** * 二叉树的遍历 * @author superman * */public class Code_01_PreInPosTraversal { public static class Node { public int value; public Node lef...
2018-08-23 16:26:49 255
原创 多线程四个辅助类的简单应用
一、CountDownLatchimport java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.concurrent.CountDownLatch;...
2018-08-23 14:40:38 730
原创 生产者-消费者简单实现
一、车间/** * 车间(电商平台) * @author superman * */public class Tmall { private int count; //当前货物数量 public final int max=10; //车间最大的存储数量 public synchronized void produce() { ...
2018-08-22 10:28:12 534
原创 线程安全性问题总结
一、出现线程安全性问题的条件(1)在多线程的环境下 (2)必须有共享资源 (3)对共享资源进行非原子性操作二、解决线程安全性问题的途径(1)synchronized (偏向锁,轻量级锁,重量级锁) (2)volatile (2)JDK提供的原子类 (3)使用Lock(共享锁,排它锁) (4)认识的“*锁”三、常用的锁偏向锁 轻量级锁 重量级锁 重入锁 ...
2018-08-22 09:22:34 847
转载 偏向锁,轻量级锁,重量级锁的详解
一、偏向锁大多数情况下锁不仅不存在多线程竞争,而且总是由同一线程多次获得。偏向锁的目的是在某个线程获得锁之后,消除这个线程锁重入(CAS)的开销,看起来让这个线程得到了偏护。另外,JVM对那种会有多线程加锁,但不存在锁竞争的情况也做了优化,听起来比较拗口,但在现实应用中确实是可能出现这种情况,因为线程之前除了互斥之外也可能发生同步关系,被同步的两个线程(一前一后)对共享对象锁的竞争很可能是没有...
2018-08-21 14:44:03 1094
翻译 Spring容器的启动过程
一、Spring的启动过程 (1)首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境;(2)其次,在web.xml中会提供有contextLoaderListener。在web容器启动时,会触发容器初始化事件,此时contextLoaderListener会监听到...
2018-08-21 14:12:44 5149
原创 两种线程安全的单例模式
一、单例模式的两种线程安全方式import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * 饿汉式的单例模式 */class Singleton{ private Singleton() {}; private static Singleto...
2018-08-20 16:18:31 530
翻译 Hibernate 缓存原理与策略
一、Hibernate 缓存原理:对于 Hibernate 这类 ORM 而言, 缓存显的尤为重要, 它是持久层性能提升的关键. 简单来讲 Hibernate 就是对 JDBC 进行封装, 以实现内部状态的管理, OR 关系的映射等, 但随之带来的就是数据访问效率的降低, 和性能的下降, 而缓存就是弥补这一缺点的重要方法.缓存就是数据库数据在内存中的临时容器, 包括数据库数据在内存中的临时...
2018-08-19 12:31:57 459
翻译 缓存穿透、缓存击穿、缓存雪崩概念及解决方案
一、缓存穿透概念 访问一个不存在的key,缓存不起作用,请求会穿透到DB,流量大时DB会挂掉。解决方案 采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤; 访问key未在DB查询到值,也将空值写进缓存,但可以设置较短过期时间。二、缓存雪崩概念 大量的key设置了相同的过期时间,导致在缓存在同一时刻全部失效,造成瞬时DB请求...
2018-08-19 10:56:26 846
翻译 大数据去重问题:Bitmap和布隆过滤器(Bloom Filter)
一、Bitmap算法bitmap就是用一个bit位来标记某个元素对应的value,而key即是这个元素。由于采用bit为单位来存储数据,因此在可以大大的节省存储空间。 二、布隆过滤器布隆过滤器 (Bloom Filter)是由Burton Howard Bloom于1970年提出,它是一种space efficient的概率型数据结构,用于判断一个元素是否在集合中。在垃圾邮件过滤的黑...
2018-08-18 13:29:49 1289
转载 spring的事务
一、spring事务: 什么是事务: 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败.二、事务特性(4种): 原子性 (atomicity):强调事务的不可分割. 一致性 (consistency):事务的执行的前后数据的完整性保持一致. 隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰 持久性(durabil...
2018-08-18 12:55:40 272
java集合框架
2018-01-31
scrapy爬虫项目
2017-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人