9 这瓜保熟么

尚未进行身份认证

我要认证

平常心

等级
TA的排名 7k+

java向多线程中传递参数的三种方法详细介绍

在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别(java中如何给多线程中子线程传递参数)。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。本文就以上原因介绍了几种用于向线程传递数据的方法,在下一篇文章中将介绍从线程中返回数据的方法。欲先取之,必先予之。一般在使用线程时都需要有一些初始化数据,然后

2020-06-04 10:30:41

NIO单一长连接——dubbo通信模型实现

前言前一段时间看了下dubbo,原想将dubbo详细总结下来,从使用简介、SPI扩展机制、Spring的schema扩展、启动过程、动态注册与发现、分层设计、通信设计、线程模型等方面来总结,但是越看越发现架子太大,涉及的点太广,反而RPC的思想其实已经印象深刻了,再来总结这么多的点似乎不太值得,因为不懂的东西才是最有价值的,所以有了本文,将个人认为dubbo中比较有特色的通信模型总结于此,本文是一个demo,当然不乏一些脑补的东西在里面,如您偶然阅读此文发现问题,还请不吝指出问题所在。BIO通信缺陷

2020-06-03 15:34:16

Dubbo协议的概念

协议的概念协议是两个网络实体进行通信的基础,数据在网络上从一个实体传输到另一个实体,以字节流的形式传递到对端。在这个字节流的世界里,如果没有协议,就无法将这个一维的字节流重塑成为二维或者多维的数据结构以及领域对象。协议是什么协议是双方确定的交流语义,比如:我们设计一个字符串传输的协议,它允许客户端发送一个字符串,服务端接收到对应的字符串。这个协议很简单,首先发送一个4字节的消息总长度,然后再发送1字节的字符集charset长度,接下来就是消息的payload,字符集名称和字符串正文。发送一个

2020-06-03 15:21:57

Socket-单工、半双工和全双工

单工,就是两者通信单向进行,只能一个主动发信号一个被动去接受,不能角色互换。举例:行人只能接受红绿灯的信号但是不能向红绿灯发信号,红绿灯只能发出信号不能接收信号。半双工,两个事物都可以发信号,但是不能同时进行。举例:类似于踢足球,只能一个传给另一个人,两个人不能同时传球,球只有一个,信道只有一个。全双工,两个事物可以同时发送和接受信息。举例:两个人互相打电话,你可以说也可以听电话。在Java里套接字socket就是全双工的。单工、半双工和全双工根据通信双方的分工和信号传输方向可将.

2020-06-03 14:31:20

java队列的数组实现

public class 数组Queue { public static void main(String[] args) { MyQueue queue = new MyQueue(); queue.init(5); queue.endQueue(1); queue.endQueue(2); queue.endQueue(3); queue.endQueue(4); queue.e.

2020-06-03 00:53:57

按层打印二叉树

按层打印二叉树,即同层节点从左至右打印每个节点。例如下图,打印结果是:1-2-3-4-5-6-7import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;public class TreePrint { public static void main(String[] args) { TreeNode treeNode.

2020-06-01 00:47:00

链表中对应位相加(进位)

题目:给定两个单链表,单链表中的数都是非负数。链表中的数字都是反向存储的,,每个节点都是个位数,将链表对应的位相加,返回最终的结果;举例:Input:(2 -> 4 -> 3) + (5 -> 6 -> 4)Output:7 -> 0 -> 8解题思路:  其本质是将链表1和链表2反转之后,对应位相加且进位,结果进行反转,比如上述例子中:342+465 = 807;但由于链表是单链表,不能从后往前遍历,因此可以转换为从前向后加,向后进位,即243..

2020-05-31 23:22:32

TCP粘包拆包的产生原因分析及解决思路

在进行Java NIO学习时,发现,如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以及拆包的问题。我们都知道TCP属于传输层的协议,传输层除了有TCP协议外还有UDP协议。那么UDP是否会发生粘包或拆包的现象呢?答案是不会。UDP是基于报文发送的,从UDP的帧结构可以看出,在UDP首部采用了16bit来指示UDP数据报文的长度,因此在应用层能很好的将不同的数据报文区分开,从而避免粘包和拆包的问题。而TCP是基于字节流的,虽然应

2020-05-28 15:36:11

IO多路复用机制:select、poll、epoll的区别

1.单个进程打开的文件描述符(fd文件句柄)不一致​ select :有最大连接数限制数为1024,单个进程所能打开的最大连接数由FD_ZETSIZE宏定义。​ poll:poll本质上与select没有区别,但是它没有最大连接数的限制,原因是它是基于链表来存储的。​ epoll:虽然连接有上限,但是很大,1G内存的机器可以打开10万左右的连接,以此类推。2.监听Socket的方式不一致select :轮询的方式,一个一个的socket检查过去,发现有socket活跃时才进行处理,当线性

2020-05-28 15:28:05

java:两个二叉树的合并实现

给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:输入: Tree 1 Tree 2 1 2 ...

2020-05-27 17:06:45

链表节点加法

链表有序递增,每个节点都是0-9内的数字,相加的时候涉及进位问题,如:链表1:123链表2:789结果链表:81012思路:同时遍历2个链表,计算2个链表同一位置的节点之和,判断是否<10,如果小于不进位,直接new个node节点如果>10 那么涉及进位问题,需要前插进位的1节点,next节点为和10取余/** * @author yuchen * @version 1.0 * @date 2020-05-26 11:20 */public cla

2020-05-26 12:42:21

约瑟夫问题(java实现)

约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)在下面的代码中,解决的是n个人排成一圈,这n个人的序号分别是0 ~ n-1, 给定一个数m,从头开始报数,每报到m-1时,这个人出列,然后下个人从0开始报数,直到最后一个人留下,求最后一个人的序号。java实现代码如下:public class YueSeFu { public static void main(String[] args) {.

2020-05-26 10:32:13

MySQL间隙锁、Next-Key Lock主要知识点

总体来说,就是MySQL innoDB引擎要在RR隔离级别之下解决幻读的问题,所以引入了间隙锁。在进行当前读的情况下,对读出的数据的附近的一整个范围(“间隙”)进行加锁,保证满足查询条件的记录不能被插入。1、幻读与innoDB的隔离级别(为什么会出现间隙锁这个概念)根据 ISO/ANSI SQL92 所定义的标准,四级隔离级别中,只有在可串行化的级别之下,才可以防止幻读的出现。隔离级别所谓幻读,指的是事务A执行过程中,由于事务B并发插入了一条新数据,事务A两次读数据的内容不一样,出现

2020-05-23 18:59:59

利用动态代理实现简单的RPC框架

提到 JAVA 中的动态代理,大多数人都不会对 JDK 动态代理感到陌生,Proxy,InvocationHandler 等类都是 J2SE 中的基础概念。动态代理发生在服务调用方/客户端,RPC 框架需要解决的一个问题是:像调用本地接口一样调用远程的接口。于是如何组装数据报文,经过网络传输发送至服务提供方,屏蔽远程接口调用的细节,便是动态代理需要做的工作了。RPC 框架中的代理层往往是单独的一层,以方便替换代理方式(如 motan 代理层位于com.weibo.api.motan.proxy ,dubb.

2020-05-23 00:37:33

Java中switch支持字符串原理

Java7之后的版本才开始支持switch字符串,但是内部实现case还是基于整形变量的匹配。下面编写一个使用switch字符串的sample来看下。package org.sun.sample.pojo;/** * Created by aron on 16-4-11. */public class SwitchSample { public static final String RED= "RED"; public static final String BLUE=

2020-05-21 21:51:13

RocketMq顺序消息原理

关键特性以及其实现原理一、顺序消息消息有序指的是一类消息消费时,能按照发送的顺序来消费。例如:一个订单产生了 3 条消息,分别是订单创建、订单付款、订单完成。消费时,要按照这个顺序消费才有意义。但同时订单之间又是可以并行消费的。假如生产者产生了2条消息:M1、M2,要保证这两条消息的顺序,应该怎样做?你脑中想到的可能是这样:你可能会采用这种方式保证消息顺序M1发送到S1后,M2发送到S2,如果要保证M1先于M2被消费,那么需要M1到达消费端后,通知S2,然后S2再将M2发送到消费端

2020-05-21 21:42:45

序列化框架的选型和比对

jdk序列化的缺点1、无法跨语言这一缺点几乎是致命伤害,对于跨进程的服务调用,通常都需要考虑到不同语言的相互调用时候的兼容性,而这一点对于jdk序列化操作来说却无法做到。这是因为jdk序列化操作时是使用了java语言内部的私有协议,在对其他语言进行反序列化的时候会有严重的阻碍。2、序列化之后的码流过大jdk进行序列化编码之后产生的字节数组过大,占用的存储内存空间也较高,这就导致了相应的流在网络传输的时候带宽占用较高,性能相比较为低下的情况。Hessian序列化框架Hessian.

2020-05-21 21:39:05

Java求解所有的可能组合列出来,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。

Java求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包动态规划问题求解)输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。之前看到有同学写该问题的Java版本,但是照着运行了一下,发现还是存在问题,经过自己的查资料研究,特写出Java版本的正确解答;该问题初始大概的想法就是:1)第一种情况,含有n,则递归调用函数求 从1,2,3 到n-1取任意几个数,组成m-n;...

2020-05-21 16:38:24

多个单列索引和联合索引的区别详解

https://blog.csdn.net/Abysscarry/article/details/80792876

2020-05-20 11:47:32

【官方文档】mysql gap lock next-key lock

innodb lockinggap lockGap locking is not needed for statements that lock rows using a unique index to search for a unique row. (This does not include the case that the search condition includes only some columns of a multiple-column unique index; in t

2020-05-19 16:58:19

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。