<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[rabbit0708的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/rabbit0708</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; rabbit0708]]></copyright><item><title><![CDATA[java thread wait notify 虚假唤醒]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/160083373</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/160083373</guid><author>rabbit0708</author><pubDate>Sun, 12 Apr 2026 14:42:44 +0800</pubDate><description><![CDATA[您当前的if写法没有防御虚假唤醒，导致厨师线程被多次虚假唤醒后错误地打印了多条“做面条”日志。虽然程序没有崩溃（因为虚假唤醒没有修改共享数据），但日志完全不可信，且如果逻辑更复杂（例如在wait()后直接修改状态）就会引发严重错误。必须将if改为while，这是 Java 并发编程的强制规范，不是可选项。修复后，输出将会严格交替：text厨师做了一碗面条吃货在吃面条，还能再吃9碗！！！厨师做了一碗面条吃货在吃面条，还能再吃8碗！！！...]]></description><category></category></item><item><title><![CDATA[java thread wait notify 线程通讯]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/130053529</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/130053529</guid><author>rabbit0708</author><pubDate>Sun, 12 Apr 2026 12:24:19 +0800</pubDate><description><![CDATA[c.setName("厨师");f.setName("吃货");c.start();f.start();//0:没有面条；1:有面条//总个数//锁对象@Overridebreak;}else{//判断桌子上是否有食物try{//如果没有，就制作食物//System.out.println("厨师做了一碗面条");//修改桌子上的食物状态//叫醒等待的消费者开吃。]]></description><category></category></item><item><title><![CDATA[springboot-springcloud-springcloudalibaba版本匹配关系]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/148761757</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/148761757</guid><author>rabbit0708</author><pubDate>Thu, 19 Jun 2025 11:04:28 +0800</pubDate><description><![CDATA[如果不想跨分支升级，如需使用新特性，请升级为对应分支的新版本。(注意，该分支 Spring Cloud Alibaba 版本命名方式进行了调整，未来将对应 Spring Cloud 版本，前三位为 Spring Cloud 版本，最后一位为扩展版本，比如适配 Spring Cloud 2022.0.0 版本对应的 Spring Cloud Alibaba 第一个版本为：2022.0.0.0，第个二版本为：2022.0.0.1，依此类推)2.0.4.RELEASE(停止维护，建议升级)]]></description><category></category></item><item><title><![CDATA[js访问后台接口]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/135860925</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/135860925</guid><author>rabbit0708</author><pubDate>Fri, 26 Jan 2024 10:54:29 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[【无标题】springboot 时区，少8小时]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/135842860</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/135842860</guid><author>rabbit0708</author><pubDate>Thu, 25 Jan 2024 13:57:44 +0800</pubDate><description><![CDATA[如果java读取的时间比数据库中的时间少8个小时，在Dockerfile中添加：]]></description><category></category></item><item><title><![CDATA[corn表达式解释]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/120448517</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/120448517</guid><author>rabbit0708</author><pubDate>Fri, 24 Sep 2021 09:36:02 +0800</pubDate><description><![CDATA[Java怎么把分钟数或者毫秒值转换为Quartz cron表达式，例如把5分钟转换后为（“0 0/5 * * * ?”）急急急20

我来答

分享

举报

1个回答

#热议#00后是否面临着比90后更严峻的就业危机？

匿名用户
2016-10-29

参考如下内容：
CronTrigger
CronTriggers往往比SimpleTrigger更有用，如果您需要基于日历的概念，而非SimpleTrigger完全指定的时间间隔，复发的发射工作的时间表。
CronTrigger，你可以指定...]]></description><category></category></item><item><title><![CDATA[查看linux的版本指令]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/119919449</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/119919449</guid><author>rabbit0708</author><pubDate>Wed, 25 Aug 2021 21:02:58 +0800</pubDate><description><![CDATA[简要：1，lsb_release -a 查看linux系统版本

     2，uname -a 查看内核版本 

一、查看Linux内核版本命令（两种方法）：

1、cat /proc/version

[root@localhost ~]# cat /proc/version
Linux version 2.6.18-194.8.1.el5.centos.plus (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (R...]]></description><category></category></item><item><title><![CDATA[2021-01-21]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/112961546</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/112961546</guid><author>rabbit0708</author><pubDate>Thu, 21 Jan 2021 16:28:43 +0800</pubDate><description><![CDATA[RabbiMq的QOS预取模式：

//如果是两个消费者(QOS ,批量)则轮询获取数据 
//150条预取(150都取出来 150) 
channel.basicQos(150,true); 
//预取模式：如果设置手动ack的条件下，如果没有确认，则消费端最多只能收到150条消息。除非客户端确认一条，则客户端在收到一条，客户端确认几条则收到几条。
//这样做的好处是：防止客户端出现oom异常
/*消费者正式开始在指定队列上消费消息*/ 
channel.basicConsume(queueName,t.]]></description><category></category></item><item><title><![CDATA[将dev分支上的代码合并到master分支]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/108253715</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/108253715</guid><author>rabbit0708</author><pubDate>Thu, 27 Aug 2020 09:59:17 +0800</pubDate><description><![CDATA[将dev分支上的代码合并到master分支
1、切换到master分支
? git checkout master

2、拉取最新代码
? git pull

3、合并代码
? git merge dev

4、查看状态（可查看合并的文件数，即commit数量）
? git status

5、将合并后的代码提交到远程master上面
? git push
...]]></description><category></category></item><item><title><![CDATA[在鲲鹏版的centos操作系统 上使用wkhtmltopdf，html文件中找不到本地的css和png文件]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/106757571</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/106757571</guid><author>rabbit0708</author><pubDate>Tue, 16 Jun 2020 09:31:37 +0800</pubDate><description><![CDATA[使用的 wkhtmltopdf wkhtmltox-0.12.6-1.centos7.aarch64.rpm

转换的时候wkhtmltopdf 报错信息：

Warning: Blocked access to file /home/xxx/apache-tomcat-8.5.47/webapps1/xxx/WEB-INF/classes/images/service/logo_zr.png
Warning: Blocked access to file /home/xxx/apache-tomcat-8]]></description><category></category></item><item><title><![CDATA[rabbitmq 批量删除队列 手动创建队列]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/106569740</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/106569740</guid><author>rabbit0708</author><pubDate>Fri, 05 Jun 2020 14:31:48 +0800</pubDate><description><![CDATA[命令行批量删除队列

首先定位到 rabbitMQ 安装目录的sbin 目录下。打开cmd窗口。
关闭应用的命令为： rabbitmqctl stop_app
清除的命令为： rabbitmqctl reset
重新启动命令为： rabbitmqctl start_app
ps
查看所有队列命令： rabbitmqctl list_queues
...]]></description><category></category></item><item><title><![CDATA[创建git tag，根据某个tag创建分支]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/105197524</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/105197524</guid><author>rabbit0708</author><pubDate>Mon, 30 Mar 2020 13:36:09 +0800</pubDate><description><![CDATA[git check 分支名

git tag -a tag名字 commitID -m '描述' //在指定分支上的 某个commitid上打个标签（一般是当发完某个版本的时候要打tag）

git push origin tagName//推送到远程仓库



git 根据tag创建分支

在项目中我们需要根据tag创建分支.现将创建步骤总结一下.在你的dev分支上有一个tag为v1.0...]]></description><category></category></item><item><title><![CDATA[使用命令：mvn install -Dmaven.test.skip=true dockerfile:build 打包时候注意project>artifactId为小写否则报错]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/103824548</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/103824548</guid><author>rabbit0708</author><pubDate>Fri, 03 Jan 2020 17:51:30 +0800</pubDate><description><![CDATA[springboot项目构建docker镜像异常: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded
原创布碗 发布于2019-04-03 19:55:06 阅读数 1789 收藏
展开
异常信息
在centos上构建springboot项目的docker镜像时出现以下异常：

Failed to ...]]></description><category></category></item><item><title><![CDATA[ajax 请求 springboot中的Controller ，ajax请求url中的 localhost 和 127.0.0.1不同源，跨域问题导致报错]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/103801258</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/103801258</guid><author>rabbit0708</author><pubDate>Thu, 02 Jan 2020 11:26:17 +0800</pubDate><description><![CDATA[登录页面表单请求，登录成功，并把登录信息放在session中，登录成功后，进入菜单页面，在页面上触发一个ajax请求，该请求中的url用到了http://127.0.0.1:8080/asfd,但是该请求会生成一个新的session，和之前的登录session是两个不同的session，所以框架拦截器会拦截掉该ajax请求，又要重新登录，导致又要用户重新登录（这就是问题了）。解决方法：把ajax...]]></description><category></category></item><item><title><![CDATA[当实现ApplicationListener接口的监听器]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/102663340</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/102663340</guid><author>rabbit0708</author><pubDate>Mon, 21 Oct 2019 14:30:42 +0800</pubDate><description><![CDATA[添加上如下这个类，会使监听器中onApplicationEvent()方法，以异步的方法执行

package xxx.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.spring...]]></description><category></category></item><item><title><![CDATA[ajax 调用SpringBoot中的restful接口 两个ajax分别请求两个不同的接口，要使两个接口中的session是同一个（session共享）]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/102587617</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/102587617</guid><author>rabbit0708</author><pubDate>Wed, 16 Oct 2019 16:20:45 +0800</pubDate><description><![CDATA[前端代码：
&lt;script src="jquery-3.4.1.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;

  function getUser(){
    $.ajax({
        url:"http://192.168.1.103:8080/user/getUs...]]></description><category></category></item><item><title><![CDATA[rabbitMQ basicQos和basicAck作用和关系]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/88693435</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/88693435</guid><author>rabbit0708</author><pubDate>Wed, 20 Mar 2019 17:00:45 +0800</pubDate><description><![CDATA[import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.bs.utils.ConnectionUtil;


public class Producer {
    private final static String EXCHANGE_NAME = "direct_exchan...]]></description><category></category></item><item><title><![CDATA[负载均衡 ribbon]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/87877807</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/87877807</guid><author>rabbit0708</author><pubDate>Fri, 22 Feb 2019 14:30:09 +0800</pubDate><description><![CDATA[ribbon-loadbalacer.-2.2.2.jar


抽象类：public abstract class AbstractServerPredicate

//随机策略


public Optional&amp;lt;Server&amp;gt; chooseRandomlyAfterFiltering(List&amp;lt;Server&amp;gt; servers) {
    List&amp;lt;Server&amp;...]]></description><category></category></item><item><title><![CDATA[python 多线程简单demo]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/78811283</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/78811283</guid><author>rabbit0708</author><pubDate>Fri, 15 Dec 2017 11:44:18 +0800</pubDate><description><![CDATA[Python多线程与多线程中join()的用法



Python多线程与多进程中join()方法的效果是相同的。
下面仅以多线程为例：
首先需要明确几个概念：
知识点一：
当一个进程启动之后，会默认产生一个主线程，因为线程是程序执行流的最小单元，当设置多线程时，主线程会创建多个子线程，在python中，默认情况下（其实就是setDaemon(False)），主线程执行完自己的任务]]></description><category></category></item><item><title><![CDATA[ajax 执行success 还是error  为什么报parsererror]]></title><link>https://blog.youkuaiyun.com/rabbit0708/article/details/60141336</link><guid>https://blog.youkuaiyun.com/rabbit0708/article/details/60141336</guid><author>rabbit0708</author><pubDate>Fri, 03 Mar 2017 16:05:34 +0800</pubDate><description><![CDATA[$.ajax({
url : '${pageContext.request.contextPath}/login/logOut.action',
data : {
confirm : "1"
},
cache : false,
dataType : 'json',
error : function() {
Notify('注销失败.', 'top-right',
'3000', ]]></description><category></category></item></channel></rss>