- 博客(360)
- 资源 (27)
- 收藏
- 关注
原创 redis cluster 原理
节点一个Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都处于一个只包含自己的集群当中,要组建一个真正可工作的集群,我们必须将各个独立的节点连接起来,构成一个包含多个节点的集群。连接各个节点的工作可以使用CLUSTER MEET命令来完成。向一个节点node发送CLUSTER MEET命令,可以让node节点与ip和port所指定的节点进行握手(handshake),当握手成功时,node节点就会将ip和port所指定的节点添加到node节点当前所在的集群中。例
2022-01-16 00:10:33
719
原创 zookeeper数据模型:节点的特性与应用
持久节点最常用,一旦创建将会一直存储在zk服务器上,即使会话关闭也会,除非调研delete函数显式进行删除。临时节点不会一直存储在zk服务器上,当创建临时节点的客户端会话关闭时临时节点会被删除,当然也可以用delete删除。(可以做服务器进程监控,服务器下线或宕机则临时节点数目会发生变化)注意临时节点不允许有子节点。有序节点严格来讲并不算单独的分类,只是前两种基础上增加一种有序的特性。所谓节点有序就是指我们在创建有序节点时,zk服务器自动使用一个单调递增的数字作为后缀,追加到创建节点的后边。每个
2020-10-01 11:55:54
474
原创 使用docker-compose快速搭建zookeeper集群
镜像下载 docker pull zookeeper zookeeper 集群的搭建 创建名为docker-compose.yml的文件输入以下内容version: '2'services:zk1:image: zookeeperrestart: alwayscontainer_name: zk1ports:- "2181:2181"environme...
2018-04-02 17:17:12
4269
2
原创 使用docker快速搭建gitlab私服
下载镜像docker pull gitlab/gitlab-ce使用镜像镜像中有三个目录用于保存gitlab的数据,出于安全考虑,应该使宿主机目录挂载这三个卷做持久化存储。如果出错保证数据不会丢失。 /etc/gitlab 包含gitlab的配置文件 /var/opt/gitlab gitlab使用的仓库保存所有版本库 /var/log/gitlab gitlab...
2018-03-31 14:10:09
2622
原创 阿里云负载均衡SLB配置https
目前是2台阿里云应用服务器,一台SLB负载均衡。 如上图之前对7180端口做了负载均衡的配置,现在需要升级https。 原来的接口url为 http://api.xxx.com:7180/web/ 升级后变成了 http://api.xxx.com/web/我的2台ecs服务器没装nginx,直接走tomcat,所以tomcat的server.xml 需要配置,两处redirec...
2018-03-08 15:22:27
9361
原创 给tomcat部署的网站配置https
场景公司ios开发需要服务api都基于https,所以最近摸索了一下。 服务器部署在阿里云上,本来想直接找let encrypt 或者 trustAisa 的免费证书。但是搜了一些博客发现,阿里云服务器配置第三方的CA证书,还需要在阿里云上配置一个中间证书,感觉这样不太好,刚好阿里云官网也提供免费的CA证书,所以直接使用阿里云的。如下图所示。配置方法购买好免费的服务大概半小时证书...
2018-03-07 11:23:47
1563
原创 centos6.9重装msyql5.6记录
卸载原先版本mysql1、yum remove mysql mysql-server mysql-libs compat-mysql51 2、rm -rf /var/lib/mysql 3、rm -rf /var/lib64/mysql 4、rm /etc/my.cnf 5、查看是否还有mysql软件,如果存在的话,继续删除即可。 命令:rpm -qa|grep -i mysql
2018-01-09 17:47:07
438
原创 hadoop2.9安装指南
1、到hadoop官网下载最新的二进制版本。 2、把压缩包上传到你的linux服务器、解压缩、配置环境变量. ps:我这里用的是centos6.9,你也可以用别的linux,譬如ubuntu。 解压缩命令: tar -zxvf hadoop-2.9.0.tar.gz 文件夹重命名:mv hadoop-2.9.0 hadoop 配置环境变量:vim /etc/profile export P
2017-12-07 11:54:09
8677
2
原创 在docker中部署静态网页
1、新建一个80端口的web服务器,ubuntu系统 docker run -p 80 –name web -i -t ubuntu /bin/bash 2、在ubuntu上安装nginx apt-get update apt-get install -y nginx 3、在ubuntu上安装vim apt-get install -y vim 4、创建文件夹 mkdir -p
2017-12-01 12:54:41
2928
原创 java虚拟机概述
所谓的java虚拟机,就是一台虚拟的机器。它是一款软件,用来执行一系列虚拟计算机指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机。visual Box、VMare就属于系统虚拟机。他们完全是对物理计算机的仿真,提供一个可运行完整操作系统的软件平台。而java虚拟机就是典型程序虚拟机,它专门为执行单个计算机程序而设计,在java虚拟机中执行的指令我们称之为java字节码指令。java发展到今天,出现了
2017-11-30 15:31:48
2174
原创 win7下安装docker
1、网盘下载 链接: http://pan.baidu.com/s/1jGrkJ7w 密码: 3xie 2、一步一步默认安装 装完后桌面上会多出几个图标,其中有一个是Docker Quickstart Terminal,双击运行,居然出现错误: 关掉,已管理员身份运行docker quickerStart: host is not running docker is co
2017-11-29 14:55:39
1057
1
原创 shiro入门
Apache Shiro 是 Java 的一个安全(权限)框架。相比于spring security 更加简单,而且够用。 • Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。 • Shiro 可以完成:认证、授权、加密、会话管理、与Web 集成、 缓存 等。 • 下载:http://shiro.apache.org/•Au
2017-11-28 13:38:31
706
转载 /usr/bin/env: node: 没有那个文件或目录
ubuntu下 nodejs 使用node 出现 Error: /usr/bin/env: node: 没有那个文件或目录1、如果是用sudo apt-get install nodejs命令安装的nodejs,ubuntu在安装的时候为了避免包的冲突,将nodejs的命令操作改成nodejs,而不是node。2、由于express安装时默认的nodejs命令是node,所以安装完后express命
2017-11-25 15:53:29
4674
原创 centos下svn分组权限管理
1、打开svn安装目录。可以通过ps aux|grep svn 查找svn的安装目录 2、编辑svnserve.conf, 基本保留这些内容[general]anon-access=noneauth-access=writepassword-db=passwd // 这里可以填写具体路径比如:/z/svn/passwd 这样多个版本库可以使用同一套配置authz-db=authz
2017-11-24 10:40:25
2033
原创 大数据开发学习路线图
入门知识推荐书籍 1、舍恩伯格的《大数据时代》; 2、巴拉巴西的《爆发》; 3、涂子沛的《大数据》; 4、吴军《智能时代》; 5、《大数据架构商业之路:从业务需求到技术方案》工具技能1、hadoop: 常用于离线的复杂的大数据处理 2、Spark:常用于离线的快速的大数据处理 3、Storm:常用于在线的实时的大数据处理 4、HDFS:Hadoop分布式文件系统。HDFS有着高容错性
2017-11-21 21:28:48
1865
原创 使用maven profile实现多环境可移植构建
配置profile这里定义了三个环境,分别是development(开发环境)、test(测试环境)、production(生产环境),其中开发环境是默认激活的(activeByDefault为true),这样如果在不指定profile时默认是开发环境。 同时每个profile还定义了两个属性,其中profiles.active表示被激活的profile的名称,deploy.url表示发布服务器的
2017-11-14 11:08:56
1045
原创 搭建git私服
使用gitbucket开源项目搭建git私服非常简单。项目地址:https://github.com/gitbucket/gitbucket搭建环境:1、ubuntu16.04 64位 2、jdk1.8 3、gitbucket4.18 下载地址 https://github.com/gitbucket/gitbucket/releases运行:nohup /usr/bin/java
2017-11-11 16:50:19
2330
原创 阿里云部署笔记
需求1、操作系统为 ubuntu 16.04.2 2 、自己需要安装的软件有 jdk1.8,tomcat7.0.77、zookeeper-3.5.3、nginx-1.6.3 、fastdfs-5.05。 3、数据库用的阿里云的云数据库RDS mysql 5.7 4、服务器是一台负载均衡服务器和两台ECS云服务器。 5、所部署的系统基于dubbo分布式服务框架,文件存储于fastdfs后期可
2017-11-09 17:45:43
1015
原创 FastDFS学习笔记
简介FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下
2017-11-08 11:24:11
1431
原创 mongoDB导出数据库所有集合内容到json文件
网上搜了一圈,官方并有提供批量导出所有集合到json文件的方法。有不少脚本可以实现,但是我还是习惯用java,如下package starcLL.webClient;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import j
2017-09-06 13:15:54
5956
2
原创 layim的websocket消息撤回功能实现
我的大概思路就是,前端根据选取的内容获得他的cid,我的cid是js生成的uuid, 然后:1、通过websocket广播给对应的人 去删除localstorage里的缓存, 2、ajax异步请求删除数据库里的数据记录 3、如果对方此时也打开了聊天面板就要用jquery找到那条消息然后remove。由于目前发现layim3.6版本并没有给自己发的消息赋值data-cid,所以实现起来比较麻烦。
2017-09-05 17:27:39
8164
1
原创 给websocket加入心跳包防止自动断开连接
var userId=$("#userId").val();var lockReconnect = false; //避免ws重复连接var ws = null; // 判断当前浏览器是否支持WebSocketvar wsUrl = serverConfig.cyberhouse_ws+userId;createWebSocket(wsUrl); //连接wsfunc
2017-09-05 10:32:29
27133
2
原创 js实现浏览器右键菜单,屏蔽默认菜单
<div id="mouse" style="width:500px;height:200px;background:#E8FFE8;border:2px solid #336699;"></div><div id="menu" style="display:none; position: absolute; color:red; border-radius: 3px;background-co
2017-08-28 16:23:19
9425
1
原创 观察者设计模式
观察者:java.util.Observer 被观察者:java.util. Observablepackage shejimoshi;import java.util.Observable;import java.util.Observer;public class testGuanchazhe { public static void main(String[] args) {
2017-08-25 10:51:51
484
原创 java线程池
java1.5之后追加了一个并发访问的程序包: java.util.concurrent。对于此线程池操作的核心类和接口就定义在此包中。 这里有2个核心的接口: 1、普通的执行线程池定义: java.util.concurrent.ExecutorService; 2、调度线程池:java.util.concurrent.ScheduledExecutorService; 一般可以使用 ja
2017-08-24 17:07:48
458
原创 java生产者消费者同步问题
public class TestThread { public static void main(String[] args) { Data data=new Data(); new Thread(new DataProvider(data)).start(); new Thread(new DataConsumer(data)).start
2017-08-24 16:12:52
500
原创 NIO阻塞与非阻塞IO
一、使用NIO完成网络通信的三个核心 1、通道(Channel):负责连接 java.nio.channels.Channel 接口 |– SelectableChannel |– SocketChannel |–ServerChannel |–DatagramChannel |–Pipe.SinkChannel
2017-08-23 17:32:13
553
原创 NIO分散读取与聚集写入
分散(Scatter)和聚集(Gather) 分散读取(Scattering Reads): 将通道中的数据分散到多个缓冲区中 聚集写入(Gathering Writes): 将多个缓冲区中的数据聚集到通道中 @Test // 分散(Scatter)和聚集(Gather) public void test7() throws IOException{ Rando
2017-08-22 14:41:35
633
原创 NIO通道(channel)原理与获取
一、通道(Channel): 用于源节点与目标节点的连接。在java NIO中负责缓冲区中数据的传输。Channel本身不存储数据,因此需要配合缓冲区进行传输。二、通道的主要实现类 java.nio.channels.Channel接口: |– FileChannel |– SocketChannel |– ServerSocketChannel |– DatagramChannel三、获
2017-08-22 14:16:00
12400
原创 NIO直接缓冲区与非直接缓冲区
非直接缓冲区:通过allocate()方法分配缓冲区,将缓冲区建立在jvm内存中。 直接缓冲区:通过allocateDirect() 方法分配直接缓冲区,将缓冲区建立在物理内存中。可以提高效率。 字节缓冲区要么是直接的要么是非直接的。如果是直接缓冲区,则java虚拟机会尽最大努力直接在此缓冲区上执行本机IO操作。也就是说,在每次调用基础操作系统的一个本机IO操作之前(或之后)虚拟机都会尽量避免将缓
2017-08-22 11:44:16
749
原创 NIO缓冲区(Buffer)的数据存取
package nio;import java.nio.ByteBuffer;import org.junit.Test;public class buffer { @Test public void test1(){ String str="abc"; //1、分配指定大小的缓冲区 ByteBuffer buf = ByteBuffe
2017-08-22 10:13:01
489
原创 Spring核心原理AOP
框架核心知识-反射,动态代理 1、动态语言,具备反射机制 a、运行时,判断任意一个对象所属类 b、构造任意一个类的对象实例 c、判断任意类所具备的成员变量和方法 d、调用任意类所具备的成员变量和方法 e、生成动态代理2、java反射中,最核心的api: java.lang.Class 代表一个类 java.lang.reflect.Method 代表类的方法 java.lang.r
2017-08-22 00:56:09
602
原创 批量将xml文件转json并写入文件
源码地址: https://github.com/jkxqj/Xml2JsonUtil/blob/master/Xml2JsonUtil.java
2017-08-09 11:32:46
2904
原创 给layui的upload加了文件大小限制
/*! @Title: layui.upload 单文件上传 - 全浏览器兼容版 @Author: 贤心 @License:MIT */layui.define('layer' , function(exports){ "use strict"; var $ = layui.jquery; var layer = layui.layer; var device = layui.de
2017-07-31 16:53:13
11743
原创 get_brand_wcpay_request:fail
最近看weixin_guide项目做微信支付。 后台一切正常,前端报错,get_brand_wcpay_request:fail。 打印了一下返回的res的全部信息,是url目录未授权,于是在公众号后台添加相关路径后支付成功了。 这里要小小吐槽一下weixin_guide 项目的返回值。 layer.msg("支付失败"+res.err_msg, {shift: 6});根据这个err_
2017-07-31 00:01:12
2487
原创 miui8.5开发者选项USB调试模式
搜索引擎的答案都过期了,最新的入口更深一层。。。 我的设备–》MIUI版本–》全部参数–》连续点击MIUI版本5下。
2017-07-30 23:41:14
4770
原创 解决eclipse里不能创建tomcat7.0的server
1、 关闭Eclipse 2、打开WorkSpace所在的位置。 {workspace-directory}/.metadata/.plugins/org.eclipse.core.runtime/.settings 删除以下文件 org.eclipse.wst.server.core.prefs和org.eclipse.jst.server.tomcat.core.prefs 3、重启
2017-07-17 22:20:10
2526
原创 localStorage实现购物车
shopCart.jsutils = { setParam : function (name,value){ localStorage.setItem(name,value) }, getParam : function(name){ return localStorage.getItem(name) }}product={
2017-07-11 13:01:48
3017
原创 《彻底解决分布式系统一致性问题》学习笔记
《彻底解决分布式系统一致性问题》直播者:李艳鹏 笔记作者:JKXQJ一致性问题产生的背景JEE架构:WEB容器—组合业务逻辑—>EJB容器—数据存ORM—>数据库 SSH架构:Struts MVC—组合业务逻辑—>Spring容器—Hibernate ORM–>数据库 Web Service: WebService–> 注册服务(WSDL、UDDI)–>发现服务(UDDI)–> 服务调用
2017-07-11 00:39:55
2191
原创 JFinal结合Sigar、echarts实现后台服务器监控
服务端 public void cpu() throws SigarException { Sigar sigar = new Sigar(); CpuInfo infos[] = sigar.getCpuInfoList(); CpuPerc cpuList[] = sigar.getCpuPercList();
2017-07-05 11:24:15
3279
3
RSA与AES混合加密算法的实现(java版)
2014-05-07
C++学生成绩管理系统
2012-12-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人