- 博客(85)
- 资源 (12)
- 收藏
- 关注
原创 DPDK和RDMA的区别
相同点:1)两者均为kernel bypass技术,可以减少中断次数,消除内核态到用户态的内存拷贝;相异点:1)DPDK是将协议栈上移到用户态,而RDMA是将协议栈下沉到网卡硬件,DPDK仍然会消耗CPU资源;2)DPDK的并发度取决于CPU核数,而RDMA的收包速率完全取决于网卡的硬件转发能力3)DPDK在低负荷场景下会造成CPU的无谓空转,RDMA不存在此问题4)DPDK用户可获得协议栈的控制权,可自主定制协议栈;RDMA则无法定制协议栈。
2023-04-25 23:27:42
1596
转载 Lambda表达式基础知识
一、Lambda用法之前写Optional这个类的时候,简单说了一下Lambda是怎么用的,这里再跟大家一起回顾一下,Lambda的语法是这样的:语法以Lambda语法创建线程和匿名内部类创建线程的区别(显然代码少了很多!):public static void main(String[] args) { // 用匿名内部类的方式来创建线程 new Thread(new Runnable() { @Override public void
2021-11-21 11:59:42
264
转载 Lambda表达式基础知识
一、Lambda用法之前写Optional这个类的时候,简单说了一下Lambda是怎么用的,这里再跟大家一起回顾一下,Lambda的语法是这样的:语法以Lambda语法创建线程和匿名内部类创建线程的区别(显然代码少了很多!):publicstaticvoidmain(String[]args){//用匿名内部类的方式来创建线程newThread(newRunnable(){@Overridepublicvoid...
2021-11-19 00:50:26
148
转载 进程间通信IPC (InterProcess Communication)
一、进程间通信的概念每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)进程间通信模型二、进程间通信的7种方式第一类:传统的Unix通信机制1. 管道/匿名管道(pipe)管道是半双工的,数据只能向一个方向流动;需要双方通信时..
2021-06-04 21:02:53
142
转载 Nginx源码学习(一):nginx进程模型解析
nginx进程模型nginx有两类进程,一类称为master进程(相当于管理进程),另一类称为worker进程(实际工作进程)。启动方式有两种:单进程启动:此时系统中仅有一个进程,该进程既充当master进程的角色,也充当worker进程的角色。 多进程启动:此时系统有且仅有一个master进程,至少有一个worker进程工作。master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下
2021-06-03 23:33:41
584
转载 glibc内存管理ptmalloc源代码分析
https://paper.seebug.org/papers/Archive/refs/heap/glibc%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86ptmalloc%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%90.pdfhttps://blog.csdn.net/maokelong95/article/details/52...
2018-06-05 17:35:03
2003
转载 java内存分析工具
1. jstathttp://blog.csdn.net/fenglibing/article/details/6411951https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html2. 分析栈内存(stack)jstack/kill -3http://jameswxx.iteye.com
2017-01-23 20:30:11
523
1
转载 git 不错的教程
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000http://www.worldhello.net/gotgithub/04-work-with-others/010-fork-and-pull.htmlhttp://jingyan.bai
2016-11-18 22:31:38
374
转载 【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)
原文链接:http://blog.csdn.net/ns_code/article/details/14642873在第一章《基本套接字》中,作者给出了一个TCP Socket通信的例子——反馈服务器,即服务器端直接把从客户端接收到的数据原原本本地反馈回去。 书上客户端代码如下:[java] view plain copy
2016-05-15 22:44:00
696
转载 聊聊 Linux 中的五种 IO 模型
原文链接:http://blog.jobbole.com/99905/上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了,没有看过的,建议先看这篇博文理解这两个概念点。在认知上,建立统一的模型。这样,大家在继续看本篇时,才不会理解有偏差。那么,在正式开始讲Linux IO模型前,比如:同步IO和异步IO,阻塞IO和非
2016-05-15 22:41:57
8079
转载 日志那点事儿——slf4j源码剖析
阅读目录 slf4j下载 那么如何使用呢? 接下来进入正题,slf4j源码的解读! 这里不了解类加载器的原理的可能会不大明白! 总结Slf4j工作原理前言: 说到日志,大多人都没空去研究,顶多知道用logger.info或者warn打打消息。那么commons-logging,slf4j,logback,log4j,logging又是什么
2015-12-20 22:23:25
1400
转载 log4j.xml配置详解
Xml代码 value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n" />
2015-12-13 20:58:52
7131
1
转载 数字证书原理(ssl, https)
http://www.360doc.com/content/13/0809/14/1073512_305848184.shtml
2015-10-21 22:59:58
629
转载 Java并发编程:线程池的使用
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池
2015-09-18 23:19:16
634
转载 Java并发编程:Callable、Future和FutureTask
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕
2015-09-18 23:17:14
412
转载 Java并发编程:如何创建线程
今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务。下面先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程。下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 若有不正之处,请多多谅解并欢迎批评指正。 请尊重作者劳动成果,转载
2015-09-18 23:15:35
458
转载 OpenStack Swift源码导读:业务整体架构和Proxy进程
OpenStack的源码分析在网上已经非常多了,针对各个部分的解读亦是非常详尽。这里我根据自己的理解把之前读过的Swift源码的一些要点记录一下,希望给需要的同学能带来一些帮助。一、Swift的整体框架图如上图,Swift的源码目录结构。其中proxy是前端的业务接入进程。account、container和object目录分别是账户、容器 和对象的业务处理逻辑进程
2015-06-28 23:32:24
910
转载 OpenStack Swift 存储策略
OpenStack Swift 对象存储及其存储策略简介Swift 2.0 于 2014 年 7 月 8 日发布,其中最重要的新特性是存储策略(Storage Policy),该特性改变了以往存储系统中存储策略由设计与实施方决定的做法,让用户能够以 Container 为粒度,为不同需求的数据指定不同的副本数量、不同参数的纠删码、不同性能的存储介质、不同地理位置、不同的后端存储设备。存储策
2015-06-28 23:30:51
2544
转载 对象存储系统Swift技术详解:综述与概念
原文连接:http://www.cnblogs.com/yuxc/archive/2011/12/06/2278303.html对象存储系统Swift技术详解:综述与概念 OpenStack Object Storage (Swift) 是用来创建冗余的、可扩展的对象存储(引擎)的开源软件。通过阅读Swift的技术文档,我们可以理解其中的设计的原理和实现的方法
2015-06-23 23:33:10
3850
原创 插ko失败定位:
1. insmod xx.ko 手动插入ko2. dmesg 看最后的打印信息,可以定位失败原因3. nm -l xx.ko可以查看ko的符号表
2015-04-28 21:51:51
1125
转载 Dijkstra算法实现
迪杰斯特拉算法介绍迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。基本思想通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。 此外,引进两个集合S和U。S的作用是记录已求出最短路径的顶点(以及相应的
2015-03-21 12:41:12
748
转载 换种思路去理解设计模式(下)
8 对象行为与操作对象8.1 过程描述所谓对象行为和操作对象,需要三方面内容:l 操作过程:一般表现为一个方法。该方法接收一个对象或者组合类型的参数,然后对这个对象或者组合进行操作,例如修改属性、状态或者结构等。l 操作的对象或组合:会作为实参传入操作过程,会被操作过程修改属性、状态或者结构等。l 受影响的对象或组合
2015-01-15 23:08:49
694
转载 换种思路去理解设计模式(中)
7 多个对象组成结构7.1 过程描述 上一节介绍了如何创建一个对象。但大多数情况,一个对象是不够用的,这时候就需要把对象包装、封装、多对象组合。有时候还需要将一个组合作为一个整体使用,组合要提供对外的接口,也可能会用到系统原有的接口。 下面针对每种情况详细介绍。7.2 情况1:借用外部接口 有开发经验的人知道,日常大部分开发都是在已
2015-01-15 23:01:02
720
转载 换种思路去理解设计模式(上)
1 前言 看过许多关于设计模式的博客,也读过关于设计模式的书。几乎所有的介绍的开头,直接就引入了“设计模式”或者“某某模式”。设计模式到底是因什么而来?这是一个很重要的问题。孙悟空从石头缝里蹦出来,《西游记》还介绍了这个石头的来历呢。 要想了解一个东西,至少有“3W”——what、why、how——是什么、为什么、怎么用。看现在大部分的文章或者书籍,重点介绍的还是“what”,
2015-01-15 22:50:57
682
转载 Apache Commons-logging使用实例
1.Commons-Loggin简介Jakarta Commons Logging (JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具。它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已熟悉某种日志实现工具的更高级别的细节。JCL提供的接口,对其它一些日志工具,包括Log4J,
2014-09-16 22:32:05
558
原创 memcache client for java
http://code.google.com/p/memcache-client-forjava/ http://marc.iteye.com/blog/28700http://www.jayxu.com/2010/06/09/2342/http://www.iteye.com/topic/128458http://code.google.com/p/xmemcached/wiki
2014-08-28 23:29:33
1337
转载 消息中间件 activeMQ的源码分析 之 开篇
以前对JMS尤其是activeMQ不了解,一看到什么地方需要使用消息中间件,就比较反感。主要原因是感觉JMS的实现都比较复杂,怕在真实使用过程中出现什么问题时会比较被动。所以,我们基本上是自己写类似的消息中间件,当然功能非常简单。但其实我们自己写出来的中间件,随着功能的不断增加、人员和时间的种种问题,导致最终我们自己做出来的所谓消息中间件越来越不能维护。在吸取了一次一次这种重复发明"轮子"的事情中
2014-08-24 21:43:16
2196
转载 Apache Commons-pool实现对象池(包括带key对象池)
Commons-pool是一个apache开源组织下的众多项目的一个。其被广泛地整合到众多需要对象池功能的项目中。官网:http://commons.apache.org/proper/commons-pool/本文是commons-pool的一个简单应用,包括不带key的池和带key的池。带key的池是把key相同的池对象放在一起池里,也就是说有多少个key就有多少个池。
2014-08-12 23:26:48
1993
转载 dns(bind)配置详解(三)
7.server语句服务器(server)语句的定义和使用:server ip_addr {[ bogus yes_or_no ; ][ provide-ixfr yes_or_no ; ][ request-ixfr yes_or_no ; ][ edns yes_or_no ; ][ transfers number ; ][ t
2014-08-07 22:45:23
3943
转载 dns(bind)配置详解(一)
BIND配置文件语法介绍logging 和options 语句只在每个配置中出现一次。 1.acl语句acl 语句的定义和使用acl 语句给一个地址匹配表赋予了一个象征名称。它的名字来自于地址匹配列表的最基本功能:访问控制表列(ACLs)。注意,一个地址表名必须首先在acl中定义了,然后才能在别处使用;提前调用是不允许的。acl ac
2014-08-07 22:43:13
2013
转载 dns(bind)配置详解(二)
6.options语句options语句的定义和使用:options语句用来设置可以被整个BIND使用的全局选项。这个语句在每个配置文件中只有一处。如果出现多个options语句,则第一个options的配置有效,并且会产生一个警告信息。如果没有options语句,则每个选项使用缺省值。options {[ version version_string; ]
2014-08-07 22:38:24
9412
转载 BIND DNS配置详解
前面所介绍的服务器服务大多是用在内部网络环境中的﹐不过﹐以现代的情况和未来的趋势来看﹐每个网络或多或少都需要 Internet 联机以及向 Internet 提供服务。从这一章开始﹐我们将为大家陆续介绍一些在 Internet 环境中常用到的服务器之架设技巧。就算您目前还没真的需要架设 Internet 相关的服务器﹐但许多企业的 Intranet 环境中﹐也需要相类似的服务器来为企业
2014-08-05 00:04:42
37031
转载 调试和修改OpenStack中的Horizon部分
进入调试模式Horizon在python的django框架上进行开发,所以可以利用django的manage.py来进行调试。方式:关闭apache进入Horizon目录执行命令manage.py runserver 0.0.0.0:80这样修改的代码立刻就可以实现,不用每次都重启apache了查看变量方式再没有使用调试模式时,可能需要使用i
2014-07-12 19:26:41
6734
PPC405-S Embedded Processor Core User's Manual
2011-01-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人