JAVA技术
文章平均质量分 65
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
一个表单同时提交多条记录
问题背景: 我要在一个表单里同时一次性提交多名乘客的个人信息到SpringMVC,前端HTML和SpringMVC Controller里该如何处理?第1种方法:表单提交,以字段数组接收; 第2种方法:表单提交,以BeanListModel接收; 第3种方法:将Json对象序列化成Json字符串提交,以List接收; 第4种方法:将表单对象序列化成Json字符串提交,以List接收;转载 2018-05-11 17:22:36 · 2052 阅读 · 0 评论 -
基于zookeeper实现分布式锁
一、分布式锁介绍 分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。二、架构介绍 在介绍使用Zookeeper实现分布式锁之前,首先看当前的系统架构图 三、分布式锁获取思路1.获取分布式锁的总体思路在获取分布式锁的时候在locker节点下创建临时顺序节点,释放锁的时候删除该临时节点。客户端调用createNode方法在locker转载 2017-12-13 16:53:39 · 1039 阅读 · 0 评论 -
基于zookeeper简单实现分布式锁
这里利用zookeeper的EPHEMERAL_SEQUENTIAL类型节点及watcher机制,来简单实现分布式锁。 主要思想: 1、开启10个线程,在disLocks节点下各自创建名为sub的EPHEMERAL_SEQUENTIAL节点; 2、获取disLocks节点下所有子节点,排序,如果自己的节点编号最小,则获取锁; 3、否则watch排在自己前面的节点,监听到其删除后,进入第2步(转载 2017-12-13 16:28:38 · 537 阅读 · 0 评论 -
Java随机数生产算法
java提供了Math.random()函数,返回一个double类型的随机数,也有util包里的Random类,可以生成double,int,float,long,bytes等随机数。但有些业务需求,往往需要对这些方法做一下封装。比如用固定因子生成32位的3DES算法key值。下面提供一些封装的方法:package test;import java.util.Random;public class转载 2017-12-12 22:38:55 · 743 阅读 · 0 评论 -
3DES加密算法
在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明文加密成复杂的密文。目前主流加密手段大致可分为单向加密和双向加密。单向加密:通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表:Base64,MD5,SHA;双向加密:与单向加密相反,可以把密文逆推还原成明文,双向加密又分为对称加密和非对称加密。 对称加密:指数据使用者必须拥有相同的密钥才可以进行加密解密,就转载 2017-12-12 22:31:55 · 823 阅读 · 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转载 2017-12-12 22:24:42 · 659 阅读 · 0 评论 -
什么是JavaConfig
Spring IOC有一个非常核心的概念——Bean。由Spring容器来负责对Bean的实例化,装配和管理。XML是用来描述Bean最为流行的配置方式。Spring可以从XML配置文件中读取任何类型的元数据并自动转换成相应的Java代码。Spring改变了java的编程模式,Spring的下载已经超过了1亿次,可见Spring已经有多流行。随着Spring的日益发展,越来越多的人对Spring提出转载 2017-10-18 22:42:12 · 15108 阅读 · 4 评论 -
Netty原理和使用
Netty是一个高性能 事件驱动的异步的非堵塞的IO(NIO)框架,用于建立TCP等底层的连接,基于Netty可以建立高性能的Http服务器。支持HTTP、 WebSocket 、Protobuf、 Binary TCP |和UDP,Netty已经被很多高性能项目作为其Socket底层基础,如HornetQ Infinispan Vert.x Play Framework Finangle和 Ca转载 2017-09-09 11:33:40 · 509 阅读 · 0 评论 -
细说 Java NIO
前言:本篇主要用于梳理NIO的相关知识,诸如缓冲区、通道、文件锁、选择器,附带的会说一下IO的知识,因为在某些地方NIO会用到它们。鉴于NIO已经出来甚久,本文旨在总结知识与交流学习,同时若能给他人带来一点帮助,那也是一份意外收获。1、IO (java.io.*)在前面的两篇博客Java之IO流—字节流、Java之IO流—字符流,我们详细的梳理了字节流与字符流的体系与使用细节,并没有对他们两者做一个转载 2017-09-08 16:18:20 · 740 阅读 · 0 评论 -
Struts2执行流程及环境搭建
struts2和struts1一样,都是应用在web层的框架,不过,它不是基于struts1升级而来,而是一个基于webWork的全新框架,webWork框架是继struts1之后推出的开源框架。struts2和struts1在体系结构上是有很大差别的,struts2中需要用户实现的组件及元素有:Action类、strusts.xml。去掉了struts1中的actionForm,换了一种新的传递表转载 2017-08-30 14:50:46 · 688 阅读 · 0 评论 -
SpringBoot启动流程解析
写在前面:由于该系统是底层系统,以微服务形式对外暴露dubbo服务,所以本流程中SpringBoot不基于jetty或者tomcat等容器启动方式发布服务,而是以执行程序方式启动来发布(参考下图keepRunning方法)。本文以调试一个实际的SpringBoot启动程序为例,参考流程中主要类类图,来分析其启动逻辑和自动化配置原理。 总览:上图为SpringBoot启动结构图,我们发现启动流程主要转载 2017-09-04 14:58:57 · 1054 阅读 · 0 评论 -
SpringBoot执行流程
基本概述SpringBoot将spring应用的启动流程进行了一个“模板化”的操作,所以我们才能通过SpringApplication.run(XXX.class, args)的方式来进行一站式的启动。其内部逻辑也是个较复杂的过程,下文将对执行流程进行阐述。本流程参考的SpringBoot版本为1.4.3.RELEASE。SpringBoot应用启动步骤简要示意图 通过上面这个简要示意图,可以看出转载 2017-09-04 09:58:59 · 1843 阅读 · 0 评论 -
Maven pom常用配置解析表
1、元素为pom.xml的根元素,以下列表列出了它所有的子元素parent父项目的位置。父项目的位置由group ID,artifact ID和version指定。modelVersion声明pom.xml文件遵从的版本groupId全局性唯一的项目标识符。通常使用完全限定的包名来和其它项目区隔(比如,转载 2016-06-20 15:11:19 · 1898 阅读 · 0 评论