<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Opal_123的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Opal_123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Opal_123]]></copyright><item><title><![CDATA[三、环境搭建之Docker安装mysql]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/150932342</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/150932342</guid><author>Opal_123</author><pubDate>Sun, 31 Aug 2025 15:50:38 +0800</pubDate><description><![CDATA[ps:由于我之前安装了mysql,所以这里从卸载mysql开始记录。]]></description><category></category></item><item><title><![CDATA[二、环境搭建之CentOS安装Docker]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/149464608</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/149464608</guid><author>Opal_123</author><pubDate>Sat, 19 Jul 2025 15:15:50 +0800</pubDate><description><![CDATA[Curl error (35): SSL connect error for https://download.docker.com/linux/centos/docker-ce.repo~/repodata/repomd.xml [OpenSSL SSL_connect: 连接被对方重设 in connection to download.docker.com:443 ]这个命令安装docker,但不启动docker,它还创建了一个docker组,但是默认情况下它不会向该组添加任何用户。]]></description><category></category></item><item><title><![CDATA[一、环境搭建之vmware虚拟机安装CentOS]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/148869848</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/148869848</guid><author>Opal_123</author><pubDate>Tue, 15 Jul 2025 17:12:01 +0800</pubDate><description><![CDATA[至此安装完毕!!!]]></description><category></category></item><item><title><![CDATA[java多线程实现任务组中的子任务按顺序执行]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/120285226</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/120285226</guid><author>Opal_123</author><pubDate>Tue, 14 Sep 2021 13:20:47 +0800</pubDate><description><![CDATA[线程的调用是随机的，但是有个需求是在线程池中开辟多个线程按顺序去执行一组任务，比如说一个任务组下面有多个子任务，需要按子任务的顺序依次提交
代码：
public class TestThread {

    public static void main(String[] args) {
        //创建线程池
        ThreadPoolExecutor executorService = new ThreadPoolExecutor(10, 10,
                0L]]></description><category></category></item><item><title><![CDATA[415.字符串相加]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/107765091</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/107765091</guid><author>Opal_123</author><pubDate>Mon, 03 Aug 2020 15:40:40 +0800</pubDate><description><![CDATA[给定两个字符串形式的非负整数 num1 和num2 ，计算它们的和。
注意：

num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库， 也不能直接将输入的字符串转换为整数形式。

public class Question1 {
    public static void main(String[] args) {
        Scanner in = new Scanne]]></description><category></category></item><item><title><![CDATA[java8合并两个List]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/106519056</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/106519056</guid><author>Opal_123</author><pubDate>Wed, 03 Jun 2020 10:46:05 +0800</pubDate><description><![CDATA[解决问题：根据两个List中的某个相同字段合并成一条List，包含两个List中的字段
举例：
list1:
[{pid=1,pname=衣服,picture=http://1.jpg,desc=111},{pid=2,pname=衣服2,picture=http://2.jpg,desc=222}]
list2:
[{pid=1,sku=L,price=200.00,price2=189},{pid=2,sku=s,price=100.00,price2=340}]
合并之后结果为：
[{price=20]]></description><category></category></item><item><title><![CDATA[使用数组模拟栈的简单代码实现]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/106029905</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/106029905</guid><author>Opal_123</author><pubDate>Sat, 09 May 2020 23:45:33 +0800</pubDate><description><![CDATA[package com.structure.stack;

/**
 * 使用数组模拟stack实现
 */
public class StackDemo {


    public static void main(String[] args) {
        StackNode node = new StackNode(4);
        node.push(1);
        node.push(2);
        node.push(3);
        node.push(4)]]></description><category></category></item><item><title><![CDATA[约瑟夫问题-单向环形链表的简单代码实现]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/105969552</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/105969552</guid><author>Opal_123</author><pubDate>Thu, 07 May 2020 11:53:31 +0800</pubDate><description><![CDATA[package com.structure.linkedList;

import java.util.LinkedList;

/**
 * 单向环形链表-约瑟夫问题
 */
public class CircleSingleLinkedListDemo {

    public static void main(String[] args) {
        CircleSingleLin...]]></description><category></category></item><item><title><![CDATA[双向链表简单代码实现]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/105925694</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/105925694</guid><author>Opal_123</author><pubDate>Mon, 04 May 2020 23:32:45 +0800</pubDate><description><![CDATA[package com.structure.linkedList;

/*
    双向链表
 */
public class DubboLinkedListDemo {

    public static void main(String[] args) {
        DubboLinkedNode node1 = new DubboLinkedNode(1,"节点1");
      ...]]></description><category></category></item><item><title><![CDATA[单向链表简单代码实现]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/105833453</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/105833453</guid><author>Opal_123</author><pubDate>Wed, 29 Apr 2020 10:12:25 +0800</pubDate><description><![CDATA[package com.structure;

public class SingleLinkedListDemo {

    public static void main(String[] args) {
        SingleLinkedList singleLinkedList = new SingleLinkedList();
        LinkedNode node1 =...]]></description><category></category></item><item><title><![CDATA[Zookeeper安装]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/103295489</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/103295489</guid><author>Opal_123</author><pubDate>Thu, 28 Nov 2019 16:52:13 +0800</pubDate><description><![CDATA[zookeeper安装模式分为三种：单机模式、集群模式和伪集群模式
伪集群模式就是在单机环境下模拟集群的Zookeeper服务，这里就不做演示
单机模式


下载zookeeper,地址：https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/


将安装包上传到linux上，并解压到指定目录
tar -zxvf zookeeper-3.4.14...]]></description><category></category></item><item><title><![CDATA[多线程-单例模式与多线程（三）]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/103202549</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/103202549</guid><author>Opal_123</author><pubDate>Fri, 22 Nov 2019 17:05:20 +0800</pubDate><description><![CDATA[实现单例模式有3种方式：

立即加载/饿汉模式：单例实例在类装载时创建
饿汉模式是线程安全的
不足：
1、如果构造方法中存在过多的处理，会导致类加载很慢，造成性能问题
2、如果只进行类的加载没有实际调用，会造成资源浪费
延迟加载/懒汉模式：单例实例在第一次使用时进行创建
枚举模式：相较于懒汉模式线程更能保证线程安全，相较于饿汉模式是在实际调用时才被初始化（推荐使用）

实现单例模式线程安全方式：
...]]></description><category></category></item><item><title><![CDATA[多线程-解决线程安全问题三种方式（二）]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/103201447</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/103201447</guid><author>Opal_123</author><pubDate>Fri, 22 Nov 2019 15:37:52 +0800</pubDate><description><![CDATA[什么是线程安全？
–当多个线程同时共享同一个全局变量或静态变量，做写的操作时，可能会发生数据冲突问题，也就是线程安全问题
举例：模拟火车票售票


方式一：同步方法
public class TestTricks01 {
    public static void main(String[] args) {
        TestThread6 thread6 = new TestThrea...]]></description><category></category></item><item><title><![CDATA[多线程-四种创建方式（一）]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/103167895</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/103167895</guid><author>Opal_123</author><pubDate>Thu, 21 Nov 2019 09:34:36 +0800</pubDate><description><![CDATA[举例：打印1-100的偶数


方法一：继承Thread类
public class TestThread01 {

    public static void main(String[] args) {
        NumThread01 thread01 = new NumThread01();

        thread01.start();
    }
}

class NumT...]]></description><category></category></item><item><title><![CDATA[SpringCloud-Nginx+Zuul实现网关集群（八）]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/103089552</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/103089552</guid><author>Opal_123</author><pubDate>Fri, 15 Nov 2019 17:55:08 +0800</pubDate><description><![CDATA[配置并启动nginx

nginx中配置zuul网关服务器的轮询机制


测试
在网关过滤器中打印出端口号



启动端口号为8081和8082的zuul网关服务器

访问接口，查看控制台打印，以轮询结果分别在8081和8082的服务器中调用





...]]></description><category></category></item><item><title><![CDATA[SpringCloud-搭建Zuul网关服务（七）]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/103085073</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/103085073</guid><author>Opal_123</author><pubDate>Fri, 15 Nov 2019 16:59:43 +0800</pubDate><description><![CDATA[网关的作用：可以实现负载均衡、路由转发、日志、权限控制、监控
Nginx和Zuul的区别：

Nginx是采用服务器负载均衡转发
Zuul依赖Ribbon和Eureka实现本地负载均衡转发
相对来说Nginx功能比Zuul功能更强大，能够整合其他语言比如lua脚本实现强大的功能，同时Nginx可以更好的抗高并发，Zuul网关适用于请求过滤和拦截等

网关和过滤器的区别：

网关是拦截所有服务器请求...]]></description><category></category></item><item><title><![CDATA[SpringCloud-SpringCloud Config分布式配置中心（六）]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/103082734</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/103082734</guid><author>Opal_123</author><pubDate>Fri, 15 Nov 2019 14:21:18 +0800</pubDate><description><![CDATA[目前分布式配置中心框架还是比较多的，主流的有：

Diamond
Disconf
Apollo
SpringCloud Config
Netflixarchaius

这里介绍SpringCloud Config，但是感觉看网上使用Apollo比较多,以后了解了Apollo再做对比吧
为什么要使用分布式配置中心？
– 在微服务项目中，如果使用传统的方式管理配置文件就会变得很复杂，如果配置文件需要修...]]></description><category></category></item><item><title><![CDATA[SpringCloud-Hystix服务保护框架（五）]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/103070194</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/103070194</guid><author>Opal_123</author><pubDate>Thu, 14 Nov 2019 18:02:06 +0800</pubDate><description><![CDATA[hystix可以解决的问题：

服务间的调用超时
服务间的调用失败

hystix特性：

断路器
服务降级
在高并发情况下，防止用户一直等待，使用服务降级方式，就是返回一个友好的提示给客户端，目的是为了用户体验更好
服务熔断
服务熔断是为了保护服务，如果请求达到了一定的极限(可以自己设置阈值)，如果请求超出了设置的阈值，则自动开启服务保护功能，使用服务降级返回一个友好提示。熔断机制和服务降级一起...]]></description><category></category></item><item><title><![CDATA[SpringCloud-Feign客户端调用工具（四）]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/103069638</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/103069638</guid><author>Opal_123</author><pubDate>Thu, 14 Nov 2019 16:27:29 +0800</pubDate><description><![CDATA[在实际项目开发中Feign使用最多
以订单服务调用会员服务举例，会员服务的代码就不在这里体现了


引入依赖
&lt;dependency&gt;
        &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt;
        &lt;artifactId&gt;spring-cloud-starter-netflix-eureka...]]></description><category></category></item><item><title><![CDATA[SpringCloud-Ribbon客户端负载均衡（三）]]></title><link>https://blog.youkuaiyun.com/Opal_123/article/details/103049736</link><guid>https://blog.youkuaiyun.com/Opal_123/article/details/103049736</guid><author>Opal_123</author><pubDate>Wed, 13 Nov 2019 16:05:25 +0800</pubDate><description><![CDATA[Ribbon实现负载均衡的原理：客户端从eureka注册中心获取对应的注册信息列表，拿到一个List集合，通过负载均衡算法得到服务器地址进行远程调用
负载均衡算法：实际服务器位置下标=总请求数%服务器集群数
以订单服务调用会员服务举例：

Ribbon实现


在消费提供者项目（订单服务）中引入依赖
		&lt;dependency&gt;
            &lt;groupId&gt;o...]]></description><category></category></item></channel></rss>