记录精彩的程序人生
存档:
2020 年 05 月 (13)
equals在Java中含义 首先要解释清楚这个,equals方法在Java中代表逻辑上的相等,什么叫逻辑上的相等?这个就涉及到Java本身的语法特性。 我们知道,Java中存在着==来判断基本数据类型的相等,但是对于对象,==只能判断内存地址是否相等,也就是说是否是同一个对象: int a = 10000; int b = 10000; // 对于基本数据类型, == 可以判断逻辑上的相等 System.out.println(a == b); Integer objA = 10000; Integer objB = 10000; Integer objA1 = objA; // 对于类实例, == 只能判断是否为同一个实例(可以视为内存地址是否相等) System.out.println(objA == objB); System.out.println(objA == objA1); 注:这里我们不讨论Integer对于-128~127的缓存机制。 结果显而易见: 但是明明objA和objB逻辑上是相等的,凭什么你就返回fals?这时就诞生了一种需求,对于Java中的对象,....
1.导入reflectasm的依赖 <dependency> <groupId>com.esotericsoftware</groupId> <artifactId>reflectasm</artifactId> <version>1.11.7</version> </dependency> 2.浅复制代码 import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.esotericsoftware.reflectasm.MethodAccess; public class BeanCopyUtils { private static Map<Class<?>, MethodAcc....
field = new JFormattedTextField(); field.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { Runnable format = new Runnable() { @Override public void run() { String text = field.getText(); if(!text.matches("\\d*(\\.\\d{0,2})?")){ field.setText(text.substring(0,text.length()-1)); } } }; SwingUtilities.invokeLater(format); } @Override public void removeUpdate(DocumentEvent e) { } @Override public void changedUpdate(DocumentEvent e) { } }....
You can save time and reduce other costs associated with Java development by taking advantage of open source Java projects. In this new series, Jeff Friesen introduces a variety of lesser known open source Java projects that can benefit your Java software. Jeff begins the series by looking at Bernhard Pauler's balloontip project, which you can use to add Windows XP-style informational "balloons" to your Swing-based Java applications. | Open source licenses | | Open source software is usually sub....
https://blogs.oracle.com/geertjan/farewell-to-space-consuming-weird-tabs https://blogs.oracle.com/geertjan/farewell-to-space-consuming-weird-tabs-part-2 https://github.com/GeertjanWielenga/AwesomeApp/tree/master/Core/src/org/aa/core
1.沪市市值大大的超过深市。 2.沪市权重股多,对宏观经济运行状态更有代表作用。 3.沪市成交量大。 4.上海是中国经济中心,上交所又在深交所前成立,一开始就占有主动。 由于上述原因,大盘一般是指上证指数。 所谓大盘为什么是上证指数而不是深证成指呢 所谓大盘是指沪市的“上证综合指数”和深市的“深证成份股指数”的股票。大盘指数是运用统计学中的指数方法编制而成的,反映股市总体价格或某类股价变动和走势的指标。 上证综指,顾名思义是在上海市场交易的股票。而中国还有在深圳市场交易的股票,所以大盘不是单指上证综指。 但是一般来说,上证综指和深成指涨跌幅相似,所以就直接用上证综指的点数来代表所有股票走势的情况。。
很多股民在选股时期都忌讳买高价股,他们认为一只股票价格高就存在着风险,随时可能出现股票持续大跌的行情,但是他们并不了解一只股票高价有高价的理由,低价有低价的问题,贵有贵的道理,便宜的股票也有存在便宜的原因,尤其在A股市场大部分的股民投资首要可考虑的就是股票价格不能太贵,又要价格处在较低的位置,既然如此为何不去买低于三元的个股不是更好吗?这些股票经过前期持续下跌之后股价低,下方的跌幅已不深,适合对于担心股票跌又不喜欢高价股的股民投资,但为什么低于三元以下的股票慢慢的越来越不受资金喜欢了? 随着注册制的推进,市场上股票的数量越来越多,在有限的增量资金情况下资本市场不断地从发展阶段走向成熟时期,好的股票就越来越受到资金追捧,股价会越涨越高,越涨越贵,差的股票除了自身存在问题也会遭到资金的抛弃,这种股票只会不断的创造新低甚至面临着推迟的风险,低于3元以下的股票在不断的增多,但是这种低于3元以下的个股随着关注的资金开始减少,后期反而上涨存在难度,也存在着各种爆雷的风险,买入这些股票并不是投资。 第一、低价股风险更高。 我们可以从3700多只股票中发现大部分的低价股之所以处在低价主要在于上市公司业....
前面三章介绍了Netty的一些基本用法,这一章介绍怎么使用Netty来实现一个简单的长连接demo。 Netty入门教程——认识Netty Netty入门教程2——动手搭建HttpServer Netty入门教程3——Decoder和Encoder 关于长连接的背景知识,可以参考《如何使用Socket实现长连接》 一个简单的长连接demo分为以下几个步骤: 创建连接(Channel) 发心跳包 发消息,并通知其他用户 一段时间没收到心跳包或者用户主动关闭之后关闭连接 看似简单的步骤,里面有两个技术难点: 如何保存已创建的Channel 这里我们是将Channel放在一个Map中,以Channel.hashCode()作为key 其实这样做有一个劣势,就是不适合水平扩展,每个机器都有一个连接数的上线,如果需要实现多用户实时在线,对机器的数量要求会很高,在这里我们不多做讨论,不同的业务场景,设计方案也是不同的,可以在长连接方案和客户端轮询方案中进行选择。 如何自动关闭没有心跳的连接 Netty有一个比较好的Feature,就....
前言: 集群之间的主节点与从节点之间实现数据的最终一致性。节点与节点之间实现数据的异步同步。节点与节点之间怎样才能感知对应节点状态。这就要求节点每隔一段时间定时的发送心跳包去感知对方的服务健康状态。一般在设置几个心跳包之后我们就可以认为对方节点已经挂了,我们就可以将该节点从集群中踢出去。 我们有个疑问,比如说之前的多客户端通信demo,当客户端断开与服务器连接的时候会触发handlerRemoved方法,那么我们就知道该服务的状态了。为什么还需要心跳包去感知呢? 真实情况远比我们想象中的复杂,比如我们的客户端是移动手机并且已经建立好了连接,当打开飞行模式(或者强制关机)的时候我们就无法感知当前连接已经断开了(handlerRemoved不会触发的), 当我们客户端和服务器端进行通信的时候,关闭网络或者打开飞行模式,此时通过handlerAdded方法和handlerRemoved是无法判断服务是否已经宕掉的。那么就引出了本文的内容。 什么是心跳检测? 判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经宕掉。用于....
使用netty实现多客户端连接并且互相通信的需求: 1.服务器启动,n多个客户端与服务器进行连接,一个客户端上线之后,服务器端控制台会打印xx上线了,其他的客户端控制台打印xx上线了。如果一个客户端下线了,服务器端的控制台上打印,xx下线了,其他的客户端控制台打印xx下线了。 2.多个客户端都上线之后,一个客户端(比如说A)给服务端发送消息,那么客户端(比如说A,B,C,包括自己本身)都会收到消息,对于A来说,会标志此消息是自己发送自己的,其他的客户端则会收到具体的消息。 服务器代码: import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; public class MyChatSer....
最小化服务端启动demo 这篇文章通过图文+视频的方式介绍Netty服务端启动流程,习惯看视频操作,体验敲代码快感的小伙伴可以直接翻到文末哦~ 我们先来看一下最小化服务端启动demo,我们直接来上代码,然后逐个解释 NettyServer.java public class NettyServer { public static void main(String[] args) { NioEventLoopGroup boosGroup = new NioEventLoopGroup(); NioEventLoopGroup workerGroup = new NioEventLoopGroup(); ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap .group(boosGroup, workerGroup) .channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializer<NioSoc....
序号名称次数 1中国平安106 2贵州茅台105 3三安光电95 4中信证券92 5兆易创新82 6闻泰科技77 7恒瑞医药77 8南京证券77 9华友钴业66 10中信建投65 11招商银行56 12长电科技55 13中科曙光54 14山东黄金54 15中国软件53 16晶方科技53 17伊利股份50 18海螺水泥49 19恒生电子48 20隆基股份47 21华泰证券46 22三一重工39 23汇顶科技37 24通威股份35 25用友网络34 26复星医药34 27生益科技31 28中国卫星29 29烽火通信29 30海通证券29 31财通证券26 32药明康德26 33保利地产26 34京沪高铁25 35天风证券25 36华胜天成23 37红塔证券23 38中天科技22 39江南嘉捷22 40工业富联22 41均胜电子21 42鲁抗医药21 43海正药业21 44兴业银行20 45太极实业20 46紫金矿业19 47亨通光电18 48中国国旅17 49北大荒17 50洛阳钼业16 51中国卫通16 52中银证券15 53金发科技15 54韦尔股份15 55中国建筑15 56士兰....
FutuOpenD界面上提示: 日志显示:牛牛账号在别处登录,已退出登录 目前大概一两天出现一次的频率。 捕获断开连接事件,发邮件提醒(手动处理),可以部分解决OpenD崩溃的问题 将命令行版本的OpenD嵌入到一个单独的程序里,程序里连接OpenD,如果捕获到断开连接事件,关闭之前的OpenD进程,重启一个新的OpenD进程。 就是用一个单独的程序监控OpenD,并在OpenD出问题是负责重启。 策略程序里也要加入代码,捕获断开连接事件并重连OpenD。