<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[GraceUp]]></title><description><![CDATA[Jumped.Then I changed my mind.]]></description><link>https://blog.youkuaiyun.com/graceup</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; graceup]]></copyright><item><title><![CDATA[MySQL sum、count 查询无数据时，返回记录数区别]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/109625892</link><guid>https://blog.youkuaiyun.com/graceup/article/details/109625892</guid><author>graceup</author><pubDate>Wed, 11 Nov 2020 18:22:04 +0800</pubDate><description><![CDATA[MySQL sum、count 查询无数据时，返回记录数区别。

利用MySQL统计时，经常用到sum和count两个函数。笔者使用这两个函数过程遇到一个问题，现记录下，方便查阅。当查询无数据时，count函数会返回为0，而sum函数会返回为空，如果程序里面之前用的是count，改为sum后需增加判空处理。



详情如下：

建立一个order表，数据如下图：



使用count函数，create_time&lt;0(表中无这个条件的数据)


...]]></description><category></category></item><item><title><![CDATA[Elasticsearch以空格区分多个关键词进行搜索]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/109605360</link><guid>https://blog.youkuaiyun.com/graceup/article/details/109605360</guid><author>graceup</author><pubDate>Tue, 10 Nov 2020 20:23:29 +0800</pubDate><description><![CDATA[Elasticsearch搜索一篇文章,关键词是"分布式 架构"，以空格分隔多个关键词（类似搜索引擎），搜索结果的文章是包含"分布式"和"架构"。

搜索了下现有网上的答案，没找到答案（如有更好的答案，请留言分享），只好通过分割关键词，进行匹配搜索。

直接在ES查询：


POST article/_search
{
	"query": {
		"bool": {
			"must": [{
				"term": {
					"content": "分布式"
				}
			}, {
				"te]]></description><category></category></item><item><title><![CDATA[Navicat同步修改数据库]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/107026622</link><guid>https://blog.youkuaiyun.com/graceup/article/details/107026622</guid><author>graceup</author><pubDate>Mon, 29 Jun 2020 19:25:23 +0800</pubDate><description><![CDATA[开发过程可能更改了表结构或者数据修改了，升级到生产环境，需要整理数据库的差异，可以使用Navicat工具找出差异，并得到更新脚本。

ps:高版本的Navicat才有此功能，以下操作使用的版本是



1.







2.





3.





4.









5.








...]]></description><category></category></item><item><title><![CDATA[发送验证是否校验手机号已注册]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/103091317</link><guid>https://blog.youkuaiyun.com/graceup/article/details/103091317</guid><author>graceup</author><pubDate>Fri, 15 Nov 2019 19:41:31 +0800</pubDate><description><![CDATA[场景：在使用手机号和验证码登录环境中，存在一个通过手机号获取验证码的接口。

问题：（前提：都没加反爬）后台发送验证码之前，是否判断手机号已注册。如果加判断，手机号没注册，直接返回，爬虫即可遍历已注册的手机号；如果没加判断，就会浪费验证码。

方案：1.增加手机号判断，增加反爬；2.不增加判断，增加手机发送验证码次数判断。

优缺点：1.增加爬虫，成本增加，2.需增加缓存层。


...]]></description><category></category></item><item><title><![CDATA[jqGrid ajax请求改为POST]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/102709922</link><guid>https://blog.youkuaiyun.com/graceup/article/details/102709922</guid><author>graceup</author><pubDate>Wed, 23 Oct 2019 20:11:47 +0800</pubDate><description><![CDATA[jqGrid默认ajax请求是GET，如果后台接口写死为POST，则需改动请求方法类型。
主要增加如下参数:
		datatype: "json",
        ajaxGridOptions: {
        	contentType: "application/json",
        },//post请求需要加
        mtype: "POST",//post请求需要加
...]]></description><category></category></item><item><title><![CDATA[Shiro 未登录或登录失效，定义返回JSON格式数据]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/102689038</link><guid>https://blog.youkuaiyun.com/graceup/article/details/102689038</guid><author>graceup</author><pubDate>Tue, 22 Oct 2019 19:41:38 +0800</pubDate><description><![CDATA[Shiro框架默认认证失败后会返回到登录页面，在前后端分离项目中，需要返回JSON数据，以便前端或者app端解析处理。
实现方式：

扩展shiro框架的UserFilter类，重写redirectToLogin方法。

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax...]]></description><category></category></item><item><title><![CDATA[ie8 隐藏file 按钮，上传文件]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/79885401</link><guid>https://blog.youkuaiyun.com/graceup/article/details/79885401</guid><author>graceup</author><pubDate>Tue, 10 Apr 2018 18:22:39 +0800</pubDate><description><![CDATA[&amp;lt;HTML&amp;gt;
&amp;lt;HEAD&amp;gt;
&amp;lt;TITLE&amp;gt;upload&amp;lt;/TITLE&amp;gt;
&amp;lt;style&amp;gt;
&amp;lt;!--
.addfileA{
    position:relative;
    cursor:hand;
    text-decoration:none;
    background-image: url('C:\WINDOWS\Zap...]]></description><category></category></item><item><title><![CDATA[java获取磁盘使用信息]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/79793110</link><guid>https://blog.youkuaiyun.com/graceup/article/details/79793110</guid><author>graceup</author><pubDate>Mon, 02 Apr 2018 18:27:45 +0800</pubDate><description><![CDATA[获取磁盘使用信息package com.igustudio.tmanager.utils;

import java.io.File;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

...]]></description><category></category></item><item><title><![CDATA[window下java调用python脚本并读取Python运行结果]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/79757680</link><guid>https://blog.youkuaiyun.com/graceup/article/details/79757680</guid><author>graceup</author><pubDate>Fri, 30 Mar 2018 14:54:05 +0800</pubDate><description><![CDATA[window下java调用python脚本并读取Python运行结果java 代码如下：import java.io.InputStreamReader;
import java.io.LineNumberReader;

public class TestRunPython {

	public static void main(String[] args) {
		String result ...]]></description><category></category></item><item><title><![CDATA[java从前端获取参数添加到图片后返回整张图片]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/79629923</link><guid>https://blog.youkuaiyun.com/graceup/article/details/79629923</guid><author>graceup</author><pubDate>Tue, 20 Mar 2018 18:47:40 +0800</pubDate><description><![CDATA[java从前端获取参数添加到图片后返回整张图片以后为整个servlet代码，请自行加入到j2ee工程。import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.im...]]></description><category></category></item><item><title><![CDATA[java生成二维码 并在生成的二维图片加上说明文字]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/79614660</link><guid>https://blog.youkuaiyun.com/graceup/article/details/79614660</guid><author>graceup</author><pubDate>Mon, 19 Mar 2018 17:46:19 +0800</pubDate><description><![CDATA[java生成二维码使用到com.google.zxing两个库，请自行下载，下载地址为：http://mvnrepository.com/artifact/com.google.zxing/core/3.3.2http://mvnrepository.com/artifact/com.google.zxing/javase/3.3.2import java.awt.Color;
import ja...]]></description><category></category></item><item><title><![CDATA[搭建高并发socke服务器]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/79583822</link><guid>https://blog.youkuaiyun.com/graceup/article/details/79583822</guid><author>graceup</author><pubDate>Fri, 16 Mar 2018 17:02:11 +0800</pubDate><description><![CDATA[搭建高并发socke服务器数据上行如下图所示：终端：每个终端通过预先配置好的域名或者ip连接到socket服务器，每台socket服务器分配到的终端数按服务器配置进行分配，例如1核1G可分配800个终端连接到此服务器。socket服务器：终端连接到socket服务器并收到心跳数据时，socket服务器把终端和此服务器的连接信息存储到redis数据库中。举例，socket服务器1的ip地址为：172...]]></description><category></category></item><item><title><![CDATA[html页面异步加载js文件]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/79558486</link><guid>https://blog.youkuaiyun.com/graceup/article/details/79558486</guid><author>graceup</author><pubDate>Wed, 14 Mar 2018 18:21:12 +0800</pubDate><description><![CDATA[一般直接引入第三方的js，如果第三方速度比较慢，会阻塞页面的渲染，用户等待的时候，会看到一片的空白，这样的用户体验不太好。因此一些不用马上运行的js，可以用异步进行加载。加载方法有两种，如下script 中加入 async=”async”async 是html5的新属性，低版本的浏览器不兼容1&amp;lt;script type=&quot;text/javascript&quot; async=&quot;async&quot; src=&quot;...]]></description><category></category></item><item><title><![CDATA[java 解析socket数据流为字符串]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/79558372</link><guid>https://blog.youkuaiyun.com/graceup/article/details/79558372</guid><author>graceup</author><pubDate>Wed, 14 Mar 2018 18:11:56 +0800</pubDate><description><![CDATA[java 解析socket数据流为字符串 byte[] vin = new byte[]{
				 0x38, 0x35, 0x37, 0x35, 0x38, 
				 0x37, 0x30, 0x32, 0x30, 0x35,
				 0x39, 0x34, 0x36, 0x33, 0x34,
				 0x56, 0x35
		};
		
for(int i=0;i&amp;lt;vin.len...]]></description><category></category></item><item><title><![CDATA[基于freeSWITCH的sip协议利用WebRTC 实现实时视频聊天]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/79485976</link><guid>https://blog.youkuaiyun.com/graceup/article/details/79485976</guid><author>graceup</author><pubDate>Thu, 08 Mar 2018 16:44:06 +0800</pubDate><description><![CDATA[1.FreeSWITCH windows版安装FreeSWITCH 是一个电话的软交换解决方案，包括一个软电话和软交换机用以提供语音和聊天的产品驱动。此经验主要介绍FreeSWITCH windows版安装过程。下载地址：http://files.freeswitch.org/windows/installer/请自选操作系统版本下载。演示过程为64位操作系统。安装成功后，在window应用中找到...]]></description><category></category></item><item><title><![CDATA[Tomcat web远程监控管理]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/78960854</link><guid>https://blog.youkuaiyun.com/graceup/article/details/78960854</guid><author>graceup</author><pubDate>Wed, 03 Jan 2018 14:31:49 +0800</pubDate><description><![CDATA[tmanagertmanager 是一个Tomcat web远程管理汉化版应用Tomcat提供了manager，可以对应用进行管理，不过manager是英文版，界面只是适配了PC端，操作上也不太流畅。因此，tmanager就出现了。manager包括什么
基于Tomcat catalina，可以对应用进行管理（部署、卸载、停止、启动）。
前端使用Amaze UI开发，适配主流浏览器，兼容移动端。
支]]></description><category></category></item><item><title><![CDATA[java 实现html5多文件选择上传_h5多文件上传_ajax异步多文件上传_java处理多文件上传]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/77897755</link><guid>https://blog.youkuaiyun.com/graceup/article/details/77897755</guid><author>graceup</author><pubDate>Fri, 08 Sep 2017 18:29:09 +0800</pubDate><description><![CDATA[java 实现html5多文件选择上传_h5多文件上传_ajax异步多文件上传_java处理多文件上传
html页面如下




muti file upload



	<form name="upform" action="/nanjian_server/api/import/importMultiFile"
		method="POST" enctype="multipart/form-]]></description><category></category></item><item><title><![CDATA[html页面异步加载js文件]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/52232412</link><guid>https://blog.youkuaiyun.com/graceup/article/details/52232412</guid><author>graceup</author><pubDate>Wed, 17 Aug 2016 16:51:22 +0800</pubDate><description><![CDATA[一般直接引入第三方的js，如果第三方速度比较慢，会阻塞页面的渲染，用户等待的时候，会看到一片的空白，这样的用户体验不太好。因此一些不用马上运行的js，可以用异步进行加载。加载方法有两种，如下script 中加入 async=”async”async 是html5的新属性，低版本的浏览器不兼容<script type="text/javascript" async="async" src="http:]]></description><category></category></item><item><title><![CDATA[dubbo完整实例-附demo（非maven）]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/52155449</link><guid>https://blog.youkuaiyun.com/graceup/article/details/52155449</guid><author>graceup</author><pubDate>Mon, 08 Aug 2016 20:55:04 +0800</pubDate><description><![CDATA[dubbo完整实例-附demo（非maven）






dubbo是一个分布式服务框架，提供一个SOA的解决方案。简单的说，dubbo就像在生产者和消费者中间架起了一座桥梁，使之能透明交互。
本文旨在搭建一个可供使用和测试的dubbo环境，使用了spring框架；使用了zookeeper和dubbo服务。
demo github地址：https://github.com/gr]]></description><category></category></item><item><title><![CDATA[js校验表单插件]]></title><link>https://blog.youkuaiyun.com/graceup/article/details/52119853</link><guid>https://blog.youkuaiyun.com/graceup/article/details/52119853</guid><author>graceup</author><pubDate>Thu, 04 Aug 2016 15:42:09 +0800</pubDate><description><![CDATA[本demo使用jQuery，也可以去掉（需要改写里面用的jQuery的方法）。 
demo github地址：[https://github.com/graceup/gu_js_lib/tree/master/基于jQuery js检验插件](https://github.com/graceup/gu_js_lib/tree/master/%e5%9f%ba%e4%ba%8ejQuery js%e6]]></description><category></category></item></channel></rss>