C++ unsigned char* 转 int*,操作符重载,隐式类型转换

unsigned char * data;
data是内存连续的数组,size很长,需要转换成 int * ints;
其中 每三个char组合一个int
比如

ints[0] = (data[0]<< 16) | (data[1]<< 8 ) | data[2] ;

我不希望用for循环遍历算出来,以及频繁的内存拷贝操作,效率太低

下面是我没走通的路子:

typedef struct int24 {
    uchar r, g, b;
    operator int() {
            return b | (g << 8) | (r << 16);
    }
}

unsigned char * data = ...
int24 * tmp = (int24 * ) data;
int *  ints = (int * ) tmp;

使用int * ints = (int * ) tmp毫无意义,还是指针转换,没能应用到重载操作符类型转换

最终结果是得到int * ,是否有别的方法?望指教。

4个回答

 typedef struct int24 {
    unsigned char start;

    const int operator[](int index) const 
    {
        const unsigned char* pStart = &start;
        return pStart[2 + index * 3] | (pStart[1 + index * 3] << 8) | (pStart[0 + index * 3] << 16);
    }
}int24;

int main(int argc, char* argv[])
{
    unsigned char data[1024] = {0,1,1, 0,0,1, 0,1,0, 0};
    int24* tmp = (int24 *) data;
    int24& int24Object = *tmp;

    printf("front three num %d, %d, %d", int24Object[0], int24Object[1], int24Object[2]);

    return 0;
}

也可以这样,输出结果为:front three num 257, 1, 256

u013147734
渐行渐远是否还有一种坚持留在心间 现在需要for循环一遍,但我少了int*开辟内存,以及调用者拿到数据之后copy到他的空间的操作.
接近 2 年之前 回复
u013147734
渐行渐远是否还有一种坚持留在心间 非常感谢你的回答,,你这个结果是符合预期的,但我的问题描述的不好。 是要实现这个方法 int * convert(unsigned char * data); 我不能renturn int24Object。 我的问题已通过其他方式解决了,现在我不需要生成int * ,而是直接拿调用者的指针,操作指针指向的内存,效率已经高多了。非常感谢你的回答
接近 2 年之前 回复

24bit写来写去效率都不可能高,因为数据不对齐。底层硬件就决定了这一点,在c++层面折腾只是徒劳。
数据不对齐意味着产生的机器指令的load/store都是交错的,完全浪费了cpu的fetch
需要搞清楚你的上层需求,然后完整地考虑这个问题。

直接把
operator int() {
return b | (g << 8) | (r << 16);
}
写成一个普通方法,比如
int result() {
return b | (g << 8) | (r << 16);
}
然后直接用指针调用可以吗?
int ints = tmp->result();

shihengzhen101
AlbertS 回复u013147734: 你还想得到数组?那你只能重写[]操作符了
接近 2 年之前 回复
u013147734
渐行渐远是否还有一种坚持留在心间 不行,这得到的是一个int,不是数组,应该只相当于调用tmp[0].result()。 我想了一下,这个原则上应该行不通,最终结果int*是32位连续的,那么势必要在前8位补0,不可能不扩展内存。后续对ints[i]是直接寻址,也不可能只读24位。
接近 2 年之前 回复

试试这样写呢?

 typedef struct int24 {
    unsigned char start;
    int operator[](int index) {
        unsigned char* pStart = &start;
        return pStart[2 + index * 3] | (pStart[1 + index * 3] << 8) | (pStart[0 + index * 3] << 16);
    }
}int24;

int main(int argc, char* argv[])
{
    unsigned char data[1024] = {0,1,1, 0,0,1, 0,1,0, 0};
    int24* tmp = (int24 *) data;

    printf("front three num %d, %d, %d", tmp->operator[](0), tmp->operator[](1), tmp->operator[](2));

    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++ unsigned char* 转 int*,操作符重载,隐式类型转换

unsigned char \* data; data是内存连续的数组,size很长,需要转换成 int \* ints; 其中 每三个char组合一个int 比如 ``` ints[0] = (data[0]<< 16) | (data[1]<< 8 ) | data[2] ; ``` 我不希望用for循环遍历算出来,以及频繁的内存拷贝操作,效率太低 下面是我没走通的路子: ``` typedef struct int24 { uchar r, g, b; operator int() { return b | (g << 8) | (r << 16); } } unsigned char * data = ... int24 * tmp = (int24 * ) data; int * ints = (int * ) tmp; ``` 使用int \* ints = (int \* ) tmp毫无意义,还是指针转换,没能应用到重载操作符类型转换 最终结果是得到int \* ,是否有别的方法?望指教。

unsigned char** 用C#如何表示?

有一个第三方提供的dll,其中一个方法是C写的方法 int tele(unsigned char** imageStream), 我在C#中引用如下: [DllImport("Dmytr.dll", EntryPoint = "tele", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)] public static extern int tele(IntPtr imageStream); 这样写,对吗?

C语言中,char* 类型如何转换成 char[]类型

直接上码吧。 typedef unsigned char BYTE; char* bufheader; bufheader = (char *)malloc(sizeof(char) * BUFLENGTH ); FILE* readheader = fopen(filename, "rb"); fread(bufheader, 1, BUFLENGTH, readheader); BYTE m_byData[MAX]; 我想实现:m_byData = bufheader; 但是不行,(注:MAX > BUFLENGTH) 想问下该怎样才能实现 “m_byData = bufheader”,就是把 bufheader 中的二进制数据放到 m_byData 中。

如何编写强制类型转换运算符将(const char*)转换成const char*

将(const char*)转换成const char* 比如 const char*p= (const char*) str

char** strNumbers = (char**)(new int[length]) 是什么意思?

char** strNumbers = (char**)(new int[length]) 这句话的意思是说申请了 length 个 int 大小的空间给 strNumbers 用吗? 如果是的话为什么不用 char** strNumbers = (char**)(new char[4*length]) ?

unsigned char [] 与 std::string 相互转换问题!C++

求这两个类型的相互转换的代码,同时还想问下怎样将大文件转换为 unsigned char [] 类型。(验证文件时过大读不进内存)

VS编译时报错: error C2664: 无法将参数 1 从“const char []”转换为“char *

有一段能够在Linux下运行的代码,复制到Windows&VS2017 包含文件chartheader0.txt的Tools文件夹复制到了项目目录里。 编译时 ```void printChartHeader(char* from, FILE * to) { FILE * fp = fopen(from, "r"); int ch; if (fp != NULL) { while ((ch = fgetc(fp)) != EOF) fputc(ch, to); fclose(fp); } } ... printChartHeader("./Tools/chartheader0.txt", pCHART0); //error C2664: “void printChartHeader(char *,FILE *)”: 无法将参数 1 从“const char [25]”转换为“char *” ```

请问要怎么释放哈夫曼编码里面w.Weight与w.ch的动态分配的空间(后面的代码里面标记的地方系统说操作数类型不兼容(int 和int *,int和char*)想问下该怎么修改?)

#include<cstring> #include "malloc.h" #include<iostream> #include<stdio.h> #define MAX 65535 typedef struct{ unsigned int Weight; unsigned int Parent, LChild, RChild; }HuffmanTreeNode, *HuffmanTree; typedef struct{ char *ch; //动态分配空间,用来储存待编码的字符 int *Weight; //动态分配空间,用来储存待编码的字符的相应权重 int Count; //动态分配空间,用来储存待编码的字符 }WeightAndInfo; //待编码字符的个数 typedef char ** HuffmanCode; void CreateHuffmanTree_Code(HuffmanTree *HT, HuffmanCode *HC, int *w, int n); void Select(HuffmanTree HT, int i, int *s1, int *s2); //在HT中选择Parent为0且Weight最小的两个结点,其序号分别为s1和s2 int main() { HuffmanCode chCode; int i; HuffmanTree HufTree = NULL; WeightAndInfo w; printf("请分别输入待编码字符的个数和待编码字符及权重:\n"); scanf_s("%d\n", &w.Count); //输入待编码字符的个数 //为指向哈夫曼编码的空间的头指针分配空间 chCode = (HuffmanCode)malloc((w.Count + 1)*sizeof(char *)); //为待编码的字符的权重分配空间 w.Weight = (int *)malloc(w.Count*sizeof(int)); w.ch = (char *)malloc(w.Count*sizeof(char)); //为待编码字符分配空间 for (i = 0; i < w.Count; i++) { scanf_s("%d,%c", &(w.Weight[i]), &(w.ch[i])); } //输入待编码的字符及相应权重 //创建哈夫曼树及哈夫曼编码 CreateHuffmanTree_Code(&HufTree, &chCode, w.Weight, w.Count); for (i = 1; i < w.Count; i++) printf("待编码的字符 ch 是 %c,对应的权重Weight为 %d,相应的哈夫曼编码 code为 %s\n", w.ch[i - 1], w.Weight[i - 1], chCode[i]); int getch(void); //? for (i = 1; i <= w.Count; i++) //释放动态分配的内存 if (chCode[i]) free(chCode[i]); free(chCode);//一些动态分配的空间没有被释放如w.Weight、w.ch等,请补充完整…… //从这里开始是我按照上面的弄的 for (i = 1; i <= w.Weight; i++) //释放动态分配的内存 if (chCode[i]) free(chCode[i]); free(chCode); for (i = 1; i <= w.ch; i++) //释放动态分配的内存 if (chCode[i]) free(chCode[i]); free(chCode); //到这里麻烦大佬们帮我看看 } void CreateHuffmanTree_Code(HuffmanTree *HT, HuffmanCode *HC, int *w, int n) { //创建哈夫曼树及求哈夫曼编码 int m, s1, s2, i, c, start, f; char *cd; HuffmanTree p; if (n < 1) return; m = 2 * n - 1; (*HT) = (HuffmanTree)malloc((m + 1)*sizeof(HuffmanTreeNode)); for (p = *HT, i = 1; i <= n; i++) { p[i].Weight = w[i - 1]; p[i].Parent = 0; p[i].LChild = 0; p[i].RChild = 0; } for (; i <= m; i++) { p[i].Weight = 0; p[i].Parent = 0; p[i].LChild = 0; p[i].RChild = 0; } for (i = n + 1; i <= m; i++) { Select(*HT, i - 1, &s1, &s2); (*HT)[s1].Parent = i; (*HT)[s2].Parent = i; (*HT)[i].LChild = s1; (*HT)[i].RChild = s2; (*HT)[i].Weight = (*HT)[s1].Weight + (*HT)[s2].Weight; } cd = (char *)malloc(n*sizeof(char)); cd[n - 1] = '\0'; for (i = 1; i <= n; i++) { start = n - 1; for (c = i, f = (*HT)[i].Parent; f != 0; c = f, f = (*HT)[f].Parent) if ((*HT)[f].LChild == c) cd[--start] = '0'; else cd[--start] = '1'; (*HC)[i] = (char *)malloc((n - start)*sizeof(char)); strcpy_s((*HC)[i], 99, &cd[start]); } free(cd); } void Select(HuffmanTree HT, int i, int *s1, int *s2) { //在HT中选择Parent为0且Weight最小的两个结点,其序号分别为s1和s2 int j; int min; min = MAX; for (j = 1; j <= i; j++) { if (HT[j].Parent == 0 && HT[j].Weight <= min) { *s1 = j; min = HT[j].Weight; } } HT[*s1].Parent = *s1; min = MAX; for (j = 1; j <= i; j++) { if (HT[j].Parent == 0 && HT[j].Weight <= min) { *s2 = j; min = HT[j].Weight; } } HT[*s2].Parent = *s2; system("pause"); }//CreateHuffmanTree_Code

如何将 std: : string 转换为 const char * 或 char * ?

<div class="post-text" itemprop="text"> <p>How can I convert an <code>std::string</code> to a <code>char*</code> or a <code>const char*</code>?</p> </div> <p>转载于:https://stackoverflow.com/questions/347949/how-to-convert-a-stdstring-to-const-char-or-char</p>

怎么把char*转为C++的BITMAP对象

foxit::common::Bitmap bitmap; bitmap = image_object->CloneBitmap(page); byte* buffer = (byte*)bitmap.GetBuffer(); BITMAPINFO bmpInfo; //创建位图 bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD);; bmpInfo.bmiHeader.biWidth = bitmap.GetWidth();//宽度 bmpInfo.bmiHeader.biHeight = bitmap.GetHeight();//高度 bmpInfo.bmiHeader.biPlanes = 1; bmpInfo.bmiHeader.biBitCount = bitmap.GetBpp(); bmpInfo.bmiHeader.biCompression = BI_RGB; //bmpInfo.bmiColors[]= buffer; hBitmap = CreateDIBSection(_compDC, &bmpInfo, DIB_RGB_COLORS, (void**)out, NULL, 0); image.Attach(hBitmap); image.Save("D:\\cunchu1.bmp"); 要将别的图片对象转化为Cimage对象,发现可以获取福昕的图片对象里的buffer,上网查了这个是位图的RGB数据,可是不知道怎么使用。又找到了可以使用CreateDIBSection得到BITMAP对象,可是根本不知道怎么初始化bmpInfo.bmiColors[],找了好多帖子也没有。奔溃了要。

cannot convert from 'char *** ' to 'char **

``` #include<iostream> #include<stdlib.h> using namespace std; int spitString2(char *buf1,char c,char **myp,int *count) { //strcpy(buf2[0],"aaaaa"); //strcpy(buf2[1[,"bbbbb"); char *p=NULL,*pTmp=NULL; int tmpcount=0; //p和ptmp初始化 p=buf1; pTmp=buf1; //2 检索符合条件的位置 p后移 形成差值 挖空字符 p=strchr(p,c); if(p!=NULL) { if(p-pTmp>0) { strncpy(myp[tmpcount],pTmp,p-pTmp); myp[tmpcount][p-pTmp]='\0';//把第一行数据变成C风格字符串 tmpcount++; //3重新让p和ptmp达到下一次检索的条件 pTmp=p=p+1; } } } void main() { int ret=0,i=0; char *p1="aaaaa,bbbbb"; char cTmp=','; int nCount; char **p=NULL; p=new (char **)[10*sizeof(char *)];//错误指示的地方 if(p==NULL) { return; } for(i=0;i<10;i++) { p[i]=new (char*)[30*sizeof(char)];//错误指示的地方 } ret=spitString2(p1,cTmp,p,&nCount); if(ret!=0) { cout<<"fun spitString2() err:"<<ret<<endl; return ret; } for(i=0;i<nCount;i++) { cout<<p[i]<<endl; } /////释放内存 for(i=0;i<10;i++) { delete p[i]; } delete []p; } //代码还不完整 ``` ![图片说明](https://img-ask.csdn.net/upload/201604/30/1461990027_709638.png)

invalid conversion from 'char**' to 'const char**

``` #include <iostream> using namespace std; int main() { char* a="AAAA"; char* b="BBBB"; char* c="CCCC"; const char*x=a; //二维 char *y[3]= {a,b,c}; const char** z=y; } ``` 最后一行 ``` const char** z=y; ``` 错误,求指教

C语言编译时,提示invalid conversion from ‘char’ to ‘char*’ [-fpermissive]错误,请问哪里问题?

编译环境: Armbian(arm嵌入式linux)64位系统,基于Ubuntu Bionic 18.04 LTS 4.19内核 错误提示: ![图片说明](https://img-ask.csdn.net/upload/201902/21/1550707793_4777.png) tools.c:63:13: error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive] *pout = '\0'; ^~~~ 部分代码内容: 这是图片: ![图片说明](https://img-ask.csdn.net/upload/201902/21/1550707811_128009.png) 以下是文字代码: int code_convert(char *from_charset, char *to_charset, char *inbuf, size_t inlen, char *outbuf, size_t outlen) { iconv_t cd; char **pin = &inbuf; char **pout = &outbuf; cd = iconv_open(to_charset, from_charset); if (cd == 0) return -1; memset(outbuf, 0, outlen); if (iconv(cd, pin, &inlen, pout, &outlen) == -1) return -1; iconv_close(cd); *pout = '\0'; return 0; }

求助。C++char*型传参错误的问题之原因

大家好 原函数: send(char* a,char* b,char* c,char* d) { 打印a-d,d值不正确,d的值和b是一样的; } int main(int argc,char*argv[]) { char bf[4][20]; for(i=0;i<argc,i++) { bf[i]=argv[i]; } 打印bf[1-4],值正确; send(bf[1],bf[2],bf[3],bf[4]); } 这种情况下,bf[4]的值进入send函数后出现了错误,并不是预定的值而是和bf[2]一样。监测情况传参之前是正确的,传参后错误。命令行传入的字符串没有越界,最多就是“1010“。 调试后,如果改变send函数的入参,改为 send(string a,string b,string c,string d) { 打印a-d,正确无误; 使用c_str()转换后数值也无误; } 请问这是怎么回事呢?我百思不得其解,谢谢!

delphi调用c++ dll参数char* 的问题

我有一个c作的dll 具体说明如下 1、文件解密接口函数及参数说明: int __stdcall DecodeFile(char* InFile, //要解密的文件 char* Key, //解密的密钥 char* OutFile, //解密后的文件,在解密路径下的同名XML文件 char* Info); //提示信息函数返回 0 成功,非0失败。 2、动态调用实例: String jmfile = 要解密的文件路径; String key = 要解密的文件密钥; String strDllFile = "DecodeXMLFIle.dll"; //解密动态库文件名 DLLInst = LoadLibrary(strDllFile.c_str()); if( !DLLInst) Application->MessageBox( "DLL装载错误", "错误信息", MB_ICONERROR); else { /l输入函数声明 int (__stdcall *DecodeFile)(char* InFile, char* Key, char* OutFile, char* Info); DecodeFile = (int (__stdcall *)(char* InFile, char* Key, char* OutFile, char* Info))GetProcAddress( DLLInst, "DecodeFile"); if (DecodeFile) { char outfilestr[1000] = {0}; char msgInfostr[1000] = {0}; int dRes = DecodeFile(jmfile.c_str(),key.c_str(),outfilestr,msgInfostr); if(dRes != 0) { String Msgstr = "提示信息:解密失败 "+AnsiString(msgInfostr); Application->MessageBox(Msgstr, "错误信息", MB_ICONERROR); }else Application->MessageBox("成功", "成功", MB_OK); } } FreeLibrary(DLLInst); ---------------------------------------------- 如何用delph声明这个函数并调用呢

opencv char * 转化为 cv::inputarray

opencv 将char * 转化为 cv::inputarray 的操作如何实现,以便作为有关API的输入参数

关于C语言的指针类型转换问题?

#include <stdio.h> int main() { unsigned int a = 0; unsigned char *p = (char *)&a;//有错 p[0] = 123; p[1] = 111; p[2] = 168; p[3] = 192; printf("%u\n", a); return 0; } 结果报错:error: invalid conversion from 'char*' to 'unsigned char*' [-fpermissive]| 我在想这样为什么不可以转换呢,

LINUX下模拟DNS编程,写报文时关于DOMAIN NAME 的格式转换程序

这段程序要求是转换格式,如www.baidu.com换成3www5baidu3com0 网上有代码 void ChangetoDnsNameFormat(unsigned char* dns,unsigned char* host) { int lock = 0 , i; strcat((char*)host,"."); for(i = 0 ; i < strlen((char*)host) ; i++) { if(host[i]=='.') { *dns++ = i-lock; for(;lock<i;lock++) { *dns++=host[lock]; } lock++; //or lock=i+1; } } *dns++='\0'; } 无奈我需要做中文域名的解析发包,如,中国的教育的大学的人,转化为6中国6教育6大学3人0 如何实现类似上述的步骤? 我自己也写过别的代码,最后的到了相应结果,但是结果中字符串的数字都是字符形式,如6,它的16进制显示是0x36,而报文要求是0x06即单纯的6

如何通过golang中的CGO将Go字符串复制到C char *?

<div class="post-text" itemprop="text"> <p>I want to copy a Go string into a char * via CGO.</p> <p>Am I allowed to do this something like this?</p> <pre><code>func copy_string(cstr *C.char) { str := "foo" C.GoString(cstr) = str } </code></pre> </div>

两个unsigned char类型怎么相加?

我想把两个unsigned char类型的数据分别对应的两个汉字一起在编辑框显示出来,所以要把两个字加到一起,可是总说内存溢出,转换成CString类型再相加也有问题,不知道如何解决,请各位大神帮忙!谢谢!

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

一文带你入门Java Stream流,太强了

两个星期以前,就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗,结果你猜他怎么说:“就想看你写的啊!”你看你看,多么苍白的喜欢啊。那就“勉为其难”写一篇吧,嘻嘻。 单从“Stream”这个单词上来看,它似乎和 java.io 包下的 InputStream 和 OutputStream 有些关系。实际上呢,没毛关系。Java 8 新增的 Stream 是为...

立即提问
相关内容推荐