原生态C/C++,如果读取打印机打印的内容

哪位朋友有c/c++相应的示例代码请指导一下。要相对完整的,不要MFC,就要原生态的。打印机是有驱USB小票打印机

3个回答

不知怎么格式有点乱了...
你照抄就行了。网上的例子很多都不能用,一运行就容易死锁,我参照好几个例子写出来的代码,坑很多的。不会死锁。

oushaomeng2011
ivan_ou 我先试试哈,有问题再向你请教。
大约 2 年之前 回复

USB小票打印机一般都是USB虚拟串口的,可以参考打印机厂家提供的命令格式。接口代码方面,我有串口的驱动,自己写的,完全不依赖MFC。
一共两个文件,一个是CPP,一个是H。
///====================================================================================
//SerialPort.cpp
///====================================================================================
#include "stdafx.h"
#include

#include "serialport.h"

CSerialPort::CSerialPort()
{
m_hCom = NULL;
memset(&m_ov, 0, sizeof(m_ov));
}

CSerialPort::~CSerialPort()
{
Close();
}

void CSerialPort::Close()
{
if(m_hCom)CloseHandle(m_hCom);
m_hCom = NULL;
}
int CSerialPort::Open(int port, DWORD dwBaudRate,BYTE byParity,BYTE byStopBits,BYTE byByteSize)
{
char fname[256];
DCB dcb; // 串口通信设备控制参数结构体
BOOL bSuccess;
COMMTIMEOUTS CommTimeOuts;

sprintf(fname, "\\\\.\\COM%d", port);
m_hCom = CreateFile(fname,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
if ( m_hCom == INVALID_HANDLE_VALUE )
    return -1;
bSuccess = GetCommState(m_hCom, &dcb);
if ( ! bSuccess )
{
    Close();
    return -1;
}
dcb.BaudRate = dwBaudRate;//波特率,默认9600
dcb.ByteSize = byByteSize;//数据位,默认8
dcb.Parity   = byParity;  //校验位,默认无
dcb.StopBits = byStopBits;//停止位,默认1
bSuccess = SetCommState(m_hCom, &dcb);
if ( ! bSuccess )
{
    Close();
    return -1;
}
SetupComm(m_hCom,6000,6000) ;
CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF ;
CommTimeOuts.ReadTotalTimeoutMultiplier = 0 ;
CommTimeOuts.ReadTotalTimeoutConstant = 30 ;
CommTimeOuts.WriteTotalTimeoutMultiplier = 2*CBR_9600/9600 ;
CommTimeOuts.WriteTotalTimeoutConstant = 0 ;
SetCommTimeouts(m_hCom, &CommTimeOuts ) ;
bSuccess = SetCommMask(m_hCom, EV_RXCHAR );

PurgeComm(m_hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR ) ;
EscapeCommFunction(m_hCom, SETDTR ) ;
m_ov.hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
if ( m_ov.hEvent == INVALID_HANDLE_VALUE )
{
    Close();
    return(-1);
}

return TRUE;

}

int CSerialPort::Write(unsigned char *pbuff, int len)
{
BOOL bSuccess;
DWORD written = 0;
if ( len < 1 )return -1;
if(m_hCom==NULL) return -1;
bSuccess = WriteFile(m_hCom,pbuff,len,&written,&m_ov);
if(!bSuccess){return -1;}
bSuccess = GetOverlappedResult(m_hCom, &m_ov, &written, TRUE);
if ( ! bSuccess )
return(-1);

return written;

}

int CSerialPort::Read(unsigned char *pbuff, int want_len)
{
BOOL bSuccess;
DWORD read = 0; // 读取的字节数
if(m_hCom==NULL)return -1;
ReadFile(m_hCom,pbuff,want_len,&read,&m_ov);
bSuccess = GetOverlappedResult(m_hCom, &m_ov, &read, TRUE);
if ( ! bSuccess )
return(-1);
return read;
}

int CSerialPort::WaitReceiveReady( DWORD dwMaxWait )
{
BOOL bSuccess;
DWORD result = 0;
DWORD read = 0; // 读取的字节数
DWORD mask = 0; // 指示发生的事件类型
bSuccess = WaitCommEvent(m_hCom, &mask, &m_ov);
if ( ! bSuccess )
{
//事件没有触发,判断异步完成没有
int err = GetLastError();
if ( err == ERROR_IO_PENDING)
{
result = WaitForSingleObject(m_ov.hEvent, dwMaxWait);
if ( result == WAIT_FAILED )
{
return(-1);
}else
{
if (mask & EV_RXCHAR)
return 1;
}
}
return 0;
}
return 1;
}
///====================================================================================
//SerialPort.h
///====================================================================================
#pragma once

class CSerialPort
{
private:
HANDLE m_hCom; //串口通信设备句柄
OVERLAPPED m_ov; //异步IO结构体,记录着输入输出需要的信息
public:
CSerialPort();
~CSerialPort();
int Open(int port, DWORD dwBaudRate=CBR_9600,BYTE byParity=0,BYTE byStopBits=ONESTOPBIT,BYTE byByteSize=8) ;
void Close();
int WaitReceiveReady(DWORD dwMaxWait);
int Read(unsigned char *pbuff, int want_len);
int Write(unsigned char *pbuff, int len);
};

///====================================================================================
//调用方法:在线程里面调用,下面是线程里面相关的调用代码
///====================================================================================
...
CSerialPort csp;
csp.Open(1); // 打开串口1
///只要线程存在就不断读取数据
for (;!bExit;)
{
ret = csp.WaitReceiveReady(50); // 等待50毫秒,如果期间有数据收到就返回1,否则50毫秒到了就返回0
if(ret==1)
{
unsigned char buff[8192];
memset(buff, 0, sizeof(buff));
ret = csp.Read(buff, sizeof(buff)); // 读数据,返回读到数据的长度
if(ret>0) // 读到数据,就处理数据
ProcData(buff, ret);
else if(ret<0)break; // 如果返回-1,说明串口出错,线程就要退出
}
else if(ret==-1)break; // 等50毫秒返回-1,说明等待出错,线程退出
}
csp.Close();
...

这个就是串口通信,串口通信时,注意串口设置清理错误消息、缓存就好了。网上一大把。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
原生态C/C++,如果读取打印机打印的内容
哪位朋友有c/c++相应的示例代码请指导一下。要相对完整的,不要MFC,就要原生态的。打印机是有驱USB小票打印机
请问怎样用C/C++读取PDF文件中的内容
想用C/C++读取PDF文件中的内容,并保存为txt格式,但技术有限,望哪位大神指点一下
c语言如何删除文本文件的内容,和读取指定文件夹里的文件?
具体来说,逐行读取部分的文件,读取其中部分数据,判断后决定是否删除本行数据,文件每天都在更新,想达到放入指定文件夹就可以读取并且删除部分不合格数据的功能,我是个c萌新,求大家帮个忙,谢谢!
C#中如何读取byte数据的某一位数值?
bool U8GetBit(U8 U8byte, int bit) { //从byte中读取某一位的数值 return true; } U8已经定义为byte,需要读取第bit位的数据,得到0或者1来判断结果; 请问如何实现这样的功能?
R 读取表格后显示内容含义
![图片说明](https://img-ask.csdn.net/upload/202001/19/1579397720_612345.png) 读取d2 表格后,右边 factor w/3是什么意思。。,冒号后面那串数字3121222什么意思。。levels , “Driver xxx”指的什么。。
C#如何读取莫IP下共享的打印机
请问大家,如果局域网的一台电脑共享的打印机。另一台知道他的IP,要怎么读取这个共享打印机的名字。因为打印机共享出来是跟目录下, 用DirectoryInfo theFolder = new DirectoryInfo(@"\\10.80.88.180\test");这种方法只能读到test目录下的,根目录读不到。入股只是DirectoryInfo(@"\\10.80.88.180\"会报 @//server/ 什么的错误。 求大神们指教,谢谢。
C++/MFC 文本文件读取
由于电脑断电,文本文件异常保存,保存的文件如下:(图1为二进制,图二为 记事本) ![图片说明](https://img-ask.csdn.net/upload/201507/02/1435814100_57350.png) ![图片说明](https://img-ask.csdn.net/upload/201507/02/1435814136_99089.jpg) 文件表现中间出现 00, CStdioFile ReadString 时读到蓝色标记处,即 00 位置,认为文件已经结束,下面的内容无法读取,请问这种情况应如何处理!
C/C++如何真正读取一行?
如题,在项目中遇到一个问题,需要把项目文件中的复合某种条件的语句全部读取出来,写入文件。 可是,实际行动的过程中,发现一个问题,那就是文件中有很多事.c文件,里面会有很多的诸如\0,\n等这样的东西,那c++得getline是不是就没办法用? 很纠结,因为要读取出来判断是否符合条件,所以肯定是要读到某个缓冲区中的,请教诸位大神,是否有办法?
C++初学者,一个关于内存读取顺序的疑惑
各位大佬好,小弟现在有个问题,就是比如我开辟了一块连续的内存,占了4个字节,四个字节的物理地址由地位到高位分别是1,2,3,4,那么我想问:cpu读取这块连续内存的时候,一定是从1(低位地址)开始读吗?或者说也可能从4高位地址开始读? 说的通俗一点就是,cpu读取内存的时候,是从低位地址开始读,还是从高位开始读,或者说都有可能?
C/C++如何读取、处理大文件
RT:我知道的就虚拟内存映射,是否多线程也可以?设内存大小2G, 1.情景:>64kB <2GB 2.情景:>2GB
JAVA 如何倒序读取并输出rtf文件的内容?
我本地有一个损坏的rtf文件,word打不开了,我想用程序读取其中的内容进行输出。但是,只能输出前边一小部分内容,我想要后边的一部分内容,各位大神有没有人知道如何倒序读取rtf文件的内容并打印到控制台上?
MFC怎么读取TXT中自己想要的数据
![图片说明](https://img-ask.csdn.net/upload/202001/14/1578977304_128472.png)![图片说明](https://img-ask.csdn.net/upload/202001/14/1578977315_361489.png) 我想要把初始化文件的数值填入到程序对应的EDIT控件中,现在只会读取文件但不会提取重要信息,求解答,谢谢
C语言编程实现:从键盘上读取任意长度的 一段文本,确定该文本中每个单词的出现频率
C语言编程实现:从键盘上读取任意长度的 一段文本,确定该文本中每个单词的出现频率
C++超大整数结构体实现乘法,就像要个乘法,网上的看不懂,希望来回答的能多写点注释或者给我讲讲!菜鸟求大佬
``` #include <stdio.h> #include <iostream> #include <string.h> #include <stdlib.h> #include <algorithm> using namespace std; //我们把输入的两个操作数放在结构体中方便解决 //首先,为了方便后面运算,我们先定义一个结构体把超长整数都定义为此类型 struct doublelong{ int d[1000]; //定义一维数组D int len; //下面定义构造函数,初始化,给予长度 doublelong(){ memset(d,0,sizeof(d)); //memset为初始化函数 数组d sizeof求出的d大小赋予空间 指向要填充的内存块d //d用于存放 输入的两个操作数 //全初始化为0 len=0; } }; //大整数使用字符串输入的, //下面将字符串储存的大整数 //存放在结构体中 doublelong change(char str[]){ doublelong a; a.len=strlen(str);//得出输入的大整数长度写入结构体中 for(int i=0;i<a.len;i++){ a.d[i]=str[a.len-i-1]-'0';//这里把大整数的地位切换为高位 反序 } return a; } //比较两个大整数的大小 int compare(doublelong a,doublelong b){ int g; //greater此处返回更大数字 g的值为1时a的值更大,2时b的值更大,为0时两个数字的值相等 //由于我们此函数只比较两个输入数字的绝对值,由于运算方式是单独判断符号所以不对符号进行比较 if(a.len>b.len){ g=1;return g;//a大于b } else if(a.len<b.len){ g=2; return g;//a<b } else{ for(int i=a.len-1;i>=0;i++) //一位位对比一位位读取向后读 { if(a.d[i]>b.d[i]) { g=1;return g; } if(a.d[i]<b.d[i]) { g=2;return g; } if(a.d[i]=b.d[i]) { g=0;return g; } } } } //下面是大数的四则运算法则 doublelong add(doublelong a,doublelong b) { doublelong c; int carry=0;//这里的carry表示进位 for(int i=0;i<a.len||i<b.len;i++) //循环向后读取相加 { int temp=a.d[i]+b.d[i]+carry; c.d[c.len++]=temp%10; //将我们相加得到的temp值给写入我们的输出大整数c中去 carry=temp/10;//求是否有进位 } if(carry!=0) {//如果最后一位的进位不为0,直接付给结果的最高位 c.d[c.len++] =carry; } return c;//程序结束返回doublelong c } void print(doublelong a) { for(int i=a.len-1;i>=0;i--) { printf("%d",a.d[i]); } } ```
从txt读取数据时系统自动多读取了一部分零碎的数据,希望大佬们能帮忙解决一下。
本人c++萌新,对c++还不太熟悉。(已解决,谢谢大家) 参考信息:【mie haha 的博客】转载请注明出处(万分感谢!): https://blog.csdn.net/qq_40315080/article/details/88176331 ![图片说明](https://img-ask.csdn.net/upload/202001/03/1578043480_334799.png)(调试照片以及txt文档) (修改如下,具体原因可见我转载的文章)![图片说明](https://img-ask.csdn.net/upload/202001/03/1578062048_231754.png) 读取函数如下: ``` void Class::class_Read() //从文件读入数据 { Date *p; p = ClassHead; ifstream in("class.txt"); if (!in) { cout << "没有课程信息,请先录入课程信息!" << endl; return; } while (1) { string n,e; int s; double N,t; in >> N >> n >> t >> s >> e; class_insert(N,n,t,s,e); if(in.fail()) { break; } } in.close(); } #endif; ```
flume 读取csv数据时,发生数据被截取
flume---hdfs sink写的文件。 大概是由于一行数据大小超过16个字节,导致flum在event时,把一条数据截取成两段 ![图片说明](https://img-ask.csdn.net/upload/202001/16/1579146530_754802.png) 大致去网上查找了一些资料,都说是EventHelper 中的DEFAULT_MAX_BYTES问题,但都没给出解决问题答案!我想让event body读取整行数据!麻烦各路大神,帮帮忙!急!!! ``` private static final int DEFAULT_MAX_BYTES = 16; ``` 相关资料: https://www.maiyewang.com/archives/23888
c++ 如何缓存传入数据,并每次从中取出指定大小的数据
假如用户每次给我传入1000大小的数据,直到传入0表示截止,我需要把它缓存起来,然后每次去读取800大小的数据去使用,该如何存贮和读取?
C#根据路径从本地读取Excle文件内容,修改内容后以Excle文件形式保存到当前路径下
根据路径从本地读取Excle文件内容,修改内容后以Excle文件形式保存到当前路径下
C++关于scanf格式化读取的问题
读取年份2019\2\12 已经知道可以通过cin>>a>>b>>c进行读取 想知道可以通过scanf进行格式化读取吗
类的定义和它的成员函数的实现分开放会报错
为什么将类的定义和它的成员函数的实现分别放在.h和.cpp中就会报错: LNK2019: 无法解析的外部符号 "public: void __cdecl YtPlc_Mitsubishi_Mc::InitParam(void)" (?InitParam@YtPlc_Mitsubishi_Mc@@QEAAXXZ),该符号在函数 main 中被引用 PLC_test D:\zhoujy\prj\PLC_test\PLC_test\PLC_test.obj .h中的代码如下: ``` class YtPlc_Mitsubishi_Mc // : public YtPlc { public: YtPlc_Mitsubishi_Mc(); //初始化参数 void InitParam(); }; ``` .cpp中的实现如下: ``` #include "ytplc_mitsubishi_mc.h" YtPlc_Mitsubishi_Mc::YtPlc_Mitsubishi_Mc() { } void YtPlc_Mitsubishi_Mc::InitParam() { //发送命令 write_buff_[0] = 0x50; // 副头部 write_buff_[1] = 0x00; // 副头部 write_buff_[2] = 0x00; // 网络编号 write_buff_[3] = (char)0xff; // 可编程控制器编号 write_buff_[4] = (char)0xff; // 请求目标模块I/O编号L write_buff_[5] = 0x03; // 请求目标模块I/O编号H write_buff_[6] = 0x00; // 请求目标模块站号 // 长度从CPU监视定时器L到指令结束 write_buff_[7] = 0x00; //请求数据长度L write_buff_[8] = 0x00; //请求数据长度H //CPU 监视定时器 0:无限等待 0001~FFFF H (1~65535): 等待时间(单位 250ms) @《三菱Q_L系列通信协议参考》3.1.3 P73 write_buff_[9] = 0x01; // CPU监视定时器L write_buff_[10] = 0x00; // CPU监视定时器H // 指令1401 @《三菱Q_L系列通信协议参考》3.3.7 P154 write_buff_[11] = 0x01; // 指令L write_buff_[12] = 0x14; // 指令H write_buff_[13] = 0x00; // 子指令L write_buff_[14] = 0x00; // 子指令H // 字单位的批量写入 write_buff_[15] = 0x00; // 起始软元件 write_buff_[16] = 0x00; // 起始软元件 write_buff_[17] = 0x00; // 起始软元件 write_buff_[18] = 0x00; // 软元件代码 write_buff_[19] = 0x00; // 软元件点数 write_buff_[20] = 0x00; // 软元件点数 // 软元件点数的范围 // e.g 1995H 1202H 1130H -> {95H 19H 02H 12H 30H 12H} for (int i = 0; i < 20; i++) { write_buff_[21 + i * 2] = 0x00; write_buff_[21 + i * 2 + 1] = 0x00; } //读取命令 read_buff_[0] = 0x50; // 副头部 read_buff_[1] = 0x00; // 副头部 read_buff_[2] = 0x00; // 网络编号 read_buff_[3] = (char)0xff; // 可编程控制器编号 read_buff_[4] = (char)0xff; // 请求目标模块I/O编号L read_buff_[5] = 0x03; // 请求目标模块I/O编号H read_buff_[6] = 0x00; // 请求目标模块站号 read_buff_[7] = 0x0c; //请求数据长度L read_buff_[8] = 0x00; //请求数据长度H //CPU 监视定时器 0:无限等待 0001~FFFF H (1~65535): 等待时间(单位 250ms) @《三菱Q_L系列通信协议参考》3.1.3 P73 read_buff_[9] = 0x01; // CPU监视定时器L read_buff_[10] = 0x00; // CPU监视定时器H // 0401 T寄存器读取 @《三菱Q_L系列通信协议参考》3.3.6 P150 // WARNING: M寄存器读取 send_buff_[18] = 0x90 待确认 read_buff_[11] = 0x01; // 指令L read_buff_[12] = 0x04; // 指令H read_buff_[13] = 0x00; // 子指令L read_buff_[14] = 0x00; // 子指令H // 字单位的批量写入 read_buff_[15] = 0x00; // 起始软元件 read_buff_[16] = 0x00; // 起始软元件 read_buff_[17] = 0x00; // 起始软元件 read_buff_[18] = 0x00; // 软元件代码 read_buff_[19] = 0x00; // 软元件点数 read_buff_[20] = 0x00; // 软元件点数 } ``` 但如果把它们都放到头文件中,即把成员函数和构造函数的实现和类的定义放到一起,就不会有这个问题了
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
这篇文章通过对话的形式,由浅入深带你读懂 AVL 树,看完让你保证理解 AVL 树的各种操作,如果觉得不错,别吝啬你的赞哦。 1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。 2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。 3、它的左右子树也分别可以充当为二叉查找树。 例如: 例如,我现在想要查找数值为14的节点。由于二叉查找树的特性,我们可...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
《C++ Primer》学习笔记(六):C++模块设计——函数
专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 https://blog.csdn.net/TeFuirnever/article/details/100700212 —————————————————————————————————————————————————————— 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数 文章目录专栏C+...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问