自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大德如危的博客

不积跬步无以至千里 不积小流无以成江海

  • 博客(222)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 K8s网络实战分析之service调用

在上一篇文章K8s网络实战分析之Calico-ipip模式中,我们通过Pod之间进行ping操作,对基于Calico-IPIP模式的K8s网络进行了实战学习与分析。单单进行Pod-Pod的访问只是K8s的基础功能,基于Service的访问才是K8s的网络核心。本文将基于上一篇文章所搭建的K8s网络,与大家一起探讨,Service访问的IP报文在K8s集群内的流动与原理!#实验准备为了方便操...

2019-11-24 17:53:52 3315

原创 K8s网络实战分析之Calico-ipip模式

Kubernetes为每个Pod都分配了唯一的IP地址,一个Pod里的多个容器共享PodIp地址。Kubernetes要求底层网络支持集群内任意两个Pod间的TCP/IP直接通信。Kubernetes的跨主机任意Pod访问方式主要是遵循CNI容器网络规范,目前已经有多个开源组件支持CNI,包括Flannel、Open VSwitch、Calico等。本文主要介绍在Calico的ipip模式下,K...

2019-11-24 14:11:55 15757 2

原创 docker从零构建go应用并部署到K8s集群

本文详细介绍使用docker构建一个简单的go服务器镜像,并将容器实例部署到K8s集群中。 使用的demo是一个go网络聊天室。具有客户端和服务器端。编写go程序 服务器端代码如下://chatroom.gopackage mainimport ( "bufio" "fmt" "net" "os")//一个聊天服务器demofunc ma...

2019-10-24 18:48:07 2727 2

原创 leetCode练习(172)

题目:Factorial Trailing Zeroes难度:EASY问题描述:Given an integer n, return the number of trailing zeroes in n!.Example 1:Input: 3Output: 0Explanation: 3! = 6, no trailing zero.Example 2:Input: 5Output: 1E...

2018-06-17 10:02:03 261

原创 leetCode练习(165)

题目:Compare Version Numbers难度:medium问题描述:Compare two version numbers version1 and version2.If version1 > version2 return 1; if version1 < version2 return -1;otherwise return 0.You may assume that...

2018-06-14 16:17:11 419

原创 leetCode练习(162)

题目:Find Peak Element难度:medium问题描述:A peak element is an element that is greater than its neighbors.Given an input array nums, where nums[i] ≠ nums[i+1], find a peak element and return its index.The arr...

2018-06-12 18:41:50 212

原创 leetCode练习(153)、(154)

题目:Find Minimum in Rotated Sorted Array难度:medium问题描述:Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e.,  [0,1,2,4,5,6,7] might become  [4,5,6,7,0,1,2]...

2018-06-12 16:13:33 546

原创 leetCode练习(152)

题目:Maximum Product Subarray难度:medium问题描述:Given an integer array nums, find the contiguous subarray within an array (containing at least one number) which has the largest product.Example 1:Input: [2,3,...

2018-06-10 21:49:13 208

原创 leetCode练习(151)

题目:Reverse Words in a String难度:medium问题描述: Given an input string, reverse the string word by word.Example:  Input: "the sky is blue",Output: "blue is sky the".结题思路:遍历字符串,找到每个单词,逆序拼接。代码如下:public stat...

2018-06-10 20:41:29 385

原创 leetCode练习(150)

题目:Evaluate Reverse Polish Notation难度:medium问题描述:Evaluate the value of an arithmetic expression in Reverse Polish Notation.Valid operators are +, -, *, /. Each operand may be an integer or another exp...

2018-06-10 19:37:22 458

原创 leetCode练习(148)

题目:Sort List难度:medium问题描述:Sort a linked list in O(n log n) time using constant space complexity.Example 1:Input: 4->2->1->3Output: 1->2->3->4Example 2:Input: -1->5->3->4-&...

2018-06-06 17:21:22 790

原创 leetCode练习(147)

题目:Insertion Sort List难度:medium问题描述:使用插入排序对List进行排序求解思路:从左到右,依次将node插入到左边已经排好的list中代码如下:public static ListNode insertionSortList(ListNode head) { if(head==null || head.next==null) return head;...

2018-06-06 17:01:15 958

原创 leetCode练习(143)

题目:Reorder List难度:medium问题描述:Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You may not modify the values in the list's nodes, only nodes itself may be changed.Exa...

2018-06-06 15:44:08 307

原创 leetCode练习(141)

题目:Linked List Cycle难度:easy问题描述:Given a linked list, determine if it has a cycle in it.Follow up:Can you solve it without using extra space?解题思路:方法2:构造一个blank节点,遍历让所有的node.next都指向blank,仅最后一个不指向,如果最后尾节...

2018-06-06 11:29:40 239

原创 leetCode练习(140)

题目:Single Number难度:hard问题描述:Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, add spaces in s to construct a sentence where each word is a valid dictionary wor...

2018-06-06 11:07:16 958

原创 leetCode练习(139)

题目:Single Number难度:medium问题描述:Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine if s can be segmented into a space-separated sequence of one or more ...

2018-06-06 10:35:16 166

原创 leetCode练习(138)

题目:Copy List with Random Pointer难度:medium问题描述:A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.Return a deep copy of t...

2018-06-06 09:11:13 792

原创 leetCode练习(135)

题目:candy难度:HARD问题描述:There are N children standing in a line. Each child is assigned a rating value.You are giving candies to these children subjected to the following requirements:Each child must have...

2018-06-05 20:38:13 180

原创 leetCode练习(1)

题目:gas station难度:MEDIUM问题描述:There are N gas stations along a circular route, where the amount of gas at station i is gas[i].You have a car with an unlimited gas tank and it costs cost[i] of gas to tra...

2018-06-05 17:32:57 143

原创 Class.forName()的作用

我们在加载数据库驱动的时候,一般会调用Class.forName("com.mysql.jdbc.Driver");    它的作用其实是获得数据库驱动的Class对象。定义:Class.forName:返回与给定的字符串名称相关联类或接口的Class对象。Class.forName是一个静态方法,同样可以用来加载类。该方法有两种形式:Class.forName(String

2017-08-24 21:52:17 4749

原创 Java NIO 之 NIO与IO比较

本章主要介绍NIO和IO之间的主要区别。一、面向流和面向缓冲    Java中NIO和IO最直接的区别就是,IO面向流,NIO面向缓冲区。IO面向流,每次从流中读出一个或多个字节,直至读取所有的字节,它们没有被缓存在任何地方,且不能前后移动数据,除非先缓存到一个缓冲区中。而在NIO中,数据不管是写入还是读出Channel,都需要缓冲区Buffer的支持,且有了Buffer,也增加了处理过程

2017-08-02 15:31:07 306

原创 Java NIO 之 NIO 简介

Java NIO 全称 Java non-blocking IO,是jdk1.4之后推出的new IO api,为所有的原始类型(boolean除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。    Java NIO 由三个核心部分组成:Buffers         缓冲区Channels     通道Selectors     选择器     其中,Chan

2017-08-02 14:59:23 350

原创 Java并发之Semaphore

Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。一、方法摘要Semaphore(int permits):构造方法,创建具有给定的许可数和非公平锁的Semaphore。Semaphore(int permits, Boolean fair):构造方法,创建具有给定许可数和给定公平设置的Semaphore。void acqu

2017-07-17 20:44:13 250

原创 Java并发之ThreadLocal

在Java中,对象是线程共享的,当我们想让线程独自拥有专属于自己的变量时,可以使用ThreadLocal类。    ThreadLocal类提供了线程局部(Thread-Locak)变量。这些变量不同于他们的普通对应物,因为访问某个变量的每个线程都有自己的局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本。所以,每一个线程都可以独立

2017-07-13 14:46:26 393

原创 Java并发之CyclicBarrier

上一篇我们介绍了CountDownLatch的使用方法和实现原理,CountDownLatch的计数器只能使用一次,用来使一组线程阻塞于另一组线程。本篇我将介绍Java另一款并发工具CyclicBarrier。一、同步屏障CyclicBarrier    CyclicBarrier的字面意思是可循环使用的屏障。它的功能是,让一组线程到达一个屏障时被阻塞,知道最后一个线程到达屏障时,取消阻塞

2017-07-11 12:17:34 660

原创 Java并发之CountDownLatch

在并发操作中,当需要当前线程c等待另一线程a结束后在运行的话,我们首先想到的是join方法,在c线程运行中调用a.join(),该方法会使当前线程阻塞于a,直到线程a运行结束,JVM调用a.notifyAll()方法唤醒z。    在Java1.5之后,并发包提供的CountDownLatch也可以实现join功能,并且更为强大。一、使用方法    下面放出一个简单的Demo:pu

2017-07-10 10:47:49 185

原创 计算二进制数中1的个数

今天做题,遇到小米的面试题,如下:世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?我的解法如下:public int countBitDiff(int m, int n) { int o = m^n; //异或 int res = 0; System.out.println("o="+o); for(

2017-07-09 15:15:35 299

原创 Java并发之线程池的实现原理

上一篇我们简单介绍了Java线程池ThreadPoolExecutor的基本应用和简单的操作流程。这一篇我们将深入理解线程池的实现方法,只有彻底掌握,才能正确运用!一、构造方法    ThreadPoolExecutor的基本构造方法如下: public ThreadPoolExecutor(int corePoolSize,

2017-06-30 21:14:39 294

原创 Java并发之线程池简介

一、线程池简介        在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们为每个任务创建一个新的线程来执行,这些线程的创建与销毁将消耗大量的计算资源。Java的线程在此情况下,既是工作单元,也是执行机制。为了减少创建线程的额外开支,将工作单元与执行机制分离不失为一个好办法。由此,Java线程池自然的被设计出了。    合理地使用线程池带来极大的好处

2017-06-30 16:22:38 209

原创 Java并发容器之LinkedBlockingQueue

上一篇我们学习了ArrayBlockingQueue的实现原理,这一篇我们来学习与之对应的LinkedBlockingQueue。很明显,ArrayBlockingQueue内部是基于数组实现的,而LinkedBlockingQueue是基于链表。他们都实现了阻塞队列的take和put方法,下面我们会结合ArrayBlockingQueue作对比,来分析LinkedBlockingQueue的实现

2017-06-29 13:12:13 418

原创 Java并发容器之ArrayBlockingQueue

一、ArrayBlockingQueue简介    ArrayBlockingQueue是一个数组支持的有界阻塞队列。按照FIFO的原则对元素进行排序。队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列获取操作则是从队列头部开始获得元素。    这是一个典型的“有界缓存区”,固定大小的数组在其中保持生产者插入的元素和使用者提取的

2017-06-28 11:14:09 326

原创 Java并发容器之阻塞队列简介

阻塞队列(BlockingQueue)是支持两个附加操作的队列,这两个操作支持阻塞的插入和移除方法。    1)支持阻塞的插入方法,当队列满时,队列会阻塞插入元素的线程,直到队列不满。    2)支持阻塞的移除方式,当队列为空时,获取元素的线程会等待直到队列不为空。    几种插入、移除方法比较:    插入方法:    1)add(e):将指定的元素插入到此队列的尾部(如果立

2017-06-28 09:51:24 221

原创 操作系统之线程的基础知识

在传统操作系统中,每个进程有一个地址空间和一个控制线程。不过,经常存在在同一个地址空间运行多个控制线程的情形,线程就像是分离想进程,不过他们共享着地址空间。为什么需要线程?    人们需要多线程的主要原因是,在许多应用中同时发生着多种活动。其中某些活动随着时间的推移会被阻塞。通过将这些应用程序分解成多个准并行运行的顺序线程,程序设计模型会变得更简单。需要线程的理由如下:1)有了多线程的

2017-06-27 21:54:14 295

原创 操作系统之进程的基础知识

操作系统中最核心的概念是进程:这是一个对正在运行程序的抽象。操作系统的其他所有内容都是围绕着进程的概念展开的。进程是操作系统提供的最古老的也是最重要的抽象概念之一。即使只有一个CPU,它也是支持(伪)并发操作的能力。它们将一个CPU变成多个虚拟CPU。这里我同大家一起学习关于进程的基础知识。进程进程模型在进程模型中,计算机上所有可运行的软件,通常也包括操作系统,都被组织成若干顺序进

2017-06-27 20:54:40 326

原创 Java并发容器之ConcurrentLinkedQueue

队列(Queue)是一种先进先出的数据结构,Java中实现了Queue接口的类都具有队列的功能。我们常用的LinkedList就实现了Queue接口,具有了offer()、poll()等操作。但是,LinkedList是线程不安全的,只使用于单线程操作。如果要实现一个线程安全的队列,一般有两种方式:一是使用阻塞算法,给读写操作加锁;二是使用非阻塞算法,通过循环CAS的方式来实现。本篇文章的Conc

2017-06-27 11:19:17 342

原创 一个小问题的解答

void main(){ unsigned int a=3,b=4; printf("%d",(a-b)/2);}一个BC上面的小程序,有同学问我,为什么等于32767。考虑到大家后天就要考试了,在此我尽可能向大家把这个问题说清楚。1 原码,反码和补码大家使用的BC,里面的int在机器里面是用16位表示的,在下面的例子中,我都是以16位的数据存储格式来向大家说明。

2017-06-26 19:39:08 533

原创 Java并发容器ConcurrentHashMap原理及HashMap死循环原因的分析

HashMap是我们最常用的数据结构之一,它方便高效,但遗憾的是,HashMap是线程不安全的,在并发环境下,在HashMap的扩容过程中,可能造成散列表的循环锁死。而线程安全的HashTable使用了大量Synchronized锁,导致了效率非常低下。幸运的是,并发编程大师Doug Lea为我们提供了ConcurrentHashMap,它是线程安全版的HashMap。这篇文章将为大家简单分析一下

2017-06-26 10:56:44 4346

原创 Java多线程中Lock的实现

在Java 1.5之后,并发包中新增了Lock接口用来实现锁功能,它提供了Synchronized关键字类似的功能,只是在使用时需要显式地获取锁和释放锁。虽然它缺少了隐式获取锁释放锁的便捷性,但是却拥有了锁释放和获取的可操作性、可中断地获取锁以及超时获取锁等多种选择。1 Lock接口Lock接口的主要api如下:1)void lock():获取锁,调用该方法的当前线程或获取锁,并从该方

2017-06-25 16:08:15 351

原创 Java多线程中Synchronized和Lock的区别

之前已经介绍过了Synchronized锁的实现原理,简单概括就是在JVM层运用了object的monitor来实现同步。而Lock是Java大神 Doug Lea 开发的util.concurrent中的一个锁工具,它实现了Synchronized的所有功能。下面从使用、性能这两个部分来具体分析两者的不同。一.Synchronized和Lock的用法区别Synchronized:在需要同

2017-06-25 12:00:38 1036

原创 Java多线程中线程的几种状态

Java线程在运行的生命周期中可能处于6种状态,每个确定时刻,线程只可能处于一种状态,6种状态如下:1)NEW:初始状态,线程被构建,但是还没有执行start()方法。2)RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行中”。3)BLOCKED:阻塞状态,表示线程阻塞于锁。4)WAITING:等待状态,需要其他线程唤醒或者做出一些特性动作(通知或

2017-06-24 10:37:54 413

C语言打字游戏(easyx绘图版)

使用easyx库替代bc的图形库来用c绘图,效果不错,适合c语言新手增加学习兴趣。

2013-05-31

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

TA关注的人

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