<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[一只野生的程序猿]]></title><description><![CDATA[每日一博？？？？]]></description><link>https://blog.youkuaiyun.com/qq_31440321</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_31440321]]></copyright><item><title><![CDATA[join 数据 出现笛卡尔积问题]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/125302487</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/125302487</guid><author>qq_31440321</author><pubDate>Wed, 15 Jun 2022 18:28:04 +0800</pubDate><description><![CDATA[多表查询的笛卡尔乘积问题]]></description><category></category></item><item><title><![CDATA[Ubantu18 设置java程序开机启动]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/120364149</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/120364149</guid><author>qq_31440321</author><pubDate>Sat, 18 Sep 2021 11:28:57 +0800</pubDate><description><![CDATA[Ubantu18 设置java程序开机启动
通过service 开机启动

在/etc/system.d/system 下创建 test.service

 cd /etc/system.d/system
 vim test.service

= service内容 =[Unit]
# 描述
Description=java chongming service
# 文本内容
Documentation=test
After=network.target

[Service]
User=root
# 工作目录]]></description><category></category></item><item><title><![CDATA[The temporary upload location [/tmp/tomcat.83190.8081/work/Tomcat/localhost/api] is not valid]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/112235518</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/112235518</guid><author>qq_31440321</author><pubDate>Tue, 05 Jan 2021 15:05:48 +0800</pubDate><description><![CDATA[生产环境 代码运行一段时间后 出现上传失败问题
Caused by: java.io.IOException: The temporary upload location [/tmp/tomcat.8142485459288314790.8081/work/Tomcat/localhost/api] is not valid
        at org.apache.catalina.connector.Request.parseParts(Request.java:2839)
        at or]]></description><category></category></item><item><title><![CDATA[基于JDK命令参数]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111881770</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111881770</guid><author>qq_31440321</author><pubDate>Tue, 29 Dec 2020 10:34:45 +0800</pubDate><description><![CDATA[JVM参数类型

标准参数

-help
-server -client
-version -showversion
-cp -classpath


X参数

-Xint： 解释执行
-Xcomp：第一次使用就编译成本地代码
-Xmixed:混合模式，JVM自己来决定是否编译成本地代码


XX参数


Boolean 类型

-XX[±] 表示启用或禁用name属性



非Boolean类型

-XX =  表示name属性的值是value





查看JVM运行时参数

–XX:PrintFlag]]></description><category></category></item><item><title><![CDATA[Java内存参数]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111881752</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111881752</guid><author>qq_31440321</author><pubDate>Tue, 29 Dec 2020 10:34:11 +0800</pubDate><description><![CDATA[Trace 跟踪参数

打印GC的简要信息： -Xlog:gc
打印GC详细信息：-Xlog:gc*
指定GC log 的位置，以文件输出：-Xlog:gc:garbage-collection.log

gc日志格式

GC发生的时间，JVM从启动以来经过的秒数
日志级别信息，和日志类型标记
GC识别号
GC类型和说明GC的原因
容量：GC前容量-&gt; GC后容量（该区域总容量）
GC持续时间，单位秒。有的收集器会有更详细的描述，比如：user 表示应用程序消耗的时间，sys表示系统内核消耗的时间、r]]></description><category></category></item><item><title><![CDATA[JVM-架构]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111881662</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111881662</guid><author>qq_31440321</author><pubDate>Tue, 29 Dec 2020 10:31:38 +0800</pubDate><description><![CDATA[JVM简化架构]]></description><category></category></item><item><title><![CDATA[ASM 了解]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111881589</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111881589</guid><author>qq_31440321</author><pubDate>Tue, 29 Dec 2020 10:27:20 +0800</pubDate><description><![CDATA[概述

ASM 是一个JAVA字节码操纵框架，它能被用来动态生成类或者增强既有类的功能
ASM可以直接产生二进制class，也可以在类被加载入虚拟机之前改变类行为
ASM从类文件中读入信息后，能够改变类行为，分析类信息，甚至能根据要求生成新类。
cglib、Hibernate、Spring 都直接或间接地使用ASM操作字节码

ASM编程模型

Core API:提供了基于事件形式的编程模型。该模型不需要一次性将整个类的结构读取到内存中，因此这种方式更快，需要更少的内存。编程难度较大
Tree API：提供]]></description><category></category></item><item><title><![CDATA[JVM-classFile]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111881574</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111881574</guid><author>qq_31440321</author><pubDate>Tue, 29 Dec 2020 10:26:39 +0800</pubDate><description><![CDATA[结构信息

固定结构

magic 魔术
副版本号,主版本号
常量池

	cp_info{
		u1 tag
		u2 info[];
	}

Constant Type Value(TAG说明)
CONSTANT_Class 7
CONSTANT_Fieldref 9
CONSTANT_Methodref 10
CONSTANT_InterfaceMethodref 11
CONSTANT_String 8
CONSTANT_Integer 3
CONSTANT_Float 4
CONSTANT_Long]]></description><category></category></item><item><title><![CDATA[@注解的理解]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111881543</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111881543</guid><author>qq_31440321</author><pubDate>Tue, 29 Dec 2020 10:25:48 +0800</pubDate><description><![CDATA[总体解释

注解介绍

那如何去解析注解呢？用到Java强大的反射功能。
反射-可以通过类对象获取到这个类的各种信息比如成员变量、方法等，
那注解标记能不能通过反射获取呢？能。
所以注解的原理其实很简单，本质上是通过反射功能动态获取注解标记，然后按照不同的注解执行不同的操作，比如@Autowired可以注入一个对象给变量赋值。

注解结构体


一个注解可以简单拆解为三个部分：
第一部分：注解体
注解的定义有点类似于接口（interface），只不过前面一个加了一个@符号，这个千万不能省。
第二部分：注解变]]></description><category></category></item><item><title><![CDATA[JVM 简单了解]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111881466</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111881466</guid><author>qq_31440321</author><pubDate>Tue, 29 Dec 2020 10:23:20 +0800</pubDate><description><![CDATA[JVM概述



JVM 主要功能

通过classloader 寻找和装载类文件
解释字节码成为指令并执行，提供class文件的运行环境
进行运行期间的内存分配和垃圾回收
提供与硬件交互的平台






JVM 虚拟机规范


作用
Java 虚拟机规范为不同的硬件平台提供了一种编译Java技术代码的规范
该规范使用Java软件独立于平台，因为编译是针对作为虚拟机的“一般机器”而做
这个“一般机器”可用软件模拟并运行于各种现存的计算机系统，也可用硬件来实现


主要内容
（1） 字节码指令集（相当于..]]></description><category></category></item><item><title><![CDATA[Docker安装遇到的问题]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111881439</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111881439</guid><author>qq_31440321</author><pubDate>Tue, 29 Dec 2020 10:21:02 +0800</pubDate><description><![CDATA[docker pull下载镜像报错Get https://registry-1.docker.io/v2/library/centos/manifests/latest:… timeout

解救方案

安装 yum -y bind-utils
dig @114.114.114.114 registry-1.docker.io


]]></description><category></category></item><item><title><![CDATA[图片工具类]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111881421</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111881421</guid><author>qq_31440321</author><pubDate>Tue, 29 Dec 2020 10:20:24 +0800</pubDate><description><![CDATA[图片工具

package com.chinamobile.cmss.marathon.domain.marathon.util;

import lombok.extern.slf4j.Slf4j;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.tomcat.util.codec.binary.Base64;

import javax.imageio.ImageIO;
import java.awt.image.Buffe.]]></description><category></category></item><item><title><![CDATA[MutilpartFile转File]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111881401</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111881401</guid><author>qq_31440321</author><pubDate>Tue, 29 Dec 2020 10:19:41 +0800</pubDate><description><![CDATA[1.上传文件multipartFIle 转为file文件 工具类

import lombok.extern.slf4j.Slf4j;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileOutputStream;
im]]></description><category></category></item><item><title><![CDATA[SpringBoot 生产环境 下载附件问题]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111881334</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111881334</guid><author>qq_31440321</author><pubDate>Tue, 29 Dec 2020 10:18:08 +0800</pubDate><description><![CDATA[静态资源文件一定要放入resource文件下（估计 java 除静态资源以外都需要编译。其他的都会路径会出现问题）
静态资源文件 springBoot 定义了5个位置

默认情况下，一共有5个位置可以放静态资源，五个路径分别是如下5个：
classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/
/


获取静态资源文件下的文件

import org.springframework..]]></description><category></category></item><item><title><![CDATA[Filter Intercepter AOP   机制 区别练习]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111696360</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111696360</guid><author>qq_31440321</author><pubDate>Fri, 25 Dec 2020 18:04:17 +0800</pubDate><description><![CDATA[三者都是AOP思想
Filter

基于servelet 标准接口
tomcat 容器接受http请求

Intercepter

基于spring

AOP

基于spring

http -&gt; 服务器(经过顺序)
Filter -&gt; Intercepter -&gt; AOP -&gt; controler

]]></description><category></category></item><item><title><![CDATA[SpringBoot 集成kaptcha验证码]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111692317</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111692317</guid><author>qq_31440321</author><pubDate>Fri, 25 Dec 2020 17:07:38 +0800</pubDate><description><![CDATA[引入jar包

        &lt;!-- 验证码--&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;com.github.penggle&lt;/groupId&gt;
            &lt;artifactId&gt;kaptcha&lt;/artifactId&gt;
            &lt;version&gt;2.3.2&lt;/version&gt;
        &lt;/dependency&gt.]]></description><category></category></item><item><title><![CDATA[买卖股票的最佳时机 II （百度之后的思考）]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111692144</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111692144</guid><author>qq_31440321</author><pubDate>Fri, 25 Dec 2020 17:04:52 +0800</pubDate><description><![CDATA[买卖股票的最佳时机 II

给定一个数组，它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易（多次买卖一支股票）。

注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。
2. 案例


示例 1:
输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天（股票价格 = 1）的时候买入，在第 3 天（股票价格 = 5）的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
随后，在第 4 天（股票价格 = ]]></description><category></category></item><item><title><![CDATA[HashMap理解]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111691938</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111691938</guid><author>qq_31440321</author><pubDate>Fri, 25 Dec 2020 17:02:37 +0800</pubDate><description><![CDATA[HashMap名词解释

HasMap 存储Key-Value的键值对。 每个键值对 也叫做Entry
这些键值对（Entity） 分散存储在一个数组当中，这个数组就是HashMap的主干
HashMap数组的每个元素的初始值都为Null
常用的HashMap方法： GET 、Put

PUT的原理

利用一个哈希函数来确定Entry的插入位置(index)

index = Hash(“apple”);


HashMap 长度有限，当插入的Entry 越来越多，会出现index 冲突

解决方案链表

]]></description><category></category></item><item><title><![CDATA[并发-Synchronized]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111691849</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111691849</guid><author>qq_31440321</author><pubDate>Fri, 25 Dec 2020 17:00:21 +0800</pubDate><description><![CDATA[Synchronized
monitor 原理（操作系统的）

Monitor 被翻译为监视器或管程

每个 Java 对象都可以关联一个 Monitor 对象，如果使用synchronized 给对象上锁(重量级)之后，该对象头的Mark Word 中就被设置指向 Monitor 对象的指针
monitor 结构如下

执行步骤

刚开始 Monitor 中 Owner 为 null
当 Thread-2 执行 synchronized(obj) 就会将 Monitor 的所有者 Owner 置为 Thr]]></description><category></category></item><item><title><![CDATA[Linux杂记]]></title><link>https://blog.youkuaiyun.com/qq_31440321/article/details/111691764</link><guid>https://blog.youkuaiyun.com/qq_31440321/article/details/111691764</guid><author>qq_31440321</author><pubDate>Fri, 25 Dec 2020 16:58:46 +0800</pubDate><description><![CDATA[关机重启命令
shutdown -r 重启
shutdown -h “dfdfdf”
reboot 重启
shutdown -h now 关机
系统目录结构
/bin 经常使用的命令
/boot 核心文件
/dev 外部设备缩写
/etc 配置文件
/home 用户主目录
/lib 共享库
media 自动识别的设备
/mnt 系统挂载
opt 额外安装软件目录
proc 虚拟目录
root 系统管理员目录
sbin 管理员使用程序
selinux 安全机制，特有目录
srv 服务启动读取的数据
查看文件
]]></description><category></category></item></channel></rss>