<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[蒙牛真好的博客]]></title><description><![CDATA[学习中]]></description><link>https://blog.youkuaiyun.com/nullbull</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; nullbull]]></copyright><item><title><![CDATA[Java HttpClient如何带证书发起请求]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/113601306</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/113601306</guid><author>nullbull</author><pubDate>Wed, 03 Feb 2021 14:02:00 +0800</pubDate><description><![CDATA[javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.ssl.Alerts.g]]></description><category></category></item><item><title><![CDATA[使用三个锁解决生产者消费者问题]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/111562835</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/111562835</guid><author>nullbull</author><pubDate>Tue, 22 Dec 2020 17:37:39 +0800</pubDate><description><![CDATA[//队列
public class Buffer {

    private Queue&lt;String&gt; queue;
    private int size = 10;
	// 消费者锁
    private Object getLock = new Object();
    // 生产者锁
    private Object addLock = new Object();
    
    private AtomicInteger count = new AtomicIntege]]></description><category></category></item><item><title><![CDATA[Mybatis-Plus-Plus--支持两表关联查询的Mybatis-Plus插件]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/108881745</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/108881745</guid><author>nullbull</author><pubDate>Wed, 30 Sep 2020 11:07:21 +0800</pubDate><description><![CDATA[mybatis-plus-plus（mpp）
针对mybatis-plus只能进行单表操作，通过使用此插件，可以支持两表关联查询
github: https://github.com/nullbull/mybatis-plus-plus
gitee: https://gitee.com/nullbull/mybatis-plus-plus
欢迎大家提需求，issue，改进意见，感谢各位
demo可见 https://github.com/nullbull/mybatis-plus-plus-demo
接入步]]></description><category></category></item><item><title><![CDATA[为什么jvm启动时，参数Xms指定的内存大小没有被占用]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/108670344</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/108670344</guid><author>nullbull</author><pubDate>Mon, 21 Sep 2020 18:12:49 +0800</pubDate><description><![CDATA[JVM参数设置为 -Xms4g -Xmx4g 最大堆内存和最小堆内存都设置了4G，但是为什么java进程占用的实际物理内存却没有占用4个G，却是随着进程的运行，不断的增长，直到触发FullGC，并且发生完FullGC之后，Java进程的内存却没有随之变小？
问题1：为什么参数Xms指定的内存大小没有被占用
原因：JVM在启动前会向操作系统申请内存， 注意这个内存是虚拟内存，如果-Xms设置的过大，超过了操作系统可分配的内存上线，就会启动失败，报下面的异常
Error occurred during init]]></description><category></category></item><item><title><![CDATA[使用org.yaml.snakeyaml解析YAML，遇到大括号{}等特殊符号报错，如何解决]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/107160163</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/107160163</guid><author>nullbull</author><pubDate>Mon, 06 Jul 2020 15:37:12 +0800</pubDate><description><![CDATA[while parsing a flow mapping
 in 'reader', line 54, column 7:
        - {key: /test/{id}, id: ... 
          ^
expected ',' or '}', but got {
 in 'reader', line 54, column 30:
        - {key: /test/{id}, id: 123}
                                 ^

	at org]]></description><category></category></item><item><title><![CDATA[Java8日期计算：获取两个日期之间的所有日期]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/105368932</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/105368932</guid><author>nullbull</author><pubDate>Mon, 13 Apr 2020 14:13:07 +0800</pubDate><description><![CDATA[Java8日期计算：获取两个日期之间的所有日期
现在有个需求–求出两个日期之间的所有日期，包括起止日期，那么我们用Java8的LocalDate怎么方便简单的计算呢？
其实很简单，求出两个日期之间的绝对天数差，用结束时间减或用开始时间加天数，就能求出时间段内的所有日期。
现在不建议用Calendar来进行日期操作，原因如下

Calendar性能不如LocalDate，不是线程安全的类
Calen...]]></description><category></category></item><item><title><![CDATA[Java如何处理前端传过来的Base64图片]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/102573431</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/102573431</guid><author>nullbull</author><pubDate>Tue, 15 Oct 2019 19:44:19 +0800</pubDate><description><![CDATA[public static void main(String[] args) {
    	//前端传过来的Base64转码过的图片码
        String  data = "/9j/4AAQSkZJRgABAQIAHAAcAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUV...]]></description><category></category></item><item><title><![CDATA[JDBC获取表名以及表相关字段名]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/102461650</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/102461650</guid><author>nullbull</author><pubDate>Wed, 09 Oct 2019 15:23:56 +0800</pubDate><description><![CDATA[public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql:;
        String user = "root";
        String password = "root";
        Class.forName("com.mysql.jdbc.D...]]></description><category></category></item><item><title><![CDATA[JDK1.8LocalDate计算两个时间的天数差]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/95993248</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/95993248</guid><author>nullbull</author><pubDate>Mon, 15 Jul 2019 17:43:41 +0800</pubDate><description><![CDATA[package JDK8Date;

import java.time.Clock;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Period;
import java.time.temporal.TemporalAdjusters;

public class LocalDateDemo...]]></description><category></category></item><item><title><![CDATA[使用Nginx解决跨域问题，Java实现]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/95961035</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/95961035</guid><author>nullbull</author><pubDate>Mon, 15 Jul 2019 14:00:49 +0800</pubDate><description><![CDATA[跨域是前端开发中经常会遇到的问题，前端调用后台服务时，通常会遇到 No ‘Access-Control-Allow-Origin’ header is present on the requested resource的错误，这是因为浏览器的同源策略拒绝了我们的请求。
所谓同源是指，域名，协议，端口相同，浏览器执行一个脚本时同源的脚本才会被执行。如果非同源，那么在请求数据时，浏览器会在控制台中报一...]]></description><category></category></item><item><title><![CDATA[NIO学习]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/84024636</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/84024636</guid><author>nullbull</author><pubDate>Tue, 13 Nov 2018 10:27:16 +0800</pubDate><description><![CDATA[NIO
Buffer


两个buffer相等,当且仅当剩余内容相同


可以批量传输, 将一个数组作为get的参数,这个数组的大小不能超过缓冲区剩余的内容


mark() 将 mark 设为 position reset() 将position设为 mark


char[] zwt = &quot;zwtmylove&quot;.toCharArray();
buffer.put(zwt);
CharBuffe...]]></description><category></category></item><item><title><![CDATA[Redis设计与实现知识点记录]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/83654288</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/83654288</guid><author>nullbull</author><pubDate>Fri, 02 Nov 2018 14:05:11 +0800</pubDate><description><![CDATA[Redis 数据结构
SDS简单动态字符串
struct sdshdr {
​	int len;//记录已使用的长度
​	int free;//记录未使用的长度
​	char buf[]//保存字符串
}
优点:

可以直接获取字符串的长度,O(1)复杂度
可以杜绝缓冲区溢出（可能会把别的字符串覆盖掉）,先扩容,在修改
扩容会申请额外的内存空间,如果SDS的长度小于1M,那么扩容为以前的2倍,如果...]]></description><category></category></item><item><title><![CDATA[秒杀和抢单系统的设计思路]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/83588482</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/83588482</guid><author>nullbull</author><pubDate>Wed, 31 Oct 2018 18:22:06 +0800</pubDate><description><![CDATA[抢单设计

系统启动，将当天的Express加入到Redis，设置过期时间一天
订单更新，将之前的key过期，插入一条新的
有人抢单，添加分布式锁，将该key过期
mq更新mysql，创建订单

秒杀设计


系统启动，将商品信息加入redis


加Redis分布式锁，对Redis数量进行更新，如果小于0返回失败，如果大于0进行下一步


将消息发送到mq，更新mysql，创建订单


出现的问...]]></description><category></category></item><item><title><![CDATA[10月17号小米面经]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/83575728</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/83575728</guid><author>nullbull</author><pubDate>Wed, 31 Oct 2018 10:10:05 +0800</pubDate><description><![CDATA[10月17号小米面经
一面

讲小项目和实习
进程线程区别
TCP/UDP区别
说说熟悉的数据结构，
写了个简单程序，从各个角度分析，比如编译原理，操作系统，还提示说，这头文件是干啥的，using namespace std是干啥的，还
有一个for循环汇编怎么执行的。
计算机的存储结构，123级缓存，内存硬盘，为什么要这样设计
32位内存最大多少，物理内存只有1G，逻辑地址可以有4G怎么实现的。...]]></description><category></category></item><item><title><![CDATA[HTTP知识点记录]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/83575327</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/83575327</guid><author>nullbull</author><pubDate>Wed, 31 Oct 2018 10:04:54 +0800</pubDate><description><![CDATA[Http头


Http1.0没有长链接， Http1.1默认长链接，是为了避免不断的建立链接，断开链接的消耗，并且可以不得到确认继续请求，提交响应速度。


Http分为请求报文和相应报文

请求报文

报文首部

请求行
请求首部字段
通用首部字段
实体首部字段
其他
空行
报文主体




响应报文

报文首部

状态行
响应首部字段
通用首部字段
实体首部字段
其他


空行
报文主体

...]]></description><category></category></item><item><title><![CDATA[Java后台秋招总结]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/82924550</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/82924550</guid><author>nullbull</author><pubDate>Tue, 02 Oct 2018 10:35:37 +0800</pubDate><description><![CDATA[终于结束秋招了，之前浪费了贝壳，美团，京东的机会，感觉还是准备的有点晚。心得体会就是面的越多，知道自己的缺陷就越多，自己在哪方面还需要进一步加强学习，准备的才可以更充分。所以一开始的面试失败，不要灰心，沮丧，这些都是经验，要知道累计到一定程度，就能在之后的面试屡战屡胜。


基础要扎实，最起码的一些类似笔试题的题目一定不能答错，比如String a = “123”, String b = new ...]]></description><category></category></item><item><title><![CDATA[Jvm学习]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/82823961</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/82823961</guid><author>nullbull</author><pubDate>Sun, 23 Sep 2018 18:46:09 +0800</pubDate><description><![CDATA[
Java对象在内存中 三部分 头部信息， 实例数据， 对齐补充
句柄访问，直接指针
1.句柄访问是 定义一个指针表 一个包含类型的实例地址，一个包含类型的类型地址
2.直接指针是 直接就能访问实例地址，然后在获取类型信息
方法区 类名， 访问修饰符，常量池，字段描述，方法描述
不可达意味着该对象可以被回收
复制删除 标记整理

JVM模型

程序计数器
指向程序执行的字节码地址，如果正在执行的是...]]></description><category></category></item><item><title><![CDATA[RabbitMq配合Redis的小Demo以及对RabbitMQ发布模式的理解]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/82773442</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/82773442</guid><author>nullbull</author><pubDate>Wed, 19 Sep 2018 15:56:57 +0800</pubDate><description><![CDATA[安装好RabbitMq后，配合Spring使用RabbitMq


	引入依赖
	

&amp;lt;!--rabbit mq--&amp;gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;com.rabbitmq&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;amqp-client&amp;lt;/artifactId&amp;gt;
    &amp;lt;versio...]]></description><category></category></item><item><title><![CDATA[Java判断两个Date/时间戳 对象是否是同一天]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/82745942</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/82745942</guid><author>nullbull</author><pubDate>Mon, 17 Sep 2018 17:22:55 +0800</pubDate><description><![CDATA[最近有个需求是判断在创建新对象的今天之前已经创建了这个对象，如果是昨天创建的，则正常；

通过Calendar来获取date对象的年份和在该年份中第几天，然后比较这两个信息来判断是不是同一天


SimpleDateFormat format = new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;);
Date date = format.parse(&quot;2018-...]]></description><category></category></item><item><title><![CDATA[Kafka+zookeeper安装配置启用并整合SpringBoot实现生产消费]]></title><link>https://blog.youkuaiyun.com/nullbull/article/details/82379589</link><guid>https://blog.youkuaiyun.com/nullbull/article/details/82379589</guid><author>nullbull</author><pubDate>Tue, 04 Sep 2018 10:37:59 +0800</pubDate><description><![CDATA[Linux Kafka配合zookeeper启动并整合SpringBoot
	
	下载kafka，我下载的是kafka_2.12-1.0.0.tgz，所以pom添加依赖的时候也要添加对应的jar包
	下载zookeeper
	解压，首先启动zookeeper，修改zookeeper/conf下面的zoo_sample.cfg, 修改里面的dataDir=/opt/zkdata(举例)，将这个文...]]></description><category></category></item></channel></rss>