- 浏览: 382398 次
- 性别:
- 来自: 北京
最新评论
-
尚世承:
你的stringutils哪里来的啊
统计字符串中各种类型字符个数
文章列表
mysql双主同步原理
- 博客分类:
- mysql
http://www.cnblogs.com/ygqygq2/p/6045279.html
系统突然访问变慢,如何排查和解决?
- 博客分类:
- 性能优化
第一步:登录后台服务器/监控平台,查看系统资源是否达到上限,例如:CPU、内存、磁盘、I/O、网络带宽等,如果是这些问题,先将这些问题逐一解决:
如果是CPU的问题,则需要查看一下CPU占比比较高的进程,然后使用jstack命令生成进程的堆栈信息,看是否发生频繁Full GC,如果是的话,还需要看一下内存快照,分析一下内存情况(可以使用java自带的或第三方工具);如果是磁盘空间满了,及时清理磁盘;如果是带宽满了,联系网络工程师解决。如果以上这些问题都没有,则进行第二步。
第二步:检查应用服务器(Jboss/Tomcat)的线程池配置是否合理,看一下请求的排队现象是否严重 ...
高并发/高可用:
技术层面:
1. 静态化(静态化可以用上CDN缓存)
2. 缓存(包括分布式缓存和jvm缓存)
3. 异步(将任务添加到队列里异步进行消费)
4. 降级(将非核心业务异步进行降级)
5. 限流(分为IP限流、白名单限制、流控阀值设置)
6. 监控(大促监控平台,告警机制)
7 压测(上线之前预估流量,进行压测)
架构层面:
1. 垂直扩展(增加服务器资源)
2. 水平扩展(使用集群等措施)
要求:实现一个双向链表的倒置功能(1->2->3 变成 3->2->1)
代码:
package com.mycom.test;
import java.util.LinkedList;
/**
* 双向链表节点倒转
*
* @author guweiqiang
* @date 2018年3月28日
*/
public class Test {
/**
* 双向链表节点静态内部类
*/
public static class LinkedListNode {
public LinkedLis ...
互联网分布式架构设计,提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up)与水平扩展(Scale Out)。
1. 垂直扩展:
提升单机处理能力。
什么是八皇后问题?
国际象棋中的皇后,可以横向、纵向、斜向移动。如何在一个8X8的棋盘上放置8个皇后,使得任意两个皇后都不在同一条横线、竖线、斜线方向上。
八皇后问题是一个古老的问题,于1848年由一位国际象棋棋手提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,如何求解?
以高斯为代表的许多数学家先后研究过这个问题。后来,当计算机问世,通过计算机程序的运算可以轻松解出这个问题。
1.BeanFactory
BeanFactory是IOC最基本的容器,负责生产和管理bean,它为其他具体的IOC容器提供了最基本的规范,例如DefaultListableBeanFactory,XmlBeanFactory,ApplicationContext 等具体的容器都是实现了BeanFactory,再在其基础之上附加了其他的功能。
BeanFactory源码 :
package org.springframework.beans.factory;
import org.springframework.beans.BeansException; ...
IBM MQ demo
- 博客分类:
- ActiveMQ
1.创建factory
< amq:connectionFactory id="jmsFactory" brokerURL ="failover:(tcp://localhost:61616)" />
2.创建队列
<amq:queue name="user_registerInformation" physicalName "union.user.registerInformation.queue"></amq:queue >
3.创建发送 ...
秒杀场景高并发解决方案
- 博客分类:
- 高并发
<!--[if !supportLists]-->1. <!--[endif]-->秒杀架构设计理念:
限流: 鉴于只有少部分用户能够秒杀成功,所以要限制大部分流量,只允许少部分流量进入服务后端。
削峰:对于秒杀系统瞬时会有大量用户涌入,所以在抢购一开始会有很高的瞬间峰值。高峰值流量是压垮系统很重要的原因,所以如何把瞬间的高流量变成一段时间平稳的流量也是设计秒杀系统很重要的思路。实现削峰的常用的方法有利用缓存和消息中间件等技术。
异步处理:秒杀系统是一个高并发系统,采用异步处理模式可以极大地提高系统并发量,其实异步处理就是削峰的一种实现 ...
设计模式(十二)——模板模式(Template)
- 博客分类:
- 设计模式
定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。
通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。
比如我们做菜可以分为三个步骤 (1)备料 (2)具体做菜 (3)盛菜端给客人享用,这三部就是算法的骨架 ;然而做不同菜需要的料,做的方法,以及如何盛装给客人享用都是不同的这个就是不同的实现细节。
下来我们就代码实现如下
a. 先来写一个 ...
ThreadLocal在线程池里使用
- 博客分类:
- 多线程
(如果不清空,则会有问题)
(如果清空则不会影响)
http://blog.csdn.net/rogerjava/article/details/43021579
1.文件很大,不可能全部存储在内存中,故要存储到磁盘上;
2.索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数;
3.局部性原理与磁盘预读,预读的长度一般为页(page)的整倍数,(在许多操作系统中,页的大小通常为4k)
4.数据库系统巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入,(由于节点中有两个数组,所以地址连续)。而红黑树这种结构,明显要深的多。由于逻辑上很近的节点(父子)物理上可能很远,无法利用局部性。
Referrer Policy
- 博客分类:
- http
用于过滤 Referrer 报头内容,目前是一个候选标准。
取值范围:
enum ReferrerPolicy {
"",
"no-referrer",
"no-referrer-when-downgrade",
"same-origin",
"origin",
"strict-origin",
"origin-when-cross-origin",
"strict-origin-when-cr ...
客户端向服务器发送HTTP请求:
1.请求行
2.HTTP头
3.内容
服务器返回一个HTTP响应:
1.状态行
2.响应头
3.响应正文
WebSocket协议介绍
- 博客分类:
- WebSocket
一、Websocket是什么样的协议,具体有什么优点?
WebSocket是HTML5出的协议,也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)
首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多 ...