自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

努力奔跑

没有伞的孩子必须努力奔跑

  • 博客(27)
  • 收藏
  • 关注

原创 线程池的实际应用场景

在实际应用中使用java中的线程池,我构建了一个线程数为5个线程池,然后采用分段批量提取的方式每500条为一组数据进行图片信息的提取,然后再把这些通过Threadpool的execute方法交给线程池中的线程进行处理,即充分使用了CPU硬件资源又加快了大数据情况下程序的处理效率。...

2019-05-31 18:19:26 27175 2

原创 TIME_WAIT过多的危害以及解决TIME_AWAIT过多方案

TIME_WAIT过多危害网络情况不好时,如果主动方无TIME_WAIT等待,关闭前个连接后,主动方与被动方又建立起新的TCP连接,这时被动方重传或延时过来的FIN包过来后会直接影响新的TCP连接;同样网络情况不好并且无TIME_WAIT等待,关闭连接后无新连接,当接收到被动方重传或延迟的FIN包后,会给被动方回一个RST包,可能会影响被动方其它的服务连接。过多的话会占用内存,一个TIME...

2019-05-26 11:36:33 46688 5

原创 单例模式优缺点及应用场景

优点:在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是相同的一个实例。这样就防止其它对象对自己的实例化,确保所有的对象都访问一个实例单例模式具有一定的伸缩性,类自己来控制实例化进程,类就在改变实例化进程上有相应的伸缩性。提供了对唯一实例的受控访问。由于在系统内存中只存在一个对象,因此可以节约系统资源,当需要频繁创建和销毁的对象时单例模式无疑可以提高系统的性能。允许可...

2019-05-25 21:47:09 22662 1

原创 什么时候使用IOC和AOP

ioc就是其实就是依赖注入,即用接口编程,在程序中不出现new关键字,而是用接口来命名引用,然后通过某种方式(多数用spring,不过Google guice也是很好的ioc框架)把接口的某个实现类的实例注入到引用里,从而实现与接口具体实现类的松耦合。aop方式就理解起来就简单了,其方式很类似j2ee中的filter,就是在程序正常的业务流中间像切面一样插入很多其他需要执行的代码,比如登陆时候在...

2019-05-25 16:36:07 21162

原创 springboot笔记——自定义Springboot的starter

一句话总结:1、编写自己的properties类(用来加载属性文件进行默认的配置)和核心服务类(要自动配置的bean)2、自定义AutoConfiguration 配置类CustomerAutoConfiguration ,通过@Condition*系列注解控制自动配置的条件。3、然后在src/main/resources新建文件夹META-INF,然后新建一个spring.factorie...

2019-05-19 19:49:19 19891

原创 秒杀系统设计(一)

秒杀系统的场景特点秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增;秒杀一般是访问请求量远远大于库存数量,只有少部分用户能够秒杀成功;秒杀业务流程比较简单,一般就是下订单操作。...

2019-05-18 12:14:27 19964

原创 session存在哪里?如何实现以及session超时设置

sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。session在访问tomcat服务器HttpServletRequest的getSession(true)的时候创建,tomcat的ManagerBase类提供创建sessionid的方法:随机数+时间+...

2019-05-17 14:41:57 22190

原创 Enum类中为什么构造函数必须是私有的

枚举被设计成是单例模式,即枚举类型会由JVM在加载的时候,实例化枚举对象,你在枚举类中定义了多少个就会实例化多少个,JVM为了保证每一个枚举类元素的唯一实例,是不会允许外部进行new的,所以会把构造函数设计成private,防止用户生成实例,破坏唯一性。...

2019-05-16 21:58:59 21167

原创 Kafka入门(二)

1.1 Kafka 高可用方案Kafka 高可用性的保障来源于其健壮的副本(Replication)策略。为了提高吞吐能力,Kafka 中每一个 Topic 分为若干 Partitions;为了保证可用性,每一个 Partition 又设置若干副本(Replicas);为了保障数据的一致性,Zookeeper 机制得以引入。基于 Zookeeper,Kafka 为每一个 Partition 找一...

2019-05-14 20:16:31 19886

原创 Kafka入门(一)

1.1 Kafka简介关于 Kafka,网上有很多介绍,经过不断地复制、洗稿、演绎后,难免背离原意,因此,我们还是来看一下官网给出的定义:Apache Kafka is a distributed streaming platform.Kafka 作为流平台具有以下三种能力:发布和订阅记录流,类似于消息队列或企业消息系统;具有容错能力,且可以持久化的方式存储记录流;当记录...

2019-05-13 22:06:02 19889

原创 Redis分布式锁注意事项

基于 Redis 的分布式锁的安全性分析1.1 预防死锁我们看下面这个典型死锁场景。一个客户端获取锁成功,但是在释放锁之前崩溃了,此时该客户端实际上已经失去了对公共资源的操作权,但却没有办法请求解锁(删除 Key-Value键值对),那么,它就会一直持有这个锁,而其它客户端永远无法获得锁。我们的解决方案是:在加锁时为锁设置过期时间,当过期时间到达,Redis 会自动删除对应的 Key-...

2019-05-13 21:34:21 24960 1

转载 ConcurrentHashMap源码分析(JDK8版本)

https://blog.csdn.net/u010723709/article/details/48007881

2019-05-12 19:30:27 20019

原创 Mysql数据库之MVCC

MVCC(Multiversion Concurrency Control),即多版本并发控制技术,结合行锁实现数据的读不加锁,读写不冲突,在读多写少的场景大幅提升性能,MVCC 主要是为了解决 Repeatable-Read 事务隔离级别下事务并发产生的幻读问题。每行数据都存在一个隐藏的版本字段,每次数据更新时都更新该版本修改时给数据行加排它锁,Copy 修改前的数据到 undo log(...

2019-05-12 16:00:09 20133

原创 MySQL 的表类型、存储引擎和事务

MySQL 的表类型MySQL 的表类型由存储引擎(Storage Engines)决定,MySQL 数据表主要支类型 :事务安全型(transaction-safe):BDB、InnoBDB非事务安全型(non-transaction-safe):HEAP(Memory)、Archive、MYISAMSHOW ENGINES; #查看当前数据库支持的引擎存储引擎的选择和区别:...

2019-05-12 15:50:16 20471

原创 SpringBoot、SpringMVC和Spring区别

spring boot只是一个配置工具,整合工具,辅助工具.springmvc是框架,项目中实际运行的代码Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring 的ioc和 aop,ioc 提供了依赖注入的容器, aop解决了面向横切面的编程,然后在此两者的基础上实现了其他延伸产品的高级功能。Spring MVC提供了一种轻度...

2019-05-11 19:30:02 28454 1

原创 什么是协程

什么是协程协程,英文名是 Coroutine, 又称为微线程,是一种用户态的轻量级线程。协程不像线程和进程那样,需要进行系统内核上的上下文切换,协程的上下文切换是由程序员决定的。协程相对于多线程的优点多线程编程是比较困难的, 因为调度程序任何时候都能中断线程, 必须记住保留锁, 去保护程序中重要部分, 防止多线程在执行的过程中断。而协程默认会做好全方位保护, 以防止中断。我们必须显示产出才...

2019-05-09 21:22:49 23910

原创 spring源码学习——IOC容器初始化(一)

IOC 容器的初始化包括 BeanDefinition 的 Resource 定位、载入和注册这三个基本的过程。我们以 ApplicationContext 为例讲解,ApplicationContext 系列容器也许是我们最熟悉的,因为 Web项 目 中 使 用 的 XmlWebApplicationContext 就 属 于 这 个 继 承 体 系 , 还 有ClasspathXmlAppli...

2019-05-08 23:29:19 20406

原创 Redis 实现分布式锁和Zookeeper实现分布式锁

使用 Redis 实现分布式锁在 JUC 包中除了阻塞锁外还有一种叫 CAS 的无阻塞锁(具体可以参考:Java 并发编程之美:并发编程基础晋级篇),CAS 操作本身是原子性的,多个线程操作同一个变量的 CAS 时候只有一个线程能进行 CAS 成功,失败的线程接下来那么使用乐观锁机制直接失败要么使用自旋方式使用 CPU 资源重复进行 CAS 尝试。那么在分布式锁的实现中我们也可以使用类似的方式...

2019-05-07 23:19:41 24257

原创 netty中的EventLoopGroup 和 EventLoop

当系统在运行过程中,如果频繁的进行线程上下文切换,会带来额外的性能损耗。多线程并发执行某个业务流程,业务开发者还需要时刻对线程安全保持警惕,哪些数据可能会被并发修改,如何保护?这不仅降低了开发效率,也会带来额外的性能损耗。为了解决上述问题,Netty采用了串行化设计理念,从消息的读取、编码以及后续 ChannelHandler 的执行,始终都由 IO 线程 EventLoop 负责,这就意外着整...

2019-05-05 20:43:27 30767 2

原创 TCP和UDP区别以及报文头

UDP(用户数据报协议)UDP特点UDP只在IP数据报服务的基础上增加了少量的功能:复用与分用、对整个报文的差错检测。UDP是无连接的通信前不需要建立连接,通信结束也无需释放连接。UDP是不可靠的它是尽力而为交付,不能确保每一个数据报都送达。UDP是面向报文的所谓『面向报文』就是指:UDP数据传输的单位是报文,且不会对数据作任何 拆分 和 拼接 操作。在发送端,应用程...

2019-05-05 18:21:21 26986

原创 可靠的UDP协议--QUIC协议

QUIC是一种新的传输 方式,与TCP相比可以减少延迟。 表面上,QUIC与在UDP上实现 的TCP + TLS + HTTP /2非常相似。由于TCP是在操作系统内核和中间件固件中实现的,所以对TCP进行重大改变几乎是不可能的。但是,由于QUIC是建立在UDP之上的,所以没有这样的限制。QUIC相比于上述介绍的HTTP、HTTPS和HTTP2协议最大的不同就在于,其传输层采用的是UDP协议...

2019-05-05 18:08:56 24528

原创 Redis 事务

Redis 事务Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:批量操作在发送 EXEC 命令前被放入队列缓存。收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。一个事务从开始到执行会经历以下三个阶段:开始事务。命令入队。执行事务。以下是一个事务的例子...

2019-05-05 17:30:32 20132

原创 Redis内部数据结构详解(2)——skiplist

Redis里面使用skiplist是为了实现sorted set这种对外的数据结构。sorted set提供的操作非常丰富,可以满足非常多的应用场景。这也意味着,sorted set相对来说实现比较复杂。同时,skiplist这种数据结构对于很多人来说都比较陌生,因为大部分学校里的算法课都没有对这种数据结构进行过详细的介绍。因此,为了介绍得足够清楚,本文会比这个系列的其它几篇花费更多的篇幅。我们...

2019-05-04 19:12:57 20141

原创 Redis内部数据结构详解(1)——dict

dict是一个用于维护key和value映射关系的数据结构,与很多语言中的Map或dictionary类似。Redis的一个database中所有key到value的映射,就是使用一个dict来维护的。不过,这只是它在Redis中的一个用途而已,它在Redis中被使用的地方还有很多。比如,一个Redis hash结构,当它的field较多时,便会采用dict来存储。再比如,Redis配合使用dic...

2019-05-04 18:52:40 23119

原创 Redis 高级技术点解析

Redis 属于非关系型数据库,也被称之为 NoSQL 数据库,主要以 Key-Value 形式存储数据,是目前用得较多的一种非关系型数据库。Redis 主要有如下特点:为纯内存数据库,操作速度非常快;可以通过持久化(如 RDB、AOF)保证数据基本不丢失;数据类型丰富,常用数据类型有字符串(String)、散列(Hash)、列表(List)、集合(Set)、有序集合(Sorted se...

2019-05-03 19:32:46 20709

原创 Parallel Scavenge无法和CMS共同使用

DefNewGeneration是default new generationParNewGeneration是parallel new generation        原本HotSpot VM里没有并行GC,当时就只有NewGeneration;后来准备要加入young gen的并行GC,就把原本的NewGe...

2019-05-01 11:35:15 22169 4

原创 G1收集器

总结    G1与CMS相比,他们都立足于低停顿时间,由于目前G1测试报告较少以及商用发行时间较短,所以CMS仍然是我目前的选择,但是随着Oracle对G1的不断改进,我相信G1是最终的胜利者。如果你现在采用的收集器没有任何问题,那就没有任何理由去选择G1,如果你的应用追求低停顿,那G1可以作为一个可尝试的选择,如果你的应用追求吞吐量,那G1并不会为你带...

2019-05-01 10:39:15 20236

空空如也

空空如也

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

TA关注的人

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