Categories
objective-c

objective-c 文件系统

objective-c 文件系统依赖NSFileManager

objective-c file对象 为NSFileHandle

NSFileManager 返回的文件路径对象都是NSString

fileManager.currentDirectoryPath; //返回当前进程目录

BOOL isSuccess = [fileManager createFileAtPath:path contents:nil attributes:nil]; // 创建文件

 BOOL isDirectorySuccess = [fileManager createDirectoryAtPath:directory withIntermediateDirectories:true attributes:nil error:nil]; //创建文件夹

BOOL isRemoveSuccess = [fileManager removeItemAtPath:path error:nil];//删除文件或者文件夹

以下是读写文件文件 和文件对象操作

NSString 对应字符串

NSData 对应byte数组

NSFileHandle 对应文件对象

 NSString *homePath  = NSHomeDirectory( );
 NSString *sourcePath = [homePath stringByAppendingPathConmpone:@"testfile.text"];   
             
 NSFileHandle *fielHandle = [NSFileHandle fileHandleForUpdatingAtPath:sourcePath];   //创建文件对象
                    
 [fileHandle seekToEndOfFile];  将节点跳到文件的末尾  
        
 NSString *str = @"追加的数据"   
                
 NSData* stringData  = [str  dataUsingEncoding:NSUTF8StringEncoding];  
        
 [fileHandle writeData:stringData]; //追加写入NSData数据       
 [fileHandle closeFile]; //关闭文件对象

通过fileManager 在创建文件时写入NSData

NSString *content = @"content2";
NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];
        BOOL isSuccess = [fileManager createFileAtPath:path contents:data attributes:nil];
        if (isSuccess) {
            NSLog(@"file created");
        }else{
            NSLog(@"file not created");
        }

通过NSMutableString 写入文件

   NSMutableString *content = [NSMutableString new];
        [content appendString:@"helloworld"];
        NSString *homePath = NSHomeDirectory();
        NSString *path = [homePath stringByAppendingPathComponent: @"myfile.txt"];

        BOOL isWriteSuccess = [content writeToFile:path atomically:true encoding:NSUTF8StringEncoding error:nil];
        if (isWriteSuccess) {
            NSLog(@"content writed");
        }else{
            NSLog(@"content not writed");
        }

通过NSData 写入文件


        NSString *content = @"helloworldNSdata2";
        NSString *homePath = NSHomeDirectory();
        NSString *path = [homePath stringByAppendingPathComponent: @"myfile.txt"];

        NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];
        
        BOOL isWriteSuccess = [data writeToFile:path atomically:true];
        if (isWriteSuccess) {
            NSLog(@"content writed");
        }else{
            NSLog(@"content not writed");
        }
      

以下是流操作 NSInputStream和NSOutputStream

用文件流说明流章节比较复杂 下个章节单独说明

Categories
objective-c

objective-c 标准流

objective-c 没有定义自己标准输入流 输出流 异常流

需要依赖C语言的stdio

objective-c 可以完美运行C语言代码(惊呆了)

#import <Foundation/Foundation.h>
#include <stdio.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        char name[100];
        NSLog(@"Please enter the name you wish to search for ");
        scanf("%s", name);
        printf("name : %s\n",name);

        //NSString *name2 = [NSString stringWithFormat:@"%s" , name];
        NSString *name2 = [NSString stringWithCString:name encoding:NSUTF8StringEncoding]; //转化 char[] 为NSString
        NSLog(@"name2 : %@" , name2);
        
        fprintf(stdout,"abc123\n");//标准输出流输出
        fprintf(stderr,"abc123\n");//标准异常流输出
    
    }
    return 0;
}

Categories
objective-c

objective-c 进程管理

NSProcessInfo *proc = [NSProcessInfo processInfo];

获取当前进程对象

以下是一些进程参数

        NSProcessInfo *proc = [NSProcessInfo processInfo];

        NSArray *args = [proc arguments];

        NSLog(@”args : %@” , args);

        NSDictionary *env = [proc environment];

        NSLog(@”env : %@” , env);

        int pid = [proc processIdentifier];

        NSLog(@”pid : %d” , pid);

        NSString *processName = [proc processName];

        NSLog(@”processName : %@” , processName);

        NSString *hostName = [proc hostName];

        NSLog(@”hostName : %@” , hostName);

子进程管理 通过NSTask 调用shell 启动子进程

        NSTask *task = [NSTask new];
        
        task.launchPath = @"/bin/pwd";
        task.currentDirectoryPath = NSHomeDirectory();
        //NSFileHandle *output = task.standardOutput;
        //NSFileHandle *input = task.standardInput;
        [task launch];//执行 且子进程会重定向标准输出流到主进程
        [task waitUntilExit];
        NSLog(@"end");
Categories
linux

Bluetoothctl

linux下一个蓝牙工具 可控制设备信任 配对 连接 等生命周期

sudo bluetoothctl 进入控制台

devices 列出设备

scan on 搜索

scan off 关闭搜索

trust 信任设备 untrust 不信任设备

pair 配对设备 unpair 不配对设备

Categories
php

php-fpm

php-fpm 是以守护进程形式执行php进程 以便下游服务器发送cgi通信数据过来 然后通过标准输出流返回网页数据到 cgi服务器

具体关键配置

进程owner 用户(权限相关)

user = www-data
group = www-data

listen.acl_users = apache,nginx,www-data
 //允许访问的用户

子进程数量限制 (性能相关)

监听方式(unix file socket 或者 tcp ip socket)(注意unix:socket 方式需设定该文件读写权限)

listen = /run/php-fpm/www.sock
listen.owner = nobody
listen.group = nobody
listen.mode = 0660


listen = 127.0.0.1:6000
listen.allowed_clients = 127.0.0.1

debug 配置

Categories
php

wordpress debug

define( ‘WP_DEBUG’, false );

再wp-config.php 配置这两个值可以在也买你上输出debug信息

Categories
bluetooth

JDY-08 AT

AT+VER 版本信息

AT+NAME 查询设备名字

AT+NAMEORTHOCONE_T001 蓝牙设备改名中间没有等于号

AT+BOUD 查询波特率

AT+B)UD4 设置为第四个波特率 9600

AT+BOUD 11200AT+BOUD757600
AT+BOUD22400AT+BOUD8115200
AT+BOUD34800AT+BOUD9230400
AT+BOUD49600AT+BOUDA460800
AT+BOUD 519200AT+BOUDB921600
AT+BOUD638400AT+BOUDC1382400

AT 指令后不需要添加\r\n

Categories
bluetooth

JDY-23 AT

AT+VER 版本信息

AT+NAME 查询设备名字

AT+NAMEORTHOCONE_T001 蓝牙设备改名中间没有等于号

AT+BAUD 查询波特率

AT+BAUD4 设置为第四个波特率 9600

AT+BAUD 11200AT+BAUD 757600
AT+BAUD 22400AT+BAUD 8115200
AT+BAUD 34800AT+BAUD 9230400
AT+BAUD 49600AT+BAUD A460800
AT+BAUD 519200AT+BAUD B921600
AT+BAUD 638400AT+BAUD C1382400
Categories
bluetooth

HC-04 AT指令

AT+CTOUT=10 设置意外断线超时指令

AT+BAUD=9600 设置波特率

AT+BNAME=ORTHOCONE_T001 设置BLE蓝牙名称

Categories
matlab

MATLAB 变量与关键字

pi 表示圆周率

1e-6 表示科学计数法 10的-6次方 代表无穷小 或者0

disp() 控制台输出

abs() 绝对值

sqrt() 开方

syms k ∑

symsum 求和

factorial() 阶乘

exp() e的次方

log() ln

log10() log10

sin() cos() tan() cot()

asin() acos() atan() acot()

if:else 语法

if

elseif

else

end

function

矩阵的+ – * / > < 这些操作 都是针对整个矩阵所有元素的操作