- 博客(88)
- 资源 (5)
- 收藏
- 关注

原创 elasticsearch用java实现分布式服务
由于上一遍博客中elasticsearch5.x在linux上分布式安装(多节点) 装的elasticsearch服务比较新,所以将elasticsearch单独做成一个服务运行,需要用的时候用路由转发请求这个服务。因为elasticsearch版本比较新,所以用到了spring data的里程版本,具体的pom.xml配置和当前这个项目 可以去我github主页下载(https://github...
2018-04-09 12:09:53
840

原创 elasticsearch5.x在linux上分布式安装(多节点)
一.首先去elastic官网下载(http://www.elastic.co/downloads/elasticsearch)对应版本的elasticsearch,选择tar包下载二.将下载的elasticsearch-5.5.0.tar.gz文件分成两份拷贝到不同节点的服务器上,解压。三.修改elasticsearch配置文件1.例如我这边的两个台节点服务器ip分别是"10.224.2.15"和...
2018-04-09 10:55:23
969

原创 elasticsearch5.x的java实现搜索
本项目只是作为基础入门演示elasticsearch的简单功能参考,实际部署多节点和处理实际业务的思路可以参考本博客的这两篇文章:1.elasticsearch5.x在linux上分布式安装(多节点) 2.elasticsearch用java实现分布式服务elasticsearch5.x的java实现,本次使用的是maven工程,后面附上源码下载地址注意:分页时如果用的from,size,那么当数...
2017-07-20 15:48:33
2399

原创 elasticsearch与oracle数据库数据同步
在看本博客之前需要先按照顺序看以下几篇博客将工具安装好。1.elasticsearch5.4和5.X安装和elasticsearch head插件安装2.elasticsearch安全框架之X-pack3.elasticsearch与数据库同步工具Logstash-input-jdbc1. 首先启动elasticsearch服务。然后进入到head
2017-07-20 15:17:07
20926
1

原创 elasticsearch安全框架之X-pack
由于只要安装好elasticsearch后,输入正确的ip地址和端口,并有head插件就可以看到索引库,所以如果别人知道IP和和端口,那么数据就完全裸奔在别人面前。所以在elasticsearch5.x之后官方都建议用x-pack框架,安装x-pack框架后,每次进去都需要用户名和密码,需要访问这样的url:http://localhost:9100/?auth_user=elastic&auth
2017-07-20 14:58:19
12329
1

原创 elasticsearch与数据库同步工具Logstash-input-jdbc
elasticsearch与数据库同步时需要用到一个插件Logstash-input-jdbc,他是数据logstash的,因此需要先下载logstash。这里logstash版本需要和elasticsearch版本一致。1. 这里要用到的是Logstash的一个插件Logstash-input-jdbc,这个插件可以将数据库中的数据同步到elasticsearch的索引库中,并
2017-07-20 14:52:34
5231
1

原创 elasticsearch5.4和5.X安装和elasticsearch head插件安装
elasticsearch是一款非常好用的搜索引擎,它底层集成了luence,所以也继承了倒排索引原理。在这里要用elasticsearch我们需要几个工具,并按照以下步骤来。本项目只是作为基础入门演示elasticsearch的简单功能参考,实际部署多节点和处理实际业务的思路可以参考本博客的这两篇文章:1.elasticsearch5.x在linux上分布式安装(多节点) 2.elasticse...
2017-07-03 23:18:43
7496
原创 RabbitMQ延时队列,消息重复、堆积、丢失、顺序
主要用来做异步、削峰、解耦rabbitmq延时队列可以设置队列延时,也可以设置消息延时生产者->延时队列交换机->延时队列->死信队列->死信队列交换机->消费者 如果是不同梯度的延时并且梯度很少,例如 5s, 10s, 30s只有3个,可以设置不同的队列和交换机中间的坑重复消费解决方法:造成重复消费有可能是生产段发多了或者消费段方法没有做幂等导致超收了。生产段:在发送前可以为每个消息设置一个唯一id作为幂等判断的条件,如果有重复的去重后
2021-05-18 05:57:35
2001
原创 Spring Cloud基础回顾
eureka 服务治理如果没有这个,那么之前可以用httpclient,webservice等显示调用,如果后续改了ip,那么也是很麻烦的,所以启动eureka来当作一个服务注册中心,让其他的服务都注册进来统一管理Ribbon 客户端负载均衡可以用spring提供的RestTemplate来通过服务命调用,如果服务做了集群,那么默认采用轮询策略来进行负载的,nginx是服务器负载,Ribbon是各个微服务之间负载Hystrix 熔断器如果在高并发情况下微服务调用的过程中,若单.
2021-05-18 05:57:11
250
原创 MySQL调优
优化流程先用explain查询,看下是否用到了索引 排除缓存sql nocache 看下Extra是否存在回表,如果确实需要那么多列那就忽略,否则就考虑索引覆盖 查看下每个on语句是否都有索引建立 如果建立了,查看下两张表对应的列的字符集是否一样,因为mysql会自己做隐式转换 如果有排序字段,可以看情况用where后字段+order by字段建立联合索引 如果有联合索引,sql要按照最左匹配原则来改 查看你索引字段是否加了函数处理,如果加了不会走索引 5.6之后 索引下推 减少回表次
2021-05-18 05:55:40
239
原创 Redis基础回顾
基本数据类型StringListHash -- 类似mapSet -- 无序,不能重复Sort Set -- 有序,不能重复,要传个分数作为排序setnxsetnx「SET if Not eXists」和expire合成一条指令Lua支持Lua脚本,例如同IP下1秒内只能调用一次持久化RDB, 快照形式写入磁盘,实际是通过fork一个子进程去执行,只能存一段时间AOF, 以日志的形式记录redis的一系列操作,AOF的运行效率要慢于RDB...
2021-05-17 17:02:30
169
原创 Nginx负载均衡算法
3种算法都是配置到upstream中轮询权重IP Hash (如果上次接口调用到A服务器器,那么下次还是会调用到这台服务器)
2021-05-17 17:01:57
89
原创 JVM内存模型,类加载机制,性能调优等
JVM内存模型堆:主要存存储对象实例和数组,属于线程共享方法区:常量池,类型信息(包名,类的修饰符,实现类等),域信息(成员变量信息,名称,类型,修饰符),方法信息(方法名称,返回值,参数等),属于线程共享虚拟机栈:由一个个栈帧组成,每个栈都会存储局部变量,程序运行的状态,返回值,例如a()方法里面调用一个b()方法,入栈顺序就a()->b(), 出栈就是b()->a(), 如果是a()调用b(),b()又调用a(),最终就是递归死循环,会把栈占满,最终抛出StackOv
2021-05-17 17:01:14
314
3
原创 Spring基础回顾
生命周期1. 加载配置文件或者通过配置文件扫描java文件2. 然后会将每个java文件的beanClass,是否是Lazy,是否是单例(Single),多例(prototype)放到一个BeanDefinintion对象中,然后将BeanDefinition对象放入map中3. 循环遍历BeanDefinition对象然后对beanClass进行实例化操作,属性填充4. 之后就进入初始化阶段,在进行初始化阶段的时候可以做一些初始化前和初始化后的一下前置或后置操作,以及赋值spring访问容器中
2021-05-17 17:00:42
101
原创 ReentrantLock
1.属于可重入锁(代表某个线程获取到某个锁之后,可以重复获得到这个锁)2.需要手动加锁和解锁3.实现Lock接口,有个Sync内部类,继承AQS(双向队列)4.ReentrantLock默认使用非公平锁,可以通过构造参数设置为公平锁非公平锁1. 当线程A发现state是0,CAS改为1,然后加锁线程2. 线程B来了发现被锁了,然后进入到列头3. 线程A用完后,将state置为0,释放锁,准备通知位于列头的B来操作,结果此时C线程刚好又来,发现state为0就占用,结果B去...
2021-05-17 16:59:05
103
原创 Map之ConcurrentHashMap
1.底层都是数组+链表,1.7和1.8中不一样2.1.7中是使用segment数组+hashentity组成,segment是一个内部类,继承ReentrantLock类,hashentity中value的值是用volatile修饰的(volatile保证了不同线程对变量操作的可见性,同时也禁止指令重排序(有序性))3.1.7使用了分段锁技术,理论下它的并发度就是它的长度,例如初始值是16,理论上可以同时支持16个线程操作,put操作时会先尝试获取锁,如果获取失败就进入自旋,如果自旋达到了一...
2021-05-17 16:57:48
415
原创 Map之HashMap
1.HashMap的底层结构是数组+链表,1.7中和1.8中又不一样,1.8中加入了红黑树2. 每个数组都是以key-value形式存储的,1.7中叫entry,1.8中叫node3.HashMap一开始默认长度是16,put的时候会将key值通过公式得到一个index,index = HashCode(key)& (length - 1),这个index就是在数据中的位置4. put的时候也会判断是否需要扩容resize,是否需要resize有两个因素影响,一个是capacity(..
2021-05-17 16:57:13
169
原创 List之ArrayList
1.ArrayList底层其实是动态数组,在jdk1.8中没有指定capacity默认为空数组,1.7直接默认为10个大小。2. 数组add的时候如果已经长度是10了,那么它就会触发扩容,扩容部分为之前大小的一半,在1.7中是直接 10 + 10/2, 在1.8中优化了下使用位运算10 + (10 >> 1),在计算机种位运算比算术运算快。3.指定位置add和指定位置remove都会用到数组复制。4.ArrayList的线程不安全,Vector才是线程安全的,Vecto...
2021-05-17 16:56:35
241
原创 jdbcTemplate调用带输入输出参数的存储过程
public List<Map<String, Object>> addPlanRuleProc(Map<String, Object> where) { StringBuffer sql = new StringBuffer(); sql.append(" {call P_IMPORT_N3(V_BATCH_NO => :V_BATCH_NO,I...
2018-05-14 14:16:08
2877
原创 JdbcTemplate插入clob类型字段(oracle数据库)
使用clob类型时,如果字符串长度太大,最后会出错,使用JdbcTemplate操作代码如下:final LobHandler lobHandler = new DefaultLobHandler (); //定义一个lob的操作类 Object update_result = jdbc.execute(sql, new AbstractLobCreatingPreparedStatem...
2018-05-03 14:04:37
3542
原创 多个微服务在服务器后台启停脚本
当我们的微服务项目逐渐增多时,每次更新都要去重新启动微服务的jar包,因此我们可以写一个批量脚本让所有的微服务启停。首先每一个微服务就写一个对应的启停脚本,然后写个总控制脚本来控制所有微服务启停脚本。例如:我们这有2个微服务项目:微服务项目1.jar 和 微服务项目2.jar 首先给两个jar包写启停脚本微服务项目1.jar 的启动脚本 startJar1.sh#!/bin/shROOT="/...
2018-04-18 14:36:05
3107
原创 eclipse的svn账号密码修改了经常跳出认证页面解决办法
1. 查看你的Eclipse 中使用的是什么SVN Interface windows > preference > Team > SVN #SVN Interface (右侧中下方) 2. 如果是用的JavaHL, 找到以下目录并删除auth目录下的文件. Windows 7C:\Users\"你的用户名"\AppData\Roaming\Subversion\auth\XPC...
2018-04-09 09:33:33
2138
原创 文件名为中文上传时乱码(tomcat服务器下)
修改tomcat文件夹下的conf/server.xml<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>新增 URIEncoding="utf-8"
2018-04-03 09:38:36
2428
原创 mongodb一些语法记录
mongodb一些语法记录查询某列是否存在{"remarks":{"$exists":true}} 删除remarks这一列{$unset:{'remarks':''}} 更新module字段的内容为教师空间(同数据库中的update){$set:{module:"教师空间"}}and条件连接三个或条件{$and:[{roleFlag:{$not:{$regex:"^.*001.*$"}}},{roleFlag:{$not:{$regex:"^.*002.*$"}}},{role
2017-12-15 17:14:43
373
原创 mongodb数据迁移
Mongodb数据迁移两种方法服务器A导入到服务器B第一种方法:(无密码)直接去A中的数据存储目录,比如我这里的运行mongodb的命令是:./mongod --port 27017 --dbpath /usr/share/mongodb/data/db --fork --logpath /usr/share/mongodb/data/logs/mongolog.out因此我的数据存到/usr/share/mongodb/data/db这个目录下,将这个目录打包到B服务上解压,然后用启动时用这
2017-12-15 17:01:27
1076
原创 linux上mongodb的安装与部署
去mongodb官网下载对应版本的gz安装包复制到 /usr/share/mongodb/ 目录下创建两个空文件夹:/data/db(用于存储数据文件)/data/logs(用于日志文件)解压 tar -zxvf mongodb-linux-x86_64-3.0.6.tgz如果要用mongoVUE 那么需要指定mongodb的引擎,进入到解压的bin目录执行: ./mongod -storageEngine mmapv1 -dbpath /usr/share/mongodb/data/
2017-12-15 17:00:46
324
原创 linux上dubbo+zookeeper的安装与部署
官网下载 zookeeper 或者进入我的资源下载:http://download.youkuaiyun.com/download/lh2420124680/10160562解压 tar -zxvf zookeeper-3.4.6.tar.gz进入解压目录下新建两个文件夹data和log进入解压目录下的conf目录复制zoo_sample.cfg文件重命名为zoo.cfgcp zoo_sample.cfg zoo.cfg在zoo.cfg增加两行 vi zoo.cfgdataDir=/home
2017-12-15 16:59:25
3949
原创 linux下redis安装
官网下载 redis-4.0.2.tar.gz解压 tar -zxvf redis-4.0.2.tar.gzcd /home/redis-4.0.2编译安装make && make install修改redis.conf1.注释 #bind 127.0.0.12.protected-mode yes 改为 protected-mode no3.daemonize no 设置为 daemonize yes 会在后台运行启动cd /usr/local/bin./redis-serv
2017-12-15 16:47:49
190
原创 对象存储oss挂载工具ossfs的使用
oss挂载工具帮助文档:https://help.aliyun.com/document_detail/32196.html注意:有时候oss挂载在别的服务器上,访问的时候会不稳定,有时候能访问,有时候也不能访问。修改方法:(新增dns)vi /etc/resolv.conf1.删除rotate这个单词。2.添加 nameserver 202.100.1.10
2017-12-05 15:47:46
1862
原创 上传文件提示413 Request Entity Too Large错误
如果是用了nginx作为web服务器,并且上传的文件比较大时,需要修改nginx的最大上传限制。client_max_body_size 2000m; #最大限制为2000M
2017-12-05 15:37:01
22066
原创 linux的java环境配置
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html解压: tar -zxvf jdk-8u60-linux-x64.tar.gzvi /etc/profile添加如下内容export JAVA_HOME=/usr/java/jdk
2017-12-04 19:00:52
224
原创 使用websocket下nginx的配置
#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { wo
2017-12-01 12:44:52
500
原创 ffmpeg批量获取视频第一帧shell脚本
ffmpeg批量获取视频第一帧shell脚本#!/bin/bashecho "ffmpegmp4"ffmpegmp4(){original=$1echo $original# check whether file is exist# if $original de chang du wei 0 huo bu $original bu shi chang gui wenj
2017-12-01 11:57:11
2493
原创 ffmpeg视频转码和获取视频第一帧和获取视频任意一帧shell脚本
ffmpeg视频转码和获取视频第一帧shell脚本#!/bin/shecho "ffmpegmp4"ffmpegmp4(){if [ -f "$1" -a -s "$1" ];then if [ "${1##*.}" = "mp4" -o "${1##*.}" = "flv" -o "${1##*.}" = "MP4"
2017-12-01 11:53:46
4100
原创 ffmpeg由于pid超多最大数报错(Error initializing threading)
ffmpeg转码转视频时出现以下情况 ffmpeg version 2.3.6 Copyright (c) 2000-2014 the FFmpeg developers built on Mar 24 2017 11:48:29 with gcc 4.1.2 (GCC) 20080704 (Red Hat 4.1.2-52) configuration: --enable-s
2017-12-01 11:46:12
1670
原创 ffmpeg安装
ffmpeg转mp3和mp4需要按照下面顺序来安装软件。yasmyum install yasm SDL* gtk+* -yx264(官网下载)./configure --enable-shared && make && make installlamehttp://sourceforge.net/projects/lame/files/lame
2017-11-22 11:57:39
1043
原创 mongoDB基本启动命令
#默认27017端口mongod.exe --dbpath D:\mongoDB\data\db#自定义27117端口mongod.exe --port 27117 --dbpath D:\mongoDB\data\db
2017-11-07 17:59:38
1639
1
原创 oracle用户数据库导入导出
oracle用户数据库导入导出需要用到imp和exp命令,如果想在windows cmd上用则需要配置环境变量,将oracle安装的目录下的bin目录的路径复制出来加到环境变量path的前面然后加“;” 这个符号就行了 例如我的安装目录是F:\oracleinstall\bin则加在path前面就是F:\oracleinstall\bin;导出:C:\Users\Admin
2017-10-24 15:30:12
377
原创 redis与spring cache集成
spring cache一般会与ehcache或者memcached来做缓存,但是一般做的是代码缓存,因此本次用c语言实现的redis来与spring cache来做数据缓存,减少内存的消耗。还可以用spring cache的注解@Cacheable把缓存数据存到redis中。本次的代码都已分享,下载链接在文章底部.在spring的源码中有个cache包如下图:在这个包
2017-10-23 10:03:06
2182
原创 liunx中java服务在后台运行不占用一个窗口
inux在后台启动xxx.jar的java应用程序:运用linux中的nohup命令如:nohup java -jar xxxx.jar >log.out &这里的log.out会记录jar运行的日志。如果执行上面的命令提示nohup: redirecting stderr to stdout那么需要将命令修改为 nohup java -jar xxxx.jar >log.o...
2017-10-20 12:00:14
482
zookeeper3.4.6 我的(lh2420124680)下载
2017-12-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人