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

spring AOP 动态代理 jkd动态代理和cglib动态代理 hibernate使用cglib延迟加载

spring 的AOP 实现 可以使用jdk的动态代理,也可以使用cglib的动态代理 先说下两者区别: 静态代理:代理之前就已经知道了代理者和被代理者 动态代理:代理之前并不清楚,在运行时使用反射机制动态生成代理类的字节码 无需我们手动编写它的源代码 jdk动态代理:java.lang.reflect 包中的Proxy类,InvocationHandler 接口提供了生成动态代理类的能力。它必须有被代理对象的接口和实现类,ciglib不需要接口,简单的说 jkd动态代理针对接口,而cglib动态代理针对的是类 比JDK快,但加载cglib的时间比jdk反射的时间长,开发的过程中,如果是反复动态生成新的代理类推荐用 JDK 自身的反射,反之用 cglib。 spring AOP的实现 既可以...阅读全文

博文 2019-04-04 09:45:05 www.allocmem.com

GO语言中封装,继承,和多态

##封装 go中的封装和java的不太一样,在go里面是没有java中的class,不过可以把struct看成一个类,封装可以简单地看作对struct的封装,如下 type obj1 struct { valte1 string } type obj2 struct { valte2 string } ##继承 把struct看做类,struct中可以包含其他的struct,继承内部struct的方法和变量,同时可以重写,代码如下 package main import "fmt" type oo struct { inner ss1 string ss2 int ss3 bool } type inner struct { ss4 string } func (i *inner) test...阅读全文

博文 2019-04-04 09:49:29 www.allocmem.com

简析hashset的实现原理

hashset底层为hashmap。 源码如下: /** * Constructs a new, empty set; the backing HashMap instance has * default initial capacity (16) and load factor (0.75). */ public HashSet() { map = new HashMap<>(); } 默认 initial capacity(hashmap底层数组大小)为16,load factor 为 0.75 add() 方法 /** * Adds the specified element to this set if it is not already present. * Mo...阅读全文

博文 2019-04-04 09:46:40 www.allocmem.com

golang中new和make简析

引言: 目前简单梳理了golang的知识点,进行查漏补缺,这里简要记录下golang中的make和new,由于个人能力有限,如有错误,欢迎指正。 正文: 1. make 分配了一个有初始值(非零)的T类型(我这里打印的为空,个人理解为空值)返回值 当slice cap无法满足需要,则在初始大小cap(即第三个参数,这里为6),成倍增长 2. new 分配了零值填充的T类型的内存空间,并返回其地址(指针) 当slice cap无法满足需要,则以16为基数,成倍增长 测试代码如下: “` package main import "fmt" //make 分配了一个有初始值(非零)的T类型(我这里打印的为空,个人理解为空值)返回值 当slice cap无法满足需要,则在初始大小cap(即第三个参数...阅读全文

博文 2019-04-04 09:53:58 www.allocmem.com

关于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

Java中方法多态以及多接口实现

###关于java中方法多态 通过多子类重写父类或接口实现。 通过同类同方法(方法名相同,参数数量或者类型不同)实现,这里主要注意Java中判断同一方法的标准是方法名和参数,与返回值无关,如下,可简要看着yy(int a) “` package com.anteoy.coreJava.polymorphism; /** Created by zhoudazhuang Date: 17-1-9 Time: 下午9:07 Description :java识别是否为重复冲突函数,依靠的是函数名和参数,与返回值无关,如yy(int a) */ public class Polymorphism { //注释代码编译不通过,即使参数都为空 不允许仅仅只有返回值不同的同名函数 /*String yy(...阅读全文

博文 2019-04-04 09:49:16 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 时钟与计时器 - iFantasticMe

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

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

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 沉迷技术的小沙弥

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

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

GO语言中封装,继承,和多态

##封装 go中的封装和java的不太一样,在go里面是没有java中的class,不过可以把struct看成一个类,封装可以简单地看作对struct的封装,如下 ``` type obj1 struct { valte1 string } type obj2 struct { valte2 string } ``` ##继承 把struct看做类,struct中可以包含其他的struct,继承内部struct的方法和变量,同时可以重写,代码如下 ``` package main import "fmt" type oo struct { inner ss1 string ss2 int ss3 bool } type inn...阅读全文

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 思否

Future和CompletableFuture的区别

为什么引入CompletableFutrue? 回调 回调函数的机制: 定义一个回调函数 提供函数实现的一方在初始化时候,将回调函数的函数指针注册给调用者 当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理 回调方式的异步编程 所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法。在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。 JDK5新增了Future接口,用于描述一个异步计算的结果。虽然 Future 以及相关使用方法提供了异步执行任务的能力,但是对于结果的获取却是很不方便,只能通过阻塞或者轮询的方式得到任务的结果。阻塞的方式显然和我们的异...阅读全文

博文 2020-11-23 07:11:00 LiuRio

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 知乎

Java并发基石——所谓“阻塞”:Object Monitor和AQS(2)_JAVA入门中

(接上文《Java并发基石——所谓“阻塞”:Object Monitor和AQS(1)》) 3、AQS 上文我们较为详细的介绍了Java线程调度中的Object Monitor机制以及其工作情况,本文我们开始介绍Java线程调度中的另一种实现机制AQS,包括它的使用方式和底层工作原理。 3.1、AQS介绍 JAVA中的AQS队列从根本上来讲是基于CAS的典型实现(也是使用volatile关键字的典型案例)。从技术层面的依赖关系上讲它首先依赖于java中的java.util.concurrent.locks.LockSupport类,这个类在本专题之前的文章中已经介绍过,专门用来实现应用程序级别对硬件级别的“同步多线程(SMT)”技术的封装。 同步多线程(SMT) 技术是一种硬件层面的技术,具...阅读全文

博文 2021-06-16 02:47:38 CSDN博客

物联网协议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

Elasticsearch Java API的基本使用

Elasticsearch Java API的基本使用说明 在明确了ES的基本概念和使用方法后,我们来学习如何使用ES的Java API. 本文假设你已经对ES的基本概念已经有了一个比较全面的认识。 客户端 你可以用Java客户端做很多事情: 执行标准的index,get,delete,update,search等操作。 在正在运行的集群上执行管理任务。 但是,通过官方文档可以得知,现在存在至少三种Java客户端。 Transport Client Java High Level REST Client Java Low Level Rest Client 造成这种混乱的原因是: 长久以来,ES并没有官方的Java客户端,并且Java自身是可以简单支持ES的API的,于是就先做成了Trans...阅读全文

博文 2020-11-29 08:39:46 简书

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

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

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

java反射机制执行Bean中的方法_W_DongQiang的博客

步骤: 一:获取到bean的class实例,方式分两种, 1.通过spring注入的:通过Spring上下文获取到需要代理执行的class实例 Class selectsClass = SpringContextUtils.getBean("beanName").getClass(); 2.没使用spring注入的:通过Class.forName初始化加载bean Class selectsClass= Class.forName(TableSelectsUtil.class.getName()); 二:通过方法名从class实例中获取方法实例 Method method = selectsClass.getMethod("getAll", new Class[] {String.class...阅读全文

博文 2021-06-07 12:59:55 CSDN博客

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 博客园

简单分析Flink算子返回NULL导致的异常

假设我们作业中有这样一段逻辑stream.map(xxx).filter(_ != null).xxx,并且map算子有可能返回NULL,你觉得作业运行会抛NPE吗?明明下游有filter not null,不应该出错才对?但实际情况是运行中有可能抛出异常。1.异常信息可能抛出的异常信息大致如下: // 1. 如果map算子返回值类型为Java Tuple Caused by: java.lang.NullPointerException at org.apache.flink.api.java.typeutils.runtime.TupleSerializer.copy(TupleSerializer.java:111) at org.apache.flink.api.java.typeu...阅读全文

博文 2022-03-29 06:13:47 知乎