2019-01-04 09:03:04 aristolto 阅读数 2082
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7141 人正在学习 去看看 良许

    这几天在arm开发板上调试串口通信,操作系统是linux(ubuntu),写了一个串口通信的程序收发字符串是正常的,但是在收发16进制数据时会发现有些数据收不到,有些数据收到的不对。

    调试的环境是自己写的程序在arm+linux平台运行,pc上用串口调试助手。一个现象是调试助手发送的0x01,0x02,0x03,0x04在arm端打印不出来(收不到),这是因为这几个数据的ascii有自己的含义,比如0x04表示“传输结束”,要解决这个问题要使用原始模式并取消软件流控制。另一个现象是发送的0x0D接收到的是0x0A,发送0x0A收到的是0x0D,解决这一现象就是设置不要回车换行转换。

    可以通过以下设置解决问题:

    opt.c_iflag &= ~(INLCR | ICRNL); //不要回车和换行转换
    opt.c_iflag &= ~(IXON | IXOFF | IXANY); //不要软件流控制
    opt.c_oflag &= ~OPOST;
    opt.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); //原始模式

 

2018-05-12 13:40:54 lindorx 阅读数 698
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7141 人正在学习 去看看 良许

将寄存器的值以16进制显示,程序如下:

.section .bbs
.lcomm buf,10 #定义一个10字节长度的内存区,用来储存计算出来的字符

.section .text
.globl _start
_start:
//初始化寄存器
movl $0x01abcdef,%eax #将需要转换的值存入eax
movl $0,%edi
movl $0x0000000f,%edx
//写入‘0X’
movl $0x30,(buf)
movl $0x58,(buf+1)

//循环计算字符
loop_ascii:
movl %eax,%ebx
imul $4,%edi,%ecx
and %edx,%ebx
ror %cl,%ebx
cmpb $10,%bl
jnc max9
addb $0x30,%bl
jmp fun
max9:
addb $0x37,%bl
fun:
rol $4,%edx
movl $9,%ecx
sub %edi,%ecx
movb %bl,buf(,%ecx,1)
cmp $7,%edi
jnc print
inc %edi
jmp loop_ascii

//输出
print:
movl $1,%ebx
movl $4,%eax
movl $buf,%ecx
movl $10,%edx
int $0x80
//退出程序
movl $0,%ebx
movl $1,%eax
int $0x80

运行结果如下:


汇编程序与其他高级编程语言的编程思路不同,所以如果纯粹用函数编程的思想反而会搞得很麻烦,例如:

/*计算以下方程式:x=5
*y=2*x,x>=4
*y=1+x,x<4
*将值存入ebx
*/
.section .text
.globl _start
_start:
movl $5,%ebx #初始化ebx
cmp $4,%ebx #比较ebx的值
jnc fun1 #如果ebx大于等于4,就跳转到标号fun1处,计算2*ebx
addl $1,%ebx  #否则计算1+ebx
jmp exit #如果没有这句话,程序会接着执行fun1的语句,所以尽量不要把标号看作函数名来使用

fun1:
imul $2,%ebx,%ebx 
//退出程序,返回值为ebx中的值
exit:
movl $1,%eax
int $0x80

运行结果:


下图可以直观反映该程序的结构:


系统会从1开始依次向后执行,遇到跳转语句时跳转到指定的位置,接着向后执行,标号并不反映在执行程序中。

2019-08-28 07:31:20 xinquanv1 阅读数 561
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7141 人正在学习 去看看 良许

echo显示一行文字!但是你真以为只有显示一行文字那么简单吗?告诉你一些不为认知的更多echo用法,仅供参考!

1 打印简单字符串

user@user:~$ echo "hello world"
hello world

2 打印特定变量

user@user:~/bin$ var1="hello world"
user@user:~/bin$ echo "$var1"
hello world
user@user:~/bin$ echo '$var1'
$var1

linux中双引号会转义特殊符号,比如以$开头的变量;

而单引号则会默认不识别这些变量;

3 打印转义字符串

    \NNN  字符的ASCII代码为NNN(八进制)
    \\    反斜线
    \a    报警符(BEL)
    \b    退格符
    \c    禁止尾随的换行符
    \f    换页符
    \n    换行符
    \r    回车符
    \t    水平制表符
    \v    纵向制表符

4 各种颜色打印输出

复制如下脚本到文件以后方便使用各种打印;

#!/bin/bash
function LOG_GREEN()                                                 
{                                                                  
    echo -e "\033[32m${*}\033[0m"                               
}                                                                          
function LOG_YELLOW()                                               
{                                                                       
	echo -e "\033[33m${*}\033[0m"                                    
}                                                                              
function LOG_RED()                                                   
{
    echo -e "\033[31m${*}\033[0m"                                   
}                                                                   
function LOG_BLUE()                                                 
{ 
    echo -e "\033[34m${*}\033[0m"                                   
}                                                                   
function LOG_BLACK()                                                 
{
    echo -e "\033[30m${*}\033[0m"                                   
}                                

各种颜色设置参见这个脚本:

#!/bin/bash
cat << haha
    You can write like this :
        \033[one;two;three m
    This is called ansi color.
    "echo -e " you can use escapes !
    for more infomation ,try "man echo"
haha
#character attributes
a=(normal 0 
bold 1 
dim 2
italic 3
under 4
blink 5
six 6
revert 7
conceal 8
delete 9 
)  
#forecolor
b=(
black 30
red 31
green 32
yellow 33
blue 34
magenta 35
cyan 36
white 37 
)
#backcolor
c=(
black 40
red 41
green 42
yellow 43
blue 44
magenta 45
cyan 46
white 47
)
function show(){
    while test $# -gt 0;do
        echo  -e "\033[${2}m weidiao\033[0m   $1    $2" | column -t
        shift 2
    done
}
show ${a[*]}
echo ===============fore color ======================
show ${b[*]}
echo ================back color ====================
show ${c[*]}
echo ================random ========================
echo -e "\033[${b[3]};${c[1]}m weidiao is great\033[0m"

5 打印其他命令行执行结果

执行 echo `command` 或者echo $(command)

打印命令行显示结果

特别注意:``这个反单引号不是单引号;

user@user:~/bin$ echo `date`
2019年 07月 30日 星期二 11:15:21 CST

6 进制转换–其他进制转换为十进制

user@user:~/bin$ echo $((2#1010))
10
user@user:~/bin$ echo $((3#12))
5
user@user:~/bin$ echo $((8#11))
9
user@user:~/bin$ echo $((10#11))
11
user@user:~/bin$ echo $((16#11))
17

7 10进制转16进制脚本

#!/usr/bin/env bash                                                
echo "input   十进制: $1"                                            
value=$(echo "obase=16;$1" | bc)                                    
echo "ouput 十六进制: $value" 

8 16进制转10进制脚本

#!/usr/bin/env bash                                                
echo " input  16进制: $1"                                          
let i=16#$1           
echo "output  10进制: $i" 
2019-01-29 00:02:37 shadowofmill 阅读数 25
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7141 人正在学习 去看看 良许

Tips

  1. 使用 printf 命令方便地在 Linux 中进行进制转换(查找 Java 线程16进制线程 id 时经常会用到)。
    printf "%x\n" 222 打印222的16进制。
    printf "%d\n" 0x3ac 打印3ac的10进制。
    另外 %o 为八进制。
  2. Java 中 thisClass.this 的区别:
    当内部类或者匿名内部类要使用外部类的实例时使用 Class.this
class Outter {
    String name;

    class Inner {
        String name;
        String getPersonName() {
            // to fetch the Outter's name field
            return Person.this.name; 
        }
    }
}
  1. git rebase 命令,相信很多人用得还是比较少的,那么它跟 git merge 有哪些区别呢?这个可能一言难尽,网上也有很多资料可以看,所以这里只列举一个 git rebase 的常用方式。
    git rebase -i upstream|branch 合并多次提交,通过交互式编辑来完成后续操作,通常在当前分支上使用或者将分支 rebase 至其他分支上使用。

Code

Persistent Bugger from CodeWars 6kyu.
一个写得比较好的递归 solution :

    public static int persistenceWithRecursion(long n) {
        long m = 1, r = n;
        if (r / 10 == 0)
            return 0;
        for (r = n; r != 0; r /= 10)
            m *= r % 10;
        return persistence(m) + 1;
    }

非递归:

public static int persistenceWithoutRecursion(long n) {
        int times = 0;
        while (n >= 10) {
            n = Long.toString(n).chars().reduce(1, (r, i) -> r * (i - '0'));
            times++;
        }
        return times;
    }

反正都比我自己写的简洁多了。

没有更多推荐了,返回首页