自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 当你在浏览器输入一个网址按回车之后发生了什么

当你在浏览器输入一个网址,如http://www.taobao.com,按回车之后发生了什么?请从技术的角度描述,如浏览器、网络(UDP、TCP、HTTP等),以及服务器等各种参与对象上由此引发的一系列活动,请尽可能的涉及到所有的关键技术点。1.DNS解析DNS解析的过程就是寻找哪台机器上有你需要资源的过程,寻找的过程遵循就近原则。输入一个网址并按回车的时候浏览器会根据输入的URL去查找...

2019-03-14 17:46:21 824

原创 ScheduledThreadPool 浅析和例子

我们知道Timer与TimerTask虽然可以实现线程的周期和延迟调度,但是Timer与TimerTask存在一些缺陷,所以对于这种定期、周期执行任务的调度策略,我们一般都是推荐ScheduledThreadPoolExecutor来实现。下面就深入分析ScheduledThreadPoolExecutor是如何来实现线程的周期、延迟调度的。ScheduledThreadPoolExecuto...

2019-03-04 10:20:20 876

转载 epoll到底为什么比select高效

作者:静海听风链接:https://www.zhihu.com/question/20122137/answer/146866418来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。第一部分:select和epoll的任务关键词:应用程序 文件句柄 用户态 内核态 监控者要比较epoll相比较select高效在什么地方,就需要比较二者做相同事情的方...

2019-03-01 18:09:01 865

原创 线程池shoutdown() shutdownNow() awaitTermination() 方法解析

参考https://www.jianshu.com/p/b5e2283e869chttps://blog.csdn.net/u011389515/article/details/80656813提到线程池shoutdown() shutdownNow() awaitTermination() 方法之前我们先来看一下线程池的几种状态,在Executor框架中定义了几种状态,如下图:...

2019-03-01 11:07:35 1001

原创 java手动实现简易可重入锁

 说到可重入锁默认提到的就是Reentrantlock,可重入的概念就是,当前线程可以多次获得一个锁,这样主要是解决了死锁问题。如果没有可重入锁,当一个线程递归获得当前锁的时候,会由于锁没有释放而导致死锁,jdk基于AQS实现,主要是有个 state变量,如果是当前线程获得锁,就自增一次,释放锁就是给这个state递减,减到零就释放这个锁。这篇文章只实现非公平的可重入锁,没有涉及CLH等待队列...

2019-02-26 09:51:29 681

转载 java动态绑定与多态

 转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6554103.html 一:绑定        把一个方法与其所在的类/对象 关联起来叫做方法的绑定。绑定分为静态绑定(前期绑定)和动态绑定(后期绑定)。       二:静态绑定        静态绑定(前期绑定)是指:在程序运行前就已经知道方法是属于那个类的,在编译的时候就可以连接到类...

2018-09-29 11:39:41 714

原创 leetcode刷题 数组

        要是能像一月份说的每天一道现在已经刷了一百多道了,唉,懒惰。        话不多说,这次写leetcode数组问题        283. Move Zeroes这道题很简单,思路就是遇到零跳过,不是零就拿出来覆盖掉是零的数,然后后面再不上所有的零class Solution { public void moveZeroes(int[] nums) { i...

2018-05-30 09:40:26 166

原创 java线程的各种状态

Java中的线程的生命周期大体可分为5种状态。①NEW:这种情况指的是,通过New关键字创建了Thread类(或其子类)的对象②RUNNABLE:这种情况指的是Thread类的对象调用了start()方法,这时的线程就等待时间片轮转到自己这,以便获得CPU;第二种情况是线程在处于RUNNABLE状态时并没有运行完自己的run方法,时间片用完之后回到RUNNABLE状态;还有种情况就是处于BLOCK...

2018-05-18 18:56:59 250

原创 fork/join 学习记录

fork/join 就是把大任务分成无数个小任务来进行并行计算,提高运算速度比如我们来计算从1加到10000import java.util.concurrent.ForkJoinPool;import java.util.concurrent.Future;import java.util.concurrent.RecursiveTask;/** * Created by qiuyu...

2018-05-09 23:46:43 127

原创 CountDownLatch CyclicBarrier 原理

上篇博客介绍了CountDownLatch CyclicBarrier 的用法,这篇博客讲解一下这两个线程辅助类的原理,但不会贴出源码,那样子太复杂,我把我阅读源码以及博客的总结写下来,这样头绪清晰一些。CountDownLatch原理这篇文章很简洁形象形容了,很好https://blog.csdn.net/yanyan19880509/article/details/52349056CountD...

2018-05-01 21:57:13 189

原创 CountDownLatch、CyclicBarrier和 Semaphore

CountDownLatch 当一个线程需要等待别的线程先执行完才执行时候用这个public class CountDownLatchExample { final private static int ThreadCount = 200 ; private static void test(int threadNum) { System.out.print...

2018-04-26 15:46:11 124

原创 常用的排序算法的 java实现

/** * Created by qiuyunjie on 2018/4/22. */public class Demo { public static void main(String[] args) { int a[] = {3, 6, 4, 1, 2, 5, 7}; int start = 0; int end = a.len...

2018-04-22 19:21:52 129

原创 设计模式之装饰者模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。使用场景: 1、扩展一个类的功能。 2...

2018-04-21 20:42:03 328 1

原创 设计模式之观察者模式

    当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。优点: 1、观察者和被观察者是抽象耦合的。 2、建立一套触发机制。缺点: 1、如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。 2、如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们...

2018-04-20 12:04:19 106

原创 策略模式

策略模式 1、诸葛亮的锦囊妙计,每一个锦囊就是一个策略。 2、旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。使用场景: 1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。 2、一个系统需要动态地在几种算法中选择一种。 3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使

2018-04-20 10:50:20 119

原创 线程封闭

1:ad-hoc线程封闭         这是完全靠实现者控制的线程封闭,他的线程封闭完全靠实现者实现。也是最糟糕的一种线程封闭。所以我们直接把他忽略掉吧。2:栈封闭        栈封闭是我们编程当中遇到的最多的线程封闭。什么是栈封闭呢?简单的说就是局部变量。多个线程访问一个方法,此方法中的局部变量都会被拷贝一分儿到线程栈中。所以局部变量是不被多个线程所共享的,也就不会出现并发问题。所以能用局部...

2018-04-18 22:53:24 147

原创 单例模式的各种写法以及问题

单例模式一直都知道,但是感觉云里雾里的,这次详细的总结一下各种写法,算是个总结单例模式主要是用于安全发布对象,该不对象不能被别的对象任意改变,因此要求构造方法是私有的,也就是说在该类的内部才能实例化对象。1. 不是线程安全的懒汉模式,在第一次使用的时候创建实例/** * 懒汉模式 * 单例实例在第一次使用时进行创建 */@NotThreadSafepublic class Singlet...

2018-04-17 12:08:37 205

原创 mac 使用docker 安装 rabbitmq

项目要用到rabbitmq , 官网说brew install ,但是brew update就半天都不成功,突然想起了docker,以前用过一点点,就试着来了一下docker search rabbitmq:managementdocker pull rabbitmq:managementdocker run -d --name myrabbitmq -p 5672:5672 -p 156...

2018-04-12 22:45:30 2013 1

原创 leetcode 数据库刷题

    数据库比较薄弱,基本啥都不会,刷题提高一下,写篇博客记录一下。ps:leetcode appreciate175. Combine Two Tables简单的左联问题  # Write your MySQL query statement belowselect Person.FirstName , Person.LastName , Address.City , Address.Sta...

2018-04-03 22:35:55 800 1

原创 leetcode刷题 LinkedList

LinkedList主要注意的就是,快慢指针找中点,如果头节点要变的话得要在头节点前面加dummyNode。83. Remove Duplicates from Sorted List 遇到相同的跳过,不相同的继续/** * Definition for singly-linked list. * public class ListNode { * int val

2018-02-02 11:35:01 204

原创 leetcode刷题 二叉树

这篇博客记录 leetcode中 二叉树有关的问题先是三大遍历即:前序遍历,总是先访问当前节点,再左子,最后右子中序遍历,总是先访问左子,再当前节点,最后右子后序遍历,总是先访问左子,再右子,最后当前节点条件反射的记住非递归全都是用栈,后序遍历多了一个节点记录访问的过程。每种遍历我都用递归和非递归实现了一遍,每种方式都得会才行144.

2018-01-24 21:09:52 180

原创 spring aop 手动实现简单的动态代理

什么是AOP我们先来看一张图图中A就是通知,比如你要给每个方法前都加一个before()方法,目标类的每一个方法叫joinpoint(切入点),每个切入点都会用到通知,把通知和切入点连起来,点成线,线成面,这就是切面,也就是AOP,下面我们来简单写个小例子来实现一下目标类的接口public interface UserService { public void add

2018-01-16 16:16:36 770

原创 leetcode刷题 二分查找

作为本科非科班出身的CSer也经历了看到leetcode不知从何刷起的感觉,现在准备重新刷一下leetcode,写博客主要是记录下自己的思路,尽量保持每天两道,这篇主要总结二分查找所遇到的问题以及变种。打个广告微博 @辣酱一直就这样  欢迎同学私信讨论先说一下二分查找的模版1. start + 1 < end //在相邻的时候退出避免死循环2. start + (end -

2018-01-15 14:26:26 2000

空空如也

空空如也

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

TA关注的人

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