Android上利用JNI调用OpenCV函数时出现Fatal signal 11错误

我想在Android上用OpenCV实现人脸识别功能,即事先有一个我提供的人脸训练库,然后检测出人脸后,识别他和训练库中的哪类人最像。

我已在windows平台实现了该功能,并将训练好的FaceRecognizer通过save的方式存储成了xml。我将xml文件放入了Android手机某目录下,然后想利用JNI的方式在Android app中使用OpenCV载入该数据库,但运行到这一行就会报错:

Fatal Signal 11 (SIGSEGV) at 0x42ff0000 (code=2), thread 8703...

这是我的相关代码:

JNIEXPORT jlong JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeCreateObject
(JNIEnv * jenv, jclass, jstring jFileName, jint faceSize)
{
//解析文件目录
const char* jnamestr = jenv->GetStringUTFChars(jFileName, NULL);
string stdFileName(jnamestr);

​FaceRecognizer model = (FaceRecognizer)createEigenFaceRecognizer(100,10000.0);
try
{
model->load(stdFileName);
}

望朋友们出谋划策!十分感谢!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android jni调用底层函数
在android系统的 sys/devices/platform 目录下有stm.c文件里面有个write( )函数 在app中使用jni要怎么去调用?求大神帮忙指点。
android jni使用,报错:Fatal signal 11 (SIGSEGV) code 2
代码如下: java代码: 打印语句: GeneratorCode generatorCode = new GeneratorCode(); ret = generatorCode.createpaycode("20150406164710" "12345655", ""); Log.d("tag", "ret = " + ret); ``` GeneratorCode类: public class GeneratorCode { static { System.loadLibrary("PayCode"); } public native String createpaycode(String datetime, String id, String paycode); } ``` jni代码: ``` JNIEXPORT jstring JNICALL Java_com_suning_mobile_epa_scancode_encode_GeneratorCode_createpaycode (JNIEnv * env, jobject thiz, jstring datetime, jstring id, jstring paycode) { char *char_datatime = (*env)->GetStringUTFChars(env, datetime, 0); char *char_id = (*env)->GetStringUTFChars(env, id, 0); char *char_paycode = (*env)->GetStringUTFChars(env, paycode, 0); char *ret = createpaycode(char_datatime, char_id, char_paycode); return (*env)->NewStringUTF(env, ret); } ``` 问题现象: so文件调用通过,ret = 12312312312321(随意值),也会被打印,然后就会抛出 ret = 308639390531814296(先打印这条语句) Fatal signal 11 (SIGSEGV), code 2, fault addr 0x3234313c in tid 21134 (GL updater) (抛出错误,程序奔溃) ``` ```
JNI调用opencv实现人脸识别,出现本地方法问题
> java.lang.UnsatisfiedLinkError: image.JNIOpenCV.detectFace(IILjava/lang/String;Ljava/lang/String;)[I 之前这个方法可以运行,JNIOpencv.dll本身应该没问题,突然就没法运行
JNI Fatal signal 11
Fatal signal 11 (SIGSEGV) at 0x75462000 (code=1), thread 5686 内存错误发生后如何排查,尤其是 Fatal signal 11 (SIGSEGV)这个错误尤其恼人,报出来之后程序就会崩溃,定位还不好定位,如何定位到所出问题的函数或者代码行?
android在jni中调用system()函数
想在android程序中实现设备的重启。 android在jni(c++写的)中调用system("reboot"),但是调试时,程序执行到此无任何反应,并继续执行了下面的代码。也试过了其他方法,如:android_reboot(ANDROID_RB_RESTART,0,0); 仍然无法实现重启。 想问各位有什么好办法解决吗?
OpenCV for Android,jni,库调用的问题
我现在用android studio开发工程,底层算法依旧在使用c++,用的是opencv的库,在完成opencv库加载之后。我build和run都没有问题,写的与opencv有关的函数都没有报错。 但是在跑起来以后,opencv的一些基础函数崩溃,代码在debug模式下已经验证没有越界等bug。貌似是opencv的函数调用不了。附上文件截图,请有经验的帮我看看,是哪个地方出了问题。 目前仅仅只有opencvjava4是生效的,其他.a的库貌似都没有生效,注释不注释都不影响build和run,且报错的位置都一样。如下图,仅仅是一个基础的函数mat.clone()报错。感觉链接的.a有问题,并没有生效 ![图片说明](https://img-ask.csdn.net/upload/201904/18/1555559630_96704.png) ![图片说明](https://img-ask.csdn.net/upload/201904/18/1555559304_443417.png) ![图片说明](https://img-ask.csdn.net/upload/201904/18/1555559316_913435.png) ``` target_link_libraries(tracking # android lib ${log-lib} ${android-lib} # opencv opencv_java4 # opencv_core # opencv_highgui # opencv_imgproc # opencv_dnn # opencv_features2d # opencv_flann # opencv_imgcodecs # opencv_ml # opencv_objdetect # opencv_photo # opencv_stitching # opencv_video # opencv_videoio # opencv_calib3d # quirc # tbb # IlmImf # cpufeatures # libjasper # libjpeg-turbo # libpng # libprotobuf # libtiff # libwebp # tegra_hal ) ``` 请教大佬,这个问题应该怎么解决?
android studio中使用jni调用函数undefined
![图片说明](https://img-ask.csdn.net/upload/201705/16/1494942854_244724.png) ![图片说明](https://img-ask.csdn.net/upload/201705/16/1494943244_261177.png) ![图片说明](https://img-ask.csdn.net/upload/201705/16/1494943252_842681.png) 如图,在android中导入.c文件编译运行时报错,不太懂这些要怎么解决,求大神指点
Android JNI 调用非JNI规范的so文件
请问Android中可以使用JNI调用非JNI规范纯C函数编译出的so文件吗 我使用的是针对特殊平台产生的非JNI规范的so文件,在Android官网看到谷歌采用了一种新的make方式,通过Cmake和CMakeLists.txt来链接编译 我看到官方的源码[谷歌官方示例](https://github.com/googlesamples/android-ndk/tree/master/native-activity/app/src/main/cpp "")直接放在默认的libry目录下,我想让他在自己的目录下找,但是最新的这种CMake方式,不知道so文件和头文件的目录应该怎么建立。[谷歌官方NDK](https://developer.android.com/studio/projects/add-native-code.html#new-project "") ``` add_library( iconv SHARED IMPORTED ) set_target_properties( # Specifies the target library. iconv # Specifies the parameter you want to define. PROPERTIES IMPORTED_LOCATION # Provides the path to the library you want to import. /libs/src/armeabi/libiconv.so) #include_directories( imported-lib/src/include/ ) target_link_libraries( # Specifies the target library. native-lib # Links the target library to the log library # included in the NDK. iconv ${log-lib} ) ``` 但是Make时一直报错,显示iconv.so needed by native-lib.so ; missing or no known rule to make it
android项目中JNI调用的C代码
最近的一个项目,需要通过JNI在串口中读取数据,读取数据并返回的代码是用C语言写的。我对C语言很陌生,哪位大神帮帮忙,帮忙撸几句代码。 JNIEXPORT jbyteArray JNICALL Java_com_cem_serialdevdemo_CodeJNI_ReadRfidSerialPort (JNIEnv *env, jobject obj) { //大致的思路是: int rev=0; unsigned char sof; unsigned char buf[20]; rev=read(s_fdRfid,&sof,1) //判断读取到数据时: //判断读取到的数据与通信协议的格式是否相同 //首先判断前三个字节与通信协议的前三个识别码是否相同 //再判断末尾两个字节与通信协议的后两个识别码是否相同 //再取出中间的四个字节,转换为jbyteArray后返回 //未读到数据或者数据格式不对时:返回"0" char *fail="0"; jbyteArray byteArray = (*env)->NewByteArray(env, 1/*strlen(cp)*/); (*env)->SetByteArrayRegion(env, byteArray, 0, 1/*strlen(cp)*/, (jbyte *)fail); return byteArray;![图片说明](https://img-ask.csdn.net/upload/201604/05/1459826369_242788.png) }
cocos2d中函数通过JNI调用android中类方法的疑问
如题,我试图在cocos2d中调用android的某方法,android中被调用方法如下: public class AppActivity extends Cocos2dxActivity { static { System.loadLibrary("cocos2dcpp"); } public static void gotoActivity() { Intent in = new Intent(AppActivity.getContext(),AndroidUI.class); AppActivity.getContext().startActivity(in); } } cocos2d中声明和提出调用的方法如下: #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include <jni.h> #include "platform/android/jni/JniHelper.h" #endif</android></jni.h> void HelloWorld::startAndroidEvent(Ref* sender){ #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) JniMethodInfo minfo; bool b = JniHelper::getStaticMethodInfo(minfo, "org.cocos2dx.cpp.AppActivity", "gotoActivity", "()v;"); if(!b){ CCLog("JniHelper::getMethodInfo error..."); }else{ CCLog("ready to invoke method..."); } #endif } cocos2d生成的安卓程序可正常运行,但执行跳转时会出现如下错误信息: ![CSDN移动问答][1] [1]: https://attachments.tower.im/tower/2708fc9685a34ea7b866f2e5e58f46a5?filename=%29E7A6MDM8Q%7D__88OS2YPL.jpg 拜托有相关经验的朋友能否指点一下可能是哪个方面出现了问题
jni调用的函数和native函数不在一个java文件内,调用出错
问题描述如题。下来我贴代码: 这是含有native函数的java文件 ``` public class ProgressBarOperation { static { System.loadLibrary("Pressure"); } public native void startMonitor(); public native void stopMonitor(); } ``` native函数所在的java文件不能继承Activity之类的。是我哪里搞错了还是什么原因,求大神解释。 接下来就是主文件,继承Activity的 ``` public class MainActivity extends Activity implements OnClickListener { private ProgressBar progressBar; private ProgressBarOperation operation; private Button btn_start, btn_stop; static { System.loadLibrary("Pressure"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar = (ProgressBar) findViewById(R.id.progressBar); operation = new ProgressBarOperation(); btn_start = (Button)findViewById(R.id.btn_start); btn_start.setOnClickListener(this); btn_stop = (Button)findViewById(R.id.btn_stop); btn_stop.setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId() == R.id.btn_start) { new Thread(new Runnable() { @Override public void run() { operation.startMonitor(); } }).start(); } else if (v.getId() == R.id.btn_stop) { operation.stopMonitor(); } } public void setPressure(int pressure) { Log.e("pressure", "" + pressure); progressBar.setProgress(pressure); } } ``` 接下来就是自己编写jni文件了。中间自动生成头文件就不说了 我把整个cpp文件全部贴过来 ``` #include <jni.h> #include <stdlib.h> #include <unistd.h> #include "com_example_pressuretest_ProgressBarOperation.h" int getPressure() { return rand() % 100; } int flag = JNI_TRUE; JNIEXPORT void JNICALL Java_com_example_pressuretest_ProgressBarOperation_startMonitor( JNIEnv *env, jobject obj) { while (flag) { sleep(1); //拿到字节码对象 jclass clazz = env->FindClass("com/example/pressuretest/MainActivity"); jmethodID methodId = env->GetMethodID(clazz, "setPressure", "(I)V"); jobject dpobj= env->NewObject(clazz, methodId); env->CallVoidMethod(dpobj, methodId, getPressure()); } } JNIEXPORT void JNICALL Java_com_example_pressuretest_ProgressBarOperation_stopMonitor( JNIEnv *env, jobject obj) { flag = JNI_FALSE; } ``` env->CallVoidMethod(dpobj, methodId, getPressure());这句话一直报错,错误提示也看不来究竟错在哪里
java使用JNI调用的dll依赖于其它dll路径该如何配置
jni调用dll扩展程序直接配置-Djava.library.path来指定dll所在目录即可以加载到dll,但是如果dll要依赖其它dll的时候会提示 Can't find dependent librarie即找不到dll的依赖库,这种情况可以将需要依赖的dll放到项目根目录下或者jdkbin目录下解决,但是想要导出jar包供其它调用就不行了,而且这种解决方法也不适用,总不能每次调用都把dll文件复制到根目录下,这时该如何处理?
安卓写so库调用第三方so库中非JNI接口函数
第三方so库中函数一部分为JNI接口函数,一部分为非JNI接口函数,如何在安卓中调用非JNI接口函数?若自己写一个so库来调用第三方库并调用其中非JNI接口函数如何实现
android JNI调用SDK底层C方法
如题:因为上层没法去找到方法,只有想办法去调底层C的方法,SDK源码make出来的.so库文件可以用来做jni的调用么? 底层.c文件里面没有申明JNI,我需要如何去申明
通过jni调用底层的open函数时老是失败
各位大神,麻烦帮忙看一下如下程序,我在应用程序调用底层的open函数时,在jni那里老是open失败,字符设备已经注册进系统,相应的文件节点也有,就是fd返回老是-1,还请各位帮忙看一下 jni file: #define LOG_TAG "HardControl hardcontrol.cpp" #include <utils/Log.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #include <stdlib.h> #include "jni.h" jint fd; jint ledOpen(JNIEnv *env, jobject cls) { ALOGI("jkk native ledOpen 1:%d",fd); fd = open("/dev/leds_test", O_RDWR); ALOGI("jkk native ledOpen 2:%d",fd); if (fd >= 0) return 0; else{ ALOGI("jkk native ledOpen failed,fd=%d",fd); return -1; } // return 0; } jint ledClose(JNIEnv *env, jobject cls) { ALOGI("native ledClose ..."); return 0; } jint ledCtrl(JNIEnv *env, jobject cls, jint which, jint status) { int ret = ioctl(fd, status, which); ALOGI("native ledCtrl: %d, %d, %d",which,status,ret); return ret; } static const char *classPathName = "com/lenovo/hardlibrary/HardControl"; static JNINativeMethod methods[] = { {"ledOpen", "()I", (void *)ledOpen}, {"ledClose", "()I", (void *)ledClose}, {"ledCtrl", "(II)I", (void *)ledCtrl}, }; /* * Register several native methods for one class. */ static int registerNativeMethods(JNIEnv* env, const char* className, JNINativeMethod* gMethods, int numMethods) { jclass clazz; clazz = env->FindClass(className); if (clazz == NULL) { ALOGE("Native registration unable to find class '%s'", className); return JNI_FALSE; } if (env->RegisterNatives(clazz, gMethods, numMethods) < 0) { ALOGE("RegisterNatives failed for '%s'", className); return JNI_FALSE; } return JNI_TRUE; } /* * Register native methods for all classes we know about. * * returns JNI_TRUE on success. */ static int registerNatives(JNIEnv* env) { if (!registerNativeMethods(env, classPathName, methods, sizeof(methods) / sizeof(methods[0]))) { return JNI_FALSE; } return JNI_TRUE; } // ---------------------------------------------------------------------------- /* * This is called by the VM when the shared library is first loaded. */ typedef union { JNIEnv* env; void* venv; } UnionJNIEnvToVoid; jint JNI_OnLoad(JavaVM* vm, void* reserved) { UnionJNIEnvToVoid uenv; uenv.venv = NULL; jint result = -1; JNIEnv* env = NULL; ALOGI("JNI_OnLoad"); if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_4) != JNI_OK) { ALOGE("ERROR: GetEnv failed"); goto bail; } env = uenv.env; if (registerNatives(env) != JNI_TRUE) { ALOGE("ERROR: registerNatives failed"); goto bail; } result = JNI_VERSION_1_4; bail: return result; } driver file: #include <linux/kernel.h> #include <linux/init.h> #include <linux/platform_device.h> #include <linux/gpio.h> #include <linux/leds.h> #include <linux/of_platform.h> #include <linux/of_gpio.h> #include <linux/slab.h> #include <linux/workqueue.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/device.h> #include <linux/cdev.h> static int major; static struct class *cls; //struct cdev *my_cdev; static int led_open(struct inode * inode, struct file * file) { /* int err; err = gpio_request(0, "led1"); err = gpio_direction_output(0,1); err = gpio_request(1, "led2"); err = gpio_direction_output(1,1); err = gpio_request(2, "led3"); err = gpio_direction_output(2,1); err = gpio_request(3, "led4"); err = gpio_direction_output(3,1); */ printk("jkk led_open.\n"); return 0; } static long led_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { printk("jkk led_ioctl, %d,%lu.\n",cmd,arg); return 0; } static struct file_operations leds_ops={ .owner = THIS_MODULE, .open = led_open, .unlocked_ioctl = led_ioctl, }; int leds_init(void) { // int err,devno = MKDEV(major,minor); // cdev_init(my_cdev,&leds_ops); // my_cdev->owner = THIS_MODULE; // my_cdev->ops = &leds_ops; // err = cdev_add(my_cdev,devno,1); // if(err) // printk("add failed,err=%d.\n",err); printk("jkk leds_init.\n"); major = register_chrdev(0, "leds_test", &leds_ops); printk("jkk leds_init major=%d.\n",major); cls = class_create(THIS_MODULE, "leds_test"); device_create(cls, NULL, MKDEV(major, 0), NULL, "leds_test"); /* /dev/leds_jkk */ return 0; } void leds_exit(void) { device_destroy(cls, MKDEV(major, 0)); class_destroy(cls); unregister_chrdev(major, "leds_test"); } module_init(leds_init); module_exit(leds_exit); MODULE_LICENSE("GPL");
android的jni可以调用MFC写的方法吗?
我这有MFC写好的方法,想直接通过jni来调用它,我把方法粘过来之后,出现一大堆错误,数据类型什么的需要怎么修改才能调用?
JNI调用dll,报错dll中找不到函数
``` I am tring to use opencv and java for face detection, and in that pursit i found this "JNI2OPENCV" file....but i am confused on how to make it work, can anyone help me? http://img519.imageshack.us/img519/4803/askaj.jpg and the following is the FaceDetection.java class JNIOpenCV { static { System.loadLibrary("JNI2OpenCV"); } public native int[] detectFace(int minFaceWidth, int minFaceHeight, String cascade, String filename); } public class FaceDetection { private JNIOpenCV myJNIOpenCV; private FaceDetection myFaceDetection; public FaceDetection() { myJNIOpenCV = new JNIOpenCV(); String filename = "lena.jpg"; String cascade = "haarcascade_frontalface_alt.xml"; int[] detectedFaces = myJNIOpenCV.detectFace(40, 40, cascade, filename); int numFaces = detectedFaces.length / 4; System.out.println("numFaces = " + numFaces); for (int i = 0; i < numFaces; i++) { System.out.println("Face " + i + ": " + detectedFaces[4 * i + 0] + " " + detectedFaces[4 * i + 1] + " " + detectedFaces[4 * i + 2] + " " + detectedFaces[4 * i + 3]); } } public static void main(String args[]) { FaceDetection myFaceDetection = new FaceDetection(); } } ``` Exception in thread "main" java.lang.UnsatisfiedLinkError: FaceDetection.JNIOpenCV.detectFace(IILjava/lang/String;Ljava/lang/String;)[I at FaceDetection.JNIOpenCV.detectFace(Native Method) at FaceDetection.FaceDetection.<init>(FaceDetection.java:19) at FaceDetection.FaceDetection.main(FaceDetection.java:29) Java Result: 1 BUILD SUCCESSFUL (total time: 2 seconds) ``` ```
VideoCapture打开摄像头失败
JNI调用opencv中的VideoCapture打开手机摄像头总是失败,请问是怎么回事呀,有做过的吗
如何在Android 下用jni调用下面c代码进行g711编码?
unsigned char encode(short pcm); short decode(unsigned char alaw); /** 个人理解 * bitsize 应该为16, pBuffer(pcm数据) 两个char 合成一个 short ,长度自然就是原来的一半(nBufferSize/2), * 通过编码后short类型的数据变为char类型,让后复制给pCodecBits */ int g711_encode(unsigned char* pCodecBits, const char* pBuffer, int nBufferSize) { short* buffer = (short*)pBuffer; int i; for(i=0; i<nBufferSize/2; i++) { pCodecBits[i] = encode(buffer[i]); } return nBufferSize/2; } /** 个人理解 * bitsize 应该为16, pcm 数组的宽度变为原来两倍(short *out_data = (short*)pRawData;), * 通过对pBuffer(g711数据)中char解码转为两个字节的short ,后复制给out_data数组, 在使用的时候又转为char类型, 则 解码后的数据就是原来的两倍(nBufferSize*2) */ int g711_decode(char* pRawData, const unsigned char* pBuffer, int nBufferSize) { short *out_data = (short*)pRawData; int i; for(i=0; i<nBufferSize; i++) { out_data[i] = decode(pBuffer[i]); } return nBufferSize*2; } #define MAX 32635 unsigned char encode(short pcm) { int sign = (pcm & 0x8000) >> 8; if (sign != 0) pcm = -pcm; if (pcm > MAX) pcm = MAX; int exponent = 7; int expMask; for (expMask = 0x4000; (pcm & expMask) == 0 && exponent>0; exponent--, expMask >>= 1) { } int mantissa = (pcm >> ((exponent == 0) ? 4 : (exponent + 3))) & 0x0f; unsigned char alaw = (unsigned char)(sign | exponent << 4 | mantissa); return (unsigned char)(alaw^0xD5); } short decode(unsigned char alaw) { alaw ^= 0xD5; int sign = alaw & 0x80; int exponent = (alaw & 0x70) >> 4; int data = alaw & 0x0f; data <<= 4; data += 8; if (exponent != 0) data += 0x100; if (exponent > 1) data <<= (exponent - 1); return (short)(sign == 0 ? data : -data); }
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python 简易微信实现(注册登录+数据库存储+聊天+GUI+文件传输)
socket+tkinter详解+简易微信实现 历经多天的努力,查阅了许多大佬的博客后终于实现了一个简易的微信O(∩_∩)O~~ 简易数据库的实现 使用pands+CSV实现数据库框架搭建 import socket import threading from pandas import * import pymysql import csv # 创建DataFrame对象 # 存储用户数据的表(...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 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)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的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进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
相关热词 c#中dns类 c#合并的excel c# implicit c#怎么保留3个小数点 c# 串口通信、 网络调试助手c# c# 泛型比较大小 c#解压分卷问题 c#启动居中 c# 逻辑或运算符
立即提问