<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Cherie]]></title><description><![CDATA[A goal is a dream with a deadline.]]></description><link>https://blog.youkuaiyun.com/chenyanmoting</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenyanmoting]]></copyright><item><title><![CDATA[微信小程序开发]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/109300170</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/109300170</guid><author>chenyanmoting</author><pubDate>Wed, 28 Oct 2020 10:01:01 +0800</pubDate><description><![CDATA[微信小程序（Wechat Mini Program），是一种在微信内传播，不需要安装便可使用的应用程序。从2017年1月发布，到2020年6月为止已有550万个小程序，DAU（日活跃用户数）为4.4亿，且呈持续增长的趋势。

小程序特点：


微信小程序是基于微信衍生出来的产品，所以小程序提供了丰富的API来获取微信的数据与功能。不管是用户存储在微信上的数据，还是微信已有的功能，都可以通过这些API来直接使用。
另外小程序基本上不需要考虑客户端是ios还是android，这些差异微信已经帮小程序屏蔽掉了，小]]></description><category></category></item><item><title><![CDATA[二叉树遍历]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/89511794</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/89511794</guid><author>chenyanmoting</author><pubDate>Thu, 25 Apr 2019 11:04:28 +0800</pubDate><description><![CDATA[目录

一、三种遍历

二、遍历算法

1. 递归遍历

2. 循环遍历

一、三种遍历

二叉树遍历分为三种：前（先）序遍历、中序遍历、后序遍历

首先需要明确，二叉树以何种方式遍历，是以根节点在排序中的先后顺序来命名的，例如：



  前序遍历：如果根节点先排序，则为前序遍历【ABC】

  中序遍历：如果先排左节点，再排根节点，则为中序遍历【BAC】

  后序遍历：如果根节点...]]></description><category></category></item><item><title><![CDATA[【事务一】数据库事务]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/73719239</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/73719239</guid><author>chenyanmoting</author><pubDate>Sun, 25 Jun 2017 19:44:05 +0800</pubDate><description><![CDATA[ 

        我跟事务可能结了很久的仇，总是因为它被同事们各种笑话，我也甚是惭愧hahahahaha~，今儿闲了来整理一下

一、事务模型

1. 自动事务：在事务中，事务自动提交，发生错误时自动回滚。系统自动默认

2.隐式事务：每一条数据操作语句都自动地成为一个事务，事务的开始是隐式的，事务的结束有明确的标记。需要commit、rollback语句提交或回滚当前事务

3. 显式事务：...]]></description><category></category></item><item><title><![CDATA[【java基础之多线程】线程同步]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/52713382</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/52713382</guid><author>chenyanmoting</author><pubDate>Fri, 30 Sep 2016 19:44:48 +0800</pubDate><description><![CDATA[在开始线程同步之前，先来看两个名词

       并发访问：当使用多线程来访问同一个数据时，很容易出现线程安全的问题（并发访问）

       线程安全：并发线程在任一时刻只有一个线程可以进入修改共享资源的代码区（临界区），所以同一时刻最多只有一个线程处于临界区，从而保证线程的安全性

线程同步主要由四种方法：1.互斥区，就是锁了；2.条件变量；3.信号量；4.事件。基本上我们写程序用的就是锁了。]]></description><category></category></item><item><title><![CDATA[【java基础之多线程】多线程的生命周期]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/52713377</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/52713377</guid><author>chenyanmoting</author><pubDate>Fri, 30 Sep 2016 19:44:28 +0800</pubDate><description><![CDATA[一、生命周期：新建（New）、就绪（Runnable）、运行（Running）、阻塞（Blocked）、死亡（Dead）

1. 新建

1）当程序使用new关键字创建了一个线程之后，该线程就处于新建状态。

2）和其它Java对象一样，由Java虚拟机为其分配内存，并初始化其成员变量的值

（没有表现出任何线程的动态特征，程序也不会执行线程的线程执行体）
2. 就绪

1）线程对象调用start()方法之后，该线程处于就绪状态

（线程已经被启动，正在等待被分配给CPU时间片，也就是说此时线程正在就绪队列]]></description><category></category></item><item><title><![CDATA[【java基础之多线程】多线程的创建]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/52389523</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/52389523</guid><author>chenyanmoting</author><pubDate>Wed, 31 Aug 2016 22:11:29 +0800</pubDate><description><![CDATA[继承 java.lang.Thread 类

步骤：

1）定义Thread类的子类，并重写该类的run()方法，该run()方法的方法体就代表了线程需要完成的任务。（把 run() 方法称为线程执行体）

2）创建Thread子类的实例，即创建了线程对象

3）调用线程对象的 start() 方法来启动线程

PS：使用继承Thread类的方法来创建线程类时，多个线程间无法共享线程类的实例变量

    实现 java.lang.Runnable 接口]]></description><category></category></item><item><title><![CDATA[【ztree系列】MySQL查询所有子节点]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/52373695</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/52373695</guid><author>chenyanmoting</author><pubDate>Tue, 30 Aug 2016 22:23:56 +0800</pubDate><description><![CDATA[其中用到了四个mysql函数
      1）cast()：用来获取一个类型的值，并产生另一个类型的值。但是可转换类型有限。还有一个用来做转换的函数是convert(value, type)
            语法：cast(value astype);
      2）concat()：用于将多个字符串连接成一个字符串，返回结果为连接参数产生的字符串。如有任何一个参数为NULL ，则返回值为 NULL。
            语法：concat (str1,str2,…) 
      3）gro]]></description><category></category></item><item><title><![CDATA[一看就懂的ReactJs教程]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/52081264</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/52081264</guid><author>chenyanmoting</author><pubDate>Sun, 31 Jul 2016 22:13:32 +0800</pubDate><description><![CDATA[现在最热门的前端框架有AngularJS、React、Bootstrap等。自从接触了ReactJS，ReactJs的虚拟DOM（Virtual DOM）和组件化的开发深深的吸引了我，下面来跟我一起领略
ReactJS的风采吧~~ 章有点长，耐心读完，你会有很大收获哦~

一、ReactJS简介

React 起源于 Facebook 的内部项目，因为该公司对市场上所有 JavaScript MVC 框架，都不满意，就决定自己写一套，用来架设 Instagram 的网站。做出来以后，发现这套东西很好用，就在]]></description><category></category></item><item><title><![CDATA[【web前端】聊聊MUI]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/52081261</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/52081261</guid><author>chenyanmoting</author><pubDate>Sun, 31 Jul 2016 22:12:57 +0800</pubDate><description><![CDATA[MUI（Mobile User Interface）是一套基于Html5，用于手机端界面开发的框架，它追求性能致力于UI原生体验，不依赖任何第三方JS库。以前接触的EasyUI、BootStrap应用在网页中没有多大问题，但是一放到手机上单独使用问题就来了，所以很多技术结合起来用各取所长才是最好不过的。

        UI组件是MUI的基础，以iOS 7为基础，补充部分Android特有控件。一般页面常用到的元素都包含在这部分，像按钮、消息框、图标、图文列表等等各种小部件。它们的特点是独立性，都是一个小]]></description><category></category></item><item><title><![CDATA[【web前端】简洁的VUE]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/52081259</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/52081259</guid><author>chenyanmoting</author><pubDate>Sun, 31 Jul 2016 22:12:37 +0800</pubDate><description><![CDATA[Vue.js 是用于构建交互式的 Web 界面库，主打轻量级，通过简洁的API提供高效的MVVM数据绑定和一个可组合的组件系统。Vue.js 专注于 MVVM 模型的 ViewModel 层，通过双向数据绑定把View层和Model层连接起来，实际的DOM操作和输出格式被抽象的方式到指令（Directives）和过滤器（Filters），特点是简单、快速、组合、对模块友好；

       AngularJS完全使用JavaScript编写的客户端技术，同其它Web技术（html、css、js）结合使用，使]]></description><category></category></item><item><title><![CDATA[【web前端】开发必会之Node.js]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/52081257</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/52081257</guid><author>chenyanmoting</author><pubDate>Sun, 31 Jul 2016 22:12:08 +0800</pubDate><description><![CDATA[Node.js是一个基于Chrome JavaScript运行时建立的平台， 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动， 非阻塞I/O模型而得以轻量和高效，非常适合在分布式设备上运行数据密集型的实时应用。
1. 安装使用：
       官网地址下载node.js：https://nodejs.org/en/download/，下载完以后运行该文件，安装过程比较简单。]]></description><category></category></item><item><title><![CDATA[从Hadoop到Spark的架构实践]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/51793801</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/51793801</guid><author>chenyanmoting</author><pubDate>Thu, 30 Jun 2016 22:04:52 +0800</pubDate><description><![CDATA[当下，Spark已经在国内得到了广泛的认可和支持：2014年，Spark Summit China在北京召开，场面火爆；同年，Spark Meetup在北京、上海、深圳和杭州四个城市举办，其中仅北京就成功举办了5次，内容更涵盖Spark Core、Spark Streaming、Spark MLlib、Spark SQL等众多领域。而作为较早关注和引入Spark的移动互联网大数据综合服务公司，Ta]]></description><category></category></item><item><title><![CDATA[【IDEA】无法创建Maven项目]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/51585775</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/51585775</guid><author>chenyanmoting</author><pubDate>Sun, 05 Jun 2016 10:59:03 +0800</pubDate><description><![CDATA[在IDEA中导入了一个项目，但是找不到转成Maven项目的入口，最后才发现是没有安装Maven插件……
无法创建Maven项目
普通项目转成Maven项目









二、web项目转成Maven项目]]></description><category></category></item><item><title><![CDATA[【web前端】input使用小结]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/51549391</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/51549391</guid><author>chenyanmoting</author><pubDate>Tue, 31 May 2016 21:50:28 +0800</pubDate><description><![CDATA[input文本改变的事件
（1）改变完后触发：
只有在文本做了改变，且失去焦点时触发
    $("#test").change(function(){
        //fire your ajax call
        alert("Change!")
   });
（2）改变时触发：
input事件：on和bind的绑定方式暂时没发现有什么区别
  1）$("#tes]]></description><category></category></item><item><title><![CDATA[mysql常用函数]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/51549468</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/51549468</guid><author>chenyanmoting</author><pubDate>Tue, 31 May 2016 21:50:16 +0800</pubDate><description><![CDATA[一、数学函数
ABS(x)   返回x的绝对值
BIN(x)   返回x的二进制（OCT返回八进制，HEX返回十六进制）
CEILING(x)   返回大于x的最小整数值
EXP(x)   返回值e（自然对数的底）的x次方
FLOOR(x)   返回小于x的最大整数值
GREATEST(x1,x2,...,xn)返回集合中最大的值
LEAST(x1,x2,...,xn)      返]]></description><category></category></item><item><title><![CDATA[【java集合一】根接口Collection、Map]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/51549451</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/51549451</guid><author>chenyanmoting</author><pubDate>Tue, 31 May 2016 21:50:13 +0800</pubDate><description><![CDATA[Java集合类是一种非常实用的工具类，主要用于保存、盛装其它数据（集合里只能保存对象），因此集合类也被成为容器类。所有的集合类都位于java.util包下，在java.util.concurrent下还提供了一些支持多线程的集合类。Java的集合类主要由两个接口派生而来：Collection和Map，这两个是Java集合框架的根接口。
1.Collection接口
        Collection派生出三个子接口，Set代表不可重复的无序集合、List代表可重复的有序集合、Queue是java提供的队列]]></description><category></category></item><item><title><![CDATA[【Yii框架 一 】PHP框架，Yii概述]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/51353606</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/51353606</guid><author>chenyanmoting</author><pubDate>Mon, 09 May 2016 19:59:06 +0800</pubDate><description><![CDATA[PHP的框架，只接触过三种：ThinkPHP、Laravel、Yii，前两种作了解，项目中用的Yii。
一、3种框架简述


    ThinkPHP（TP）是一个快速、兼容而且简单的轻量级国产PHP框架，正式版需要PHP5.0以上版本支持。它是从Struts结构移植过来并做了改进和完善，同时借鉴了国外很多优秀的框架和模式，融合了Struts的思想、TabLib标签库、ORM映射和Acti]]></description><category></category></item><item><title><![CDATA[【一点一滴Bootstrap】导航栏]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/51288056</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/51288056</guid><author>chenyanmoting</author><pubDate>Sat, 30 Apr 2016 21:54:51 +0800</pubDate><description><![CDATA[导航栏，是用来展示网页主要信息模块，引导用户了解网站概况并帮助其快速找到搜索目标的一种常用元素。导航栏在一个网页中起到了提纲挈领的作用，现在浏览各大网站，基本都能见到它的存在。所以在我们设计网页的时候，这部分是必不可少且需要多下功夫的地方。
        以前写导航栏一般都采用iframe的形式，把页面分成几块，左边导航栏，右边页面主题内容……这次换了一种方式，把导航栏做在了页面初始框架中，每次页面先加载这个初始框架，再根据url请求地址的不同加载不同的主体内容并给导航栏添加效果

左边导航栏：]]></description><category></category></item><item><title><![CDATA[【一点一滴Bootstrap】标签页Tab]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/51286950</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/51286950</guid><author>chenyanmoting</author><pubDate>Sat, 30 Apr 2016 21:54:08 +0800</pubDate><description><![CDATA[标签页Tab是一种常用的导航元素，除此之外我们也可以将它设置成一个页面容器放置同类功能的页面
一、标签页的使用

1. 设置data属性

       在html标签中，添加data-toggle=“tab”或data-toggle=“pill”，再在 href 中加入要展示的标签页。

       1）将 nav 和 nav-tabs 类添加到ul 中，将会应用 Bootstrap标签样式

       2）添加 nav 和 nav-pills 类到ul 中，将会应用 Bootstrap胶囊式样式
]]></description><category></category></item><item><title><![CDATA[【一点一滴Bootstrap】模态框]]></title><link>https://blog.youkuaiyun.com/chenyanmoting/article/details/51286979</link><guid>https://blog.youkuaiyun.com/chenyanmoting/article/details/51286979</guid><author>chenyanmoting</author><pubDate>Sat, 30 Apr 2016 21:51:14 +0800</pubDate><description><![CDATA[Bootstrap中的模态框，就是平常我们所谓的弹出窗体，是附加在父窗体上的子窗体。它可为页面封装很多功能，在一定程度上简化了页面的设计、减少了页面间频繁的交替。
一、模态框使用简述

1.属性
       data-toggle：“model”，表明触发一个模态框

       data-target：触发对象的id或class等，表明要触发的模态框

       data]]></description><category></category></item></channel></rss>