自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

独自登高楼 望断天涯路

学lucene 学hadoop,Google/baidu搜:“独自登高楼”,进入本博客

  • 博客(543)
  • 资源 (2)
  • 收藏
  • 关注

原创 golang使用rabbitmq(六)RPC

之前的章节都是在说一方发指令,另一方执行这种情况,指令发送者不关系指令的完成情况,或者不需要阻塞去获得结果,结果异步通知。但很多时候是需要阻塞得去获得执行结果的,比如http的请求。在rabbitmq使用RPC的关键就是ReplyTo属性err = ch.ExchangeDeclare("rpc_topic", amqp.ExchangeTopic, true, false, false, ...

2019-09-05 16:36:17 1198

原创 golang使用rabbitmq(五)Topic模式

简介上一篇用可选择接受的direct交换器代替了广播接受到fanout交换器,但是direct模式还是有局限性,它不能通过多个条件路由。比如linux的日志系统,它不仅分级别(info/warn/crit…),而且还分来源设备(auth/cron/kern…)。我们需要一个非常复杂度组合,比如想接受来自cron的critical日志和来自kern的所有日志。当然topic交换器可以实现这一...

2019-08-14 10:10:38 2167 1

原创 golang使用rabbitmq(四)路由功能

路由上一章我们讲的是一个简单的日志系统,把日志广播到每一个接受者。在这一章增加一点功能,为了节省磁盘,只有告警日志和错误日志才进行存储,其他日志就打印到控制台就可以了。绑定上一章我们也讲过绑定,绑定是让队列和交换器之间的关系。通俗点说就是让队列只对它所绑定的交换器中的信息感兴趣。for _, key := range os.Args[1:] { log.Printf("Binding ...

2019-06-18 14:49:05 1515

原创 golang使用rabbitmq(三)发布/订阅

上一篇文章中讲了工作队列,但是工作队列只能做到一个生产者的消息被消费者消费一次。现在要实现一个生产者的消息被两个不同的消费者同时消费,我们把这种模式叫做发布订阅。交换器RabbitMQ消息传递模型的核心是生产者永远不会把消息直接发送到某个队列上,甚至根本不知道消息是否发送到队列上。生产者只向交换器发送消息。交换器来决定怎么处理消息,是把消息传递到特定的队列,还是把消息传到多个队列,或者直接丢...

2019-06-17 10:38:32 3221 1

原创 golang使用rabbitmq(二)工作队列

在helloworld那一章讲了一个简单的一个生产者一个消费者的模型,但生产系统中很多时候是多个生产者或者多个消费者同时处理的。生产者 body := bodyFrom(os.Args) err = ch.Publish("", q.Name, false, false, amqp.Publishing{ DeliveryMode: amqp.Persistent, ContentT...

2019-06-10 10:52:12 2529

原创 golang使用rabbitmq(一)helloworld

modulerequire github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94连接rabbitmq conn, err := amqp.Dial("amqp://admin:[email protected]:5672/") defer conn.Close()打开通道 ch, err := co...

2019-06-06 09:33:38 3618 1

原创 rust和go该如何选择

为了内存安全引入所有权概念,为了圆所有权这个坑,引入生命周期,各种BOX。艰难的圆着所有权的坑,因此在rust群里经常谈论的大部分是语法问题,这是其他所有语言都不常见的。虽然一次编译完就可以安心的跑下去,但是编译的过程何其糟心,心智负担和掉发率都居高不下。更有点奇怪的是很多人把这种奇技淫巧当作是高端技术,茴香豆的十八种写法。对比之下更喜欢大道至简的go,再复杂度应用场景简单组合一下就可以实...

2019-05-16 15:15:49 17202 2

原创 idea升级到2019.1之后注解生成的代码无法提示和自动完成

idea升级到2019.1之后注解生成的代码无法提示和自动完成遇到这种问题不要慌,只是lombok插件需要更新到对应的版本而已

2019-04-23 10:12:57 7384

原创 rust循环引用问题

循环引用的时候需要使用weak,弱引用,一般把上级作为弱引用加到下级里trait Sprite { fn draw(&self); fn update(&self);}struct Ball { game: RefCell<Weak<Game>>,}impl Sprite for Ball { fn draw(&...

2019-04-19 15:12:48 1781

原创 golang通过redis调用rust

golang的redis端要注意的是要先订阅回复,然后再发送请求。package mainimport ( "github.com/go-redis/redis")var wait = make(chan interface{})func main() { client := redis.NewClient(&redis.Options{ Addr: "w...

2019-04-18 12:04:13 844

原创 rust构建actix-web出现error: failed to run custom build command for `miniz-sys v0.1.11`

问题描述在初次使用actix-web时就遇到个大坑,cargo build或者cargo run时报错error: failed to run custom build command for `miniz-sys v0.1.11`process didn't exit successfully: `/Users/apple/Documents/mydream/rust/my-actix-...

2019-04-10 10:19:26 5002

原创 java实现golang类似的chan

java版本的CSP操作public class Chan&amp;amp;amp;lt;T&amp;amp;amp;gt; { private T message; private boolean empty = true; public synchronized T take() { while (empty) { try { wait()...

2018-11-12 14:52:26 2296 1

原创 java遗珠之try-with-resources

try-with-resources语句自动关闭实现了AutoCloseable或者 Closeable接口的资源,示例如下:public static void writeToFileZipFileContents(String zipFileName, String outputFileName) throws java.io.IOException { java.nio.chars...

2018-10-15 15:53:38 477

原创 java遗珠之多异常

catch可以同时捕获多个异常,示例如下: public void writeList() { // The FileWriter constructor throws IOException, which must be caught. PrintWriter out = null; try { System.out...

2018-10-15 14:33:56 411

原创 java遗珠之异常种类

异常总共分三种已检查异常,比如java.io.FileNotFoundException错误,java.io.IOError运行时异常,NullPointerException错误和运行时异常又统称为未检查异常已检查异常必须被处理或者throws,未检查异常不需要。但要注意的是未检查异常也是可以捕获处理的public class UncheckedException { ...

2018-10-13 21:25:55 354

原创 java遗珠之泛型七大限制

泛型的七大限制:不能使用原始类型实例化泛型类型参数化类型如下:public class OrderedPair&amp;amp;lt;K, V&amp;amp;gt; implements Pair&amp;amp;lt;K, V&amp;amp;gt; { private K key; private V value; public OrderedPair(K key, V value) { this.ke

2018-10-12 17:39:53 416

原创 java遗珠之泛型不可靠类型

不可靠类型可靠类型是在运行时包含所有完整信息的类型,包括原始类型,非泛型类型,原生类型和无边界通配符的调用。不可靠类型是编译时类型擦除移除了一些信息,比如不是无边界通配符的其他情况。一个不可靠类型在运行时没有完整可用的信息,堆污染当参数化的变量引用不是该参数化类型的时候就会产生堆污染,如果程序执行某些操作,编译器给出unchecked警告时,就会发生这种情况。如果unchecked警告产生...

2018-10-12 16:09:03 600

原创 java遗珠之泛型类型擦除

擦除规则泛型的作用之前已经介绍过了只是用于编译之前更为严格的类型检查,其他的一些特性也都是编译之前的,在编译之后泛型是会被擦除掉的。类型擦除所做的事情如下:如果是无界限的则会把类型参数替换成Object,如果是有界限的则会把类型参数替换为界限类型。插入一些类型转换来保证类型安全为了保证从泛型类型继承的多态性会增加一些桥接方法。泛型类型的擦除无边界类型擦除public class...

2018-10-12 12:19:27 398

原创 java遗珠之泛型通配符

我们在之前说过明确指定了泛型类型的参数之后,会把参数限制的很严格,通配符的作用就是放宽这种限制,有上限有界通配符&amp;lt;? extends A&amp;gt;,下限有界通配符&amp;lt;? extends B&amp;gt;,无界通配符&amp;lt;?&amp;gt;。上限有界是in变量,而下限有界是out变量,虽然通配符可以使用在字段,本地变量和方法中,但是类和外界的交互主要是方法,就限定的意义本身还是主要通过方法来体现,因...

2018-10-11 11:49:11 451

原创 java遗珠之泛型类型推断

类型推断类型推断是java编译器的一种能力,通过查看方法调用和相应的声明来决定什么样的类型参数或者参数是更为合理的调用。推断算法先确定参数的类型,分配结果或者返回的类型,最终推断算法查找适合所有参数最适合的类型。为了说明这点,来看下面的例子:public class Util { static &amp;lt;T&amp;gt; T pick(T a1, T a2) { retu...

2018-10-10 10:35:56 1451 1

原创 java遗珠之泛型继承

当给定两个具体的类型A和B,MyClass&amp;lt;A&amp;gt;和MyClass&amp;lt;B&amp;gt;没有任何关系,不管A和B是什么关系。你可以通过扩展泛型类或者实现泛型接口的interface PayloadList&amp;lt;E,P&amp;gt; extends List&amp;lt;E&amp;gt; { void setPayload(int index, P val); //...

2018-10-09 20:29:44 233

原创 java遗珠之泛型多边界

泛型的类型参数可以有多个边界&lt;T extends B1 &amp; B2 &amp; B3&gt;当其中一个边界是class的时候需要写在前面。class A { /* ... */}interface B { /* ... */}interface C { /* ... */}public class D&lt;T extends A &amp; B &amp; ...

2018-10-09 10:07:17 672

原创 gradle增加编译java的参数

有时候需要更改java的编译参数,如果会groovy的话很容易就可以通过java插件的源码写出相应的配置compileJava { options.compilerArgs &amp;lt;&amp;lt; &quot;-Xlint:unchecked&quot; &amp;lt;&amp;lt; &quot;-Xlint:deprecation&quot;}...

2018-10-08 19:12:28 6675 1

原创 java遗珠之泛型的作用

泛型总共有三个作用编译时进行更强大的类型检查编译时错误比运行时错误更好发现和处理消除类型转换List list = new ArrayList();list.add("hello");String s = (String) list.get(0);使用泛型之后去掉转换List&lt;String&gt; list = new ArrayList&lt;String&gt;...

2018-10-08 16:07:11 259

原创 java遗珠不做多继承的原因

类和接口一个显著的区别就是类有字段,而接口没有,如果多继承的两个超类有同样的字段,或者对同字段进行操作,那设计上就会很很混乱,再比如有同样的方法,给超类增加一个方法,还要考虑其他超类会不会重名,这无疑增大了coder的负担。但是多接口就不会,因为没有字段,因此处理上就简单很多,遇到同名的方法按照继承规则处理就可以了。因此不做多继承更多考虑的还是超类在字段上的访问冲突会增大coder的心智负担。...

2018-09-30 09:40:58 264

原创 java遗珠之接口方法

接口中的默认方法和抽象方法像示例方法一样可以被继承,当类的超类或者接口提供多个相同签名的默认方式时,java编译器就会用继承规则来解决命名冲突,这些规则遵循两个原则。实例方法优先于接口默认方法看下面的例子class Horse { public String identifyMyself() { return "I am a horse."; }}int...

2018-09-29 19:50:01 268

原创 java遗珠之接口默认方法

默认方法因为设计接口的时候不可能总是面面俱到,不用更改的。当接口需要增加一些方法的时候,那么实现接口的类就必须要重写来实现它,但是如果增加的功能仅仅通过接口原来的方法调用就可以实现的话,那么这种影响就更为多余,这正是默认方法需要解决的事情。示例如下:public interface TimeClient { void setTime(int hour, int minute, int...

2018-09-28 14:43:15 318

原创 java遗珠之重复注解

重复注解有时候你需要相同的注解在同一种类型或者定义上,这时候重复注解就发挥作用了。我来看个定时执行的代码@Componentpublic class ScheduledTasks { private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class); private stati...

2018-09-27 15:48:48 328

原创 java遗珠之@SafeVarargs

当使用泛型作为可变参数时,因为可变参数是数组类型,在编译之后泛型会被擦出掉,那么传入参数就成了unchecked的警告:如下例子public class VarargsWaring { private static List&amp;amp;lt;String&amp;amp;gt; useVarargs(List&amp;amp;lt;String&amp;amp;gt;... args) { return args.lengt...

2018-09-27 10:27:34 1504

原创 java遗珠之隐藏和覆盖

1.只有实例方法有覆盖,类方法,类变量和实例变量都是隐藏。2.覆盖的意思就是会调用具体的子类,而隐藏就看谁去调用。3.类变量可以隐藏实例变量,实例变量也可也隐藏类变量。4.类方法和实例方法无法相互覆盖和隐藏。例子如下:class Father { int a = 1; static void b() { System.out.println(&amp;amp;quot;fathe...

2018-09-26 18:36:23 247

原创 java遗珠之变强了的Comparator

一个更为强大的Comparator,可以说再也不用写侵入式的Comparable接口,而且连Comparator的lambda都可以不写了。我先来看需要排序的类:public class Person { public enum Sex { MALE, FEMALE } private String name; private LocalDat...

2018-09-26 16:05:26 359

原创 linux搭建ftp的两个坑

如果是内网的话搭建起来很容易,如果是公网环境那就会遇到两个坑,第一个坑PASV回传地址。1.PASV默认回传的地址是内网地址,这时候你就需要使用 pasv_address=xxx.xxxx.xxx.xxx指定一个ip地址。2.第二个坑就是指定了并不生效,这才是一个大坑,以为会是第一步的设置问题,其实不然,而是默认listen_ipv6=YES,同时默认了listen=YES,默认启用的是ip6...

2018-09-26 14:36:00 634

原创 java遗珠之lambda与方法重载

当lambda的目标类型不是很明确时,就需要根据一些特征来判断lambda的目标类型,比较常见的就是在方法重载的时候。与接口中的方法名无关,即使不同名,仍会同时匹配到两个接口public class OverloadLambda { interface Runable { void run(); } interface Runable2 { ...

2018-09-21 20:46:14 1324

原创 java遗珠之effectively final

在早期的版本中,本地类,匿名类访问本地变量都需要是final的。但是1.8版本中,本地类和匿名类,还有lambda表达式访问本地变量已经不用声明为final了,仅仅是不用明确写为final,其实还是final的,这种不明确性可以称之为effectively final,也就是你声明的是一个非final的变量,但是你只要不改变它就可以了。 void methodInFirstLevel(int...

2018-09-21 09:17:36 2181

原创 java遗珠之嵌套类

使用内部类的原因1.合乎只在一个地方备用的逻辑: 如果一个类仅仅被一个别的类使用,那么把这个类嵌入到使用它的类中非常符合逻辑,嵌套这样的帮助类是的package变得简洁。2.有益于封装: 如果两个类A和B,如果B需要访问A定义为private的成员,那么B嵌套到A类中,即使A的成员是private的B也可以访问,另外B类也可以被隐藏起来,不被外部访问。3.可读性好且易于维护 在顶级...

2018-09-12 21:00:39 327

原创 java遗珠之字段初始化

字段初始化相对简单只是定义的时候设置初始化的变量就OK了public class BedAndBreakfast { // initialize to 10 public static int capacity = 10; // initialize to false private boolean full = false;} ...

2018-09-12 17:39:21 304

原创 java遗珠之类成员

类成员包括类变量和类方法,相对于实例变量和实例方法来说,区别是加了static关键字,所有对象使用同一份内存,访问规则如下package com.sweetop.studycore.classes;/** * Created with IntelliJ IDEA. * User: lastsweetop * Date: 2018/9/9 * Time: 下午10:37 * T...

2018-09-12 12:00:58 196

原创 java遗珠之协变返回类型

子类重写父类的方法时返回类型和父类方法的返回类型可以不同,但是子类的返回类型必须是父类方法返回类型的子类。父类public class Bicycle { private int cadence; private int gear; private int speed; public Bicycle(int startCadence, int ...

2018-09-12 11:04:03 342

原创 java遗珠子之父类构造器

子类必定会调用父类的构造器这里分三种情况,都会显示或隐式的调用到父类的构造器子类的构造器中没有使用this和super,那么会隐式的调用父类的无参构造器子类使用super显示的调用父类的构造器子类可以使用this,但是this总会调用到一个隐式调用父类无参构造器的构造器,或者一个super显示调用父类,英文两个构造器互相this调用的话就会有递归调用构造器的错误。 ...

2018-09-12 10:32:33 211

原创 java遗珠之前言

这几年都在使用golang和C++,对java基础性概念性的东西有些模块掉,或者与其他语言混淆掉了。重新整理一下java的一些基础概念,达到温故而知新的作用,文中不是系统的记载,大多是一些已模糊概念的再次清晰,所以名为java遗珠。...

2018-09-11 09:45:12 210

解决0700BUG的hadoop-core-1.0.4.jar

解决0700BUG的hadoop-core-1.0.4.jar

2012-11-15

hadoop-eclipse-plugin-1.0.4.jar

编译修改好的hadoop eclipse 插件 1.0.4

2012-11-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除