前一篇我们已经把jar包导入项目,并配置好项目文件。今天我们就把基础框架搭一下,之后所有的Activity类都将继承这些基类。
1、BaseActivity,继承Activity。所有Activity的基类。

package com.mtwy.tracksite.activity;import java.util.List;import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.widget.Toast;
import cn.bmob.im.BmobChatManager;
import cn.bmob.im.BmobUserManager;
import cn.bmob.im.bean.BmobChatUser;
import cn.bmob.im.config.BmobConfig;
import cn.bmob.v3.listener.FindListener;
import cn.bmob.v3.listener.UpdateListener;import com.mtwy.tracksite.activity.bmob.LoginActivity;
import com.mtwy.tracksite.application.MyApplication;
import com.mtwy.tracksite.bean.User;
import com.mtwy.tracksite.dialog.DialogTips;
import com.mtwy.tracksite.util.CollectionUtils;/*** 所有Activty的基类* * @author Administrator* */
public class BaseActivity extends Activity {protected BmobUserManager userManager;protected BmobChatManager manager;protected MyApplication mApplication;protected int mScreenWidth;protected int mScreenHeight;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);// 用户管理类--所有和用户有关的操作均使用此类:// 登陆、退出、获取好友列表、获取当前登陆用户、删除好友、添加好友等userManager = BmobUserManager.getInstance(this);// 聊天管理-用于管理聊天:包括发送(聊天消息、Tag消息)、保存消息、绑定用户等manager = BmobChatManager.getInstance(this);//自定义applicationmApplication = MyApplication.getInstance();//获取屏幕高宽DisplayMetrics metric = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metric);mScreenWidth = metric.widthPixels;mScreenHeight = metric.heightPixels;}Toast mToast;/** 显示Toast */public void ShowToast(final String text) {if (!TextUtils.isEmpty(text)) {runOnUiThread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubif (mToast == null) {mToast = Toast.makeText(getApplicationContext(), text,Toast.LENGTH_LONG);} else {mToast.setText(text);}mToast.show();}});}}/** 显示Toast */public void ShowToast(final int resId) {runOnUiThread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubif (mToast == null) {mToast = Toast.makeText(BaseActivity.this.getApplicationContext(), resId,Toast.LENGTH_LONG);} else {mToast.setText(resId);}mToast.show();}});}/*** 打Log ShowLog* * @return void* @throws*/public void ShowLog(String msg) {Log.i("life", msg);}public void startAnimActivity(Class<?> cla) {this.startActivity(new Intent(this, cla));}public void startAnimActivity(Intent intent) {this.startActivity(intent);}/*** 显示下线的对话框 showOfflineDialog* * @return void* @throws*/public void showOfflineDialog(final Context context) {DialogTips dialog = new DialogTips(this, "您的账号已在其他设备上登录!", "重新登录");// 设置成功事件dialog.SetOnSuccessListener(new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialogInterface, int userId) {MyApplication.getInstance().logout();startActivity(new Intent(context, LoginActivity.class));finish();dialogInterface.dismiss();}});// 显示确认对话框dialog.show();dialog = null;}/*** 用于登陆或者自动登陆情况下的用户资料及好友资料的检测更新* * @Title: updateUserInfos* @Description: TODO* @param* @return void* @throws*/public void updateUserInfos() {// 更新地理位置信息updateUserLocation();// 查询该用户的好友列表(这个好友列表是去除黑名单用户的哦),目前支持的查询好友个数为100,如需修改请在调用这个方法前设置BmobConfig.LIMIT_CONTACTS即可。// 这里默认采取的是登陆成功之后即将好于列表存储到数据库中,并更新到当前内存中,userManager.queryCurrentContactList(new FindListener<BmobChatUser>() {@Overridepublic void onError(int arg0, String arg1) {// TODO Auto-generated method stubif (arg0 == BmobConfig.CODE_COMMON_NONE) {ShowLog(arg1);} else {ShowLog("查询好友列表失败:" + arg1);}}@Overridepublic void onSuccess(List<BmobChatUser> arg0) {// TODO Auto-generated method stub// 保存到application中方便比较MyApplication.getInstance().setContactList(CollectionUtils.list2map(arg0));}});}/*** 更新用户的经纬度信息* * @Title: uploadLocation* @Description: TODO* @param* @return void* @throws*/public void updateUserLocation() {if (MyApplication.lastPoint != null) {String saveLatitude = mApplication.getLatitude();String saveLongtitude = mApplication.getLongtitude();String newLat = String.valueOf(MyApplication.lastPoint.getLatitude());String newLong = String.valueOf(MyApplication.lastPoint.getLongitude());// ShowLog("saveLatitude ="+saveLatitude+",saveLongtitude = "+saveLongtitude);// ShowLog("newLat ="+newLat+",newLong = "+newLong);if (!saveLatitude.equals(newLat) || !saveLongtitude.equals(newLong)) {// 只有位置有变化就更新当前位置,达到实时更新的目的//获取当前登录的用户User u = (User) userManager.getCurrentUser(User.class);final User user = new User();user.setLocation(MyApplication.lastPoint);user.setObjectId(u.getObjectId());//更新用户信息user.update(this, new UpdateListener() {@Overridepublic void onSuccess() {// TODO Auto-generated method stubMyApplication.getInstance().setLatitude(String.valueOf(user.getLocation().getLatitude()));MyApplication.getInstance().setLongtitude(String.valueOf(user.getLocation().getLongitude()));// ShowLog("经纬度更新成功");}@Overridepublic void onFailure(int code, String msg) {// TODO Auto-generated method stub// ShowLog("经纬度更新 失败:"+msg);}});} else {// ShowLog("用户位置未发生过变化");}}}
}

2、BaseBarActivity,继承BaseActivity。所有带标题栏的基类。

package com.mtwy.tracksite.activity;import android.app.Activity;
import android.content.Intent;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;import com.mtwy.tracksite.myview.HeaderLayout;
import com.mtwy.tracksite.myview.HeaderLayout.HeaderStyle;
import com.mtwy.tracksite.myview.HeaderLayout.OnDriveImageButtonClickListener;
import com.mtwy.tracksite.myview.HeaderLayout.OnTransitImageButtonClickListener;
import com.mtwy.tracksite.myview.HeaderLayout.OnWalkImageButtonClickListener;
import com.mtwy.tracksite.myview.HeaderLayout.onLeftImageButtonClickListener;
import com.mtwy.tracksite.myview.HeaderLayout.onRightImageButtonClickListener;public class BaseBarActivity extends BaseActivity {protected HeaderLayout mHeaderLayout;/*** 只有title initTopBarLayoutByTitle* * @Title: initTopBarLayoutByTitle* @throws*/public void initTopBarForOnlyTitle(String titleName) {mHeaderLayout = (HeaderLayout) findViewById(R.id.common_actionbar);mHeaderLayout.init(HeaderStyle.DEFAULT_TITLE);mHeaderLayout.setDefaultTitle(titleName);}/*** 只有标题和右侧按钮* * @param titleName* @param rightDrawableId* @param listener*/public void initTopBarForRight(String titleName, int rightDrawableId,onRightImageButtonClickListener listener) {mHeaderLayout = (HeaderLayout) findViewById(R.id.common_actionbar);mHeaderLayout.init(HeaderStyle.TITLE_RIGHT_IMAGEBUTTON);// mHeaderLayout.setTitleAndLeftImageButton(titleName,// R.drawable.base_action_bar_back_bg_selector,// new OnLeftButtonClickListener());mHeaderLayout.setTitleAndRightImageButton(titleName, rightDrawableId,listener);}/*** 初始化标题栏-带左右按钮* * @return void* @throws*/public void initTopBarForBoth(String titleName, int rightDrawableId,String text, onRightImageButtonClickListener listener) {mHeaderLayout = (HeaderLayout) findViewById(R.id.common_actionbar);mHeaderLayout.init(HeaderStyle.TITLE_DOUBLE_IMAGEBUTTON);mHeaderLayout.setTitleAndLeftImageButton(titleName,R.drawable.base_action_bar_back_bg_selector,new OnLeftButtonClickListener());mHeaderLayout.setTitleAndRightButton(titleName, rightDrawableId, text,listener);}public void initTopBarForBoth(String titleName, int rightDrawableId,onRightImageButtonClickListener listener) {mHeaderLayout = (HeaderLayout) findViewById(R.id.common_actionbar);mHeaderLayout.init(HeaderStyle.TITLE_DOUBLE_IMAGEBUTTON);mHeaderLayout.setTitleAndLeftImageButton(titleName,R.drawable.base_action_bar_back_bg_selector,new OnLeftButtonClickListener());mHeaderLayout.setTitleAndRightImageButton(titleName, rightDrawableId,listener);}public void initTopBarForRoute(onRightImageButtonClickListener listener,OnTransitImageButtonClickListener tListener,OnDriveImageButtonClickListener dListener,OnWalkImageButtonClickListener wListener) {mHeaderLayout = (HeaderLayout) findViewById(R.id.common_actionbar);mHeaderLayout.init(HeaderStyle.TITLE_MAP_ROUTE_PLAN);// 左侧按钮mHeaderLayout.setTitleAndLeftImageButton("",R.drawable.base_action_bar_back_bg_selector,new OnLeftButtonClickListener());// 右侧按钮mHeaderLayout.setTitleAndRightImageButton("",R.drawable.base_action_bar_search_bg_selector, listener);mHeaderLayout.setOnTransitImageButtonClickListener(tListener);mHeaderLayout.setOnDriveImageButtonClickListener(dListener);mHeaderLayout.setOnWalkImageButtonClickListener(wListener);}/*** 只有左边按钮和Title initTopBarLayout* @param titleName*/public void initTopBarForLeft(String titleName) {mHeaderLayout = (HeaderLayout) findViewById(R.id.common_actionbar);mHeaderLayout.init(HeaderStyle.TITLE_LIFT_IMAGEBUTTON);mHeaderLayout.setTitleAndLeftImageButton(titleName,R.drawable.base_action_bar_back_bg_selector,new OnLeftButtonClickListener());}// 左边按钮的点击事件public class OnLeftButtonClickListener implementsonLeftImageButtonClickListener {@Overridepublic void onClick() {finish();}}/** 跳转Activity */public void startAnimActivity(Class<?> cla) {this.startActivity(new Intent(this, cla));}/** 跳转Activity */public void startAnimActivity(Intent intent) {this.startActivity(intent);}/*** 隐藏软键盘 hideSoftInputView* * @Title: hideSoftInputView* @Description: TODO* @param* @return void* @throws*/public void hideSoftInputView() {InputMethodManager manager = ((InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE));if (getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) {if (getCurrentFocus() != null)manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);}}}

在BaseBarActivity类中用到了一个自定义标题栏布局,代码如下

package com.mtwy.tracksite.myview;import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;import com.mtwy.tracksite.activity.R;
import com.mtwy.tracksite.util.PixelUtil;/*** 自定义头部布局* * @ClassName: HeaderLayout* @Description: TODO* @author smile* @date 2014-5-19 下午2:30:30*/
@SuppressLint("InflateParams")
public class HeaderLayout extends LinearLayout {private LayoutInflater mInflater;private View mHeader;private LinearLayout mLayoutLeftContainer;private LinearLayout mLayoutRightContainer;private TextView mHtvSubTitle;private LinearLayout mLayoutRightImageButtonLayout;private Button mRightImageButton;private onRightImageButtonClickListener mRightImageButtonClickListener;private LinearLayout mLayoutLeftImageButtonLayout;private ImageButton mLeftImageButton;private onLeftImageButtonClickListener mLeftImageButtonClickListener;private LinearLayout mLayoutMiddleContainer;private OnTransitImageButtonClickListener mOnTransitImageButtonClickListener;private OnDriveImageButtonClickListener mOnDriveImageButtonClickListener;private OnWalkImageButtonClickListener mOnWalkImageButtonClickListener;private ImageButton mTransitImageButton, mDriverImageButton,mWalkImageButton;public enum HeaderStyle {// 头部整体样式TITLE_MAP_ROUTE_PLAN, // 地图路线头部样式DEFAULT_TITLE, TITLE_LIFT_IMAGEBUTTON, TITLE_RIGHT_IMAGEBUTTON, TITLE_DOUBLE_IMAGEBUTTON;}public HeaderLayout(Context context) {super(context);init(context);}public HeaderLayout(Context context, AttributeSet attrs) {super(context, attrs);init(context);}/**初始化*/public void init(Context context) {mInflater = LayoutInflater.from(context);mHeader = mInflater.inflate(R.layout.common_header, null);addView(mHeader);initViews();}public void initViews() {mLayoutLeftContainer = (LinearLayout) findViewByHeaderId(R.id.header_layout_leftview_container);mLayoutMiddleContainer = (LinearLayout) findViewByHeaderId(R.id.header_layout_middleview_container);// 中间部分添加搜索或者其他按钮时可打开mLayoutRightContainer = (LinearLayout) findViewByHeaderId(R.id.header_layout_rightview_container);mHtvSubTitle = (TextView) findViewByHeaderId(R.id.header_htv_subtitle);}public View findViewByHeaderId(int id) {return mHeader.findViewById(id);}public void init(HeaderStyle hStyle) {switch (hStyle) {case DEFAULT_TITLE:defaultTitle();break;case TITLE_LIFT_IMAGEBUTTON:defaultTitle();titleLeftImageButton();break;case TITLE_RIGHT_IMAGEBUTTON:defaultTitle();titleRightImageButton();break;case TITLE_DOUBLE_IMAGEBUTTON:defaultTitle();titleLeftImageButton();titleRightImageButton();break;case TITLE_MAP_ROUTE_PLAN:defaultTitle();titleLeftImageButton();titleMiddleImageButton();titleRightImageButton();break;}}/**设置中间布局内容*/private void titleMiddleImageButton() {View mMiddleImageButtonView = mInflater.inflate(R.layout.common_header_middle, null);mLayoutMiddleContainer.addView(mMiddleImageButtonView);mTransitImageButton = (ImageButton) mMiddleImageButtonView.findViewById(R.id.header_middle_transitimagebutton);mDriverImageButton = (ImageButton) mMiddleImageButtonView.findViewById(R.id.header_middle_driverimagebutton);mWalkImageButton = (ImageButton) mMiddleImageButtonView.findViewById(R.id.header_middle_walkimagebutton);mTransitImageButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {if(mOnTransitImageButtonClickListener != null){mOnTransitImageButtonClickListener.onClick();}}});mDriverImageButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {if(mOnDriveImageButtonClickListener != null){mOnDriveImageButtonClickListener.onClick();}}});mWalkImageButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {if(mOnWalkImageButtonClickListener != null){mOnWalkImageButtonClickListener.onClick();}}});}// 默认文字标题private void defaultTitle() {mLayoutLeftContainer.removeAllViews();mLayoutRightContainer.removeAllViews();}// 左侧自定义按钮private void titleLeftImageButton() {View mleftImageButtonView = mInflater.inflate(R.layout.common_header_button, null);mLayoutLeftContainer.addView(mleftImageButtonView);mLayoutLeftImageButtonLayout = (LinearLayout) mleftImageButtonView.findViewById(R.id.header_layout_middlelayout);mLeftImageButton = (ImageButton) mleftImageButtonView.findViewById(R.id.header_middle_leftimagebutton);mLayoutLeftImageButtonLayout.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {if (mLeftImageButtonClickListener != null) {mLeftImageButtonClickListener.onClick();}}});}// 右侧自定义按钮private void titleRightImageButton() {View mRightImageButtonView = mInflater.inflate(R.layout.common_header_rightbutton, null);mLayoutRightContainer.addView(mRightImageButtonView);mLayoutRightImageButtonLayout = (LinearLayout) mRightImageButtonView.findViewById(R.id.header_layout_middlelayout);mRightImageButton = (Button) mRightImageButtonView.findViewById(R.id.header_middle_leftimagebutton);mLayoutRightImageButtonLayout.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {if (mRightImageButtonClickListener != null) {mRightImageButtonClickListener.onClick();}}});}/*** 获取右边按钮* * @Title: getRightImageButton* @Description: TODO* @param @return* @return Button* @throws*/public Button getRightImageButton() {if (mRightImageButton != null) {return mRightImageButton;}return null;}/**设置标题*/public void setDefaultTitle(CharSequence title) {if (title != null) {mHtvSubTitle.setText(title);} else {mHtvSubTitle.setVisibility(View.GONE);}}/**设置标题与右侧带文字按钮*/public void setTitleAndRightButton(CharSequence title, int backid,String text,onRightImageButtonClickListener onRightImageButtonClickListener) {setDefaultTitle(title);mLayoutRightContainer.setVisibility(View.VISIBLE);if (mRightImageButton != null && backid > 0) {mRightImageButton.setWidth(PixelUtil.dp2px(45));mRightImageButton.setHeight(PixelUtil.dp2px(40));mRightImageButton.setBackgroundResource(backid);mRightImageButton.setText(text);setOnRightImageButtonClickListener(onRightImageButtonClickListener);}}/**设置标题与右侧图片按钮*/public void setTitleAndRightImageButton(CharSequence title, int backid,onRightImageButtonClickListener onRightImageButtonClickListener) {setDefaultTitle(title);mLayoutRightContainer.setVisibility(View.VISIBLE);if (mRightImageButton != null && backid > 0) {mRightImageButton.setWidth(PixelUtil.dp2px(30));mRightImageButton.setHeight(PixelUtil.dp2px(30));mRightImageButton.setTextColor(getResources().getColor(R.color.transparent));mRightImageButton.setBackgroundResource(backid);setOnRightImageButtonClickListener(onRightImageButtonClickListener);}}/**设置标题与左侧按钮*/public void setTitleAndLeftImageButton(CharSequence title, int id,onLeftImageButtonClickListener listener) {setDefaultTitle(title);if (mLeftImageButton != null && id > 0) {mLeftImageButton.setImageResource(id);setOnLeftImageButtonClickListener(listener);}mLayoutRightContainer.setVisibility(View.INVISIBLE);}/**设置地图路线按钮*/public void setRouteImageButton(){setDefaultTitle(null);if (mTransitImageButton != null) {mRightImageButton.setBackgroundResource(R.drawable.button_transit);}if (mDriverImageButton != null) {mDriverImageButton.setBackgroundResource(R.drawable.button_driver);}if (mWalkImageButton != null) {mWalkImageButton.setBackgroundResource(R.drawable.button_walk);}}/**设置右侧按钮点击事件*/public void setOnRightImageButtonClickListener(onRightImageButtonClickListener listener) {mRightImageButtonClickListener = listener;}/**右侧按钮点击事件接口*/public interface onRightImageButtonClickListener {void onClick();}public void setOnLeftImageButtonClickListener(onLeftImageButtonClickListener listener) {mLeftImageButtonClickListener = listener;}/**左侧按钮点击事件接口*/public interface onLeftImageButtonClickListener {void onClick();}/**公交路线按钮接口*/public interface OnTransitImageButtonClickListener {public void onClick();}/**自驾路线按钮接口*/public interface OnDriveImageButtonClickListener {public void onClick();}/**步行路线按钮接口*/public interface OnWalkImageButtonClickListener {public void onClick();}/**设置公交路线按钮点击事件*/public void setOnTransitImageButtonClickListener(OnTransitImageButtonClickListener onTransitImageButtonClickListener) {mOnTransitImageButtonClickListener = onTransitImageButtonClickListener;}/**设置自驾路线按钮点击事件*/public void setOnDriveImageButtonClickListener(OnDriveImageButtonClickListener onDriveImageButtonClickListener) {mOnDriveImageButtonClickListener = onDriveImageButtonClickListener;}/**设置步行路线按钮点击事件*/public void setOnWalkImageButtonClickListener(OnWalkImageButtonClickListener onWalkImageButtonClickListener) {mOnWalkImageButtonClickListener = onWalkImageButtonClickListener;}
}

布局文件源码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"style="@style/ActionBar"android:baselineAligned="false"android:focusable="true" ><LinearLayout
        android:id="@+id/header_layout_leftview_container"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_alignParentLeft="true"android:gravity="center_vertical|left"android:orientation="horizontal" ></LinearLayout><LinearLayout
        android:id="@+id/header_layout_middleview_container"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:gravity="center"android:orientation="horizontal" ><TextView
            android:id="@+id/header_htv_subtitle"style="@style/ActionBarTitle"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout><LinearLayout
        android:id="@+id/header_layout_rightview_container"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_alignParentRight="true"android:gravity="center_vertical|right"android:orientation="horizontal" ></LinearLayout></RelativeLayout>

今天就到这里,很简单的几个类,但是却是整个项目的基础,接下来继续加油。

千里之行,始于足下(二)-------创建基类相关推荐

  1. delphi开发日志——基窗体,使用面向对象编程的编程思想创建基类

    delphi的VCL就是面向对象的,因此我无论我们是使用她来开发数据库的管理信息系统,还是网络应用,都可以说是面向对象,虽然可能很多人都像我当初一样,不知道什么时面向对象,如何使用面向对象来编程.在这 ...

  2. 快手与欧足联达成版权合作,获本赛季欧冠直播和短视频二创授权

    近日,快手体育与欧足联达成版权合作,成为本赛季(2021/2022赛季)UEFA欧冠联赛官方直播及短视频平台,同时获得欧冠联赛直播以及短视频二创的授权. 据悉,从2月16日起,快手体育将带来本赛季欧冠 ...

  3. 计算机科学与技术专业二本学校排名,二本计算机专业大学哪所最好?最好二本计算机类大学排名如何...

    计算机类的专业在近几年知名度和热度是非常高的,毕竟不管是在行业领域中还是其他行业领域中,计算机应当是最不可或缺的一个物品了,那么二本计算机专业大学哪所最好呢?以及在这里看下关于比较好的二本计算机类大学 ...

  4. 抖音视频二创闷声发财

    周奇(化名)是一名90后大学生,因为爱好动漫,在去年疫情期间申请抖音个人号开始分享自己混剪的动漫作品,两个月时间发布了70多个视频,吸粉数量超过5万.而当他的粉丝量到3万左右时,就已经开始有MCN机构 ...

  5. 快手与NBA达成战略合作 将探索版权内容二创变现新模式

    10 月 18 日,快手与NBA中国在北京举办战略合作发布会,宣布双方从即日起达成多年战略合作伙伴关系,快手将成为NBA中国首个内容二创媒体合作伙伴,以及NBA官方短视频平台.NBA视频内容创作社区. ...

  6. SAP UI5 初学者教程之十二 - 使用 CSS 类对 UI 进行进一步美化试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  7. 零基础做油管搬运二创项目的正确方式,短视频小白玩家套利的可能

    油管搬运项目,不知道大家了不了解,如果你只是简单的搬运其实这种行为很危险的,今天东哥想给大家开辟另一个新思路新法子,就是油管视频二创!感兴趣的接着看下去吧. 什么是二创? 在当前二次创作大行其道的背景 ...

  8. 2021-04-07千里之行始于足下

    千里之行始于足下 自我介绍: 大家好,我叫席凡,是西安工业大学的一名机械专业的研一学生.本科学习的是机械电子工程专业,学习过C语言和汇编语言的课程,但认为只是学习了一些简单的语句,对于我项目实战所需要 ...

  9. 企业财务制度二--(五)损益类科目 5101 主营业务收入(转载)

    企业财务制度二--(五)损益类科目 5101 主营业务收入 5101 主营业务收入 一.本科目核算企业在销售商品.提供劳务及让渡资产使用权等日常活动中所产生的收入. 二.企业应按以下规定确认营业收入实 ...

最新文章

  1. tf.contrib.layers.xavier_initializer
  2. autodesk许可证服务器,Autodesk软件工作流介绍(十)——配置网络许可服务器的步骤...
  3. ​防火墙(一)主机型防火墙
  4. 动态二维数组赋值及for循环遍历和toString遍历
  5. TouchAction实现连续滑动设置手势密码
  6. 加快读博失败的10种方法
  7. 有向加权图 最大弱连通分支_开盘引来大涨,当下股市最大的风险是它?
  8. python之matplotlib详解
  9. Redis面试常问3 如何实现分布式锁 记住Redis的原子性
  10. 交换机端口mtu值最大_交换机 MTU
  11. 基于JAVA+SpringBoot+Mybatis+MYSQL的校园新闻管理系统
  12. 使用ildasm反编译修改c# dll
  13. 程序猿崛起2——互联网时代下的新潮流和新活法
  14. Peeking inside LuaJIT(窥探LuaJIT)
  15. HTML颜色名称和颜色代码表
  16. NPDP第七章:产品生命周期管理
  17. linux基础--认识文件以及vi编辑器
  18. 服务器显示ipv4有两个ip地址,ipconfig命令后为什么出现两个IPV4地址?
  19. CPU位数、操作系统位数和编译器位数关系
  20. 什么是数据中心基础设施管理(DCIM)

热门文章

  1. Word 2016 如何设置黑底白字
  2. 大学生html5设计大赛方案,某企业举办创意设计大赛,大学生小云经过反复酝酿,确定了创意主题和设计方案,并邀请小...
  3. [luogu] P2498 [SDOI2012]拯救小云公主 二分答案+bfs
  4. 计算机怎么换背景图片,电脑开机背景图怎么换_怎么设置开机背景的教程
  5. [小说连载]张小庆,在路上(6)- 真心话和大冒险
  6. MySQL多表查询练习题
  7. 20180402-F · US Tuition Costs · pheatmap 绘制热图 · R 语言数据可视化 案例 源码
  8. 常用二极管,三极管参数
  9. 使用Rational Rose2007,画图书馆管理系统静态图
  10. windows10频繁出现“您的电脑遇到问题,需要重新启动”如何解决