自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(613)
  • 资源 (17)
  • 收藏
  • 关注

原创 flannel-vxlan模式原理解析

前言上一章介绍完flannel的udp模式后,接着来介绍一下vxlan模式,因为很多生产的K8S都正在使用这个模式,所以将会介绍得详细些。在前面的章节中,我们介绍过配置linux vxlan完成跨主机的容器通信,flannel的vxlan模式大概完成的事情就是把那个章节中手工完成的事情自动化了而已,想了解的童鞋可以看回那一章linux配置跨主机容器通信vxlan模式下的flannel比udp模式少了一个组件,就是用c语言写的打开tun设备的守护进程flanneld,因为vxlan模式下通信的全程都由

2021-08-03 10:36:44 1476

原创 flannel-udp模式原理分析

本来上一篇文章应该是介绍flannel的udp模式的了,但因为其中的内容会涉及到linux虚拟网络设备tun的原理,所以先介绍一下tun设备,然后在这一篇才转入正题。flannel一共有UDP、VXLAN、HOST-GW三种工作模式,如果开启了Directrouting的话,会使用VXLAN和HOST-GW组合,不跨网段就使用HOST-GW,跨网段就使用VXLAN。对于host-gw和vxlan我们在前面的文章中有过简单地介绍,在这篇文章我们来分析一下flannel的UDP模式,虽然这种模式现在基本上已经

2021-08-03 10:33:56 550

原创 理解linux虚拟网络设备tun

tun是linux的另一种虚拟网络设备,与前面讲过的veth类似,只是另一端连的不一样,veth设备是一端连着内核协议栈,另一端连着另一个netns的协议栈;而tun设备是一端连着内核协议栈,另一端连接着一个用户程序,任何时候从协议栈发到tun网卡的数据都能从用户程序中读到,而从用户程序写入/dev/net/tun的数据都会被内核协议栈收到。当我们通过程序打开/dev/net/tun设备时,就会发现我们的主机上多了一张网卡,打开多次会新增多张网卡,命名依次为tun0/tun1/tun2…,我们读写tun网

2021-08-03 10:31:35 3136

原创 linux配置跨主机容器通信

在本章主要完成以下几件事情:配置linux主机路由完成跨主机容器通信配置linux ip tunnel完成跨主机容器通信配置linux vxlan完成跨主机容器通信主机路由前面我们已经介绍了几种从容器到主机通信的配置方式,接下来我们通过配置主机路由来打通不同主机的容器,首先在两台主机上分别创建一个新的NS然后配置到各自主机的通信,环境如下:---------------------------------host1:host-name:worker2ip:10.57.4.2

2021-08-03 10:30:06 602

原创 linux模拟POD并通过主机上外网

在这篇文章我们将完成以下几件事情:模拟一个POD将这个POD和主机连接起来,在主机中能访问POD的网站让这个POD能上外网模拟一个PODPOD是一个K8S的逻辑概念,POD里会有一个或多个容器,他们之间共享一个网络命名空间,可以用localhost相互访问,下面我们将脱离开K8S,直接用docker来模拟这种情况:docker run -itd --name=pause --net=none podinfo这时候pause容器会新建一个网络命名空间,但不会加入docker0网

2021-08-03 10:26:10 397

原创 理解linux虚拟网络设备bridge

上一节我们介绍了Linux veth设备,知道了如何把多个彼此隔离的网络命名空间(下面开始简称NS)与主机通过VETH连接起来,并且多个NS间也能相互通信,在这一节我们将介绍另一种方式,用linux bridge。Linux bridge即linux虚拟网桥,工作方式类似于物理的网络交换机,工作在二层时,能够转发以太网报文,能够学习MAC地址与端口的映射关系,但是也能工作在三层,提供类似三层交换机的功能,想要让linux bridge工作在三层,只需要给它配置一个IP地址。还是通过一些示例来了解一下,我

2021-08-03 10:23:16 3913 2

原创 理解linux虚拟网络设备veth

上一章介绍了linux network namespace,接着来讨论一下如何让一个独立的网络命名空间的和主机的网络相互通信,这里我们需要用到linux虚拟网络设备veth。veth设备veth设备总是成对出现,通常就是用来连接不同网络命名空间(下面开始简称NS),一端连着NS1的内核协议栈,另一端连着NS2的内核协议栈,一端发送的数据会被另一端接收。我们接下来试一下创建一个新的NS,然后跟主机的NS连接起来通过下面的命令可以创建一对VETH设备ip link add veth0 type ve

2021-08-03 10:20:53 1764

原创 理解linux network namespace

network namespace 是linux内核提供的用于实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,一个独立的网络空间内的防火墙、网卡、路由表、邻居表、协议栈都是独立的。不管是虚拟机还是容器,当运行在独立的命名空间时,就像是一台单独的主机一样。下面会通过一些例子来说明网络命名空间,以加深理解,会用到iproute2工具包的ip命令,请各位先自行安装,并且使用root权限操作在centos下执行如下命令:yum install iproute2验证安装完成:[root@worker

2021-08-03 10:11:24 1237

原创 ZooKeeper分析-读写请求篇

前言在前面中,我们已经 了解了ZooKeeper 集群的启动,Leader 选举相关流程,下面我们一起来看看ZooKeeper 读写请求处理中的一些相关细节。ZooKeeper 系列文章 会讲一些重要的功能和概念,主要包括:重要概念介绍 - 整体视图的认识服务端启动流程集群选举过程读写请求操作会话管理数据与存储本节主要 讲一下读写请求操作 流程,对于前面内容可以点击相关链接进行跳转。概述在Zookeeper中对于请求分为两类:事务性请求非事务性请求所谓事务性请求,说白了就

2020-05-10 17:57:32 3148 1

原创 ZooKeeper分析-选举篇

前言前面几篇文章讲了整体概念,服务器启动的流程,对于选举过程是一笔带过,我们已经了解了ZooKeeper 集群中的三种服务器角色:Leader,Follower 和Observer,本篇接下来主要讲述Leader选举的相关流程。我们从选举算法概述、服务器启动Leader选举、服务器运行期间Leader选举三个方面探讨实现细节。仅仅分析选举流程 还是比较简单的ZooKeeper 系列文章...

2020-05-05 12:41:49 654

原创 ZooKeeper分析-服务端启动篇

前言今年五一认真整理以前凌凌散散的学习内容,发现虽然看得多,但是如果不去看看源码,真的是不深刻,没什么感觉,这也是为什么要重新整理ZooKeeper的相关学习笔记了,在前面的时候我们介绍ZooKeeper的一些重要的概念,在整体上对ZooKeeper 有了一个简单的认识,下面我们再从服务端的启动流程来了解了解,本小节不会将集群的选举过程,这个将放在下一篇文章中介绍,本节知识整体了解一下服务端的启...

2020-05-03 21:36:28 713

原创 ZooKeeper分析-概览篇

前言最近打算写几篇 深入学习 ZooKeeper 的文章,结合自己的情况和经验,打算从核心功能出发进行研究一下,整个部分不会深入很多细节的代码上面,只做重要的介绍,因为时间的原因 很多点上可能也不会涉及到,对于读者 建议结合源码一起看,不然可能没什么帮助,也记不住的,要学习就适当多看代码,否则只是单纯背书而已,意义不大。在前面也看过部分的Dubbo 的源码,但是写的文章 都太细节化了,不便于了...

2020-05-01 15:53:37 295

原创 dubbo 启动概述(三)-扩展机制浅析

前言在上篇文章,我们了解了Dubbo 服务端的暴露流程,在最后,提出关于一行代码的疑问private static final Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();不管是暴露到本地,还是暴露到远程,最后都是调用的**protocol.exp...

2019-12-07 15:21:32 2735

原创 dubbo 启动概述(二)-服务暴露

前言在上篇文章中,了解了ServiceBean在spring 中的加载过程,下面我们再来看看ServiceBean是如何暴露的,这部分参考了官方的文档,但是这里不会分析的很仔细,粒度比较粗,只是简单的介绍一些模块,重在思想,如果一行一行的结束代码,估计也会看得爪瞌睡。本文很大程度上参考了官方文档 服务导出并在上面基础上做了增删,很多复杂的地方被我略去了简介Dubbo 服务导出过程始于...

2019-12-01 23:43:21 1230

原创 dubbo 启动概述(一)-服务加载

前言在项目启动过程中,dubbo服务如何随项目的启动而发布?dubbo如何随着spring容器的初始化而启动?我们使用的dubbo 注解@Service 是如何工作的(或者xml 配置),下面我们将来分析dubbo 服务端是如何随着Spring 启动而启动的,本文主要分析基于注解方式。本文需要Spring 启动流程加载的一些知识,这里不会细讲,具体可以参考我以前写的Spring IOC相关的...

2019-11-30 21:30:06 518

原创 Guava EventBus 源码分析

前言EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构。传统上,Java的进程内事件分发都是通过发布者和订阅者之间的显式注册实现的。设计EventBus就是为了取代这种显示注册方式,使组件间有了更好的解耦。EventBus不是通用型的发布-订阅实现,不适用于...

2019-06-08 13:40:24 544 1

原创 springboo2.x权限 demo(shiro,sprng security,oauth2)

前言这是一篇关于权限方面的文章,这是去年的时候结合一些简单的项目,自己抽空瞎折腾的学习demo,进行了一定的整理,涉及的内容包括spring boot 2.x,shiro,spring security,oauth2公布出来的目的??,方便爱学习的你(骗赞)。本文也不得介绍这些项目流程,也不会讲解怎么实现的,毕竟都是套路,难度不大,自己debug 调试,也算是能力的提高。每个项目中很...

2019-01-12 18:52:20 2897

原创 Netty源码分析三 Future,Promise

前言前面 分析了Netty整体的流程 和 Channel的结构,我们看到 Netty 中有很多的异步调用,所以在介绍更多 NIO 相关的内容之前,我们来看看它的异步接口是怎么实现的。回顾前面我们在介绍 Echo 例子的时候,已经用过了 ChannelFuture 这个接口了,接下来我们就来看看 Netty 中的异步调用是如何实现的。客户端// Start the client.Chan...

2019-01-12 17:48:20 591

原创 Spring Bean 生命周期

原文发布于: http://blog.ztgreat.cn/article/68前言在前面 我们分析了Spring BeanFactory,Spring IOC,Spring AOP,对于IOC的部分,我们跟踪了整个bean的初始化过程:Spring源码分析:IOC容器初始化(一)Spring源码分析:IOC容器初始化(二)这里我们对Spring Bean的生命周期单独做一个总结,...

2019-01-05 17:06:52 910

原创 Netty源码分析二 Channel实现

原文发布于: http://blog.ztgreat.cn/article/67前言2018年最后几天,争取憋一篇文章出来( >﹏<。)~在上文 Netty源码分析一 初识Netty 中利用官方的例子Echo 把Netty的整体流程走马观花的过了一遍,现在我们就一起来分析Netty中的一些具体模块,看Netty 是如何封装实现Java 中的NIO 的,今天我们来看看Netty...

2018-12-31 20:59:58 548

原创 Netty源码分析一 初识Netty

前言开始进入Java NIO系列的深入学习了,Netty 是Java系的一个著名NIO框架,Netty在互联网领域获得了广泛的应用,一些著名的开源组件也基于Netty构建,比如RPC框架、zookeeper等。Netty从使用的角度来说非常的简单,套官方的Demo就可以了,当然对于我们大部分的猿类来说仅仅是使用是不可能的,对于一些核心的技术知识,必须要知其所以然,不然长江后浪推前浪,前浪死在沙...

2018-12-23 18:59:21 371

原创 图解B树的前世今生

背景注:本文假设读者有搜索树(排序树)的基础知识。我们知道计算的存储系统是一个分级结构(一般来讲,存储器速度越快,价格也越高,因而也越难满足大容量的要求)首先容量和类型不同的存储器在访问速度上的差异是极其悬殊的,就以我们最常见的磁盘以及内存这两级存储为例:就传统的旋转式磁盘而言 它的访问速度大致是毫秒量级,而典型的内存呢 大致是在纳秒量级,如果 以一秒为基准,前者是10的-3次方 而后者...

2018-12-07 20:06:12 1741

原创 Spring源码分析:AOP分析(三)

个人扯淡博客:http://blog.ztgreat.cn前言在上篇博客中,分析了Spring Aop的Advice的实现过程,其中Spring对Advice 使用了适配器模式,将Advice包装成了Interceptor,在最后,我们通过Spring提供的接口,实现了PointCut,Advice ,Advisor,至此更加的明白了三者的关系。在前面的配置中,对于每一个需要被代理的be...

2018-11-24 14:48:49 390

原创 Spring源码分析:AOP分析之Advice

个人扯淡博客:http://blog.ztgreat.cn前言上篇文章中我们先从动态代理技术谈起,简单的分析了动态代理技术,接着对Spring 中的AOP 以ProxyFactoryBean为例,通过简单的配置,对Spring AOP的基本实现和工作流程进行了简单的梳理,通过ProxyFactoryBean 得到AopProxy对象。对于JDK的AopProxy代理对象,使用是Invoc...

2018-11-16 19:15:44 6424

原创 基于Netty的代理工具Proxy

前言个人扯淡博客:http://blog.ztgreat.cnNetty是一个高性能、异步事件驱动的NIO框架,提供了对TCP、UDP和文件传输的支持,对于目前而言,只要互联网存在,那么网络IO 也将存在,就目前的形式而言,硬件越来越好,带宽也越来越大,这个时候IO的瓶颈就凸显了出来,个人觉得,掌握一门IO框架是很重要的,不能仅仅的学会做点应用层,对于中下层还是需要熟悉的,这样才能健全整个...

2018-11-08 19:05:27 8845 7

原创 Spring源码分析:AOP分析(一)

前言个人扯淡博客:http://blog.ztgreat.cnSpring 的两大核心,一是IOC,我们之前已经学习过,而另一个则是大名鼎鼎的 AOP,AOP的具体概念我就不介绍了,我们今天重点是要从源码层面去看看 spring 的 AOP 是如何实现的。在Spring AOP实现中,使用的核心技术是动态代理,生成代理类有两种策略:jdk动态代理和cglib动态代理。下面简要的谈一谈这...

2018-11-08 19:02:50 504

原创 Spring源码分析:循环依赖

前言个人扯淡博客:http://blog.ztgreat.cn前面分析了Spring BeanFactory,接着分析了Spring IOC的初始化过程,对整个流程有了一定的认识,当然没有面面俱到,当然也不可能,我自己本身定位就是把握主要脉络,前面遗留了一个问题,就是在Spring IOC最后初始化单例bean的时候,针对循环依赖的处理问题,学习一下思想,处理方式,这是这篇文章的主要目的。...

2018-11-08 19:01:46 1566

原创 Spring源码分析:IOC容器初始化(二)

个人扯淡博客:http://blog.ztgreat.cn前言在前面分析了Spring IOC的初始化过程的前半部分,今天分析一下初始化过程中一个非常重要的环节—初始化所有的 singleton beans需要以下基础内容:Spring源码分析:Spring IOC容器初始化(一)Spring-BeanFactory源码分析(一)Spring-统一资源加载策略Spring-Bea...

2018-10-18 09:13:25 450

原创 Spring源码分析:IOC容器初始化(一)

个人扯淡博客:http://blog.ztgreat.cn前言在前面 先分析了最底层的IOC容器BeanFactory,接着简单分析了高级形态的容器ApplicationContext,在ApplicationContext 中我们知道一个核心方法 refresh,这里面就是IOC容器的初始化流程,在前面并没有直接去分析它,只是简单的分析了BeanDefinition的载入,解析注册,有了...

2018-10-18 09:12:29 562

原创 Spring源码分析:BeanFactory (二)

个人扯淡博客:http://blog.ztgreat.cn前言在前面我们简单的分析了BeanFactory的结构,ListableBeanFactory,HierarchicalBeanFactory,AutowireCapableBeanFactory。主要核心类DefaultListableBeanFactory,通过编程启动IOC容器 将BeanFactory的功能逐渐的剥离开来,方...

2018-10-18 09:11:12 629

原创 Spring-统一资源加载策略

个人扯淡博客:http://blog.ztgreat.cn前言在前面我们初步简单的分析了一下BeanFactory的体系结构,第一步我们需要从配置文件中读取配置信息,JDK所提供的访问资源的类(如java.net.URL、File等),并不能很好的满足各种底层资源的访问需求,比如缺少从类路径或者Web容器的上下文获取资源的操作类。Spring 设计了一个Resource接口,它为应用提供...

2018-09-27 12:58:54 1285

原创 Spring-BeanFactory源码分析(一)

个人扯淡博客:http://blog.ztgreat.cn前言Spring 版本:5.0.9.RELEASE正式进入Spring 源码分析这个模块了,对于spring这个庞大的工程,如果要一点点的完全分析是非常困难的,对于应用型框架,我还是偏向于掌握思想或者设计,而不是记住代码,对于初次看spring源码,相信大家都很头大,而且看懂并不一定就是理解了,想要更好的效果,就要记录下来,扯...

2018-09-27 12:56:29 4989 1

原创 Java NIO之Selector 浅析

个人扯淡博客:http://blog.ztgreat.cnJava NIO 由以下几个核心部分组成:1、Buffer2、Channel3、Selector在Java NIO之Channel、Buffer中 简单的介绍了Buffer,Channel ,本文主要讲解NIO的Selector相关知识,Selector是整个NIO的核心,理解selector机制是理解整个NIO的关键所在。...

2018-09-27 12:52:37 10753 2

原创 终于还是有了自己的小站

2018年8月,终于还是有了自己的小站,断断续续写博客也有3年了,感谢当时学校团队里面的学长们,最开始也是在他们的鼓励下,自己才写的,当时也没有想太多,也就简单记录一下吧,那个时候年轻嘛,哈哈,写写算法,简单记录了一下学习的东西,并没有在上面倾注太多的精力,大四的时候断了一年。2017年走出了学校,随后又开始写博客了,期间萌生过想法,搭建一下自己的博客网站,对于程序猿来说,我想这应该很容易,但...

2018-08-26 19:24:00 571 2

原创 乱弹 --- Linux 之 I/O模型

随着现在互联网技术的发展,在以前对一个网站的要求都不高,但是现在要求越来越高了,不断的优化服务,不断的提高硬件设施,在以前I/O方面的消耗还影响不大,但是现在I/O的瓶颈越来越凸显,了解I/O模型,能了解I/O的发展历史,同时也能帮助我们写出更加健壮的代码。一般来说,I/O模型可以分为阻塞/非阻塞和同步/异步,我们先从阻塞/非阻塞模型说起。在Linux 系统中,Linux内核会将所有的外部...

2018-08-12 17:52:12 257

原创 Java NIO之Channel、Buffer

Java NIO 由以下几个核心部分组成:BufferChannelSelector传统的IO操作面向数据流,面向流 的 I/O 系统一次一个字节地处理数据,意味着每次从流中读一个或多个字节,直至完成,数据没有被缓存在任何地方。NIO操作面向缓冲区( 面向块),数据从Channel读取到Buffer缓冲区,随后在Buffer中处理数据。什么是Buffer(缓冲区)?Bu...

2018-08-09 21:03:44 454

原创 Spring Session 源码分析(2)——Session机制的实现细节

在Spring Session 源码分析(1)中,梳理了一下Spring Session 接管Tomcat Session的过程,通过配置DelegatingFilterProxy 和指定过滤器名称,spring 接收到请求后,包装HttpServletRequest ,HttpServletResponse ,然后再传递到后续应用,因此没有特殊的需求,需要把DelegatingFilterPro...

2018-08-07 22:42:22 392

原创 深入理解ClassLoader工作机制(jdk1.8)

ClassLoader 顾名思义就是类加载器,ClassLoader 作用:负责将 Class 加载到 JVM 中审查每个类由谁加载(父优先的等级加载机制)将 Class 字节码重新解析成 JVM 统一要求的对象格式类加载时机与过程类从被加载到虚拟机内存中开始,直到卸载出内存为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载这7个阶段。其中,验证、准备和解...

2018-08-05 23:28:46 42603 8

原创 Spring Session 源码分析(1)——springSessionRepositoryFilter

Tomcat Session对于session 是一个老生畅谈的话题了,Session管理是JavaEE容器比较重要的一部分, Tomcat中主要由每个context容器内的一个Manager对象来管理session。对于这个manager对象的实现,可以根据tomcat提供的接口或基类来自己定制,同时,tomcat也提供了标准实现。 在每个context对象,即web app都具有一个...

2018-08-02 19:38:29 12838 2

原创 Java 线程池 --- ThreadPoolExecutor源码分析

在多线程编程中,或多或少都听过或者使用过线程池,合理利用线程池能够带来三个好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必

2018-01-23 21:13:57 804

UNIX环境高级编程第二版

UNIX环境高级编程第二版

2015-10-15

TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议

TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议

2015-10-15

TCP-IP详解卷1:协议

TCP-IP详解卷1:协议,网络协议通常分不同层次进行开发,每一层分别 负责不同的通信功能。一个协议族,比如 TCP/IP,是 一组不同层次上的多个协议的组合。 TCP/IP通常被认 为是一个四层协议系统

2015-10-15

nasm中文手册

NASM是一个为可移植性与模块化而设计的一个80x86的汇编器。它支持相当多的目标 文件格式,包括 Linux 和"NetBSD/FreeBSD","a.out","ELF","COFF",微软 16 位的"OBJ"和 "Win32"。它还可以输出纯二进制文件。它的语法设计得相当的简洁易懂,和 Intel 语法相似 但更简单。它支持"Pentium","P6","MMX","3DNow!","SSE" and "SSE2"指令集,

2015-03-12

程序员编程艺术

作者:July、编程艺术室 出处:结构之法算法之道blog 一、引言 自从去年7月份朋友花明月黯帮我制作了十三个经典算法研究的PDF文档之后,我便一直希望能有人再帮我制作我的另一个系列:程序员编程艺术的PDF文档,而就在本月3日,朋友吴超帮我完成了这一工作。当时,便立马在微博上分享出来,很快,便有超过600人次朋友转发,直至今日,已有近1000名朋友得到了此PDF。 而后我意识到,尽管我很不喜欢一些不劳而获者,但我也不愿去让我的读者朋友们去做一些繁琐的点击,转发,进群等动作。故,既然要分享,那就把无限分享惠及天下做到极致吧,以省去诸多无趣。

2014-11-11

线段树专辑

ACM大牛总结的线段树专辑_超经典的

2014-11-11

高质量C编程指南

《高质量程序设计指南:C++、C语言》以轻松幽默的笔调向读者论述了高质量软件开发方法与C++/C编程规范。它是作者多年从事软件开发工作的经验总结。《高质量程序设计指南:C++、C语言》共11章,第1章到第9章重点阐述 C++/C编程风格、面向对象程序设计方法和一些技术专题;第10章阐述STL 的原理和使用方法。 《高质量程序设计指南:C++、C语言》第1版和第2版部分章节曾经在Internet上广泛流传,被国内IT企业的不少软件开发人员采用。《高质量程序设计指南:C++、C语言》的附录C《大学十年》是作者在网上发表的一个短篇传记,文中所描述的充满激情的学习和生活态度,感染了大批莘莘学子。 请花一两个小时认真阅读这本百页经书,你将会获益匪浅,如今在Internet上流传的“真正”的程序员据说是这样的:真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让领导提心吊胆。真正的程序员不写使用说明书,用户应当自己去猜想程序的功能。真正的程序员几乎不写代码的注释,如果注释很难写,它理所当然也很难读。 真正的程序员不画流程图,原始人和文盲才会干这事。真正的程序员不看参考手册,新手和胆小鬼才会看。真正的程序员不写文档也不需要文档,只有看不懂程序的笨蛋才用文档。 真正的程序员认为自己比用户更明白用户需要什么。真正的程序员不接受团队开发的理念,除非他自己是头头。真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个30小时的调试改错。真正的程序员不会在上午9:00到下午5:00之间工作,如果你看到他在上午9:00工作,这表明他从昨晚一直干到现在。??

2014-11-11

STL源码剖析简体中文完整版清晰

学习编程的人都知道,阅读、剖析名家代码乃是提高水平的捷径。源码之前,了无秘密。大师们的缜密思维、经验结晶、技术思路、独到风格,都原原本本体现在源码之中。在你仔细推敲之中,迷惑不解之时,恍然大悟之际,你的经验、思维、视野、知识乃至技术品位都会获得快速的成长。 本书所呈现的源码,使你踏上了基度山岛。源码之前了无秘密,你将看到vector的实现、list的实现、heap的实现、deque的实现、Red Black tree的实现、hash table的实现、set/map的实现;你将看到各种算法(排序、查找、排列组合、数据移动与复制技术)的实现;你甚至能够看到底层的memory pook和高阶抽象的traits机制的实现。

2014-11-11

C++标准程序库

C++中的标准程序库是类库和函数的集合,其使用核心语言写成。标准程序库提供若干泛型容器、函数对象、泛型字符串和流(包含交互和文件I/O),支持部分语言特性和常用的函数,如开平方根。C++标准程序库也吸收了ISO C90 C标准程序库。标准程序库的特性声明于std命名空间之中。 标准模板程序库是C++标准程序库的子集,包含容器、算法、迭代器、函数对象等。也有些人使用术语STL代表C++标准程序库。 使用C++标准程序库时,不必加上“.h”。

2014-11-10

ACM培训-动态规划

动态规划算法通常用来解决最优化问题。这些问 题可能存在多个解,每个解具有一个值。我们希 望找到一个具有最优(最大或最小)值的解。在 动态规划算法中,主要关心的是找到一个最优解 和求出最优解的值,而不是找出所有的最优解

2014-11-10

取石子游戏_博弈

一、游戏 游戏A: 1. 甲乙两人面对若干堆石子,其中每一堆石子的数目可以任意确定。例如图 1 所示的初始局面:共 n=3 堆,其中第一堆的石子数 a1=3,第二堆石子数 a2=3, 第三堆石子数 a3=1。两人轮流按下列规则取走一些石子,游戏的规则如下: 2. 每一步应取走至少一枚石子; 3. 每一步只能从某一堆中取走部分或全部石子; � 如果谁无法按规则取子,谁就是输家。 。。。。。。

2014-11-10

白话经典算法之七大排序第2版

包括冒泡排序,直接 插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆 排序这七种常用的排序方法,这些文章不仅使我在考试中取了不 错的成绩,也为后来顺利面过迅雷,腾讯,微软打下了良好的基 础,现在整理成电子书形式,希望能对大家有所帮助。第 2 版新 加入了总结篇,有助于大家的复习。

2014-11-10

背包问题九讲

背包问题是一个经典的动态规划模型。它既简单形象容易理解,又在某种程度上能够揭示 动态规划的本质,故不少教材都把它作为动态规划部分的第一道例题,我也将它放在我的写作 计划的第一部分。 读本文最重要的是思考。因为我的语言和写作方式向来不以易于理解为长,思路也偶有跳 跃的地方,后面更有需要大量思考才能理解的比较抽象的内容。更重要的是:不大量思考,绝对 不可能学好动态规划这一信息学奥赛中最精致的部分。

2014-11-10

ACM程序设计 曾宗根

本书详细讲解了 ACM 国际大学生程序设计竞赛(ACM/ICPC)编程、调试方法,以及提高时间、 空间性能的策略,并充分利用了 C++泛型编程的高效率、规范化的特性,全部采用 C++泛型编程。 第 1 章讲解了 ACM 程序设计入门知识;第 2 章讲解了 C++泛型编程的容器、迭代器和常用算法; 第 3 章讲解了 ACM 程序设计的基本编程技巧;第 4 章讲解了 50 道原版 ACM 竞赛题的解题思路,并 配有 C++泛型编程参考答案和题目的中文翻译。 本书是一本专门针对 ACM 国际大学生程序设计竞赛而编写的入门教程,适合参加 ACM/ICPC 的 大学生和 C++编程爱好者学习,对 ACM/ICPC 竞赛教练也具有一定的指导作用。

2014-11-10

空空如也

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

TA关注的人

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