java技术圈 为您找到相关结果 153

关于java部分知识点的总结(三)

之前一直使用云笔记写自己遇到的一些体会,最近因为工作需要,准备回头梳理下以前自己学习的知识点,想把以前的记录下载博客里,既方便自己以后查阅,同时也能让自己有一个更深刻的记忆。 dubbo构成: 2者(服务提供者【无状态】,服务消费者),2中心(服务注册中心,服务监控中心)。 (1) 连通性:连通流程 (2) 健状性:多数部分宕挂了,其余服务部分仍能正常使用 (3) 伸缩性:主要是伸,动态增加机器部署实例 public void ensureCapacity(int minCapacity) { int minExpand = (elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA) // any size if not default elemen...阅读全文

博文 2019-04-04 09:44:24 www.allocmem.com

squid stunnel 为 docker 配置代理服务器

目地 为k8s的docker服务提供http/https代理,解决docker无法pull gcr.io/google_containers 谷歌镜像问题 环境 GCE ubuntu 16.04 k8s集群机器 ubuntu16.04 简要步骤 GCE 搭建squid正向http/https代理服务器 直接使用apt-get install 安装 apt-get install squid3 -y 注意:配置文件在/etc/squid或/etc/squid3下,根据系统不同可能会有一点差异,由于这里进行快速安装,不需要暴露端口给外部使用,也不需要密码,所以配置文件我这里保持默认 GCE 安装stunnel代理服务器 stunnel主要用来在GCE和k8s机器上代理的数据传输进行加密,否则明文...阅读全文

博文 2019-04-04 09:55:15 www.allocmem.com

AbstractQueuedSynchronizer的介绍和原理分析

感谢同事【魏鹏】投递本稿。 Dedicate to Molly. 简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式来操纵状态。然而多线程环境中对状态的操纵必须确保原子性,因此子类对于状态的把握,需要使用这个同步器提供的以下三个方法对状态进行操作: java.util.concurrent.locks.AbstractQueuedSynchronizer.getState() java.util.concurrent.locks.Abstract...阅读全文

博文 2019-12-04 08:36:15 并发编程网 – ifeve.com

Antlr4简易快速入门

1. 简介 Antlr (ANother Tool for Language Recognition) 是一个强大的跨语言语法解析器,可以用来读取、处理、执行或翻译结构化文本或二进制文件。它被广泛用来构建语言,工具和框架。Antlr可以从语法上来生成一个可以构建和遍历解析树的解析器。2. 谁在使用HiveSparkOraclePrestoElasticsearch3. 常见的语法分析器AntlrJavaccSqlParser (位于Alibaba的Druid库中)其中Antlr和Javacc都是现代的语法解析器,两者都很优秀,其中Antlr要更胜一筹。而SqlParser只能解析sql语句,功能比较单一。 :本人基于Antlr和SqlParser分别写了一套elasticsearch-sql...阅读全文

博文 2020-09-16 09:35:11 知乎

WebSocket与http长连接的区别 - 我只是个前端AI

前言 事先说明这是鄙人看了一点入门文章总结的粗浅的知识, 并不保证理解完全正确,用来给自己知识梳理用。 websocket连接过程概述 WebSocket 建立连接需要先通过一个 http 请求进行和服务端握手。握手通过后连接就建立并保持了。浏览器先发送请求: GET / HTTP/1.1 Host: localhost:8080 Origin: [url=http://127.0.0.1:3000]http://127.0.0.1:3000[/url] Connection: Upgrade Upgrade: WebSocket Sec-WebSocket-Version: 13 Sec-WebSocket-Key: w4v7O6xFTi36lq3RNcgctw== 服务端返回一个请求: ...阅读全文

博文 2019-05-07 09:45:13 SegmentFault 思否

ssh over socks5:通过socks5 proxy来连接ssh服务器

October 19, 2017 in Tech 最近因为不可描述的原因,我在aws soul的云主机访问不了,ssh、80、ss全部都被禁掉了。 80端口在chrome配置SwitchyOmega就可以了,但ssh不太好办,shell上配置http_proxy对ssh没什么用。 其实ssh自己就支持proxy。 注意这跟在ssh端口转发:远程和本地中介绍过使用ssh作为proxy的方法不同,ssh -D是为了用ssh做proxy,而不是通过proxy来连接ssh服务器。 TL;DR ssh -o ProxyCommand='nc -x 192.0.2.0:1080 %h %p' user@awshost 原理解析 $ man ssh_config ProxyCommand Specifie...阅读全文

博文 2020-02-15 12:19:27 ieevee.com

吃透Netty源码系列四十九之WebSocket编解码器详解二_王伟王胖胖的博客

吃透Netty源码系列四十九之WebSocket编解码器详解二 Utf8FrameValidatorWebSocketServerProtocolHandlerdecodeWebSocketProtocolHandler的decode WebSocket08FrameEncoder解码器 Utf8FrameValidator 今天把剩下的一些说下,这个是验证文本帧是否是UTF8编码的。来看下吧。其实他就是检查是否是最后一帧,如果是文本帧的话就检测内容,不是UTF8的就抛异常。如果是持续帧,只有第一帧是文本的才会开始检测,所以后续来的肯定是文本帧,就不用判断是不是文本帧了,只要判断是不是在检测就好了。 @Override public void channelRead(ChannelHandl...阅读全文

博文 2021-09-16 12:32:25 CSDN博客

linux网络编程backlog和somaxconn | 戒修

前言 学习过的知识只要用的机会不多,多半过段时间就会忘记.如果能反复学习或者记笔记则会记得更牢固一点.以后也可以直接查看复习. 以下内容基于Linux 2.6.18内核 listen方法传入的backlog参数#include int listen(int sockfd, int backlog); 在上面的代码中我们看到listen函数的第二个参数为backlog. 这个参数的意义在不同的Linux内核版本或操作系统定义是不同的. tcp状态转化图 建立Tcp连接需要3次握手, 因此在一个连接的状态变为ESTABLISHED之前,它会有一个过渡的中间状态SYN RECEIVED因此TCP/IP协议栈就有2种方法来实现一个处于listen状态SOCKET连接. ...阅读全文

博文 2019-06-12 10:48:11 沉迷技术的小沙弥

Linux 时钟与计时器 - iFantasticMe

对 Linux 系统来说,时钟和计时器是两个十分重要的概念。时钟反应的是绝对时间,也可认为是实时时间。计时器反应的则是相对时间,即相对于系统启动后的计时。操作系统内核需要管理运行时间(uptime)和墙上时间(wall time),而内核中大量事务需要由时间驱动。 系统时钟 系统内核需要借助硬件设施来管理时间,实时时钟(RTC)是用来持久存放系统时间的设备,它由主机电池供电,因此即使关闭系统,实时时钟仍然在持续工作。 当系统启动时,系统内核从实时时钟(RTC)读取实时时间,并将该时间转换为自 1970 年 1 月 1 日零时零分零秒以来所经历的秒数(即 Linux 时间秒),并将该秒数保存在系统变量 xtime 中。可以说实时时钟的主要作用就是初始化 xtime 变量。 系统计时器 系统计时...阅读全文

博文 2019-06-16 14:45:53 博客园

说好了不哭 | 周杰伦是最懂青春的人,CORNERSTONE只想成为最懂你的人

80、90后的青春,一半是周杰伦,一半是五月天。这两天朋友圈最火的莫过于周杰伦的新歌《说好不哭》,方文山作词,周杰伦作曲,歌曲中还有周董、阿信的倾情合唱,依旧是熟悉的节奏和小清新的风格,中年人的青春记忆,又回来了! ![在这里插入图片描述](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9wbS5pdGl0LmlvL3AvZmlsZS9nZXRfZmlsZS80NzU1MDkxNTNhYzg0ZGY1OTg0YzZhZTAxMjViZGE5ZS5wbmc?x-oss-process=image/format,png) 大家都说,周杰伦是“最懂青春的人”。因此,周杰伦本身就代表着一种青春的情怀。这种“约定”与“成全”的情歌,直接把QQ音乐搞崩的,也只有周董能做...阅读全文

MongoDB运行状态、性能监控,分析 泛城科技技术博客

这篇文章的目的是让你知道怎么了解你正在运行的Mongdb是否健康。 mongostat详解 mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态。 它的输出有以下几列: inserts/s 每秒插入次数 query/s 每秒查询次数 update/s 每秒更新次数 delete/s 每秒删除次数 getmore/s 每秒执行getmore次数 command/s 每秒的命令数,比以上插入、查找、更新、删除的综合还多,还统计了别的命令 flushs/s 每秒执行fsync将数据写入硬盘的次数。 mapped/s 所...阅读全文

博文 2019-09-01 12:58:00 泛城科技技术博客

Druid SQL 解析器的解析过程 - beanlam

beanlam 3k Druid SQL 解析器的解析过程 druid 发布于 2017-01-14 这篇文尝试近距离地探究 Druid SQL 解析器如何工作。 Demo 代码 以这份代码为例 /** * * * @author beanlam * @date 2017年1月10日 下午11:06:26 * @version 1.0 * */ public class ParserMain { public static void main(String[] args) { String sql = "select * from user order by id"; // 新建 MySQL Parser SQLStatementParser parser = new MySqlStatem...阅读全文

博文 2020-08-09 12:31:06 SegmentFault 思否

G1收集器 - 反光的小鱼儿

载:https://blog.csdn.net/zhou2s_101216/article/details/79202893 http://blog.jobbole.com/109170/ https://my.oschina.net/robinyao/blog/983822 https://blog.csdn.net/coderlius/article/details/79272773 http://www.cnblogs.com/aspirant/p/8663872.html https://crowhawk.github.io/tags/#JVM 可以看看 概述 G1(Garbage-First )收集器是一种server-style 回收器,主要面向多核,大内存的服务器。G1 在实现...阅读全文

博文 2019-11-15 10:42:24 博客园

spring boot中,jar包、war包的区别 - cag2050

jar包、war包 比较(表格) 项目 jar包 war包 在开发调试完成之后,可以将应用打成JAR包的形式,可以直接使用Maven插件的package命令,最终会形成一个可运行的 JAR包。我们使用java –jar命令就可以运行这个JAR包了。 JAR包解压后的目录结构: 这个JAR包与传统JAR包的不同之处在于里面有一个名为lib的目录,在这个目录中包含了这个简单应用所依赖的其他JAR包,其中也包含内置的嵌 入式Tomcat,正是使用它,才能发布服务和访问Web资源。除了我们编写的源码所编译形成的CLASS以外,在org目录下还有许多Spring所提 供的CLASS,正是依赖这些CLASS,才能够加载位于lib目录下JAR中的类。这样的加载机制与在OSGi bundle中声明Bundl...阅读全文

博文 2019-10-19 09:06:14 博客园

分布式sql引擎原理分析-逻辑执行计划生成 - 云+社区

不管是传统数据库或者基于sql的分布式大数据分析工具,基本原理都是把一个sql转换成sql语法树(AST),通过对语法树的分析转换成执行计划。传统数据库会根据执行计划通过执行引擎并返回结果;而大数据sql分析工具,由于针对更大数据量而生,为了更好的扩展性、容错性和高可用,会把执行计划分成逻辑执行计划和物理执行计划,并且根据查询sql的特点切分逻辑计划,这样可以把分块的逻辑计划分配到更具扩展性的并行节点,最后根据逻辑执行计划转成物理执行计划进行查询。 本文档以当前流行的分布式大数据查询引擎Presto为切入点,分析一个query语句怎么生成为一个分段的逻辑计划。下图是当前流行大数据sql查询引擎(包括hive/sparksql),生成逻辑计划的过程:SQL引擎生成逻辑计划 从图中可以看到,当用...阅读全文

博文 2020-08-07 06:28:55 腾讯云

Flink 自定义触发器实现带超时时间的 CountWindow - 云+社区

Flink 的 window 有两个基本款,TimeWindow 和 CountWindow。 TimeWindow 是到时间就触发窗口,CountWindow 是到数量就触发。如果我需要到时间就触发,并且到时间之前如果已经积累了足够数量的数据;或者在限定时间内没有积累足够数量的数据,我依然希望触发窗口业务,那么就需要自定义触发器。import org.apache.flink.api.common.functions.ReduceFunction; import org.apache.flink.api.common.state.ReducingState; import org.apache.flink.api.common.state.ReducingStateDescriptor; ...阅读全文

博文 2021-10-22 03:26:02 腾讯云

彻底弄懂HTTP缓存机制及原理 - 云中桥

前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。 但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不是很清楚。 在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端缓存有所帮助。 在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文 HTTP报文就是浏览器和服务器间通信时发送及响应的数据块。 浏览器向服务器请求数据,发送请求(request)报文;服务器向浏览器返回数据,返回响应(response)报文。 报文信息主要分为两部分 1.包含属性的首部...阅读全文

SSE和WebSocket的用法和比较 - like2372

在我们日常开发中,会遇到服务端和客户端的通讯,今天我们就来比较一下HTML5新特性SSE和WebSocket的用法。 一,SSE 简介 SSE(Server-Sent Events,服务器发送事件)是围绕只读Comet 交互推出的API 或者模式。 SSE API允许网页获得来自服务器的更新(HTML5),用于创建到服务器的单向连接,服务器通过这个连接可以发送任意数量的数据。服务器响应的MIME类型必须是text/event-stream,而且是浏览器中的JavaScript API 能解析格式输出。SSE 支持短轮询、长轮询和HTTP 流,而且能在断开连接时自动确定何时重新连接。 客户端 //判断是否支持SSE if('EventSource' in window){ //初始化SSE v...阅读全文

Thrift源码分析(TThreadedSelectorServer)

前言 再通过对THsHaServer的源码学习后,我们知道THsHaServer缺点为主线程仍然需要完成所有socket的监听接收(accept)、数据读取和数据写入操作(read/write)。当并发请求数较大时,且发送数据量较多时,负责监听的主线程就只有一个。监听socket上新连接请求不能被及时接受。 ##TThreadedSelectorServer TThreadedSelectorServer是对THsHaServer的一种扩充与完善,它将selector中的读写IO事件(read/write)从主线程中分离出来。交给了多个专门负责读写IO事件的SelectorThread,同时引入worker工作线程池,负责业务处理。它也是种Half-Sync/Half-Async的服务模型。...阅读全文

博文 2020-06-10 10:56:25 掘金

[译] 如何杀死一个进程和它的所有子进程

文地址:Killing a process and all of its descendants原文作者:igor_sarcevic译文出自:掘金翻译计划本文永久链接:https://github.com/xitu/gold-miner/blob/master/TODO1/killing-a-process-and-all-of-its-descendants.md译者:江五渣校对者:TokenJan,portandbridge如何杀死一个进程和它的所有子进程在类 Unix 系统中杀死进程比预期中更棘手。上周我在调试一个在 Semaphore 中终止作业的问题。更具体地说,这是一个有关于在作业中终止正在运行的进程的问题。以下是我从中学到的要点:类 Unix 操作系统有着复杂的进程间关系:父子...阅读全文

Socks5代理工作原理 - 云+社区

Socks5代理工作原理&抓包分析 Socks5代理工作原理[TOC]1. Socks5协议以下摘自维基百科 SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。SOCKS是”SOCKetS”的缩写[注 1]。 当防火墙后的客户端要访问外部的服务器时,就跟SOCKS代理服务器连接。这个代理服务器控制客户端访问外网的资格,允许的话,就将客户端的请求发往外部的服务器。 这个协议最初由David Koblas开发,而后由NEC的Ying-Da Lee将其扩展到SOCKS4。最新协议是SOCKS5,与前一版本相比,增加支持UDP、验证,以及IPv6。 根据OSI模型,SOCKS是会话层的协议,位于表示层与传输层之间。 SOCKS协议不提供加密。 SOCKS 协议第 4 版本为...阅读全文

博文 2021-10-09 08:22:12 腾讯云

半导体科普三 CPU

CPU主要包括逻辑运算单元和存储单元,我们讲讲半导体如何实现逻辑运算功能和存储功能。半导体实现逻辑运算的功能,这很大程度源于MOS晶体管开关切换的频率可达一秒几百次,几万次,甚至几千万次。但是具体是如何根据这个特性实现CPU逻辑运算功能的呢,下边会有详细的说明。而半导体实现存储功能,其实就是写入并保持区分两个不同的状态就好,这样就可以记录二进制数据,也就可以记录数据世界了。逻辑运算逻辑运算的理论基础是数理逻辑学的布尔代数,布尔代数的基础就是,与(AND)、或(OR)、非(NOT),这是高中学到的概念。布尔代数相关规则其中三大基本逻辑电路(也叫门电路)就是NOT电路(非门)、OR电路(或门)、AND电路(与门)。三生万物,这三大门电路可以组成所有有趣的逻辑运算电路,以实现数字运算和逻辑运算。而...阅读全文

说说http协议中的编码和解码 - wangfengpaopao

一、字符集与文字编码简介 1. 计算机如何显示文字 我们知道,计算机是以二进制的“形式”来保存和处理数据的,也就是说,不管我们使用键盘进行输入,还是让计算机去读取一个文本文件,计算机得到的原始内容是一些二进制序列,当需要对这些二进制序列进行显示时,计算机会依照某种“翻译机制”(也就是编码方式),取到这些二进制序列所表示的每个文字的“轮廓描述”(点阵或者矢量图),知道了轮廓,计算机便可以将二进制序列所表示的实际的文字形状显示到屏幕上了,这里面的思想和用学号来表示一个学生是一样的。(当然,这里面具体的知识点会很多,相关知识可以参考《计算机图形学》中显示原理的部分和其他与计算机显示原理相关的基础书籍)。 2. 字符集 将一些自然语言中的字符组成一个集合,并对集合中的每个字符制定规范化的编码方式,这...阅读全文

企业如何选择合适的SaaS软件?

随着新一轮SaaS风潮的到来,企业对SaaS软件的接受度不断提高。 根据国际咨询公司Gartner的研究报告显示,2020年有36%的企业将使用云技术来支持超过企业一半的交易。 你是否正在考虑将企业业务迁移到云端,是否正在为寻找合适的SaaS软件而烦恼? 接下来,与CORNERSTONE一起探讨企业该如何选择合适的SaaS软件。 一、什么是SaaS? ![image.png](https://img-blog.csdnimg.cn/20200703144121174.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMTM3...阅读全文

Netty学习(五)—IdleStateHandler心跳机制_tuzhenyu的博客

Netty学习(五)—IdleStateHandler心跳机制 Netty的IdleStateHandler心跳机制主要是用来检测远端是否存活,如果不存活或活跃则对空闲Socket连接进行处理避免资源的浪费; 个人主页:tuzhenyu’s page 原文地址:Netty学习(五)—IdleStateHandler心跳机制 (0)基础 心跳机制 心跳是在TCP长连接中,客户端和服务端定时向对方发送数据包通知对方自己还在线,保证连接的有效性的一种机制在服务器和客户端之间一定时间内没有数据交互时, 即处于 idle 状态时, 客户端或服务器会发送一个特殊的数据包给对方, 当接收方收到这个数据报文后, 也立即发送一个特殊的数据报文, 回应发送方, 此即一个 PING-PONG 交互. 自然地, ...阅读全文

博文 2021-09-02 12:30:44 CSDN博客_idlestatehandler

使用Java Low Level REST Client操作elasticsearch - ~冰

Java REST客户端有两种风格: Java低级别REST客户端(Java Low Level REST Client,以后都简称低级客户端算了,难得码字):Elasticsearch的官方low-level客户端。 它允许通过http与Elasticsearch集群进行通信。 不会对请求进行编码和响应解码。 它与所有Elasticsearch版本兼容。Java高级REST客户端(Java High Level REST Client,以后都简称高级客户端):Elasticsearch的官方high-level客户端。 基于low-level客户端,它公开了API特定的方法,并负责处理。 低级客户端 的功能包括: 依赖最小 所有可用节点,会负载平衡 在节点故障和响应特定状态码的情况下会进行...阅读全文

博文 2020-12-03 05:58:47 博客园

理解Java中的弱引用(Weak Reference) - absfree

本篇文章尝试从What、Why、How这三个角度来探索Java中的弱引用,理解Java中弱引用的定义、基本使用场景和使用方法。由于个人水平有限,叙述中难免存在不准确或是不清晰的地方,希望大家可以指出,谢谢大家:) 1. What——什么是弱引用? Java中的弱引用具体指的是java.lang.ref.WeakReference类,我们首先来看一下官方文档对它做的说明: 弱引用对象的存在不会阻止它所指向的对象变被垃圾回收器回收。弱引用最常见的用途是实现规范映射(canonicalizing mappings,比如哈希表)。 假设垃圾收集器在某个时间点决定一个对象是弱可达的(weakly reachable)(也就是说当前指向它的全都是弱引用),这时垃圾收集器会清除所有指向该对象的弱引用...阅读全文

博文 2021-04-27 05:57:37 博客园

JVM之G1回收器和常见参数配置

过去的几天里,我把JVM内部的垃圾回收算法和垃圾回收器。还剩下最后一个G1回收器没有说,我们今天数一下G1回收器和常见的参数配置。G1回收器G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器,以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征。我们会想一下我们上次课说的parNew+CMS回收器已经很厉害了,但是我们的服务器是那种超大内存的服务器呢?比如内存是32G的,可能最后我们的堆内存需要分配到十多个G,我们用parNew+CMS对于STW时间还是很长的,需要清理的越多,时间消耗越长啊,但是我们的G1垃圾回收器可以做到限制时间来收集,我们先看一下G1的模型图。来解释一下这个图,G1垃圾回收器,会把你的堆内存分为 大小相等 ...阅读全文

博文 2020-07-28 07:13:10 知乎

物联网协议Coap协议介绍

COAP协议简介 Coap(Constrained Application Protocol)是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252。COAP名字翻译来就是“受限应用协议”,顾名思义,使用在资源受限的物联网设备上。物联网设备的ram,rom都通常非常小,运行TCP和HTTP是不可以接受的。 COAP协议特点 1 COAP协议网络传输层由TCP改为UDP。 COAP协议层 2 它基于REST,server的资源地址和互联网一样也有类似url的格式,客户端同样有POST,GET,PUT,DELETE方法来访问server,对HTTP做了简化。 3 COAP是二进制格式的,HTTP是文本格式的,COAP比HTTP更加紧凑。 4 轻量化,COAP最小长度仅仅4B,一个...阅读全文

Spring配置文件头及xsd文件版本 - 时间朋友

通常情况下,namespace对应的URI是一个存放XSD的地址,尽管规范没有这么要求。如果没有提供schemaLocation,那么Spring的XML解析器会从namespace的URI里加载XSD文件。我们可以把配置文件改成这个样子,也是可以正常工作的:[html] view plain copy schemaLocation提供了一个xml name...阅读全文

博文 2021-06-12 12:14:12 博客园

https可否有效应对dns劫持、http内容劫持

前言 近期客户端为了缩包,对很多项目进行了h5化相关的工作,但在上线后发现有部分内容被http内容劫持,具体现象就是部分页面被植入广告,由于之前大多采用http协议,被劫持肯定是束手无策,因此准备切换协议,而https多了关于域名证书验证与交互数据加密的步骤,之前也有对过https交互原理以及Charles抓包工具的原理做过相关学习总结,详见 https原理初探。 https是建立于http的基础上,加上了ssl(Secure Sockets Layer安全套接层)协议的网络传输协议,其中通过数字证书、对称与非对称加密、数据完整性摘要等技术,完成数据传输的保密性、完整性。而我们使用https就能完全应对网络安全中的dns劫持和http内容劫持吗? 正文 dns劫持、http内容劫持 dns劫...阅读全文

博文 2021-08-27 11:45:41 juejin.cn

JDK动态代理与运行时织入字节码

blog.csdn.net/u010061691/…java jdk动态代理其实是动态生成字节码与反射机制的一个结合,说到反射机制很多人都用到过反射,只要得到对应类的Class对象即可,调用方法,获取成员变量等等,那么jdk的动态代理就是在程序运行的过程中,动态的将我们维护的检查性的代码,放在正常的业务代码之前,那么怎么调用我正常的业务代码呢,因为业务可能有很多种,也就是说可能会有不同的类,但是都要执行相同的检查性代码,如我们要取钱,或者是修改身份证,都必须验证通过才可以,这显然是两个类,一个是Money,一个是ID,所以我们在调用正常业务代码的时候,其实不知道我们调用的是谁的代码,这时候就用到反射,通过反射,动态的识别类型,然后再调用方法,如我们要取钱,那么传入的应该是一个Money的实例...阅读全文

博文 2021-06-14 12:55:27 juejin.cn

CDN回源-简单介绍 - 红雨520

CDN回源 回源:回源是CDN领域的专用词,指的是CDN缓存服务器从源站获取所需要分发的资源。 CDN缓存服务器一般是不会主动回源的,只有在缓存服务器缺少用户请求的资源时(可能是该资源CDN缓存服务器没有缓存,也可能是缓存过期),CDN缓存服务器才会向源站发起请求,获取所需要分发的资源。 回源这个词目前不仅仅使用在CDN领域,阿里云的oss对象存储目前也提供回源,当你向oss对象存储请求资源时,如果获取不到该资源,会根据设置的回源规则去相对应的源站上获取资源,并保存在oss对象存储中...阅读全文

博文 2021-05-30 19:12:50 博客园

深入理解CGLIB动态代理机制

CGLIB动态代理 代理类将委托类作为自己的父类并为其中的非final委托方法创建两个方法,一个是与委托方法签名相同的方法,它在方法中会通过super调用委托方法;另一个是代理类独有的方法。在代理方法中,它会判断是否存在实现了MethodInterceptor接口的对象,若存在则将调用intercept方法对委托方法进行代理 可以在运行时对类或者是接口进行增强操作,且委托类无需实现接口 不能对final类以及final方法进行代理 底层将方法全部存入一个数组中,通过数组索引直接进行方法调...阅读全文

博文 2021-06-12 14:45:20 简书

Netty 中的异步编程 Future 和 Promise - rickiyang

Netty 中大量 I/O 操作都是异步执行,本篇博文来聊聊 Netty 中的异步编程。 Java Future 提供的异步模型 JDK 5 引入了 Future 模式。Future 接口是 Java 多线程 Future 模式的实现,在 java.util.concurrent包中,可以来进行异步计算。 对于异步编程,我们想要的实现是:提交一个任务,在任务执行期间提交者可以做别的事情,这个任务是在异步执行的,当任务执行完毕通知提交者任务完成获取结果。 那么在 Future 中是怎么实现的呢?我们先看接口定义: public interface Future { boolean cancel(boolean mayInterruptIfRunning); boolean isCance...阅读全文

博文 2021-08-29 03:35:05 博客园

Spring Boot 你不得不会的 spring.factories 配置

在 Spring Boot 项目中,怎样将 pom.xml 文件里面添加的依赖中的 bean 注册到 Spring Boot 项目的 Spring 容器中呢?你可能会首先想到使用 @ComponentScan 注解,遗憾的是 @ComponentScan 注解只能扫描 Spring Boot 项目包内的 bean 并注册到 Spring 容器中,项目依赖包中的 bean 不会被扫描和注册。此时,我们需要使用 @EnableAutoConfiguration 注解来注册项目依赖包中的 bean。而 spring.factories 文件,可用来记录项目包外需要注册的 bean 类名。使用 spring.factories 文件有什么好处呢?假如我们封装了一个插件,该插件提供给其他开发人员使用。...阅读全文

博文 2022-07-25 02:26:27 人人编程网

新手能看懂的(Interceptor)和(Filter)区别与使用! - 云+社区

阅读本文需要5分钟作者:liuxiaopeng 链接:http://www.cnblogs.com/paddix 一、拦截器与过滤器我们先了解一下过滤器和拦截器。这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的。在分析两者的区别之前,我们先理解一下AOP的概念,AOP不是一种具体的技术,而是一种编程思想。在面向对象编程的过程中,我们很容易通过继承、多态来解决纵向扩展。但是对于横向的功能,比如,在所有的service方法中开启事务,或者统一记录日志等功能,面向对象的是无法解决的。所以AOP——面向切面编程其实是面向对象编程思想的一个补充。而我们今天讲的过滤器和拦截器都属于面向切面编程的具体实现。而两者的主要区别包括以下几个方面:Filter是依赖于Servlet容器,属于Ser...阅读全文

博文 2021-06-11 02:25:53 腾讯云

虚拟IP技术 ip地址漂移技术 - myseries

1.虚拟IP 在 TCP/IP 的架构下,所有想上网的电脑,不论是用何种方式连上网路,都必须要有一个唯一的 IP-address。事实上IP地址是主机硬件地址的一种抽象,简单的说,MAC地址是物理地址,IP地址是逻辑地址。 虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机。 虚拟IP一般用作达到HA(High Availability)的目的,比如让所有项目中数据库链接一项配置的都是这个虚IP,当主服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用服务器。 2.虚拟IP原理 ARP是地址解析协议,它的作用很简单,将一个IP地址转换为MAC地址,然后给传输层使用。 每台主机中都有一...阅读全文

抽象语法树为什么抽象 - 云+社区

从具体到抽象 Abstract Syntax Tree抽象语法树(通常被简写成AST)实际上只是一个解析树(parse tree)的一个精简版本。在编译器设计的语境中,"AST" 和 "语法树"(syntax tree)是可以互换的。什么是解析树呢?我们知道一棵解析树是包含代码所有语法信息的树型结构,它是代码的直接翻译。所以解析树,也被成为具象语法树(Concret Syntax Tree, 简称CST);而抽象语法树,忽略了一些解析树包含的一些语法信息,剥离掉一些不重要的细节,所以它看起并不像解析树那么事无巨细,这也是AST名字中抽象一词的由来。在继续下一步之前,我们先统一一下文中的概念表达形式,以便更好的理解内容解析树 = Parse Tree = CST 抽象语法树 = Syntax ...阅读全文

博文 2022-06-10 08:47:31 腾讯云

SpringCloudAlibaba高并发仿斗鱼直播平台实战

## SpringCloudAlibaba高并发仿斗鱼直播平台实战 download:https://www.zxit666.com/6371/ Dubbo服务调用原理剖析 段落一:简介 Dubbo是一款高性能、轻量级的分布式服务框架,主要用于解决分布式应用中的服务调用和管理问题。它提供了多种通信协议和负载均衡策略,支持服务的注册与发现、远程调用和容错处理等功能。 段落二:服务注册与发现 在Dubbo中,服务注册与发现是实现服务调用的基础。当服务提供者启动时,它会将自己的地址信息注册到注册中心。而服务消费者则从注册中心获取提供者的地址,并建立与提供者的连接。Dubbo支持多种注册中心,如Zookeeper、Consul等,通过注册中心的协调,实现了服务的动态发现和路由。 段落三:远程调用 D...阅读全文

npm install 包,提示安装成功,但是项目中没有出现node_modules也没有安装的包,package.json中也没有任何依赖包记录_npm install后npm ls找不到安装的包

npm install 包,没有报错,提示安装成功,但是项目中没有出现node_modules也没有安装的包,package.json中也没有任何依赖包记录 ——这种情况一般是包安装错了目录! 诡异:我的命令行显示的路径是在当前项目下的,也没有改过目录,并且npm都重新安装过了,为什么还会出现这种情况呢? 答案应该是装在了全局中:这个时候要先考虑npm的配置问题!可能只npm默认安装到全局中了! 解决步骤: 1. 查看npm的配置 npm config list 图例1: 2.查看全局下,是否有自己安装的包 npm root -g//获取到全局安装目录 图例2: 复制并打开到这个目录下,查看自己安装的包是否存在 -->可以看到,我们安装的包果然都到了全局目录下: 图例3: 3.修改npm配置...阅读全文

博文 2024-02-12 20:38:07 CSDN博客

云主机与云服务器:两者的区别

本文分享自天翼云开发者社区《云主机与云服务器:两者的区别》,作者:张****华云主机:云主机是一种通过虚拟化技术在云计算环境中提供的计算资源。它基于物理服务器上的虚拟机实例,可以进行灵活的配置和管理。云主机提供高可用性、弹性扩展和灵活的资源分配,使用户能够根据需求快速调整计算能力。云服务器:云服务器也是一种基于云计算环境的计算资源,但与云主机不同,它是通过物理服务器实现的。云服务器提供了计算、存储和网络等资源,用户可以根据自己的需求选择适当的配置,而无需购买和维护物理服务器。云主机与云服务器之间存在以下区别:1. 架构云主机基于虚拟化技术,通过在物理服务器上创建虚拟机实例来提供计算资源。它提供了更高的灵活性和可扩展性。云服务器则直接基于物理服务器,没有虚拟化层。这使得云服务器的性能更高,但灵...阅读全文

GitHub强制要求开启两步验证了,但是1password要收费,怎么办?

今早收到邮件,GitHub要求用户强制开启两步验证:打开GitHub的设置,却发现推荐的两步验证方法要求下载1Password/Authy/Microsoft Authenticator等APP。可是1password是个收费软件,而且还不便宜。第二个通过手机短信验证码的方式,还不支持中国大陆的手机号:Countries where SMS authentication is supported - GitHub Docs怎么办呢?自己动手,丰衣足食!首先看看这种验证机制的原理。基于时间的一次性密码(time-based one-time password, TOTP)的原理基于时间的一次性密码(Time-based One-Time Password,TOTP)是一种双因素身份验证(2FA...阅读全文

博文 2023-11-17 14:34:12 知乎