<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chanchaw的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/chanchaw</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; chanchaw]]></copyright><item><title><![CDATA[Mybatis 批量写入有则修改无则新增，同时判断空选择性写入字段]]></title><link>https://blog.csdn.net/chanchaw/article/details/103546087</link><guid>https://blog.csdn.net/chanchaw/article/details/103546087</guid><author>chanchaw</author><pubDate>Sun, 15 Dec 2019 10:04:05 +0800</pubDate><description><![CDATA[针对单行数据有则修改无则新增
本案例的建表语句是：
-- auto-generated definition
create table contact_type
(
	sid varchar(50) not null
		primary key,
	name varchar(50) default '' null,
	status int default 1 null comment '状态,默认...]]></description><category></category></item><item><title><![CDATA[Angular 多级路由实现登录页跳转 - 给小白]]></title><link>https://blog.csdn.net/chanchaw/article/details/103139783</link><guid>https://blog.csdn.net/chanchaw/article/details/103139783</guid><author>chanchaw</author><pubDate>Tue, 19 Nov 2019 12:37:44 +0800</pubDate><description><![CDATA[Angular 通过多级路由实现登录页跳转

为你节省时间

本文受众是 Angular 初学者，没有多级路由使用经验，不知道登录页面与主页跳转的实现逻辑，相反，看到这里你就可以结束了，不要浪费时间。下面来看看小白对于登录页面的理解：

上图中左边是导航菜单栏，右边的空白区域是 &lt;router-outlet&gt; 所在区域，即所有实现业务逻辑的组件都在这里显示 - 点击左边导航栏的项目右侧...]]></description><category></category></item><item><title><![CDATA[Springboot 2.0 动态切换数据库，多数据源的实现]]></title><link>https://blog.csdn.net/chanchaw/article/details/103055454</link><guid>https://blog.csdn.net/chanchaw/article/details/103055454</guid><author>chanchaw</author><pubDate>Wed, 13 Nov 2019 19:15:01 +0800</pubDate><description><![CDATA[要制作快速开发框架需要动态切换数据库做增删改查操作，本文介绍在 Springboot 2.0 中制作的工具类

package com.cc.dynamicdb.utils;

import com.cc.dynamicdb.model.DBConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework....]]></description><category></category></item><item><title><![CDATA[微信模板消息详情页空白，Angular 项目404 的解决方法]]></title><link>https://blog.csdn.net/chanchaw/article/details/102955512</link><guid>https://blog.csdn.net/chanchaw/article/details/102955512</guid><author>chanchaw</author><pubDate>Thu, 07 Nov 2019 15:12:48 +0800</pubDate><description><![CDATA[微信服务号模板消息详情页打开空白页面

问题描述

正常运行的微信服务号，突然间发现模板消息的详情页打开是空白页面了（是不是自己动了什么？完全没印象）试了3个品牌的安卓手机：小米、华为、魅族，打开都是空白页（手机上），苹果手机可以打开，PC端Chrome 和 QQ浏览器 都可以正常打开，使用微信开发者工具也可以正常打开。网上搜索很多帖子说是 SSL 证书链不完整导致，而苹果手机不受该影响所以可以正...]]></description><category></category></item><item><title><![CDATA[DataGrip 2019.1 链接 MySQL失败，报错time zone value is unrecognized]]></title><link>https://blog.csdn.net/chanchaw/article/details/102837359</link><guid>https://blog.csdn.net/chanchaw/article/details/102837359</guid><author>chanchaw</author><pubDate>Thu, 31 Oct 2019 14:33:36 +0800</pubDate><description><![CDATA[DataGrip 链接本地MySQL失败
前情提要
本地安装的 MySQL 5.7 在命令行界面中可以正常登陆，但是使用 DataGrip 2019.1 就登陆不上，网上查找了N多帖子，有的说是 MySQL 驱动不对，那么更换了最新版本、8.0.13、8.0.15、5.1.47 等等都不好用，提示 The server time zone value is unrecognized or repr...]]></description><category></category></item><item><title><![CDATA[Nginx 中部署 Angular 项目遇到的坑]]></title><link>https://blog.csdn.net/chanchaw/article/details/102700822</link><guid>https://blog.csdn.net/chanchaw/article/details/102700822</guid><author>chanchaw</author><pubDate>Wed, 23 Oct 2019 14:30:36 +0800</pubDate><description><![CDATA[Nginx 中部署 Angular 项目遇到的坑
巨坑
网上搜索Angular 项目编译后部署到 Nginx 中的方法，多数文章都介绍了需要在 Nginx 中的配置文件的 location 中特别指定跳转到首页来避免刷新导致404的问题，那么完整的server 代码是：
server {
    listen       80;
    server_name  192.168.190.131;
...]]></description><category></category></item><item><title><![CDATA[微信网页授权的制作步骤]]></title><link>https://blog.csdn.net/chanchaw/article/details/102650702</link><guid>https://blog.csdn.net/chanchaw/article/details/102650702</guid><author>chanchaw</author><pubDate>Sun, 20 Oct 2019 16:57:12 +0800</pubDate><description><![CDATA[服务号中的网页授权
网页授权的目的是获取微信用户的 openid ，有两种授权方式：snsapi_base 和 snsapi_userinfo，微信用户无论是否关注了服务号前者都是静默授权，其只能获取到 openid ，而对于后者的方式，关注了服务号的用户是静默授权，没有关注的话则需要用户手动添加授权按钮。授权的过程是：


请求 oauth
发送请求 https://open.weixin.qq...]]></description><category></category></item><item><title><![CDATA[Android 实现定时任务之二 - Handler 结合 TimerTask]]></title><link>https://blog.csdn.net/chanchaw/article/details/102586968</link><guid>https://blog.csdn.net/chanchaw/article/details/102586968</guid><author>chanchaw</author><pubDate>Wed, 16 Oct 2019 15:50:46 +0800</pubDate><description><![CDATA[1/4. 在 Activity 中声明成员变量
private final Timer timer = new Timer();
private TimerTask task;
Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        // TODO Au...]]></description><category></category></item><item><title><![CDATA[Android 实现定时任务之一 - 使用Handler的postDelayed]]></title><link>https://blog.csdn.net/chanchaw/article/details/102586934</link><guid>https://blog.csdn.net/chanchaw/article/details/102586934</guid><author>chanchaw</author><pubDate>Wed, 16 Oct 2019 15:48:45 +0800</pubDate><description><![CDATA[弃用的方法
网上搜索有介绍使用Sleep方法实现的，这里就不介绍了

1/3. 在 Activity 中声明成员变量
Handler handler=new Handler();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Runnable runnable=new Runnable() {
	@Over...]]></description><category></category></item><item><title><![CDATA[Android 6.0 开始声明权限的变更]]></title><link>https://blog.csdn.net/chanchaw/article/details/102576516</link><guid>https://blog.csdn.net/chanchaw/article/details/102576516</guid><author>chanchaw</author><pubDate>Tue, 15 Oct 2019 22:38:38 +0800</pubDate><description><![CDATA[官方对权限的解释
Android 安全架构的中心设计点是：在默认情况下任何应用都没有权限执行对其他应用、操作系统或用户有不利影响的任何操作。这包括读取或写入用户的私有数据（例如联系人或电子邮件）、读取或写入其他应用程序的文件、执行网络访问、使设备保持唤醒状态等。
由于每个 Android 应用都是在进程沙盒中运行，因此应用必须显式共享资源和数据。它们的方法是声明需要哪些权限来获取基本沙盒未提供的额...]]></description><category></category></item><item><title><![CDATA[Android 广播的两种注册方式]]></title><link>https://blog.csdn.net/chanchaw/article/details/102230895</link><guid>https://blog.csdn.net/chanchaw/article/details/102230895</guid><author>chanchaw</author><pubDate>Sun, 06 Oct 2019 15:02:12 +0800</pubDate><description><![CDATA[概述
本文介绍两种注册方式的广播：动态注册（ JAVA代码）、静态（ 在清单文件AndroidManifest.xml 中注册）
动态注册广播接收器
达到的效果：在 app 的 MainActivity 中发送广播消息的按钮点击后给出下面几个反馈：

向 MainActivity 中的 EditText 中写入文字
弹出 Toast
打印 Logcat

创建项目的操作就略过了，下面开始每个模块的...]]></description><category></category></item><item><title><![CDATA[史上最详细创建 Android AIDL 远程服务步骤]]></title><link>https://blog.csdn.net/chanchaw/article/details/102083228</link><guid>https://blog.csdn.net/chanchaw/article/details/102083228</guid><author>chanchaw</author><pubDate>Fri, 04 Oct 2019 17:47:48 +0800</pubDate><description><![CDATA[项目介绍

创建时间：2019年10月4日16:30:09
实现功能：Android 远程服务的制作与测试运行，AIDL服务。
开发环境介绍：Android API = 29 即 Android 10，开发IDE是 Android Studio

吐槽
网上搜了N多文章，要么年代久远，要么开发IDE不同操作不懂（小白搞不懂。。），本文以最详细的步骤实现最简的 AIDL 远程服务的制作和调用。
实现...]]></description><category></category></item><item><title><![CDATA[SpringBoot 2.0 + Mybatis Generator + IDEA 制作多数据源]]></title><link>https://blog.csdn.net/chanchaw/article/details/100702710</link><guid>https://blog.csdn.net/chanchaw/article/details/100702710</guid><author>chanchaw</author><pubDate>Tue, 10 Sep 2019 16:14:25 +0800</pubDate><description><![CDATA[SpringBoot 2.0 + Mybatis + Mybatis Generator + 多数据源 + IDEA
吐槽
昨天网上找了个“完整”版的使用 SpringBoot 2.0 + Mybatis 实现多数据源，结果其实是缺少部分代码的，被害得很惨，浪费了太多时间，找了N多教程后最终集成成功，赶紧文章整理出来。
开发环境、技术栈
使用IDEA，集成了下面的功能点：SpringBoot 2....]]></description><category></category></item><item><title><![CDATA[Java原生类库发送 get post 请求]]></title><link>https://blog.csdn.net/chanchaw/article/details/100520525</link><guid>https://blog.csdn.net/chanchaw/article/details/100520525</guid><author>chanchaw</author><pubDate>Tue, 03 Sep 2019 15:54:39 +0800</pubDate><description><![CDATA[使用Java原生类库发送get post请求


下面是整个工具的全部代码，其中用到了fastjson：
package util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java...]]></description><category></category></item><item><title><![CDATA[Angular 中使用 FineReport ，不显示报表直接打印预览]]></title><link>https://blog.csdn.net/chanchaw/article/details/99420558</link><guid>https://blog.csdn.net/chanchaw/article/details/99420558</guid><author>chanchaw</author><pubDate>Tue, 13 Aug 2019 12:29:41 +0800</pubDate><description><![CDATA[Angular 直接打印预览


在项目 index.html 的头部引入 FineReport 相关的 js 文件
&lt;script type="text/javascript" src="/femisnsb/ReportServer?op=emb&amp;resource=finereport.js"&gt;&lt;/script&gt;

注意上面的 femisnsb 是项目名称，编译后...]]></description><category></category></item><item><title><![CDATA[Angular 引入外部 js 文件的方法（引入 jQuery）]]></title><link>https://blog.csdn.net/chanchaw/article/details/99400141</link><guid>https://blog.csdn.net/chanchaw/article/details/99400141</guid><author>chanchaw</author><pubDate>Tue, 13 Aug 2019 07:53:30 +0800</pubDate><description><![CDATA[Angular 引入外部 js 文件的方法（引入 jQuery）


在 tsconfig.json 中设置允许使用外部 js，如下图



下载 jQuery 文件拷贝到项目的目录：assets/lib 下（这里的 lib 是自己创建的目录）



保证 angular.json 中有对于 assets 的声明



调用方法：
import * as ejs from 'src/assets/...]]></description><category></category></item><item><title><![CDATA[Angular + Java + FineReport 嵌入式部署]]></title><link>https://blog.csdn.net/chanchaw/article/details/99335000</link><guid>https://blog.csdn.net/chanchaw/article/details/99335000</guid><author>chanchaw</author><pubDate>Mon, 12 Aug 2019 20:32:06 +0800</pubDate><description><![CDATA[Angular 项目中访问 FineReport
打开新窗口的方式访问 FineReport

2019年8月12日 20:17:52 官网看了N多解决方法到目前为止只成功了一个方法
使用标签 a 打开新窗口来访问报表
下面介绍部署步骤：

将 Eclipse 编译得到的 war 包拷贝到 Tomcat 目录 d:\apache-tomcat-9.0.16\webapps下，启动 Tomcat 其...]]></description><category></category></item><item><title><![CDATA[Angular PrimeNG Table Sticky 的用法]]></title><link>https://blog.csdn.net/chanchaw/article/details/97787703</link><guid>https://blog.csdn.net/chanchaw/article/details/97787703</guid><author>chanchaw</author><pubDate>Tue, 30 Jul 2019 15:29:49 +0800</pubDate><description><![CDATA[PrimeNG Table Sticky 的用法

先牢骚，官方给的代码用在 Angular8 和 RxJS6 版本上有兼容的问题，主要是 RxJS6 有很多 breaking changes，下面贴出来自己验证过成功的代码 - 2019年7月30日 13:15:31


...]]></description><category></category></item><item><title><![CDATA[nz-form inline 模式下多类型控件打乱布局的问题]]></title><link>https://blog.csdn.net/chanchaw/article/details/95614155</link><guid>https://blog.csdn.net/chanchaw/article/details/95614155</guid><author>chanchaw</author><pubDate>Fri, 12 Jul 2019 14:04:25 +0800</pubDate><description><![CDATA[nzForm 布局被打乱
nz-form 布局被打乱的原因



表单样式使用行内：[nzLayout]="'inline'"


表单中使用多中类型的控件（input、datepicker、select…）
会出现日期选择控件没有充满，同时 select 控件会被挤到下一行，看看下面的效果




使用官方的样式类设置统一宽度解决


在模板对应的CSS中使用下面的样式设置统一宽度
/* 通过设...]]></description><category></category></item><item><title><![CDATA[Angular ng-zorro-antd nz-form-label 字数不同导致不对齐，设定统一宽度]]></title><link>https://blog.csdn.net/chanchaw/article/details/95582431</link><guid>https://blog.csdn.net/chanchaw/article/details/95582431</guid><author>chanchaw</author><pubDate>Fri, 12 Jul 2019 07:55:55 +0800</pubDate><description><![CDATA[nzFormLabel 字数不同导致不对齐

nz-form-label 文字个数不同，即使通过 [nzSpan] 设置宽度也没有效果会出现下面的效果 - 不对齐

可以看出如果第一行的 交期 如果是4个字就会和下面的 销售类型 对齐
下面介绍如何解决
第一种方法：自定义类设置&lt;nz-form-label&gt; 的宽度



设置后如下图



第二种方法：使用官方提供的类


最终也是测...]]></description><category></category></item></channel></rss>