无需言 做自己 业 ,精于勤 荒于嬉.
- 磁盘管理 dirs 显示目录记录
-
发表日期:2019-01-05 22:41:34 | 来源: | 分类:磁盘管理
-
功能说明:显示目录记录。
语 法:dirs [+/-n -l]
补充说明:显示目录堆叠中的记录。
参 数:
+n 显示从左边算起第n笔的目录。
-n 显示从右边算起第n笔的目录。
-l 显示目录完整的记录。
常用扩展
dirs -l 当前所在目录的完整路径
- Linux实战应用 IP地址配置 Linux网络配置方式4种
-
发表日期:2019-01-05 17:05:44 | 来源: | 分类:Linux实战应用
-
IP地址配置
Linux网络配置方式4种:
1.ifconfig命令临时配置IP地址,重启或关机之后IP地址会失效。
2.setup工具永久配置IP地址,但是只限于redhat系列的Linux系统。
3.修改网络配置文件,适用于各种版本各种系列的Linux系统,但是文件内容比较多。
4.图形界面配置,如同windows系统配置,(NO 服务器)
loopback 127.0.0.0
eth0 第一块网卡
方式一、ifconfig配置:查看和配置网络状态命令;
1.lo网卡是本地回环网卡,不插网卡一样可以ping通。
2.对我们有用的是eth0网卡,我们需要配置的就是eth0网卡
命令格式:ifconfig eth0 IP地址 netmask 子网掩码
如:ifconfig eth0 192.168.254.200 netmask 255.255.255.0
方式二、setup工具配置:(远程工具连接Linux的时候可能出现乱码,但是在本机中不会出现,因为Linux采用中文安装,就可能会出现这种情况,可以安装中文插件如zhcon)
命令行中输入setup
在使用setup配置完毕之后,必须要在命令行中输入:network restart service(作用:重启网络,使其生效)。
方式三、修改配置文件方式:
vi /etc/sysconfig/network-scripts/ipcfg-eth0//网卡信息
vi /etc/sysconfig/network//主机名文件
hostname imooc//更改主机名
hostname//查看主机名,重登录生效
vi /etc/resolv.conf//dns信息
redhat6以上的 版本,ONBOOT默认为no,不随着网络服务的启动,网卡生效。所以配完ip后,可能还是看不到eth0
网卡信息,就需要在网卡信息文件中手动更改为yes
1、如果看不到这个eth0只能看到lo的解决方法:
手动修改这个文件进行开启这个网卡使用以下命令:
vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes
注意:等号左边的字母是大定右边是小写
2、修改完之后如何退出vi的文档编辑模式?
a)改完后按ESC键,再输入冒号x——:x保存退出
b)改完后按ESC键,再输入两个大写字母 ZZ 保存退出
3、退出之后一定要重启网络才能生效 使用命令:
service network restart
UUID:装完一台计算机后,如果copy配置文件复制计算机镜像安装其他计算机,这个UUID就是相同的,造成这些计算机都不能上网,必须手动更改为不一致
主机名文件: vim /etc/sysconfig/network
主机名在linux中不像在windows中那么重要:windows要求在局域网内不能有同名的主机
默认主机名都是localhost.localdomain
但是可以更改之后便于区分 需要重启计算机后生效
hostname <主机名>临时修改,重启失效
查看当前主机名的命令:hostname
NETWORKING=yes ---> 不能为no,若为no则网络会不起作用
HOSTNAME=localhost.lcaldomain ---> 主机名,windows中局域网内主机名不能重复,但是linux可以重复。不过,建议改为更好辨认的名称。
DNS文件名: /etc/resolv.conf
nameserver 名称服务器,也就是DNS
让本机与虚拟机通信
(1)配置LInuxIP地址
setup
修改并配置IP地址
(2)启动网卡
vi /etc/sysconfig/network-scripts/ifcfg-eth0
把 ONBOOT = no 改为 yes
(3)重启网络服务
service network restart
(4)修改UUID
1删除MAC地址行
vi /etc/sysconfig/network-scripts/ifcfg-eth0
2删除网卡和MAC地址绑定文件
rm -rf /etc/udev/rules.d/70-persistent-net.rules
3重启动系统
4设置虚拟机网络连接方式
5修改桥接网卡
桥接: 虚拟机和真实机利用真实的网卡进行通信 一般用来做实验可以访问局域网内的其他计算机,公网也可以
优点:配置简单,只需要两个IP在同一个网段即可
缺点:需要占用一个IP
NAT:通信使用VMnet8
虚拟机可以利用真实机的网卡上网,不能访问局域网的其他计算机,但是能够访问公网
- MYSQL 查询下一个自增id
-
发表日期:2018-07-18 23:18:41 | 来源: | 分类:MYSQL
-
$sql = "SELECT AUTO_INCREMENT AS next_id FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME= 'user'";
$d = $model->query($sql); print_r($d['next_id']);
- Linux实战应用 设置服务器静态IP
-
发表日期:2018-07-02 15:11:18 | 来源: | 分类:Linux实战应用
-
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
ONBOOT=yes
#BOOTPROTO=dhcp 关闭自动获取ip
BOOTPROTO=static 设置为静态ip地址
IPADDR=192.168.1.150 设置ip
NETMASK=255.255.255.0
NM_CONTROLLED=no
systemctl restart network.service 重启网络配置
------------------- 关于允许防火墙通过ssh,22端口-----------------
ip addr
firewall-cmd --zone=public --add-port=22/tcp --permanen //允许防火墙22端口
systemctl restart firewalld.service 重启防火墙
设置==》网卡==》桥架网卡==》确定
重启
- 磁盘管理 df(disk free) 显示磁盘的相关信息
-
发表日期:2018-03-02 11:23:48 | 来源: | 分类:磁盘管理
-
功能说明:显示磁盘的相关信息。
语 法:df [-ahHiklmPT][--block-size=<区块大小>][-t <文件系统类型>][-x <文件系统类型>][--help][--no-sync][--sync][--version][文件或设备]
补充说明:df可显示磁盘的文件系统与使用情形。
参 数:
-a或--all 包含全部的文件系统。
--block-size=<区块大小> 以指定的区块大小来显示区块数目。
-h或--human-readable 以可读性较高的方式来显示信息。
-H或--si 与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes。
-i或--inodes 显示inode的信息。
-k或--kilobytes 指定区块大小为1024字节。
-l或--local 仅显示本地端的文件系统。(默认)
-m或--megabytes 指定区块大小为1048576字节。
--no-sync 在取得磁盘使用信息前,不要执行sync指令,此为预设值。
-P或--portability 使用POSIX的输出格式。
--sync 在取得磁盘使用信息前,先执行sync指令。
-t<文件系统类型>或--type=<文件系统类型> 仅显示指定文件系统类型的磁盘信息。
-T或--print-type 显示文件系统的类型。
-x<文件系统类型>或--exclude-type=<文件系统类型> 不要显示指定文件系统类型的磁盘信息。
--help 显示帮助。
--version 显示版本信息。
[文件或设备] 指定磁盘设备。
常用扩展
df -hT 详细列出磁盘的文件系统使用情况
- 集速公告 关于集速网
-
发表日期:2018-03-02 11:23:07 | 来源: | 分类:集速公告
-
集速网起源
2013年2月 注册了 canquick.com ,当时注册这个域名一是因为喜欢这个名字,二是因为之前开发了一个PHP轻框架,取名就叫做CanQuick,也用在了两个线上项目里。当时本以为会用这个域名做该框架的官网,后来没有那么做,再后来我觉得这个PHP框架有很多不足我也不是搞框架的厂商没时间长期维护,加上工作性质就不可能大量时间研究,因此决定暂时不用也不继续更新该框架,当然我不会放弃这个PHP框架,并且现在也有了更好的思路。只是无限期延后推出一个颠覆性的新版本。
2014年11月决定工作之余开发一个人博客,偶尔写写日记或是技术笔记。2014年11月15日夜,开发大体完成。“杨耀东的博客 www.canquick.com”,一直没有提交搜索引擎,因为没有这个必要,只有自己用而已,其实更多的是一个极度个人的私密日记本,每个人都有自己的心事,没有人可以倾诉,总要有个属于自己的地方去说点心里话。(当然有这个功能,未登录不显示)
----------2018-3-2 补充文章------------
备案域名时,不知网站该起什么名字好,根据canquick字意:可以快速/轻巧;音译:侃快客,想来想去字意好记,音译比较有创意。最后决定用字意,(可以快速/轻巧)开始有考虑过极速网,后和同事小悦悦聊,给个建议:集速网,我觉得比较好,于是就这样决定。
---------------------------------------
很久以来没有更新内容和登录了,但是域名和服务器始终在续费没有停。一直沉浸在不断的工作和学习中,很难有时间去整理自己领会的知识。
---------------------------------------
随着职业发展,我逐步开始寻求领域的突破,现在特别想把自己会的东西整理一下。后续会抽空开始做。
---------------------------------------
去年自己的服务器到期了,所以迁移了服务器,顺便把这个站重写了一下。前台界面沿用了,后台代码重写了一下,有时候想把站做大气点,好看点,也写过一个比较棒的门户,但是也懒得弄了,因为没有那么多内容,也没人维护而且个人的也不是商业的,目前的想法核心还是博客粘贴一下以前的技术笔记。当然这些都不是重点,重点是后台比前台强多了,写一些验证性的功能。这几天着实无聊,想着上来粘了几十篇以前写的笔记,反正是很多了懒得整理。还有很多有意思的功能不适合粘代码。看吧,等我有空了整理分项把图片云,建站系统,邮件平台,项目管理系统,聊天系统,低代码平台,api接口平台等整理产品化建子站或开源了。写过太多有意思的东西了还是得发挥价值才对。这两天整理了电脑上数十个自己曾经写的项目,好在都还能跑起来。
2022.8.6补充
---------------------------------------
- 磁盘管理 cd(change directory) 切换目录
-
发表日期:2018-03-02 11:12:18 | 来源: | 分类:磁盘管理
-
cd(change directory)
功能说明:切换目录。
语 法:cd [目的目录]
补充说明:cd指令可让用户在不同的目录间切换,但该用户必须拥有足够的权限进入目的目录。
常用扩展
cd ~ 切换至家目录
cd .. 返回上级目录
cd [目录开头字母] 按tab键自动补全目录名或提示目录名,若不提示则不存在该开头字母的子目录
- MYSQL 主从数据库配置
-
发表日期:2017-03-13 17:10:20 | 来源: | 分类:MYSQL
-
主数据库:master 主数据库用于增删改
从数据库:slave 从数据库用于查询 不可进行增删改,数据将自动从主数据库同步
主数据库:centos 类型:MySQL5.6.26 配置文件:/ect/my.conf
主服务器配置:
1.配置文件中加入:
server-id=224 #//同步的id,必须唯一 并且不可和从数据库相同
log-bin=mysql-bin #//开启二进制同步记录文件,同步的数据对比就是靠此完成
binlog-do-db=zwt #//要被同步的数据库.可以设置多个被同步的数据库,每行写一个
binlog_checksum = none #//Linux下是区分大小写的,none可以让MySQL不区分大小写
2.重启MySQL服务:
service mysql restart
3.以管理员身份登录MySQL
1.创建一个账号用于同步数据库信息
2.给这个账号授予FILE, REPLICATION SLAVE权限 #
# 创建账号并授予权限:GRANT FILE, REPLICATION SLAVE ON *.* TO 'db_master'@'%' IDENTIFIED BY 'hpAB3h7xCeQwWWRG';
# 如果账号已存在那个直接给账号授予权限就可以: GRANT FILE, REPLICATION SLAVE ON *.* TO 'db_master'@'%';
4.记录二进制文件位置
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | | |
+------------------+----------+--------------+------------------+
从数据库配置:
1.配置文件中加入:
server-id=242
log-bin=mysql-bin
#replicate-do-db=zwt
#replicate-ignore-db=mysql
#master-host=jsp.canquick.com
#master-user=xzspxt
#master-password=Hysenritz123456
#master-port=3306
#master-connect-retry=60
2重启
mysql service mysql restart
3配置从服务器Slave:
change master to master_host='123.206.17.224',master_user='db_master',master_password='hpAB3h7xCeQwWWRG',master_log_file='mysql-bin.000001 ',master_log_pos=107 ;
4启动从服务器复制功能
mysql>start slave;
5检查从服务器复制功能状态:
mysql> show slave status\G;
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
- Android杂项 android安卓支持的所有传感器Sensor列表及类型值常量
-
发表日期:2015-11-22 14:34:16 | 来源: | 分类:Android杂项
-
TYPE_ACCELEROMETER
加速度传感器,单位是m/s2,测量应用于设备X、Y、Z轴上的加速度
传感器类型值(Sensor Type):1 (0x00000001)
TYPE_MAGNETIC_FIELD
磁力传感器,单位是uT(微特斯拉),测量设备周围三个物理轴(x,y,z)的磁场
传感器类型值(Sensor Type):2 (0x00000002)
TYPE_ORIENTATION 【弃用】
目前已被SensorManager.getOrientation()替代
方向传感器,测量设备围绕三个物理轴(x,y,z)的旋转角度
传感器类型值(Sensor Type):3 (0x00000003)
TYPE_GYROSCOPE
陀螺仪传感器,单位是rad/s,测量设备x、y、z三轴的角加速度
传感器类型值(Sensor Type):4 (0x00000004)
TYPE_LIGHT
光线感应传感器,单位lx,检测周围的光线强度
传感器类型值(Sensor Type):5 (0x00000005)
TYPE_PRESSURE
压力传感器,单位是hPa(百帕斯卡),返回当前环境下的压强
传感器类型值(Sensor Type):6 (0x00000006)
TYPE_TEMPERATURE 【弃用】
温度传感器,目前已被TYPE_AMBIENT_TEMPERATURE(Sensor Type:13)替代
传感器类型值(Sensor Type):7 (0x00000007)
TYPE_PROXIMITY
距离传感器,单位是cm,用来测量某个对象到屏幕的距离
传感器类型值(Sensor Type):8 (0x00000008)
TYPE_GRAVITY
重力传感器,单位是m/s2,测量应用于设备X、Y、Z轴上的重力
传感器类型值(Sensor Type):9 (0x00000009)
TYPE_LINEAR_ACCELERATION
线性加速度传感器,单位是m/s2,该传感器是获取加速度传感器去除重力的影响得到的数据
传感器类型值(Sensor Type):10 (0x0000000a)
TYPE_ROTATION_VECTOR
旋转矢量传感器,旋转矢量代表设备的方向
传感器类型值(Sensor Type):11 (0x0000000b)
TYPE_RELATIVE_HUMIDITY
湿度传感器,单位是%,来测量周围环境的相对湿度
传感器类型值(Sensor Type):12 (0x0000000c)
TYPE_AMBIENT_TEMPERATURE
温度传感器,单位是℃
传感器类型值(Sensor Type): 13 (0x0000000d)
TYPE_MAGNETIC_FIELD_UNCALIBRATED
未校准磁力传感器,提供原始的,未校准的磁场数据
传感器类型值(Sensor Type):14 (0x0000000e)
TYPE_GAME_ROTATION_VECTOR
游戏动作传感器,不收电磁干扰影响
传感器类型值(Sensor Type):15 (0x0000000f)
TYPE_GYROSCOPE_UNCALIBRATED
未校准陀螺仪传感器,提供原始的,未校准、补偿的陀螺仪数据,用于后期处理和融合定位数据
传感器类型值(Sensor Type):16 (0x00000010)
TYPE_SIGNIFICANT_MOTION
特殊动作触发传感器
传感器类型值(Sensor Type):17 (0x00000011)
TYPE_STEP_DETECTOR
步行检测传感器,用户每走一步就触发一次事件
传感器类型值(Sensor Type):18 (0x00000012)
TYPE_STEP_COUNTER
计步传感器
传感器类型值(Sensor Type):19 (0x00000013)
TYPE_GEOMAGNETIC_ROTATION_VECTOR
地磁旋转矢量传感器,提供手机的旋转矢量,当手机处于休眠状态时,仍可以记录设备的方位
传感器类型值(Sensor Type):20 (0x00000014)
还有其它一些手机厂商独自支持的传感器,比如:
huawei hall sensor 霍尔传感器
传感器类型值(Sensor Type):10002
貌似是检测电压电流电路的,可能是保护电路
- PHP杂项 PHP中的魔术方法总结 :__construct, __destruct等..
-
发表日期:2015-10-22 16:26:22 | 来源: | 分类:PHP杂项
-
1、__get、__set
这两个方法是为在类和他们的父类中没有声明的属性而设计的
__get( $property ) 当调用一个未定义的属性时访问此方法
__set( $property, $value ) 给一个未定义的属性赋值时调用
这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性)
2、__isset、__unset
__isset( $property ) 当在一个未定义的属性上调用isset()函数时调用此方法
__unset( $property ) 当在一个未定义的属性上调用unset()函数时调用此方法
与__get方法和__set方法相同,这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性)
3、__call
__call( $method, $arg_array ) 当调用一个未定义的方法是调用此访求
这里的未定义的方法包括没有权限访问的方法
4、__autoload
__autoload 函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。
注意: 在 __autoload 函数中抛出的异常不能被 catch 语句块捕获并导致致命错误。
5、__construct、__destruct
__construct 构造方法,当一个对象创建时调用此方法,使用此方法的好处是:可以使构造方法有一个独一无二的名称,无论它所在的类的名称是什么.这样你在改变类的名称时,就不需要改变构造方法的名称__destruct 析构方法,PHP将在对象被销毁前(即从内存中清除前)调用这个方法默认情况下,PHP仅仅释放对象属性所占用的内存并销毁对象相关的资源.析构函数允许你在使用一个对象之后执行任意代码来清除内存.当PHP决定你的脚本不再与对象相关时,析构函数将被调用.在一个函数的命名空间内,这会发生在函数return的时候.对于全局变量,这发生于脚本结束的时候.如果你想明确地销毁一个对象,你可以给指向该对象的变量分配任何其它值.通常将变量赋值勤为NULL或者调用unset.
6、__clone
PHP5中的对象赋值是使用的引用赋值,如果想复制一个对象则需要使用clone方法,在调用此方法是对象会自动调用__clone魔术方法
如果在对象复制需要执行某些初始化操作,可以在__clone方法实现
7、__toString
__toString方法在将一个对象转化成字符串时自动调用,比如使用echo打印对象时如果类没有实现此方法,则无法通过echo打印对象,否则会显示:Catchable fatal error: Object of class test could not be converted to string in此方法必须返回一个字符串
在PHP 5.2.0之前,__toString方法只有结合使用echo() 或 print()时 才能生效。PHP 5.2.0之后,则可以在任何字符串环境生效(例如通过printf(),使用%s修饰符),但 不能用于非字符串环境(如使用%d修饰符)。从PHP 5.2.0,如果将一个未定义__toString方法的对象 转换为字符串,会报出一个E_RECOVERABLE_ERROR错误。
8、__sleep、__wakeup
__sleep 串行化的时候用
__wakeup 反串行化的时候调用
serialize() 检查类中是否有魔术名称 __sleep 的函数。如果这样,该函数将在任何序列化之前运行。它可以清除对象并应该返回一个包含有该对象中应被序列化的所有变量名的数组。
使用 __sleep 的目的是关闭对象可能具有的任何数据库连接,提交等待中的数据或进行类似的清除任务。此外,如果有非常大的对象而并不需要完全储存下来时此函数也很有用。
相反地,unserialize() 检查具有魔术名称 __wakeup 的函数的存在。如果存在,此函数可以重建对象可能具有的任何资源。
使用 __wakeup 的目的是重建在序列化中可能丢失的任何数据库连接以及处理其它重新初始化的任务。
9、__set_state
当调用var_export()时,这个静态 方法会被调用(自PHP 5.1.0起有效)。
本方法的唯一参数是一个数组,其中包含按array(’property’ => value, …)格式排列的类属性。
10、__invoke
当尝试以调用函数的方式调用一个对象时,__invoke 方法会被自动调用。
PHP5.3.0以上版本有效
11、__callStatic
它的工作方式类似于 __call() 魔术方法,__callStatic() 是为了处理静态方法调用,
PHP5.3.0以上版本有效
PHP 确实加强了对 __callStatic() 方法的定义;它必须是公共的,并且必须被声明为静态的。同样,__call() 魔术方法必须被定义为公共的,所有其他魔术方法都必须如此。
- Android杂项 013.statusBar-通知栏(Notification)
-
发表日期:2015-09-26 10:32:09 | 来源: | 分类:Android杂项
-
示例1
protected void onStart() { Toast.makeText(MainActivity.this, "onStart", Toast.LENGTH_SHORT).show(); super.onStart(); NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); //取消通知栏 manager.cancel(R.layout.activity_main); }示例2
package com.example.StatusBar; import android.app.IntentService; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; public class StatusService extends IntentService { //private static final int KUKA = 0; public StatusService() { super("StatusService"); // TODO Auto-generated constructor stub } @Override protected void onHandleIntent(Intent intent) { showNotification(false); //模拟耗时操作 try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO: handle exception e.printStackTrace(); } showNotification(true); } @SuppressWarnings({ "deprecation" }) private void showNotification(boolean finish) { //通知栏消息 Notification notification; //消息管理器 NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); //当用户点击消息的时候显示那个activity Intent intent = new Intent(this, MainActivity.class); //将要发生的意图 PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); if (finish) { notification = new Notification(R.drawable.ic_launcher, "文件下载完成", System.currentTimeMillis()); notification.setLatestEventInfo(this, "文件下载完成", "没有新任务", contentIntent); }else { notification = new Notification(R.drawable.ic_launcher, "文件开始下载", System.currentTimeMillis()); notification.setLatestEventInfo(this, "文件正在下载中", "请稍候...", contentIntent); } manager.notify(R.layout.activity_main, notification); } }
- Android杂项 001.android开发-Activity(活动)
-
发表日期:2015-09-23 22:19:52 | 来源: | 分类:Android杂项
-
Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之一。
每一个可见的页面视图都是一个activity,activity可以绑定一个布局xml显示,和service的最大不同是service是没有界面在后台运行的。
生命周期:

- Android杂项 android studio 快捷键
-
发表日期:2015-09-23 21:51:27 | 来源: | 分类:Android杂项
-
----常用快捷键
1.Ctrl+E,可以显示最近编辑的文件列表
2.Shift+Click可以关闭文件
3.Ctrl+[或]可以跳到大括号的开头结尾
4.Ctrl+Shift+Backspace可以跳转到上次编辑的地方
5.Ctrl+F12,可以显示当前文件的结构
6.Ctrl+F7可以查询当前元素在当前文件中的引用,然后按F3可以选择
7.Ctrl+N,可以快速打开类
8.Ctrl+Shift+N,可以快速打开文件
9.Alt+Q可以看到当前方法的声明
10.Ctrl+W可以选择单词继而语句继而行继而函数
11.Alt+F1可以将正在编辑的元素在各个面板中定位
12.Ctrl+P,可以显示参数信息
13.Ctrl+Shift+Insert可以选择剪贴板内容并插入
14.Alt+Insert可以生成构造器/Getter/Setter等
15.Ctrl+Alt+V 可以引入变量。例如把括号内的SQL赋成一个变量
16.Ctrl+Alt+T可以把代码包在一块内,例如try/catch
17.Alt+Up and Alt+Down可在方法间快速移动
----不常用快捷键
18.在一些地方按Alt+Enter可以得到一些Intention Action,例如将”==”改为”equals()”
19.Ctrl+Shift+Alt+N可以快速打开符号
20.Ctrl+Shift+Space在很多时候都能够给出Smart提示
21.Alt+F3可以快速寻找
22.Ctrl+/和Ctrl+Shift+/可以注释代码
23.Ctrl+Alt+B可以跳转到抽象方法的实现
24.Ctrl+O可以选择父类的方法进行重写
25.Ctrl+Q可以看JavaDoc
26.Ctrl+Alt+Space是类名自动完成
27.快速打开类/文件/符号时,可以使用通配符,也可以使用缩写
28.Live Templates! Ctrl+J
29.Ctrl+Shift+F7可以高亮当前元素在当前文件中的使用
30.Ctrl+Alt+Up /Ctrl+Alt+Down可以快速跳转搜索结果
31.Ctrl+Shift+J可以整合两行
32.Alt+F8是计算变量值
- Android杂项 android 常用代码集锦
-
发表日期:2015-08-05 23:27:35 | 来源: | 分类:Android杂项
-
super.requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置不显示标题
//必须写在super.setContentView(R.layout.activity_main);之前,否则会出错!
this.gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));// 给gridview设置选中时的颜色(透明色)默认点击的时候黄色背景。。
this.content = (LinearLayout) super.findViewById(R.id.content); // 取得组件
this.content.removeAllViews(); // 先清除容器中所有View
super.getWindowManager().getDefaultDisplay().getWidth()//获取屏幕宽度
super.getWindowManager().getDefaultDisplay().getHeight()//获取屏幕高度
- Android杂项 ADB 指令大全
-
发表日期:2015-07-08 22:06:10 | 来源: | 分类:Android杂项
-
ADB是什么?
ADB的全称为Android Debug Bridge,就是起到调试桥的作用。
通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。
ADB有什么用?
借助ADB工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。
1. 显示系统中全部Android平台:
android list targets
2. 显示系统中全部AVD(模拟器):
android list avd
3. 创建AVD(模拟器):
android create avd --name 名称 --target 平台编号
4. 启动模拟器:
emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800)
5. 删除AVD(模拟器):
android delete avd --name 名称
6. 创建SDCard:
mksdcard 1024M ~/名称.img
7. AVD(模拟器)所在位置:
Linux(~/.android/avd)
8. 启动DDMS:
ddms
9. 显示当前运行的全部模拟器:
adb devices
10. 对某一模拟器执行命令:
abd -s 模拟器编号 命令
11. 安装应用程序:
adb install -r 应用程序.apk
12. 获取模拟器中的文件:
adb pull <remote> <local>
13. 向模拟器中写文件:
adb push <local> <remote>
14. 进入模拟器的shell模式:
adb shell
15. 启动SDK,文档,实例下载管理器:
android
16. 卸载apk包:
adb shell
17. 查看adb命令帮助信息:
adb help
18. 在命令行中查看LOG信息:
adb logcat -s 标签名
19. adb shell后面跟的命令主要来自:
源码\system\core\toolbox目录和源码\frameworks\base\cmds目录。
20. 删除系统应用:
adb remount (重新挂载系统分区,使系统分区重新可写)。
21. 获取管理 员权限:
adb root
22. 启动Activity:
adb shell am start -n 包名/包名+类名
(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。
23、发布端口:
你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:
adb forward tcp:5555 tcp:8000
24、复制文件:
你可向一个设备或从一个设备中复制文件,复制一个文件或目录到设备或模拟器上:
adb push <source> <destination></destination></source>
25、搜索模拟器/设备的实例:
取得当前运行的模拟器/设备的实例的列表及每个实例的状态:
adb devices
26、查看bug报告:
adb bugreport
27、记录无线通讯日志:
一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:
adb shell
28、获取设备的ID和序列号:
adb get-product
29、访问数据库SQLite3
adb shell
cd system/sd/data //进入系统内指定文件夹
ls //列表显示当前文件夹内容
rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件
rm xxx //删除文件xxx
rmdir xxx //删除xxx的文件夹
【操作命令】
1. 查看设备
adb devices
这个命令是查看当前连接的设备,连接到计算机的android设备或者模拟器将会列出显示。
2.安装软件
adb install
3. 卸载软件
adb uninstall <软件名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件.
4. 进入设备或模拟器的shell:
adb shell
通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux的命令,另外如果只想执行一条shell命令,可以采用以下的方式:
adb shell [command]
5. 发布端口
可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:
adb forward tcp:5555 tcp:8000
6. 从电脑上发送文件到设备
adb push <本地路径> <远程路径>
用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)
7. 从设备上下载文件到电脑
adb pull <远程路径> <本地路径>
用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑
- Android杂项 Android manifest.xml 中元素含义
-
发表日期:2015-07-08 22:04:08 | 来源: | 分类:Android杂项
-
这些都是manifest.XML里的代码。每一段代码都有它的意思,这些资料主要就是让新手们知道每一段代码都是干什么的。什么地方出错了,先看看manifest.xml里有没有缺少权限。
android:allowTaskReparenting
这句话的意思就是(是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务。)
android:alwaysRetainTaskState
是否保留状态不变, 比如切换回home, 再从新打开, activity处于最后的状态
android:clearTaskOnLanunch
这句话的意思就是(比方说 A 是 activity, eoe 是被A 触发的 activity, 然后返回 Home, 从新启动A,是否显示 eoe)
android:configChanges
在我们配置list发生修改时, 是否调用 onConfigurationChanged() 方法
android:enabled
activity 是否可以被实例化。 上面的这句话是必须有的。而且和重要。
android:excludeFromRecents
这据主要的意思就就(是否可被显示在最近打开的activity列表里)
android:exported
是否允许activity被其它程序调用
android:finishOnTaskLaunch
是否关闭已打开的activity当用户重新启动这个任务的时候。我感觉就是你个提醒的意思。
android:launchMode
activity启动方式, ("standard" "singleTop")( "singleTask" "singleInstance")其中前两个为一组, 后两个为一组
android:multiprocess
这句话是非常主要的,因为没有一个应用是用单线程来完成的,这句话的意思是(允许多进程)
android:name
这个是必须有的,意思是activity的类名, 必须指定
android:onHistory
是否需要移除这个activity当用户切换到其他屏幕时。 这个属性是 API level 3 中引入的
android:process
一个activity运行时所在的进程名,所有程序组件运行在应用程序默认的进程中,这个进程名跟应用程序的包名一致。中的元素process属性能够为所有组件设定一个新的默认值。但是任何组件都可以覆盖这个默认值,允许你将你的程序放在多进程中运行。 如果这个属性被分配的名字以:开头,当这个activity运行时, 一个新的专属于这个程序的进程将会被创建。如果这个进程名以小写字母开头,这个activity将会运行在全局的进程中,被它的许可所提供。
- Android杂项 Android 动态关闭Manifest中的Receiver的方法
-
发表日期:2015-07-08 22:03:07 | 来源: | 分类:Android杂项
-
为什么要关闭组件?
在用到组件时,有时候我们可能暂时性的不使用组件,但又不想把组件kill 掉,比如创建了一个broadcastReceiver广播监听器,用来想监听第一次开机启动后获得系统的许多相关信息,并保存在文件中,这样以后每次开机启动就不需要再去启动该服务了,也就是说如果没有把receiver关闭掉,就算是不做数据处理,但程序却还一直在后台运行会消耗电量和内存,这时候就需要把这个receiver给关闭掉。
如何关闭组件?
关闭组件其实并不难,只要创建packageManager对象和ComponentName对象,并调用packageManager对象的setComponentEnabledSetting方法。方法描述如下:
setComponentEnabledSetting(ComponentName componentName, int newState, int flags)
componentName:组件名称
newState:组件新的状态,可以设置三个值,分别是如下:
不可用状态:COMPONENT_ENABLED_STATE_DISABLED
上个小例子。manifest文件中的配置:
< receiver android:name=".ToggleReceiver">
在对应的Receiver中的处理:
final ComponentName receiver = new ComponentName(context,ToggleReceiver.class);
- Android杂项 AndroidManifest.xml文件综合详解
-
发表日期:2015-07-08 22:02:05 | 来源: | 分类:Android杂项
-
一,重要性AndroidManifest.xml是Android应用程序中最重要的文件之一。它是Android程序的全局配置文件,是每个android程序中必须的文件。它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件(activities,services,等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息。
因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所必须拥有的信息。一个典型的Android应用程序的结构如下图所示:
二,主要功能它指定了该应用程序的Java包:该包名作为应用程序的一个独特标识。
它描述了应用程序组件:该应用程序由哪些activity,service,broadcast receiver和content provider组成。它指定了实现每个组件的类以及公开发布它们的能力(例如,它们能持有哪个Intent信息)。这些声明使Android系统知道这儿有什么组件以及在什么条件下它们可以被载入。
它决定那些进程将容纳应用程序组件。
它声明了本应用程序必须拥有哪些许可,以便访问API的被保护部分,以及与其他应用程序交互。
它也声明了其他应用程序在和该应用程序交互时需要持有的许可。
它列出了Instrumentation类,可以在应用程序运行时提供简档和其他信息。这些声明仅当应用程序在开发和测试过程中被提供;它们将在应用程序正式发布之前被移除。
它声明了该应用程序所需的Android API的最小化水平。
它列出了该应用程序必须链接的库。
三,主要结构及规则下面列表显示了manifest文件的通常的结构以及它可以含有的元素。每个元素,连同它的所有属性,会在各个单独的文档里进行充分的描绘。
<?xml version="1.0" encoding="utf-8"?>
下面是按照字母顺序排列的所有可以出现在manifest文件里的元素。它们是唯一合法的元素;你不能加入你自己的元素或属性。
<action>
说明:AndroidManifest.xml文件的结构、元素,以及元素的属性,可以在Android SDK文档中查看详细说明。而在看这些众多的元素以及元素的属性前,需要先了解一下这些元素在命名、结构等方面的规则:
1、元素:在所有的元素中只有<manifest>和<application>是必需的,且只能出现一次。如果一个元素包含有其他子元素,必须通过子元素的属性来设置其值。处于同一层次的元素,这些元素的说明是没有顺序的。
2、属性:按照常理,所有的属性都是可选的,但是有些属性是必须设置的。那些真正可选的属性,即使不存在,其也有默认的数值项说明。除了根元素<manifest>的属性,所有其他元素属性的名字都是以android:前缀的;
3、定义类名:所有的元素名都对应其在SDK中的类名,如果你自己定义类名,必须包含类的数据包名,如果类与application处于同一数据包中,可以直接简写为“.”;
4、多数值项:如果某个元素有超过一个数值,这个元素必须通过重复的方式来说明其某个属性具有多个数值项,且不能将多个数值项一次性说明在一个属性中;
5、资源项说明:当需要引用某个资源时,其采用如下格式:@[package :]type :name 。 例如 <activity android:icon=”@drawable/icon ” . . . >
6、字符串值:类似于其他语言,如果字符中包含有字符“\”,则必须使用转义字符“\\”;
四,详细说明值得一提一些常用之处:
1,几乎所有的AndroidManifest.xml(以及许多其他Android的xml的文件)在第一个元素中包含了命名空间的声明xmlns:android="http://schemas.android.com/apk/res/android"。这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。
2,大部分manifests包含了单个<application>的元素,它定义了所有的application级别组件和属性,并能在package中使用。
3,任何被用户看作顶层应用程序,并能被程序启动器所用的package,需要包含至少一个Activity组件来支持MAIN操作和LAUNCHER种类。动作android.intent.action.MAIN指示这是应用程序的入口点。类别 android.intent.category.LAUNCHER将此Activity放在启动器窗口中。
在最外层的<manifest>中包含了包名如package="cn.androidlover.demo"、软件的版本号android:versionCode="1"以及android:versionName="1.0"的属性,而里面一层的<application>分支中将可能包含Android程序的四种对象 Activity、Service、Content Provider以及Receiver。我们每添加上面四个类型中的任一种新对象都需要在androidmanifest.xml文件中添加相应节点,否则运行时将会产生异常。每一个activity必须要一个<activity>标记对应,无论它给外部使用或是只用于自己的package 中。如果一个activity没有对应的标记,你将不能运行它。
此文件一个重要的地方就是它所包含的intent-filters。这些filters描述了activity启动的位置和时间。每当一个 activity(或者操作系统)要执行一个操作,例如:打开网页或联系簿时,它创建出一个intent的对象。它能承载一些信息描述了你想做什么,你想处理什么数据,数据的类型,和一些其他信息。Android比较了intent对象中和每个application所暴露的intent-filter中的信息,来找到最合适的activity来处理调用者所指定的数据和操作。关于intent的更多信息请访问Intent参考页面。
application属性介绍:
有关AndroidManifest.xml文件的application分支我们有必要了解一些常见的属性,这里可以看到一些我们实用的选项,比如允许调试android:debuggable、任务关系android:taskAffinity,比如我们常见的方式创建一个新的任务实用标记 FLAG_ACTIVITY_NEW_TASK,为程序制定一个主题,可以使用android:theme指向一个主题文件。平时我们创建的程序使用一些安全敏感项,会需要请求系统许可权限,这里可以使用android:permission来制定相关的许可,每个程序的service、 activity、content provider、receiver都需要在application的节点内实现。有关完整的属性可以查看:
<application android:allowClearUserData=["true" | "false"]
另外:Activity的属性常用的可能为android:name和android:label两个,但我们需要了解所有的属性以帮助解决复杂的问题,完整的如下:
android:allowTaskReparenting=["true" | "false"]
从Provider节点中用到的定义,可以看到包含了权限控制、排序方式完整的如下:
<provider android:authorities="list"
而对于服务相关定义如下:
<service android:enabled=["true" | "false"]
最后是Broadcast使用的Receiver定义,一般配合和隐式处理。
<receiver android:enabled=["true" | "false"]
- Android杂项 AndroidManifest.xml元素含义介绍
-
发表日期:2015-07-08 21:59:45 | 来源: | 分类:Android杂项
-
每一个Android项目都包含一个清单(Manifest)文件--AndroidManifest.xml,它存储在项目层次中的最底层。清单可以定义应用程序及其组件的结构和元数据。
它包含了组成应用程序的每一个组件(活动、服务、内容提供器和广播接收器)的节点,并使用Intent过滤器和权限来确定这些组件之间以及这些组件和其他应用程序是如何交互的。
它还提供了各种属性来详细地说明应用程序的元数据(如它的图标或者主题)以及额外的可用来进行安全设置和单元测试顶级节点,如下所述。
清单由一个根manifest标签构成,该标签带有一个设置项目包的package属性。它通常包含一个xmlns:android属性来提供文件内使用的某些系统属性。下面的XML代码段展示了一个典型的声明节点:
<manifest xmlns:android=http://schemas.android.com/apk/res/android
manifest标签包含了一些节点(node),它们定义了应用程序组件、安全设置和组成应用程序的测试类。下面列出了一些常用的manifest节点标签,并用一些XML代码段说明了它们是如何使用的。
application
一个清单只能包含一个application节点。它使用各种属性来指定应用程序的各种元数据(包括标题、图标和主题)。它还可以作为一个包含了活动、服务、内容提供器和广播接收器标签的容器,用来指定应用程序组件。
<application android:icon="@drawable/icon"
Activity应用程序显示的每一个Activity都要求有一个activity标签,并使用android:name属性来指定类的名称。这必须包含核心的启动Activity和其他所有可以显示的屏幕或者对话框。启动任何一个没有在清单中定义的Activity时都会抛出一个运行时异常。每一个Activity节点都允许使用intent-filter子标签来指定哪个Intent启动该活动。
<activity android:name=".MyActivity"
service和activity标签一样,应用程序中使用的每一个Service类都要创建一个新的service标签。(Service标签也支持使用intent-filter子标签来允许后面的运行时绑定。
<service androidandroid:enabled="true"android:name=".MyService"></service>
provider
provider标签用来说明应用程序中的每一个内容提供器。内容提供器是用来管理数据库访问以及程序内和程序间共享的。
<provider
receiver
通过添加receiver标签,可以注册一个广播接收器(Broadcast Receiver),而不用事先启动应用程序。广播接收器就像全局事件监听器一样,一旦注册了之后,无论何时,只要与它相匹配的intent被应用程序广播出来,它就会立即执行。通过在声明中注册一个广播接收器,可以使这个进程实现完全自动化。如果一个匹配的Intent被广播了,则应用程序就会自动启动,并且你注册的广播接收器也会开始运行。
<receiver
uses-permission
作为安全模型的一部分,uses-permission标签声明了那些由你定义的权限,而这些权限是应用程序正常执行所必需的。在安装程序的时候,你设定的所有权限将会告诉给用户,由他们来决定同意与否。对很多本地Android服务来说,权限都是必需的,特别是那些需要付费或者有安全问题的服务(例如,拨号、接收SMS或者使用基于位置的服务)。如下所示,第三方应用程序,包括你自己的应用程序,也可以在提供对共享的程序组件进行访问之前指定权限。
<uses-permission android:name="android.permission.ACCESS_LOCATION"> </uses-permission>
permission
在可以限制访问某个应用程序组件之前,需要在清单中定义一个permission。可以使用permission标签来创建这些权限定义。然后,应用程序组件就可以通过添加android:permission属性来要求这些权限。再后,其他的应用程序就需要在它们的清单中包含uses-permission标签(并且通过授权),之后才能使用这些受保护的组件。
在permission标签内,可以详细指定允许的访问权限的级别(normal、dangerous、signature,signatureOrSystem)、一个 label属性和一个外部资源,这个外部资源应该包含了对授予这种权限的风险的描述。
<permission
instrumentation
instrumentation类提供一个框架,用来在应用程序运行时在活动或者服务上运行测试。它们提供了一些方法来监控应用程序及其与系统资源的交互。对于为自己的应用程序所创建的每一个测试类,都需要创建一个新的节点。
<instrumentation
- Android杂项 Android的AndroidManifest.xml文件介绍
-
发表日期:2015-07-08 21:59:05 | 来源: | 分类:Android杂项
-
AndroidManifest.xml是每一个应用都需要的文件,位于应用根目录下,它描述了程序包的全局变量,包括暴露的应用组件(activities,services等等)和为每个组件的实现类,什么样的数据可以操作,以及在什么地方运行。
主要包括以下各个元素。
A.包名(package):指定本应用内java主程序包的包名。当没有指定apk的文件名时,编译后产生程序包将以此命名。本包名应当在Android系统运行时唯一。
B.认证(certificate):指定本应用程序所授予的信任级别,目前有的认证级别有platform(system)、shared、media以及应用自定义的认证。不同的认证可以享受不同的权限。
C.权限组(permission-group):权限组的定义是为了描述一组具有共同特性的权限。
D.权限(permission):权限用来描述是否拥有做某件事的权力。Android系统中权限是分级的,前分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。系统中所有预定义的权限根据作用的不同,分别属于不同的级别。对于普通和危险级别的权限,我们称之为低级权限,应用申请即授予。其他两级权限,我们称之为高级权限或系统权限,应用拥有platform级别的认证才能申请。当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。系统应用可以使用任何权限。权限的声明者可无条件使用该权限。
E.权限树(permission-tree)权限树的设置是为了统一管理一组权限,声明于该树下的权限所有者归属该应用。系统提供了API,应用可以在运行时动态添加。 PackageManager.addPermission()
F.使用权限(uses-permission):应用需要的权限应当在此处申请,所申请的权限应当被系统或某个应用所定义,否则视为无效申请。同时,使用权限的申请需要遵循权限授予条件,非platform认证的应用无法申请高级权限。
G:SDK(uses-sdk):标识本应用运行的SDK版本。高兼容性的应用可以忽略此项。
H.application:application是Android应用内最高级别(top level)的模块,每个应用内最多只能有一个application,如果应用没有指定该模块,一个默认的application将被启用。application将在应用启动时最先被加载,并存活在应用的整个运行时生命周期。因此一些初始化的工作适合在本模块完成. Application元素有许多属性,其中:“persistent”表示本应用是否为常驻内存,“enable”表示本应用当前是否应当被加载。
<application android:icon="@drawable/icon" android:label="@string/app_name">
在AndroidManifest.xml文件中,运行时模块的定义都作为本模块的子元素。当运行时模块被调度时,如果应用没有启动,将首先启动应用进行初始化,然后调度对应模块。
I.activity:activity是application模块的运行时子元素,标识了一个UI。除了application,一个应用可以声明并实现零至多个其它运行时模块,activity也同样。activity也包含了许多定义它工作状态的属性,其中:“name”是必须的,它指定了该activity所在的文件名,如果该文件所属包不同于该应用的包名(即本描述文件的最开始处),那么名字前面需要加入所在包名。activity通过增加intent-fliter来标识哪些intent可以被处理,同时intent也是调度activity的主要参数。
J.receiver:receiver也是application的运行时子元素。receiver通过增加intent-fliter来标识它需要接受哪些intent。当收到intent后,receiver将根据不同的intent进行不同的处理。当一个Intent发出后,所有注册了该intent的receiver都将会收到,系统会根据receiver在系统中的注册次序顺序发送。当一个receiver处理完该Intent后,系统才会向下一个receiver发送。当一个receiver有多个未接收的intent时,将按照intent发送的次序顺序接收。
在本实例中,intent-filter如下:
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
K.service:service也是application的运行时子元素。Service属于后台模块,启动后将长时间运行,除非停止该service或所在应用进程被杀死。
L.provider:provider也是application的运行时子元素。它继承于ContentProvider,是对该应用管理的用户数据的结构化接入,是基于数据库操作方式的封装。如果应用允许外部应用访问/管理它的用户数据,provider是Android平台提供的最佳方式。
M.activity-alias:顾名思义,是已有activity的别名。
N:uses-library:标识应用启动所必须的共享库。
- 前端开发(1)
- 数据库(0)
- PHP(0)
- PHP杂项(34)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- SimpleXML 函数(3)
- 杂项 函数(31)
- 字符串 函数(101)
- JAVA(0)
- Android(0)
- Linux(0)
- AI大模型(9)
- 其他(0)
宁公网安备 64010402001209号