back相关知识
-
Phoenix:Put the SQL back in NoSQL你是否已经冲入了大数据的浩瀚海洋,然后在里面跌宕起伏,遇坑无数?你是否被一堆API,接口,命令,文档而折磨?初入大数据不禁让我们感叹一声,这玩意儿不好搞啊! 今天我就来介绍一个可以让我们十五分钟就能使用分布式列式数据库HBase的工具:Phoenix。这真的不是我标题党,绝非十五分钟从入门到跑路,从跑路到删库。 Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。 注:Hive和Impala也可以对HBase进行查
-
Android Notification一般来讲,点击一个notification后,都会打开一个Activity做为对点击事件的响应,这个Activity是之前在PendingIntent中设置好的。经常玩Android手机的应该都有印象,在日历应用中,你新建一个提醒,当提醒通知收到后,你点击通知,会进入提醒的内容页面,如果这个时候按back键,会直接退出应用。但是在Gmail的应用中,如果有一封新邮件到来,那么点击通知后,会进入到邮件的内容页面,等你看完邮件,点击back键,会退到邮件列表页面,再按back键,才会退出应用。 我们总结一下两种情况,假设我们的应用有两个Activity(ParentActivity、SubActivity),notification中设置打开的Activity为SubActivity。那么第一种情况就是:点击Notification ——>进入SubActivity ——> back键 ——> 退出应用第二种情况:点击Notification ——>进入Su
-
Android Activity状态保存引用资源的两种方式 在java中R.string.app_name 在xml中@string/app_name # 突发情况列举 点击back键 点击锁屏键 点击home键 其他APP进入前台 启动了另一个Activity 屏幕方向旋转 APP被Kill 只有点击back键,onSaveInstanceState方法不会调用。其余的情况下, 该方法一律都会调用,onPause()一定会调用。 onSaveInstanceState何时调用 Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but does
-
php验证码checks.php代码:<?phpsession_start(); //生成验证码图片 Header("Content-type: image/PNG"); $im = imagecreate(44,18); // 画一张指定宽高的图片 $back = ImageColorAllocate($im, 245,245,245); // 定义背景颜色 imagefill($im,0,0,$back); //把背景颜色填充到刚刚画出来的图片中 $vcodes = ""; srand((double)microtime()*1000000)
back相关课程
back相关教程
- 1. 完全恢复 MySQL 中,物理备份的完全恢复相对比较简单,下面来看个案例:实际案例:全量备份恢复恢复数据一致性, 通过回滚未提交的事务及同步已经提交的事务至数据文件,使用得数据文件处于一致性状态。 innobackupex 通常还可以使用 --user-memory 选项来指定其可以使用的内存的大小,如果有足够的内存空间可用,可以多划分一些内存给 prepare 的过程,以提高其完成备份的速度。[root@localhost ~]# innobackupex --apply-log /mysql/dbbackup/200824 06:29:44 innobackupex: Starting the apply-log operationIMPORTANT: Please check that the apply-log run completes successfully. At the end of a successful apply-log run innobackupex prints "completed OK!".innobackupex version 2.4.9 based on MySQL server 5.7.13 Linux (x86_64) (revision id: a467167cdd4)xtrabackup: cd to /mysql/dbbackup/xtrabackup: This target seems to be not prepared yet.InnoDB: Number of pools: 1xtrabackup: xtrabackup_logfile detected: size=8388608, start_lsn=(14533834254)......InnoDB: 5.7.13 started; log sequence number 14533834773xtrabackup: starting shutdown with innodb_fast_shutdown = 1InnoDB: FTS optimize thread exiting.InnoDB: Starting shutdown...InnoDB: Shutdown completed; log sequence number 14533834792200824 06:30:35 completed OK!恢复备份文件至数据目录:[root@localhost ~]# service mysqld stopShutting down MySQL.... SUCCESS![root@localhost ~]# mv /mysql/data/ /mysql/data_bak[root@localhost ~]# mkdir /mysql/data[root@localhost ~]# innobackupex --default-file=/etc/my.cnf --copy-back --rsync /mysql/dbbackup/200824 06:44:20 innobackupex: Starting the copy-back operationIMPORTANT: Please check that the copy-back run completes successfully. At the end of a successful copy-back run innobackupex prints "completed OK!".innobackupex version 2.4.9 based on MySQL server 5.7.13 Linux (x86_64) (revision id: a467167cdd4)200824 06:44:20 [01] Copying ib_logfile0 to /mysql/data/ib_logfile0200824 06:44:28 [01] ...done......200824 06:44:59 [01] Creating directory /mysql/data/2020-09-01_06-42-14200824 06:44:59 [01] ...done.200901 06:44:59 completed OK![root@localhost ~]# chown -R mysql:mysql /mysql/data[root@localhost ~]# service mysqld startStarting MySQL.. SUCCESS! 恢复后检查数据一致性:mysql> use tempdbDatabase changedmysql> select * from customer;+----+-----------+------------+------------+--------+---------+| id | last_name | first_name | birth_date | gender | balance |+----+-----------+------------+------------+--------+---------+| 1 | 111 | 111 | NULL | 1 | 10 || 2 | 222 | 222 | 2020-07-15 | 1 | 20 |+----+-----------+------------+------------+--------+---------+2 rows in set (0.01 sec)
- 3.3 页面返回 当调用 API uni.navigateBack、使用组件 <navigator open-type="navigateBack"/> 或者点击浏览器左上角的返回按钮,还有点击安卓物理back按键,都会进行页面返回,返回到上一级页面。进行这些操作时,页面会不断的出栈,直至回到第一个页面,也就是存放在页面栈中最下面的页面。从 page2 页面中返回到 page1 页面,页面栈是下面这样的形式:
- 5.5 英雄列表展示 最后就是一个英雄列表的 Activity,里面放置一个 listView用于展示所有的英雄数据:package com.emercy.myapplication;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.SimpleAdapter;import java.util.ArrayList;import java.util.HashMap;import static com.emercy.myapplication.DbHelper.KEY_DESG;import static com.emercy.myapplication.DbHelper.KEY_NAME;import static com.emercy.myapplication.DbHelper.KEY_POS;public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); DbHelper db = new DbHelper(this); ArrayList<HashMap<String, String>> userList = db.GetUsers(); ListView lv = (ListView) findViewById(R.id.user_list); ListAdapter adapter = new SimpleAdapter(SecondActivity.this, userList, R.layout.list, new String[]{KEY_NAME, KEY_DESG, KEY_POS}, new int[]{R.id.name, R.id.designation, R.id.location}); lv.setAdapter(adapter); Button back = (Button) findViewById(R.id.btnBack); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); }}通过DbHelper提供的检索接口,拿到每一行的数据绑定到 ListView 上即可。编译运行,完成登陆之后便会跳转到英雄列表,此时列表中展示的是预置的数据以及我们刚刚登记的数据,如下图:最后记得在 AndroidManifest.xml 中添加 SecondActivity 的注册。 <activity android:name=".SecondActivity" />
- 2. AlertDialog 的常用 API AlertDialog 在使用中主要以 API 为主,常用方法如下:setIcon(Drawable icon):设置Alert Dialog窗口的iconsetCancelable(boolean cancel able):设置是否支持取消(取消通常是指点窗口外或者点“Back”)setTitle(CharSequence title):设置对话框上的标题setMessage(CharSequence message):设置对话框上的提示信息setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener):在对话框上添加多选列表,参数描述:items:多选项文本数组checkedItems:默认状态,true表示默认选中;false默认取消listener:用户选择监听器setOnCancelListener(DialogInterface.OnCancelListener onCancelListener):设置关闭监听器,在用户关闭的时候回调此接口setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener):设置确定监听器,在用户点击确定的时候回调此接口setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener):设置取消监听器,在用户选择“取消”、“否定”等时候毁掉此接口
- 3. Activity 示例 关于 Activity 的使用其实从本教程的最开始就一直在用,我们通常都是将核心逻辑放在了onCreate()之中,比如setContentView设置布局样式,findViewById()获取布局中的控件实例,绑定监听器等等,所以 Activity 的用法相信大家并不陌生,这里主要是希望大家对除了 onCreate()方法之外的其他生命周期时机有所了解。我们将在 7 个生命周期中加入 Log 日志,观察一下各个生命周期的回调时机,编写 Activity 代码如下:package com.emercy.myapplication;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class MainActivity extends Activity { String TAG = "Android Lifecycle"; // 第一个被调用的方法,当 Activity 被创建时调用 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(TAG, "The onCreate() event"); } // Activity 可见 @Override protected void onStart() { super.onStart(); Log.d(TAG, "The onStart() event"); } // Activity 获取焦点,可交互 @Override protected void onResume() { super.onResume(); Log.d(TAG, "The onResume() event"); } // Activity 失焦 @Override protected void onPause() { super.onPause(); Log.d(TAG, "The onPause() event"); } // Activity 停止,不可见 @Override protected void onStop() { super.onStop(); Log.d(TAG, "The onStop() event"); } // Activity 销毁 @Override public void onDestroy() { super.onDestroy(); Log.d(TAG, "The onDestroy() event"); } @Override protected void onRestart() { super.onRestart(); Log.d(TAG, "The onRestart() event"); }}编译运行,系统自动启动 MainActivity,此时观察 Logcat 输出:接着点击“Home”退出 Activity,然后切换回来,观察 Logcat 如下:最后点击 back 退出 App,再次观察 Logcat:通过 Logcat 可以观察到生命周期的跳转符合预期。
- 2.1 json() 方法 带着这两个问题我们来看看 requests 库的源码,可以看到 requests 模块的源码非常少,比较适合阅读。首先看第一个问题,就是要分析下 Response 结果的 json() 方法即可,比较容易找到:# 源码位置:requests/models.py# ...class Response(object): # ... def json(self, **kwargs): r"""Returns the json-encoded content of a response, if any. :param \*\*kwargs: Optional arguments that ``json.loads`` takes. :raises ValueError: If the response body does not contain valid json. """ if not self.encoding and self.content and len(self.content) > 3: # No encoding set. JSON RFC 4627 section 3 states we should expect # UTF-8, -16 or -32. Detect which one to use; If the detection or # decoding fails, fall back to `self.text` (using chardet to make # a best guess). encoding = guess_json_utf(self.content) if encoding is not None: try: return complexjson.loads( self.content.decode(encoding), **kwargs ) except UnicodeDecodeError: # Wrong UTF codec detected; usually because it's not UTF-8 # but some other 8-bit codec. This is an RFC violation, # and the server didn't bother to tell us what codec *was* # used. pass return complexjson.loads(self.text, **kwargs) # ...上面的 json() 方法中最核心的只有一句:complexjson.loads(self.content.decode(encoding), **kwargs)而这句和我们前面的得到响应内容,然后使用 json.loads() 是一样的,不过这里使用的是 complexjson。继续看看这个 complexjson 的定义:# 源码位置:requests/models.pyfrom .compat import json as complexjson# 源码位置:requests/compact.pytry: import simplejson as jsonexcept ImportError: import json可以看到,这个 complexjson 其实就是 Python 的第三方 json 模块或者是 Python 的内置 json 模块。因此,对于第一个问题就是显而易见了,使用 r.json() 和我们用 json.loads(r.text) 得到的结果基本是一致的。
back相关搜索
-
back
backbone
background
background attachment
background color
background image
background position
background repeat
backgroundcolor
backgroundimage
background属性
badge
bash
basics
basis
bat
bdo
bean
before
begintransaction