<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yun_ld的博客]]></title><description><![CDATA[岁月长衣裳薄]]></description><link>https://blog.youkuaiyun.com/yun_ld</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yun_ld]]></copyright><item><title><![CDATA[MYSQL 索引长度的限制]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/106986558</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/106986558</guid><author>yun_ld</author><pubDate>Sat, 27 Jun 2020 19:04:57 +0800</pubDate><description><![CDATA[myisam表，单列索引，最大长度不能超过 1000 bytes；

innodb表，单列索引，最大长度不能超过 767 bytes；

utf8 编码时 一个字符占三个字节

varchar 型能建立索引的最大长度分别为

myisam 1000/3 333

innodb  767/3  255



utf8mb4 编码时 一个字符占四个字节

varchar 型能建立索引的最大长度分别为

myisam 1000/4 250

innodb  767/4...]]></description><category></category></item><item><title><![CDATA[HotSpot中的OopMap、Safe Point和Safe Region]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/106289303</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/106289303</guid><author>yun_ld</author><pubDate>Fri, 22 May 2020 19:01:19 +0800</pubDate><description><![CDATA[1.OopMap
在正式的GC之前，要进行可达性分析来标记出将来可能要宣告死亡的对象。如果每次GC的时候都要遍历所有的引用，这样的工作量是非常大的。因为在可达性分析的时候要保证期间不发生引用关系的变化，所有执行线程要停顿等待，称为“Stop The World”，程序中的线程需要停止来配合可达性分析。

所以，每次直接遍历整个引用链肯定是不现实的。 为了应对这种尴尬的问题，最早有保守式GC和后来的准确式GC。这里准确式GC就会提到一个OopMap，用来保存类型的映射表。

保守式GC

...]]></description><category></category></item><item><title><![CDATA[引用计数算法和可达性分析算法]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/105344498</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/105344498</guid><author>yun_ld</author><pubDate>Mon, 06 Apr 2020 15:28:38 +0800</pubDate><description><![CDATA[引用计数算法：

给对象中添加一个引用计数器，每当有一个地方引用它时，计数器值就加1；当引用失效时，计数器值就减1；任何时刻计数器为0的对象就是不可能再被使用的。

引用计数算法（ReferenceCounting）的实现简单，判定效率也很高，但是在Java虚拟机里面没有选用引用计数算法来管理内存，其中最主要的原因是它很难解决对象之间相互循环引用的问题。

比如俩个对象objA和objB都有字段i...]]></description><category></category></item><item><title><![CDATA[指针碰撞和空闲列表]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/105103011</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/105103011</guid><author>yun_ld</author><pubDate>Wed, 25 Mar 2020 20:07:24 +0800</pubDate><description><![CDATA[虚拟机遇到一条new指令时，首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用，并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有，那必须先执行相应的类加载过程。

在类加载检查通过后，接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定，为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。假设Java堆中内存是绝对规整的，...]]></description><category></category></item><item><title><![CDATA[使用SHA1withRSA算法进行签名和验签]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/104423486</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/104423486</guid><author>yun_ld</author><pubDate>Fri, 21 Feb 2020 10:35:32 +0800</pubDate><description><![CDATA[package com.hhh.nnn.test;

import org.apache.commons.codec.binary.Base64;

import java.nio.charset.StandardCharsets;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.s...]]></description><category></category></item><item><title><![CDATA[CAS单点登录原理解析]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/104291683</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/104291683</guid><author>yun_ld</author><pubDate>Thu, 13 Feb 2020 10:44:47 +0800</pubDate><description><![CDATA[1、基于Cookie的单点登录的回顾

  

基于Cookie的单点登录核心原理：

   将用户名密码加密之后存于Cookie中，之后访问网站时在过滤器（filter）中校验用户权限，如果没有权限则从Cookie中取出用户名密码进行登录，让用户从某种意义上觉得只登录了一次。

   该方式缺点就是多次传送用户名密码，增加被盗风险，以及不能跨域。同时www.qiandu.co...]]></description><category></category></item><item><title><![CDATA[时间格式 YYYY-MM-dd 的 bug]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/104024565</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/104024565</guid><author>yun_ld</author><pubDate>Fri, 17 Jan 2020 21:04:56 +0800</pubDate><description><![CDATA[前一阵子，我们项目中遇到了一个 bug，时间格式的bug，2019-12-31那天显示成了2020-12-31，在网上一搜，也有其他人遇到了同样的 bug，这里就对这个问题记录一下。

一直以来使用yyyy 和 YYYY 结果都一样，也就没有去研究它们之间的区别，但是这次遇到了这个 bug，所以就去研究了一下。那么产生这个 bug 的原因是什么呢？其实很简单，就是把 yyyy-MM-dd 写成了...]]></description><category></category></item><item><title><![CDATA[MD5 加密结果]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/103899174</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/103899174</guid><author>yun_ld</author><pubDate>Wed, 08 Jan 2020 22:20:42 +0800</pubDate><description><![CDATA[MD5的典型应用是对一段信息（Message）产生信息摘要（Message-Digest），以防止被篡改。MD5加密是无法解密的，网上有一些在线工具解密，但这个解密并不是真正的解密，只是通过穷举法，明文密文对应查询数据库来达到解密的目的。

MD5 加密后的位数有两种：16 位与 32 位。16 位实际上是从 32 位字符串中取中间的第 9 位到第 24 位的部分，用 Java 语言来说，即：

...]]></description><category></category></item><item><title><![CDATA[一个故事讲完 HTTPS]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/103538399</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/103538399</guid><author>yun_ld</author><pubDate>Sat, 14 Dec 2019 13:54:07 +0800</pubDate><description><![CDATA[1

 序言

今天来聊一聊https 安全传输的原理。

在开始之前，我们来虚构两个人物， 一个是位于中国的张大胖（怎么又是你？！）， 还有一个是位于米国的Bill (怎么还是你？！)。

这俩哥们隔着千山万水，通过网络联系上了， 两个人臭味相投，聊得火热。

此时正值米国大选， 张大胖亲切地“致电”Bill, 对米国总统大选的情况表示强烈地关注。 Bill则回电说谢谢关心米国人的事情我们米国...]]></description><category></category></item><item><title><![CDATA[图解公钥与私钥]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/103538325</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/103538325</guid><author>yun_ld</author><pubDate>Sat, 14 Dec 2019 13:39:40 +0800</pubDate><description><![CDATA[1. 鲍勃有两把钥匙，一把是公钥，另一把是私钥。

2. 鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。

3. 苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密，就可以达到保密的效果。

4. 鲍勃收信后，用私钥解密，就看到了信件内容。这里要强调的是，只要鲍勃的私钥不泄露，这封信就是安全的，即使落在别人手里，也无法解密。

5. 鲍勃给苏珊回信，决定采用"数字签名"。他写...]]></description><category></category></item><item><title><![CDATA[FastJson和Jackson对null的处理]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/103498293</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/103498293</guid><author>yun_ld</author><pubDate>Wed, 11 Dec 2019 20:08:56 +0800</pubDate><description><![CDATA[一、fastJson

1、fastJson在转换java对象为json的时候，默认是不序列化null值对应的key的。

也就是说当对象里面的属性为空的时候，在转换成json时，不序列化那些为null值的属性。


public static void main(String[] args) {
	Student student = new Student();
	student.setName...]]></description><category></category></item><item><title><![CDATA[Twitter雪花算法的java实现]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/103412792</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/103412792</guid><author>yun_ld</author><pubDate>Thu, 05 Dec 2019 21:27:21 +0800</pubDate><description><![CDATA[概述

SnowFlake算法是Twitter设计的一个可以在分布式系统中生成唯一的ID的算法，它可以满足Twitter每秒上万条消息ID分配的请求，这些消息ID是唯一的且有大致的递增顺序。



原理

SnowFlake算法产生的ID是一个64位的整型，结构如下（每一部分用“-”符号分隔）：

0 - 0000000000 0000000000 0000000000 0000000000 0...]]></description><category></category></item><item><title><![CDATA[@JsonInclude - jackSon注解]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/103282256</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/103282256</guid><author>yun_ld</author><pubDate>Wed, 27 Nov 2019 19:55:39 +0800</pubDate><description><![CDATA[使用jackSon序列化时，默认情况下，如果字段status为null，则序列化结果就为：


{
...,
"status": null,
...
}

那如果有好几个字段都是null，那序列化的结果就会有很多这样的null，这样就不太好了，而使用@JsonInclude注解就可以解决这个问题。下面详细说明。



普通Java类(pojo)：


@JsonInclude(JsonInclu...]]></description><category></category></item><item><title><![CDATA[IDEA远程调试Tomcat]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/103206192</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/103206192</guid><author>yun_ld</author><pubDate>Fri, 22 Nov 2019 19:33:42 +0800</pubDate><description><![CDATA[一、linux环境修改tomcat配置


vi tomcat8/bin/catalina.sh 


#                   Example (all one line)
#                   LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManage
#
#...]]></description><category></category></item><item><title><![CDATA[nohup的执行jar包]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/103055849</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/103055849</guid><author>yun_ld</author><pubDate>Wed, 13 Nov 2019 19:41:07 +0800</pubDate><description><![CDATA[Java springboot项目打包为jar包，在linux上部署方式跟war包不一样。

我们使用下面的命令进行部署：

一、下面的命令表示在当前ssh窗口，可按CTRL + C打断程序运行，或者直接关闭窗口，则程序直接退出


java -jar XXX.jar

二、下面的命令表示在当窗口关闭时，程序才会中止运行。&amp;代表让该命令在后台执行。


java -jar XXX.jar ...]]></description><category></category></item><item><title><![CDATA[@Scheduled注解-springMVC中的定时任务]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/102941558</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/102941558</guid><author>yun_ld</author><pubDate>Wed, 06 Nov 2019 19:37:37 +0800</pubDate><description><![CDATA[在日常开发中，有时候需要用到定时任务，而spring提供了一个简单的方式让我们来实现定时任务，一个简单的注解@Scheduled即可实现。

配置：

要使用@Scheduled注解，我们需要在applicationContext.xml中配置如下：


&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans xmlns="http://www...]]></description><category></category></item><item><title><![CDATA[linux定时任务-crontab]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/102825229</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/102825229</guid><author>yun_ld</author><pubDate>Wed, 30 Oct 2019 19:12:13 +0800</pubDate><description><![CDATA[crond 是linux用来定期执行程序的命令。当安装完成操作系统之后，默认便会启动此 任务调度命令。crond命令每分钟会定期检查是否有要执行的工作，如果有要执行的工作便会自动执行该工作。

语法：


  *　　*　　*　　*　　*　　command
  分　时　日　月　周　命令（注意：日和周不要组合）
  第1列表示分钟1～59 每分钟用*或者 */1表示
  第2列表...]]></description><category></category></item><item><title><![CDATA[策略模式—设计模式]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/102734011</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/102734011</guid><author>yun_ld</author><pubDate>Thu, 24 Oct 2019 22:43:49 +0800</pubDate><description><![CDATA[设计模式中的策略模式

下面是某个市场人员接到单后的报价策略，报价策略很复杂，可以简单作如下分类：
普通客户小批量，不打折
普通客户大 批量，打9折
老 客户小批量，打8.5折
老 客户大批量，打8折
我们通常可以适用条件语句进行处理，代码如下：


public class Test {
    public double getPrice(String type ,double price )...]]></description><category></category></item><item><title><![CDATA[杂谈：我为什么开始写博客，我又不是什么大犇]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/102592589</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/102592589</guid><author>yun_ld</author><pubDate>Wed, 16 Oct 2019 19:03:18 +0800</pubDate><description><![CDATA[杂谈：我为什么开始写博客，我又不是什么大犇？

我写博客只是自己学习总结的一种方式

首先我很多遇见的问题都是在很多博客中找到解决方案的，我想我在学习路上积累的东西也可以做个总结，我写的博客很多就是自己的学习总结，方便以后自己查阅。刚开始并没有给别人看的意思，写的很随意，自己看得懂就行。但渐渐的发现我写的东西有人评论了，访问量多了一点，我就觉得还是有人认真看的，我还是认真点吧，然后就开始用md写了...]]></description><category></category></item><item><title><![CDATA[适配器模式—设计模式]]></title><link>https://blog.youkuaiyun.com/yun_ld/article/details/102508775</link><guid>https://blog.youkuaiyun.com/yun_ld/article/details/102508775</guid><author>yun_ld</author><pubDate>Fri, 11 Oct 2019 19:39:03 +0800</pubDate><description><![CDATA[设计模式中的适配器模式

适配器模式，把一个类接口变化成客户端所期待的另一个类的接口，使原来因接口不匹配而无法一起工作的类能够一起工作。Java源码中的例子：如Java IO中的java.io.InputStreamReader(InputStream) 和java.io.OutputStreamWriter(OutputStream)就是典型的适配器模式，通过InputStreamReader、...]]></description><category></category></item></channel></rss>