首页 文章 精选 留言 我的

精选列表

搜索[计算机基础],共10000篇文章
优秀的个人博客,低调大师

MySQL必会基础命令

1.1 登陆数据库。 mysql-uroot-poldboy123-S/data/3306/mysql.sock 1.2 查看数据库版本及当前登录用户是什么。 selectversion(); selectuser(); 1.3 创建GBK字符集的数据库oldboy,并查看已建库的完整语句。 createdatabaseoldboycharactersetgbkcollategbk_chinese_ci; showcreatedatabaseoldboy\G 1.4 创建用户oldboy,使之可以管理数据库oldboy。 grantallonoldboy.*to'oldboy'@'localhost'identifiedby'oldboy123'; 1.5 查看创建的用户oldboy拥有哪些权限。 showgrantsforoldboy@localhost\G 1.6 查看当前数据库里有哪些用户。 selectuser,hostfrommysql.user; 1.7 创建管理员帐户admin grantallon*.*to'admin'@'localhost'identifiedby'admin123'withgrantoption; 1.8 进入oldboy数据库 useoldboy; 1.9 创建test表:innodb引擎,字符集为GBK,字段为id int(4)和name varchar(16),查看建表结构及SQL语句。 createtabletest( idint(4), namevarchar(16) )ENGINE=innodbDEFAULTCHARSET=gbk; desctest;#<==等价于命令:showcolumnsfromtest; showcreatetabletest\G 1.10 插入一条数据 1,oldboy insertintotestvalues('1','oldboy'); 1.11 批量插入数据 2,老男孩,3,etiantian。要求中文不能乱码。 insertintotestvalues('2','老男孩'),('3','etiantian'); 1.12 查询插入的所有记录,查询名字为oldboy的记录。查询id大于1的记录。 select*fromtestwherename='oldboy'; select*fromtestwhereid>1; 1.13 把数据id等于1的名字oldboy更改为oldgirl。 updatetestsetname='oldgirl'whereid=1; 1.14 在字段name前插入age字段,类型tinyint(2)。 alter table test add name tinyint(2) after id; 1.15 备份oldboy库及mysql库。 mysqldump -uroot -poldboy123 -S /data/3306/mysql.sock --events -B oldboy mysql >/opt/bak_$(date +%F).sql egrep -v "#|^$|--|\/" /opt/bak_2017-06-06-13时36分37秒.sql 1.16 删除表中的所有数据,并查看。 truncatetabletest;#<==物理删除,一次性清空,不可以rollback deletefromtest;#<==逻辑删除,一行一行的删,比较慢,可以rollback 1.17 删除表test和oldboy数据库并查看 droptabletest; dropdatabaseoldboy; 1.18 Linux命令行恢复以上删除的数据。 mysql-uroot-poldboy123-S/data/3306/mysql.sock</opt/bak_2017-06-07-22时13分20秒.sql 1.19 把GBK字符集修改为UTF8(可选,注意,此题有陷阱)。 1.先导出表中数据 mysqldump-uroot-poldboy123-S/data/3306/mysql.sock-Boldboy>/opt/test.sql egrep-v"^$|--|\/"/opt/test.sql#<==可以看到这一行:ENGINE=MyISAMDEFAULTCHARSET=gbk; 2.修改字符集 sed-i's#CHARSET=gbk#CHARSET=utf8#g'/opt/test.sql egrep-v"^$|--|\/"/opt/test.sql#<==验证:)ENGINE=MyISAMDEFAULTCHARSET=utf8; 3.恢复数据 在sql文件中添加一条setnamesutf8;并恢复 mysql-uroot-poldboy123-S/data/3306/mysql.sockoldboy</opt/test.sql 1.20 MySQL密码丢了,如何找回实战? [root@db01~]#netstat-tunlp|grep3306#<==先查看服务是否正常 tcp000.0.0.0:33060.0.0.0:*LISTEN62358/mysqld [root@db01~]#kill62358#<==kill掉进程的pid [root@db01~]#netstat-tunlp|grep3306#<==mysql进程已关闭 [root@db01~]#mysqld_safe--help#<==利用mysqld_safe命令指定配置文件,跳过授权表来破密码 [root@db01~]#mysqld_safe--defaults-file=/data/3306/my.cnf--skip-grant-tables2>&1>/dev/null& [root@db01~]#mysql-S/data/3306/mysql.sock#<==无密码登录进多实例3306 mysql>selectuser,host,passwordfrommysql.userwhereuser='root'andhost='localhost'; +------+-----------+-------------------------------------------+ |user|host|password| +------+-----------+-------------------------------------------+ |root|localhost|*FE28814B4A8B3309DAC6ED7D3237ADED6DA1E515| +------+-----------+-------------------------------------------+ 1rowinset(0.00sec)#<==先看下mysql库,user表里的字段内容 mysql>updatemysql.usersetpassword=PASSWORD("oldboy123")whereuser='root'andhost='localhost';#<==利用update命令来更新root@localhost用户的密码 mysql>flushprivileges;#<==记得刷新授权表,否则不会立马生效的 QueryOK,0rowsaffected(0.00sec) [root@db01~]#sed-i's#mysql_pwd="oldboy456"#mysql_pwd="oldboy123"#g'/data/3306/mysql [root@db01~]#grepmysql_pwd=/data/3306/mysql#<==修改启动脚本的密码,才能利用命令来停止服务 mysql_pwd="oldboy123" [root@db01~]#/data/3306/mysqlstop#<==先停掉服务,因为有跳过授权表的参数在 StopingMySQL... [1]+Donemysqld_safe--defaults-file=/data/3306/my.cnf--skip-grant-tables2>&1>/dev/null [root@db01~]#/data/3306/mysqlstart#<==启动 StartingMySQL... [root@db01~]#ss-tunlp|grep3306#<==侦听正常 tcpLISTEN0600*:3306*:*users:(("mysqld",66695,12)) [root@db01~]#mysql-uroot-poldboy123-S/data/3306/mysql.sock#<==成功登录 1.21 MySQL内中文数据乱码的原理及如何防止乱码?(可选)。 保证以下的字符集一致即可 mysql>showVARIABLESlike'character_set%'; +--------------------------+--------------+ |Variable_name|Value| +--------------------------+--------------+ |character_set_client|utf8|#<==客户端字符集 |character_set_connection|utf8|#<==客户端连接字符集,配置文件指定或建库表指定 |character_set_database|utf8|#<==数据库的字符集 |character_set_filesystem|binary|#<==文件系统字符集 |character_set_results|utf8|#<==客户端返回结果字符集 |character_set_server|utf8|#<==服务器字符集,配置文件指定或建库表指定 |character_set_system|utf8|#<==Linux系统的字符集 |character_sets_dir|/application/mysql-5.5.49/share/charsets/| +--------------------------+-------------------------------------------+ 8rowsinset(0.01sec) 1.22 在把id列设置为主键,在name字段上创建普通索引。 altertabletestaddprimarykey(id); altertabletestaddindexindex_name(name); 1.23 在字段name后插入手机号字段(shouji),类型char(11)。 altertabletestaddshoujichar(11); 1.24 所有字段上插入2条记录(自行设定数据) insertintotestval-ues('4','18','chen','15298914487'),('5','19','he','15298913929'); 1.25 在手机字段上对前8个字符创建普通索引。 altertabletestaddindexindex_shouji(shouji(8)); 1.26 查看创建的索引及索引类型等信息。 desctest; showcreatetabletest\G showindexfromtest\G 1.27 删除name,shouji列的索引。 altertabletestdropindexindex_name; altertabletestdropindexindex_shouji; 1.28 对name列的前6个字符以及手机列的前8个字符组建联合索引。 altertabletestdropindexindex_shouji; 1.29 查询手机号以152开头的,名字为chen的记录(此记录要提前插入)。 select * from test where name='chen' and shouji like '152%'; 1.30 查询上述语句的执行计划(是否使用联合索引等)。 explain select * from test where name='chen' and shouji like '152%'\G 1.31 把test表的引擎改成MyISAM。 alter table test ENGINE=MYISAM;

优秀的个人博客,低调大师

Android基础知识

Android特性: Application frameworkenabling reuse and replacement of components Dalvik virtual machineoptimized for mobile devices Integrated browserbased on the open sourceWebKitengine Optimized graphicspowered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional) SQLitefor structured data storage Media supportfor common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) GSM Telephony(hardware dependent) Bluetooth, EDGE, 3G, and WiFi(hardware dependent) Camera, GPS, compass, and accelerometer(hardware dependent) Rich development environmentincluding a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE 框架: 应用程序部件: Activity Services Content Providers Broadcast receiver Manifest 文件 整个程序的功能清单,包括包的定义、版本声明,应用程序Activity、ICON、service、intent filter等的声明。 在Eclipse中可以通过Manifest Editor方便编辑(右键打开)。 <?xml version="1.0" encoding="utf-8"?> <manifest . . . > <application . . . > <activity android:name="com.example.project.FreneticActivity" android:icon="@drawable/small_pic.png" android:label="@string/freneticLabel" . . . > </activity> . . . </application> </manifest> Activities and Tasks 一个task就是用户感觉上的"应用程序",task 是一组相互关联的activity集合组成的栈(这些activity可能属于多个应用程序). 栈底就是应用程序启动时显示的第一个activity。栈顶activity就是用户在屏幕上看到的activity。当一个activity启动一个新的activity时,新的activity就会被压入栈中。当用户点击"back " 按钮时,位于栈顶的activity将会被弹出栈。我们举个例子,假设task中有两个activity,分别是 A 和 B,其中A是位于栈顶的activity,用户点击"back"后, A就被弹出栈, B 就成为了新的栈顶activity,然后 activity B 会显示在屏幕上。 通常来讲,task栈中的activity不会被改变排列顺序,只有出栈和入栈操作。 A task is a stack of activities, not a class or an element in the manifest file. So there's no way to set values for a task independently of its activities. Values for the task as a whole are set in the root activity. For example, the next section will talk about the "affinity of a task"; that value is read from the affinity set for the task's root activity. 一个task中的所有activity是作为一个整体来移动的--移到前台后者后台。就个例子,假设当前 task 栈中有ABCD4个activity,A是栈顶activity,也就是在屏幕上显示的activity,用户点击了"home"键,启动了一个新的应用程序,则 ABCD 4个activity都会被移动到后台。过了一会,用户又点击了"home"键,并重新选择了先前的程序,则 ABCD 都被移动到前台,A 仍然作为栈顶activity 被显示在屏幕上,然后用户点击了"back",A被弹出栈,B作为新的栈顶activity被显示在屏幕上。 前面所讲的都是task的默认行为,我们可以通过某些方法改变task 的默认行为。 不同的task里的activity是由affinity来区别的.默认情况下每个task里面的activities都有相同的affinity。但是可以通过<activity> 标签里taskAffinity属性来修改某个activity的affinity,此时需要设置FLAG_ACTIVITY_NEW_TASK标志,并且allowTaskReparenting 属性设置为true。关于这点的文档解释是:As described earlier, a new activity is, by default, launched into the task of the activity that calledstartActivity(). It's pushed onto the same stack as the caller. However, if the Intent object passed tostartActivity()contains theFLAG_ACTIVITY_NEW_TASKflag, the system looks for a different task to house the new activity. Often, as the name of the flag implies, it's a new task. However, it doesn't have to be. If there's already an existing task with the same affinity as the new activity, the activity is launched into that task. If not, it begins a new task. 注意:在使用FLAG_ACTIVITY_NEW_TASK属性(singleTask和singleInstance类似)时,无法回退到调用者。 activity在task中加载方式主要有四种: 1.standard(the default mode):一个intent发过来之后,都会产生一个新的activity来响应这个intent; 2.singleTop:保持stack顶端的那个activity.也就是说,如果一个intent是由stack顶端的activity处理的话,将不会新建一个新的activity来处理,而是由原来的那个activity处理; 3.singleTask:对于这个activity则会新建一个task.也就是说,对于这个activity,会分配一个新的affinity; 4.singleInstance:identical to "singleTask",并保证这个activity唯一. 既然对初始加载的过程有所规定,那么也就很自然地会有结束过程的一些方式: acitivity在退出的时候,必然会影响到task的stack,因此,android对acitivity的行为方式也做了规定. 1.alwaysRetainTaskState属性.保证stack不变.默认状态下,一个task长期不活动的话,会退化到root activity,也就是弹出stack,只保留底部的一个acitivity. 2.clearTaskOnLaunch属性.这个会在acitivity加载的时候清空task的stack. 3.finishOnTaskLaunch属性.某种程度上说这个属性保证了某项task是唯一的.因为当一个同类的task加载的时候,如果此属性为true,那么就会先退出之前的task,然后再加载这个task. 如果FLAG_ACTIVITY_CLEAR_TOP属性为真,则结束activity时,所有处于该activity堆栈之上的activity都会同时清除,FLAG_ACTIVITY_CLEAR_TOP is most often used in conjunction with FLAG_ACTIVITY_NEW_TASK. When used together, these flags are a way of locating an existing activity in another task and putting it in a position where it can respond to the intent. 本文转自feisky博客园博客,原文链接:http://www.cnblogs.com/feisky/archive/2009/12/30/1636377.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android makefile编写基础

首先来看一个简单的Android makefile,这个是我上篇文章写的,重新摘出来: LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := eng LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog LOCAL_SRC_FILES:= \ ppp.c LOCAL_MODULE:= PPPreboot include $(BUILD_EXECUTABLE) #include $(BUILD_SHARED_LIBRARY)下面对上面的语法进行解析: LOCAL_PATH:=$(call my-dir) 定义了当前模块的相对路径 include $(CLEAR_VARS) 清空了当前的环境变量 LOCAL_MODULE_TAGS := eng 指定模块在eng模式下才进行编译 LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog 编译需要的库 LOCAL_SRC_FILES:ppp.c 编译所需要的目标源文件,一般都是当前目录下,或者依赖于其它目录下 LOCAL_MODULE:= PPPreboot 编译生成该目标的名称,也就是最终的可执行文件 include $(BUILD_EXECUTABLE) 编译所生成的目标的文件格式 其中: my-dir在build/core/definitions.mk定义CLEAR_VARS在build/core/config.mk定义 以下就是我之前写的源码,简单的功能。 #include <stdio.h> #include <stdlib.h> #include <android/log.h> #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "keymatch", __VA_ARGS__) int main(void) { int i ; freopen("/dev/ttyMT0", "a", stdout);setbuf(stdout, NULL); freopen("/dev/ttyMT0", "a", stderr);setbuf(stderr, NULL); LOGD("YYX---->reboot system!!!!!!--->201612.1\n"); system("reboot"); return 0 ; } makefile还有源码写完以后我们就可以进行编译了。首先,需要source build/envsetup.sh 初始化参数和环境变量接着lunch 对应的平台的版本接着就拥有了mm、mmm等编译工具然后对刚刚写的程序进行手动编译: mmm external/test/ 编译成功信息如下: PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=6.0 TARGET_PRODUCT=em_t8350_emmc TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a-neon TARGET_CPU_VARIANT=cortex-a7 TARGET_2ND_ARCH= TARGET_2ND_ARCH_VARIANT= TARGET_2ND_CPU_VARIANT= HOST_ARCH=x86_64 HOST_OS=linux HOST_OS_EXTRA=Linux-3.13.0-32-generic-x86_64-with-Ubuntu-14.04-trusty HOST_BUILD_TYPE=release BUILD_ID=MRA58K OUT_DIR=out ============================================ PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/camera_click.ogg:system/media/audio/ui/camera_click.ogg ignored. PRODUCT_COPY_FILES device/pskyed/em_t8350_emmc/init.recovery.mt8127.rc:root/init.recovery.mt8127.rc ignored. PRODUCT_COPY_FILES device/pskyed/em_t8350_emmc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml ignored. make: Entering directory `/mnt/sdb1/yangyx/MT8127_t8350_Debug_Camera_20161121/MT8127_M0_MP8_0407_for_t8350' build/core/Makefile:614: warning: overriding commands for target `out/target/product/em_t8350_emmc/boot.img' build/core/Makefile:39: warning: ignoring old commands for target `out/target/product/em_t8350_emmc/boot.img' No private recovery resources for TARGET_DEVICE em_t8350_emmc Import includes file: out/target/product/em_t8350_emmc/obj/EXECUTABLES/PPPreboot_intermediates/import_includes target thumb C: PPPreboot <= external/test/ppp.c target Executable: PPPreboot (out/target/product/em_t8350_emmc/obj/EXECUTABLES/PPPreboot_intermediates/LINKED/PPPreboot) target Unpacked: PPPreboot (out/target/product/em_t8350_emmc/obj/EXECUTABLES/PPPreboot_intermediates/PACKED/PPPreboot) target Symbolic: PPPreboot (out/target/product/em_t8350_emmc/symbols/system/bin/PPPreboot) Export includes file: external/test/Android.mk -- out/target/product/em_t8350_emmc/obj/EXECUTABLES/PPPreboot_intermediates/export_includes target Strip: PPPreboot (out/target/product/em_t8350_emmc/obj/EXECUTABLES/PPPreboot_intermediates/PPPreboot) Install: out/target/product/em_t8350_emmc/system/bin/PPPreboot make: Leaving directory `/mnt/sdb1/yangyx/MT8127_t8350_Debug_Camera_20161121/MT8127_M0_MP8_0407_for_t8350' #### make completed successfully (2 seconds) #### 输出的文件就在out/target/product/em_t8350_emmc/system/bin/PPPreboot,用什么手段执行它都可以,就看你的需求了。

优秀的个人博客,低调大师

Sqoop基础学习(1)

1. Sqoop的导入过程 在开始导入之前,Sqoop会通过JDBC来获得所需要的数据库元数据 1.导入表的列名、数据类型等; 2.接着这些数据库的数据类型(varchar、number等)会把映射成Java的数据类型(String、int等),根据这些信息,Sqoop会生成一个与表名同名的类用来完成反序列的工作,保持表中的每一行记录; 3.Sqoop启动MapReduce作业 4.启动的作业在input的过程中,会通过JDBC读取数据库表中的内容; 5.这是会使用Sqoop生成的类进行反序列话 6.最后再将这些记录写到HDFS中,在写入HDFS的过程中,同样会使用Sqoop生成的类进行序列化。 2. Sqoop的导出过程 1/2 Sqoop根据目标表的结构会生成一个Java类 3.该类作用为序列化和反序列化 4.接着启动一个MapReduce作业 5.在作业中会生成的Java类从HDFS中读取数据 6.并生成一批INSERT语句,每条语句都会向MySQL的目标表中插入多条记录

优秀的个人博客,低调大师

openstack之网络基础

L1:物理层L2:数据链路层,基于mac地址的通信,通过交换机连接;对等传输,即交换机上的一个主机发一个包,连接在该交换机上的所有机器都能收到;L3:网络层,基于ip地址,路由器设备,连接不同网段,进行路由选择; 交换机/路由器的区别:1、工作层级不同,交换机在L2,路由器在L3;2、数据转发依据对象不同:交换机传输基于mac地址的数据帧,路由器传输基于ip地址的ip数据包;3、解决问题不同:交换机使得同网段互通/路由器使得多网段互通; IP Tableip netns exec router-ns iptables -t nat -nL 混杂模块:1、接收所有经过设备(网卡)的数据包2、一般用于网络抓包;3、Floating IP功能实现查看网卡是否打开混杂模式;root@222-132-16-52:~# ifconfig br0br0 Link encap:Ethernet HWaddr c8:0a:a9:57:70:b0 inet addr:222.132.16.52 Bcast:222.132.16.255 Mask:255.255.255.0 inet6 addr: fe80::ca0a:a9ff:fe57:70b0/64 Scope:Link #UP BROADCAST RUNNING MULTICAST# MTU:1500 Metric:1 RX packets:32138224 errors:0 dropped:0 overruns:0 frame:0 TX packets:21550681 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3797977700 (3.7 GB) TX bytes:4267007875 (4.2 GB)

优秀的个人博客,低调大师

Cairo 1.17.8 发布,计算机 2D 向量图形绘图库

Cairo 1.17.8 版本已发布,Cairo 是一个开源的图形库,为软件开发者提供了一个基于矢量图形、独立于设备的 API。Cairo 支持输出到一些不同的后端,后端支持包括 X11、Apple Quartz、Win32,以及 PNG、PDF、PostScript、DirectFB 和 SVG 等文件格式。 近年来 Cairo 的开发停滞不前,2018 年底推出了 Cairo 1.16 稳定版,然后就没有了消息。接着就是当前最新的Cairo 1.17.8 版本,Cairo 1.17.8 修复了各种错误,改进了对 macOS 和 Windows 的支持,支持渲染 COLRv1 字体,删除了 Autotools 构建系统以专注于 Meson。 此外,该版本还删除了 OpenGL/GLES 支持,因为该后端大约十年没有得到维护。 macOS 和 Windows 的支持改进涉及大量错误修复和构建更改,详情可查看更新公告。 cairo 使用 C 语言撰写的,但使用 cairo 时支持许多其他语言,包括有 C++、C#、Java、Python、Perl、Ruby、Scheme、Smalltalk 以及许多种语言,cairo 在 GPL 与 Mozilla Public License 两个开源许可证下发布。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册