merge_mergesort - CSDN
精华内容
参与话题
  • [Python3]pandas.merge用法详解

    万次阅读 多人点赞 2019-08-19 15:39:45
    这节主要对pandas合并数据集的merge函数进行详解。(用过SQL或其他关系型数据库的可能会对这个方法比较熟悉。) 1.merge函数的参数一览表 2.创建两个DataFrame 3.pd.merge()方法设置连接字段。 ...

    摘要

    数据分析与建模的时候大部分时间在数据准备上,包括对数据的加载、清理、转换以及重塑。pandas提供了一组高级的、灵活的、高效的核心函数,能够轻松的将数据规整化。这节主要对pandas合并数据集的merge函数进行详解。(用过SQL或其他关系型数据库的可能会对这个方法比较熟悉。)码字不易,喜欢请点赞!!!

    1.merge函数的参数一览表

    2.创建两个DataFrame
    在这里插入图片描述

    3.pd.merge()方法设置连接字段。
    默认参数how是inner内连接,并且会按照相同的字段key进行合并,即等价于on=‘key’。
    在这里插入图片描述

    也可以显示的设置on=‘key’,这里也推荐这么做。
    在这里插入图片描述

    当两边合并字段不同时,可以使用left_on和right_on参数设置合并字段。当然这里合并字段都是key所以left_on和right_on参数值都是key。
    在这里插入图片描述

    4.pd.merge()方法设置连接方法。
    主要包括inner(内连接)、outer(外链接)、left(左连接)、right(右连接)。
    参数how默认值是inner内连接,上面的都是采用内连接,连接两边都有的值。
    当采用outer外连接时,会取并集,并用NaN填充。
    在这里插入图片描述
    外连接其实左连接和右连接的并集。左连接是左侧DataFrame取全部数据,右侧DataFrame匹配左侧DataFrame。(右连接right和左连接类似)
    在这里插入图片描述

    5.pd.merge()方法索引连接,以及重复列名命名。
    pd.merge()方法可以通过设置left_index或者right_index的值为True来使用索引连接,例如这里df1使用data1当连接关键字,而df2使用索引当连接关键字。
    在这里插入图片描述

    从上面可以发现两个DataFrame中都有key列,merge合并之后,pandas会自动在后面加上(_x,_y)来区分,我们也可以通过设置suffixes来设置名字。
    在这里插入图片描述

    姊妹篇:pandas.concat用法详解!!!

    展开全文
  • SQL中Merge的用法

    千次阅读 2019-02-01 14:38:35
    Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如...

    简介

    Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。”,通过这个描述,我们可以看出Merge是关于对于两个表之间的数据进行操作的。
    可以想象出,需要使用Merge的场景比如:

    • 数据同步
    • 数据转换
    • 基于源表对目标表做Insert,Update,Delete操作

    使用Merge关键字的好处

    首先是更加短小精悍的语句,在SQL Server 2008之前没有Merge的时代,基于源表对目标表进行操作需要分别写好几条Insert,Update,Delete。而使用Merge,仅仅需要使用一条语句就好。下面我们来看一个例子。
    首先建立源表和目标表,并插入相关的数据,如图1所示。
    在这里插入图片描述图1.创建测试表并插入测试数据

    下面我们来写一个简单的Merge语句,如图2所示。
    在这里插入图片描述
    图2.一个简单的Merge语句

    所造成的结果如图3所示。
    在这里插入图片描述
    图3.Merge语句对于目标表的更新

    最终目标表的结果如图4所示。
    在这里插入图片描述
    图4.最后目标表的结果

    Merge语句还有一个强大的功能是通过OUTPUT子句,可以将刚刚做过变动的数据进行输出。我们在上面的Merge语句后加入OUTPUT子句,如图5所示。
    在这里插入图片描述
    图5.Merge语句后加上OUTPUT子句

    此时Merge操作完成后,将所变动的语句进行输出,如图6所示。
    在这里插入图片描述
    图6.输出Merge操作产生的数据变更

    当然了,上面的Merge关键字后面使用了多个WHEN…THEN语句,而这个语句是可选的.也可以仅仅新增或是仅仅删除,如图7所示。

    在这里插入图片描述
    图7.仅仅插入的Merge语句

    我们还可以使用TOP关键字限制目标表被操作的行,如图8所示。在图2的语句基础上加上了TOP关键字,我们看到只有两行被更新。
    在这里插入图片描述
    图8.使用TOP关键字的Merge语句

    但仅仅是MATCHED这种限制条件往往不能满足实际需求,我们可以在图7那个语句的基础上加上AND附加上额外的限制条件,如图9所示。
    在这里插入图片描述
    图9.加上了AND限制条件的Merge语句

    Merge关键字的一些限制

    • 使用Merge关键字只能更新一个表
    • 源表中不能有重复的记录

    小结

    本文简单说明了Merge关键的字的使用。如果你使用的是SQL Server 2008之后的版本,在面对一些比如库存结账之类的业务时,放弃IF…ELSE和手写UPDATE,Insert吧,使用Merge关键字可以使这类操作更加轻松愉悦。

    展开全文
  • merge合并

    2018-01-09 20:17:29
    public class SetNetUtil { private static int j; public static void setNet(final List list, final Handler handler) { final List observables=new ArrayList(); for (int i =
    public class SetNetUtil {
        private static int j;
    
        public static void setNet(final List<CartBean.DataBean.ListBean> list, final Handler handler)
        {
    
            final List<Flowable> observables=new ArrayList<>();
            for (int i = 0; i < list.size(); i++) {
    
    
                Log.d("tttt","进入");
                Map<String, String> map = new HashMap<String, String>();
                map.put("uid", "2766");
                map.put("sellerid", list.get(i).getSellerid() + "");
                map.put("pid", list.get(i).getPid() + "");
                map.put("selected", list.get(i).getSelected() + "");
                map.put("num", list.get(i).getNum() + "");
                map.put("source", "android");
                Flowable<String> post = Fengzhuang.post("http://120.27.23.105/product/updateCarts", map);
    
    
                observables.add(post);
            }
    
            Flowable[] observables1 = observables.toArray(new Flowable[observables.size()]);
            Flowable observable = Flowable.mergeArray(observables1);
            // merge = Observable.merge(observables.get(i));
    
    
    
    
    
            observable.subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Consumer() {
                @Override
                public void accept(@NonNull Object o) throws Exception {
    
                    j=j+1;
                    if (j==observables.size())
                    {
                        Log.d("ttt","来了");
                        handler.sendEmptyMessage(2);
                        j=0;
                    }
                        //handler.sendEmptyMessage(2);
    
    
                }
            });
    
    
        }
    
        public static void delNet(final CartBean.DataBean.ListBean list, final Handler handler)
        {
    
        }/*{
            Observable.create(new ObservableOnSubscribe<String>() {
                @Override
                public void subscribe(final ObservableEmitter<String> emitter) throws Exception {
    
                        Map<String, String> map=new HashMap<String, String>();
                        map.put("uid","2785");
                        map.put("pid",list.getPid()+"");
                        map.put("source","android");
                        RetrofitFactory.post("http://120.27.23.105/product/deleteCart",map)
                                .enqueue(new Callback<ResponseBody>() {
                                    @Override
                                    public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                                        try {
                                            emitter.onNext(response.body().string());
    
                                        } catch (IOException e) {
                                            e.printStackTrace();
                                        }
                                    }
    
                                    @Override
                                    public void onFailure(Call<ResponseBody> call, Throwable t) {
    
                                    }
                                });
    
                    emitter.onComplete();
    
                }
            }).subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Observer<String>() {
                @Override
                public void onSubscribe(@NonNull Disposable d) {
    
                }
    
                @Override
                public void onNext(@NonNull String s) {
    
                }
    
                @Override
                public void onError(@NonNull Throwable e) {
    
                }
    
                @Override
                public void onComplete() {
                    handler.sendEmptyMessage(2);
    
                }
            });
        }*/
    }
    展开全文
  • 上一篇文章中讲到了Merge的用法和注意事项,所以本人就想,做了一个Demo进行验证下。 一、Merge的使用 (1)activity中的onCreate方法中的setContentView(R.layout.main2); (2)应用Include或者ViewStub标签从...

    上一篇文章中讲到了Merge的用法和注意事项,所以本人就想,做了一个Demo进行验证下。

    一、Merge的使用

    (1)activity中的onCreate方法中的setContentView(R.layout.main2);

    (2)应用Include或者ViewStub标签从外部导入xml结构时,可以将被导入的xmlmerge作为根节点表示,这样当被嵌入父级结构中后可以很好的将它所包含的子集融合到父级结构中,而不会出现冗余的节点<include layout="@layout/main2"/>

    (3)当需要扩充的xml layout本身是由merge作为根节点的话,需要将被导入的xml layout置于 viewGroup中,同时需要设置attachToRoot为True。

    View view = inflater.inflate(R.layout.main2, container, true);【注意,Fragment的onCreateView方法中不能使用这个方法,因为ViewGroup container为空】

     二、Merge的注意事项

    (1)<merge />只可以作为xml layout的根节点。

    (2)如果你所创建的xml layout并不是用FramLayout作为根节点(而是应用LinerLayout等定义root标签),就不能应用上边的例子通过merge来优化UI结构。【merge的布局效果跟FrameLayout是等同的】

    (3)Merge的父布局最好也是FrameLayout,因为使用Merge优化是指将<merge />内的元素添加到<merge />的父元素里,如果父布局不是FrameLayout,那么merge的元素添加到父布局中后,本来的展现效果就是发生变化——按照父布局的样式进行展现。

    三、验证

    MergeDemo的目录如下图所示:

     

    3.1、最初的布局【activity_main.xml】

    (1)布局文件

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.why.mergedemo.activity.MainActivity" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="activity_main" />
    
    </RelativeLayout>
    activity_main

    (2)activity类

    package com.why.mergedemo.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        
    }
    MainActivity

    (3)HierarchyViewer图(局部)【最左侧的FrameLayout就是指MainActivity的默认布局】

     

    (4)效果图

     

    3.2、用法一:activity中的onCreate方法中的setContentView(R.layout.main2);

    3.2.1、activity_oncreate_linear

    (1)布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitCenter"
            android:src="@drawable/golden_gate" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|bottom"
            android:layout_marginBottom="20dip"
            android:background="#AA000000"
            android:padding="12dip"
            android:text="activity_oncreate_linear"
            android:textColor="#ffffffff" />
    
    </LinearLayout>
    activity_oncreate_linear

    (2)activity类

    package com.why.mergedemo.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_oncreate_linear);
        }
        
    }
    MainActivity

    (3)HierarchyViewer图(局部)【最左侧的FrameLayout就是指MainActivity的默认布局】

    (4)效果图

     

    3.2.2、activity_oncreate_frame

    (1)布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scaleType="fitXY"
            android:src="@drawable/golden_gate" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|bottom"
            android:layout_marginBottom="20dip"
            android:background="#AA000000"
            android:padding="12dip"
            android:text="activity_oncreate_frame"
            android:textColor="#ffffffff" />
    
    </FrameLayout>
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scaleType="fitXY"
            android:src="@drawable/golden_gate" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|bottom"
            android:layout_marginBottom="20dip"
            android:background="#AA000000"
            android:padding="12dip"
            android:text="activity_oncreate_frame"
            android:textColor="#ffffffff" />
    
    </FrameLayout>
    activity_oncreate_frame

    (2)activity类

    package com.why.mergedemo.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_oncreate_frame);
        }
        
    }
    MainActivity

    (3)HierarchyViewer图(局部)【最左侧的FrameLayout就是指MainActivity的默认布局】

    (4)效果图

     

    3.2.3、activity_oncreate_merge

    (1)布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <merge xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <ImageView
            android:id="@+id/goldenIv"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scaleType="fitXY"
            android:src="@drawable/golden_gate" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|bottom"
            android:layout_marginBottom="20dip"
            android:background="#AA000000"
            android:padding="12dip"
            android:text="activity_oncreate_merge"
            android:textColor="#ffffffff" />
    
    </merge>
    activity_oncreate_merge

    (2)activity类

    package com.why.mergedemo.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_oncreate_merge);
        }
        
    }
    MainActivity

    (3)HierarchyViewer图(局部)【最左侧的FrameLayout就是指MainActivity的默认布局】

    (4)效果图

     

    3.3、用法二:应用Include从外部导入xml结构时

    3.3.1、activity_include_frame

    (1)布局文件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.why.mergedemo.activity.MainActivity" >
    
        <TextView
            android:id="@+id/helloId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="activity_include_frame" />
        
        <include 
            android:id="@+id/includeId"
            layout="@layout/include_frame"/>
        
    </LinearLayout>
    activity_include_frame
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:src="@drawable/golden_gate" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|bottom"
            android:layout_marginBottom="20dip"
            android:background="#AA000000"
            android:padding="12dip"
            android:text="include_frame"
            android:textColor="#ffffffff" />
    
    </FrameLayout>
    include_frame

    (2)activity类

    package com.why.mergedemo.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_include_frame);
        }
        
    }
    MainActivity

    (3)HierarchyViewer图(局部)【最左侧的FrameLayout就是指MainActivity的默认布局】

    (4)效果图

     

    3.3.2、activity_include_merge

    (1)布局文件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.why.mergedemo.activity.MainActivity" >
    
        <TextView
            android:id="@+id/helloId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="activity_include_merge" />
        
        <include 
            android:id="@+id/includeId"
            layout="@layout/include_merge"/>
        
    </LinearLayout>
    activity_include_merge
    <?xml version="1.0" encoding="utf-8"?>
    <merge xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:src="@drawable/golden_gate" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|bottom"
            android:layout_marginBottom="20dip"
            android:background="#AA000000"
            android:padding="12dip"
            android:text="include_merge"
            android:textColor="#ffffffff" />
    
    </merge>
    include_merge

    (2)activity类

    package com.why.mergedemo.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_include_merge);
        }
        
    }
    MainActivity

    (3)HierarchyViewer图(局部)【最左侧的FrameLayout就是指MainActivity的默认布局】

    (4)效果图

     

    3.4、用法三:应用inflate从外部导入xml结构时

    3.4.1、activity_inflater_customlayout(framelayout--false)

    (1)布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <TextView
            android:id="@+id/helloId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="activity_inflater_customlayout" />
        
        <com.why.mergedemo.custom.CustomLinearLayout
            android:id="@+id/customLinearLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/helloId"
            android:orientation="vertical">
            
        </com.why.mergedemo.custom.CustomLinearLayout>
    
    </RelativeLayout>
    activity_inflater_customlayout
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:src="@drawable/golden_gate" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|bottom"
            android:layout_marginBottom="20dip"
            android:background="#AA000000"
            android:padding="12dip"
            android:text="include_frame"
            android:textColor="#ffffffff" />
    
    </FrameLayout>
    include_frame

    (2)activity类

    package com.why.mergedemo.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_inflater_customlayout);
        }
        
    }
    MainActivity
    package com.why.mergedemo.custom;
    
    import com.why.mergedemo.activity.R;
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.LinearLayout;
    
    public class CustomLinearLayout extends LinearLayout{
    
        public CustomLinearLayout(Context context, AttributeSet attrs) {
            super(context, attrs);
            initCustonView(context);
        }
        
        /*
         * inflate(int resource, ViewGroup root, boolean attachToRoot)  
         * 1. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。
         * 2. 如果root不为null,attachToRoot设为true,则会在加载的布局文件的最外层再嵌套一层root布局。
         * 3. 如果root不为null,attachToRoot设为false,则root参数失去作用。
         * 4. 在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true。*/
        
        public void initCustonView(Context context){
            //引入R.layout.include_frame, attachToRoot不能等于true【Caused by: java.lang.StackOverflowError】
            //引入R.layout.include_merge, 不能有this.addView(view);
            //View view = LayoutInflater.from(context).inflate(R.layout.include_merge, this, true);
            
            View view = LayoutInflater.from(context).inflate(R.layout.include_frame, this, false);
            this.addView(view);
        }
    
    }
    CustomLinearLayout

    (3)HierarchyViewer图(局部)【最左侧的FrameLayout就是指MainActivity的默认布局】

    (4)效果图

     

    3.4.2、activity_inflater_customlayout(merge--true)

    (1)布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <TextView
            android:id="@+id/helloId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="activity_inflater_customlayout" />
        
        <com.why.mergedemo.custom.CustomLinearLayout
            android:id="@+id/customLinearLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/helloId"
            android:orientation="vertical">
            
        </com.why.mergedemo.custom.CustomLinearLayout>
    
    </RelativeLayout>
    activity_inflater_customlayout
    <?xml version="1.0" encoding="utf-8"?>
    <merge xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:src="@drawable/golden_gate" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|bottom"
            android:layout_marginBottom="20dip"
            android:background="#AA000000"
            android:padding="12dip"
            android:text="include_merge"
            android:textColor="#ffffffff" />
    
    </merge>
    include_merge

    (2)activity类

    package com.why.mergedemo.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_inflater_customlayout);
        }
        
    }
    MainActivity
    package com.why.mergedemo.custom;
    
    import com.why.mergedemo.activity.R;
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.LinearLayout;
    
    public class CustomLinearLayout extends LinearLayout{
    
        public CustomLinearLayout(Context context, AttributeSet attrs) {
            super(context, attrs);
            initCustonView(context);
        }
        
        /*
         * inflate(int resource, ViewGroup root, boolean attachToRoot)  
         * 1. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。
         * 2. 如果root不为null,attachToRoot设为true,则会在加载的布局文件的最外层再嵌套一层root布局。
         * 3. 如果root不为null,attachToRoot设为false,则root参数失去作用。
         * 4. 在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true。*/
        
        public void initCustonView(Context context){
            //引入R.layout.include_frame, attachToRoot不能等于true【Caused by: java.lang.StackOverflowError】
            //引入R.layout.include_merge, 不能有this.addView(view);
            View view = LayoutInflater.from(context).inflate(R.layout.include_merge, this, true);
            
            /*View view = LayoutInflater.from(context).inflate(R.layout.include_frame, this, false);
            this.addView(view);*/
        }
    
    }
    CustomLinearLayout

    (3)HierarchyViewer图(局部)【最左侧的FrameLayout就是指MainActivity的默认布局】

    (4)效果图

     

    展开全文
  • Pandas-连接合并函数merge()

    万次阅读 2020-02-12 12:42:25
    merge函数用途 pandas中的merge()函数类似于SQL中join的用法,可以将不同数据集依照某些字段(属性)进行合并操作,得到一个新的数据集。 merge()函数的具体参数 用法: DataFrame1.merge(DataFrame2, how=...
  • Merge &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;merge就是合并的意思.
  • ORACLE进阶(十一)MERGE INTO学习 前言 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在工作中,查看到类似于如下的SQL语句: MERGE INTO CLMS01.CUSBREACHTAB A USING (SELECT C....
  • 子查询合并Derived_merge

    2019-06-16 07:10:43
    1、Derived_merge简介MySQL Reference manual是这么描述的:The derived_merge flag controls whether the optimizer attempts to merge subqueries and views in the FROM clause into the outer query block, ass.....
  • 只有2M多,个人用过的最好用的merge工具,支持文件夹比较
  • -prune或者git fetch赋值代码到本地git clone git@github.com:wild46cat/test.gitgit rebase 过程git rebase origin master修改内容git add .git rebase --continuegit merge 过程git fetchgit mer...
  • merge用法详解

    千次阅读 2016-10-14 15:30:23
    merge用法详解 1、普通用法: MERGE INTO EMPLOYE AS EM USING (SELECT * FROM MANAGER WHERE MA.SALARY > 2) AS MA ON (EM.EMPLOYEID = MA.MANAGERID) WHEN MATCHED AND EM.SALARY ...
  • Merge into用法总结

    万次阅读 多人点赞 2019-05-27 15:23:56
    简单的说就是,判断表中有没有符合on()条件中的数据,有了就更新数据,没有就插入数据。  有一个表T,有两个字段a、b,我们想在表T中做Insert/Update,如果条件满足,则更新T中b的值,否则在T中插入一条记录。...
  • git merge简介

    万次阅读 2020-04-30 21:20:28
    git merge的基本用法为把一个分支或或某个commit的修改合并到现在的分支上。 我们可以运行git merge -h和git merge --help查看其命令,后者会直接转到一个网页(git的帮助文档),更详细。 usage:gitmerge[options] ...
  • Pandas中DataFrame数据合并、连接(concat、merge、join)

    万次阅读 多人点赞 2020-10-26 14:56:53
    最近在工作中,遇到了数据合并、连接的问题,故整理如下,供需要者参考~一、concat:沿着一条轴,将多个对象堆叠到一起 concat方法相当于数据库中的全连接(union all),它不仅可以指定连接的方式(outer join或...
  • merge 通过键拼接列 pandas提供了一个类似于关系数据库的连接(join)操作的方法merage,可以根据一个或多个键将不同DataFrame中的行连接起来 语法如下: merge(left, right, how='inner', on=No...
  • 记Git报错-refusing to merge unrelated histories

    万次阅读 多人点赞 2019-08-09 22:49:51
    环境 问题 解决 pull 环境 系统:win7 git版本: 2.16.2.windows.1 问题 1、本地初始化了git仓库,放了一些文件进去并进行了add操作和commit提交操作; $git add -A ...3、本地...
  • git merge最简洁用法

    万次阅读 多人点赞 2019-06-28 17:00:16
    一、开发分支(dev)上的代码达到上线的标准后,要合并到 master ...git merge dev git push -u origin master 二、当master代码改动了,需要更新开发分支(dev)上的代码 git checkout master git pull git ch...
  • 【python】详解pandas库的pd.merge函数

    万次阅读 多人点赞 2018-10-03 22:50:06
    pandas.DataFrame.merge pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indi...
  • git无法pull仓库refusing to merge unrelated histories

    万次阅读 多人点赞 2018-08-11 14:56:33
    本文讲的是把git在最新2.9.2,合并pull两个不同的项目,出现的问题如何去解决
  • 解决方案有三种:1,无视,直接commit自己的代码。git commit -m "your msg"2,stash stash翻译为“隐藏”,如下操作:git stash git pull git stash pop然后diff一下文件,看看自动合并的情况,并作出...
1 2 3 4 5 ... 20
收藏数 461,384
精华内容 184,553
关键字:

merge