自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Kafka TimingWheel

package com.yit;import java.util.Date;import java.util.concurrent.BlockingQueue;import java.util.concurrent.DelayQueue;import java.util.concurrent.LinkedBlockingDeque;import java.util.concurren...

2018-12-04 16:54:19 628

原创 数据结构动画

http://www.cs.usfca.edu/~galles/visualization/Algorithms.html

2018-06-09 11:02:32 1347

原创 CAS 原理剖析

此文主要借鉴 点击打开链接源码在atomic_linux_x86.inline.hpp中openjdk-8u40-src-b25-10_feb_2015\openjdk\hotspot\src\os_cpu\linux_x86\vm\atomic_linux_x86.inline.hppinline jint Atomic::cmpxchg (jint exchange_va...

2018-06-09 10:58:42 374

原创 C 进程间通信--共享内存

共享内存是运行在同一台机器上的进程间通信最快的方式,因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行 读写。得到共享内存有两种方式:映射/dev/mem设备和内存映像文件。前一种方式不给系统带来额外的开销,但在现实中并不常用,因为它控制存取的将是 实际的物理内存,在Linux系统下,这只有通过限制Linux系统存取的内存才可以做到,这当然不太实际。常用的...

2018-05-26 08:49:06 333

原创 C 进程间通信--消息队列

消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。 //消息队列A#include <stdio.h>#include <sys/types.h>#include <sys/ipc....

2018-05-25 17:26:23 369

原创 C 进程间通信--有名管道,无名管道

1.管道的概念 管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。 数据被一个进程读出后,将被从管道中删除,其它读进程将不能再读到这些数据。 管道提供了简单的流控制机制,进程试图读空管道时,进程将阻塞。同样,管道已经满时,进程再试图向管道写入数据,进程将阻塞 管道包括无名管道和有名管道两种,前...

2018-05-25 17:26:13 318

原创 Java 缓存

强引用,软引用,弱引用,虚引用这里就不多说了,百度下就好了。缓存使用的是softreference。注意需要jvm参数中需要加上启动时需要加上-Xms5M -Xmx5M -XX:-UseGCOverheadLimit -XX:+PrintGCDetails -XX:+PrintReferenceGC -XX:SoftRefLRUPolicyMSPerMB=0import org.slf4j.L...

2018-05-25 13:05:47 309

原创 MaxHeap

import java.util.Arrays;import java.util.Random;/** * Created by jc6a on 2018/4/19.] * 二叉堆 堆中某个值总是不大于其父节点的值;堆总是一棵完全二叉树。(最大堆) */public class MaxHeap { private int arr[]; int count; ...

2018-05-25 10:06:21 637

原创 C I/O 复用 epoll

#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/epoll.h>#include <stdlib.h>#include <arpa/inet.h>#d

2018-05-25 10:02:48 186

原创 C I/O 复用 poll

#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <poll.h>#include <arpa/inet.h>#include <unistd.h>#includ

2018-05-25 09:54:19 137

原创 C I/O 复用 select

#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/select.h>#include <unistd.h>#include <arpa/inet.h>#

2018-05-25 09:54:07 133

原创 BST

import java.util.LinkedList;/** * Created by jc6a on 2018/5/23. */public class BSTree<K extends Comparable<K>, V> { private class Node { public K key; public V val...

2018-05-25 09:43:58 129

原创 AVLTree

import java.util.ArrayList;/** * Created by jc6a on 2018/5/19. * 对于任意一个节点,左子树与右子树的高度差不能超过1 * 高度 Max(左子树,右子树)+1; * 平衡因子 left - right; * 12 * * 左旋转 * * 右旋转 */public class AvlTree<K exten...

2018-05-25 09:38:22 140

原创 Trie

public class Trie { private class Node{ public boolean isWord; public TreeMap<Character,Node> next; public Node(boolean isWord){ this.isWord = isWord; ...

2018-05-25 09:37:57 135

原创 shell 分支循环

//test1.sh#!/bin/shif [ -d test_test ]; then echo "It's a dir"elif [ -f test_test ]; then echo "It's a file"else echo "hehe"fi#!/bin/shif [ -d test_test ]then ...

2018-05-22 17:49:24 226

原创 shell 基础操作

shell1 通配符* 匹配0个或多个任意字符? 匹配一个任意字符[若干字符] 匹配方括号中任意一个字符的一次出现2 命令代换$ VAR=`date`$ echo $VARTue May 22 16:15:29 CST 20183 算术代换$ VAR=40$ echo $((VAR+33))73$ echo $(($VAR+33))73$ echo $[VAR+3...

2018-05-22 17:49:16 189

原创 Shell 位置参数与特殊变量

$0          相当于C语言main函数的argv[0]$1、$2...   这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]、argv[2]...$#          相当于C语言main函数的argc - 1,注意这里的#后面不表示注释$@          表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后...

2018-05-22 17:49:09 220

原创 C++ 深浅copy

#include <iostream>using namespace std;class Integer{public: Integer(int data):m_data(new int(data)){} ~Integer(void){ cout << "xigou"<< endl; ...

2018-05-22 15:26:10 148

原创 查看JDK native 源码

下载 openjdk 源码:点击打开链接选择版本,下载RI Source Code代码路径在:/openjdk/jdk/src/windows/native 对应着java中的类名如:jdk 中SocketOutputStream中的write0的native方法    /openjdk/jdk/src/windows/native/java/net/SocketOutputStream.c...

2018-05-22 14:28:39 3673

原创 C 孤儿进程与僵尸进程

僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。注意:所有的进程都会有成为僵尸进程的过程,每个进程在终结时都会将自己进程的信息发给父进程,等待父进程来处理,这个等待阶段就是僵尸进程。不同的是,一般的父进程会很快将已经死亡的子进程处理掉,但是父进程没有收到信息,或...

2018-05-19 11:04:31 214

原创 LeetCode 144 二叉树的前序遍历

给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?/** * Definition for a binary tree node. * public class TreeNode { * int val; * ...

2018-05-18 21:25:44 326

原创 LeetCode 102 二叉树的层次遍历

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]/** * Definition for a binary tree node. * p...

2018-05-18 21:25:39 318

原创 LeetCode 107 Binary Tree Level Order Traversal II

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).For example:Given binary tree [3,9,20,null,null,15,7], ...

2018-05-18 21:25:33 103

原创 LeetCode 70 爬楼梯

假设你正在爬楼梯。需要 n 步你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 步 + 1 步2. 2 步示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 步 + 1 步 + 1 步2. 1 步 + 2 步3. ...

2018-05-18 21:25:26 120

原创 LeetCode 64 最小路径和

给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[  [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。class Solution {      public int minPathSum(int[][] gr...

2018-05-18 21:25:20 975

原创 LeetCode 120 三角形最小路径和

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。class Soluti...

2018-05-18 21:25:15 284

原创 LeetCode 343 整数拆分

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。例如,给定 n = 2,返回1(2 = 1 + 1);给定 n = 10,返回36(10 = 3 + 3 + 4)。注意:你可以假设 n 不小于2且不大于58class Solution { int max(int a,int b,int c){ return Math...

2018-05-18 21:25:09 414

原创 LeetCode 198 打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 ...

2018-05-18 21:25:03 342

转载 B树和B+树区别

(1) B+树改进了B树, 让内结点只作索引使用, 去掉了其中指向data record的指针, 使得每个结点中能够存放更多的key, 因此能有更大的出度. 这有什么用? 这样就意味着存放同样多的key, 树的层高能进一步被压缩, 使得检索的时间更短. (2)当然了,由于底部的叶子结点是链表形式, 因此也可以实现更方便的顺序遍历, 但是这是比较次要的, 最主要的的还是第(1)点.参照:https:...

2018-05-18 09:46:32 263

原创 LeetCode 71 简化路径

给定一个文档 (Unix-style) 的完全路径,请进行路径简化。例如,path = "/home/", => "/home"path = "/a/./b/../../c/", => "/c"边界情况:你是否考虑了 路径 = "/../" 的情况?在这种情况下,你需返回 "/" 。此外,路径中也可能包含多个斜杠 '/' ,如 "/home//foo/

2018-05-15 19:41:05 342

原创 LeetCode 20 有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: fa...

2018-05-15 09:55:17 179

原创 LeetCode 24 两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。/** * Definition for singly-linked list. * public class ListNode {...

2018-05-15 09:07:14 368

原创 LeetCode 203 删除链表中的节点

删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5/** * Definition for singly-linked list. * public class ListNode { * int val; * Lis...

2018-05-15 08:48:52 235

原创 LeetCode 83 删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3/** * Definition for singly-linked list. * public class ListNode { * int va...

2018-05-14 23:58:39 114

原创 LeetCode 92 反转链表 II

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL5ms /** * Definition for singly-linked list. * public cl...

2018-05-14 21:50:23 677

原创 LeetCode 206 反转链表

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?/** * Definition for singly-linked list. * public class ListNode { * int v...

2018-05-14 15:39:24 126

原创 LeetCode 349 两个数组的交集

给定两个数组,写一个函数来计算它们的交集。例子: 给定 num1= [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].提示:每个在结果中的元素必定是唯一的。我们可以不考虑输出结果的顺序。class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integ...

2018-05-14 15:35:48 867

原创 查看Java线程占用CPU过高命令

 ps -mp 5621 -o THREAD,tid,time 查看占用cpu过高线程,找到tid$ ps -mp 5621 -o THREAD,tid,timeUSER %CPU PRI SCNT WCHAN USER SYSTEM TID TIMEbigdata 0.0 - - - - - - 01:22:37big...

2018-05-14 15:35:32 3108 2

原创 LeetCode 350 两个数组的交集 II

给定两个数组,写一个方法来计算它们的交集。例如:给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].注意:   输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。   我们可以不考虑输出结果的顺序。跟进:如果给定的数组已经排好序呢?你将如何优化你的算法?如果 nums1 的大小比 nums2 小很多,哪种方法更优?如果nums2的元...

2018-05-14 15:35:19 500

原创 LeetCode 209 长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的子数组。如果不存在符合条件的子数组,返回 0。示例: 输入: [2,3,1,2,4,3], s = 7输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的子数组。 进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。class Solution ...

2018-05-14 15:35:04 610 1

空空如也

空空如也

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

TA关注的人

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