yangzhiwen911 / hexo.github.io Goto Github PK
View Code? Open in Web Editor NEW个人博客
Home Page: https://hexo.github.io
个人博客
Home Page: https://hexo.github.io
概述最近看了一本Java并发编程之美,里面对并发编程需要注意的点、常见并发类原理、各种锁之间的区别以及源码解读和实例代码等等讲解的都非常的详细,真正的好书,看到11.2小节Tomcat的NioEndPoint中ConcurrentlinkedQueue的使用的时候,里面对Tomcat容器结构的分析,我觉得非常有必要单独拿出来好好分享一下。刷新了自己对于Tomcat的认识。于是有了下面这个容器结构图
https://yangzhiwen911.github.io/2019/02/09/Tengine/#more
Tengine简介Tengine 作为淘宝Web服务器,是基于nginx的进行了订制开发和扩展,也解决了Nginx中upstream无法检查代理后端存活等众多不灵活的问题,本人正是由于此需求了解到了Tengine,并且完成了安装测试调试等一系列问题,最终部署生产应用。
概述众所周知,Redis是基于内存的单线程的缓存应用,Redis的服务端与客户端之间的通信采用了一种名为 RESP(REdis Serialization Protocol)的协议,而RESP底层采用的是TCP的连接方式(Socket),通过TCP进行数据传输,然后根据解析规则解析相应信息,完成交互。那么如果要从MySql中直接导入数据,也是可以做到的,原理则是组装RESP协议格式的数据即可。
https://yangzhiwen911.github.io/2019/02/28/Spring-MVC%E6%89%A7%E8%A1%8C%E6%B5%81%E7%A8%8B/#more
概述SpringMVC是一个MVC的开源框架,SpringMVC就相当于是Struts2加上Spring的整合,SpringMVC是Spring的一个后续产品,是在Spring在原有基础上,又提供了web应用的MVC模块,可以简单的把SpringMVC理解为是Spring的一个模块(类似AOP,IOC这样的模块)。
https://yangzhiwen911.github.io/2018/12/24/new-Day/#more
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。正常来说,不需要部署到我们的服务器上,我们的服务器上保存的,其实是基于在hexo通过markdown编写的文章,然后hexo帮我们生成静态的html页面,然后,将生成的html上传到我们的服务器。为了更加方便的实现本地到git服务器的部署同步问题,因此可
概述基于SpringBoot版本2.1.3的最新源码,启动流程图分析整个SpringBoot的加载顺序以及如何初始化。
权限配置Jenkins的权限配置很重要,尤其是项目团队比较多的时候,可以防止一些奇葩的程序员进行误操作,一般情况下,只有A项目组的人才可以构建和操作A项目的权限,其他项目组是看不到的。因此合理的配置Jenkins权限可以使其发挥更大的功效,避免操作额外的麻烦。
经过上述安装步骤,Jenkins已经成功安装到所在服务器中,下面通过访问地址进入web页面操作。 打开浏览器输出:http://服务器IP地址:8888/
自从阿里重启Dubbo维护以来,其热度迅速蹿升,Github上的星标数已经达到了2.2万个之多,可谓**开源软件界的明星产品。但是作为自家商业化输出的EDAS产品,却一直以来只能支持闭源的HSF微服务框架,对用户而言不能不说是一种遗憾。虽然以前也是可以支持Dubbo应用的,但却是以一种所谓的Dubbo over HSF来变相实现的,并不是真正无侵入的原生应用。现在这个担忧终于没有了,EDAS官方正
概述本文主要记录了如何在SpringBoot项目中,如何根据自定义注解、反射、HandlerMapping以及ViewReserve来实现基于自定义注解的SpringMVC流程。由于完整的SpringMVC源码过于重量级,这里稍微简化了一些流程,但是从实现的效果来看基本一致。
概述Java中类加载器的不同,那么对应的加载分工也不同,那种类加载器加载了哪些核心类库,这个可以根据加载路径以及父委托机制来说明。总体来说Java中的类加载器分为如下3个:引导类加载器(BootstrapClassLoader)、扩展类加载器(ExtClassLoader)、应用(系统)类加载器(AppClassLoader),具体介绍如下:
概述JVM用线程来执行方法,每个线程都包含一个线程栈,线程栈存放的是栈帧,每个栈帧都有自己的操作数栈和本地变量表。当一个方法被执行时候,首先会在栈顶push一个栈帧,栈帧的创建就需要指定操作数栈和本地变量表的大小。接下来方法的参数会被传入一个方法的本地变量表,本地变量表的访问采用下表索引的方式来访问,第0个位置会传入this(无参时候会调用自身实例,有参数则第1个位置会传入参数类型:如int,第2
https://yangzhiwen911.github.io/2019/03/29/Java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E7%82%B9/#more
概述开发中会经常遇到的一些基础知识点,其运行的结果体现了掌握Java基础是多么重要。
https://yangzhiwen911.github.io/2019/03/09/CAS%E8%AF%A6%E8%A7%A3/#more
概述提到CAS无锁机制,离不开sun.misc.Unsafe,Unsafe类,提供了JNI某些功能的简单替代,正常来说JAVA是不能直接访问操作系统底层的,而Unsafe类属于硬件级别的原子操作(操作系统的内存读取就是原子操作),进而达到通过本地方法来访问底层。但是Unsafe,字面意思就是不安全的,因为它所分配的内存需要手动释放(不被GC回收)。
https://yangzhiwen911.github.io/2019/03/23/Spring%E4%B8%ADBean%E7%9A%84%E5%8A%A0%E8%BD%BD/#more
概述Spring通过资源加载器加载相应的XML文件,使用读取器读取资源加载器中的文件到读取器中,在读取过程中,解析相应的xml文件元素,转化为spring定义的数据结BeanDefinition,把相应的BeanDefinition注册到注册表中的RootBeanDefinition。注册表中包含的BeanDefinition的数据结构。
https://yangzhiwen911.github.io/2019/02/24/JAVA%E7%BA%BF%E7%A8%8B%E6%B1%A0/#more
线程池概述java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 实现原理java线程池的实现原理很简单,说白了就是一个线程集合workerSet和一个阻塞队列workQueue。当用户向
基础扩展如何理解快速失败fail-fast fail-fast机制是java容器(Collection and Map都存在fail-fast机制)中的一种错误机制。在遍历一个容器对象时,当容器结构被修改,很有可能会抛出ConcurrentModificationException的,产生快速失败的。在以下两种情况下会导致快速失败,抛出ConcurrentModificationException
https://yangzhiwen911.github.io/2019/02/14/Mysql%E4%BC%98%E5%8C%96%E8%AE%B0%E5%BD%95/#more
Mysql执行线程1、查看Mysql当前连接数 1show full processlist; statistics 状态的线程,表示正在计算统计数据,以制定一个查询执行计划。 如果一个线程很长一段时间处于这种状态,可能是磁盘绑定的,即磁盘IO性能很差,说到底就是数据库服务器IO遇到问题了,可以通过增加 buffer_pool 来缓存更多的数据,或者提高服务器IO能力,可能磁盘在执行其他工作。
https://yangzhiwen911.github.io/2018/12/28/hello-world/#more
MyCat是一款基于阿里开源产品Cobar而研发的开源数据库分库分表中间件(基于Java语言开发)。MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分
概述BeanFacotry是spring中比较原始的Factory。如XMLBeanFactory就是一种典型的BeanFactory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。BeanFactory和ApplicationContext就是spring框架的两个IOC容器,现在一般使用ApplicationnContext,其不但包含了BeanFac
在阿里巴巴Java开发手册中,关于字符串拼接有这样一个推荐: 在实际开发业务中,字符串的拼接应用也是随处可见,但是为什么阿里会做如下的推荐使用方式,下面我们反编译看一下拼接字符串的真正执行过程。
https://yangzhiwen911.github.io/about/
至今从事Java研发工作10年多,希望可以通过博客帮助到更多同行中不断前行的程序员。 武汉回收哥科技有限公司 主要负责公司项目框架搭建整合,数据库设计,应用服务器部署,自动化集成部署Jenkins(自动同步SVN服务器,打包编译,上传服务器,重启应用)的搭建和相关培训,制定并评估开发周期,跟踪项目进度,帮助解决程序员们开发中遇到的问题,和第三方接口对接,部署上线等。 上海科匠信息科技有限公司
https://yangzhiwen911.github.io/2019/02/21/JDK8%E6%96%B0%E7%89%B9%E6%80%A7/#more
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。 新特性 Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。 方法引用 − 方法引用提供了非常有用的
https://yangzhiwen911.github.io/2019/02/23/JVM%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6/#more
垃圾回收GC (Garbage Collection)的基本原理:将内存中不再被使用的对象进行回收,GC中用于回收的方法称为收集器,由于GC需要消耗一些资源和时间,Java在对对象的生命周期特征进行分析后,按照新生代、旧生代的方式来对对象进行收集,以尽可能的缩短GC对应用造成的暂停。 JAVA中,GC通过确定对象是否被活动对象引用来确定是否收集该对象。目前主流的垃圾收集器都会采用分代回收算法,因此
概述Java中的Socket可以分为普通Socket和NioSocket两种。 普通SocketJava中的网络通信是通过Socket实现的,Socket分为ServerSocket和Socket两大类,ServerSocket用于服务端,可以通过accept方法监听请求,监听到请求后返回Socket,Socket用于具体完成数据传输,客户端直接使用Socket发起请求并传输数据。 NioSo
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.