- 博客(1953)
- 资源 (24)
- 收藏
- 关注
转载 [小项目]-netty实现聊天功能
Netty是一个Java的NIO客户端服务端框架可以快速的开发网络应用程序,比如客户端和服务端的协议,大大简化了网络程序的开发过程。我们知道Netty的整体架构主要由3部分组成:缓冲(buffer)、通道(channel)、事件模型(event model)。所有的高级也行都构建于这三个组件之上。下面我们基于这个架构实现一个简单的网络聊天功能。 1.环境: JDK 7 Maven3 Netty 4.1 IDEA14 2.服务端 服务端的handler netty的所有IO处理都是基于事件驱.
2020-11-18 20:57:08
810
2
转载 再过半小时,你就能明白kafka的工作原理了
为什么需要消息队列 周末无聊刷着手机,某宝网APP突然蹦出来一条消息“为了回馈老客户,女朋友买一送一,活动仅限今天!”。买一送一还有这种好事,那我可不能错过!忍不住立马点了去。于是选了两个最新款,下单、支付一气呵成!满足的躺在床上,想着马上有女朋友了,竟然幸福的失眠了…… 第二天正常上着班,突然接到快递小哥的电话: 小哥:“你是xx吗?你的女朋友到了,我现在在你楼下,你来拿一下吧!”。 我:“这……我在上班呢,可以晚上送过来吗?“。 小哥:“晚上可不行哦,晚上我也下班了呢!”。 于
2020-11-18 20:50:06
506
转载 深入理解Java中的AQS
目录 AQS概述 AQS中的独占模式 非公平锁的加锁流程 非公平锁的释放流程 回到顶部 AQS概述 AbstractQueuedSynchronizer抽象队列同步器简称AQS,它是实现同步器的基础组件,juc下面Lock的实现以及一些并发工具类就是通过AQS来实现的,这里我们通过AQS的类图先看一下大概,下面我们总结一下AQS的实现原理。先看看AQS的类图。 (1)AQS是一个通过内置的FIFO双向队列来完成线程的排队工作(内部通过结点head和tail记录队首和队尾元素,..
2020-07-28 09:49:35
732
转载 美团面试官:有没有比读写锁更快的锁?
互联网架构小马哥2020-04-01 22:00:45 面试三连 面试官:了解锁吗? 小明:了解,还经常用过。 面试官:说说synchronized 和 lock 的区别吧 小明: synchronized是可重入锁,由于lock是一个接口,重入性取决于实现, synchronized不支持中断,而lock可以。 面试官:好了,那有没有比这两种锁更快的锁呢? 小明:在读多写少的情况下,读写锁比他们的效率更高。 面试官:那有没有比读写锁更快的锁呢? 小明:。。。。。。。。。。 我靠,.
2020-06-11 09:02:36
999
2
转载 使用@Transactional遇见的问题,子方法回滚如何让父方法不回滚
老徐聊技术2019-12-16 14:49:50 项目开发中不知道大家碰没碰见过这种情况。在方法1中调用方法2(2个方法都是有事务的)。方法2出现异常要回滚,但是方法1不能回滚,并且要记录方法2抛出的异常到数据库中。看一个例子: 例子1 例子1结果 从代码中可以看出,我都加上了Transactional,但是没有一个事务生效的。2个方法的事务都没起作用。先要知道Transacti...
2020-01-02 09:46:23
10129
4
转载 面试被问怎么排查平时遇到的系统CPU飙高和频繁GC,该怎么回答?
Java之高级架构2019-10-27 16:04:48 (关联着看看这篇文章:https://blog.csdn.net/u011277123/article/details/103495338) 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行...
2019-12-30 18:03:28
1346
转载 Spring事物(@transactional注解)在什么情况下会失效,为什么?
程序员小皮2019-12-13 16:34:27 一、@transactional 的使用 1、一般在service里加@Transactional注解,不建议在接口上添加 2、加了此注解后每个业务方法执行时,都会开启一个事务,不过都是按照相同的管理机制。 3、@Transactional注解只能应用到public修饰符上,其它修饰符不起作用,但不报错。 4、默认...
2019-12-24 17:24:24
14482
4
转载 SpringBoot---WebMvcConfigurer详解
目录 1. 简介 2. WebMvcConfigurer接口 2.1 addInterceptors:拦截器 2.2addViewControllers:页面跳转 2.3addResourceHandlers:静态资源 2.4configureDefaultServletHandling:默认静态资源处理器 2.5configureViewResolvers:视图解析器...
2019-12-12 10:34:37
1106
转载 线上服务器CPU占用率高如何排查定位问题?
(关联着看看这篇文章:https://blog.csdn.net/u011277123/article/details/103768939) 解决问题的能力以超高比例排名第一,这也是为什么很多面试过程中,面试官都喜欢问如下问题: 1、你这个项目遇到的最大挑战是什么?如何解决的? 2、如果线上发生了报警你回如何排查呢? 3、你有解决过什么线上问题吗? 4、能列举几个你知道的排查Li...
2019-12-11 16:43:36
5521
1
转载 Tomcat的性能与最大并发配置
当一个进程有 500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。 当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。 具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。 操作系...
2019-12-11 16:10:16
2497
转载 从头到尾说一次 Java 垃圾回收,写得非常好
Java的小本家2019-09-13 08:46:00 什么是垃圾回收 垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。 Java 语言出来之前,大家都在拼命的写 C 或者 C++ 的程序,而此时存在一个很大的矛盾,C++ 等语言创建对象要...
2019-10-09 09:39:45
819
转载 Maven打包的三种方式
Maven可以使用mvn package指令对项目进行打包,如果使用Java-jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in xxx.jar"(没有设置Main-Class)、ClassNotFoundException(找不到依赖包)等错误。 要想jar包能直接通过java -jar xxx.jar运行,需要满足: 1、在ja...
2019-09-24 11:36:06
1524
转载 Git恢复之前版本的两种方法reset、revert(图文详解)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/yxlshk/article/details/79944535 2019/7/27 修改更新 一、问题描述 在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,...
2019-09-10 09:35:43
1321
原创 jdk1.8的日常使用
List<Long> listIds = Arrays.asList(str.split(",")).stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList()); List<Long> newSkuIdList = skuIdList.stream().distinct().s...
2019-09-06 11:10:43
832
转载 Spring切面中的正则表达式
吉林乌拉2019-08-30 09:03:22 在上一篇中我们重写StaticMethodMatcherPointcutAdvisor类的matches方法,通过方法名定义了切点,但在这种方式创建的切点有很大的弊端,不方便。因为如果目标类中有多个方法时,就不太适用了。spring为了更方便我们使用切面,于是提供了支持正则表达式的实现类RegexpMethodPointcutAdvisor类,因...
2019-09-02 12:01:04
1179
转载 减少该死的 if else 嵌套
Java的小本家2019-09-02 10:38:10 不知大家有没遇到过像“横放着的金字塔”一样的if else嵌套: 我并没夸大其词,我是真的遇到过了!嵌套6、7层,一个函数几百行,简!直!看!死!人! if else作为每种编程语言都不可或缺的条件语句,我们在编程时会大量的用到。但if else一般不建议嵌套超过三层,如果一段代码存在过多的if else嵌套,代...
2019-09-02 11:52:30
1019
转载 除了负载均衡,Nginx 还可以做很多
程序猿久一2019-09-01 15:40:37 Nginx应该是现在最火的web和反向代理服务器,没有之一。她是一款诞生于俄罗斯的高性能web服务器,尤其在高并发情况下,相较Apache,有优异的表现。 那除了负载均衡,她还有什么其他的用途呢,下面我们来看下。 一、静态代理 Nginx擅长处理静态文件,是非常好的图片、文件服务器。把所有的静态资源的放到nginx上,可以使应用动静分离,...
2019-09-02 11:42:52
1283
转载 高性能负载均衡:nginx搭建tomcat集群
楠哥教你学Java2019-09-01 11:07:08 什么是tomcat集群? 利用nginx对请求进行分流,将请求分配给不同的tomcat去处理,减少每个tomcat的负载量,提高服务器的响应速度。 目标 实现高性能负载均衡的tomcat集群。 工具 nginx-1.13.10 apache-tomcat-7.0.81 实现步骤 1、下载nginx,目...
2019-09-02 11:28:46
603
转载 微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布
在项目迭代的过程中,不可避免需要”上线“。上线对应着部署,或者重新部署;部署对应着修改;修改则意味着风险。 目前有很多用于部署的技术,有的简单,有的复杂;有的得停机,有的不需要停机即可完成部署。本文的目的就是将目前常用的布署方案做一个总结。 一、蓝绿布署 Blue/Green Deployment(蓝绿部署) 1、定义 蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK...
2019-08-29 09:40:26
904
转载 API网关在微服务架构中的应用,这一篇就够了
【原创】老顾聊技术2019-08-28 18:24:41 欢迎关注头条号:老顾聊技术 精品原创技术分享,知识的组装工 目录 前言 什么是API网关 网关优点 接口优化 中心化 负载均衡 服务熔断 灰度发布 现有网关框架 总结 前言 现在的互联网产品技术架构,如果没有上微服务架构,都感觉被同行鄙视,太low了。在微服务架构中,不同的微服务有不同的请求地址,各个微服务之...
2019-08-29 09:39:34
2120
转载 IDEA:Could not read from remote repository.的解决办法
https://blog.csdn.net/qq_1411/article/details/82876526 在idea上可以commit,Show History和Revert,但是就是不能push和pull,从网上找了相关文档,终于解决问题 在setting-->Version Control-->Git-->SSH executable设置为Native即可,如图: ...
2019-07-11 13:16:54
1035
转载 RabbitMQ:消息一致性之生产者确认
【原创】Java低级攻城猿2019-06-27 15:11:42 对于消息中间件的使用,确保业务流程正确的进行下去的前提,就是要保证消息的一致性,也就是确保消息不会丢失。引入消息中间件的目的,无非就是异步、解耦和削峰,到达这样的目的,系统之间传递的消息就负有不可推卸的责任,假如消息跑丢了,轻则影响数据的完整性,重则影响整个系统的使用,所以保证消息的一致性是使用消息中间件至关重要的前...
2019-06-28 14:26:38
2396
1
转载 列举MySQL的四种事务隔离级别
MySQL的四种事务隔离级别 本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成...
2019-06-22 09:19:16
1114
转载 数据库的七种传播方式
其实数据库的七种传播行为在网上查询了一下,和Spring中使用到的7种事务传播行为是没什么差别的,因为我写的博文基本和JAVA有相关,所以就结合Spring中事务传播和例子来讲一下咯。 事务传播行为如下: Require:支持当前事务,如果没有事务,就建一个新的,这是最常见的; Requires_New:新建事务,如果当前存在事务,把当前事务挂起; Supports:支持当前事务,如果当前...
2019-06-22 08:50:22
1324
转载 「快学springboot」SpringBoot多环境配置文件
【原创】Happyjava2019-06-18 07:01:00 往期文章 「快学Docker」Docker简介、安装和Hello World实现 「快学springboot」使用springboot实现发送邮件功能 为什么阿里Java规约手册要求谨慎使用Arrays.asList方法 面试官:说说Java中的transient关键字 「快学springboot」在springbo...
2019-06-18 15:35:50
3389
转载 zuul-redislimiter-spring-boot基于Zuul网关Filter的分布式限流
儒雅程序员2019-06-18 06:22:00 zuul-redislimiter-spring-boot 基于Zuul的限流器 快速开始 克隆, 编译,安装 git clone https://github.com/tangaiyun/zuul-redislimiter-spring-boot.git cd zuulredislimiter/zuul-redislimi...
2019-06-18 14:51:31
1400
转载 jvm 内存分配与回收策略
达升笑讲故事2019-06-17 09:00:06 内存分配策略 1、对象优先分配在新生代Eden区 多数情况下,对象分配在新生代的Eden,若Eden区域内存不够,则引发一次Minor GC 2、大对象直接进入老年代 大对象直接分配在老年代,避免新生代里出现从Eden到Survivor频繁的内存复制 可用 -XX:PretenureSizeThreshold设置,大于此值的对象直接...
2019-06-18 14:11:55
972
转载 SpringCloud使用Sentinel 代替 Hystrix
本文基于springboot-2.0.6RELEASE+cloud-F.SR2 Feign环境下:只需两步1.在原使用hystrix的模块中添加如下依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-alib...
2019-06-18 11:06:02
16436
2
转载 Spring Cloud Alibba教程:Sentinel的使用
什么是Sentinel Sentinel,中文翻译为哨兵,是为微服务提供流量控制、熔断降级的功能,它和Hystrix提供的功能一样,可以有效的解决微服务调用产生的“雪崩”效应,为微服务系统提供了稳定性的解决方案。随着Hytrxi进入了维护期,不再提供新功能,Sentinel是一个不错的替代方案。 通常情况,Hystrix采用线程池对服务的调用进行隔离,Sentinel才用了用户线程对接口进行隔...
2019-06-18 11:05:56
2283
转载 spring AOP 实现 sql注入检测
达升笑讲故事2019-06-07 09:24:47 利用spring AOP 实现 sql注入检测 什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个...
2019-06-17 17:43:58
1742
转载 Redis队列(一):基于列表的消息队列的使用Redis队列(一):基于列表的消息队列的使用
【原创】服务端开发2019-06-08 18:13:44 blpop / lpop 一、概述 在使用层面,Redis提供了用于存放字符串数据的列表这种数据类型,在数据存储容量方面,列表最多可以存放2的32次方减一个字符串元素,即大概40亿左右,不过一般不要存放这么多,否则由于数据是存放在内存中的,可能会撑爆内存。 在内部数据结构实现层面,列表主要是基于链表实现的,字符串数据按照插入顺...
2019-06-10 14:37:52
1178
转载 springboot + redis + 注解 + 拦截器 实现接口幂等性校验
Java高级互联网架构2019-06-09 19:53:33 一、概念 幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次。 比如: 订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多次回调, 必须处理重复回调 普通表单提交接口, 因为网络超时等原因多次点击提交, 只能成功一次 等等 二、常见解决方...
2019-06-10 11:25:03
1673
转载 注意这几点,轻轻松松配置 Nginx + Tomcat 的集群和负载均衡
顿悟源码2019-05-28 08:36:00 Tomcat 集群是当单台服务器达到性能瓶颈,通过横向扩展的方式提高整体系统性能的有效手段。Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,可以通过简单的配置实现 Tomcat 集群的负载均衡。 本文使用的 Tomcat 是 8.5.35 版本,Nginx 是 1.14.2 版本。接下来看下配置的过程以及可能会遇到的问题,首发...
2019-05-29 10:24:01
703
转载 拼多多后台开发面试真题:如何用Redis统计独立用户访问量
【原创】沙茶敏碎碎念2019-05-28 07:01:00 众所周至,拼多多的待遇也是高的可怕,在挖人方面也是不遗余力,对于一些工作3年的开发,稍微优秀一点的,都给到30K的Offer,当然,拼多多加班也是出名的,一周上6天班是常态,每天工作时间基本都是超过12个小时,也是相当辛苦的。废话不多说,今天我们来聊一聊拼多多的一道后台面试真题,是一道简单的架构类的题目:拼多多有数亿的用户,那么对于...
2019-05-28 17:55:00
1878
转载 降龙十八掌之 springboot整合shiro(含MD5加密)
java学习爱好者2019-05-27 16:21:00 开发环境: 1、mysql - 5.7.21 2、navicat(mysql客户端管理工具) 3、idea 2017 4、jdk9 5、tomcat 8.5 6、springboot 7、mybatis 3 8、shiro 9、maven 项目开始: 一、数据库设计: 注:数据库三张表和spring整合s...
2019-05-28 15:35:46
1077
转载 【Redis】Java面试-Redis高性能的key-value数据库整理(很全面)
半路出家程序猿2019-05-22 05:31:00 redis单点吞吐量 单点TPS达到8万/秒,QPS达到10万/秒。 redis的5中存储类型 string、list、set、map(hash)、stored-set redis的string类型 能表达3中类型:字符串、整数和浮点数。根据场景相互间自动转型,并且根据需要选取底层的承载方式 value内部以int、sds作为结...
2019-05-24 16:23:50
1413
1
转载 面试官问我注解的使用有没有踩过坑
猿天地2019-05-23 10:51:53 问题背景 很久很久前,在我还是青铜的时候(现在依旧是青铜段位)去面试,面试官问我怎么获取类,方法上的注解。 当时的我也算用过注解,顺口就回答了,用isAnnotationPresent判断是否加了注解,getAnnotation获取注解对象,然后获取注解中的值。 大致的代码是这样子的: 正在我沾沾自喜的时候,面试官又乘胜追击了,那...
2019-05-23 14:58:55
741
转载 Java的两种动态代理,你真的懂么?
BigDataKer2019-05-23 08:30:00 Spring主要有两大思想,一个是IOC,另一个就是AOP。对于Spring的核心AOP来说,AOP的原理就是java的动态代理机制来实现,所以本篇主要对java动态代理做一个简单介绍. 1、代理(Dynamic Proxy) 代理分为静态代理和动态代理,静态代理是在编译时就将接口、实现类、代理类一股脑儿全部手动完成,但...
2019-05-23 14:29:53
1158
转载 RabbitMQ在分布式系统中的应用
Python部落2019-05-19 08:10:00 (此处已添加圈子卡片,请到今日头条客户端查看) 在本文中,我们首先要来探讨一下使用分布式系统的好处,以及如何借助RabbitMQ来迁移至分布式系统。然后我们也会学习到一些RabbitMQ的基本知识,最后会结合理论知识,学习一下如何用Python编程语言跟它进行交互。 分布式系统 我们先假设一下,设想我们正在做一个电商网站。有用户下订...
2019-05-21 11:25:23
2457
转载 聊聊Java里常用的并发集合
JAVA柯尼塞克 2019-05-20 20:31:27 前言 在我们的程序开发过程中,如果涉及到多线程环境,那么对于集合框架的使用就必须更加谨慎了,因为大部分的集合类在不施加额外控制的情况下直接在并发环境中直接使用可能会出现数据不一致的问题,所以为了解决这个潜在的问题,我们要么在自己的业务逻辑中加上一些额外的控制,例如锁,或者我们直接使用Java提供的可在并发环境中使用的集合类,这是一个简...
2019-05-21 11:03:23
746
快速集成android实现listview的字母A-Z排序,界面侧边字母索引
2016-08-10
graphviz-2.38与PlantUML结合使用
2017-12-28
kafkatool_64bit (1).zip
2020-03-21
redis+session共享
2018-02-24
solr分词器
2017-09-25
存储过程调试工具
2018-06-14
jdk-8u231-windows-x64.7z
2020-04-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅