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

java golang tcp socket导致线上服务器出现大量close_wait的完整示例

tcp断开连接的四次挥手 先说说tcp的四次挥手,这里假定A端为主动发起关闭端,B端为被动接收关闭请求端。A把tcp的数据包中标识位FIN置为1,seq为一个随机数,发送这个包给B端,自己进入FIN_WAIT_1状态;B端收到了马上给A端回复ack(A端收到ack进入FIN_WAIT_2状态),然后自己进入CLOSE_WAIT状态。然后这个时候需要业务代码处理,把自己需要发给客户端的数据发送完,然后业务代码主动调用相应语言库函数提供的close函数,来触发关闭操作:给A端发送FIN seq的数据包,这是第三次握手。这个时候自己进入last ack状态。 A端此时收到包然后给B端口发送相应ack.A端自己此时进入time_wait状态。 B端收到ack后从last_ack就顺利进入close状...阅读全文

博文 2019-05-21 11:53:37 www.allocmem.com

git本地版本落后仓库几个版本pull冲突相关

git中本地落后仓库几个版本pull冲突,但是自己又不想提交本地的代码到远程仓库,可以尝试使用下面的方法: 一种是使用git fetch,但是自己这个用得少 另外就是使用git pull git pull = git fetch + git merch 解决冲突时利用git stash 把本地代码保存起来 1.git pull origin master 报错:有冲突 不能拉取下来(本地和远程在同地方都有改动 ) 来自 https://git.coding.net/zhoudafu/ISM_D * branch master -> FETCH_HEAD 更新 ac5fccd..170cf6f error: The following untracked working tree files ...阅读全文

博文 2019-04-04 17:44:44 www.allocmem.com

nginx搭配frp进行端口和服务转发

###引言: java接入三方运营商服务接口,需要可供回调的公网接口,并在本地两台(及以上)调试接口服务,于是使用开源frp进行穿透,nginx搭配负责分发请求到不同机器。 ###安装环境: 1. ubuntu 16.04 LTS 一台服务器 两台客户机 2. 已安装好nginx ###frp配置过程: 参考我之前博文[http://blog.csdn.net/yan_chou/article/details/53406095](http://blog.csdn.net/yan_chou/article/details/53406095) 并分端口配置两份 ###一台客户机中nginx配置过程: 修改nginx.conf sudo vim /etc/nginx/nginx.conf 修改ht...阅读全文

博文 2019-04-04 17:50:11 www.allocmem.com

git branch

###从git拉取指定分支 1. 先clone下来 git clone https://git.coding.net/zhoudafu/gblog.git 2. 增加远程仓库(此步可省略,若添加远层仓库可参考) git remote add origin https://git.coding.net/zhoudafu/gblog.git 3. fetch下分支代码 git fetch origin coding-pages 4. 使用checkout切换分支 git checkout -b coding-pages origin/coding-pages 分支 gh-pages 设置为跟踪来自 origin 的远程分支 coding-pages。切换到一个新分支 'coding-pages'...阅读全文

博文 2019-04-04 17:43:11 www.allocmem.com

分布式版本控制系统mercurial hg常用命令

mercurial mercurial是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。由于目前工作需要使用mercurial,这里记录下自己使用到的常用命令,作为参照,不定时更新。 常用命令 配置好类似git的ssh,使用hg clone ssh://code@xx.com/yy 克隆xx.com的yy项目 hg status => git status hg branch => git branch hg commit -m ‘xxx’ => git add . & git commit -m ‘xxx’ hg pull => git pull hg upda...阅读全文

博文 2019-04-03 22:31:38 www.allocmem.com

golang实现简易TCP服务以及TCP和UDP协议对比

引言 ECHO(Echo Protocol,回绕协议,应答协议,如linux中的echo命令),用于查错及测量应答时间(运行在TCP和UDP协议上)本文示例为echo协议,服务器只需把收到的客户端的请求数据发给这个客户端即可,其它什么功能都不做。 tcp/ip是一个协议簇(族),TCP(传输控制协议)和IP(网际协议)是此协议簇的核心。七层OSI模型中,tcp/udp在传输层,而ip在网络层。 OSI七层协议由上到下分别是:应用层(http,https),表示层(简单地说不同计算机通信会话进行表示转化,使系统能够识别,把数据转换为能与接收者的系统格式兼容并适合传输的格式。),会话层(设置和维护电脑之间通信连接,ssh),传输层(TCP/UDP),网络层(网际协议IP),数据链路层(表头和表尾...阅读全文

博文 2019-04-04 17:53:00 www.allocmem.com

[转]SolrCloud概览

自——找不到出处了。。ref->这里 简介 SolrCloud是Solr4.0版本以后基于Solr和Zookeeper的分布式搜索方案。SolrCloud是Solr的基于Zookeeper一种部署方式。Solr可以以多种方式部署,例如单机方式,多机Master-Slaver方式。 特色功能 集中式的配置信息使用ZK进行集中配置。启动时可以指定把Solr的相关配置文件上传Zookeeper,多机器共用。这些ZK中的配置不会再拿到本地缓存,Solr直接读取ZK中的配置信息。配置文件的变动,所有机器都可以感知到。另外,Solr的一些任务也是通过ZK作为媒介发布的。目的是为了容错。接收到任务,但在执行任务时崩溃的机器,在重启后,或者集群选出候选者时,可以再次执行这个未完成的任务。 自动容错SolrC...阅读全文

博文 2019-04-03 22:31:14 www.allocmem.com

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 17:45:05 www.allocmem.com

ubuntu 16.04安装zookeeper

##搭建环境 ubuntu 16.04 LTS zookeeper-3.5.1-alpha dubbo 调用 ##搭建过程 使用官方源码包进行安装 资源准备 zookeeper-3.5.1-alpha.tar.gz 源码包 官方稳定版下载地址http://apache.fayea.com/zookeeper/ 开始安装 解压压缩包到指定目录 tar -zxvf zookeeper-3.5.1-alpha.tar.gz -C /home/zhoudazhuang/local/ 使用第一步解压的源码包路径,cd /home/zhoudazhuang/local/zookeeper-3.5.1-alpha/conf 拷贝一份zoo_sample.cfg ,并命名为zoo.cfg 编辑zoo.cfg...阅读全文

博文 2019-04-04 17:47:53 www.allocmem.com

Hugepage导致进程占用物理内存过多的问题

Hugepage导致进程占用物理内存过多的问题 首页 分类 标签 留言 关于 订阅 2015-04-30 | 分类 Linux | 标签 memory 1 问题 业务同样的程序跑在TDocker、XEN,占用的内存却相差很大。 TDocker: XEN: 可以看到,虽然VIRT一样,但是程序占用的物理内存却相差6倍。 2 原因分析 经过各种分析,后来levy同学发现关闭transparent hugepage就解决了这个问题。TDocker使用的CentOS6.5的内核,默认开启了transparent hugepage。 # cat /sys/kernel/mm/redhat_transparent_hugepage/enabled [always] madvise never 关闭tra...阅读全文

博文 2019-07-31 11:52:21 hustcat.github.io

MapReduce:实现join的几种方法_sofuzi的博客

reduce side join reduce side join是一种最简单的join方式,其主要思想如下: 在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来源的key/value数据对,对每条数据打一个标签> (tag),比如:tag=0表示来自文件File1,tag=2表示来自文件File2。即:map阶段的主要任务是对不同文件中的数据打标签。> 在reduce阶段,reduce函数获取key相同的来自File1和File2文件的value list, 然后对于同一个key,对File1和File2中的数据进行join(笛卡尔乘积)。即:reduce阶段进行实际的连接操作。 map side join 之所以存在reduce side join,是因为在m...阅读全文

博文 2021-01-12 16:20:45 CSDN博客

opensuse下安装网易云音乐netease-cloud

opensuse下安装网易云音乐netease-cloud-music Author anteoy@gmail.com | Posted 2017-10-04 22:49:00 安装过程 安装环境 opensuse 42.3(理论上仓库中列出的支持版本都可以用此方法安装) 官方软件仓库搜索netease,也可直接点击此处打开:https://software.opensuse.org/package/netease-cloud-music?search_term=netease 选择对应版本,点击Source下载源码,我这里下载的对应版本为42.3,得到如下文件(注意这里点击1 Click Install安装会出错,我最开始点击直接安装,结果提示安装成功,但无法使用,仔细看安装日志会发现,虽...阅读全文

博文 2019-04-04 17:55:08 music

Golang网络:核心API实现剖析(一) - Go语言中文网

这一章节我们将详细描述网络关键API的实现,主要包括Listen、Accept、Read、Write等。 另外,为了突出关键流程,我们选择忽略所有的错误。这样可以使得代码看起来更为简单。 而且我们只关注tcp协议实现,udp和unix socket不是我们关心的。Listenfunc Listen(net, laddr string) (Listener, error) { la, err := resolveAddr("listen", net, laddr, noDeadline) ...... switch la := la.toAddr().(type) { case *TCPAddr: l, err = ListenTCP(net, la) case *UnixAddr: .......阅读全文

博文 2019-06-12 18:48:57 Golang中文社区

golang的slice详解

切片的长度和容量不同,长度表示左指针至右指针之间的距离,容量表示左指针至底层数组末尾的距离。 切片的扩容机制,append的时候,如果长度增加后超过容量,则将容量增加2倍,同时变换了底层数组。 切片append机制,是把slice后边数据逐个覆盖写入。 切片copy机制,按其中较小的那个数组切片的元素个数进行复制。 --------------------- 作者:Shower稻草人 来源:CSDN 原文:https://blog.csdn.net/u013474436/article/details/88770501 版权声明:本文为博主原创文章,转载请附上博文链接! ...阅读全文

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 17:45:13 SegmentFault 思否

proc/sys/net/ipv4/下各项的意义-技术港湾

/proc/sys/net/ipv4/icmp_timeexceed_rate这个在traceroute时导致著名的“Solaris middle star”。这个文件控制发送ICMP Time Exceeded消息的比率。 /proc/sys/net/ipv4/igmp_max_memberships主机上最多有多少个igmp (多播)套接字进行监听。 /proc/sys/net/ipv4/inet_peer_gc_maxtime求 助: Add a little explanation about the inet peer storage? Minimum interval between garbage collection passes. This interval is in e...阅读全文

博文 2019-06-12 18:47:20 51CTO博客

Go语言TCP Socket编程

Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket实现的。 网络编程方面,我们最常用的就是tcp socket编程了,在posix标准出来后,socket在各大主流OS平台上都得到了很好的支持。关于tcp programming,最好的资料莫过于W. Richard Stevens 的网络编程圣经《UNIX网络 编程 卷1:套接字联网API》 了,书中...阅读全文

博文 2019-05-07 18:46:53 Tony Bai

通过/proc/sys/net/ipv4/优化Linux下网络性能

通过/proc/sys/net/ipv4/优化Linux下网络性能 范堡 发布于 2011/11/03 17:58 阅读 5K+ 收藏 7 评论 1 RHEL 开发四年只会写业务代码,分布式高并发都不会还做程序员?->>> 通过/proc/sys/net/ipv4/优化Linux下网络性能 /proc/sys/net/ipv4/优化 1) /proc/sys/net/ipv4/ip_forward 该文件表示是否打开IP转发。 0,禁止 1,转发 缺省设置:0 2) /proc/sys/net/ipv4/ip_default_ttl 该文件表示一个数据报的生存周期(Time To Live),即最多经过多少路由器。 缺省设置:64 增加该值会降低系统性能。 3) /proc/sys/net/...阅读全文

博文 2019-06-12 18:47:35 OSCHINA

手动编译并运行Java项目的过程 - 小得盈满

现在Java开发基本上就是IDE调试,如果跨平台打个jar包过去运行一般就可以了,但是有些情况比如需要引入外部依赖的时候,这个时候是不能直接运行的,还需要引入一些外部的参数,并不是简单的javac和java的关系了,下面来详细说一下 一般情况下,在本地都是使用eclipse开发工具进行开发,很多东西基本上就不用我们考虑了,如果我们要将项目放到Linux下运行的话,那么就需要进行转移的操作,当然有Maven、Ant这样的自动化部署工具,简直是太方便了,为了做到更进一步认识的话,我们纯手动的去打包一个java的项目 首先,项目名称为JarTest,在eclipse结构如下图所示: 包名和类名都看的非常清楚了,App是主类,包含有main方法;TestBean是一个JavaBean实体;TestS...阅读全文

博文 2019-10-19 17:37:43 博客园

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

修改linux端口范围 ip_local_port_range - solohac

tags: ip_local_port_range 端口范围 sysctl Linux中有限定端口的使用范围,如果我要为我的程序预留某些端口,那么我需要控制这个端口范围, 本文主要描述如何去修改端口范围。 1 2 /proc/sys/net/ipv4/ip_local_port_range的原文解释: The /proc/sys/net/ipv4/ip_local_port_range defines the local port range that is used by TCP and UDP traffic to choose the local port. You will see in the parameters of this file two numbers: The fir...阅读全文

博文 2020-07-30 10:32:26 博客园

Redis 高负载下的中断优化

背景2017年年初以来,随着Redis产品的用户量越来越大,接入服务越来越多,再加上美团点评Memcache和Redis两套缓存融合,Redis服务端的总体请求量从年初最开始日访问量百亿次级别上涨到高峰时段的万亿次级别,给运维和架构团队都带来了极大的挑战。原本稳定的环境也因为请求量的上涨带来了很多不稳定的因素,其中一直困扰我们的就是网卡丢包问题。起初线上存在部分Redis节点还在使用千兆网卡的老旧服务器,而缓存服务往往需要承载极高的查询量,并要求毫秒级的响应速度,如此一来千兆网卡很快就出现了瓶颈。经过整治,我们将千兆网卡服务器替换为了万兆网卡服务器,本以为可以高枕无忧,但是没想到,在业务高峰时段,机器也竟然出现了丢包问题,而此时网卡带宽使用还远远没有达到瓶颈。定位网络丢包的原因从异常指标入手...阅读全文

博文 2019-11-11 11:22:54 美团技术团队

chrome 发送请求出现:Provisional headers are shown 提示 - 个人文章

Maldivee 129 chrome 发送请求出现:Provisional headers are shown 提示 javascript 更新于 2019-02-20 约 2 分钟 一般来说,如果看到provisional headers are shown这个提示,说明这个请求并没有发送出去。 具体原因有多种总结如下:1.请求被某些扩展如 Adblock 拦截了,请求被浏览器插件拦截。解决方案:用 chrome://net-internals 来帮助你查找被屏蔽的请求以及可能的原因。(本人发现现在这个用不了了)2.请求被墙了3.走本地缓存或者 dataurl 的请求。强缓存from disk cache或者from memory cache,此时也不会显示4.服务器出错或者超时,没有真...阅读全文

博文 2020-04-29 11:28:27 SegmentFault 思否

第1章04节 | 常见开源OLAP技术架构对比

1. 什么是OLAP OLAP(On-line Analytical Processing,联机分析处理)是在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。可以比较下其与传统的OLTP(On-line Transaction Processing,联机事务处理)的区别来看一下它的特点:OLAP的优势是基于数据仓库面向主题、集成的、保留历史及不可变更的数据存储,以及多维模型多视角多层次的数据组织形式,如果脱离的这两点,OLAP将不复存在,也就没有优势可言。参考:http://webdataanalysis.net/web-data-warehouse/data-cube-and-olap/2. OLAP引擎的常见操作下面所述几种OLAP操作,是针对Kimball的星型模型(Sta...阅读全文

博文 2021-03-01 14:20:51 知乎

深入对比TOML,JSON和YAML-云栖社区

Kubernetes集群安装文档-v1.6版本 店家小二 2018-12-15 18:16:55 浏览906 kubernetes使用traefik的https方式访问web应用 店家小二 2018-12-16 14:26:32 浏览1783 hugo-最好用的静态网站生成器 bt联盟 2016-01-27 19:56:02 浏览6336 CICD联动阿里云容器服务Kubernetes实践之GitLab CI篇(一) 流生 2018-11-23 10:51:01 浏览8420 ASP.NET Core on K8S深入学习(14)Ingress灰度发布 EdisonZhou 2020-05-25 11:19:09 浏览47 Python的小数据存储,用什么格式更有逼格? Python学习者 ...阅读全文

博文 2020-05-28 14:15:39 阿里云

窗口函数--配合over(...)的选项 rows/range between ... preceding and ... following--工作备忘2016/9/30_数据库_Richie's 残酷舞台

说明:在使用over()函数进行统计(尤其是求和,求平均的等)的时候,有时候需要设定一个范围(时间,数值等),因此,oracle提供了窗口函数选项 rows/rang between ... preceding and ... following 分析函数的语法结构一般是:分析函数名(参数) OVER (PARTITION BY子句 ORDER BY子句 ROWS/RANGE子句) 即由以下三部分组成:分析函数名:如sum、max、min、count、avg等聚集函数以及lead、lag行比较函数等;over: 关键字,表示前面的函数是分析函数,不是普通的集合函数;分析子句:over关键字后面挂号内的内容;分析子句又由下面三部分组成:partition by :分组子句,表示分析函数的计算范...阅读全文

博文 2020-04-23 10:26:05 CSDN博客

深入理解数据库编程中的超时设置 - 云+社区

数据库是开发过程中最常用的组件,然而我们经常会遇到各种各样的超时异常,如:connect timeout:建立数据库连接超时socket timeout:socket读取超时statement timeout:单个sql执行超时transaction timeout:事务执行超时,一个事务中可能包含多个sqlget connection timeout:从连接池中获取链接超时读完此文,你将彻底掌握各种超时产生的根本原因,以及对应的解决方案。1 connectTimeout与socketTimeoutconnect timeout和socket timeout都属于TCP层面的超时。以mysql为例,我们可以在jdbc url中指定connectTimeout和socketTimeout。如:...阅读全文

博文 2020-07-03 19:41:01 腾讯云

背景 又是一年一度的秋季校招开始了,以往的校招各个公司都会在公司现场或者学校现场安排学生进行现场面试?但是今年由于疫情的原因,不允许让同学在现场进行一个面试,所以今年的面试形式就从线下转到了线上,面试形式的转变,但是我们考核学生的方式依旧没有转变。校招的同学和社招的同学有很大的不同,他们没有丰富的工作经验,没有太多的项目经历,那么我们如何去衡量一个校招的同学呢?那就是基础和潜力,怎么去理解基础呢?俗话说不积跬步,无以至千里,不积小流,无以成江海,如果没有一个好的基础那么怎么才能成为一个优秀的工程师呢。如何去考察一个学生基础的好坏呢?我觉得有三个方面比较重要,计算机网络,操作系统以及算法和数据结构,通常来说计网考察得特别多,常见的一些问题:网络模型分层TCP和UDP的区别TCP三次握手和四次挥...阅读全文

博文 2020-09-06 22:35:04 mp.weixin.qq.com

聊聊 TCP 中的 KeepAlive 机制

服务端的系统设置中经常会和底层协议打交道,我们有必要重温一下曾经那些“听过”却不熟悉的名词。今天聊的话题是 KeepAlive,在实际应用中又是怎么使用的?为什么有Keepalive?大家都做过电梯吧,假设电梯来了你先进去,你朋友还没进来,过一段时间电梯门就会自动关闭,你应该没遇到过哪个电梯会一直等你朋友来了才关门的。如果真是那样,那别的楼层的小姐姐们会炸了~我们举个编程中的例子来解释下,我编写了一个服务端程序S和一个客户端程序C,客户端向服务端发送一个消息:客户端发送消息服务端收到消息后一看,瞧给你牛*的,然后没理客户端,傻狗客户端一直在等待,但是不知道是不是服务器挂掉了?这时候TCP协议提出一个办法,当客户端端等待超过一定时间后自动给服务端发送一个空的报文,如果对方回复了这个报文证明连接...阅读全文

博文 2020-11-04 19:28:37 知乎

Spring AOP中JDK和CGLib动态代理哪个更快?

一、背景 昨天一位知识星球的小伙伴面试的时候被问到:Spring AOP中JDK和CGLib动态代理哪个效率更高?在知识星球整理了一下,今天特分享出来,供大家参考!对知识星球有兴趣的可以了解一下: 二、基本概念 首先,我们知道Spring AOP的底层实现有两种方式:一种是JDK动态代理,另一种是CGLib的方式。 自Java 1.3以后,Java提供了动态代理技术,允许开发者在运行期创建接口的代理实例,后来这项技术被用到了Spring的很多地方。 JDK动态代理主要涉及java.lang.reflect包下边的两个类:Proxy和InvocationHandler。其中,InvocationHandler是一个接口,可以通过实现该接口定义横切逻辑,并通过反射机制调用目标类的代码,动态地将横...阅读全文

博文 2021-06-12 22:41:44 juejin.cn

tcpdump抓包规则命令大全-kxt314

说是大全其实我列取得只是一些常用的命令与大家分享。 下面的例子全是以抓取eth0接口为例,如果不加”-i eth0”是表示抓取所有的接口包括lo。 1、抓取包含10.10.10.122的数据包 # tcpdump -i eth0 -vnn host 10.10.10.122 2、抓取包含10.10.10.0/24网段的数据包# tcpdump -i eth0 -vnn net 10.10.10.0/24 3、抓取包含端口22的数据包# tcpdump -i eth0 -vnn port 22 4、抓取udp协议的数据包# tcpdump -i eth0 -vnn udp 5、抓取icmp协议的数据包# tcpdump -i eth0 -vnn icmp 6、抓取arp协议的数据包# tcpd...阅读全文

博文 2021-05-29 14:44:06 ChinaUnix博客

大小端序及socket通信字节序问题_憧憬,思考,奋斗,飞翔

大端小端序概念 讲概念前,先插个小东西,之前搞混高字节、高地址、低字节、低地址这几个概念,之后理解大小端序就费劲了些。故画了下图: 大端序(big-Endian):高字节保存在内存的低地址,低字节保存在内存的高地址。 小端序(little-Endian):高字节保存在内存的高地址,低字节保存在内存的低地址。 概念较抽象,可结合下图来理解: 大小端优缺点 存在即是合理,大端的优点就是小端的缺点,反之亦然。 大端优点:符号位在所表示数据内存的第一个字节,便于快速判断数据的正负和大小。 小端优点:内存的低地址存放数据低字节,大数强制转换小数时效率高,直接丢弃高地址数据即可;cpu在做数值运算时依次从低到高取数运算即可,效率高效。 Socket通信字节序问题 IP/TCP网络传输时采用网络字节序(即...阅读全文

博文 2021-08-30 20:15:30 CSDN博客_socket 大小端

用nio实现Echo服务

今天突然间想用nio实现个Echo服务,程序实现起来实现不算困难,但跑起来后,在Server端的ServerSocket完成accept之后,我的CPU总是跳到100%。嗯,小郁闷,后来,才发现自己在Server端注册了多余的监听事件SelectionKey.OP_WRITE,改过来后好多了,希望记住这个教训。 EchoServer.java package edu.dlut.zxf.nio; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.Select...阅读全文

博文 2021-08-27 16:09:43 51CTO.COM

NullPointerException 没有堆栈 - cdfive

周五在公司搭好的ELK上查看日志,组长让看看其中NullPointerException出现很多的原因。 通过NullPointerException搜索,点看其中一个查看,发现异常的信息就一行java.lang.NullPointerException,并没有堆栈信息。 看了几个都没有,然后翻代码看记日志的地方,调用了日志基础工程的一个方法,异常对象通过封装传了进去,其中异常信息属性取值用的是Throwables.getStackTraceAsString(e),这是guava包提供的方法,点进去看是取了所有堆栈信息的。 那么问题来了,为什么堆栈信息没显示出来呢? 百度了下,关键字:NullPointerException 没有堆栈 找到类似的问题,发现是JVM虚拟机对异常信息进行了优化,...阅读全文

博文 2021-09-24 11:42:35 博客园