MSP430F5529开发板,如何实现不接外部的上拉电阻,编写4X4键盘代码。

通过软件内部上拉电阻,

P3.0--P3.3为输出口,P3.4--P3.7为输入口上拉电阻

#include <msp430f5529.h>
unsigned int Keyscan();                   //申明按键检测函数
unsigned int key;                         //设置的返回变量
unsigned int Keyscan()                    //按键检测函数
{
    unsigned char key_ch;
    unsigned char count, j;
    P1OUT |= 0x00;
    if((P3IN & 0xF0) == 0)
    {
        __delay_cycles(10000);       //延时10ms
        if((P3IN & 0xF0) == 0)
        {
            count = 0xFE;
            while((count & 0xF0) != 0xF0);//等待按键抬起
            {
                P3OUT = count & 0x0F;
                if((P3IN & 0xF0) == 0)
                {
                    j = (P3IN & 0xF0)|0x0F;
                    key_ch = (j & count);
                    return key_ch;
                }
                else
                {
                    count = (count << 1)|0x01;
                }
            }
        }
        return 0xFF;
    }
    return 0xFF;
}
char Getkey_num(char k)
{
    char num;
    switch(k)
    {
    case 0x77:
        num = 0;
        break;
    case 0x7B:
        num = 1;
        break;
    case 0x7D:
        num = 2;
        break;
    case 0x7E:
        num = 3;
        break;
    case 0xB7:
        num = 4;
        break;
    case 0xBB:
        num = 5;
        break;
    case 0xBD:
        num = 6;
        break;
    case 0xBE:
        num = 7;
        break;
    case 0xD7:
        num = 8;
        break;
    case 0xDB:
        num = 9;
        break;
    case 0xDD:
        num = 10;
        break;
    case 0xDE:
        num = 11;
        break;
    case 0xE7:
        num = 12;
        break;
    case 0xEB:
        num = 13;
        break;
    case 0xED:
        num = 14;
        break;
    case 0xEE:
        num = 15;
        break;
    default:
        num = 122;
        break;
    }
    return num;
}

void main(void)
{
    WDTCTL=WDTPW+WDTHOLD;         // 关闭看门狗
    P1DIR |= BIT0;                //配置P1.0为输出功能
    P4DIR |= BIT7;               //接LED1
    P1OUT &= ~BIT0;             //配置P4.7为输出功能
    P4OUT &= ~BIT7;         //接LED2
    /*按键初始化*/
    P3DIR &= ~(BIT4 + BIT5 + BIT6 + BIT7);
    P3OUT |= (BIT4 + BIT5 + BIT6 + BIT7);
    P3REN |= (BIT4 + BIT5 + BIT6 + BIT7);    //设置为内部上拉
    while(1)
    {
        key = Getkey_num(Keyscan());             //按键检测
        if(key != 122)
        {
            P1OUT ^= BIT0;
        __delay_cycles(1000000);
        }
        else
        {
            P4OUT ^= BIT7;
        __delay_cycles(1000000);
        }
    }
}

代码如上,建立编译没问题,但是通过点击4X4按键,LED1(P1.0)没有点亮。
如有错误,请大佬们指出。
(是不是一定需要外部上拉电阻。)
望各位大佬指导一下,感激不尽
可以的话,能给出关键代码量。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
单片机MSP430f5529看门狗定时器
MSP430f5529,用看门狗定时器使p3.7引脚相连的LED每秒点亮一次,灯亮的时间为定时的四分之一
大神们求助关于msp430f5529
求一个基于msp430f5529的贪吃蛇和走迷宫的小游戏代码(>﹏<)(>﹏<)(>﹏<)(>﹏<)
msp430f5529驱动安装后在我的电脑上无显示
最开始msp430f5592lp安装驱动成功后在我的电脑显示为fat,现在没有窗口了,请问该怎么样弄才能打开里面的文件呢?
关于MSP430F5529单片机的串口问题
一句话,我要疯了,,现在的问题是,使用的串口调试助手来调试的,开发环境从IAR低版本到高版本以及CCS,程序是官方程序和自己编写的,以及网友的。板子是标准板,还有个自己的板子。USB转串口线两条。但是结果都一样。 主要是使用串口调试助手发送字符串,然后接收相同的。结果是,如果我发较长的字符串,前四位会丢失。单个发送字符,根本没有任何返回信息。我简直要疯了,真的不知道原因了,期待大神拯救啊 代码如下: #include <msp430.h> int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P3SEL = BIT3+BIT4; // P3.4,5 = USCI_A0 TXD/RXD UCA0CTL1 |= UCSWRST; // **Put state machine in reset** UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 = 6; // 1MHz 9600 (see User's Guide) UCA0BR1 = 0; // 1MHz 9600 UCA0MCTL = UCBRS_0 + UCBRF_13 + UCOS16; // Modln UCBRSx=0, UCBRFx=0, // over sampling UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** UCA0IE |= UCRXIE; // Enable USCI_A0 RX interrupt P4OUT=0; __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled __no_operation(); // For debugger } // Echo back RXed character, confirm TX buffer is ready first #pragma vector=USCI_A0_VECTOR __interrupt void USCI_A0_ISR(void) { switch(__even_in_range(UCA0IV,4)) { case 0:break; // Vector 0 - no interrupt case 2: // Vector 2 - RXIFG while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX buffer ready? UCA0TXBUF = UCA0RXBUF; // TX -> RXed character break; case 4:break; // Vector 4 - TXIFG default: break; } }
msp430F5529A中断程序运行卡顿
菜鸟写了一段程序如下,希望实现电子秤的功能。中断的话是两个按键触发的,首次按下S1,清零;第二次按下S1进行称重;按下S2则关机。 真正运行起来卡的不行甚至动不起来,请问是不是我的主函数设计有问题? 还有求多个触发中断的例程,感觉自己写的结构确实很不合理。 谢谢啦 void main(void) { P1DIR = 0X00;//调零,按下S1+开始称重,按下S1:设置P1.7为输入状态 P1IE = 0X80;//设置P1.7开中断 P1IES = 0X00;//设置P1.7中断为上升沿中断 P1IFG = 0;//清除P1的中断标志,无所谓,因为不用这个标志判断进入何种中断程序 _EINT();//开全局中断 P2DIR = 0X00;//关机,按下S2(P2.2),设为输入状态 P2IE = 0X04;//设置P2.2开中断 P2IES = 0X00;//设置P2中断为上升沿中断 _EINT();//开全局中断 welcome(); LPM3; } 具体的中断响应是这样的: #pragma vector = PORT1_VECTOR __interrupt void P1_ISR(void) { switch(m) //m为全局变量,初始值为1 { case 1: { m = 0; ADC(); zero[0] = results[0]; display0(); LPM3; } //实现清零功能 case 0: //实现称重功能 { ADC(); //称量程序 char q[4]; results[0] = results[0] - zero[0]; for(int i=3 ; i>=0; --i) { q[i] = results[0]%10+48; results[0]=results[0]/10; } display(q); LPM3; } } } #pragma vector = PORT2_VECTOR __interrupt void P2_ISR(void) { switch(k) { case 1: { k = 0; display2(); LPM3; } case 0: { k =1; welcome(); } } } 拜谢
msp430f5529关于灯闪烁间隔问题
请问下我想用timerA来使灯的闪烁间隔为20s,就是灯亮20s,灭20s,但他的极限就只有几秒,怎么改进来实现或者用其他方法
MSP430f5529捕获上升沿,当捕获一定数量时驱动步进电机。
用上升沿捕获,当上升沿数量到达我预设目标时,步进电机的相序开始增加,主函数用数组使步进电机转动,可事实是步进电机只是震动,希望请大神看看是不是我逻辑错了 ``` #include<msp430.h> #define uint unsigned int volatile unsigned int i,j,k=0; int cycle[100]; /*****static const unsigned char fullstepA[]= { 0x02,0x0a,0x08,0x09,0x01,0x05,0x04,0x06,0x02};****/ static const unsigned char fullstepB[]= { 0x02,0x06,0x04,0x05,0x01,0x09,0x08,0x0a,0x02}; void IO() { P1DIR|=BIT0; //p1.0选择ACLK输出 //P1OUT&=~BIT0; P1SEL|=BIT0; P4DIR|=BIT7; P4OUT&=~BIT0; P2DIR&=~BIT0; P2REN |= BIT0; //启用P2.0内部上下拉电阻 P2OUT |= BIT0; //将电阻设置为上拉 P2SEL|=BIT0; P6DIR |=0x0f; P6OUT |=0x0f; } void main() { WDTCTL = WDTPW | WDTHOLD; IO(); TA1CCTL1=CM_1+SCS+CAP+CCIE;//CCR1工作于捕获模式,同步捕获,上升沿触发,中断使能; TA1CTL|=TASSEL_2+MC_2+TACLR+TAIE;//TA1主时钟SMCLK,连续计数模式,清除TAR; _EINT(); //全局中断 while(1) { /**** if(k==1) { P6OUT=fullstepA[j]; }*****/ if(k==2) { P6OUT=fullstepB[j];} //转动步进电机 } } #pragma vector=TIMER1_A1_VECTOR __interrupt void TIMER_A1(void) { switch(TA1IV) { case 2: cycle[i]=TA1CCR1; //将计数器的数值存入数组中 i++; if(i<=50) { P4OUT &=~ BIT7; //灯的输出 k=1; } if(i>50) { k=2; P4OUT|=BIT7; j++; //步进电机相序累加 if(j==7) {j=0;} // i=0; } } } ```
msp430f149控制lcd12864显示汉字
msp430f149控制lcd12864显示汉字代码,msp430f149控制lcd12864显示汉字代码下载
关于通过MSP430F149实现对RC522的写卡操作。
我是一个新人,刚刚接触嵌入式。 前几日在淘宝购买了 MSP430F149和RFID RC522。收到货之后,按照流程测试了MSP430F149,正常。 并且按照PDF《RFID RC522读卡模块使用说明》对RC522进行了读卡操作,也正常。但是想要学习进行写卡操作,打开IC调试程序之后,寻卡总是失败。请问原因是什么? 需要重新烧录哪一个程序吗?还是接线方式需要更改,连接上也没有使用说明上的蜂鸣声。谢谢! (我在百度和搜狗查询很久,基本都是po出来一段代码) 程序和软件这个链接里面: 提取码:mjir [程序和代码](https://pan.baidu.com/s/1Zz-4E5Kw_Hv1HQZwjOM5mA "提取码:mjir ")
请问msp430处理串口数据为什么只能处理一个字节
我在处理msp430接收中断函数,发现实际串口助手发送一个字符串,单片机其实只会响应其中一个字符,是单片机本身特点就这样么?我都是用开发板例子写的,照理说应该没啥问题,也和芯片书上写的对过了感觉程序应该没问题,所以找论坛大牛确认一下
msp430关于编译的问题
msp430g2553使用ccs编译时,出现这个问题应该如何处理。谢谢![图片](https://img-ask.csdn.net/upload/201703/26/1490511513_653778.jpg)
msp430F5438程序,为什么不能在中断中关本中断
比如我做了一个十字路口红绿灯的控制程序: 1. 东西的道路为主干道,一般保持绿灯畅通,而南北向为人流很小的人行道,一般保持红灯禁行。当一行人想要通行南北向时,他可以通过按按钮使南北向转为绿灯而东西向则变为红灯,从而得以通过人行路口。 2.注意,按过按钮后南北向人行道绿灯通行时间为15秒,之后南北向恢复红灯而东西向主干道再次绿灯畅通,即回归初始状态。另外,恢复初始状态后的10秒内,一直保持东西绿南北红的状态,按钮不会起作用。 3.我的想法是,在P2.7口的输入中断子程序中,通过延时15秒使南北变绿东西变红15秒,先“关闭P2.7的中断使能”,以实现上面的:“恢复初始状态后的10秒内,一直保持东西绿南北红的状态,按钮不会起作用”。其中,“P2.7不起作用”的10秒时间由后面的“启动定时器”函数计时。 4.计满10秒后,在定时器中断子程序中再重新“打开P2.7中断使能”,同时“关闭定时器”。 5.c语言程序如下 ![图片说明](https://img-ask.csdn.net/upload/201701/20/1484885254_731385.png) 问题是:为什么io中断无法关闭,定时器中断进不去? 现在我身边没有板子也没法验证,电路用延时验证过没问题,就是程序问题,请感兴趣的朋友帮忙看看可能是什么问题,谢谢大家
用msp430完成一道题目
用msp430实现如下功能: 从p1口读入4个开关状态转换为16进制数,从p2口输出到数码管显示(共阴极) 要求: 1.求实现此功能的程序,并且逐行解释程序,越详细越好。 2.画出相应的硬件电路图。
MSP430F247串口发送问题,求高手帮忙看一下,谢谢,实在是弄不出来了~
我的程序是这样的: #include <msp430f247.h> void delay_us(int n) { for(int i=0; i<n; i++) for(int j=0; j<8; j++); } void UartInit() { UCA0CTL1 |= UCSWRST; P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD UCA0CTL1 |= UCSSEL1; //8Mhz, 115200 UCA0CTL0 = 0; // UCA0CTL0 &= ~UC7BIT; //no parity, 8-bit data, uart mode UCA0BR0 = 69; UCA0BR1 = 0; UCA0MCTL |= UCBRS2; UCA0CTL1 &= ~UCSWRST; IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt } int main( void ) { volatile unsigned int i; // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; //clock set BCSCTL1 &= ~XT2OFF; // XT2on BCSCTL2 |= SELM1 + SELS + DCOR; do { IFG1 &= ~OFIFG; // Clear OSCFault flag delay_us(50); }while((IFG1 & OFIFG)); // BCSCTL3 |= XT2S1; //uart init UartInit(); //spi init // SpiInit(); _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt while(1) { while (!(IFG2&UCA0TXIFG)); UCA0TXBUF = 0xab; } } #pragma vector=USCIAB0RX_VECTOR __interrupt void USCI0RX_ISR(void) { while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready? UCA0TXBUF = UCA0RXBUF; // TX -> RXed character } 实在是弄不明白为什么每次启动单片机就发送了个0xE0然后就没了,但是我的while里面是一直发送的啊,而中断程序里的发送是正常的,也就是当pc给单片机发送的时候单片机将收到的字节发送回来是可以的,怎么调都是这样的,求大神指点一二,谢谢了~
MSP430F149串口接收中断数据存储问题,SOS~
我在使用串口接收中断读取NFC模块数据时,我想将NFC模块回传的状态指令存储于数组中。通过串口助手,NFC模块可以收到单片机发送的请求指令,同时会向MSP430单片机发送状态指令。但是数组中并没有相关数据,请各位指点迷津,感激不尽!代码如下: ``` /********************************************************************** USART0 接收中断函数 ***********************************************************************/ #pragma vector = USART0RX_VECTOR __interrupt void Usart0_Rx(void) { IE1&=~URXIE0; //关闭串口中断使能 uint i=3; uchar *pq0=value; //value[N_Data]={0xfe,0xfe,0xfe,0xf,...} SendUart(pq0,N_Data); //发送数据请求指令 Add_UsData(RXBUF0); //接收NFC状态 while(P2IN==1) //有手机靠近NFC { i--; if(aRxBuff[9]==0xE7) { TXBUF0 = (uchar)times0; } else SendUart(pq0,20); if(i==0) break; } IE1|=URXIE0; // 使能USART0的接收中断 } /********************************************************************** 功能:发送函数。采用查询方式。 PBuffer:指向发送数据缓冲区的指针 n_byte:发送的字节数 ***********************************************************************/ void SendUart(uint *pBuffer,uint n_byte) { uint q0; for(q0=0;q0<n_byte;q0++) { while((IFG1&UTXIFG0)==0); //判断是否发送完毕 TXBUF0=*pBuffer; pBuffer++; } pBuffer=0; } /********************************************************************** 处理NFC状态数据 ***********************************************************************/ void Add_UsData(uchar *sq0) { if(NRxBuff<N_Data) { while((IFG1&URXIFG0)==0); //判断是否接收完毕 aRxBuff[NRxBuff]=*sq0; NRxBuff++; } NRxBuff=0; } ```
单片机MSP430怎么通过按键点灯啊
我想不按键的时候LED2灯(对应P1.6引脚)亮,LED1灯(对应P1.0引脚)灭。 按下按键后两灯互换状态并延迟30s左右,再复位。 程序已经写好了,但不知道哪里出了点问题,不能实现我这个功能,帮忙看一下,谢谢! ``` #include <msp430g2553.h> void main(void) { WDTCTL=WDTPW+WDTHOLD; P1OUT &= ~BIT0; //设置p1.0输出置地 P1OUT |= BIT6; //设置p1.6输出置高 P1OUT &= ~BIT0; //设置p1.0输出置地 P1DIR |= BIT6; //设置p1.6为输入 P1DIR &= ~BIT3; //设置p1.3为输入 P1REN |= BIT3; //使能内部电阻 P1OUT|=BIT3; //电阻上拉 int CLO(); RE_2: while(1) { switch(P1IN & BIT3) { case 0: { P1OUT |= BIT0; //p1.0开灯 P1OUT &= ~BIT6; //p1.6关灯 CLO(); P1OUT &= ~BIT0; //p1.0关灯 P1OUT |= BIT6; //p1.6开灯 break; } case 1:break; } goto RE_2; } } int CLO() //延迟30s { int i=1; while(1) { while(i<60) //12 *5s=60s { __delay_cycles(500000); //5s i++; } } } ```
编了一个MSP430f249捕获脉冲宽度的程序,没有捕获到数据,麻烦大神们帮忙看看
程序代码如下: main.c文件: /*定时器B测量某输入信号脉冲宽度*/ #include <msp430f249.h> #include"lcd.h" #define M1 10 unsigned int cap1,N1; long width[10]={0,0,0,0,0,0,0,0,0,0}; char m=0; char lcd_buf[]={0,0,0,0,0,0}; long data; const char table[]="0123456789"; const char table1[]="width(us)"; void data_to_buf(unsigned long data2)//值送显示缓冲区函数 { unsigned char i; for(i=0;i<6;i++) { lcd_buf[i]=table[data2%10];//此时低位在前 data2=data2/10; } for(i=5;i>0;i--) { if(lcd_buf[i]=='0') lcd_buf[i]=' ';//数字其那面的0不显示 else break; } } void main( void ) { char num,k1; // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;//关闭看门狗 BCSCTL2=SELS+DIVS0+DIVS1;//SMCLK=XT2 P4SEL|=0x01;//P4.0作为捕获模块功能输入端输入方波 P5DIR=0xFF;//设置P5端为输出 P6DIR=0xFF;//设置P6端为输出 lcdinit(); //TBCCTL0=0;//捕获源为P4.0,即CCI0A(也是CCI0B) TBCCTL0|=CM_1+SCS+CAP+CCIE;//上升沿捕获,同步捕获,工作在捕获模式 //+终端允许 TBCTL|=TBSSEL_2+MC_2+TBIE;//选择SMCLK+连续计数模式 //+终端允许 write_com(0x80);//显示第一行字 for(num=0;num<10;num++) write_data(table1[num]); _EINT();//中断允许 while(1) { data=0; for(k1=0;k1<M1;k1++) data+=width[k1]; data=data/M1; //data=10000; if(m==0) { data_to_buf(data);//数据送显示缓冲区 write_com(0x80+0x40);//第二行显示频率 for(num=0;num<6;num++) write_data(lcd_buf[5-num]); } } } #pragma vector=TIMERB0_VECTOR __interrupt void TimerB0(void)//定时器TB的CCR0的中断,用于检测脉冲上升与下降 { if(TBCCTL0&CM1)//捕获到下降沿 { width[m++]=65536*N1+TBCCR0-cap1;//记录下结束时间 N1=0; TBCCTL0=CM_1+SCS+CAP+CCIE;//+TBCLR; //改为上升沿捕获,CM1置0,CM0置1 if(m==M1) m=0; } else if(TBCCTL0&CM0)//捕获到上升沿 { cap1=TBCCR0; N1=0; TBCCTL0=CM_2+SCS+CAP+CCIE;//+TBCLR; //改为下降沿捕获,CM0置0,CM1置1 } } //Timer_B7 Interrupt Vector(TBIV) handler #pragma vector=TIMERB1_VECTOR __interrupt void Timer_B(void) { switch(TBIV) { case 14:N1++;break;//溢出 } } lcd.c文件: #include<msp430f169.h> #define lcdrs_0 P6OUT&=~BIT0;//P6.0=0命令 #define lcdrs_1 P6OUT|=BIT0;//P6.0=1 #define lcden_0 P6OUT&=~BIT2;//P6.2=0 #define lcden_1 P6OUT|=BIT2;//P6.2=1 void delay(unsigned int z) { unsigned int i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); } void write_com(char com) //写入 { lcdrs_0;//LCD选择输入命令 P5OUT=com;//向P0端口输入命令 delay(5);//延时 lcden_1;//打开LCD使能 delay(5);//一个高脉冲 lcden_0;//关闭LCD使能 } void write_data(char dataout) { lcdrs_1;//设置为输入数据 P5OUT=dataout;//将数据赋给P0端口 delay(5);//延时 lcden_1;//置高 delay(5);//高脉冲 lcden_0;//置低,完成高脉冲 } void lcdinit() { lcden_0; write_com(0x38);//设置16X2显示5X7点阵,8位数据接口 write_com(0x0c);//设置开始显示,不显示光标 write_com(0x06);//写一个字符后地址指针加1 write_com(0x01);//显示清零,数据指针清零 } lcd.h文件: extern void delay(unsigned int z); extern void write_com(char com); extern void write_data(char dataout); extern void lcdinit(); 仿真结果如下: ![图片说明](https://img-ask.csdn.net/upload/201504/06/1428309208_679265.png) 在单片机上试结果一样没有。
msp430接1602无法显示
用430g2553与1602用4根数据线,程序调试的时候正常,全速运行就不行了,是怎么回事
单片机msp430实验求解
谁有单片机msp430汽车转向灯实验的程序和proteus仿真图啊,急求啊,谢谢
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
redis分布式锁,面试官请随便问,我都会
文章有点长并且绕,先来个图片缓冲下! 前言 现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。 说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢? 实现要点 互斥性,同一时刻,智能有一个客户端持有锁。 防止死锁发生,如果持有锁的客户端崩溃没有主动释放锁,也要保证锁可以正常释...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目 Google Guava 参考博客
相关热词 c# 二进制截断字符串 c#实现窗体设计器 c#检测是否为微信 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片
立即提问