<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Leven_Martin的博客]]></title><description><![CDATA[冰冻三尺非一日之寒，和大家一起探索交流是我成长进步的动力]]></description><link>https://blog.youkuaiyun.com/Leven_Martin</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Leven_Martin]]></copyright><item><title><![CDATA[互联网web开发的发展历程（前后端）]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/122293161</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/122293161</guid><author>Leven_Martin</author><pubDate>Mon, 03 Jan 2022 22:58:06 +0800</pubDate><description><![CDATA[web技术发展历程（前端渲染、后端渲染、单页面富应用）]]></description><category></category></item><item><title><![CDATA[2021-06-19]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/118059922</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/118059922</guid><author>Leven_Martin</author><pubDate>Sat, 19 Jun 2021 22:10:13 +0800</pubDate><description><![CDATA[回归优快云，一只有梦想的程序猿，——少年闰土

]]></description><category></category></item><item><title><![CDATA[根据表名查询表的字段名和注释]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/83824834</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/83824834</guid><author>Leven_Martin</author><pubDate>Wed, 07 Nov 2018 15:25:54 +0800</pubDate><description><![CDATA[根据表名查询表的字段名和注释：
select 
      ut.COLUMN_NAME,--字段名称
      uc.comments,--字段注释
      ut.DATA_TYPE,--字典类型
      ut.DATA_LENGTH,--字典长度
      ut.NULLABLE--是否为空
from user_tab_columns  ut
inner JOIN user_col...]]></description><category></category></item><item><title><![CDATA[关于ConcurrentHashMap的优势及使用]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/77371187</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/77371187</guid><author>Leven_Martin</author><pubDate>Fri, 18 Aug 2017 15:57:19 +0800</pubDate><description><![CDATA[在java和Android开发中集合的使用频率非常高，线程的使用也非常普遍，大家用的最多的也就是HashMap，当然，HashMap效率很高，但是其是线程不安全的；HashTable线程安全，由于加入了synchronized,所以效率要低了很多；综合来看建议大家使用ConcurrentHashMap 
一、优势： 
    1、不但线程安全，而且比HashTable效率高 
    2、把数据分区]]></description><category></category></item><item><title><![CDATA[synchronize和volatile含义，使用]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/73742351</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/73742351</guid><author>Leven_Martin</author><pubDate>Mon, 26 Jun 2017 17:44:06 +0800</pubDate><description><![CDATA[1、使用synchronize修饰的代码块，同一时刻只能有一个线程访问 
2、volatile只能保证从堆内存中到子线程的栈内存中，获取的值是最新值，子线程对其操作也只是操作该线程栈中的临时的副本值，当子线程快执行完的时候才会刷新堆内存的值。]]></description><category></category></item><item><title><![CDATA[Viewpager和SeekBar的滑动冲突的解决办法（其他滑动冲突可参考）]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/72627295</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/72627295</guid><author>Leven_Martin</author><pubDate>Mon, 22 May 2017 16:09:06 +0800</pubDate><description><![CDATA[Android开发中滑动冲突非常常见，下面介绍一下我在项目开发中遇到的问题及解决方法。一、问题描述：在ViewPager+Fragment的配合使用中，在fragment的布局中使用到了SeekBar，此时会出现SeekBar只在第一次滑动的时候好用，之后的滑动都只能ViewPager有效，SeekBar滑动失效。 
二、解决办法：重新自定义ViewPager和SeekBar，代码如下：自定义的Vi]]></description><category></category></item><item><title><![CDATA[PopuwWindow使用细节（触摸外部不消失及返回键监听，动画使用）]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/71698122</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/71698122</guid><author>Leven_Martin</author><pubDate>Thu, 11 May 2017 21:04:28 +0800</pubDate><description><![CDATA[PopuwWindow使用非常常见，这里简单介绍其使用， 
1、怎样使其点击空白处不消失， 
2、怎样监听返回键， 
3、怎样使用透明度， 
4、动画使用； 
先贴代码：1、显示及空白点击问题View delete_view = LayoutInflater.from(this).inflate(R.layout.layout_delete,null);
ImageView iv_cancel =]]></description><category></category></item><item><title><![CDATA[Android控件动态加载的tag设置]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/71692705</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/71692705</guid><author>Leven_Martin</author><pubDate>Thu, 11 May 2017 20:33:16 +0800</pubDate><description><![CDATA[项目开发中，经常会有控件的动态使用，对于该动态控件的一些属性值存储或者便于在别处识别，经常会使用tag，即标记，下面简单介绍一下tag的使用： 
一、TextView.setTag(Object);若需要记住的值只有一个，可以直接使用settag，只要该组件不被销毁，tag一直不会消失，随时可以获取该tag值，便于使用； 
二、TextView.setTag(int key,Object objec]]></description><category></category></item><item><title><![CDATA[Android关于GridView加载图片的简单使用（使用Glide不卡顿）]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/67633139</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/67633139</guid><author>Leven_Martin</author><pubDate>Tue, 28 Mar 2017 10:47:16 +0800</pubDate><description><![CDATA[安卓开发中，对于图片的处理是非常常见的，这里简单介绍gridview加载图片时所使用的的一些技巧。 
一、众所周知，加载图片时会消耗很大的内存空间，这里我们使用谷歌推荐的一个库，用于处理图片的加载（官方说明：Glide是一个非常成熟的图片加载库，他可以从多个源加载图片，如：网路，本地，Uri等，更重要的是他内部封装了非常好的缓存机制并且在处理图片的时候能保持一个低的内存消耗。），此外，glide依赖]]></description><category></category></item><item><title><![CDATA[Android关于侧边栏的简单使用（drawerLayout，navigationview，动态添加menu）]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/65446239</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/65446239</guid><author>Leven_Martin</author><pubDate>Thu, 23 Mar 2017 17:24:14 +0800</pubDate><description><![CDATA[目前市面上大部分app都有使用侧边栏，假如的app还没有该功能，该让你的产品经理加班了哦。。 
一、侧边栏一般包括header和menu，header一般包括背景图、用户名等一些东东，切图如下 
下面贴出activity的布局文件<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.and]]></description><category></category></item><item><title><![CDATA[listView多个布局复用]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/60962272</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/60962272</guid><author>Leven_Martin</author><pubDate>Thu, 09 Mar 2017 16:12:36 +0800</pubDate><description><![CDATA[1、关于listView多个布局复用的问题，主要是重写一个方法，通过该方法在不同的位置设置不同的类型，这里共两种类型，不同条件是返回不同的类型，然后在getview方法中通过不同的类型加载不同的布局，具体的逻辑在后面的代码中实现获取每一个item的类型
@Override
public int getItemViewType(int position) {
    if (personalNewse]]></description><category></category></item><item><title><![CDATA[app版本更新和下载，通知栏实时进度（使用服务和广播）]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/58607707</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/58607707</guid><author>Leven_Martin</author><pubDate>Tue, 28 Feb 2017 17:37:15 +0800</pubDate><description><![CDATA[每个app都需要有版本更新的功能，下面简单介绍一下最近在项目中使用的app更新功能。 
1、首先需要使用服务和广播实现后台更新，使用到了xUtils，其他的网络请求框架代码类似。 
服务代码如下，注释写的很详细import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import and]]></description><category></category></item><item><title><![CDATA[Android屏幕分辨率，颜色、像素的使用（技巧）（必看）]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/56487211</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/56487211</guid><author>Leven_Martin</author><pubDate>Wed, 22 Feb 2017 15:58:54 +0800</pubDate><description><![CDATA[一、颜色Android中颜色是由透明度（alpha）和红绿蓝（RGB）定义的，两种编码方式： 
1、八位十六进制数，例如FFEEDDCC，FF代表透明度（完全不透明），EE代表红色（值越大红色越深），DD代表绿色，CC代表蓝色； 
2、六位十六进制数，同上； 
注意：六位编码在XML中默认不透明（FF），在代码中默认透明（00）；在代码中设置颜色，可以直接填八位的十六进制数值，如setTextCol]]></description><category></category></item><item><title><![CDATA[android轮播图AndroidImageSlider的简单使用]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/56481973</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/56481973</guid><author>Leven_Martin</author><pubDate>Wed, 22 Feb 2017 11:37:14 +0800</pubDate><description><![CDATA[网上关于轮播图的博客鱼龙混杂，我用的较多的是AndroidImageSlider这个开源库，该项目是国外非常出名的开源项目，官方github地址 https://github.com/daimajia/AndroidImageSlider 
AndroidImageSlider的架构，最核心的类是SliderLayout，，继承RelativeLayout。 
包含了可以左右滑动切换的SliderV]]></description><category></category></item><item><title><![CDATA[RxJava使用入门]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/55050266</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/55050266</guid><author>Leven_Martin</author><pubDate>Mon, 13 Feb 2017 16:39:13 +0800</pubDate><description><![CDATA[一、基本概念 
Observable： 发射源，在观察者模式中成为“被观察者” 
Observer： 接收源，“观察者”可接收Observable Subject发射的数据 
Subject：Subject是一个比较特殊的对象，既可以是发射源也可以是接收源 
Subscriber：“订阅者”，实现了Observer接口，比Observer多了一个最重要的方法unsubscribe();用于取消订阅，]]></description><category></category></item><item><title><![CDATA[java网络相关工具类（是否有网，是否wifi，打开网络设置界面）]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/54345991</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/54345991</guid><author>Leven_Martin</author><pubDate>Wed, 11 Jan 2017 17:48:08 +0800</pubDate><description><![CDATA[/**
 * 跟网络相关的工具类
 * Created by leven on 2016/10/13.
 */public class NetUtils {    private NetUtils() {
                /* cannot be instantiated */
        throw new UnsupportedOperationException("cann]]></description><category></category></item><item><title><![CDATA[字符串进行MD5加密工具类]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/54345963</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/54345963</guid><author>Leven_Martin</author><pubDate>Wed, 11 Jan 2017 17:44:52 +0800</pubDate><description><![CDATA[/**
 * Created by leven on 2016/10/26.
 */public class MD5Util {
    /**
     * @Title: getMD5Code
     * @Description: 获取加密的字符串(这里用一句话描述这个方法的作用)
     * @author qzh
     * @date 2016年2月15日 下午5:02:41]]></description><category></category></item><item><title><![CDATA[解析服务器返回的Json 数据的工具类]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/54345871</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/54345871</guid><author>Leven_Martin</author><pubDate>Wed, 11 Jan 2017 17:37:26 +0800</pubDate><description><![CDATA[/**
 * 解析服务器返回的Json 数据的工具类
 *  Created by leven on 2016/10/26.
 */
public class JsonParseUtils {    /**
     * @param response 服务器返回的 json 字符串
     * @return 请求的状态码
     */
    public static String get]]></description><category></category></item><item><title><![CDATA[获取所有文件夹中所有文件url（不包括文件夹）]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/54340925</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/54340925</guid><author>Leven_Martin</author><pubDate>Wed, 11 Jan 2017 10:04:06 +0800</pubDate><description><![CDATA[//获取文件夹中的所有文件url（不包括文件夹）
    public static List<String> getAllFiles(String dirPath) {
        List<String> filePaths = new ArrayList<>();
        File carouselDir = new File(dirPath);
        System.ou]]></description><category></category></item><item><title><![CDATA[java、Android 字符串、json写入文件]]></title><link>https://blog.youkuaiyun.com/Leven_Martin/article/details/54340828</link><guid>https://blog.youkuaiyun.com/Leven_Martin/article/details/54340828</guid><author>Leven_Martin</author><pubDate>Wed, 11 Jan 2017 09:55:09 +0800</pubDate><description><![CDATA[//字符串、json 写入文件
    public static void writeStringToFile(String json, String filePath) {
        File txt = new File(filePath);
        if (!txt.exists()) {
            try {
                txt.create]]></description><category></category></item></channel></rss>