- 浏览: 47168 次
最新评论
文章列表
要从现在的公司离职了。记录一下自己针对我们的自己需求所做的搜索。
基于Spring data,ES 2.X版本的
package com.xxxx.cms.elasticsearch.domain;
import java.util.Calendar;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch. ...
去年因为自身心理原因回家修养.家里比深圳冷许多,所以一直都在运动锻炼身体,荒废了自己的学习.
现在天气暖和了,要天天向上了.下面是自己写的一些小例子,也可以说是作<CSAPP>的一些作业所随便写的一些东西.
1.自定义的 ...
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
import java.util.concurrent.atomic.AtomicInteger;
public class C ...
import com.xxxx.util.constant.PropertyNameStyle;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springfra ...
既然学了netty自然需要实验下,自然自己就简单实验下。
这个是简版的,所以比较粗糙。
package study.netty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
impor ...
最近想学netty,但平常工作中NIO用的比较少,所以最近就复习了下NIO。自己写了个基于NIO的echo例子,代码挺简单的。
echo 服务端代码
package study.nio.echo;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels. ...
昨天某知名互联网企业对我做了一个电话面试。然后叫我在他给的一个网址上面做一个编程题。
题目是这样的。
共计9个苹果,有2只猴子,一个猴子每次拿2个苹果,一个猴子每次拿3个苹果,如果剩余的苹果不够猴子每次拿的数量,则2只猴子停止拿苹果,请用java多线程模拟上面的描述
描述是挺简单的。但当在电话面试的情况下,又是一个比较知名公司的限时下。我那小心肝是紧张的,再加上是在一个非IDE环境下写代码很多API记不详细,所以导致我写出了下面的这个诡异的版本。真是丢脸呀。
//monkey2 是类似 monkey1的。当时紧张还没写完然后自己的网络突然异常了,然后就断联了。注定是抓不 ...
首先定义个工具interface,基于Java 8的实现.
主要利用了Redis Cluster的hashTags特性。详细细节可前往https://redis.io/topics/cluster-spec的Keys hash tags章节了解。
个人建议还是看完这个规范的前半部分才好理解,为什么会出现hash tags这个东西。
package com.xxxx.cms.common.support;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util. ...
import com.xxx.support.config.AbstractAppInitializer;
import com.xxx.support.config.BaseRootConfig;
public class AppInitializer extends AbstractAppInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { BaseRootConfig.class, RootConfig.class };
...
今天得闲就自己搭了个ELK示例,过程挺简单的。
Elastic Search,logstash, kibana再这个地址https://www.elastic.co/cn/products都可以下载。话不多说。
首先安装ES。解压下载包到置顶目录启动脚本再bin目录下的elasticsearch,参数配置在config目录下。主要配置文件为elasticsearch.yml。主要可配置端口和discovery.zen.minimum_master_nodes这个选举的最少节点(防止脑裂问题"split brain")。
之后安装logstash。解压压缩包后再解压目录 ...
spring的基于java的项目配置示例。
import org.springframework.web.context.AbstractContextLoaderInitializer;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
public class CmsAppInitializer extends AbstractCo ...
import java.io.IOException;
import java.io.InterruptedIOException;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
impo ...
基于spring data的Elastic Search的配置示例
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.elasticsearch.client.Client;
import org.elasticsearc ...
由于redis的集群 redis cluster不支持keys这样的多key操作(具体原因由于sharding 后,不同的key属于不同的slot,难以支持原子操作)。所以如果一个对外需要对缓存做失效处理时比较棘手。所以本类提供工具方法再redis cluster查找按照hashTags处理的keys和一般的keys。基于jedis cluster实现。
有优化空间,现在懒得改了
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
impor ...
自己封装的爬虫基础类。
public interface TaskBaseInfo {
/**
* 返回任务的名称.
* <br/>
* 一般用作日志输出
* @return
*/
String taskName();
/**
* 返回任务的唯一code
* @return 在整个爬虫项目中不重复的Code值
*/
String taskCode();
}
import java.io.BufferedReader;
import java.io.File;
import java. ...