- 博客(133)
- 资源 (163)
- 收藏
- 关注
原创 MySQL 锁全集(共享锁/排它锁、记录锁/间隙锁/临键锁)
简介:锁是计算机协调多个进程或线程并发访问某一资源变得有序的机制。一、锁分类 1. 行级锁/表级锁/页面锁 A. 行级锁:是指给索引上的索引项加锁,偏向InnoDB存储引擎; B. 表级锁:是指给全表加锁,这个是由于没有使用索引导致的,偏向MyISAM存储引擎; C. 页面锁:开销和加锁时间界于表锁和行锁之间; 2.共享锁/排它锁 A. 共享锁(S锁):也称读锁,指可以同时读数据,即允许持锁事务读取一行,事务A持有S锁,事务B请求S锁时,会立即被赋予.
2021-06-22 09:34:14
781
原创 Java并发之AQS详解
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。 以下是本文的目录大纲: 概述 框架 源码详解 简单应用 若有不正之处,请谅解和批评指正,不胜感激。
2021-06-19 18:03:36
127
原创 0163 IO原理理解与IO模型
基本概念Linux内核将所有外部设备都看做一个文件来操作。那么我们对与外部设备的操作都可以看做是对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符),对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)。描述符就是一个数字(可以理解为一个索引),指向内核中一个结构体(文件路径,数...
2019-11-13 19:07:42
434
原创 0162 雪花分片ID生成算法snowflake
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没...
2019-01-10 12:11:50
1043
1
原创 0161 一致性哈希算法原理
一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人...
2018-12-17 20:33:37
269
1
原创 0160 十分钟看懂时序数据库(I)-存储
摘要:2017年时序数据库忽然火了起来。开年2月Facebook开源了beringei时序数据库;到了4月基于PostgreSQL打造的时序数据库TimeScaleDB也开源了,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时...2017年时序数据库忽然火了起来。开年2...
2018-12-17 20:22:53
693
1
原创 0158 Nginx-搭建https服务器
概述1、生成证书2、配置nginx步骤:1、创建一个目录存放生成的私钥及根证书文件 mkdir /data/ssl cd /data/ssl2、创建一个私钥,并输入密码(必须输入且记住,且后续各个步骤可能都需要用到) openssl genrsa -des3 -out test.key 10243、创建签名请求的证书(csr
2017-05-18 18:16:21
457
转载 0157 JAVA利用HttpClient进行POST请求(HTTPS)
目前,要为另一个项目提供接口,接口是用HTTP URL实现的,最初的想法是另一个项目用jQuery post进行请求。但是,很可能另一个项目是部署在别的机器上,那么就存在跨域问题,而JQuery的post请求是不允许跨域的。这时,就只能够用HttpClient包进行请求了,同时由于请求的URL是HTTPS的,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过
2017-05-17 17:11:27
392
转载 0156 java中的WeakReference
Java语言中为对象的引用分为了四个级别,分别为 强引用 、软引用、弱引用、虚引用。本文只针对java中的弱引用进行一些分析,如有出入还请多指正。在分析弱引用之前,先阐述一个概念:什么是对象可到达和对象不可到达状态。其实很简单,我举个例子:现在有如下两个类class A class B,在JVM上生成他们两个类的实例分别为 instance a instanc
2017-05-09 14:23:45
405
转载 0155 Tomcat多实例Session共享的原理
在这个互联网高度发达的时代,许多应用的用户动辄成百上千万,甚至上亿。为了支持海量用户的访问,应用服务器集群这种水平扩展的方式是最常用的。这种情形下,就会涉及到许多单机环境下完全不需要考虑的问题,这其中session的创建、共享和存储是最常见之一。在单机环境中,Session的创建和存储都是由同一个应用服务器实例来完成,而存储也仅是内存中,最多会在正常的停止服务器的时候,把当前活动的Sess
2017-03-01 10:31:19
386
原创 00154 web安全认证机制知多少
如今web服务随处可见,成千上万的web程序被部署到公网上供用户访问,有些系统只针对指定用户开放,属于安全级别较高的web应用,他们需要有一种认证机制以保护系统资源的安全,本文将探讨五种常用的认证机制及优缺点。Basic模式HTTP协议规范中有两种认证方式,一种是Basic认证,另外一种是Digest认证,这两种方式都属于无状态认证方式,所谓无状态即服务端都不会在会话中记录相关信息
2017-02-28 20:21:52
390
1
原创 0153 Tomcat9配置HTTP2
HTTP 2.0即超文本传输协议 2.0,是下一代HTTP协议。是由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。是自1999年http1.1发布后的首个更新。系统环境:CentOS release 6.5 (Final) x64JDK1.8.0_92apache-tomcat-9.
2017-02-26 15:04:46
1050
1
转载 0152 360 如何用 QConf 搞定 2W+ 服务器的配置管理
此文根据【QCON高可用架构群】分享内容,由群内【编辑组】志愿整理,转发请注明出处。王康,奇虎360基础架构组资深工程师 目前负责分布式配置管理服务QConf的研发和维护,并推动其在奇虎360的应用。专注于服务端底层通用工具、框架和系统的研发,为公司的Web服务端及服务端提供易用、可靠的基础服务支持。QConf是奇虎360广泛使用的配置管理服务,现已开源,欢迎大家关注使用。
2017-02-24 10:50:23
775
转载 0151 Mysql数据库事务的隔离级别和锁的实现原理分析
MySQL数据库的事务隔离级别相信很多同学都知道.大家有没有想过它是如何实现的呢?带着这些问题我翻阅了相关数据库的书籍和资料,把我的理解写下来.一:事务隔离级别mysql数据库的隔离界别如下:1, READ UNCOMMITTED(未提交读)事务中的修改,即使没有提交,对其它事务也是可见的. 脏读(Dirty Read).2, READ
2017-02-15 16:56:13
334
转载 0150 dubbo-admin管理平台搭建
一、前言dubbo的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用了,但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入dubbo-admin。通过dubbo-admin可以对消费者和提供者进行管理。二、下载与配置打包dubbo-admin的下载,可自行到官网下载:https://github.com/alibaba/dubbo
2017-01-20 16:53:38
247
原创 0149 Nginx/ZooKeeper 负载均衡的差异
Nginx是著名的反向代理服务器,也被广泛的作为负载均衡服务器ZooKeeper是分布式协调服务框架,有时也被用来做负载均衡那么他们的区别是什么?如何选择呢?下面从实际场景看下他们的关系Nginx的负载均衡配置非常简单,把多个web server配置到nginx中,用户访问Nginx时,就会自动被分配到某个web serverupstream backe
2017-01-20 14:47:33
806
1
转载 0148 Spring Framework 中启动 Redis 事务操作
背景:项目中遇到有一系列对Redis的操作,并需要保持事务处理。环境:Spring version 4.1.8.RELEASERedis Server 2.6.12 (64位)spring-data-redis version 1.6.1.RELEASEjedis version 2.7.3 使用Spring的@Transaction
2016-12-30 14:26:05
1027
转载 0147 跨域资源共享 CORS 详解
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。本文详细介绍CORS的内部机制。一、简介CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。
2016-11-01 17:35:08
286
原创 146 Git Bash 记住用户名密码
git for windows (又名 msysgit)如何记住用户名和密码 :先创建存储用户名密码的文件 ,在home文件夹,一般是C:\Documents and Settings\Administrator下建立文件.git-credentials(windows下不允许直接创建以.开头的文件,所以有一个小技巧:先创建一个文件名叫 )git-credentials然后进入
2016-08-23 15:45:29
547
1
原创 145 kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
问题导读:1.zookeeper在kafka的作用是什么?2.kafka中几乎不允许对消息进行“随机读写”的原因是什么?3.kafka集群consumer和producer状态信息是如何保存的?4.partitions设计的目的的根本原因是什么?一、入门 1、简介 Kafka is a distr
2016-08-21 17:09:26
440
原创 144 Linux使用jstat命令查看jvm的GC情况
Linux使用jstat命令查看jvm的GC情况http://www.open-open.com/lib/view/open1390916852007.htmlhttp://www.aiuxian.com/article/p-2032660.htmlhttp://blog.youkuaiyun.com/u011202334/article/details/51498
2016-08-13 16:31:55
891
1
原创 0143 [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
[FMS]使用ffmpeg来完成对flv、mp4、mp3等格式的转化,使用ffmpeg或segmenter完成对视频/音频格式文件的切割,切割为m3u8格式及ts文件1、 为何要使用HTTP Live Streaming可以参考wikipediaHTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTTP的流媒体 网络传输协议。是苹果公司Q
2016-07-25 19:59:49
1875
1
转载 0141 rtmplib rtmp协议过程分析
转自:http://chenzhenianqing.cn/articles/1009.html写的很好,收藏如下,向作者致敬!没事碰到了librtmp库,这个库是ffmpeg的依赖库,用来接收,发布RTMP协议格式的数据。代码在这里:git clone git://git.ffmpeg.org/rtmpdump先看一段通过librtmp.so库下载RTMP源发布的数
2016-07-18 23:30:05
534
原创 0140 redis实现访问频次限制的几种方式
结合上一篇文章《redis在学生抢房应用中的实践小结》中提及的用redis实现DDOS设计时遇到的expire的坑。其实,redis官网中对incr命令的介绍中已经有关于如何用redis来做rate limit的探讨。这里将实现的两种模式翻译一下,并适当加了一些批注说明,原文可见官网。模式:Rate limiter频次限制器模式是一种特殊的计数器,它常被用来限制某个操作可以被执
2016-07-06 14:59:56
1537
1
转载 0139 Nginx+Lua+Redis 对请求进行限制
一、概述需求:所有访问/myapi/**的请求必须是POST请求,而且根据请求参数过滤不符合规则的非法请求(黑名单), 这些请求一律不转发到后端服务器(Tomcat)实现思路:通过在Nginx上进行访问限制,通过Lua来灵活实现业务需求,而Redis用于存储黑名单列表。相关nginx上lua或redis的使用方式可以参考我之前写的一篇文章:openresty(ngi
2016-07-06 13:45:51
409
转载 0138 redis脚本实现分布式锁
redis被大量用在分布式的环境中,自然而然分布式环境下的锁如何解决,立马成为一个问题。例如我们当前的手游项目,服务器端是按业务模块划分服务器的,有应用服,战斗服等,但是这两个vm都有可能同时改变玩家的属性,这如果在同一个vm下面,就很容易加锁,但如果在分布式环境下就没那么容易了,当然利用redis现有的功能也有解决办法,比如redis的脚本。 redis在2.6以后的版本中增加了
2016-07-05 13:56:18
253
转载 0137 Dubbo是什么
1. Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消
2016-03-06 13:06:32
331
转载 0136 Spring的七大模块简介
Spring有七大功能模块,分别是Spring Core,AOP,ORM,DAO,MVC,WEB,Content。 下面分别简单介绍: 1,Spring Core Core模块是Spring的核心类库,Spring的所有功能都依赖于该类库,Core主要实现IOC功能,Sprign的所有功能都是借助IOC实现的。 Java代码 IOC = Inversion
2016-02-23 10:24:25
485
转载 0135 java redis使用之利用jedis实现redis消息队列
应用场景最近在公司做项目,需要对聊天内容进行存储,考虑到数据库查询的IO连接数高、连接频繁的因素,决定利用缓存做。从网上了解到redis可以对所有的内容进行二进制的存储,而java是可以对所有对象进行序列化的,序列化的方法会在下面的代码中提供实现。序列化这里我编写了一个java序列化的工具,主要是对对象转换成byte[],和根据byte[]数组反序列化成java对象;
2015-10-16 14:56:43
652
转载 0134 Web应用中的轻量级消息队列
Web应用中为什么会需要消息队列?主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达mysql,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。在Web2.0的时代,高并发的情况越来越常见,从而使消息队列有成
2015-10-16 14:31:52
505
转载 0133 用Redis存储Tomcat集群的Session
前段时间,我花了不少时间来寻求一种方法,把新开发的代码推送到到生产系统中部署,生产系统要能够零宕机、对使用用户零影响。我的设想是使用集群来搞定,通过通知负载均衡Nginx,取下集群中的Tomcat节点,然后对Tomcat上的应用进行升级,再通知负载均衡Nginx,把Tomcat节点重新加载上去。依次这么做,把集群中的所有Tomcat都替换一次即可。那么问题来了,在取下Tomcat节
2015-10-16 12:18:15
499
转载 0132 jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令
公司内部同事分享的一篇文章 周末看到一个用jstack查看死锁的例子。昨天晚上总结了一下jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令。供大家参考 1.Jstack 1.1 jstack能得到运行java程序的java stack和native stack的信息。可以轻松得知当前线程的运行情况。如下图所示 注:这个和thread dum
2015-09-25 15:43:22
866
转载 0131 Eclipse远程调试(远程服务器端监听)
前提:远程服务器上运行的WEB项目class对应的源码与本地项目中必须保持一致也就是远程tomcat部署的项目就是本机项目打包过去的,而本机项目没有发生变动 远程服务器端服务器端配置eclipse调试器监听端口,有两种方式,任选其一 第一种方式:环境变量export JPDA_ADDRESS=9999 启动tomcat使用sh catalina.sh
2015-09-25 15:29:06
418
转载 0130 分布式网站架构后续:zookeeper技术浅析
Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多。今天我想谈谈zookeeper,本文不谈如何使用zookeeper,而是zookeeper到底有哪些实际的运用,哪些类型的应用能发挥zookeeper的优势,最后谈谈zookeeper对分布式网站架构能产生怎样的作用。 Zookeeper是针
2015-09-25 11:52:12
338
转载 0129 Kafka 与 Flume 如何选择
采集层 主要可以使用Flume, Kafka两种技术。Flume:Flume 是管道流方式,提供了很多的默认实现,让用户通过参数部署,及扩展API.Kafka:Kafka是一个可持久化的分布式的消息队列。Kafka 是一个非常通用的系统。你可以有许多生产者和很多的消费者共享多个主题Topics。相比之下,Flume是一个专用工具被设计为旨在往HDFS,HBase发送
2015-09-25 10:32:01
313
转载 0128 Hadoop+HBase+ZooKeeper三者关系与安装配置
这里有几个主要关系:1.经过Map、Reduce运算后产生的结果看上去是被写入到HBase了,但是其实HBase中HLog和StoreFile中的文件在进行flush to disk操作时,这两个文件存储到了HDFS的DataNode中,HDFS才是永久存储。2.ZooKeeper跟Hadoop Core、HBase有什么关系呢?ZooKeeper都提供了哪些服务呢?主要有:管理H
2015-09-18 18:19:10
563
转载 0127 Flume日志收集
一、Flume介绍Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。设计目标:(1) 可靠性当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数
2015-09-17 16:52:39
331
转载 0126 Flume-ng+Kafka+storm的学习笔记
吐个槽 :在word文档中写好的 包括图片 在csdn粘贴过来后 图片必须重新上传 不爽啊!!Flume-ng+Kafka+storm的学习笔记 Flume-ngFlume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。 Flume的文档可以看http://flume.apache.org/FlumeUserGuide.htm
2015-09-17 16:25:48
523
MyEclipse配置ejb.rar
2010-12-19
数学建模报告(八个全)
2010-06-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人