2021 12-17

我的极客时间专栏结课了!!!

我的极客时间专栏结课了!!! 我的极客时间专栏结课了!!!太TMD不容易了。 今天下班到家的时候,收到了一份包裹,里面是极客时间送的结课礼物。是的,我的《手把手带你写一个web框架》专栏终于结课了。 “老师总计输出了38篇文字,约321458字,总计上线音频时长11小时13分34秒。“ ”积土成山,积水成渊,之前老师说描述清楚一个事情的难度不亚于实现他,从用户反馈看,咱们课程的口碑相当不错,给老师的持续输出点赞。” 收到礼物,打开看到其中小编写的感谢信,真是感慨万分。这是一个约莫持续了半年的项目

2021 12-17

IO多路复用技术总结

来源:微信公众号「编程学习基地」 IO多路复用概述 I/O多路复用技术是为了解决进程或线程阻塞到某个I/O系统调用而出现的技术,使进程不阻塞于某个特定的I/O系统调用。 在IO多路复用技术描述前,先讲解下同步,异步,阻塞,非阻塞的概念。 网络IO模型 linux网络IO中涉及到的模型如下: (1)阻塞式IO (2)非阻塞式IO (3)IO多路复用 (4)信号驱动IO (5)异步IO 今天不谈信号驱动IO,略过.. 同步/异步 在学习IO模型的时候,我们必须明确一个概念,处理IO的时候,阻塞和非

2021 12-17

Apache Log4j2,RASP 防御优势及原理

ApacheLog4j2远程代码执行漏洞已爆发一周,安全厂商提供各类防御方案和检测工具,甲方团队连夜应急。 影响持续至今,网上流传的各种利用和绕过姿势还在层出不穷,影响面持续扩大。所有安全人都开始反思一个问题:当前的防御是否有效?针对这样的0day再次发生,什么是有效的手段? 阿里云安全团队此次参与了诸多客户应急,并从云平台自身防御总结经验,尝试抛出一些观点以供讨论。 首先,我们先来从技术层面分析一下为什么这次Log4j2这么难搞。 ApacheLog4j2 漏洞们的特质 此次Log4

2021 12-17

如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目

目录 前言 项目目录 搭建项目 1.docker安装启动mysql以及redis 1.1安装mysql 1.2安装redis 2.初始化数据库 3.创建项目 4.初始化代码 4.1全局配置文件以及启动类 4.2实体类 4.3Redis工具类 4.4Mysql数据库操作 4.5Service层 4.6Controller控制层 4.7pom依赖 测试 前言 有时候我们需要快速启动一些项目,但是环境往往折腾了好久,因此弄一个可以重用的快速搭建的教程,docker简直就是这

2021 12-17

HCNP Routing&Switching之组播技术-组播协议IGMP

  前文我们了解了组播地址相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15616740.html;今天我们来聊一聊组播协议中IGMP协议相关话题;   组播技术架构   提示:组播通信中,发送者将组播数据发送到特定的组播地址。要使组播报文最终能够到达接收者,需要某种机制使与连接潜在的接受者网段的组播路由器能够了解到该网段内有哪些组播接收者,保证接收者可以加入到相应的组播组中接受数据;从上面的组播基础架构中我们可以看到,组播通信主要分三个阶段

2021 12-16

JS 双向数据绑定、单项数据绑定

  简单的双向数据绑定 <!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title></title> </head> <body> <inputtype="text"id="aa"/> <spanid="bb"style="border:2pxsolidorange;margin-left:20px

2021 12-16

java多线程7:ReentrantReadWriteLock

真实的多线程业务开发中,最常用到的逻辑就是数据的读写,ReentrantLock虽然具有完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务), 这样做虽然保证了实例变量的线程安全性,但效率却是非常低下的。所以在JDK中提供了一种读写锁ReentrantReadWriteLock类,使用它可以加快运行效率。 读写锁表示两个锁,一个是读操作相关的锁,称为共享锁;另一个是写操作相关的锁,称为排他锁。 下面我们通过代码去验证下读写锁之间的互斥性 ReentrantReadWriteLo

2021 12-16

通过Docker部署Java项目的日志输出到宿主机指定目录

之前写过2篇关于Docker部署的文章: 1、超!超!超简单,Linux安装Docker 2、Docker通过阿里云镜像仓库使用Gitlab_CI部署SpringBoot项目   用上篇博客部署Java程序是ok的,不过Java日志打印在容器里,不能满足原来ELK的日志搜集。 方法有2种: 1、在Docker容器内部加入日志收集工具,Filebeat或Logstash。 2、将打Docker内的日志打印到宿主机的目录。   本文用的第二种,下面再慢慢说思路,开始叻 先看项目不

2021 12-16

Spring Cloud Eureka源码分析之三级缓存的设计原理及源码分析

EurekaServer为了提供响应效率,提供了两层的缓存结构,将EurekaClient所需要的注册信息,直接存储在缓存结构中,实现原理如下图所示。 第一层缓存:readOnlyCacheMap,本质上是ConcurrentHashMap,依赖定时从readWriteCacheMap同步数据,默认时间为30秒。 readOnlyCacheMap:是一个CurrentHashMap只读缓存,这个主要是为了供客户端获取注册信息时使用,其缓存更新,依赖于定时器的更新,通过和readWriteCa

2021 12-16

HyperSnips:VSCode上的自动补全神器

发现一个小众但是巨好用的VSCode自动补全插件:HyperSnips。 作者显然受到了这位小哥的启发,将VimUltisnips的大部分功能搬到了VSCode上。并用JavaScript重写了Python的部分程序。有了这个插件,你不需要使用令人望而生畏的Vim,就能愉快地写LaTeX/markdown,甚至在数学课上用markdown/LaTeX做笔记。 更有趣的是,由于这个插件具有可编程能力,你甚至可以拿到VSCode的API接口,用这个插件写“插件”,或者干一些有趣的事情。 你可以