<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_37577103的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_37577103</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_37577103]]></copyright><item><title><![CDATA[SpringCould集成OpenFegin步骤]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/130231246</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/130231246</guid><author>m0_37577103</author><pubDate>Tue, 18 Apr 2023 21:05:12 +0800</pubDate><description><![CDATA[4、我启动的时候报错了，主要原因是还是jar包冲突，去掉spring-cloud-starter-netflix-ribbon依赖，采用工具dependency analyzer（没有本插件的自行下载）排除掉这个包。3、mall-order 通过OpenFegin客户端调用 mall-product中的queryAllBrand方法。1、项目最基本的结构介绍，现在我要实现订单项目调用商品项目里面的方法。​2、mall-product中被调用的方法实现如下。mall-order 订单项目。]]></description><category></category></item><item><title><![CDATA[一次CPU突然飙高的详细排查流程]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/130150286</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/130150286</guid><author>m0_37577103</author><pubDate>Fri, 14 Apr 2023 11:44:34 +0800</pubDate><description><![CDATA[后来我不相信，又仔细的查看，所有 RUNNABLE的线程，对应只能看到好像和MQ和JSON有关。有一天有个同事突然找来和我说，你最近是不是上什么代码，现在部署订单项目（临时起的名字，具体项目于不变透漏）似乎线程夯住了，所以请求都超时了。我猜测可能是因为图中的写法，采用的策略设计模式方案导致，不能直接定位到具体的线程，直接搜索RUUNABLE大概可以看到因为2.6的原因。到这时终于可以松一口气了，不是自己的问题，哈哈。​总之大家遇到问题CPU飙高的问题不要慌，按照上面的方法，基本不会存在太大的问题。]]></description><category></category></item><item><title><![CDATA[docker安装redis]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/130098375</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/130098375</guid><author>m0_37577103</author><pubDate>Wed, 12 Apr 2023 08:50:52 +0800</pubDate><description><![CDATA[redis-server /etc/redis/redis.conf 以配置文件启动redis，加载容器内conf文件。-v /mydata/redis/data:/data 将redis储存文件夹挂载到主机（宿主机路径:容器路径）-v /mydata/redis/conf:/etc/redis 将配置文件夹挂载到主机（宿主机路径:容器路径）-p 3306:3306 映射端口（宿主机端口:容器端口）--name redis :将容器取名为redis。打开dockerhub官网。4、启动redis容器。]]></description><category></category></item><item><title><![CDATA[Docker安装mysql数据库]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/130089820</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/130089820</guid><author>m0_37577103</author><pubDate>Tue, 11 Apr 2023 17:51:48 +0800</pubDate><description><![CDATA[v /mydata/mysql/data:/var/lib/mysql 将mysql储存文件夹挂载到主机（宿主机路径:容器路径）-v /mydata/mysql/log:/var/log/mysql 将日志文件夹挂载到宿主机（宿主机路径:容器路径）-v /mydata/mysql/conf:/etc/mysql 将配置文件夹挂载到主机（宿主机路径:容器路径）建立目录：sudo mkdir -p /etc/mysql/conf.d。，选择对应的版本命令。--name mysql:将容器取名为mysql。]]></description><category></category></item><item><title><![CDATA[Java分布式ID-雪花算法]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/130007765</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/130007765</guid><author>m0_37577103</author><pubDate>Fri, 07 Apr 2023 11:09:47 +0800</pubDate><description><![CDATA[还是那句话，没有完美的解决方案，我们不能因噎废食。2、那么通过上面结构的介绍，我们可以用代码实现，主要看getNextId方法，一定要先看上面的思路，搞懂整个分布式ID串的结构，然后再看代码，这一样更容易理解。5.3 如果直接大约10毫秒了，或者很大，那怎么办，按照我的意思是直接抛出异常，直接报警发送邮件，然后运维手动处理服务器时间，然后重新启动服务就行了。5.2 如果大于1秒小于10毫秒了，那么我们可以把最最近的10毫秒，存储在内存的map存最近10毫秒的最大值，然后这个上面直接增加。]]></description><category></category></item><item><title><![CDATA[Java分布式ID-Redis实现ID]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/129998571</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/129998571</guid><author>m0_37577103</author><pubDate>Thu, 06 Apr 2023 20:33:52 +0800</pubDate><description><![CDATA[首先我们需要明确的结论：Redis实现ID可以用，这也是很多公司的选择。但是在redis服务器宕机的情况下，他也可能会出现重复生成ID的情况。缺点：数据库作为一个缓存，很有可能出现宕机的情况，即使redis有持久化机制，但是可能存在丢失1s的情况，那么这种极端场景下可能出现重复生成ID的情况。1、那么按照我们的思路来说：很简单，对应的key和value， key：业务类型 value：自增加数值。1.1 缺点：订单的value会随着订单的增多一直网上增加，迟早有一天会突破redis数值的极限。]]></description><category></category></item><item><title><![CDATA[Java分布式ID-主键自增ID]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/129957461</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/129957461</guid><author>m0_37577103</author><pubDate>Tue, 04 Apr 2023 17:04:51 +0800</pubDate><description><![CDATA[此时单库满足不了，分表也不能满足你的用户并发量操作（单库数据库连接会成为并发的瓶颈，此时可以进行分库，也可以实现读写分离，咱们这讨论分库的情况），那么此时你需要进行分库。针对2.2其实应用并发量比较大的情况，如果多台服务器都是用的同一个库调用的主键(order_primary_key）表生成的id生成。可以这样说，对于我们来做的绝大部分系统都达不到需要分库分表的程度，基本上用的都是单表。主键表专门存储主键。orderId的主键为 1，3，5，7，9。orderId的主键为 2，4，6，8，10。]]></description><category></category></item><item><title><![CDATA[Java分布式ID-UUID]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/129949712</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/129949712</guid><author>m0_37577103</author><pubDate>Tue, 04 Apr 2023 11:56:33 +0800</pubDate><description><![CDATA[4.2. 既然分布式id是主键，然后主键是包含索引的，然后mysql的索引是B+树实现，每次插入UUID都得进行索引的优化，对B+树非常不友好。2.1当前日期和时间，UUID的第一个部分与时间有关，如果你在生成一个UUID之后，过几秒又生成一个UUID，则第一个部分不同，其余相同。4.1. 首先分布式id一般都会是主键，但是安装mysql官方推荐越短越好，UUID每一个都很长，所以不推荐。2.3全局唯一的IEEE机器识别号，如果有网卡，从网卡MAC地址获得，没有网卡以其他方式获得。优点：简单，代码方便；]]></description><category></category></item><item><title><![CDATA[Command line is too long. Shorten command line for XXXApplication or also for Spring Boot default]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/129793700</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/129793700</guid><author>m0_37577103</author><pubDate>Mon, 27 Mar 2023 13:44:38 +0800</pubDate><description><![CDATA[根据图一选择Edit Configurations出现图二，然后在第二个图中直接添加Short command Line。1、工作中启动Springboot项目经常会遇到如图中的问题。添加图片注释，不超过 140 字（可选）]]></description><category></category></item><item><title><![CDATA[通俗易懂的反转链表]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/129770529</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/129770529</guid><author>m0_37577103</author><pubDate>Sat, 25 Mar 2023 18:32:27 +0800</pubDate><description><![CDATA[2.3 记录cur当前节点断开之后，后面链接的头节点的地址：ListNode next = cur.next;2.1 建立反转之后的链表头节点。2.2 建立当前要反转处理的节点。2.5 移动反转之后头节点pre到当前节点cur。2.6 当前节点cur只想下一个要处理的节点。cur = next;2.4 将当前节点cur的下一个节点指向反转之后的pre。2.7 返回新链表的头节点：return pre;1、针对力扣的上面的单链表反转，对应的地址（]]></description><category></category></item><item><title><![CDATA[容器化技术(三)-Docker安装]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/129769856</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/129769856</guid><author>m0_37577103</author><pubDate>Sat, 25 Mar 2023 17:36:40 +0800</pubDate><description><![CDATA[比如说我想使用docker安装nginx软件，那么我需要使用docker先下载nginx的镜像（image），然后进行安装。所以才需要安装阿里云镜像加速。在其中找到docker-ce,点击进去可以找到地址信息 https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo。4、当然还有可以通过rpm包的方式安装（适用于没有互联网接入的情况），具体可以去中文官网看一下，可以看一下（3.使用RPM程序包安装（适用于没有互联网接入的情况））]]></description><category></category></item><item><title><![CDATA[容器化技术(二)-Docker架构介绍]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/129740995</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/129740995</guid><author>m0_37577103</author><pubDate>Thu, 23 Mar 2023 22:26:52 +0800</pubDate><description><![CDATA[Register：容器镜像仓库，用于存储已经生成容器运行模板的仓库，用户使用时，可以直接从容器仓库中下载容器镜像，就可以运行容器镜像中包含的应用了。Container:由容器镜像生成，用于应用程序运行的环境，包含容器镜像中所有文件及用户后添加的文件，属于基于容器镜像生成的可读写层。Docker Client：客户端连接工具，用于同Docker Daemon进行通讯，执行用户命令，可以部署在 Docker Host上，也可以部署在其他服务器上。（说到底就是管理容器的，但是容器创建是由。]]></description><category></category></item><item><title><![CDATA[容器化技术(一)]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/129682203</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/129682203</guid><author>m0_37577103</author><pubDate>Tue, 21 Mar 2023 09:58:49 +0800</pubDate><description><![CDATA[针对现有容器化技术的流行开来，几乎每一家大点的公司，现在都开始使用虚拟化容器技术来实现程序的快速持续化构建过程，相信你在面试或者工作过程中应该常常听说过docker,devops，k8s，云服务器等等一系列的名词，那么从本章开始就为大家开始介绍容器化技术。阐述：在之前一个房子（假设出租房子没有修筑房间，整个是一个大的房间）只能出租给一个人（一台服务器只能部署一个应用）。2.3 高扩展和高可用，由于容器是自包含和隔离的，这意味着您将能够更轻松地水平扩展分布式应用程序。敬请期待.......]]></description><category></category></item><item><title><![CDATA[SpringBoot统一异常处理方法]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/129502509</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/129502509</guid><author>m0_37577103</author><pubDate>Mon, 13 Mar 2023 19:21:57 +0800</pubDate><description><![CDATA[在工作过程中，如果项目架构没有做到位，对于异常没有特殊的处理，通常会将代码执行过程中遇到Exception会直接以栈信息的形式返回给前端。2、我们会自定义一些业务异常，返给前端，以便前端展示对应的错误，让用户明白操作哪里有问题。但是有时候也有有非业务异常，这样通常会统一封装，返回前端错误信息“系统异常，请联系管理员”的错误信息。1、因为我们项目都是前后端分离的项目于，所以后端服务通常都是以接口的形式展示给前端。所以我们通常我们会封装统一的返回成功或者失败的信息。最后我们可以看到结果信息。]]></description><category></category></item><item><title><![CDATA[Java事务的那点事]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/129423754</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/129423754</guid><author>m0_37577103</author><pubDate>Fri, 10 Mar 2023 11:36:00 +0800</pubDate><description><![CDATA[Java  事务  大事务  手动事务]]></description><category></category></item><item><title><![CDATA[sign签名的实现]]></title><link>https://blog.youkuaiyun.com/m0_37577103/article/details/129377074</link><guid>https://blog.youkuaiyun.com/m0_37577103/article/details/129377074</guid><author>m0_37577103</author><pubDate>Tue, 07 Mar 2023 10:27:45 +0800</pubDate><description><![CDATA[最近工作中，在开发app端接口的时候，app端调用后端服务接口的时候，一直报签名错误。这里介绍一下前后端生成签名的大概流程。
  所以需要明白的几点:
        1、前后端签名我们项目采用的md5的加密方法。 具体方法可以看下面代码。当然还可以有其他的好多的加密方法。这只是其中一种。
        2、前端和后端将数据生成对应的sign必须采用相同的规则，生成对应的字符串，然后进行md5加密，这样生成的sign才能相同。如果数据被拦截，修改其中任意一点数据，都会造成前后端数据不一致，从而导致生成的s]]></description><category></category></item></channel></rss>