自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wwhhff11

暂无

  • 博客(539)
  • 收藏
  • 关注

转载 用户态切换至内核态

1、发生系统调用时 这是处于用户态的进程主动请求切换到内核态的一种方式。用户态的进程通过系统调用申请使用操作系统提供的系统调用服务例程来处理任务。而系统调用的机制,其核心仍是使用了操作系统为用户特别开发的一个中断机制来实现的,即软中断。2、产生异常时 当CPU执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行的进程切换到处理此异常的内核相关的程序中,也就是转到了内核态

2016-09-29 17:23:45 1025

转载 vmstat

vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。对于 Linux 的性能分析,100%理解 vmstat 输出内容的含义,并能灵活应用,那对系统性能分析的能力就算是基本掌握了

2016-09-29 08:46:21 199

原创 左连接、右连接、内连接、外连接、交叉连接

外连接:左连接:C+A1右连接:C+B1内连接:C交叉连接:n*m

2016-09-29 07:40:34 293

原创 生成树字符串

输入:5a v b d e输出: a(v,b(d),e)import java.util.ArrayList;import java.util.Scanner;public class Main { private static class Node { public String value; public int level; }

2016-09-29 07:34:01 408

转载 Thread.join 源码

在AThread的run方法里,执行了bt.join();,进入看一下它的JDK源码:public final void join() throws InterruptedException { join(0L);}然后进入join(0L)方法:public final synchronized void join(long l) throws InterruptedExcepti

2016-09-28 18:30:31 883

转载 二叉树非递归遍历

参考

2016-09-28 18:16:07 289

原创 Spring IOC 3种注入方式

setter方法注入构造器注入静态工厂注入缺少setter方法时进行注入的过程

2016-09-28 18:05:53 240

原创 有序链表转BST(平衡查找二叉树)

private static class ListNode { public int value; public ListNode next = null; } private static class TreeNode { public int value; public TreeNode left = null;

2016-09-26 16:28:29 543

原创 最小覆盖子串

参考import java.util.HashMap;import java.util.Map;public class Solution { public String minWindow(String s, String t) { HashMap<Character, Integer> tp = new HashMap<>(); HashMap<Chara

2016-09-26 10:57:05 540

原创 Java 内存屏障

作用内存屏障之前的所有写操作都要写入内存;内存屏障之后的读操作都可以获得同步屏障之前的写操作的结果。因此,对于敏感的程序块,写操作之后、读操作之前可以插入内存屏障。当基于共享可变状态的内存操作被重新排序时,程序可能行为不定。一个线程写入的数据可能被其他线程可见,原因是数据 写入的顺序不一致。适当的放置内存屏障通过强制处理器顺序执行待定的内存操作来避免这个问题。Java通过 Synchronized

2016-09-24 22:31:38 406

原创 软链接和硬链接

软链接和硬链接硬链接共享i节点,和平常的文件一样,只有当所有关联的同一个inode号的文件都被删除,源文件才会被删除;软链接不共享i节点,可以类比与快捷方式,删除快捷方式不影响源文件。硬链接不可以跨文件系统,软链接可以。硬链接不可以链接不存在的文件,软链接可以。

2016-09-24 22:15:52 214

原创 数据库事务隔离等级

事务隔离等级(低到高)未提交读(脏读、不可重复读、幻读)提交读(不可重复读,幻读)可重复读(幻读)串行度注意:Mysql的默认隔离等级为可重复读

2016-09-24 08:52:17 301

原创 数据库范式

第一范式:属性不可分第二范式:去除部分依赖第三范式:去除传递依赖,确保字段都与主键直接相关而非间接相关BC 范式:整个表不存在一样的数据记录,不允许出现主键决定另一个主键的情况第四范式:字段里的属性组要独立出去一个表

2016-09-24 08:12:07 223

原创 百度面试总结

项目介绍线程进程的区别线程和进程共享什么资源设计模式,单例双重检查其实有问题大数加法怎么才能最小次数使一个字符串变成回文的字符串

2016-09-22 20:41:44 330

原创 SynchronousQueue 同步队列

SynchronousQueue是这样一种阻塞队列,其中每个put必须等待一个take,反之亦然。同步队列没有任何内部容量,甚至连一个队列的容量都没有。 不能在同步队列上进行peek,因为仅在试图要取得元素时,该元素才存在;除非另一个线程试图移除某个元素,否则也不能(使用任何方法)添加元素;也不能迭代队列,因为其中没有元素可用于迭代。队列的头是尝试添加到队列中的首个已排队线程元素;如果没有已排队线

2016-09-22 13:55:35 642

原创 Java interrupt相关问题

InterruptedException抛出和标志位的恢复中断机制是一种协作机制,也就是说通过中断并不能直接终止另一个线程,而需要被中断的线程自己处理中断。 interrupt()的作用是中断本线程。 本线程中断自己是被允许的;其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限。这有可能抛出SecurityException异常。 如果本线程是处于阻塞状态

2016-09-22 10:19:13 222

原创 Java 类加载相关知识点

Class.forName(“”)表示动态加载某个类,只是完成类的加载工作。 会主动进行static初始化Class.forName(“”).newInstance()表示动态加载某类后,调用无参构造函数生成实例对象JDBC的Driver加载有数据库开发经验朋友会发现,为什么在我们加载数据库驱动包的时候有的却没有调用newInstance( )方法呢?即有的jdbc连...

2016-09-21 22:08:33 320

原创 今日头条校招笔试

import java.util.ArrayDeque;import java.util.Arrays;import java.util.Scanner;public class Main { private static void pop(ArrayDeque deque, int n) { for (int i = 0; i < n; i++) {

2016-09-21 21:50:50 2456

转载 Servlet生命周期

浏览器和服务器交互流程:1、WebClient向Servlet容器(Tomcat)发出Http请求 2、Servlet容器接收WebClient的请求,创建Servlet对象,调用其init方法, 3、Servlet容器创建一个HttpRequest对象,将WebClient请求的信息封装到这个对象中 4、Servlet容器创建一个HttpResponse对象 5、Servlet容器调用Ht

2016-09-21 16:14:52 234

转载 Memcache 面试题

memcached是怎么工作的?Memcached的神奇来自两阶段哈希(two-stage hash)。Memcached就像一个巨大的、存储了很多memcached最大的优势是什么?请仔细阅读上面的问题(即memcached是如何工作的)。Memcached最大的好处就是它带来了极佳的水平可扩展性,特别是在一个巨大的系统中。由于客户端自己做了一次哈希,那么我们很容易增加大量memcached到集群

2016-09-21 16:04:19 2896

原创 面试手写代码题目

二分查找 private static int binarySearch(int a[], int target) { if (a == null || a.length == 0) return -1; int left = 0, right = a.length - 1; while (left <= right) {

2016-09-21 13:13:11 8073

转载 Lucene 面试

lucene 针对它的搜索方式有哪些?词项查询(TermQuery)/布尔查询(BooleanQuery)/短语查询(PhraseQuery)/范围查询(RangeQuery)/百搭查询(WildardQuery)/FuzzQuery(模糊)索引原理0)设有两篇文章1和2文章1的内容为:Tom lives in Guangzhou,I live in Guangzhou too.文章2的内容为:H

2016-09-21 10:34:06 7978 1

转载 CDN 知识

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是

2016-09-21 10:00:00 373

转载 TCP 网络流量控制和拥塞控制

定义拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。 发送方维持一个叫做拥塞窗口cwnd(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口,另外考虑到接受方的接收能力,发送窗口可能小于拥塞窗口。小于等于ss

2016-09-21 09:36:48 296

原创 JDK 常见的设计模式

适配器模式:用来把一个接口转化成另一个接口。java.util.Arrays#asList() javax.swing.JTable(TableModel) java.io.InputStreamReader(InputStream) java.io.OutputStreamWriter(OutputStream)桥接模式:这个模式将抽象和抽象操作的实现进行了解耦,这样使得抽象和实现可以独立地

2016-09-20 22:38:40 233

原创 命令模式

interface Commond { public void execute();}class TV { boolean status; public void turnOn() { status = true; } public void turnOff() { status = false; }}class Tur

2016-09-20 22:31:56 199

原创 Java 线程状态

进程挂起状态: 挂起状态涉及到中级调度,因为当内存中的某个程序需要大的内存空间来执行,但这时内存有没有空余空间了,那么操作系统就回根据调度算法把一些进程放到外存中去,以腾出空间给正在执行的程序的数据和程序,所以引如了挂起状态。线程新建状态(New): 当用new操作符创建一个线程时, 例如new Thread(r),线程还没有开始运行,此时线程处在新建状态。 当一个线程处于新生状态时,程序还

2016-09-20 11:40:50 214

原创 可重入锁 ReentrantLock

// 公平锁和非公平锁 public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync(); }非公平锁是: 先state+1,然后直接得到锁, 而公平锁则是: 先尝试去获取锁,如果得到了锁则state+1. // 非公平锁 fin

2016-09-20 11:00:01 202

转载 Java 锁知识

Java锁的类型:自旋锁(乐观锁,放弃cpu)和阻塞锁(悲观锁,占有cpu)互斥锁和可重入锁公平锁和非公平锁类锁和对象锁偏向锁(乐观锁,无竞争时消除同步)/轻量级锁(乐观锁,有竞争时使用自旋代替阻塞)/重量级锁(悲观锁,阻塞放弃cpu)锁的优化减少锁持有时间 (代码)减小锁粒度(concurrentHashMap)锁分离 (ReadWriteLock)锁粗化 (编译器优化,频繁获

2016-09-19 22:13:04 188

原创 sql语句的where条件顺序和索引的顺序

建表CREATE TABLE `Problem_submit` ( `id` int(11) NOT NULL AUTO_INCREMENT, `status` int(11) NOT NULL, `user_id` int(11) NOT NULL, `Username` varchar(30) NOT NULL, `problem_id` int(11) NOT NULL,

2016-09-19 21:29:36 8924

原创 Java 并发实战

线程不安全的原因:竞态条件 解决线程不安全的问题:程序封闭(线程封闭、栈封闭、Threadlocal封闭)只读共享(不可变对象和事实不可变对象,在没有额外的同步的情况下,都是线程安全的)线程安全共享(线程安全的对象内部实现同步,多线程可以通过对象的公有接口进行访问)保护对象(将其封装在其他线程安全的容器中:vector,hashtable,concurrentSet,concurrentM

2016-09-19 12:33:38 218

转载 AIO、BIO和NIO的区别详解

IO读写时,多路复用机制都会依赖一个事件分离器,负责把源事件的IO分离出来,对应到read/write事件分离器。 事件分离器的两种模式: 1. Reactor:同步IO 2. Proactor:异步IOReactor在Reactor模式中,事件分离者等待某个事件或者可应用或个操作的状态发生(比如文件描述符可读写,或者是socket可读写),事件分离者就把这个事件传给事先注册的事件处理函数

2016-09-18 10:14:27 3010

原创 股票交易日

在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。请采用实践复杂度低的方法实现。 给定价格序列prices及它的长度n,请返回最大收益。保证长度小于等于500。public class Stock { public int maxProfit

2016-09-17 22:33:25 468

转载 滑动窗口协议

1比特滑动窗口协议,当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来

2016-09-17 17:18:02 3780

原创 HashSet的元素是否可被修改

import java.util.HashSet;public class main { private static class Test { int x = 0; public int getX() { return x; } public void setX(int x) { th

2016-09-17 16:09:56 3259

原创 字符串常量和字符串变量

public class main { public static void main(String[] args) { String str1 = "abc"; String str2 = "abc"; String str3 = "ab" + "c"; String str4 = new String(str2);

2016-09-17 11:28:31 524

转载 Serial和Parallel垃圾回收

SerialSerial收集器是一个单线程的收集器,但它的“单线程”的意义并不仅仅是说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。Serial收集器到JDK1.7为止,它依然是JAVA虚拟机运行在Client模式下的默认新生代收集器。它也有着优于其他收集器的地方:简单而高效(与其他收集器的单线程比),对于限定单

2016-09-17 10:15:06 647

原创 环的相关问题

判断单链表是否为环因为指针或者引用一旦进入环便再不会出来,所以在单链表起点设置一个fast的指针(每次走2步)和一个slow指针(每次走1步),必定会在环中变成追赶的关系,并且最终会在环的某个点(相交点)相遇。找出环的入口在这个问题,为了方便描述,拿了小C爱学习里的一幅图: 在这先说明几个变量的意义; head:单链表的起点,也就是“判断单链表是否为环”的那个两个指针出发的地点。 l1:单链表

2016-09-15 10:51:25 261 1

原创 搜狗笔试编程题

时间限制:C/C++语言 2000MS;其他语言 4000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB 题目描述: 定义两个大于2的偶数之间的距离,为这两个数之间质数的个数。从小到大输入n个大于2的偶数,输出所有数两两之间距离的总和(应该有n*(n-1)/2个距离,输出总和就好)。import java.util.Arrays;import java.ut

2016-09-13 11:06:33 382

转载 复制session和粘性session

tomcat集群中的session管理,主要有两种方式:粘性session表示从同一窗口发来的请求都将有集群中的同一个tomcat进行处理 worker.lbcontroller.sticky_session=True 粘性session的好处在不会在不同的tomcat上来回跳动处理请求,但是坏处是如果处理该session的tomcat崩溃,那么之后的请求将由其他tomcat处理,原有sess

2016-09-12 21:34:40 1887

空空如也

空空如也

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

TA关注的人

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