自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lw_yang的博客

喜欢学习,努力工作,也享受生活,崇尚简单的快乐和幸福 ,为理想而奋斗。

  • 博客(121)
  • 资源 (25)
  • 收藏
  • 关注

原创 ThreadPool 源码解析

在工作中我们经常会用到线程池,那你知道线程池底层是怎么运作的吗?

2022-07-09 13:45:29 370 1

原创 Web API设计

什么是Web API使用HTTP协议通过网络调用的API,是软件组织的外部接口。通过访问URI可以与服务器完成信息交互,获取存放在服务器的数据信息WEB API的重要性不断提升,开发人员需要设计Web API的机会也越来越多,例如:将已发布的Web在线服务数据功能通过API公开构建现代Web应用开发智能手机应用开发社交游戏公司内部多个系统的集成那么Web API如此重要,如何设...

2020-01-11 16:40:33 530

转载 Spring Aop之Target Source详解

在Spring代理目标bean的时候,其并不是直接创建一个目标bean的对象实例的,而是通过一个TargetSource类型的对象将目标bean进行封装,Spring Aop获取目标对象始终是通过TargetSource.getTarget()方法进行的。本文首先会讲解Spring Aop是如何封装目标对象到TargetSource中的,然后会讲解TargetSource各个方法的使用原理,接着会...

2019-11-23 23:58:35 1851 1

原创 解决/home/travis/.travis/functions: ./mvnw: Permission denied

报错/home/travis/.travis/functions: line 320: ./mvnw: Permission deniedThe command "eval ./mvnw install -DskipTests=true -Dmaven.javadoc.skip=true -B -V " failed. Retrying, 2 of 3.$ java -Xmx32m -vers...

2019-11-11 13:00:00 1279

转载 使用@Async异步注解导致该Bean在循环依赖时启动报BeanCurrentlyInCreationException异常的根本原因分析

每篇一句面试造飞机,工作拧螺丝。工作中你只需要知道那些调用命令怎么使用就行,但背后的逻辑你有必要去了解前言今天在自己工程中使用@Async的时候,碰到了一个问题:Spring循环依赖(circular reference)问题。或许刚说到这,有的小伙伴就会大惊失色了。Spring不是解决了循环依赖问题吗,它是支持循环依赖的呀?怎么会呢?不可否认,在这之前我也是这么坚信的,而且每次使...

2019-11-04 14:41:20 747

转载 @Async分析exposeProxy=true不生效原因

每篇一句技术的发展总会实在掌声中,伴随着嘘声中前进。因此,需要有一颗拥抱变革的心态~前言本文标题包含有'靓丽'的字眼:Spring框架bug。相信有的小伙伴心里小九九就会说了:又是一篇标题党文章。鉴于此,此处可以很负责任的对大伙说:本人所有文章绝不哗众取宠,除了干货只剩干货。相信关注过我的小伙伴都是知道的,我只递送干货,绝不标题党来浪费大家的时间和精力~那无异于谋财害命(说得严重...

2019-10-29 10:01:32 1935 1

原创 服务器监控命令

实时监控top能够实时监控系统运行状态,并且可以按照CPU及内存进行排序top -h procps-ng version 3.3.10Usage: top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols] top状态下按M按内存使用率排序,按P按CPU使用率排序,按1可以显示每个CPU...

2019-10-28 22:12:36 490

原创 MySQl优化

策略1.尽量全值匹配EXPLAIN SELECT * FROM staffs WHERE NAME = 'July';EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' AND age = 25;EXPLAIN SELECT * FROM staffs WHERE NAME = 'July' AND age = 25 AND pos = 'dev...

2019-10-26 17:49:10 205

原创 MySQL索引和执行计划

索引索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构右侧是数据表,一共有两列七条记录,最左边的是数据记录的物理地址索引分类普通索引:即一个索引只包含单个列,一个表可以有多个单列索引唯一索引:索引列的值必须唯一,但允许有空值复合索引:即一个索引包含多个列聚簇索引(聚集索引):并不是一种单独的索引类型,而是一种数据存储方式。具体细节取决于不...

2019-10-26 17:36:56 305

原创 MySQL慢查询

慢查询慢查询日志,顾名思义,就是查询慢的日志,是指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句的日志。该日志能为SQL语句的优化带来很好的帮助。默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能。【常用配置】slow_query_log 启动停止技术慢查询日志slow_query_log_file 指定慢查询日志得存...

2019-10-26 17:10:30 159

原创 MySQL存储引擎

查看MySQL已提供的存储引擎mysql> show engines;查看MySQL当前默认存储引擎mysql> show variables like '%storge_engine%';MyISAMMySQL5.5之前的默认存储引擎【特性】:并发性与锁级别-表级锁支持全文检索支持数据压缩【使用场景】:非事务性应用(数据仓库、报表、日志数据)只读类应...

2019-10-26 16:56:35 172

原创 MySQL逻辑架构

连接层Mysql启动,等待客户端连接,每一个客户端连接请求,服务器都会新建一个线程处理(若是线程池,则分配一个空的线程),每个线程独立,拥有各自的内存处理空间,显然,若两个线程修改同一块内存是会引发数据同步问题SQL处理层连接到服务器,服务器对其进行验证(用户名,IP,密码),连接成功还要验证是否具有执行某个特定查询的权限这一层的主要功能有SQL语句解析、优化、缓存查询、MySQL...

2019-10-26 16:40:13 171

原创 Stack Overflow requires external JavaScript from another domain, which is blocked or failed to load

很多网站,尤其是国外网站,为了加快网站的速度,都是用了 Google 的 CDN。 但是在天朝,由于某些原因,导致全球最快的 CDN 变成了全球最慢的,这时需要一个插件将 Google 的 CDN 替换成国内的插件下载地址:Replace Google CDN若没有积分可评论联系我,传给你即可...

2019-10-22 14:11:18 233

原创 Spring解密之RequestBodyAdvice、ResponseBodyAdvice、HttpMessageConverter

Author: lwyangSpringBoot:2.1.9.RELEASE概述RequestBodyAdviceAllows customizing the request before its body is read and converted into an Object and also allows for processing of the resulting Objec...

2019-10-18 17:20:41 1389

原创 Spring解密之HandlerInterceptor、HandlerMethodArgumentResolver、ResponseBodyAdvice执行顺序

概述HandlerInterceptor用于拦截请求进行预处理和后处理,一般用于一下场景:日志记录,可以记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等等。权限检查:如登陆检测,进入处理器检测是否登陆,如果没有直接返回到登陆页面。性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得...

2019-10-17 19:21:04 4518

原创 利用socket raw抓包

RAW SOCKET能够对较低层次的协议直接访问,网络监听技术很大程度上依赖于它。该文介绍了利用RAW SOCKET捕获网络底层数据包的步骤和方法【原理】网卡对数据帧进行硬过滤(根据网卡的模式不同采取不同的操作,如果设置了混杂模式,则不做任何过滤直接交给下一层,否则非本机mac或者广播mac的会被直接丢弃)。在进入ip层之前,系统会检查系统中是否有通过socket(AP_PACKET,SOCK_...

2019-09-29 09:06:53 7265

原创 利用libpcap抓包(一)----------libpcap基本使用

libpcap安装先安装flex,bisonyum -y install flexyum -y install bison下载libpcap源码并解压,再输入如下命令./configuremakemake installlibpcap常用函数int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf);查找所有可用的网络...

2019-09-29 09:06:47 5219 3

原创 利用libpcap抓包(二)----------网络数据包头结构定义

这里在head.h的头文件中定义了以太网,IP, PPPOE, ARP, TCP, UDP 等数据包头部的结构体,以便于对数据包进行解析,其实在库中有已经定义好的各个数据包头部,像ethhdr,iphdr,tcphdr等,这里自己写一遍可以加深对网络数据包的理解。/******************************************************************...

2019-09-29 09:06:40 1888 2

原创 利用libpcap抓包(三)----------数据包解析函数的实现

下面是对抓取到的数据包进行解析,分2层以太网的解析,3层ip,icmp的解析,4层tcp,udp的解析/****************************************************************************** 文 件 名 : callback.c 版 本 号 : V1.1 负 责 人 : Sophisticated ...

2019-09-29 09:06:34 5184 7

原创 利用libpcap抓包(四)----------抓包主函数的实现

main函数的实现,调用libpca提供的库函数,抓取数据包,然后交给回调函数进行对数据包的解析/****************************************************************************** 文 件 名 : packetAnalyze.c 版 本 号 : V1.1 负 责 人 : Sophisticated...

2019-09-29 09:06:27 1571 2

原创 利用netfilter抓包(二)----------抓包函数的实现

本篇文章使用netfilter实现抓包并进行简单数据包的解析eth_hdr, ip_hdr,tcp_hdr分别是用过skb取以太网头部,ip头部,tcp头部ntohs将网络字节序转换为主机字节序由于内核中没有inet_ntoa函数,所以自己写了个函数将int的ip地址转换为点分十进制格式的ip地址先转换为主机字节序ntohl(iphdr->daddr),然后将int类型的ip地址转...

2019-09-29 09:06:14 2398 5

原创 《OS、Network、Kernel》PDF资源汇总

文章目录*《深入理解linux网络技术内幕(中文版)》*《深入理解linux内核第三版(中文版)》*《Linux设备驱动程序第三版(中文版)》*《C专家编程(中文版)》《Linux设备驱动开发详解-4.0内核》*《C和指针(中文版)》*《Linux内核设计与实现(第三版)》*《C陷进与缺陷(第二版中文版)》《UNIX网络编程卷1:套接字联网API(第三版)》《UNIX网络编程卷2:进程间通信(第二...

2019-08-19 22:09:18 981 3

原创 JDK命令行工具的监控

JVM参数类型标准参数-help-server -client-version -showversion-cp -classpathX参数-Xint 解释执行-Xcomp 第一次执行使用就编译成本地代码 (interpret)-Xmixed 混合模式,JVM自己决定是否编译成本地代码(compile)XX参数Boolean类型格式:-XX:[+-] <n...

2019-08-12 19:56:36 497

原创 Spring基础组件

@Configuration指定配置类@Bean一般针对导入第三方的类或包的组件,比如在其他包中定义的Person类需要在我们的容器中使用@ComponentScan扫描Bean,一般针对我们自己使用的类,useDefaultFilters为true时默认扫描@Component,@Controller,@Service,@Repository@Scope扫描规则:prototy...

2019-07-15 23:17:01 180

原创 ThreadLocal及其原理

ThreadLocal概念ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景下面通过一个例子来证明通过ThreadLocal能达到在每个线程中创建变量副本的效果:public class MiloTheadLocal { ...

2019-07-07 01:22:12 613

原创 线程池

线程池概念线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程(提高线程复用,减少性能开销)。线程池中线程的数量通常完全取决于可用内存数量和应用程序的需求。然而,增加可用线程数量是可能的。线程池中的每个线程都有被分配一个任务,一旦任务已经完成了,线程回到池子中然后等待下一次分配任务使用线程池的优点:降低资源的消耗。降低线程创建和...

2019-07-06 11:31:17 628

原创 并发容器(ConcurrentHashMap,ConcurrentSkipListMap,CopyOnWriteArrayList)

ConcurrentHashMap散列,Hash:把任意长度的输入通过一种算法(散列),变换成固定长度的输出,这个输出值就是散列值,属于压缩映射,容易产生哈希冲突HashMap在多线程put操作时会引起死循环,hashmap里的entry链表产生环形数据结构。关于环形链表的形成,则主要在这扩容的过程。当多个线程同时对这个HashMap进行put操作,而察觉到内存容量不够,需要进行扩容时,多个线...

2019-07-02 23:31:39 1036

原创 显示锁和AQS及其原理

显示锁Lock和Synchronized:优先使用Synchronized关键字,除非需要获取锁可以被中断,超时获取锁,尝试获取锁的功能公平锁和非公平锁:如果在时间上,先对锁获取的请求,一定先被满足,这个锁是公平的,不满足就是非公平的,非公平锁一般效率更高读写锁(ReadWriteLock):Lock和Synchronized都是排它锁,而读写锁同一时刻允许多个线程同时访问,但是写线程访问的...

2019-06-29 22:07:29 1329

转载 为什么wait()和notify()需要搭配synchonized关键字使用

##理解此问题先修知识:synchronized 的含义:Java中每一个对象都可以成为一个监视器(Monitor), 该Monitor由一个锁(lock), 一个等待队列(waiting queue ), 一个入口队列( entry queue).对于一个对象的方法, 如果没有synchronized关键字, 该方法可以被任意数量的线程,在任意时刻调用。对于添加了synchroni...

2019-06-29 19:04:04 777

原创 原子操作CAS

CAS原理CAS(Compare And Swap),指令级别保证这时一个原子操作三个运算符:一个内存地址V,一个期望的值A,一个新值B基本思路:如果地址V上的值和期望值A相等,就给地址V赋值给新值B,如果不是,不做任何操作(循环自旋不断进行CAS操作)CAS问题ABA问题:A—》B—》A,内存地址V最后的值确实为A,但在中途发生过改变,却并不知道,可以使用版本号解决开销问题:CAS...

2019-06-27 14:16:08 870

原创 线程并发工具类(Fork-Join,CountDownLatch,CyclicBarrier,Semaphore,Exchange)

Fork-Join分而治之:规模为N的问题,N<阈值,直接解决,N>阈值,将N分解为K个小规模子问题,子问题互相对立,与原问题形式相同,将子问题的解合并得到原问题的解WorkStealing:所谓 Work-Stealing,在 ForkJoinPool 中的实现为:线程池中每个线程都有一个互不影响的任务队列(双端队列),线程每次都从自己的任务队列的队头中取出一个任务来运行;如果某...

2019-06-25 22:24:24 1021

原创 Java线程基础

启动线程继承类Thread实现Runnable接口实现Callable接口(包装成FutureTask)停止线程interrupt()中断一个线程,并不是强行关闭这个线程,把中断标志位置为trueisInterrupted()判断当前线程是否处于中断状态,判断中断标志位是否为trueinterrupted()(static方法)判断当前线程是否处于中断状态,中断标志位改为fals...

2019-06-22 23:11:01 629

原创 Tomact原理与架构

Tomact结构图Server:指的就是整个 Tomcat 服 务器,包含多组服务,负责管理和 启动各个 Service,同时监听 8005 端口发过来的 shutdown 命令,用 于关闭整个容器 ;Service:Tomcat 封装的、对外提 供完整的、基于组件的 web 服务, 包含 Connectors、Container 两个 核心组件,以及多个功能组件,各 个 Service ...

2019-05-29 10:08:09 4356 3

转载 Maven实现原理

Maven 是每一位Java工程师每天都会接触的工具, 但据我所知其实很多人对Maven理解的并不深, 只把它当做一个依赖管理工具(下载依赖、打包), Maven很多核心的功能反而没用上. 最近重读 Maven实战, 虽然这本书年岁较老(10年出版: 那还是Hudson年代), 但绝大部分还是很值得参考的. 本文讲述Maven的核心原理和概念, 因此还是大纲参考了这本书, 但细节大多参考的Mave...

2019-05-13 14:30:32 1966 1

原创 Maven的使用

Creating a Projectmvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=falsea sample we...

2019-04-25 10:22:10 367

原创 Java虚拟机结构

Java虚拟机规范描述的是一种抽象化的虚拟机行为,而不是一种任何一种广泛使用虚拟机的实现。要实现一台java虚拟机,只需要正确的读取class文件中每一条字节码的指令,并且能正确执行这些指令所蕴含的操作即可。虚拟机规范中没有明确描述的实现细节,都不应成为虚拟机设计者发挥创造性的牵绊,设计者完全自主决定规范中不曾描述的虚拟机内部细节。如:运行时数据区内存布局,选用哪种GC算法,是否对字节码指令进行内...

2019-04-18 20:15:59 939

原创 字符设备驱动模板

在字符设备驱动模块加载函数中应该实现设备号的申请和 cdev 的注册, 而在卸载函数中应实现设备号的释放和 cdev 的注销。工程师通常习惯将设备定义为一个设备相关的结构体,其包含该设备所涉及的 cdev、私有数据及信号量等信息。常见的设备结构体、模块加载和卸载函数形式如代码清单所示//设备结构体struct xxx_dev_t{ struct cdev cdev; ...} x...

2019-03-07 10:17:01 481

原创 内核中新增驱动代码目录和子目录

假设我们要在内核源代码 drivers 目录下为 ARM 体系结构新增如下用于 test driver 的树型目录在内核中增加目录和子目录,我们需为相应的新增目录创建 Kconfig 和 Makefile 文件,而新增目录的父目录中的 Kconfig 和 Makefile 文件也需要修改,以便新增的 Kconfig 和 Makefile 文件能被引用在新增的 test 目录下,应该包含如下 ...

2019-03-06 20:20:04 838

原创 Linux-4.20.8内核桥收包源码解析(七)----------本地(br_pass_frame_up)or 转发(br_forward)

作者:Sophisticated

2019-02-26 11:00:17 2765 3

原创 Linux-4.20.8内核桥收包源码解析(六)----------决策函数br_handle_frame_finish

作者:Sophisticated

2019-02-25 20:54:15 2123

arcanist工具-windows.rar

Arcanist在Windows环境下工具集合(arcanist、libphutil、php) 在win10系统下亲测有效!!!

2020-04-15

ReplaceGoogleCDN-master.rar

解决Stack Overflow requires external JavaScript from another domain, which is blocked or failed to load问题

2019-10-22

spring Boot 2精髓.rar

spring Boot 2精髓 高清,带目录书签!!!

2019-05-29

互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析 .rar

互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析 非影印版,高清,带目录书签!!!

2019-05-29

图解HTTP.rar

图解HTTP 特别清晰,带目录书签!!!

2019-05-29

Spring Boot 2企业应用实战.rar

Spring Boot 2企业应用实战 带目录书签!!!

2019-05-29

Redis设计与实现(第二版)

Redis设计与实现(第二版) 带目录书签!

2018-11-21

深入理解Nginx模块开发与架构解析(第2版)

深入理解Nginx模块开发与架构解析(第2版) 中文版 带目录书签!

2018-11-19

Redis设计与实战

Redis设计与实战 带目录书签!

2018-11-19

Linux常用命令全集

Linux常用命令全集.chm chm文件,linux系统常用命令全集

2018-11-19

GNU make中文手册

GNU make中文手册 详细介绍 Makefile 文件的编写,带目录书签!

2018-11-19

linux/unix系统编程手册(下)

linux/unix系统编程手册(下) 带目录书签~

2018-11-04

linux/unix系统编程手册(上)

linux/unix系统编程手册(上) 带目录书签!

2018-11-04

Linux内核编程

Linux内核编程 中文版,带目录书签。

2018-10-24

Linux内核API完全参考手册(第2版)

Linux内核API完全参考手册(第2版) 中文版,带目录书签。

2018-10-15

精通Linux内核网络.(以)罗森著.pdf

精通Linux内核网络.(以)罗森著.pdf 带目录书签。

2018-10-15

Linux设备驱动开发详解4.0内核

Linux设备驱动开发详解4.0内核 高清版-带目录书签

2018-10-09

GPON技术规范984.3中文版

GPON技术规范984.3 中文版,带目录书签。。。

2018-10-08

Linux内核设计与实现(第三版)

Linux内核设计与实现(中文版第三版) 中文第三版,带目录书签!!!

2018-10-08

MD5-Check.exe

MD5-Check工具。 可以用来计算MD5和SHA的值。。。。。

2018-09-12

Linux设备驱动程序第三版(中文版)

Linux设备驱动程序第三版(中文版) 带目录书签!!!

2018-09-11

深入理解linux网络技术内幕(中文版)

深入理解linux网络技术内幕(中文版) 带目录标签 !!!

2018-09-09

空空如也

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

TA关注的人

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