• 等级
  • 254287 访问
  • 123 原创
  • 49 转发
  • 11199 排名
  • 406 评论
  • 364 获赞

编程实现一个比较任意两个软件版本号大小的函数

如 1.2.3a 和 1.2.4b 我写的方法,各位大大还有啥好的办法留言一下. /** * * 编程实现一个比较任意两个软件版本号大小的函数,如 1.2.3a 和 1.2.4b * 当opt1大于opt2时返回true,当opt1小鱼opt2时返回false * * @param opt1 * @param opt2 * @r...

2018-09-21 15:44:15

Netty实战开发(6):Netty整合Zookeeper实现分布式服务发现与注册

1:Zookeeper基础 安装zookeeper。当然,很多时候我们会在Windows上开发,所以,我们需要在本地搭建一个zookeeper环境。方便开发过程中的测试。 首先我们去Apache上下载zookeeper。https://zookeeper.apache.org/ 下载下来后解压得到如下文件 打开conf里面的zoo_simple.cfg ,拷贝一份,重新命名为zoo.cfg修改如...

2018-09-19 11:52:34

微服务架构设计基础-(1)微服务方法论和文化

微服务是最新的架构风格,有望解决我们以前的架构风格所遇到的所有问题。就像其他风格一样,它也有自己的挑战。下面我们来讨论的问题是如何在保持服务尽可能自主的同时实现微服务之间的耦合。在这里,将描述四个选项,并在结论中选择一个明确最好的方式。 对我来说,微服务是一种自主服务,它对一项业务能力负全部责任。完整的职责包括演示,API,数据存储和业务逻辑。Autonomous是我的关键词,通过使服务自治,可以...

2018-09-19 10:16:40

Netty实战开发(5):轻量级RPC开发

简介:什么是RPC? RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。 RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC。会两方面会直接影响 RPC 的性能,一是传输方式,二是序列化。 Net...

2018-09-18 12:34:43

Apache Curator实战

Apache Curator入门实战 Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量。 1.Zookeeper安装部署 Zookeeper的部署很简单,如果已经有Java运行环境的话,下载tarball解压后即可运行。 [root@vm Temp]$ wge...

2018-09-17 17:06:16

分布式 - RPC同步和异步说明

要实时就用同步,要吞吐率就用异步。 同步调用 流程略 实现负载均衡:连接池中建立了与一个RPC-server集群的连接,连接池在返回连接的时候,需要具备负载均衡策略。 实现故障转移:连接池中建立了与一个RPC-server集群的连接,当连接池发现某一个机器的连接异常后,需要将这个机器的连接排除掉,返回正常的连接,在机器恢复后,再将连接加回来。 实现发送超时:因为是同步阻塞调用,拿到一个...

2018-09-13 17:20:12

mybatis异步操作数据库

很多时候我们需要用mybatis来做数据库orm,基于mybatis 优秀的基因,我们能够轻松的搞定数据库的orm。 但是mybatis一般的使用方法都是一个同步查询,主线程调用数据库查询操作,等待返回结果,这样在高并发网络情况下代价是很高的。所以我们需要封装一套提供异步查询回调机制。 异步操作。提到异步操作,我们就得提到回调接口。回调接口就是通过在主线程监听其他线程执行完的结果取得返回值。或...

2018-09-13 10:54:43

如何优雅地用Redis实现分布式锁

如何优雅地用Redis实现分布式锁 锁是一个很重要也很基础的概念,锁可以看做是多线程情况下访问共享资源的一种线程同步机制。这是对于单进程应用而言的,即所有线程都在同一个JVM进程里的时候,使用Java语言提供的锁机制可以起到对共享资源进行同步的作用。如果分布式环境下多个不同线程需要对共享资源进行同步,那么用Java的锁机制就无法实现了,这个时候就必须借助分布式锁来解决分布式环境下共享资源的同步问...

2018-09-05 16:01:08

Connection reset by peer的常见原因

Connection reset by peer的常见原因: 1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭; 如果知道实际连接服务器的并发客户数没有超过服务器的承载量,则有可能是中了病毒或者木马,引起网络流量异常。可以使用netstat -an查看网络连接情况。 2)客户关掉了浏览器,而服务器还在给客户端发送数据; 3)浏览器端按了Stop; 这两种情况一般不会...

2018-08-28 18:11:24

Netty实战开发(4):自定义消息池化处理

通过上篇《Netty实战开发(3):自定义消息》我们都知道,客户端发送过来的消息我们服务器通过自定义编解码实现解析每条消息,并且做对应的处理,但是上篇介绍的重点是消息的编解码,接下来我们介绍消息的处理,并且利用线程池化技术实现消息队列处理。 首先我们来复习一下线程池模型。...

2018-08-26 15:39:06

给你一个小于 60 位的整数 p ,求大于 p 的最小的数 p1 ,使得 p1 中包含数 2333 。

哈哈,没事瞎写写算法,忘大家来修复呀。 题目:给你一个小于 60 位的整数 p ,求大于 p 的最小的数 p1 ,使得 p1 中包含数 2333 。 public class Test { public static void main(String[] args) { System.out.println(test("1999999999999")); } ...

2018-08-10 11:04:23

Netty实战开发(3):自定义私有协议栈

自定义私有协议栈开发,其实就是自己封装一套符合自定义数据包结构的编码器和解码器,从而满足我们的业务需求。 通常我们数据包拆分,一部分为包头,一部分为包体,一个数据包就有两部分构成。 如图所示 对于数据包,我们进行细化,每个部分都有很多基本元素组成,利用这些基本元素,我们能够实现通过解析数据包和封装数据包,能轻松的实现 自定义协议栈的开发。 在包头中我们用 一个short类型来表示魔...

2018-07-31 14:50:40

Ubuntu 16.04 x64搭建GitLab服务器

很多公司管理项目代码可能用svn,若是用过git后估计就不想回去用svn了,关于它们谁更好用,在这我们就不讨论了,我们来看一下如何在自己的服务器搭建一台gitlab服,来管理相关代码。 本文主要记录在Ubuntu 16.04操作系统中搭建GitLab服务器的操作记录,以下是操作步骤(主要参考资料:https://about.gitlab.com/downloads/#ubuntu1604)。 ...

2018-07-27 13:58:54

linux 强大的 ps命令

ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。 选项 -a:显示所有终端机下执行的程序,除了阶段作业领导者之外。 a:显示现行终端机下的所有程序,包括其他用...

2018-07-17 11:32:52

idea 创建maven子项目报错

错误日志 Failed to create a Maven project: '******/pom.xml' already exists in VFS 产生原因: 在创建maven子项目的步骤中,需要手动拼接父项目和子项目路径

2018-07-08 18:36:35

ZooKeeper分布式锁

分布式锁的由来 在程序开发过程中不重点内容得不考虑的就是并发问题。在java中对于同一个jvm而言,jdk已经提供了lock和同步等。但是在分布式情况下,往往存在多个进程对一些资源产生竞争关系,而这些进程往往在不同的机器上,这个时候jdk中提供的已经不能满足。分布式锁顾明思议就是可以满足分布式情况下的并发锁。 下面我们讲解怎么利用zk实现分布式锁。 2.实现思路: 2.1 zk简单介绍: ...

2018-07-03 18:15:38

exclusions来进行排除依赖

xclusions 但依赖调节并不解决所有问题,我们还需要exclusions来进行排除依赖。 例如这样一个情况,工程中引入了A,A依赖B,但是B的版本过旧。 此时可以使用exclusions排除该传递性依赖,并显示声明一个最新版本的B依赖。 比如这样: <dependency> <groupId>com.lowagie</groupId>...

2018-07-02 11:28:29

Java中Error与Exception的区别

Error类和Exception类都继承自Throwable类。 Error的继承关系: Exception的继承关系: 二者的不同之处: Exception: 1.可以是可被控制(checked) 或不可控制的(unchecked)。 2.表示一个由程序员导致的错误。 3.应该在应用程序级被处理。 Error: 1.总是不可控制的(unchecked)。 2.经常用来用于表示...

2018-06-28 18:31:39

linux重定向总结:如何将shell命令的输出信息自动输出到文件中保存

在做批量实验室,例如跑批量MR的作业,我们会写好shell脚本,然后启动脚本,等所有作业执行完再去看结果,但是这些执行时的信息如何保存下来到文件中呢?下面这个命令可以完成这个任务。 sh batchjob.sh 2>&1 | tee mylog.log   其中sh batchjob.sh:表示要执行的shell脚步;0,1,2:在linux分别表示标准输入、标准输出和标准错误信...

2018-06-28 14:40:11

Linux grep

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 -a 不要忽略二进制数据。 -A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。 -b 在显示符合范本样式的那一行之...

2018-06-28 14:39:11

twjitm

望一切努力孕育着我的梦想!你要相信我,我要变传说
关注
  • 计算机软件/Java服务器开发工程师
  • 中国 北京 海淀区
奖章
  • 持之以恒