- 博客(46)
- 资源 (10)
- 收藏
- 关注
原创 如何回答join到底释不释放锁?
面试官:请问join方法释放锁吗?求职者:......这个问题在面试中算是个中级问题,如果你没有深入了解join阻塞的机制,那么你很难完美地回答这个问题,OK,进入正题!对,就是这样,面试官的意思是在一段synchronized代码段内,调用join,是否会释放锁?
2022-10-02 00:42:18 656
原创 面试官必看的线程池核心细节
1、线程池提供一个Set集合属性worker用来缓存所谓的线程(其实是线程的一个包装);2、线程池提供一个workQueue队列用来保存任务;3、线程包装类Worker也是一个任务类,线程通过Worker不停地执行任务并扫描队列;4、通过阻塞队列的poll和take方法获取任务,以此让非核心线程在取不到任务后消亡,让核心线程在取不到任务后等待;——这种说法是为了便于理解,实际上并没有严格区分核心与非核心线程,仅仅是以线程数量判断。
2021-11-05 00:15:15 262
转载 fastjson到底做错了什么?为什么会被频繁爆出漏洞?
fastjson大家一定都不陌生,这是阿里巴巴的开源一个JSON解析库,通常被用于将Java Bean和JSON 字符串之间进行转换。前段时间,fastjson被爆出过多次存在漏洞,很多文章报道了这件事儿,并且给出了升级建议。但是作为一个开发者,我更关注的是他为什么会频繁被爆漏洞?于是我带着疑惑,去看了下fastjson的releaseNote以及部分源代码。最终发现,这其实和fastjson中的一个AutoType特性有关。从2019年7月份发布的v1.2.59一直到2020年6月份发布的
2021-04-12 16:08:19 790
原创 Spring三级缓存的执行细节
都知道spring解决循环依赖问题,是通过三级缓存模式一级缓存:存储可以用的bean,Map<String, Object> singletonObjects二级缓存:存储bean的实例化对象,该对象还没有完全初始化好,Map<String, Object> earlySingletonObjects三级缓存:存储生成bean的工厂,Map<String, ObjectFactory<?>> singletonFactories...
2021-03-17 23:58:30 888 10
原创 关于SaaS,做一个预言家!
想写这个话题,是因为突然翻到一片乎文:如何向小白解释什么是 SaaS?https://www.zhihu.com/question/35087138于是乎简单回顾一下我对SaaS的认知!SaaS(Software as a Service)软件即服务,其实就是云服务啦!简单来说,它是一种通过互联网向客户提供软件服务的模式,厂商将自己开发的应用软件部署在自己的服务器上,客户呢,根据自己...
2020-03-25 00:15:32 233
原创 Spring源码分析之——从component-scan看注解的运用
前言注解是的作用是实现某种功能的,一般情况下,注解被用作标注一类事物,扩展一种功能;1,标注一类事务很好理解,比如Spring Bean,当一个Pojo被@Component,@Service,@Repository等修饰的时候,它就表示是一个Spring Bean,在Spring初始化的时候就会被Spring容器初始化和管理;因为注解本身就是接口,而接口的核心作用就是启到标注一类...
2020-02-29 02:38:34 442
原创 并发编程之——AQS原理和阻塞队列变化
1、AQS简介2、源码分析2.1 线程阻塞2.2 线程唤醒1、AQS简介AQS全名:AbstractQueuedSynchronizer,它就是Java的一个抽象类,它的出现是为了解决多线程竞争共享资源而引发的安全问题,细致点说AQS具备一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用CLH队列锁实现的,即将暂时获取不到锁的线程加入到队列中,队列是双向队列。常用...
2020-02-02 13:20:53 3126
原创 并发编程之——ThreadLocal的作用与实现原理
前言最近项目出了个问题,涉及到ThreadLocal,所以抽时间把这个知识点理一下,以一种更容易理解的方式。不过仔细研究才发现这玩意涉及到的东西真不少,本篇只做概要讲解。ThreadLocal简介直接翻译叫线程本地,但是ThreadLocal压根就不是线程本地属性,线程本地属性叫threadLocals,threadLocals通过存储键值对的方式存储线程私有数据(通常是业务对象...
2020-01-25 01:04:06 683
原创 Spring MVC源码分析之——从Tomcat到Spring BeanFactory
Spring MVC的初始化逻辑分这么几步:1、Tomcat扫描监听,就是扫描web.xml中配置的Spring监听; <!--配置spring listener--> <listener> <listener-class>org.springframework.web.context.ContextLoaderList...
2020-01-22 16:24:39 273
原创 dubbo源码解析之——原理入门
概述该了解dubbo哪些基本知识?首先,根据官网介绍,Apache Dubbo™ 是一款高性能Java RPC框架,所谓RPC框架,就是指一台服务器可以像调用本地对象一样调用另一台服务器上对应的方法。这就是RPC,而dubbo只是其中的一种。像RMI,gRPC(Google),Motan都属于RPC框架。官方背景介绍:http://dubbo.apache.org/zh-cn/docs...
2020-01-19 17:48:51 249
原创 Spring源码分析之——AOP动态代理的选择
上一篇《Spring源码分析之——AOP的原理及初始化细节》讲到AOP的原理和细节,这一篇补充一下动态代理的选择代码细节。我们知道动态代理分两种,JDK动态代理和Cglib动态代理,那么Spring选用的哪个呢?右半部分可以看到AopProxy下面有Cglib和JDK两种,至于创建哪种,是左边工厂DefaultAopProxyFactory负责创建的,带着这个图看源码。1、后置处...
2020-01-16 00:48:05 931
原创 Spring源码分析之——getBean细节
先看一下调用图,方便后面看代码@Testpublic void testGetBean() { // 业务代码 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-bean.xml"); XXXX xxxx = applicationContex...
2020-01-03 21:26:46 648
原创 Spring源码分析之—— Bean的实例化和依赖注入细节
本文探讨注解方式的Bean实例化和属性注入,像构造器和setter方式,大体差不多,先做个大概介绍:构造器方式,解析XML,用BeanDefinition存储构造信息,包含哪些属性作为构造器的参数,到时候一并构造; setter方式,解析XML,用BeanDefinition存储PropertyValues,在Bean实例化后通过set方式进行注入; 注解方式,首先要开启注解功能,注入是通...
2020-01-03 21:24:15 590
原创 Spring源码分析之——AOP的原理及初始化细节
废话不多说!!!!!!AOP 是 Aspect Oriented Programming 的缩写,译为面向切向编程。原理:Spring AOP的底层源码是基于动态代理和拦截器模式。对拦截器有疑问的可以看:设计模式之——拦截器模式为什么要动态代理?——答:因为业务类本身是不会主动调用切面逻辑(避免耦合),所以业务类必须被代理,由代理类负责调用业务类,并且调用切面;Spring ...
2020-01-03 17:58:25 1546
原创 MyBatis源码解析之——初始化细节
先说下大体思路,Spring整合Mybatis,在Spring的初始化链中主要有以下几个重要步骤:1、obtainFreshBeanFactory方法负责解析MyBatis的服务层Bean,即:ServiceBean,因为这些ServiceBean是通过注解@Service声明的,通常会在ServiceBean中注入XxxMapper。——这是Spring的正常操作,本文就不贴代码了。2、...
2019-12-31 15:55:19 427
原创 设计模式之——拦截器模式
拦截器模式应用非常广泛,适用场景一般在框架代码中的固定业务逻辑,这部分逻辑通常不会变化,比如:服务调用的拦截处理,拦截服务的参数,参数国际化处理,拦截服务的异常,记录服务的调用结果等等。之所以要讲这个,是因为后面讲SpringAOP的时候会参考到!拦截器模式有三个重要的元素:调度器,拦截器,业务逻辑,只要充分理解这三个元素,拦截器模式就很简单了。 调度器 一个业务逻辑可以有N...
2019-12-30 00:31:55 5907 2
转载 什么是费曼技巧?
作者:简道云链接:https://www.zhihu.com/question/20585936/answer/750552257来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。讲点有意思的。有人问爱因斯坦:“相对论到底是什么?”爱因斯坦回答:“你坐在美女身边一小时,感觉就像一分钟,而夏天你在火炉旁坐上一分钟,感觉就像一小时,这就是相对论!这就...
2019-12-22 23:46:58 619
原创 Druid数据库连接池入门(一)
Druid连接池号称是为了监控而生的连接池,监控很重要,但像Druid这么过分的监控,我真是有点蒙圈,感觉稍微有点过度设计的味道。先来看下Druid连接池对象的关系:简单来说,数据源对象持有一个数组connections,数组存储的对象是DruidConnectionHolder,线程每次取连接的时候,都是先从connections数组中取最后一个连接,然后组装成DruidPooled...
2019-12-16 18:26:34 1134
原创 Java线程池是如何保证核心线程不被销毁的!
首先看一下线程被销毁的代码:// 当线程获取不到tasks, 就调用processWorkerExit方法, 处理线程退出 private void processWorkerExit(Worker w, boolean completedAbruptly) { if (completedAbruptly) // If abrupt, then workerCount...
2019-11-22 17:32:45 2632 2
转载 Eureka与ZooKeeper 的比较(转)
著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。在此Zookeeper保证的是CP, 而Eureka则是AP。 Eureka的优势(AP) 1、在Eureka平台中,如果某台服务器宕机,Eureka不会有类似于ZooKeeper的选举leader的过程;客户端请求...
2019-05-31 00:49:06 187
原创 一文吃透动态代理!
JDK动态代理先写一个JDK动态代理,一个演员需要有经纪人,我们把演员当成被代理类,经纪人当成代理类演员类Actor.java:package com.lw.designpattern.proxy.dynamic;public class Actor { public void act() { System.out.println("某毯星戛纳走红毯");...
2019-05-25 11:39:14 364 1
原创 详解String intern方法
一,弄清楚String对象的特点:不可变的(final);二,弄清楚+号和StringBuilder:+号操作分n种情况,但只有一种情况等同于直接字符串,那就是常量值相加,像这样:String str = "abc" + 123; 等同于String str = "abc123";String str = "abc" + "def"; 等同于String str = "abc...
2019-04-15 00:01:04 815
原创 volatile是怎么保障内存可见性以及防止指令重排序的?
1、内存可见性首先,要明确一下这个内存的含义,内存包括共享主存和高速缓存(工作内存),Volatile关键字标识的变量,是指CPU从缓存读取数据时,要判断数据是否有效,如果缓存没有数据,则再从主存读取,主存就不存在是否有效的说法了。而内存一致性协议也是针对缓存的协议。内存可见性意思是一个CPU核心对数据的修改,对其他CPU核心立即可见,这句话拆开了理解:1)、CPU修改数据,首先是对工...
2018-10-18 23:49:19 7400 5
转载 深入理解JDBC的超时设置
原文地址:https://www.cubrid.org/blog/understanding-jdbc-internals-and-timeout-configuration<!-- -->恰当的JDBC超时设置能够有效地减少服务失效的时间。本文将对数据库的各种超时设置及其设置方法做介绍。深入理解JDBC的超时设置在遭到DDos攻击后,整个服务都垮掉了。由于第四层交换机不堪重负,网络变...
2018-03-06 17:47:25 21615 1
转载 带缓冲I/O 和不带缓冲I/O的区别与联系
首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用。系统内核对磁盘的读写都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write函数对其写数据时,直接调用系统调用,将数据写入到块缓冲进行排队,当块缓冲达到一定的量时,才会把数据写入磁盘。因此所谓的不带缓冲的I/O是指进程不提供缓冲功能(但内核还是提供缓冲的)。每调用一次write或re
2017-12-27 14:43:48 279
转载 负数在计算机中怎样存储
一、什么是原码、反码、补码?分为:正数 和负数(包括正浮点数,和负浮点数)规定最高位位符号位正数为0,负数为1(原因下文解释)原码:10进制转换成2进制是原码,只不过正数的原码是本身符号位为0,负数的原码符号位为1(以下篇幅均以单字节为例:10进制1的原码是0000 0001,10进制-1的原码是1000 0001)。反码: 正数的反码是本身,负数的反码是负数的原码
2017-12-13 10:29:40 1678
转载 在UTF-8中,一个汉字为什么需要三个字节?
UNICODE是万能编码,包含了所有符号的编码,它规定了所有符号在计算机底层的二进制的表示顺序。有关Unicode为什么会出现就不叙述了。 Unicode是针对所有计算机的使用者定义一套统一的编码规范,这样计算机使用者就避免了编码转换的问题。 Unicode定义了所有符号的二进制形式,也就是符号如何在计算机内部存储的,而且每个符号规定都必须使用两个字节来表示,也就是用16位二进
2017-12-07 14:21:33 11591 3
转载 Wireshark抓包示范:TCP三次握手建立连接和四次握手断开连接
披萨大叔的博客 http://blog.csdn.net/qq_27258799/article/details/51379508 以下内容来自网络资源整合,仅供自己记录,日后查看方便。首先介绍Wireshark抓包工具,它长这样:下面我们要设置过滤规则:按如下设置,主要设置:1、需要监控的网卡;2、过滤规则(图示是“
2017-11-20 09:19:41 1058
原创 一、python爬虫程序入门(图片下载)
http://www.duitang.com/search/?kw=%E6%96%87%E8%B1%AA%E9%87%8E%E7%8A%AC&type=feed#!s-p1这个url下面的图片具备这样的规律:a target="_blank" class="a" href="/blog/?id=728506209">——见红色字体#!/usr/bin/p
2017-10-25 11:08:41 508
原创 好好理解Javascript的NaN!
NaN(not a number)字面意思就是“非数字”,但这种叫法不准确或者说有歧义,因为typeof(NaN)=number,所以NaN本身是number类型。我觉得应该把NaN称为:不等于任何一个数字的数字,而不是说它不是数字,当然也包括它自己,NaN==NaN是返回false的。举个栗子:有三个人,李雷,Lucy,以及不是张三(注意:这里说的不是张三就是第三个人
2017-03-24 15:37:05 354
转载 java native方法及JNI实例
http://blog.csdn.net/xw13106209/article/details/6989415
2017-03-15 09:38:32 251
转载 Java虚拟机类加载机制
http://geek.csdn.net/news/detail/131301看到这个题目,很多人会觉得我写我的java代码,至于类,JVM爱怎么加载就怎么加载,博主有很长一段时间也是这么认为的。随着编程经验的日积月累,越来越感觉到了解虚拟机相关要领的重要性。闲话不多说,老规矩,先来一段代码吊吊胃口。public class SSClass{ static {
2016-12-28 09:25:40 288
转载 Log日志等级控制
日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。 日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j API (http://jakarta.apache.org/log4j/d
2011-08-05 20:35:25 17195 1
转载 "Parser Error Message: Access is denied: Source Error: Line 198: "
Hi,One of the stunning errors you may get while trying to browse your page isDescription: An error occurred during the processing of a configuration file required to service this request. Please revie
2011-06-29 21:19:00 952
原创 浅析IE弹出窗口之session的控制
<br />最近碰到一个问题,在showModalDialog打开的模态窗口中,再open一个新窗口,会出现session丢失。<br /> <br />原因:在模态窗口中使用open,IE默认这是一个新窗口,会重新开启session,所以新窗口取不到父窗口的session对象。<br /> <br />根据微软给出的解决方案,是将最初的非模态窗口的window对象传递给模态串口,在用这个window对象来open新窗口。<br /> <br />可以做个简单的测试一下:<br />a.asp -- 原始窗
2010-11-19 21:48:00 3413
原创 无缝滚动插件版,欢迎拍砖!
最近闲的蛋疼,于是乎就做点立竿见影的事儿,欢迎拍砖,欢迎拍砖! <html><head> <title>Jquery实现无缝滚动</title> <link type="text/css" rel="stylesheet" href="style.css"/> &
2010-06-28 15:44:22 138
原创 Web服务入门之三:通过XFire调用远程Web Service,实现QQ在线服务功能
<br /> 通过一段时间对Web Service的使用,还是发现了Web Service并不像之前想象的那样。毕竟程序也是人写的,思想可以完美,但实现起来却无法达到那样的境界。<br /> 两个月以前就说过要写XFire调用远程WEB Service的程序,这中间也试着写过,总是出问题。我的总结是,XFire在调用远程.NET的Web Service的时候还是存在问题,或者说在使用的时候并不是那么的顺手。如下面代码中写的,test1方法在调用的时候是存在问题的,而test2却可以正常调
2010-06-09 19:18:00 4758 1
hsdis-amd64.zip
2019-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人