关闭
当前搜索:

基于zookeeper实现分布式锁

一、分布式锁介绍 分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。 二、架构介绍 在介绍使用Zookeeper实现分布式锁之前,首先看当前的系统架构图 三、分布式锁获取思路1.获取分布式锁的总体思路在获取分布式锁的时候在locker节点下创建临时顺序节点,释放锁的时候删除该临时节点。客户端调用createNode方法在locker...
阅读(238) 评论(0)

基于zookeeper简单实现分布式锁

这里利用zookeeper的EPHEMERAL_SEQUENTIAL类型节点及watcher机制,来简单实现分布式锁。 主要思想: 1、开启10个线程,在disLocks节点下各自创建名为sub的EPHEMERAL_SEQUENTIAL节点; 2、获取disLocks节点下所有子节点,排序,如果自己的节点编号最小,则获取锁; 3、否则watch排在自己前面的节点,监听到其删除后,进入第2步(...
阅读(103) 评论(0)

Java随机数生产算法

java提供了Math.random()函数,返回一个double类型的随机数,也有util包里的Random类,可以生成double,int,float,long,bytes等随机数。但有些业务需求,往往需要对这些方法做一下封装。比如用固定因子生成32位的3DES算法key值。下面提供一些封装的方法:package test;import java.util.Random;public class...
阅读(120) 评论(0)

3DES加密算法

在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明文加密成复杂的密文。目前主流加密手段大致可分为单向加密和双向加密。 单向加密:通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表:Base64,MD5,SHA; 双向加密:与单向加密相反,可以把密文逆推还原成明文,双向加密又分为对称加密和非对称加密。 对称加密:指数据使用者必须拥有相同的密钥才可以进行加密解密,就...
阅读(128) 评论(0)

JAVA和C# 3DES加密解密

最近 一个项目.net 要调用Java的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题, 下面分享一下, 这里的KEY采用Base64编码,便用分发,因为Java的Byte范围为-128至127,c#的Byte范围是0-255 核心是确定Mode和Padding,关于这两个的意思可以搜索3DES算法相关文章 一个是C#采用CBC Mode,PKCS7 Padd...
阅读(219) 评论(0)

多线程下载原理及核心代码

假如我们把一个服务器上的文件看作是一个水缸里的水的话,那么多线程下载就相当于从水缸上打了多个小孔,然后塞进去小管道进行抽水。呵呵,也许这个比喻不够准确。多线程下载大致可分为以下几个步骤:一、首先在本地创建一个与服务器文件大小相同的临时文件(这个很好理解,如果我想下个2G的电影,我得给先在本地占用2G的空间,不然不能下着下着没空间了是吧)。二、计算分配几个线程去下载服务器上的资源,知道每个线程下载文件...
阅读(96) 评论(0)

什么是JavaConfig

Spring IOC有一个非常核心的概念——Bean。由Spring容器来负责对Bean的实例化,装配和管理。XML是用来描述Bean最为流行的配置方式。Spring可以从XML配置文件中读取任何类型的元数据并自动转换成相应的Java代码。Spring改变了java的编程模式,Spring的下载已经超过了1亿次,可见Spring已经有多流行。随着Spring的日益发展,越来越多的人对Spring提出...
阅读(602) 评论(1)

Netty原理和使用

Netty是一个高性能 事件驱动的异步的非堵塞的IO(NIO)框架,用于建立TCP等底层的连接,基于Netty可以建立高性能的Http服务器。支持HTTP、 WebSocket 、Protobuf、 Binary TCP |和UDP,Netty已经被很多高性能项目作为其Socket底层基础,如HornetQ Infinispan Vert.x Play Framework Finangle和 Ca...
阅读(193) 评论(0)

细说 Java NIO

前言:本篇主要用于梳理NIO的相关知识,诸如缓冲区、通道、文件锁、选择器,附带的会说一下IO的知识,因为在某些地方NIO会用到它们。鉴于NIO已经出来甚久,本文旨在总结知识与交流学习,同时若能给他人带来一点帮助,那也是一份意外收获。1、IO (java.io.*)在前面的两篇博客Java之IO流—字节流、Java之IO流—字符流,我们详细的梳理了字节流与字符流的体系与使用细节,并没有对他们两者做一个...
阅读(262) 评论(0)

SpringBoot启动流程解析

写在前面:由于该系统是底层系统,以微服务形式对外暴露dubbo服务,所以本流程中SpringBoot不基于jetty或者tomcat等容器启动方式发布服务,而是以执行程序方式启动来发布(参考下图keepRunning方法)。本文以调试一个实际的SpringBoot启动程序为例,参考流程中主要类类图,来分析其启动逻辑和自动化配置原理。 总览:上图为SpringBoot启动结构图,我们发现启动流程主要...
阅读(378) 评论(0)

SpringBoot执行流程

基本概述SpringBoot将spring应用的启动流程进行了一个“模板化”的操作,所以我们才能通过SpringApplication.run(XXX.class, args)的方式来进行一站式的启动。其内部逻辑也是个较复杂的过程,下文将对执行流程进行阐述。本流程参考的SpringBoot版本为1.4.3.RELEASE。SpringBoot应用启动步骤简要示意图 通过上面这个简要示意图,可以看出...
阅读(233) 评论(0)

Struts2执行流程及环境搭建

struts2和struts1一样,都是应用在web层的框架,不过,它不是基于struts1升级而来,而是一个基于webWork的全新框架,webWork框架是继struts1之后推出的开源框架。struts2和struts1在体系结构上是有很大差别的,struts2中需要用户实现的组件及元素有:Action类、strusts.xml。去掉了struts1中的actionForm,换了一种新的传递表...
阅读(388) 评论(0)

【Java进阶之网络编程】代码库(三)

HTTP 编程IHTTPRequest.javapublic interface IHTTPRequest { /** * 向指定 url 发送 POST 请求. * * @param url 链接, 必须是 http://www.xxx.com 形式 * @param param 参数, 必须是 name1=value1&name2=value2 形...
阅读(253) 评论(0)

【Java进阶之多线程进阶】代码库(二)

生产者消费者.javaimport java.util.concurrent.LinkedBlockingQueue;public class LocalTest { public static void main(String[] args) { LinkedBlockingQueue list = new LinkedBlockingQueue<Objec...
阅读(174) 评论(0)

【Java进阶之JVM异常】代码库(一)

DirectMemoryOOM.java/** * DirectMemory 容量可以通过 -XX:MaxDirectMemorySize 指定,如果不指定,则默认与 Java 堆的最大值(-Xmx)一致。 */public class DirectMemoryOOM { private static final int _MB = 1024*1024; public static...
阅读(175) 评论(0)

【Java基础之网络编程】代码库(七)

单线程下载.java/** * FileOutputStream 类创建输出流对象, 然后使用 write() 方法, 将从输入流获得的网络资源保存到磁盘上, 实现网络资源的单线程下载. **/public void download(String urlAddr) { try { URL url = new URL(urlAddr); //创建 url 对象...
阅读(275) 评论(0)

【Java基础之数组与集合】代码库(六)

Map映射.java/** * get(Object Key) 方法返回指定键所映射的值 * put(K key, V value) 方法来为集合添加数据 */public class CityMap { public static Map model = new LinkedHashMap(); static { mode...
阅读(205) 评论(0)

【Java基础之数据库】代码库(五)

Config.javapackage model;public class DatabaseConf { /** * 数据库驱动. */ public static final String URL = "jdbc:mysql://localhost:3306/"; /** * 用户名. */ public static fina...
阅读(201) 评论(0)

【Java基础之事件处理】代码库(四)

实现委托监听机制的三种方式.java//方式一: 将响应事件定义在一个外部类中 import java.awt.*; import javax.swing.*;public class ActionEvent { public static void main(String args[]) { JFrame jf = new JFrame("ActionEvent");...
阅读(248) 评论(0)

【Java基础之设计模式】代码库(三)

抽象工厂模式.java//抽象工厂 public abstract class AbstractFactory { public abstract Vehicle create(); public abstract Weapon create(); public abstract Food create(); }//工厂 public class Factory extend...
阅读(247) 评论(0)
29条 共2页1 2 下一页 尾页
    个人资料
    • 访问:1297165次
    • 积分:18616
    • 等级:
    • 排名:第593名
    • 原创:312篇
    • 转载:932篇
    • 译文:123篇
    • 评论:297条
    博客专栏
    文章分类
    打赏
    如果你觉得我的文章对您有用,请随意打赏。 微信 支付宝