<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[PrinceCheng的博客]]></title><description><![CDATA[Talk is cheap. Show me the code.]]></description><link>https://blog.youkuaiyun.com/Princar</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Princar]]></copyright><item><title><![CDATA[Collections.shuffle()源码分析]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/114578097</link><guid>https://blog.youkuaiyun.com/Princar/article/details/114578097</guid><author>Princar</author><pubDate>Tue, 09 Mar 2021 11:04:38 +0800</pubDate><description><![CDATA[源码
@SuppressWarnings({"rawtypes", "unchecked"})
    public static void shuffle(List&lt;?&gt; list, Random rnd) {
        int size = list.size();
        if (size &lt; SHUFFLE_THRESHOLD || list instanceof RandomAccess) {
            for (int i=size; i&gt;1;]]></description><category></category></item><item><title><![CDATA[MySQL按小时查询数据，没有的补0]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/111302667</link><guid>https://blog.youkuaiyun.com/Princar/article/details/111302667</guid><author>Princar</author><pubDate>Wed, 16 Dec 2020 20:50:05 +0800</pubDate><description><![CDATA[您可以点击原文链接以获得更佳阅读体验：
原文链接
需求背景
一个统计接口，前端需要返回两个数组，一个是0-23的小时计数，一个是各小时对应的统计数。
思路

直接使用group by查询要统计的表，当某个小时统计数为0时，会没有该小时分组。思考了一下，需要建立辅助表，只有一列小时，再插入0-23共24个小时

CREATE TABLE hours_list (
    hour int NOT NULL PRIMARY KEY
)


先查小时表，再做连接需要查的表，即可将没有统计数的小时填充上0。这里由于]]></description><category></category></item><item><title><![CDATA[手把手教你在Hexo中添加即时通讯工具Chatwoot]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/109712259</link><guid>https://blog.youkuaiyun.com/Princar/article/details/109712259</guid><author>Princar</author><pubDate>Wed, 16 Dec 2020 20:45:52 +0800</pubDate><description><![CDATA[由于排版问题，您可以点击原文链接以获得更佳阅读体验：
http://www.prchen.com/2020/11/12/ChatWoot/#more
前言

最近在逛Github Trending时发现一个不错的开源即时聊天软件ChatWoot，通过ChatWoot可以实现网站访客与网站主人的即时通讯。于是自己动手在Hexo中添加Chatwoot。

部署Chatwoot

Chatwoot可以通过多种方式在生产环境部署，这里我选择了最方便的Heroku云端部署。这里有部署教程，不过因为没有中文版，而且有些]]></description><category></category></item><item><title><![CDATA[MySQL删除大表实践(大于150GB)]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/109321949</link><guid>https://blog.youkuaiyun.com/Princar/article/details/109321949</guid><author>Princar</author><pubDate>Tue, 27 Oct 2020 21:58:25 +0800</pubDate><description><![CDATA[您可以点击原文链接以获得更佳阅读体验：
http://www.prchen.com/2020/10/27/MySQL%E5%88%A0%E9%99%A4%E5%A4%A7%E8%A1%A8%E5%AE%9E%E8%B7%B5(%E5%A4%A7%E4%BA%8E150GB)/#more
实际情况概述
生产环境数据库磁盘快满了，此时：

需要完全删除一个记录历史数据的大表(约160GB)；
需要将一张大表中7月之前的数据全部删除。

基础知识
MySQL中，drop和truncate是DDL(data def]]></description><category></category></item><item><title><![CDATA[《阿里巴巴Java开发手册》要点整理]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/92013885</link><guid>https://blog.youkuaiyun.com/Princar/article/details/92013885</guid><author>Princar</author><pubDate>Fri, 14 Jun 2019 22:20:41 +0800</pubDate><description><![CDATA[别人都说我们是搬砖的码农，可我们知道自己是追求个性的艺术家。也许我们不会过多在意自己的外表和穿着，但在我们不羁的外表下，骨子里追求着代码的美、系统的美，代码规范其实就是一个对程序美的定义。

声明：本文是对阿里巴巴Java开发手册 v1.4.0 的一个整理。其中去掉了IDE可以帮助我们实现的部分，只整理出个人认为较为重要但在实际开发中易被忽略的点。
编程规约

POJO 类中布尔类型的变量，都不...]]></description><category></category></item><item><title><![CDATA[人生苦短，请用Spring Boot]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/91374236</link><guid>https://blog.youkuaiyun.com/Princar/article/details/91374236</guid><author>Princar</author><pubDate>Mon, 10 Jun 2019 14:11:07 +0800</pubDate><description><![CDATA[概述
Spring Boot 是一个轻量级框架，它的的目的是提供一组工具，以便快速构建容易配置的 Spring 应用程序。Spring Boot使用户可以“直接运行”独立的、基于生产级的应用程序。这意味着只需极少的配置，就可以快速获得一个正常运行的 Spring 应用程序。

特性

为基于 Spring 的应用程序开发提供更快的入门体验
直接集成Tomcat、Jetty、Undertow等Web...]]></description><category></category></item><item><title><![CDATA[高效的消息中间件-ActiveMQ]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/91345410</link><guid>https://blog.youkuaiyun.com/Princar/article/details/91345410</guid><author>Princar</author><pubDate>Sat, 08 Jun 2019 16:06:46 +0800</pubDate><description><![CDATA[图片较多未上传，详情请访问：http://www.prchen.com/2019/06/04/高效的消息中间件-ActiveMQ/
概述
JMS（Java Messaging Service）是 Java 平台上有关面向消息中间件的技术规范，它便于消息系统中的 Java 应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。
JMS 本身只定义了一系列的接口规范，是...]]></description><category></category></item><item><title><![CDATA[超好用的Web开发浏览器插件-Web Developer]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/90761672</link><guid>https://blog.youkuaiyun.com/Princar/article/details/90761672</guid><author>Princar</author><pubDate>Tue, 04 Jun 2019 11:51:35 +0800</pubDate><description><![CDATA[图片太多没有上传，详情请访问www.prchen.com
概述

Web Developer是一款Web开发人员必备的浏览器实用插件，它提供了多种模块让开发人员可以在工具栏中便捷地对网页的HTML、脚本、多媒体、CSS、缓存、图象等网页内容进行调试。Web Developer适用于Chrome，Firefox和Opera浏览器

安装

谷歌浏览器插件商店中搜索"Web Developer"，或者...]]></description><category></category></item><item><title><![CDATA[远程调用服务好帮手-dubbox]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/90748939</link><guid>https://blog.youkuaiyun.com/Princar/article/details/90748939</guid><author>Princar</author><pubDate>Mon, 03 Jun 2019 11:07:05 +0800</pubDate><description><![CDATA[概述
Dubbox是一款高性能、轻量级的开源Java RPC（Remote Procedure Call 远程过程调用）框架，它提供了三大核心能力：面向接口的远程方法调用，智能容错和负载均衡，以及服务自动注册和发现。
角色

注册中心（Registry）：相当于房东、中介，记录提供者和消费者信息
监控中心（Monitor）：通过连接注册中心，监控消费者和提供者健康状况
服务提供者（provider...]]></description><category></category></item><item><title><![CDATA[PLSQL登录报错:ORA-12514:TNS:listener does not currently know of service requested in connect descriptor]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/89888712</link><guid>https://blog.youkuaiyun.com/Princar/article/details/89888712</guid><author>Princar</author><pubDate>Mon, 06 May 2019 18:30:07 +0800</pubDate><description><![CDATA[问题：在用PLSQL连接虚拟机上的Oracle数据库时, 出现如下图错误

解决方法：


打开虚拟机，win+R打开命令行
输入sqlplus /nolog登录Oracle
输入conn sys / as sysdba;以dba身份连接，然后输入登录密码(你自己设置的)
输入shutdown immediate;关闭数据库
输入startup;开启数据库
等待出现数据库装载完毕。数据库已经打开...]]></description><category></category></item><item><title><![CDATA[跨服务器上传图片报错: returned a response status of 403 Forbidden]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/89469887</link><guid>https://blog.youkuaiyun.com/Princar/article/details/89469887</guid><author>Princar</author><pubDate>Tue, 23 Apr 2019 12:22:01 +0800</pubDate><description><![CDATA[问题: 跨服务器上传图片时, 单独部署了一个fileUploadServer的Tomcat
结果图片一直无法上传成功, 报异常returned a response status of 403 Forbidden
原因: 存储图片的tomcat是默认只读的,需要在Tomcat所在目录-conf-web.xml中加入可写权限的配置

&lt;init-param&gt;
        &lt;p...]]></description><category></category></item><item><title><![CDATA[《高性能MySQL》学习笔记]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/89421922</link><guid>https://blog.youkuaiyun.com/Princar/article/details/89421922</guid><author>Princar</author><pubDate>Sat, 20 Apr 2019 19:12:53 +0800</pubDate><description><![CDATA[高性能MySQL
一 MySQL架构与历史


MySQL的逻辑架构：



最上层：服务器层服务。非MySQL独有，基于网络客户端\服务器工具都有类似架构。如连接处理、授权认证、安全等。
第二层：MySQL核心服务功能层。包括查询解析、分析、优化、缓存以及所有内置函数（如日期、时间、数学和加密函数）。所有跨存储引擎功能在这层实现：存储过程、触发器、视图等。
第三层：存储引擎。负责数据存储和提取。...]]></description><category></category></item><item><title><![CDATA[JAVA学习笔记-chap2-Java语言基础]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/82345049</link><guid>https://blog.youkuaiyun.com/Princar/article/details/82345049</guid><author>Princar</author><pubDate>Sat, 20 Apr 2019 00:10:02 +0800</pubDate><description><![CDATA[第二章 Java语言基础



aaaaaaaaaaaaaaa

2 Java语言基础组成



2.1 关键字


被赋予特殊含义的单词，关键字都是小写 
 





2.2 标识符


在程序中自定义的一些名称。
由26个英文字母大小写，数字：0-9 符号：_$组成。
定义合法标识符规则： 
1，数字不可以开头。 
2，不可以使用关键字。
Java中严格区分大小写。
注意：在起名字时，为了提...]]></description><category></category></item><item><title><![CDATA[关于阿里云轻量级服务器封25和465端口无法发送邮件问题的解决方案]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/89323854</link><guid>https://blog.youkuaiyun.com/Princar/article/details/89323854</guid><author>Princar</author><pubDate>Tue, 16 Apr 2019 00:06:21 +0800</pubDate><description><![CDATA[最近在进行Maven项目实践, 将项目部署到阿里云阿里云轻量级服务器上时,发现在自己电脑上测试可用的发送邮件工具类无法使用.
上网查阅资料, 得知是阿里云封掉了发送邮件的25和465端口.
于是在网上找到了以下工具类, 稍加改造, 代码如下:
import java.util.Properties;
import javax.mail.internet.MimeMessage;
import or...]]></description><category></category></item><item><title><![CDATA[Spring注解AOP中通知顺序颠倒的bug]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/89299042</link><guid>https://blog.youkuaiyun.com/Princar/article/details/89299042</guid><author>Princar</author><pubDate>Sun, 14 Apr 2019 17:36:07 +0800</pubDate><description><![CDATA[记录在Spring框架有关注解AOP的学习过程中的遇到的一个bug:
配置文件:
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-i...]]></description><category></category></item><item><title><![CDATA[Linux中cowsay命令全图鉴]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/88630075</link><guid>https://blog.youkuaiyun.com/Princar/article/details/88630075</guid><author>Princar</author><pubDate>Sun, 17 Mar 2019 23:38:39 +0800</pubDate><description><![CDATA[花半小时整理的，观众姥爷们凑合看
打开Terminal，输入
apt-get install cowsay

等待安装完成，输入
cowsay -f 动物名 words

具体安装流程见：https://blog.youkuaiyun.com/qq_31524409/article/details/51167068
输入以下命令显示全动物名
cowsay -l


下面是全图鉴（配合fortune食用更佳）：...]]></description><category></category></item><item><title><![CDATA[java9 gc log参数迁移]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/88604631</link><guid>https://blog.youkuaiyun.com/Princar/article/details/88604631</guid><author>Princar</author><pubDate>Sat, 16 Mar 2019 20:05:01 +0800</pubDate><description><![CDATA[原文链接：https://segmentfault.com/a/1190000013475524


序
本文主要研究一下java9 gc log参数的迁移。
统一JVM及GC的Logging
java9引进了一个统一的日志框架，对gc log的输出进行了统一的配置。
相关JEP(JDK Enhancement Proposal)

JEP 158: Unified JVM Logging
JEP...]]></description><category></category></item><item><title><![CDATA[我们为什么要学习LINUX?]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/88583342</link><guid>https://blog.youkuaiyun.com/Princar/article/details/88583342</guid><author>Princar</author><pubDate>Fri, 15 Mar 2019 20:37:12 +0800</pubDate><description><![CDATA[原文链接：https://blog.youkuaiyun.com/shanglimo/article/details/62237388

技术的价值不在于这个技术有多么高超，而在于技术本身给我们带来什么价值，所以很多时候我们学习一个技术，不能盲目学，是为了使用这个技术，知道这个技术的使用场景，知道这个技术带来的便利性，我们才决定要深入学习。

那我们干嘛要学习Linux？Linux能给我们带来什么价值呢，这样...]]></description><category></category></item><item><title><![CDATA[Idea在html里面的快捷键]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/88582675</link><guid>https://blog.youkuaiyun.com/Princar/article/details/88582675</guid><author>Princar</author><pubDate>Fri, 15 Mar 2019 20:04:37 +0800</pubDate><description><![CDATA[原文链接：https://blog.youkuaiyun.com/zhangludcsdn/article/details/77670442				(转)Idea在html里面的快捷键
			
			
				
																				
					
						
										
				
									
			
		
	
	
		
								    ...]]></description><category></category></item><item><title><![CDATA[JAVA学习笔记-chap4-继承]]></title><link>https://blog.youkuaiyun.com/Princar/article/details/82348276</link><guid>https://blog.youkuaiyun.com/Princar/article/details/82348276</guid><author>Princar</author><pubDate>Mon, 03 Sep 2018 15:06:42 +0800</pubDate><description><![CDATA[第四章 继承

4.1 继承的概述


继承的好处： 
1，提高了代码的复用性。 
2，让类与类之间产生了关系，给第三个特征多态提供了前提。
格式：


class 父类{}
class 子类 extends 父类{}



4.2继承的特点


继承关系图 

继承类型

需要注意：Java不支持多继承，但支持多重继承 

什么时候使用继承 
继承需要符合的关系是：is-a，父类更通用，子类更具...]]></description><category></category></item></channel></rss>