摘要: 第一篇:《如何生成每秒百万级别的 HTTP 请求?》 第二篇:《为最佳性能调优 Nginx》 第三篇:《用 LVS 搭建一个负载均衡集群》 本文是构建能够每秒处理 3 百万请求的高性能 Web 集群系列文章的第一篇。它记录了我使用负载生成器工具的一些经历,希望它能帮助每一个像我一样不得不使用这些工具 阅读全文
posted @ 2016-06-13 15:29 _1900 阅读(1758) 评论(0) 推荐(0) 编辑
摘要: 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识。1. 大致了解几个基本术语(HTTPS、SSL、TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接”)3. 大致了解加密算法的概念(尤其是“对称加密与非对称加密”的区别)4. 大致了解 CA 证书的 阅读全文
posted @ 2016-06-13 15:28 _1900 阅读(1994) 评论(2) 推荐(2) 编辑
摘要: Https 介绍 什么是Https HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要S 阅读全文
posted @ 2016-06-13 15:27 _1900 阅读(934) 评论(0) 推荐(1) 编辑
摘要: 正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。 正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码: 下面是技匠整理的,在 阅读全文
posted @ 2016-06-13 15:25 _1900 阅读(1265) 评论(0) 推荐(0) 编辑
摘要: 这篇文章的目的是给经常使用git管理项目提供一个有益的提醒。如果你是git新手,可以先阅读文后的引用部分,然后在回头阅读此篇文章。在介绍git命令之前,你可以先看看来自 on-my-zsh 提供的别名。 基本命令 git config --global user.name "Your Name" g 阅读全文
posted @ 2016-06-13 10:06 _1900 阅读(529) 评论(0) 推荐(0) 编辑
摘要: 问题背景 这段时间在做项目的时候,考虑到Spring中的bean默认是单例模式的,那么当多个线程调用同一个bean的时候就会存在线程安全问题。如果是Spring中bean的创建模式为非单例的,也就不存在这样的问题了。 Spring 单例模式与线程安全 Spring 框架里的 bean ,或者说组件, 阅读全文
posted @ 2016-05-24 20:53 _1900 阅读(11545) 评论(0) 推荐(2) 编辑
摘要: Spring IoC容器的初始化包括 BeanDefinition的Resource定位、载入和注册 这三个基本的过程。IoC容器的初始化过程不包含Bean依赖注入的实现。Bean依赖的注入一般会发生在第一次通过getBean向容器索取Bean的时候。 先看以下代码: 以上是我们常用的加载IoC容器 阅读全文
posted @ 2016-05-22 19:06 _1900 阅读(1065) 评论(0) 推荐(1) 编辑
摘要: BeanFactory BeanFactory 是 Spring 的“心脏”。它就是 Spring IoC 容器的真面目。Spring 使用 BeanFactory 来实例化、配置和管理 Bean。但是,在大多数情况我们并不直接使用 BeanFactory,而是使用 ApplicationConte 阅读全文
posted @ 2016-05-22 17:49 _1900 阅读(768) 评论(0) 推荐(0) 编辑
摘要: Java 提供了功能强大的正则表达式API,在java.util.regex 包下。本教程介绍如何使用正则表达式API。 正则表达式 一个正则表达式是一个用于文本搜索的文本模式。换句话说,在文本中搜索出现的模式。例如,你可以用正则表达式搜索网页中的邮箱地址或超链接。 正则表达式示例 下面是一个简单的 阅读全文
posted @ 2016-05-13 09:41 _1900 阅读(880) 评论(0) 推荐(1) 编辑
摘要: 最近在工作上碰见了一些高并发的场景需要加锁来保证业务逻辑的正确性,并且要求加锁后性能不能受到太大的影响。初步的想法是通过数据的时间戳,id等关键字来加锁,从而保证不同类型数据处理的并发性。而java自身api提供的锁粒度太大,很难同时满足这些需求,于是自己动手写了几个简单的扩展… 1. 分段锁 借鉴 阅读全文
posted @ 2016-05-13 09:39 _1900 阅读(3900) 评论(0) 推荐(0) 编辑
摘要: Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。 如果你想设计表现良好的并发程序,理解Java内存模型是非常重要的。Java内存模型规定了如何和何时可以看到由其他线程修改过后的 阅读全文
posted @ 2016-05-13 09:37 _1900 阅读(7441) 评论(2) 推荐(3) 编辑
摘要: 引 如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法 阅读全文
posted @ 2016-05-10 21:16 _1900 阅读(1060178) 评论(52) 推荐(177) 编辑
摘要: 轮询 加权轮询 随机 加权随机 ip hash 阅读全文
posted @ 2016-05-06 15:53 _1900 阅读(7079) 评论(1) 推荐(1) 编辑
摘要: 二分查找又称折半查找,它是一种效率较高的查找方法。 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小 于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种 阅读全文
posted @ 2016-05-06 15:49 _1900 阅读(49606) 评论(4) 推荐(1) 编辑
摘要: 1. 字符串有整型的相互转换 2. 向文件末尾添加内容 3. 得到当前方法的名字 5. 使用JDBC链接Oracle 6. 把 Java util.Date 转成 sql.Date 7. 使用NIO进行快速的文件拷贝 8. 创建图片的缩略图 9. 创建 JSON 格式的数据 10. 使用iText 阅读全文
posted @ 2016-05-06 15:47 _1900 阅读(1193) 评论(0) 推荐(0) 编辑
摘要: Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 Spring 是个java企业级应用的开源开发框架。Spr 阅读全文
posted @ 2016-05-06 14:31 _1900 阅读(1028) 评论(0) 推荐(1) 编辑
摘要: 一、 重试机制 最容易也最简单被人想到的容错方式,当然就是“失败重试”,总而言之,简单粗暴!简单是指它的实现通常很简单,粗暴则是指使用不当,很可能会带来系统“雪崩”的风险,因为重试意味着对后端服务的双倍请求。 1. 简单重试 我们请求一个服务,如果服务请求失败,则重试一次。假设,这个服务在常规状态下 阅读全文
posted @ 2016-05-04 10:42 _1900 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 有众多新特性和函数库的Java 8发布之后,Spring 4.x已经支持其中的大部分。有些Java 8的新特性对Spring无影响,可以直接使用,但另有些新特性需要Spring的支持。本文将带您浏览Spring 4.0和4.1已经支持的Java 8新特性。 Spring 4支持Java 6、7和8 阅读全文
posted @ 2016-04-27 09:57 _1900 阅读(682) 评论(0) 推荐(0) 编辑
摘要: 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧。 正文 线程与进程 1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境 2 进程: 阅读全文
posted @ 2016-04-24 21:54 _1900 阅读(800) 评论(2) 推荐(1) 编辑
摘要: 为了方便,本文以 iOS 系统来进行演示。 使用代理 移动操作系统中都有可以设定系统代理的设置,比如在 iOS 中可以通过 Settings->WLAN 看到很多 Networks,通过点击它们后面的 Info 图标来设置代理: 点击 Info 图标 点击 Info 图标 设置代理 设置代理 这样的 阅读全文
posted @ 2016-04-24 21:41 _1900 阅读(1124) 评论(0) 推荐(0) 编辑
摘要: 打开/前往: ⌘T 前往文件 ⌘⌃P 前往项目 ⌘R 前往 method ⌘⇧P 命令提示 ⌃G 前往行 ⌃ ` python 控制台 ——————— 编辑: ⌘L 选择行 (重复按下将下一行加入选择) ⌘D 选择词 (重复按下时多重选择相同的词进行多重编辑) ⌃⇧M 选择括号内的内容 ⌘⇧↩ 在当前行前插入新行 ⌘↩ 在当前行后插入新行 ⌃⇧K 删除行 ⌘KK 从光... 阅读全文
posted @ 2016-04-19 16:59 _1900 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 一个数据库事务是一个被视为单一的工作单元的操作序列。这些操作应该要么完整地执行,要么完全不执行。事务管理是一个重要组成部分,RDBMS 面向企业应用程序,以确保数据完整性和一致性。事务的概念可以描述为具有以下四个关键属性说成是 ACID: 原子性:事务应该当作一个单独单元的操作,这意味着整个序列操作 阅读全文
posted @ 2016-04-19 10:20 _1900 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 2.mv [选项] 源文件或目录 目录或多个源文件 | 移动或重命名文件 3.cp [选项] 源文件或目录 目录或多个源文件 | 将源文件复制至目标文件,或将多个源文件复制至目标目录。 4.scp [参数] [原路径] [目标路径] 阅读全文
posted @ 2016-04-17 21:14 _1900 阅读(1746) 评论(0) 推荐(0) 编辑
摘要: Command + H:隐藏窗口 Command + M:最小化窗口 Command + N:新建 Command + O:打开 Command + S:保存 Command + shift+S:另存为 Command + W:关闭 Command + Q:退出程序,这个和上面的关闭是两回事儿,前面的关闭是只关闭某一个窗口,而退出是退出程序,经常不小心手一抖就发现把程序关闭了,是各... 阅读全文
posted @ 2016-04-17 20:47 _1900 阅读(6778) 评论(0) 推荐(0) 编辑
摘要: 并发问题的症状 多线程put后可能导致get死循环 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Han 阅读全文
posted @ 2016-04-17 13:53 _1900 阅读(473) 评论(0) 推荐(0) 编辑
摘要: B-树 B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。下图是 B-树的简化图. B-树有如下特点: 所有键值分布在整颗树中; 任何一个关键字出现且只出现在一个结点中; 搜索有可能在非叶子结 阅读全文
posted @ 2016-04-17 13:19 _1900 阅读(314) 评论(0) 推荐(1) 编辑
摘要: 集合家族图 |Collection: 单列集合 |List: 有存储顺序 , 可重复 |ArrayList: 数组实现 , 查找快 , 增删慢 |LinkedList: 链表实现 , 增删快 , 查找慢 实现了 栈 队列 |Vector: 和 ArrayList 原理相同 , 但线程安全 , 效率略 阅读全文
posted @ 2016-04-17 13:17 _1900 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 一、前言 在分析了 AbstractQueuedSynchronier 源码后,接着分析ReentrantLock源码,其实在 AbstractQueuedSynchronizer 的分析中,已经提到过ReentrantLock,ReentrantLock表示下面具体分析ReentrantLock源 阅读全文
posted @ 2016-04-17 12:30 _1900 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用My 阅读全文
posted @ 2016-04-14 12:12 _1900 阅读(393) 评论(0) 推荐(0) 编辑
摘要: mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面进行优化,最终性能就会有大的提升。 Mysql数据库的优化技术 对mysql优化是一个综合性的技术,主要包括 表的设计合理化(符合3NF) 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] 分表 阅读全文
posted @ 2016-04-12 20:37 _1900 阅读(2574) 评论(0) 推荐(0) 编辑
摘要: Java(JVM)内存模型 正如你从上面的图片看到的,JVM内存被分成多个独立的部分。广泛地说,JVM堆内存被分为两部分——年轻代(Young Generation)和老年代(Old Generation)。 年轻代 年轻代是所有新对象产生的地方。当年轻代内存空间被用完时,就会触发垃圾回收。这个垃圾 阅读全文
posted @ 2016-03-25 16:35 _1900 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 事务的几种传播特性1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行3. PROPAGATION_MANDATORY: 如果已经存在一个事 阅读全文
posted @ 2016-03-23 14:48 _1900 阅读(478) 评论(0) 推荐(0) 编辑
摘要: 以下内容基于jdk1.7.0_79源码; 什么是HashMap 基于哈希表的一个Map接口实现,存储的对象是一个键值对对象(Entry<K,V>); HashMap补充说明 基于数组和链表实现,内部维护着一个数组table,该数组保存着每个链表的表头结点;查找时,先通过hash函数计算hash值,再 阅读全文
posted @ 2016-03-23 11:54 _1900 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。 Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我会更详 阅读全文
posted @ 2016-03-23 10:10 _1900 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 1、什么是阻塞队列? 队列是一种数据结构,它有两个基本操作:在队列尾部加入一个元素,从队列头部移除一个元素。阻塞队里与普通的队列的区别在于,普通队列不会对当前线程产生阻塞,在面对类似消费者-生产者模型时,就必须额外的实现同步策略以及线程间唤醒策略。使用阻塞队列,就会对当前线程产生阻塞,当队列是空时, 阅读全文
posted @ 2016-03-23 09:52 _1900 阅读(1321) 评论(0) 推荐(1) 编辑
摘要: IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也因为这些人性化的设置让我们这些 IntelliJ IDEA 死忠粉更加死心塌地使用它和分享它。 阅读全文
posted @ 2016-03-19 14:04 _1900 阅读(5163) 评论(1) 推荐(1) 编辑
摘要: alt+f7查找变量方法使用的地方 F3添加书签 Ctrl + O快捷覆写方法 Alt + F3 添加书签标识 command + F3 显示书签 command + Shift + A 查找动作 Alt + F1 快捷选择 command+alt+f7 这个是查找选中的字符在工程中出现的地方,可以 阅读全文
posted @ 2016-03-19 13:54 _1900 阅读(24295) 评论(4) 推荐(2) 编辑
摘要: 设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的, 阅读全文
posted @ 2016-03-19 13:01 _1900 阅读(465) 评论(0) 推荐(0) 编辑
摘要: java 内存管理机制 JAVA 内存管理总结 java 是如何管理内存的 Java 的内存管理就是对象的分配和释放问题。(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字 new 为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。 释放 :对象的释 阅读全文
posted @ 2016-03-19 12:59 _1900 阅读(342) 评论(0) 推荐(0) 编辑
摘要: Java 虚拟机工作原理详解 一、类加载器 首先来看一下 java 程序的执行过程。 从这个框图很容易大体上了解 java 程序工作原理。首先,你写好 java 代码,保存到硬盘当中。然后你在命令行中输入 此时,你的 java 代码就被编译成字节码(.class).如果你是在 Eclipse IDE 阅读全文
posted @ 2016-03-19 12:58 _1900 阅读(300) 评论(0) 推荐(0) 编辑