![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
AAAhxz001
永远在路上
展开
-
缓存穿透和缓存击穿
一、背景介绍几乎所有互联网公司都采用缓存的方案来解决瞬时流量超高,或者长期流量过高的问题。但使用缓存存在风险——缓存穿透和缓存击穿:简单的讲就是如果该数据原本就不存在,那么就会发生缓存穿透;如果缓存内容因为各种原因失效,那么就会发生缓存击穿。具体一点来说,如果缓存中不存在需要查询的内容,一般情况下需要再深入一层进行查询,一般为不能承受压力的关系型数据库(承压能力为缓存的1%,甚至更低),如果数据库中不存在,则叫做缓存穿透;反之,如果数据库中存在这个数据,则叫做缓存击穿(如果同一时刻大量的缓存失效叫做缓存原创 2020-06-30 08:49:30 · 4628 阅读 · 0 评论 -
零散知识点汇总
1. 为什么集合不能放置基本数据类型集合的设计初衷就是存储引用的容器,而基本类型不属于对象无法引用 自然不能处理 所以jvm才设计的基本类型对应的封装类集合类有一些equals等方法,这些方法只有封装类也就是继承了Object类的类才能使用2. 锁的降级假设如果要做重量级锁与轻量级锁的降级 就需要做到当前执行线程需要计算等待线程状态、需要建立预判模型,需要存储升级重量级锁可以降级的重试次数,但是这样做还是没啥意义还是看当前线程无其它等待线程释放锁 恢复锁状态 重新升级偏向锁 锁对象数原创 2020-06-05 16:57:45 · 404 阅读 · 0 评论 -
浅析JSF
前言:博主作为实习生已经入职JD一个星期,一下是我对公司JSF架构的一些理解,PS借鉴李鑫前辈的PPT1. 传统微服务不足之处客户端:大量逻辑放到了客户端带来的版本更新问题zookpeer的watch机制问题注册中心zookpeer作为注册中心一些功能收到限制,拓展受限‘服务治理缺乏流量控制手段,大量流量打到线程池更改配置需要重启缺乏监控机制2....原创 2020-05-08 14:08:24 · 677 阅读 · 1 评论 -
Java并发学习(持续更新中)
1. 多线程下的一些问题1.1 多线程就一定快吗?答案是不一定。首先我我们知道,多线程当线程数使用不当会存在比较大的风险,比如,甚至性能不如单线程,这其中一个重要的原因就是:上下文切换。上下文切换的代价是高昂的,因为在核心上交换线程会花费很多时间。上下文切换的延迟取决于不同的因素,大概在在 50 到 100 纳秒之间。考虑到硬件平均在每个核心上每纳秒执行 12 条指令,那么一次...原创 2020-04-20 14:50:04 · 310 阅读 · 0 评论 -
面试必问的HashMap你知道多少?
目录HashMap:1.为什么是链表+红黑树?2. 为什么不一开始就使用红黑树?2月15日补充,面试问到了为什么要无符号右移16位2月23日补充:为什么用红黑树不用B+树?2月22日补充:说一下hashCode()?3月17补充:红黑树为什么节点非黑即红?一些重要参数:3. 为什么负载因子(扩容因子)是0.75?4. 为什么会选择8作为阈值?5. 为什么16是默认起始容量?6. 为什么hashma...原创 2020-04-20 14:44:36 · 659 阅读 · 0 评论 -
JVM你知道多少?
文章目录前言JVM内存模型1. 程序计数器(记录当前线程)2. Java栈(虚拟机栈)3. 本地方法栈4. 堆5.方法区6.直接内存JVM垃圾回收垃圾判断标准1. 引用计数法2. 可达性分析算法(根索法)圾回收算法1. 标记清除2. 复制算法3. 标记整理4.分代回收GC垃圾回收器1. Serial 垃圾收集器(单线程、复制算法) (新生代)2. ParNew 垃圾收集器(Serial+多...原创 2020-04-19 11:30:33 · 520 阅读 · 0 评论 -
类加载机制你了解多少?
文章目录前言1. 类加载机制1.1 加载1.2 验证1.3 准备1.4 解析1.5 初始化1.5.2 为什么静态方法不能调用非静态方法1.6 使用1.7 拆卸2. 类加载器2.1 类加载器种类2.1.1 Java虚拟机自带的类加载器2.1.2 用户自定义的类加载器2.2 双亲委派机制2.2.1 为什么要有双亲委派机制2.2.2 可不可以自定义一个String/Object类?2.3 破坏双亲委派2...原创 2020-04-19 11:27:29 · 481 阅读 · 0 评论 -
深入浅出Java锁
目录前言1. 锁类型2. 悲观锁VS乐观锁2.1 悲观锁代表Synchronize关键字2.1.1. Synchronize关键字实现方法2.2乐观锁代表CAS操作:2.2.1. CAS带来的ABA问题:2.2.2. CAS带来的循环时间长开销大问题2.2.3. CAS带来的只能保证一个共享变量的原子操作问题。2.2.4. CAS是如何保证原子操作的2.2.5. 引申出来的问题: AtomticX...原创 2020-03-12 20:29:25 · 786 阅读 · 0 评论 -
深入浅出Java多线程
文章目录线程1.1 线程与进程的区别1.2 线程的状态1.3 Notify 和 wait :1.4 Thread.sleep() 和Thread.yield()的异同1.5 补充:死锁的概念1.6 补充:并发和并行的区别1.7 补充:线程安全三要素1.8 补充:如何实现线程安全1.9 补充:保证线程安全的机制:多线程2 创建线程的方法2.1 线程池创建线程2.2 ThreadPoolExecuto...原创 2020-02-24 17:30:34 · 1732 阅读 · 2 评论 -
双非硬闯阿里之路之阿里钉钉面经(一)
面试官人特好面试官人特好面试官人特好上来,面试官自我介绍,介绍了一下团队巴拉巴拉,我其实一个字没听进去…让我自我介绍,首先声明一下我是双非渣本,看到群里那些浙大、同济、北京科大的同学自己心里打了多少次退堂鼓,但还是鼓起勇气投了简历我是从大二开始一直跟着我们一个老师做开发,学校里的一些应用都是从我们团队里面出去的像什么在线请销假、最近的疫情签到是老师带着我们做出来的,面试官大概率因为这...原创 2020-02-24 17:27:37 · 2352 阅读 · 0 评论 -
实战高并发nginx+redis+tomcat8.5实现负载均衡和session共享 42/100
目录前言1. nginx配置2. tomcat集群搭建方式3. redis4. 后续,SQL语句的优化前言新型冠状病毒泛滥,至今已有1w+同胞感染,在此深刻祝福他们早日康复。学校依托易班APP展开了线上签到的web应用,思路很简单,没有什么复杂的,但是要命的不是代码,而是并发,学校共有4w人,可能是大家在家比较闲,流量高峰时期学校分配的土豆服务器会崩掉,在此我参考前辈们的做法,决定用ngin...原创 2020-02-02 20:06:42 · 652 阅读 · 1 评论 -
Jmeter单机测试spring boot高并发实战
环境:spring boot2.0(redis+Druid)+Jmeter+jdk1.8+myexlipse高并发:单机环境下能充分利用cpu和io设备的综合利用率就算是高并发。比如4核8G机器单机(我的笔记本)一般1000QPS等。比如吞吐量与响应时间达到平衡。性能测试中不只关注并发数,尤其是单接口性能测试的时候,更多关注吞吐量、响应时间等指标来评估服务端性能。奔着这个目标,开始测试首先在...原创 2019-12-07 17:55:28 · 4287 阅读 · 0 评论 -
pagehelper源码分析
pagehelper不用说,只要是用过的就会爱上他!Maven依赖: <!-- 分页 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId&...原创 2019-12-05 20:00:49 · 229 阅读 · 0 评论 -
Markdown编辑后的文本转换为HTML(个人博客代码展示)
在使用Markdown编辑器时,编辑出来的富文本不能够直接对html页面直接使用,需要改变一下:首先需要加一下pom依赖: <!--markdown处理转html --> <dependency> <groupId>com.atlassian.commonmark</groupId> <artifactId>com...原创 2019-12-03 10:38:09 · 1444 阅读 · 0 评论 -
第一个MapReduce测试程序
实验环境:centos7,Hadoop1.2,jdk1.6,VMware Workstation Pro启动Hadoop:start-all.sh看到有5个进程启动了就表示配置成功了。这5各进程分别是: namenode、datanode、secondarynamenode、jobstracker、tasktracker。 可以使用命令:jps来查看进程的使用情况。如果出现这种情况,就说明启...原创 2019-11-29 18:25:32 · 758 阅读 · 0 评论 -
spring连载(四)(spring bean生命周期)
Spring Bean 的生命周期简单易懂。在一个 bean 实例被初始化时,需要执行一系列的初始化操作以达到可用的状态。同样的,当一个 bean 不在被调用时需要进行相关的析构操作,并从 bean 容器中移除。Spring bean factory 负责管理在 spring 容器中被创建的bean 的生命周期。Bean 的生命周期由两组回调(call back)方法组成。初始化之后调用的回...原创 2019-11-28 22:29:47 · 201 阅读 · 0 评论 -
一天一个java知识(new String并输出它发生了什么)
下面的语句你可能很熟悉String name=new String("HXZ");System.out.println(name+"is my name");但是你知道new一个string并输出他发生了那些步骤吗:生成新的字符串 new String(STR_1);复制该字符串;加载字符串常量"HXZ"(STR_2);调用字符串的构架器(Constructor);保存该字符串...原创 2019-11-27 09:22:37 · 540 阅读 · 0 评论 -
阿里代码规范研读(二)(常量定义 )
不允许任何魔法值(即未经定义的常量)直接出现在代码中。 反例:String key = "Id#taobao_" + tradeId; cache.put(key, value);long 或者 Long 初始赋值时,使用大写的 L,不能是小写的 l,小写容易跟数字 1 混 淆,造成误解。 说明:Long a = 2l;写的是数字的 21,还是 Long 型的 2?不要使用一个常量类维护所...原创 2019-11-26 21:05:20 · 706 阅读 · 0 评论 -
一天一个java知识(Spring 支持的几种 bean 的作用域)
Spring 框架支持以下五种 bean 的作用域:singleton : bean 在每个 Spring ioc 容器中只有一个实 例。prototype:一个 bean 的定义可以有多个实例。request:每次 http 请求都会创建一个 bean,该作用 域仅在基于 web 的 Spring ApplicationContext 情形下 有效。session:在一个...原创 2019-11-26 20:56:56 · 177 阅读 · 0 评论 -
spring boot2.0+mybatis三表联查
明天计算机组成原理考试,然而还是想码一会儿pom依赖不再列出,太长了application.properties文件配置:mybatis.mapper-locations=classpath:mapper/*.xmlmybatis.config-location=classpath\:mybatis/sqlMapConfig.xmlmybatis配置文件:<?xml...原创 2019-11-25 19:44:35 · 1143 阅读 · 0 评论 -
spring boot@Configuration注解失效问题
从网上选择了一大堆redis配置类,但是均得不到有效解决所以我在想是不是Configuration注解失效尝试性在启动类中加入:@ComponentScan(basePackages = { “2com.hxz.config”})启动后,刷新数据库:注解生效!...原创 2019-11-23 16:04:20 · 15813 阅读 · 1 评论 -
一天一个java知识(深入理解map)
也许你对这样一行代码不陌生:Map<K, V> map = new HashMap<K, V>()但是你了解java map吗?这是一张java集合图,里面包含了所有常见的集合其中Map:Map是一种从键映射到值的结构,存储键值对,其中key都是唯一的不允许重复,而值可以重复。实现Map的子类有很多:HashMap、TreeMap、LinkedMap等。虽然实现了...原创 2019-11-21 19:35:48 · 199 阅读 · 0 评论 -
spring boot+thymeleaf+ajax实现登录验证
pom依赖我就不列出来了,太长了controller层@RequestMapping("/checklogin") @ApiOperation("登录校验") // 注解:应用在 controller 里面的方法上,用于swagger @ResponseBody public Map<String, Object> checklogin(@Param("username"...原创 2019-11-20 20:26:43 · 1660 阅读 · 1 评论 -
一天一个java知识(深入了解LinkedList和ArrayList区别)
早在大二java基础课程上,便有一些深入的了解,list会继承两个接口:LinkedListArrayList那么这两者有什么异同呢首先是代码测试:import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import bean.Answer;import bean.User;...原创 2019-11-20 09:40:04 · 595 阅读 · 1 评论 -
spring连载(三)(面向切面编程 AOP)
面向切面的编程( AOP), 是一种编程技术,允许程序 模块化横向切割关注点,或横切典型的责任划分,最典型的就是日志和事务管理Aspect 切面AOP 核心就是切面,它将多个类的通用行为封装成可重 用的模块,该模块含有一组 API 提供横切功能。比如, 一个日志模块可以被称作日志的 AOP 切面。根据需求的 不同,一个应用程序可以有若干切面。在 Spring AOP 中,切面通过带有@Asp...原创 2019-11-20 08:34:16 · 199 阅读 · 0 评论 -
一天一个java知识(preparedStatement和Statement的区别)
老早之前用servlet开发时,就遇到过preparedStatement和Statement当时还傻傻分不清楚,问学长这两个是什么,有什么区别,当时学长就回答了一句咱们用preparedStatement,不用后者,后者太古老,今天重新温习一下:1,首先是效率:预编译会话比普通会话对象,数据库系统不会对相同的sql语句不会再次编译,preparedStatement是经过预编译的,也叫JDBC...原创 2019-11-19 09:29:57 · 216 阅读 · 0 评论 -
spring 连载(二)常用注解装配
@Required 注 解这 个 注 解 表 明 bean 的 属 性 必 须 在 配 置 的 时 候 设 置 , 通过 一 个 bean 定 义 的 显 式 的 属 性 值 或 通 过 自 动 装 配 , 若@Required 注 解 的 bean 属 性 未 被 设 置 , 容 器 将 抛 出BeanInitializationException。@Autowired 注 解@A...原创 2019-11-19 09:18:44 · 91 阅读 · 0 评论 -
一天一个java知识(get和post方法的区别)
1,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求2,Get是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改3,Get请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中...原创 2019-11-18 12:32:23 · 547 阅读 · 0 评论 -
spring连载(一)(spring 几种配置方式)
从今天开始连载spring,伟大的csdn请监督我!三种配置方式基于 XML 的配置基于注解的配置基于 Java 的配置(1)xml配置:在 Spring 框架中,依赖和服务需要在专门的配置文件来实 现,我常用的 XML 格式的配置文件。这些配置文件的格式通 常用开头,然后一系列的 bean 定义和专门的应用配置选项组成。SpringXML 配置的主要目的时候是使所有的 Sprin...原创 2019-11-18 12:27:12 · 244 阅读 · 0 评论 -
SpringBoot整合拦截器
1. 创建模拟登录拦截器,验证请求是否有token参数@Slf4j@Componentpublic class LoginIntercept implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object ha...原创 2019-11-16 10:50:26 · 90 阅读 · 0 评论 -
一天一个java知识(jsp内置对象)
JSP共有以下9个内置的对象:1,request 用户端请求,此请求会包含来自GET/POST等method的请求的参数2,response 网页传回用户端的回应3,pageContext 网页的属性是在这里管理4,session 与请求有关的会话期5,application servlet 正在执行的内容6,out 用来传送回应的输出7,config servlet的构架部件8...原创 2019-11-16 10:03:31 · 92 阅读 · 0 评论 -
一天一个java知识(Servlet的生命周期)
Servlet有良好的生存期的定义,包括加载和1.实例化2.初始化3.处理请求以及4.服务结束。这个生存期由javax.servlet.Servlet接口的init(初始化),service(服务)和destroy(销毁)方法表达,即servlet从生到被销毁经历上述四个阶段Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行...原创 2019-11-15 20:42:15 · 85 阅读 · 0 评论 -
一天一个java知识(堆和栈的区别)
JVM 中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局部变量,而对象总是在堆上分配。栈通常都比堆小,也不会在多个线程之间共享,而堆被整个 JVM 的所有线程共享。栈:在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空...原创 2019-11-13 22:01:20 · 102 阅读 · 0 评论 -
解决Maven无法下载fastdfs-client-java依赖
下载fastdfs出现错误?!这可怎么办?解决办法如下:1.下载fastdfs-client-java开发工具包我这里用git直接克隆的,比较快下载之后你会发现这里是没有所需要的jar包的,怎么办?2.把fastdfs-client-java开发工具包打包到本地的Maven仓库cmd下进入下载路径然后输入:mvn clean install最后出现build succes...原创 2019-11-13 14:47:09 · 1682 阅读 · 1 评论 -
SpringBoot2.0整合Fastdfs
1.引入FastDfs依赖<dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.26.2</version></dependency>...原创 2019-11-13 09:08:33 · 159 阅读 · 0 评论 -
一天一个java知识(final, finally, finalize的区别)
final用于声明属性,方法和类,分别表示类或者属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。finally是异常处理语句结构的一部分,表示总是执行。经常在try|catch之后,表示无论被try|catch包围的方法无论是否正确,finally所在的语句一定会执行finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收...原创 2019-11-12 21:37:54 · 104 阅读 · 0 评论 -
spring boot常见错误
课设进行到末尾,使用过程中遇到了一些错误,这里记录一下Failed to start component [Connector[HTTP/1.1-80]]::端口被占用,yml配置文件更改端口CLIENT_PLUGIN_AUTH is required] with root cause :MySQL版本问题,pom更改版本依赖useUnicode=true&characterEnc...原创 2019-11-12 21:15:18 · 198 阅读 · 0 评论 -
一天一个java知识(&和&&的区别)
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str!= null&& !str.equals(s))表达式,当str为...原创 2019-11-08 12:26:47 · 161 阅读 · 0 评论 -
一天一个java知识(Integer与int的区别)
int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。例如:要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在古老的JSP开发中,Integer的默认为null,所以用...原创 2019-11-07 21:20:57 · 150 阅读 · 0 评论 -
thymeleaf引入静态文件
项目文件在此,static为静态文件放置位置,templates为HTML页面存放位置引用实例:<script th:src="@{//cdn.bootcss.com/jquery/2.2.3/jquery.min.js}"></script><script th:src="@{/jantent/assets/js/amazeui.min.js}">&...原创 2019-11-07 16:56:03 · 1319 阅读 · 0 评论