C语言_declspec(dllexport)问题 2C

_declspec(dllexport) void go()
{

void (**p) ()=003cfd74;
*p =00101145;

}
我用vs2012编写的时候,()后面我写的003cfd74明明是内存地址啊,为什么都提示“int”类型不能用于初始化“void(**p)()类型的实体啊。小弟新人,求大神帮助啊。

c

4个回答

直接函数指针赋值,或者你想干什么

dxskx
dxskx 实现一个指针的劫持,把00101145地址里的一个函数放到003cfd74里面,但它就提示这样的错误啊
4 年多之前 回复
dxskx
dxskx 实现一个指针的劫持,把00101145地址里的一个函数放到003cfd74里面,但它就提示这样的错误啊
4 年多之前 回复

你这样直接赋值毫无意义,可以这样写
typedef void (**PTR)( ) ;
void func(){};
PTR p;
*p= func;

当然你非要给指向函数指针的指针赋值也可以,但是你得类型强转,
void (**p) ()=003cfd74 不是你把一个整形数写成16进制,他就是成为地址了,它本质还是一个数。
可以这样:
typedef void (**PTR)( ) ; //定义类型
int num = 0x003cfd74; // 把这个用来做地址的数,赋值给一个整形
PTR p = PTR(num); 类型强转,这么写骗编译器是可以的,至于能不能用那就呵呵呵

诡异的用法。。。

int不是指针,更不是函数指针。尽管指针就是一个地址,是个int值,但是两者类型上来说,不一样。
非要直接这么用的话,就必须强制类型转换。就是楼上说的那么改。

无论你写成十进制、八进制还是十六进制,编译器都认为这是一个普通的数而已(虽然习惯上用十六进制显示指针,但十六进制不是指针的专属进制),要对指针赋值,需要使用强制类型转换

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
__declspec(dllexport)
问题和代码如下(问题在代码中有标注) #ifndef rcs_id_api_h #define rcs_id_api_h #if !defined(lint) static char* doors_ers_rcs_id_api_h = (char*)"@(#)DOORS %full_filespec: api.h~8.1.4:incl:ERS#1 % %date_created: Tue Jul 16 15:41:59 2013 %"; #endif #endif /********************************************************************** ** api.h */ /* Licensed Materials - Property of IBM - some unique copyrights (i.e., the ability to copy, modify, distribute) may be licensed in certain circumstances (e.g., sample/template code intended to be used by customers to build upon and distribute as their own products). DOORS - %full_filespec: api.h~8.1.4:incl:ERS#1 % %date_created: Tue Jul 16 15:41:59 2013 % (c) Copyright IBM Corporation 1993, 2008. All Rights Reserved. U.S. Government Users Restricted Rights: Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ #ifndef DOORS_API_H #define DOORS_API_H /* Required to build Serena Version Manager */ #ifndef NLS_ #define NLS_(a)a #endif /* Type seperation for 64 vs 32 bit variant */ #if defined (_WIN64) # if defined (datum) # undef datum # endif # define datum long long #else # if defined (datum) # undef datum # endif # define datum long #endif /* Categorize the type of C/C++ we are using */ #if defined(__cplusplus) || defined(c_plusplus) #define API_CPLUSPLUS 1 #else #define API_CPLUSPLUS 0 #endif #if defined(__STDC__) || API_CPLUSPLUS || defined(_WIN32) #define API_ARGS(args) args #else #define API_ARGS(args) () #endif /********************************************************************** ** Some typical CPP definitions */ #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif #ifndef global #define global /* global entry point (extern in .h file) */ #define local static /* local entry point */ #define globalvar /* global variable (externvar .in .h file) */ #define externvar extern /* global variable .h file entry */ #endif #if defined(_WIN32) #define API_WIN32 #ifndef API_DLL #define API_DLL _declspec(dllexport) 编译的时候总在提示在(dllexport)前面那个括号出少了构造函数和析构函数,求大神指教 #define API_CALL _stdcall #endif #define API_EXTERN(type) API_DLL type API_CALL #define API_EXTERNVAR API_DLL #else #define API_EXTERN(type) extern type #define API_EXTERNVAR externvar #endif #ifndef NULL #define NULL 0 #endif #ifndef NUL #define NUL '\0' #endif /* heap things */ #ifndef mnew #define mnew(Type) (Type*)malloc(sizeof(Type)) #define msave(Str) strcpy((char *)malloc(qss_strlen(Str)+1), (Str)) #define mnew_array(Type, Num) (Type*)malloc(sizeof(Type)*(Num)) #endif /* miscellaneous */ #ifndef M_Min #define M_Min(a, b) ((a) < (b) ? (a) : (b)) #define M_Max(a, b) ((a) > (b) ? (a) : (b)) #define M_Abs(a) ((a) < 0 ? -(a) : (a)) #define M_Xor(a, b) (((a) || (b)) && ( ! ((a) && (b)))) #endif /* Macro token concatenation */ #ifndef CAT_ #define ID_(x) x #ifdef __STDC__ #define CAT_(x,y) x ## y #else #define CAT_(x,y) ID_(x)y #endif #endif #ifndef StrMP_ #if defined (__STDC__) || defined(API_WIN32) #define StrMP_(x) (char *)#x #else #define StrMP_(x) (char *)NLS_("x") #endif #endif /* API Stuff */ /* Error States */ /* * CL58 - had to reintroduce apiErrorStates typedef, * because api.h is included by C (not C++) code which * uses apiErrorStates as a type name. */ enum apiErrorStates_ { DOORS_API_OK, DOORS_API_PARSE_BAD_DXL, DOORS_API_SEND_BAD_DXL, DOORS_API_CONNECT_FAILED, DOORS_API_ERROR }; typedef enum apiErrorStates_ apiErrorStates; #define apiInstall(proto,fn) apiInstallN(proto,StrMP_(fn),fn) #define BEGIN_FN(name,ins,outs) \ local int name API_ARGS((void)) { \ char* name__ = StrMP_(name); \ int inp_i_ = ins; \ int outp_i_ = ins; \ int inn_i_ = ins; \ int outn_i_ = outs; #define END_DECLS \ if (apiParCheck(name__,inn_i_,outn_i_,inp_i_)) ; else goto err_exit__ #define END_FN \ err_exit__: \ apiResCheck(name__,inp_i_,inn_i_,outp_i_,outn_i_); \ return (outn_i_ - inn_i_); } #define P_(t,x) \ t x = (t)apiPar(inp_i_--) #define RETURN_(x) \ apiReturn((datum)x,outp_i_--); /* for loop perm macros */ #define BEGIN_FOR_DO(name,ft,f,st,scan) \ local int name (char *pc) \ { \ char* loop; \ int irv = 0; \ st* scanp__; \ ft f; \ st scan; \ scanp__ = (st*)apiLoop(pc,&loop,(void **)&f,&irv); \ if (scanp__ == NULL) return irv; \ { #define PROCESS_DO(scan) \ {*scanp__ = scan;\ if (apiLoopBody(loop,&irv)) break;} #define END_FOR_DO \ } \ return apiLoopDone(loop,irv,pc); \ } /* Definitions */ #if API_CPLUSPLUS extern NLS_("C") { #endif API_EXTERN(void) apiError API_ARGS((char *format, ...)); API_EXTERN(void) apiWarn API_ARGS((char *format, ...)); API_EXTERN(int) apiParCheck API_ARGS((char *n, int ins, int outs, int ip)); API_EXTERN(void) apiResCheck API_ARGS((char *n, int ip, int in, int op, int on)); API_EXTERN(datum) apiPar API_ARGS((int ip)); API_EXTERN(void) apiReturn API_ARGS((long r, int op)); API_EXTERN(char*) apiLoop API_ARGS((char* pc, char** loop, void** fp, int* ret)); API_EXTERN(int) apiLoopBody API_ARGS((char* loop, int* irvp)); API_EXTERN(int) apiLoopDone API_ARGS((char* loop, int irv, char* pp)); API_EXTERN(void) apiMainProg API_ARGS((int argc, char* argv[], char* n, char* ext, char* include, void (*init)(void), void (*done)(void))); API_EXTERN(void) apiInitLibrary API_ARGS((char* n, char* ext, char* include)); API_EXTERN(void) apiFinishLibrary API_ARGS((void)); API_EXTERN(void) apiInstallN API_ARGS((char* proto, char* name, int (*)())); API_EXTERN(void) apiParse API_ARGS((char *format, ...)); API_EXTERN(void) apiConnect API_ARGS((char *s)); API_EXTERN(void) apiConnectSock API_ARGS((unsigned short portno, char* host)); API_EXTERN(void) apiConnectSockV2 API_ARGS((unsigned short portno, char* host)); API_EXTERN(void) apiSend API_ARGS((char *format, ...)); API_EXTERN(void) apiAuthenticatedSend API_ARGS((char *response, char *format, ...)); API_EXTERN(void) apiSendTimesout API_ARGS((int tmt, char *format, ...)); API_EXTERN(void) apiSendFile API_ARGS((char* f)); API_EXTERN(void) apiExitOnError API_ARGS((int onoff)); API_EXTERN(void) apiQuietError API_ARGS((int onoff)); API_EXTERN(int) apiGetErrorState API_ARGS((void)); API_EXTERN(void*) apiGetIPC API_ARGS((void)); API_EXTERN(int) apiSetIPC API_ARGS((void* newIPC)); API_EXTERN(void) apiDeleteIPC API_ARGS((void* newIPC)); API_EXTERN(void) apiFree API_ARGS((void*)); API_EXTERN(char*) apiAuthenticate API_ARGS((void)); #if API_CPLUSPLUS } #endif #endif /* DOORS_API_H */ ``` ```
__declspec(dllimport)怎么看它的定义在哪里?或者是从哪里引入的?
头文件中local.h中有如下定义: ``` __declspec(dllimport) WORD WINAPI PrintScreen(HWND,WORD,WORD,WORD,LPSTR,BOOL) ``` .c中一个dllexport函数中有调用它,PrintScreen这个函数是从别的dll引入的吗?如果是,如何看是从哪里引入的?
c++写的DLL,怎么在c#中声明
c++给的接口说明是: extern "C" __declspec(dllexport) void test6(ULONG64* baseaddr,ULONG64 pid,WCHAR* moudleName); extern "C" __declspec(dllexport) BOOLEAN _stdcall setCard(UCHAR* strCardId, ULONG cardLen); 如何在c#里面调用这两个函数?
一个C++写得DLL我应该怎么在c#里面声明及调用
DLL得接口说明是: extern "C" __declspec(dllexport) BOOLEAN _stdcall setCard(UCHAR* strCardId, ULONG cardLen);//设置卡号(此函数必须在dll加载后,第一个调用) extern "C" __declspec(dllexport) BOOLEAN test4( );//安装 extern "C" __declspec(dllexport) void test6(ULONG64* baseaddr,ULONG64 pid,WCHAR* moudleName);//读取数据 1 数据,参数2 数据ID,参数3 数据所在模块名称 unicode的字符串 如果为空取进程基础地址 我声明了以后调用提示错误:原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。
Visual Studio里的函数__declspec 在哪个库里?就是哪个lib里?急求
1>CallJni.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall cocos2d::ui::Margin::Margin(void)" (__imp_??0Margin@ui@cocos2d@@QAE@XZ),该符号在函数 "void __cdecl cocos2d::ui::`dynamic initializer for 'MarginZero''(void)" (??__EMarginZero@ui@cocos2d@@YAXXZ) 中被引用 1>StoreLayer.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall cocos2d::ui::Margin::Margin(void)" (__imp_??0Margin@ui@cocos2d@@QAE@XZ) 这个是需要加个库吧
动态库的导出和使用问题
一直不懂__declspec(dllimport) 和 __declspec(dllexport) 具体是什么作用,以及区别。 求解答? 非常感谢
VC和BCB编写DLL。 DWORD WINAPI 怪问题
函数原型是:DWORD (WINAPI* m_pfnGetInfo)(int nInfo, void* pBuf); 2个动态库,原来用BCB写的,没问题, C++ BULIDER中这样: extern "C" __declspec(dllexport) DWORD WINAPI GetInfo(int nInfo,void * pBuf) VC2008,同样写 extern "C" __declspec(dllexport) DWORD WINAPI GetInfo(int nInfo,void * pBuf) 结果是GetProcAddress返回空, 改成这样: extern "C" __declspec(dllexport) DWORD GetInfo(int nInfo,void * pBuf) GetProcAddress返回正常,但调用时出错,信息为:Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. 百思不得其姐!
MFC调用动态链接库问题
``` DLL中添加导出函数如下 #include "stdafx.h" extern "C" __declspec(dllexport) int sum(int a, int b) { return a+b; } 也添加并声明了导出类CMath class _declspec(dllexport) CMath { public: CMath(void); ~CMath(void); int sum(int a, int b); }; MFC项目中调用dll extern "C" __declspec(dllexport) int sum(int a, int b); void Cpaint2Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 int a; a=sum(3,4); } 总是报错 错误 1 error LNK2019: 无法解析的外部符号 _sum,该符号在函数 "public: void __thiscall Cpaint2Dlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@Cpaint2Dlg@@QAEXXZ) 中被引用 F:\vs练习\paint2\paint2\paint2Dlg.obj ``` 把.dll文件复制到了debug文件里了 请教各位大神,哪里出问题了呀
VC 6.0环境如何动态调用我这个dl,往高手指导l
A.dll头文件导出函数声明如下: 开发环境VC++ 6.0 typedef void *TESTHANDLE; extern "C" __declspec(dllexport) int __stdcall TEST_Init(TESTHANDLE *hHandle); extern "C" __declspec(dllexport) int __stdcall TEST_Exit(TESTHANDLE hHandle); …… 现在test工程需要动态调用该 A.dll 限定**只能使用LoadLibrary("KCBPCli.dll")动态调用**方式,请问怎么动态调用上述两个函数
VB调用C++动态链接库
现在有个C++动态链接库,有头文件,但是我想在VB里面调用。怎么在VB里面调用啊、麻烦帮忙把下面的3个函数转成能在VB里面用的语句。 之前没接触过VB,现在因为时间紧,需要临时突击下。麻烦帮忙解答下啊。 #ifndef C_DLL #define C_DLLEXPORT extern "C" __declspec(dllexport) #define C_DLLIMPORT extern "C" __declspec(dllimport) #endif C_DLLEXPORT int Setup(HANDLE hCom, DWORD baudRate= 9600, BYTE parity=NOPARITY, BYTE datasize=8, BYTE stopbits=ONESTOPBIT, DWORD timeOut= 1000, DWORD readBufferSizes=256, DWORD writeBufferSizes=256); C_DLLEXPORT int Write(HANDLE hCom, char* pbuffer); C_DLLEXPORT int Read (HANDLE hCom, char* pbuffer);
VB.Net2003调用dll的问题
vc++ api.h中部分代码: typedef void *HANDLE; extern "C" { __declspec(dllexport) HANDLE _stdcall CDT2000_DevLoad(int CardNo); __declspec(dllexport) BOOL _stdcall CDT2000_DevClose(HANDLE hDriver); 生成的dll通过VB.net调用: <DllImport("cdt2000", EntryPoint:="CDT2000_DevLoad")> 。。。。。 请问返回值应该怎样处理?
创建dll时,头文件的函数定义为static时报错“Diff” 必须有外部链接才可进行导出/导入
// riser.h #ifdef RISER_EXPORTS #define RISER_API __declspec(dllexport) #else #define RISER_API __declspec(dllimport) #endif static RISER_API bool Diff(double d1,double d2,double Err);
C++模版类是否可以作为动态库接口
C++模版类是否可以作为动态库接口,怎么实现,现在弄出来 template <typename BaseType> extern "C" __declspec(dllexport) class IDlgT { }; error C2988: 不可识别的模板声明/定义 不能的话请说下原因,不需要解决方式
C++累实现的DLL动态使用时GetProcAdress返回0
大家好,我使用C++类做成DLL,静态调用都成功了,但是动态调用时GetProcAdress一直返回0.DLL已经加载成功了。 DLL头文件: namespace MathFuns { class MyMathFun { public: //return a + b _declspec(dllexport) double Add(double a, double b); //return a - b _declspec(dllexport) double Subtract(double a, double b); //return a * b _declspec(dllexport) double Multiply(double a, double b); //return a / b _declspec(dllexport) double Divide(double a, double b); }; } Dll调用CPP int main() { double a = 10, b = 0; typedef double (*pAdd)(double a, double b); HINSTANCE hDll = NULL; hDll = LoadLibrary(L"MathFuncsDll.dll"); if(NULL == hDll) { cout << "hDll is null!" << endl; } pAdd Add = (pAdd)GetProcAddress(hDll, "Add"); if(NULL == Add) { // handle the error FreeLibrary(hDll); cout << "GetProcAddress Err! " << GetLastError() <<endl; Sleep(INFINITE); } cout << " a + b = "<< Add(a, b) << endl; Sleep(INFINITE); return 0; } 执行后会出现:GetProcAddress Err! 0 麻烦大家帮我看下,谢谢了!
Python调用c++写的dll,出现function "add"not found错误
该dll在c++里面可以成功调用。 dll的.h: #pragma once #ifdef FILE_RW_DLL_EXPORTS #define FILE_RW_DLL_API extern "C"__declspec(dllexport) #else #define FILE_RW_DLL_API extern "C"__declspec(dllimport) #endif #include "stdafx.h" double __stdcall add(double a, double b); dll的.cpp: #include "stdafx.h" #include "file_rw_dll.h" double __stdcall add(double a, double b) { return (a+b); } python调用程序: import ctypes filedll=ctypes.WinDLL("file_rw_dll.dll") print(filedll.add(1,2)) 在c++中调用该生成的dll没有问题,python中调用出现“AttributeError: function 'add' not found” 求教!
C++中的带有指针数组的结构体在C#上怎么封装,并作为形参传给C++dll的函数
#pragma pack(1) struct SqJpegScliceSize { unsigned int scliceSize[64]; unsigned char *jpegDst[64]; }; extern "C" _declspec(dllexport) void SqGetSliceData(SqJpegScliceSize *jss) 这是C++函数和结构体 在C#上怎么写?
两个进程间能使用共享内存段进行数据共享吗?
我是这样做的: 在一个dll里面定义一个共享数据段,里面定义一个整形数据,然后定义两个导出函数对这个整形数据进行操作。 #pragma data_seg ("ShareDataSeg") //开辟一个名字为"ShareDataSeg"的共享内存段 int g_nShareInt = 0; #pragma data_seg() //共享内存段"ShareDataSeg"定义结束 //加上这条声明,让这个共享内存段可以在所有动态或静态连接这个DLL的进程中都能看到,这个共享内存段会直接加载到进程堆栈空间 #pragma comment(linker, "/SECTION:ShareDataSeg,RWS") extern "C" __declspec(dllexport) int SetVal(int val); extern "C" __declspec(dllexport) int GetVal(); 再写两个进程,都加载这个dll,都对这个共享数据段内的整形数据的值进行修改,发现两个进程使用的根本就是两个不同的变量,根本没有进程间共享的效果。 求高手指点!
第三方DLL库会导致ofstream不可以写入文件吗?
DLL 项目下面: DLLclass.h #ifndef WELDING_SEAM_H #define WELDING_SEAM_H #ifdef WELDING_SEAM_EXPORTS #define WELDING_SEAM_API __declspec(dllexport) #else #define WELDING_SEAM_API __declspec(dllimport) #endif class DLLclass { public: DLLclass(const Array2D<double> & input) { } DLLclass(std::string str) { } void WELDING_SEAM_API Implement(int a = 3, int b=2); }; DLLclass.cpp #include "DLLclass.h" void DLLclass::Implement (int a , int b) { } EXE 项目下面: UseDll.h class useDLL { Public: void run(int a=1,int b=1); } UseDll.cpp #include "UseDll.h" #include "DLLclass.h" void useDLL::run(int a,int b) { DLLclass this_Dllclass("test'); this_Dllclass.run(10,10): }
添加已有的.dll中函数相关问题
在已有.dll中添加一个自定义函数。函数前面使用_declspec(dllexport)修饰, 还需要在.h文件中进行申明吗?
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优化之路!
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
使用 Docker 部署 Spring Boot 项目
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的 S...
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
白话阿里巴巴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 进程负责处...
“狗屁不通文章生成器”登顶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 参考博客
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
Android 9.0 init 启动流程
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、启动流程概述一、 启动流程概述Android启动流程跟Linux启动类似,大致分为如下五个阶段。1.开机上电,加载固化的ROM。2.加载BootLoader,拉起Android OS。3.加载Uboot,初始外设,引导Kernel启动等。...
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
立即提问