<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fish_fish_java的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fish_fish_java</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fish_fish_java]]></copyright><item><title><![CDATA[task-service jenkins file]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/123708221</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/123708221</guid><author>fish_fish_java</author><pubDate>Thu, 24 Mar 2022 12:50:20 +0800</pubDate><description><![CDATA[pipeline {
 agent { label 'wing-node-large' }

 environment {
   REDIS_PORT = getRandomPort()
   MONGO_PORT = getRandomPort()
   ECR_URI = '633349536424.dkr.ecr.cn-north-1.amazonaws.com.cn'
   SONARQUBE_BASE_URL='https://sonarqube.syriusrobot...]]></description><category></category></item><item><title><![CDATA[flagship jenkins file]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/123708203</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/123708203</guid><author>fish_fish_java</author><pubDate>Thu, 24 Mar 2022 12:49:15 +0800</pubDate><description><![CDATA[pipeline {
  agent { label 'ci21' }

  environment {
   VERSION = getVersion()
   ECR_URI = '633349536424.dkr.ecr.cn-north-1.amazonaws.com.cn'
   RELEASE_S3_BUCKET_NAME='flexgalaxy-test-docs'
   DEPLOY_S3_BUCKET_NAME='flexgalaxy-ai-docs'
...]]></description><category></category></item><item><title><![CDATA[jenkinsfile]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/123042689</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/123042689</guid><author>fish_fish_java</author><pubDate>Mon, 21 Feb 2022 10:52:26 +0800</pubDate><description><![CDATA[pipeline {
 agent { label 'ci22' }

 environment {
   SNOAR_HOST_URL = 'https://sonarqube.syriusrobotics.cn/'
   ECR_URI = '633349536424.dkr.ecr.cn-north-1.amazonaws.com.cn'
   INTERFACE_DOCUMENT_URL = 'https://docs.flexgalaxy.ai/en/flagship/alp...]]></description><category></category></item><item><title><![CDATA[app all kinds of ymal]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/121947784</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/121947784</guid><author>fish_fish_java</author><pubDate>Wed, 15 Dec 2021 11:05:36 +0800</pubDate><description><![CDATA[apiVersion: apps/v1
kind: Deployment
metadata:
  name: order-task-schedule-sz-test-deploy
  namespace: templar
spec:
  selector:
    matchLabels:
      app: order-task-schedule-sz-test
  replicas: 1
  template:
    metadata:
      labels:
        app: ord.]]></description><category></category></item><item><title><![CDATA[doxyfile demo]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/121904284</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/121904284</guid><author>fish_fish_java</author><pubDate>Mon, 13 Dec 2021 14:12:52 +0800</pubDate><description><![CDATA[docker run --rm -v $(pwd):/data -w /data hrektts/doxygen doxygen flagship_doc.doxyfile




# Doxyfile 1.8.11

# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
#
# All text after a double .]]></description><category></category></item><item><title><![CDATA[s3 jenkins file]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/121904248</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/121904248</guid><author>fish_fish_java</author><pubDate>Mon, 13 Dec 2021 14:10:43 +0800</pubDate><description><![CDATA[pipeline {

agent { label 'wing-node-normal' }



environment {

RELEASE_S3_BUCKET_NAME='flexgalaxy-test-docs'

DEPLOY_S3_BUCKET_NAME='flexgalaxy-ai-docs'

}



parameters {

string(name: 'VERSION', defaultValue: '1.0.0.10108')

}



stages {

stage('Check]]></description><category></category></item><item><title><![CDATA[quartz create jdbc tables]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/121100112</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/121100112</guid><author>fish_fish_java</author><pubDate>Tue, 02 Nov 2021 14:46:41 +0800</pubDate><description><![CDATA[#
# Quartz seems to work best with the driver mm.mysql-2.0.7-bin.jar
#
# PLEASE consider using mysql with innodb tables to avoid locking issues
#
# In your Quartz properties file, you'll need to set
# org.quartz.jobStore.driverDelegateClass = org.quartz.i.]]></description><category></category></item><item><title><![CDATA[深入理解Java虚拟机 tomcat类加载器架构笔记]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/119823207</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/119823207</guid><author>fish_fish_java</author><pubDate>Fri, 20 Aug 2021 15:48:26 +0800</pubDate><description><![CDATA[tomcat有commonClassLoader、CatalinaClassLoader、sharedClassLoader、webappClassLoader、jspClassLoader等类加载器。这些类加载器是为了实现Java类库的组织（隔离或者共享）创建的。

类加载器之间的关系如图



加载器之间的父子级关系并不是继承来实现的，而是通过组合来实现的。

隔离是怎么实现的呢？

    假如webappclass loader需要加载某个Java类库中的资源A.class，通过双亲委派...]]></description><category></category></item><item><title><![CDATA[记一次通过ip访问不到主机的问题]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/119408225</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/119408225</guid><author>fish_fish_java</author><pubDate>Thu, 05 Aug 2021 09:39:47 +0800</pubDate><description><![CDATA[问题描述：

    服务a部署在机器192.168.0.206上，前端通过Nginx代理访问后端，一个springbean类中有如下代码（图一）：



看第575行，相关代码如下（图二）：



请求到图一中该方法时，会抛出类找不到的异常。

经分析，原因可能如下：

由于图一方法中有图二类的引用，调用图一方法前该类会创建实例初始化，这会导致图二类的初始化，然后调用图二中的方法，图二红框中的方法会根据主机名来获取ip，由于host文件中没有配置主机名和127.0.0.1的映射，所以导致了异常...]]></description><category></category></item><item><title><![CDATA[一个线程死掉就等于整个进程死掉]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/118786478</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/118786478</guid><author>fish_fish_java</author><pubDate>Fri, 16 Jul 2021 10:24:28 +0800</pubDate><description><![CDATA[我的理解是：

如果你有n个任务，在同一个进程中用n个线程去完成这些任务，如果其中一个线程意外死亡（ERROR），很可能会导致整个进程终止，其他的线程也会销毁，这些任务就都失败了。

如果你用n个进程去完成这n个任务，由于进程都有自己独立的地址空间，当其中一个意外死亡（ERROR）时，并不会影响其他的任务。
...]]></description><category></category></item><item><title><![CDATA[同步和异步，阻塞和非阻塞]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/118382488</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/118382488</guid><author>fish_fish_java</author><pubDate>Thu, 01 Jul 2021 11:23:59 +0800</pubDate><description><![CDATA[同步：本线程后续代码逻辑依赖于某任务结果，就是同步（即使我提交了一个任务，返回一个future之后我执行了几行代码，然后我同步（f.get()）获取，仍然是同步的）。
异步：本线程后续代码逻辑不依赖于某任务结果，可以将此任务交给其他线程或者内核执行，可以在该任务上注册监听事件，完成之后的处理也不必在提交任务的线程（本线程）中。

阻塞：本线程执行某任务，任务完成之前线程挂起。
非阻塞：本线程执行某任务，任务提交之后立即返回，线程可以继续执行后续代码。

这是我的理解，欢迎指正
...]]></description><category></category></item><item><title><![CDATA[以太网是什么]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/117093006</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/117093006</guid><author>fish_fish_java</author><pubDate>Thu, 20 May 2021 22:23:32 +0800</pubDate><description><![CDATA[以太网是一种为多台计算机能够彼此自由和廉价地相互通信而设计的通信技术这种网络的本质其实就是一根网线。图上还有一种叫作收发器的小设备，它的功能只是将不同网线之间的信号连接起来而已。因此，当一台计算机发送信号时，信号就会通过网线流过整个网络，最终到达所有的设备。这就好像所有人待在一个大房间里，任何一个人说话，所有人都能够听到，同样地，这种网络中任何一台设备发送的信号所有设备都能接收到。不过，我们无法判断一个信号到底是发给谁的，因此需要在信号的开头加上接收者的信息，也就是地址。这样一来就能够判断信号的接收者了，与]]></description><category></category></item><item><title><![CDATA[tcp/ip协议是怎么传输数据的]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/117091600</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/117091600</guid><author>fish_fish_java</author><pubDate>Thu, 20 May 2021 22:14:22 +0800</pubDate><description><![CDATA[数据收发操作的第一步是创建套接字。一般来说，服务器一方的应用程序在启动时就会创建好套接字并进入等待连接的状态。客户端则一般是在用户触发特定动作，需要访问服务器的时候创建套接字。在这个阶段，还没有开始传输网络包。

创建套接字之后，客户端会向服务器发起连接操作。首先，客户端会生成一个SYN为1的TCP包并发送给服务器。这个TCP包的头部还包含了客户端向服务器发送数据时使用的初始序号，以及服务器向客户端发送数据时需要用到的窗口大小。当这个包到达服务器之后，服务器会返回一个SYN为1的TCP包。这个包的头部中也包]]></description><category></category></item><item><title><![CDATA[记java数组局部变量的初始化问题]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/115292922</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/115292922</guid><author>fish_fish_java</author><pubDate>Mon, 29 Mar 2021 16:58:25 +0800</pubDate><description><![CDATA[package com.example.demo;

import java.util.*;

/**
 * @author lzf
 * @create 2021/3/26
 */
class Solution {
    public static void main(String[] args) {
//        int i;
//        System.out.println(i);//i未初始化
//        int[] ints = new int[];//编译出错，需指定数.]]></description><category></category></item><item><title><![CDATA[记一次redis缓存的问题]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/112963640</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/112963640</guid><author>fish_fish_java</author><pubDate>Thu, 21 Jan 2021 16:17:11 +0800</pubDate><description><![CDATA[用redis缓存需要注意：

1、要缓存的对象要可序列化

2、如果对象或者对象中的对象属性可能为空，需要在类上加上


@JsonIgnoreProperties(ignoreUnknown = true)不然空值存入redis，接口第二次使用缓存的时候反序列化会失败。
...]]></description><category></category></item><item><title><![CDATA[从最直观的逻辑看一下KMP算法]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/108003200</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/108003200</guid><author>fish_fish_java</author><pubDate>Fri, 14 Aug 2020 16:58:16 +0800</pubDate><description><![CDATA[有一个文本串S，和一个模式串P，现在要查找P在S中的位置，怎么查找呢，KMP算法就是一种方法，看下图：



如果使用暴力匹配 ，假如S(x)-S(k)对应P(0)-P(k-x)的部分都相同（此处约定：S(n)代表字符串S中第n个字符，-代表到的意思，并非减）,但是S(k+1)不等于P(k+1-x)，则需要继续比较S(x+1)是否等于P(0),真的只能这样比较么，当然不是，看KMP：假如在字符串S中S(x)-S(y)和S(z)-S(k)相同（此时S(x)-S(y)就是在字符串S(x)-S(k)中的最大长度的]]></description><category></category></item><item><title><![CDATA[记录一次打jar包获取不到文件的错误]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/106661028</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/106661028</guid><author>fish_fish_java</author><pubDate>Wed, 10 Jun 2020 10:58:14 +0800</pubDate><description><![CDATA[Javasb项目中获取配置文件可以用：

Document document = saxReader.read(this.getClass().getClassLoader().getResource("./UpdatePackageConfig.xml").getPath());

但是打了jar包直接崩盘，找不到文件，报空指针。

改成这种方式：


InputStream inputStream = LoginController.class.getResourceAsStream( "/Updat.]]></description><category></category></item><item><title><![CDATA[elasticsearch安装过程及问题记录]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/103987862</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/103987862</guid><author>fish_fish_java</author><pubDate>Wed, 15 Jan 2020 13:49:32 +0800</pubDate><description><![CDATA[1.下载：可以下载好用ftp等方式传输到目的机器上，或者如果目的机器可以联网，可以wget来获取。（以下说的是Linux）

2.解压，不多说

3.解压完的文件夹下有个bin目录，进入其中，执行./elasticsearch来启动。

启动遇到的问题：

1.root（管理员）不能启动es

2.报错（java.nio.file.AccessDeniedException:）用chown -R命...]]></description><category></category></item><item><title><![CDATA[Thread和runnable及callable]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/103416435</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/103416435</guid><author>fish_fish_java</author><pubDate>Fri, 06 Dec 2019 09:37:24 +0800</pubDate><description><![CDATA[区别，看代码

public class Thread implements Runnable


public interface Runnable {

  public abstract void run();

}


public interface Callable&lt;V&gt; {
    V call() throws Exception;
}

我要说的是，当你在线...]]></description><category></category></item><item><title><![CDATA[并发随笔]]></title><link>https://blog.youkuaiyun.com/fish_fish_java/article/details/103398258</link><guid>https://blog.youkuaiyun.com/fish_fish_java/article/details/103398258</guid><author>fish_fish_java</author><pubDate>Thu, 05 Dec 2019 09:18:26 +0800</pubDate><description><![CDATA[AbstractExecutorService implements ExecutorService

他的invokeAll()会等待所有任务执行完毕，或者调用线程被中断，又或者超过指定时限时返回，超过指定时限后，会把所有的future调用取消cancel(true),包括执行完的，调用执行完的cancel方法没有影响。
...]]></description><category></category></item></channel></rss>