<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wanghang88]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wanghang88</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wanghang88]]></copyright><item><title><![CDATA[java中List、Array、Map、Set等集合相互转换]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/105124582</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/105124582</guid><author>wanghang88</author><pubDate>Thu, 26 Mar 2020 18:11:49 +0800</pubDate><description><![CDATA[在java中，我们经常需要对List、Array等做一些转换操作，当然转换方法有很多种，但哪种方法既方便又高效呢？在这里向大家介绍一下集合间的最佳转换方法。



1.List转换为Array：


List&lt;String&gt; list = new ArrayList&lt;String&gt;();
list.add("China");
list.add("Switzerland"...]]></description><category></category></item><item><title><![CDATA[ArrayList的工具类]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/104534118</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/104534118</guid><author>wanghang88</author><pubDate>Thu, 27 Feb 2020 12:37:38 +0800</pubDate><description><![CDATA[/**
     *
     * @param listObj   原来的大List
     * @param groupNum  分隔成小List中,每个小List的元素的个素数
     * @param &lt;T&gt;
     * @return
     */
    public static &lt;T&gt; List&lt;List&lt;T&gt;&gt; getSu...]]></description><category></category></item><item><title><![CDATA[java中关于ip地址的工具类AddressUtils]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/90111687</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/90111687</guid><author>wanghang88</author><pubDate>Sat, 11 May 2019 16:43:03 +0800</pubDate><description><![CDATA[package com.itstyle.common.utils;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingExcep...]]></description><category></category></item><item><title><![CDATA[java中对于金额计算的BigDecimalUtils]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/90111627</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/90111627</guid><author>wanghang88</author><pubDate>Sat, 11 May 2019 16:39:13 +0800</pubDate><description><![CDATA[package com.itstyle.common.utils;

import java.math.BigDecimal;

import org.apache.commons.lang3.StringUtils;

public class BigDecimalUtils {
	/**
	 * 除法
	 */
	public static BigDecimal divide(String ...]]></description><category></category></item><item><title><![CDATA[电商系统商品中心产品设计]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/88370171</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/88370171</guid><author>wanghang88</author><pubDate>Sat, 09 Mar 2019 20:09:18 +0800</pubDate><description><![CDATA[由于商业性质决定了电商业务支撑系统必须具备稳定性、可扩展、安全性强等特点，PM在设计产品架构时，应充分考虑到业务发展需要，尽量将各模块隔离，商品模块建个商品中心，订单模块建个订单中心。
只有在产品设计上有模块化思想，具有前瞻性，技术在开发时才会考虑业务隔离，当业务调整、功能新增时，开发可迅速进行，避免牵一发而动全身的事情反复发生。

对电商公司来讲，最核心最难做的三部分：商品、订单、库存。

商品...]]></description><category></category></item><item><title><![CDATA[30岁之后，更应该在意以下10点]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/88369167</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/88369167</guid><author>wanghang88</author><pubDate>Sat, 09 Mar 2019 18:01:29 +0800</pubDate><description><![CDATA[30岁之后，感觉自己的整个世界都变了。以前靠勤奋就能赢，30岁以后的世界，勤奋完全不够用了。

观察周围的很多人，总觉得每个人身上的成功秘诀都不一样。但不置可否的是，30岁以后的世界，是多元化的，通往成功的道路，突然生出很多内容。勤奋的路能让你一直还不错，但你发现，自己很努力所取得的成就，似乎没有比别人信手拈来的更好。到底是为什么呢？是别人成功的背后有什么猫腻吗？

其实，是因为你还用2...]]></description><category></category></item><item><title><![CDATA[mysql中整数类型后面的数字]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/88054858</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/88054858</guid><author>wanghang88</author><pubDate>Fri, 01 Mar 2019 12:54:33 +0800</pubDate><description><![CDATA[mysql中整数类型后面的数字
mysql数据库中以 ：数据类型(m) 来约束数据，其中 数字m在不同的数据类型中表示含义是不同的,整型数系统已经限制了取值范围，tinyint占1个字节、int占4个字节
所以整型数后面的m不是表示的数据长度，而是表示数据在显示时显示的最小长度.
tinyint(1) 这里的1表示的是 最短显示一个字符。tinyint(2) 这里的2表示的是 最短显示两个字符,...]]></description><category></category></item><item><title><![CDATA[Mysql的binary、char、varchar区别]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/88051838</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/88051838</guid><author>wanghang88</author><pubDate>Fri, 01 Mar 2019 11:12:39 +0800</pubDate><description><![CDATA[mysql的binary、char、varchar区别:
binary:
保存二进制字符串，它保存的是字节而不是字符，没有字符集限制。
binary(8)可以保存8个字符，每个字符占1个字节，共占8个字节
进行比较时是按字节进行比较，而不是按字符（char），按字节比较比字符简单快速.
按字符比较不区分大小写，而binary区分大小写
char:
使用固定长度的空间进行存储，char(4)存储4个...]]></description><category></category></item><item><title><![CDATA[减少代码中过多的嵌套]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/86670157</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/86670157</guid><author>wanghang88</author><pubDate>Sun, 27 Jan 2019 21:53:52 +0800</pubDate><description><![CDATA[由于是开发的一些小经验,就直接上链接了，有空就可以看下了:

1:接口分层

2：使用多态,不同的类别分开, 当然这还可以抽象

3：使用map

https://mp.weixin.qq.com/s/5u80Rqg588HCTT8MgQbLTA

 ...]]></description><category></category></item><item><title><![CDATA[RabbitMQ 消息队列可靠性代码实现]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/82840340</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/82840340</guid><author>wanghang88</author><pubDate>Tue, 25 Sep 2018 16:31:37 +0800</pubDate><description><![CDATA[1,实现rabbitmq所需要依赖包


&amp;lt;dependency&amp;gt;
 &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
 &amp;lt;artifactId&amp;gt;spring-boot-starter-amqp&amp;lt;/artifactId&amp;gt;
 &amp;lt;version&amp;gt;${spring-boot.version}&amp;l...]]></description><category></category></item><item><title><![CDATA[数据分库分表 Sharding JDBC]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/82826203</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/82826203</guid><author>wanghang88</author><pubDate>Mon, 24 Sep 2018 01:38:19 +0800</pubDate><description><![CDATA[本文介绍sharding的基本思想和理论上的切分策略

Sharding JDBC：

1：基本思想

  Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上 ,从而缓解单一数据库的性能问题。不太严格的讲，对于海量数据的数据库，如果是因为表多,这时候适合使用垂直切分，即把关系紧密（比如同一模块）的表切分出来放在一个server上 ；如果表并不多，但每张表的数...]]></description><category></category></item><item><title><![CDATA[elastic-job的原理简介]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/82813486</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/82813486</guid><author>wanghang88</author><pubDate>Sat, 22 Sep 2018 17:01:17 +0800</pubDate><description><![CDATA[elastic-job ：

1，简介

      是当当开源的一款非常好用的作业框架，在这之前，我们开发定时任务一般都是使用quartz ，对于业务量小的话 quartz是可以满足我们的要求的，使用quartz对于大的业务量的不足：

     a）quartz应用服务多节点部署，可能会重复多次执行而引发系统逻辑的错误 。

     b）quartz的集群仅仅只是用来HA，节点数量的增加并不...]]></description><category></category></item><item><title><![CDATA[java设计模式：（工厂模式）]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/82057386</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/82057386</guid><author>wanghang88</author><pubDate>Sun, 26 Aug 2018 02:11:29 +0800</pubDate><description><![CDATA[1：工厂模式是一种比较常见的创建模式， 在实际开发中也是常常使用到。

2：工厂模式的形式：

    2.1）简单工厂模式，而对于简单工厂模式来说，它是为了让程序有一个更好地封装，降低程序模块之间的耦合程度,对于简单的工厂模式，其实也可以将其理解成为一个创建对象的工具类。在这个工具类里面，我们就可以进行一些其他操作，比如对象的初始化。这样就避免了把对象初始化的大量代码(如果有大量代码的话)放在构...]]></description><category></category></item><item><title><![CDATA[java设计模式：（策略模式）]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/82057310</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/82057310</guid><author>wanghang88</author><pubDate>Sun, 26 Aug 2018 01:16:58 +0800</pubDate><description><![CDATA[1：策略模式的描述

   把它们一个个封装起来，并且使他们可以相互替换。这样策略模式就可以独立使用它们的客户端变化。

   策略模式其实是为了解决，同一个问题有多个不能的解决方式，也就是说提供了多种不同的解决策略,比如，我们对一个数组  进行排序。那么这里就有冒泡排序、快速排序、归并排序等等不同的算法，这里我们就可以说这些是不同的策略。

2：策略模式的具体实现：

  2.1）公共接口（比如...]]></description><category></category></item><item><title><![CDATA[java设计模式：（适配器模式）]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/82057042</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/82057042</guid><author>wanghang88</author><pubDate>Sun, 26 Aug 2018 00:43:31 +0800</pubDate><description><![CDATA[1：情景

    不同国家的插座，插头不一样，美国的插座，提供110伏电压，三孔插座,中国的插座，提供220伏电压，二孔插座，这个时候你去美国旅游的时候,美国只有三孔插座,这个时候如果没有适配器的话，你就不能给手机充电，所以需要用到适配器，一头转换成二孔插座（给手机充电）,另一头插到三孔插座，同理适配器模式也是这么实现的， 下面看具体的实现：

2：java适配器模式的具体实现：

总共7个类 ...]]></description><category></category></item><item><title><![CDATA[java中生成随机数工具类RandomUtils]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/80166028</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/80166028</guid><author>wanghang88</author><pubDate>Wed, 02 May 2018 14:23:43 +0800</pubDate><description><![CDATA[	/**
	 * 根据需要生成指定长度的纯数字随机数,这个随机数的每一位都是从(0-9)这个产生的一位
	 * @param date
	 * @return
	 */
	public static String getNewRandomCode(int codeLen) {
		java.util.Random randomCode = new java.util.Random();
		Str...]]></description><category></category></item><item><title><![CDATA[Mybatis的传入参数parameterType类型]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/80137784</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/80137784</guid><author>wanghang88</author><pubDate>Sat, 28 Apr 2018 18:08:03 +0800</pubDate><description><![CDATA[1. MyBatis的传入参数parameterType类型分两种    1. 1. 基本数据类型：int,string,long,Date;     1. 2. 复杂数据类型：类和Map2.获取参数中的值:    2.1  基本数据类型：#{参数} 获取参数中的值    2.2  复杂数据类型：#{属性名}  ，map中则是#{key}3.案例：3.1：基本类型&amp;lt;sql id=&quot;Base_...]]></description><category></category></item><item><title><![CDATA[阿里云Redis的开发规范]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/80135545</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/80135545</guid><author>wanghang88</author><pubDate>Sat, 28 Apr 2018 15:52:54 +0800</pubDate><description><![CDATA[一、键值设计1.key名设计(1)【建议】: 可读性和可管理性    以业务名(或数据库名)为前缀(防止key冲突)，用冒号分隔，比如业务名:表名:id   (2)【建议】: 简洁性   保证语义的前提下，控制key的长度，当key较多时，内存占用也不容忽视2.value设计(1)【强制】:拒绝bigkey(防止网卡流量、慢查询)    string类型控制在10KB以内，hash、list、se...]]></description><category></category></item><item><title><![CDATA[Mybatis中输出映射-resultType与resultMap的区别]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/80134920</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/80134920</guid><author>wanghang88</author><pubDate>Sat, 28 Apr 2018 15:08:35 +0800</pubDate><description><![CDATA[一、resultType1：使用resultType进行输出映射，只有查询出来的列名和pojo（实体bean）中的属性名一致，该列才可以映射成功。2:如果查询出来的列名和pojo中的属性名全部不一致，没有创建pojo对象。3:只要查询出来的列名和pojo中的属性有一个一致，就会创建pojo对象使用时一般是：输出为简单类型是,查询出来的结果集只有一列，可以使用简单类型进行输出映射；输出为pojo对象...]]></description><category></category></item><item><title><![CDATA[java 中的静态代码块、构造代码块、构造函数以及Java类初始化顺序]]></title><link>https://blog.youkuaiyun.com/wanghang88/article/details/80119342</link><guid>https://blog.youkuaiyun.com/wanghang88/article/details/80119342</guid><author>wanghang88</author><pubDate>Sat, 28 Apr 2018 14:35:26 +0800</pubDate><description><![CDATA[静态代码块：用staitc声明，jvm加载类时执行，仅执行一次;构造代码块：类中直接用{}定义，每一次创建对象时执行；执行顺序优先级：静态块,main(),构造块,构造方法。a)构造函数：1.对象一建立，就会调用与之相应的构造函数，也就是说，不建立对象，构造函数时不会运行的;2.构造函数的作用是用于给对象进行初始化;3.一个对象建立，构造函数只运行一次，而一般方法可以被该对象调用多次;b)构造代码...]]></description><category></category></item></channel></rss>