自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 表分区、读写分离、数据库集群、硬件优化、缓存优化、服务器优化、Linux系统优化

表分区分区适用于例如日志记录,查询少。一般用于后台的数据报表分析。对于这些数据汇总需求,需要很多日志表去做数据聚合,我们能够容忍1s到2s的延迟,只要数据准确能够满足需求就可以。MySQL主要支持4种模式的分区:range分区、list预定义列表分区,hash 分区,key键值分区。读写分离大型网站会有大量的并发访问,如果还是传统的数据存储方案,只是靠一台服务器处理,如此多的数据库连接、读写操作,数据库必然会崩溃,数据丢失的话,后果更是不堪设想。这时候,我们需要考虑如何降低单台服务...

2020-08-21 15:03:06 218

原创 EXPLAIN、索引优化、索引的存储结构、存储优化、数据库结构优化

EXPLAINEXPLAIN可以帮助开发人员分析SQL问题,EXPLAIN显示了MySQL如何使用使用SQL执行计划,可以帮助开发人员写出更优化的查询语句。使用方法,在select语句前加上Explain就可以了:EXPLAIN SELECT * FROM products结果的列的说明如下:1) idSELECT识别符。这是SELECT查询序列号。这个不重要2) select_type表示SELECT语句的类型。simple:简单select(不使用union或子查询)。pr.

2020-08-21 15:01:32 171

原创 RejectedExecutionHandler、MySQL性能优化

RejectedExecutionHandler类型RejectedExecutionHandler 特性及效果1.AbortPolicy:线程池默认的策略,如果元素添加到线程池失败,会抛出RejectedExecutionException异常2.DiscardPolicy:如果添加失败,则放弃,并且不会抛出任何异常3.DiscardOldestPolicy:如果添加到线程池失败,会将队列中最早添加的元素移除,再尝试添加,如果失败则按该策略不断重试4.CallerR...

2020-08-21 14:57:17 262

原创 ConcurrentHashMap使用场景、总结、对比Hashtable、ConcurrentSkipListMap、几种队列;J.U.C线程池、七个参数、四种线程池

ConcurrentHashMap使用场景ConcurrentHashMap通常只被看做并发效率更高的Map ,用来替换其他线程安全的Map容器,比如Hashtable和Collections.synchronizedMap.线程安全的容器.特别是Map ,很多情况下一个业务中涉及容器的操作有多个,即复合操作,而在并发执行时,线程安全的容器只能保证自身的数据不被破坏,和数据在多个线程间是可见的,但无法保证业务的行为是否正确。ConcurrentHashMap总结:●HashMap是线程不安全的.

2020-08-21 14:52:04 2667

原创 CountDownLatch、Semaphore、J.U.C之并发容器ConcurrentHashMap、JDK7、8 HashMap、JDK7、8 ConcurrentHashMap

CountDownLatch介绍CountDownLatch是一个计数的闭锁 ,作用与CyclicBarrier有点儿相似。在API中是这样描述的: 用给定的计数初始化CountDownLatch,由于调用了countDown(方法,所以在当前计数到达零之前, await方法会一直受阻塞。 之后,会释放所有等待的线程,await的所有后续调用都将立即返回。 这种现象只出现一次——计数无法被重置。 如果需要重置计数,请考虑使用CylicBarrier.●CountDownLa...

2020-08-21 14:44:45 146

原创 JUC多线程(3)、并发工具类-CyclicBarrier

JUC多线程(3)学习目标:●掌握CyclicBarrier同步 屏障的使用●掌握CountDownLatch的使用●掌握Semaphore信号量的使用●掌握ConcurrentHashMap同步 容器的使用●掌握四种BlockingQueue阻塞队列的使用●掌握线程池的使用,了解内置的四种线程池J.U.C之并发工具类CyclicBarrier介绍CyclicBarrier也叫同步屏障,在JDK1.5被引入的一个同步辅助类,在API中是这么介绍的:允许一组线程全部等待彼此...

2020-08-21 14:42:10 110

原创 J.U.C之锁-互斥锁、阻塞锁、自旋锁、读写锁、ReentrantLock、公平锁与非公平锁原理、ReentrantLock与synchronized的区别、J.U.C之Condition

-------小结-----------1. Volatile 解决了什么问题2. Volatile 能不能解决原子性问题3. Volatile 怎么解决的这些问题,4. synchroni zed和volatile比较5.掌握CAS究竟是什么6.需要知道如何实现的(自旋)7.需要掌握guc报下的核心的原子类和常用的api8. synchronized的实现原理9. native关键字(JNI)10.多CPU的CAS处理11. cas的缺陷 循环时间长 ABA的...

2020-08-21 14:40:10 373

原创 对象的属性修改类型、JDK1.8新增类、J.U.C之AQS、AQS资源共享方式、CLH同步队列

对象的属性修改类型如果需要原子更新某个类里的某个字段时,需要用到对象的属性修改类型原子类。 AtomicIntegerFieldUpdater:原子更新整形字段的更新器 AtomicLongFieldUpdater :原子更新长整形字段的更新器 AtomicReferenceFieldUpdater : 原子更新引用类形字段的更新器但是他们的使用通常有以下几个限制:●限制1 :操作的目标不能是statiC类型,前面说到的unsafe提取的是非static类型的属性偏移量,如果是...

2020-08-10 23:25:02 216

原创 CAS缺陷、JUC的atomic包及包中类(原子引用类)的基本介绍

CAS缺陷CAS虽然高效地解决了原子操作,但是还是存在一些缺陷的 ,主要表现在三个方法:循环时间太长、只能保证-个共享变量原子操作、ABA问题。●循环时间太长如果CAS一直不成功呢?这种情况绝对有可能发生。如果自旋CAS长时间地不成功,则会给CPU带来非常大的开销。在JUC中有些地方就限制了CAS自旋的次数,例如BlockingQueue的SynchronousQueue,●只能保证一个共享变量原子操作看了CAS的实现就知道这只能针对一个共享变量,如果是多个共享变量就只能使用锁了。●ABA问题

2020-08-10 23:24:25 207

原创 Volatile适合使用场景、synchronized和volatile比较、J.U.C之CAS、CAS介绍、CAS原理剖析、native关键词、多CPU的CAS处理

Volatile适合使用场景a)对变量的写入操作不依赖其当前值 不满足: number++. count=count*5等 满足: boolean变量、直接赋值的变量等b)该变量没有包含在具有其他变量的不变式中 不满足:不变式low<up总结:变量真正独立于其他变量和自己以前的值,在单独使用的时候,适合用volatilesynchronized和volatile比较a) volatile不需要加锁,比synchronized更轻便,不会阻塞线程b) synchro...

2020-08-08 22:18:35 373

原创 JUC多线程(二)、Volatile实现内存可见性的过程和原理(内存屏障)

JUC多线程(二)学习目标:●掌握volatile解决内存可 见性的使用●了解CAS原子操作●掌握JUC的atomic原子操作包的使用●了解AQS同步队列的作用●了解JUC的锁的基本概念●掌握ReentrantLock和ReentrantReadWriteLock的使用●掌握Condition的使用Volatile通过前面内容我们了解了synchronized ,虽然JVM对它做了很多优化,但是它还是一一个重量级的锁。 而接下来要介绍的volatile则是轻量级的synchronize

2020-08-08 22:17:56 458

原创 synchronized锁优化、自旋锁、适应自旋锁、锁消除、锁粗化、偏向锁、轻量级锁(CAS)、重量锁(monitor)

synchronized是重量级锁,效率不高。但在jdk 1.6中对synchronize的实现进行了各种优化,使得它显得不是那么重了。jdk1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。锁主要存在四中状态,依次是:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态 ,他们会随着竞争的激烈而逐渐升级。PS:注意锁可以升级 不可降级,这种策略是为了提高获得锁和释放锁的效率。自旋锁线程的阻塞和唤醒需要CPU从用户态转为核心态,频繁的.

2020-08-08 22:16:39 319

原创 JUC线程安全、wait与sleep区别、interrupt()方法、线程优先级、join()方法、yield()方法、多线程并发的3个特性、JVM内存结构、Java对象模型和Java内存模型、

JUC(java.util.concurrent) .locks.ReenTrantLocks实现Runnable接口比继承Thread类所具有的优势:1.适合多个相同的程序代码的线程去共享同一个资源。2.可以避免java中的单继承的局限性。3.增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和数据独立。4.线程池只能放入实现Runable或callable类线程,不能直接放入继承Thread的类1.同步代码块Object lock = new Object(); //创建锁

2020-08-04 22:55:56 218

原创 websocket连接服务器获取mq消息测试(代码)

websocket连接服务器获取mq消息测试RabbitMQ监听消息添加文章订阅监听 channel啊监听器啊等等 获取订阅类点赞类消息,然后可查询有多少条新消息MyWebSocketHandler //约定用户第一次请求携带的数据:{"userId":"1"} //获取用户请求数据并解析 String json = msg.text(); //解析json数据,获取用户id String userId = MAPPER.r...

2020-08-04 00:11:44 837

原创 JUC多线程

JUC多线程(jdk中包含可直接操作)学习目标:1.多线程的创建2.线程安全的处理3.了解线程状态4.线程停止两种方法5.了解线程的原子性、可见性和有序性6.理解内存可见性的原理7.synchronized解决内存可见性多线程目的:1.可充分利用cpu空闲时间片;2.同一进程的所有线程是共享同一内存,不需要特殊的数据传送机制,不需要建立共享存储区域共享文件名词概念:进程: 指一个内存中运行的应用程序,拥有一个独立的内存空间,一个应用程序可以同时运行多个进程; ...

2020-08-04 00:10:23 163

原创 一致性哈希算法、虚拟节点、twemproxy实现hash分片、准备Redis实例、twemproxy安装、使用和总结

一致性哈希算法:是一种分布式算法,常用于负载均衡(twemproxy采用此方法)解决将key-value均匀分配到众多server上的问题虚拟节点:解决一致性hash倾斜的问题twemproxy实现hash分片通过引入一个代理层,可以将后端的多台redis或Memcached实例进行同一管理与分配,使应用程序只需要在Twemproxy上进行操作,而不用关心后面具体有多少个真实的Redis或Memcached存储 支持失败节点自动删除 减少客户端直接与服务器的连接数量 ...

2020-08-04 00:08:13 396

原创 集群维护(重分配哈希槽)、移除,添加节点护、Redis集群扩展、twemproxy实现hash分片

对集群维护调整数据的存储,就是对slot哈希槽和节点的调整。Redis内置的集群支持动态调整,可以在集群不停机的情况下,改变slot、添加或删除节点。 ps -ef | grep redis ./redis-cli -p 7001 cluster nodes (查看集群信息)#分片重哈希,可以连接任意节点,对哈希槽进行重分配 #cd /root/redis-4.0.14/src/ ./redis-trib.rb reshard 192.168.200.130:7001#...

2020-08-04 00:07:35 449

原创 sentinel小结、互联网冷备和热备、Sentinel整合Springboot、Redis内置集群

sentinel三大任务: 监控:不断检查你的主服务器和从服务器是否运作正常 提醒:当被监控的某个redis服务器出现问题时,sentinel可以通过API向管理员或者其他应用程序发送通知 自动故障迁移:当一个主服务器不能正常工作时,sentinel会开始一次自动故障转移操作,它会将失效主服务器的其中一个服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器。 当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代...

2020-08-04 00:06:48 241

原创 redis手动主从转移、部署sentinel(哨兵)

redis自身集成了读写分离供用户使用。只需要在redis配置文件里加一条 slaveof host port语句配置即可,现在开始配置主从环境: 进入redis: cd /usr/local/redis/bin ./redis-cli -h 192.168.200.130 配置redis从库(从库只能读不能写)复制redis下的bin文件√cd /usr/local/redis //进入#cp bin redis01 -Rcp -R bin/ ...

2020-08-04 00:06:11 357

原创 linux部署redis

redis分布式缓存 ps -ef | grep redis 单机版性能不足,可用性不高redis高可用 sentinel(哨兵)sentinel整合springbootredis内置集群虚拟机中安装C++环境:yum install gcc-c++ 1.yum clean all 2.yum makecache在SecureCRT中右键连接名点击:connect SFTP connection 拖动:redis-4.0.14...

2020-08-04 00:04:23 78

原创 操作RabbitMQ完成消息通知,NIO、IO、netty基本分析

将等候通知的消息从 tb_notice_fresh 转移到RabbitMQ中//subscribe订阅通知 //1 创建Rabbit管理器 RabbitAdmin rabbitAdmin = new RabbitAdmin(rabbitTemplate.getConnectionFactory()); //2 声明Direct类型交换机,处理新增文章消息 DirectExchange exchange = new DirectExchange("a...

2020-08-02 17:49:59 800

原创 JVM删除不干净及安装过程、整合Netty和WebSocket实现双向通信

1.https://blog.csdn.net/qq_32066831/article/details/103216758 将注册表及服务中的残存数据(jvm)删除干净——CCleaner(完美清除)2.https://blog.csdn.net/qq_32066831/article/details/103216904 安装(其他博主的内容)改进文章订阅功能,创建RabbitMQ队列存放新消息通知、改进发布文章后群发消息通知功能整合Netty和WebSocket实现双向通信do...

2020-08-02 17:48:15 130

原创 消息中间件及面试问题

rabbitmqwebsocketnetty xx通讯框架1.redisTemplete key时编码过后的key,在其他的客户端去查询的时候查询不到数据2.系统通知3.为什么使用MQ,为什么要选择rabbitmq?使用MQ以后有什么好处和坏处 解耦、异步、肖峰 使用MQ系统后的可用性降低了,同时系统的复杂度提高了,还有一个就是一致性的问题 (消息的重复消费、消息的乱序问题、消息的堆积问题) 1.重复消费:做好接口的幂等性,数据库中数据一致(七...

2020-08-02 17:45:43 160

原创 eureka与encrypt启动与注册问题排错

encrypt网关拦截与RSA加密解密(拦截相应网关传递的信息,对信息进行加密解密——练习,通过test类生成加密后的数据,将数据放入postman中查询,在idea中打印加密前后及传送网关的数据)1.注解失效,换成最新注解 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-netfl...

2020-08-02 17:44:16 185

原创 整合即时通讯系统、四种加密算法概要、Openssl基本使用

http://www.localhost:9008/chatroom.htmlhttps://console.easemob.com/app-detail/usertensquare_user/static/..即时通信接口加密 摘要算法:不可逆、单向,计算出的长度是固定的、分布式网络使用、CRC\MD5√\SHA等 对称加密:加密解密使用相同的密钥,速度快-离线的大量数据加密 DES\AES 非对称加密:加密解密使用不同的密钥,算法强度复杂,一对密钥:私钥加密、公钥...

2020-08-02 17:43:05 245

原创 docker基本操作、websocket环信云即时通讯

虚拟机启动时自动启动docker:systemctl enable docker删除指定名称容器:docker rm 容器名停止正在使用的容器 : docker stop 容器名开启指定名称容器 :docker start 容器名环信服务器端集成Swagger文档用于测试各个API接口http://api-docs.easemob.com/#/%6E8%8E%B7%E5%8F%96token 我的 url:http://a1.easemob.com/1128200716148278/t...

2020-08-02 17:41:41 712

原创 整合Id生成器在Spring中的应用

后端article的基本增删改查操作//启动类中注册ID生成器 @Bean public IdWorker createIdWorker() { return new IdWorker(1, 1); }//利用生成器生成id并保存评论的点赞功能 public void save(Comment comment) { //分布式id生成器生成id String id = idWorker.nextId(...

2020-08-02 17:40:15 89

原创 MongoDB客户端、linux启动mongodb、mongodb基本操作

MongoDBCMD命令行操作:mongod.exe --dbpath=D:\IDEA-workspace\tensquare\data 设置数据库存储位置 默认端口号27017 (mongod.exe -port 8989 设置指定端口号)再开一个新的CMD:打开mongo(可自动连接27017端口) (mongo 127.0.0.1:8989 连接指定地址)Linux(虚拟机)中启动mongo: docker run -id --na...

2020-08-02 17:38:27 305

原创 linuxJVM初学习

docker -v 查看版本systemctl status dockerdocker 基本命令docker images 查看镜像docker run -id --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7docker psdocker search mysql首先大家应该都知道,操作系统主要分3个部分,分别是:内核、库、应用程序1.内核主要管理...

2020-08-02 17:35:46 682

原创 nginx、linuxJVM、Securecrt基本配置及概念

Nginx:作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。基于swagger开发 http://localhost/801 进入这个服务器操作接口 负载均衡也是 Nginx常用的一个功能,当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。我们可以建立很多很多服务器,组成...

2020-08-02 17:33:14 228

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除