android里面调用so文件出错

08-03 10:29:33.925 32185-32215/com.example.administrator.testdome E/art: dlopen("/data/app/com.example.administrator.testdome-1/lib/arm/libSystemTransform.so", RTLD_LAZY) failed: dlopen failed: "/data/app/com.example.administrator.testdome-1/lib/arm/libSystemTransform.so" is too small to be an ELF executable: only found 0 bytes
08-03 10:29:33.926 32185-32215/com.example.administrator.testdome E/AndroidRuntime: FATAL EXCEPTION: Thread-6374
Process: com.example.administrator.testdome, PID: 32185
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.example.administrator.testdome-1/lib/arm/libSystemTransform.so" is too small to be an ELF executable: only found 0 bytes
at java.lang.Runtime.loadLibrary(Runtime.java:371)
at java.lang.System.loadLibrary(System.java:988)
at com.hikvision.netsdk.HCNetSDK.(HCNetSDK.java:27)
at com.example.administrator.testdome.HC_DVRManager.initSDK(HC_DVRManager.java:126)
at com.example.administrator.testdome.MainActivity$2.run(MainActivity.java:89)

2个回答

so文件导致的项目出错......
答案就在这里:Android studio中引用第三方库的so文件出错
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

你要将海康的so放在libs下面的armeabi路径下,另外海康不支持arm64位架构 如果你的libs下面有arm64-v8a文件夹也要删除
引用so还要在build.gradle加入
repositories {
flatDir {
dirs 'libs'
}
}

sourceSets.main {
    manifest.srcFile 'src/main/AndroidManifest.xml'
    jniLibs.srcDirs = ['libs']  // <-- Set your folder here!
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
初学jni,android调用so,运行出错
按照网上教程编得程序,运行时android程序直接异常退出: ![图片说明](https://img-ask.csdn.net/upload/201505/26/1432628427_284459.png) 附源码,java和cpp @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView JNITest = (TextView)findViewById(R.id.jniTextView); String str = getJNItest(); JNITest.setText(str); } static{ System.loadLibrary("JNITest"); } public native String getJNItest(); ------------------------------------------------------ #include <jni.h> #include <string.h> extern "C" _jstring* Java_com_john_helloJNI_getJNItest(JNIEnv* env, jobject thiz){ return (env)->NewStringUTF("hello FROM jni by ndkTest!"); }
[诡异bug]Android 调用so库的时候报 “dlopen failed: recursive link to xxx.so”
## 相关背景: 最近在封装一个jni,就是根据.h文件封装给别人的so库封装一套jni接口供java层去调用。 ** 错误信息** ![图片说明](https://img-ask.csdn.net/upload/201812/21/1545370202_430194.png) **已经排除的原因** * 编译so库错误:可以参考比较奇怪的现象。已经在华为手机上运行过了。 * so库缺少:如果少放了某个so库,提示的错误和这个不同。所以排除so库缺少的原因。 * 平台不匹配:调试的机器为v7a,编译的so库也为v7a。所以不是平台不匹配的原因。 * 路径错误:这个就更不可能了。 **比较奇怪的现象** * 因为调试的机器是公司定制的,所以我之前一直在这个机器上调试。有一天我放在自己的手机上(华为荣耀10)调试后,发现是可以正常运行的。 **Application.mk** ``` APP_STL := gnustl_shared APP_PLATFORM := android-21 APP_ABI := armeabi-v7a ``` **Android.mk** ``` #Android.mk LOCAL_PATH := $(call my-dir) #e.so模块 include $(CLEAR_VARS) LOCAL_MODULE := e LOCAL_SRC_FILES := armeabi-v7a/e.so include $(PREBUILT_SHARED_LIBRARY) #f.a模块 include $(CLEAR_VARS) LOCAL_MODULE := f LOCAL_SRC_FILES := armeabi-v7a/f.a include $(PREBUILT_STATIC_LIBRARY) #libgnustl_shared模块 include $(CLEAR_VARS) LOCAL_MODULE := g LOCAL_SRC_FILES := armeabi-v7a/libgnustl_shared.so include $(PREBUILT_SHARED_LIBRARY) #自己的编译模块 include $(CLEAR_VARS) LOCAL_MODULE := faceDetectJni LOCAL_SRC_FILES := faceDetectJni.c LOCAL_LDLIBS += -L$(SYSROOT)/lib -llog #这里引入第三方编译静态模块 LOCAL_STATIC_LIBRARIES := f #这里引入第三方编译动态模块 LOCAL_SHARED_LIBRARIES :=e\ g include $(BUILD_SHARED_LIBRARY) ```
Android NDk 怎么编译时动态链接第三方so库,有头文件
最近在做一个项目,大神把底层的算法封装成so(普通的c++函数),并给出头文件,我需要先 进行封装,然后给java调用。在我写的C++(符合JNI规范)里面调用so库函数, 下面贴图求解答: 1.项目的目录结构 ![图片说明](https://img-ask.csdn.net/upload/201512/09/1449650952_279016.png) 其中 libvvw.so就是第三方库; Test_vvw.h就是第三方库的头文件 2.java 的native方法定义 ![图片说明](https://img-ask.csdn.net/upload/201512/09/1449651054_89245.png) 3.native的实现方法体 FrameDecode.cpp文件 ![图片说明](https://img-ask.csdn.net/upload/201512/09/1449651104_378817.png) 4.Android.mk文件 ![图片说明](https://img-ask.csdn.net/upload/201512/09/1449654849_188618.png) 进行编译时 怎样动态链接so,我总是遇到![图片说明](https://img-ask.csdn.net/upload/201512/09/1449648769_631416.png)错误,求解答,非常感谢
android studio so包导入后,方法调用出错
![图片说明](https://img-ask.csdn.net/upload/201704/06/1491463426_683913.png) ![图片说明](https://img-ask.csdn.net/upload/201704/06/1491463506_960917.png) android { sourceSets { main { jni.srcDirs = [] jniLibs.srcDirs = ['jniLibs'] } } 看网上写的配置了这些,但是方法还是红色的报错,实在没辙了,还望各位大神指点一下
android ndk生成的so库, 如何在java程序里调用?
把so库放到Android项目是可以跑的, 但放在java项目就不可以了. 我把so库复制到java项目的libs文件夹, 指定好java.library.path, 总是报java.lang.UnsatisfiedLinkError错误. 最后试了jna调用, 还是报错: java.lang.UnsatisfiedLinkError: Unable to load library 'libSmartAppUpdate': 找不到指定的模块。 我以前没用jni做过项目, 这两天踩了很多坑才把so编译出来的, 可能我没有配置什么, 导致失败, 知道的求帮忙下, 谢谢!! 我没C币了... 求好心人帮帮忙
android 调用 c 的问题 求大神解决
![图片说明](https://img-ask.csdn.net/upload/201509/03/1441292610_11668.png) 为什么我在配置完环境 在Android Tools-->add native support之后没生成.so文件,之后再Android tools就没这个选项了,还有以下错误 求解决
Android开发调用C程序,Ndk-build生成库时老是崩溃!!!
之前因为项目需求所以要用到jni调用c程序,生成so库,所以我按照jni调用的流程生成了jni头文件,编写了对应的C程序,配置文件也弄好了,但一到了ndk-build时就会崩溃,弹出make.exe已停止工作,如下图所示。。。 ![图片说明](https://img-ask.csdn.net/upload/201807/30/1532958112_2737.jpg) 一开始我以为是代码的问题,于是自己写了个简单的demo,但用到ndk-build时还是出同样地错误。。。 请教各位大神有没有遇到这种情况,或者相应的解决办法。 哎,被这个问题卡了好久,感觉好急。。。。
Android 调用vlc报错,如何定位。
在调用vlc的so函数,报错程序直接闪退, 在Eclipse上log没有任何提示错误信息。 现在如何定位到vlc里面哪句代码报错? 是否跟vlc编译debug版本有关?
【求助】有没有大佬做过AndroidStudio通过JNI NDK调用第三方so库?
我现在用JNI NDK调用,通过dlopen方法打开想要调用的so库,可是他这个dlopen只能打开jniLibs文件下的so库,但这个文件夹又是ndk-build才会生成,所以我现在按照网上的办法,写Android.mk ,将这个库在ndk-build的同时复制进jniLibs的路径下,但是他只能生成X86CPU架构的so,我在Application.mk 里边APP_ABI := all就会出错 可是只生成这一种so,程序又运行不了,有没有大佬知道怎么办? ![图片说明](https://img-ask.csdn.net/upload/201711/05/1509884321_223110.png) ![图片说明](https://img-ask.csdn.net/upload/201711/05/1509884348_447680.png) ![图片说明](https://img-ask.csdn.net/upload/201711/05/1509884360_470711.png) ![图片说明](https://img-ask.csdn.net/upload/201711/05/1509884369_706681.png) ![图片说明](https://img-ask.csdn.net/upload/201711/05/1509884378_352612.png)
安卓调用百度地图sdk,可是返回坐标值一直是4.9E-324
我发现手机端使用正常,就是在使用夜神模拟器的时候出现的这样的问题。 打开夜神模拟器设置,发现我的软件有这个位置权限(手机端申请了动态权限) 但就是返回4.9E-324,location.getLocType()的返回值是167.我看文档说是没有获取到位置权限。 我现在就有一点迷惑了,动态的也申请了,也在AndroidManifest里面写了权限。 真心不知道这个bug咋解决。 以下是我mainactivity里面所有的代码: ``` package com.example.ppgo; import android.Manifest; import android.content.pm.PackageManager; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import android.widget.Toast; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import java.util.ArrayList; import java.util.List; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; public class MainActivity extends AppCompatActivity { public LocationClient mLocationClient; private TextView positionText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mLocationClient=new LocationClient(getApplicationContext()); mLocationClient.registerLocationListener(new MyLocationListener()); setContentView(R.layout.activity_main); positionText=(TextView)findViewById(R.id.position_text_view); List<String> permissionList=new ArrayList<>(); if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest. permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION); } if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest. permission.READ_PHONE_STATE)!=PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.READ_PHONE_STATE); } if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest. permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } if(!permissionList.isEmpty()){ String[]permissions=permissionList.toArray(new String[permissionList.size()]); ActivityCompat.requestPermissions(MainActivity.this,permissions,1); }else { requestLocation(); } } private void requestLocation(){ initLocation(); mLocationClient.start(); } private void initLocation(){ LocationClientOption option =new LocationClientOption(); option.setScanSpan(5000); mLocationClient.setLocOption(option); } @Override protected void onDestroy() { super.onDestroy(); mLocationClient.stop(); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); Log.e("Tag","执行了onRequestPermissionsResult函数"); switch (requestCode){ case 1: if (grantResults.length>0){ for(int result:grantResults){ if(result!=PackageManager.PERMISSION_GRANTED){ Toast.makeText(this,"必须同意所有权限才能使用本程序", Toast.LENGTH_SHORT).show(); finish(); return; } } requestLocation(); }else { Toast.makeText(this,"发生未知错误",Toast.LENGTH_SHORT).show(); finish(); } break; default: } } public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location){ StringBuilder currentPosition=new StringBuilder(); currentPosition.append("纬度:").append(location.getLatitude()).append("\n"); currentPosition.append("经线:").append(location.getLongitude()).append("\n"); currentPosition.append("国家:").append(location.getCountry()).append("\n"); currentPosition.append("省:").append(location.getProvince()).append("\n"); currentPosition.append("市:").append(location.getCity()).append("\n"); currentPosition.append("区:").append(location.getDistrict()).append("\n"); currentPosition.append("街道:").append(location.getStreet()).append("\n"); currentPosition.append("定位方式:"); if (location.getLocType() == BDLocation.TypeGpsLocation) { currentPosition.append("GPS"); } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) { currentPosition.append("网络"); currentPosition.append(" 错误代码:"+location.getLocType()); } else if (location.getLocType() == BDLocation.TypeOffLineLocation){ currentPosition.append("离线定位成功,离线定位结果也是有效的"); } else if (location.getLocType() == BDLocation.TypeServerError){ currentPosition.append("服务端网络定位失败"); currentPosition.append(" 错误代码:"+location.getLocType()); } else if (location.getLocType() == BDLocation.TypeNetWorkException){ currentPosition.append("网络不同导致定位失败,请检查网络是否通畅"); } else if (location.getLocType() == BDLocation.TypeCriteriaException){ currentPosition.append("无法获取有效定位依据导致定位失败"); currentPosition.append(" 错误代码:"+location.getLocType()); } else { currentPosition.append(location.getLocType()); //这里打印出来location.getLocType()是162 currentPosition.append("老子也不知道是啥原因!!!"); } positionText.setText(currentPosition); } } } ``` 以下是我AndroidManifest里面的代码: ``` <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.ppgo"> <!-- 这个权限用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问GPS定位 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="mvxMsdG1homIlK4UjAWYP2itjxo09Dyy" /> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" /> </application> </manifest> ```
eclipse做android程序,如何调试c++代码
我的android程序需要调用我自己写的C++代码,编译成so文件后调用,可是现在出错了,java部分的代码调试过没问题,可c++的代码不知道怎么调试,到底哪句代码错了也找不出来,这可怎么办? 有没有什么办法可以在c++代码里加个断点一句句调试一下?
android linphone 在mediastreamer2新建filter进行h264硬件编码
打算分三步骤进行: 1.新建一个简单的filter 2.在步骤1建立的filter中调用硬件编码的函数(需要引入第三方硬件编码so库) 3.在步骤1建立的filter编写具体的硬件编码实现的代码 现在遇到了下面问题: 在第2步骤的调用第三方硬件编码so库时出现问题,用ndk进行编译时总是出现undefined reference to 'xxx'的错误,我是在下面位置添加的第三方so库的。 botrophone-androidV1.4可视电话+Hisi+Filter\submodules\linphone\mediastreamer2\build\android\Android.mk文件 255行 LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -lGLESv2 -llog -ldl -L$(LOCAL_PATH)/../include/lib2 -lhi_common -lhi_ecs -lhi_mpi -lsample_common
android jni java.lang.UnsatisfiedLinkError
在调用jni时,报java.lang.UnsatisfiedLinkError: No implementation found for void com.eaglive.voip.VoipSdk.init(java.lang.String, int, java.lang.String) (tried Java_com_eaglive_voip_VoipSdk_init and Java_com_eaglive_voip_VoipSdk_init__Ljava_lang_String_2ILjava_lang_String_2) 还有调用了其他的so文件,但是这里出现的错误好像与它们无关,就暂时不贴出来了, 网上说的检查java类包名和jni方法名这个我检查了,没问题,还有使用命令查看了so文件是否加载到目录里,结果如下: ![图片说明](https://img-ask.csdn.net/upload/201709/04/1504532197_671134.png) System.loadLibrary("voip"); 这句也没报异常。跪求大牛帮我看看,还是哪里的问题。拜托,拜托……
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) (抛出错误,程序奔溃) ``` ```
NDK开发的时候遇到error: undefined reference to 错误
大家好,我在正在将C++的一些代码通过ndk调用到android项目里面去,但是在出现了一个很奇怪的错误; /bin/ld: ./obj/local/armeabi/objs/TestNDK2/TestNDK2.o: in function Java_com_example_testndk2_MainActivity_stringTestNdk(_JNIEnv*, _jobject*):jni/TestNDK2.cpp:15: error: undefined reference to 'CFeatureExtract::CFeatureExtract()' collect2: ld returned 1 exit status make: *** [obj/local/armeabi/libTestNDK2.so] Error 1 我调用jni的文件代码为: #include <string.h> #include "FeatureExtract.h" #include "Output.h" #include <jni.h> jstring Java_com_example_testndk2_MainActivity_stringTestNdk( JNIEnv* env, jobject thiz ) { COutput * pout; pout = new COutput(); CFeatureExtract *pFtr; pFtr=new CFeatureExtract(); return (env)->NewStringUTF("Hello from JNI and anbo !"); } mk文件也编写好了,应该没什么问题,之所以说没问题是因为,我在上面调用了其他cpp文件的 output.cpp和FeatureExtract.cpp等好几个cpp文件,当我把 pFtr=new CFeatureExtract(); 这行去掉的时候,会发现不再报错。下面是我的mk的代码: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libFeatureExtract LOCAL_SRC_FILES := OnlineFtr.cpp OnlineNorm.cpp FeatureExtract.cpp LOCAL_C_INCLUDES := $(LOCAL_PATH)/include include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libOutput LOCAL_SRC_FILES := LQDFR.cpp Classifier.cpp Output.cpp include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := TestNDK2 LOCAL_SRC_FILES := TestNDK2.cpp LOCAL_STATIC_LIBRARIES := libFeatureExtract LOCAL_STATIC_LIBRARIES := libOutput include $(BUILD_SHARED_LIBRARY) 最后是我CFeatureExtract构造函数的代码: CFeatureExtract::CFeatureExtract() { nmdir = 0; nwid = zone*zstep; pNorm = new COnlineNorm; pFeatr = new COnlineFtr( nwid ); //edit by anbo trajnorm = NULL; new_ptnum =0; new_ptnum_total=0; strokeEnd=0; strokeBegin=0; countStroke=0; GaussModel_probability =0; } 下面是.h头文件的部分声明 class CFeatureExtract{ public: CFeatureExtract(); ~CFeatureExtract(); 非常想知道到底哪里错了啊!感谢!
安卓 JNI回调Java 总是崩溃
java 代码: package com.example.jnitest; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import java.util.Date; public class MainActivity extends Activity { private TextView mTextView; private Button mCheckBtn; public native String displayHelloWorld();// java native方法申明 public native void callBack();// java native方法申明 public native void sayHello();// java native方法申明 static { System.loadLibrary("JNICall");// 装入动态链接库 } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) findViewById(R.id.test); mTextView.setText(displayHelloWorld()); mCheckBtn = (Button) findViewById(R.id.check); mCheckBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { callBack(); } }); } public void showMessageFromNative(String message) { System.out.println("chlu---------message=" + message); } public int signTest(int i, Date date, int[] arr) { System.out.println("chlu--------- Sign Test"); return 0; } } C++代码: #include <jni.h> #include "JNICall.h" JNIEnv* env; JavaVM *g_jm; JNIEXPORT jstring JNICALL Java_com_example_jnitest_MainActivity_displayHelloWorld( JNIEnv *env, jobject thiz) { return env->NewStringUTF("chlu---Hello from JNI !"); } JNIEXPORT void JNICALL Java_com_example_jnitest_MainActivity_callBack( JNIEnv* env, jobject obj) { const char *message = "C++传到上层JAVA"; //需要传递到Java层的字符串 jclass class_z = env->FindClass("com/example/jnitest/MainActivity"); jmethodID className_method = env->GetMethodID(class_z, "showMessageFromNative", "(Ljava/lang/String;)V"); env->CallVoidMethod(obj, className_method, message); } JNIEXPORT void JNICALL Java_com_example_jnitest_MainActivity_sayHello( JNIEnv * env, jobject obj) { //否则就传入一个jclass对象表示native()方法所在的类 jclass native_clazz = env->GetObjectClass(obj); //得到jmethodID jmethodID methodID_func = env->GetMethodID(native_clazz, "signTest", "(ILjava/util/Date;[I)I"); //调用signTest方法 env->CallIntMethod(obj, methodID_func, 1L, NULL, NULL); } jint JNI_OnLoad(JavaVM* vm, void* reserved) { jint result = -1; g_jm = vm; if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { return result; } if (env == NULL) { return result; } result = JNI_VERSION_1_4; return result; } /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> #include <stdio.h> #include <string.h> /* Header for class HelloWorld */ #ifndef _Included_JNITCall #define _Included_JNITCall #ifdef __cplusplus extern "C" { #endif JNIEXPORT jstring JNICALL Java_com_example_jnitest_MainActivity_displayHelloWorld( JNIEnv *env, jobject thiz); JNIEXPORT void JNICALL Java_com_example_jnitest_MainActivity_callBack( JNIEnv* env, jobject obj); JNIEXPORT void JNICALL Java_com_example_jnitest_MainActivity_sayHello( JNIEnv * env, jobject obj); #ifdef __cplusplus } #endif #endif 错误: /libdvm.so. Error (3): No such process Stack frame #15 pc 000297e0 /system/lib/libdvm.so: Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #16 pc 00030c6c /system/lib/libdvm.so (dvmMterpStd(Thread*)+76): Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #17 pc 0002e304 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184): Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #18 pc 00063715 /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+392): Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #19 pc 0006b627 /system/lib/libdvm.so: Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #20 pc 000297e0 /system/lib/libdvm.so: Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #21 pc 00030c6c /system/lib/libdvm.so (dvmMterpStd(Thread*)+76): Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #22 pc 0002e304 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184): Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #23 pc 00063431 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336): Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #24 pc 0004cbb7 /system/lib/libdvm.so: Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #25 pc 0004e32b /system/lib/libandroid_runtime.so: Unable to open symbol file /obj/local/armeabi/libandroid_runtime.so. Error (3): No such process Stack frame #26 pc 0004f057 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*, bool)+358): Unable to open symbol file /obj/local/armeabi/libandroid_runtime.so. Error (3): No such process Stack frame #27 pc 00001063 /system/bin/app_process: Unable to open symbol file /obj/local/armeabi/app_process. Error (3): No such process Stack frame #28 pc 0000e4c3 /system/lib/libc.so (__libc_init+50): Unable to open symbol file /obj/local/armeabi/libc.so. Error (3): No such process Stack frame #29 pc 00000d80 /system/bin/app_process: Unable to open symbol file /obj/local/armeabi/app_process. Error (3): No such process Crash dump is completed ********** Crash dump: ********** Build fingerprint: 'Xiaomi/virgo/virgo:4.4.4/KTU84P/5.11.12:user/release-keys' pid: 23900, tid: 23900, name: example.jnitest >>> com.example.jnitest <<< signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr -------- Stack frame #00 pc 0002210c /system/lib/libc.so (tgkill+12): Unable to open symbol file /obj/local/armeabi/libc.so. Error (3): No such process Stack frame #01 pc 00013165 /system/lib/libc.so (pthread_kill+48): Unable to open symbol file /obj/local/armeabi/libc.so. Error (3): No such process Stack frame #02 pc 00013379 /system/lib/libc.so (raise+10): Unable to open symbol file /obj/local/armeabi/libc.so. Error (3): No such process Stack frame #03 pc 000120a3 /system/lib/libc.so: Unable to open symbol file /obj/local/armeabi/libc.so. Error (3): No such process Stack frame #04 pc 000219c0 /system/lib/libc.so (abort+4): Unable to open symbol file /obj/local/armeabi/libc.so. Error (3): No such process Stack frame #05 pc 00048b1f /system/lib/libdvm.so (dvmAbort+78): Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #06 pc 0004d487 /system/lib/libdvm.so (dvmDecodeIndirectRef(Thread*, _jobject*)+146): Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3): No such process Stack frame #07 pc 0006337d /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+156): Unable to open symbol file /obj/local/armeabi/libdvm.so. Error (3):
安卓蓝牙,BluetoothAdapter.getRemoteDevice()报错
``` public class PathFragment extends Fragment { private Button scanBT; public static final int MY_PERMISSION_REQUEST_CONSTANT = 1; public static final int MESSAGE_STATE_CHANGE = 1; public static final int MESSAGE_READ = 2; public static final int MESSAGE_WRITE = 3; public static final int MESSAGE_DEVICE_NAME = 4; public static final int MESSAGE_TOAST = 5; // Key names received from the BluetoothChatService Handler public static final String DEVICE_NAME = "device_name"; public static final String TOAST = "toast"; // Intent请求码 private static final int REQUEST_CONNECT_DEVICE = 1; private static final int REQUEST_ENABLE_BT = 2; private static final int REQUEST_NEW_CARD = 3; private String mConnectedDeviceName = null; private BluetoothAdapter mBluetoothAdapter = null; private BluetoothService mBlueService = null; String recieveStr = "";//暂存当前发过来的字节 int n = 0; MyDatabaseHelper myDatabaseHelper; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View pathLayout = inflater.inflate(R.layout.path_layout, container, false); return pathLayout; } @Override public void onActivityCreated(Bundle savedInstanceState) {//当Activity中的onCreate方法执行完后调用。 super.onActivityCreated(savedInstanceState); //打开数据库 myDatabaseHelper = new MyDatabaseHelper(getActivity(),"csport.db",null,1); initViews(); scanBT.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent serverIntent = new Intent(getActivity(), DeviceListActivity.class); startActivityForResult(serverIntent,REQUEST_CONNECT_DEVICE); } }); } private void initViews() { scanBT = (Button)getActivity().findViewById(R.id.button_scan); } public void onDestroy() { super.onDestroy(); // Stop the Bluetooth chat services if (mBlueService != null) mBlueService.stop(); } @Override public synchronized void onResume() { super.onResume(); // Performing this check in onResume() covers the case in which BT was // not enabled during onStart(), so we were paused to enable it... // onResume() will be called when ACTION_REQUEST_ENABLE activity returns. if (mBlueService != null) { // Only if the state is STATE_NONE, do we know that we haven't started already if (mBlueService.getState() == BluetoothService.STATE_NONE) { // Start the Bluetooth chat services mBlueService.start(); } } } //处理线程返回信息 private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MESSAGE_STATE_CHANGE://1 Toast.makeText(getActivity(), "change", Toast.LENGTH_LONG); switch (msg.arg1) { case BluetoothService.STATE_CONNECTED: //mTitle.setText(R.string.title_connected_to); //mTitle.append(mConnectedDeviceName); //mConversationArrayAdapter.clear(); break; case BluetoothService.STATE_CONNECTING: //mTitle.setText(R.string.title_connecting); break; case BluetoothService.STATE_LISTEN: case BluetoothService.STATE_NONE: //mTitle.setText(R.string.title_not_connected); break; } break; //发送了信息,显示在本地屏幕上(重写,显示结果即可) case MESSAGE_WRITE://2 Toast.makeText(getActivity(), "发送成功", Toast.LENGTH_LONG); break; //收到了信息,显示在本地屏幕上(重写,加入到通信录中) case MESSAGE_READ://3读取数据 byte[] readBuf = (byte[]) msg.obj; recieveStr = new String(readBuf, 0, msg.arg1); if (recieveStr.length() > 7) { break; } else { float res = 0; if (recieveStr != null && recieveStr.length() > 0) { res = Float.parseFloat(recieveStr); //arrayList.add(res); //n ++ ; //Log.e("Tag",String.valueOf(arrayList)); //Log.e("Tag",String.valueOf(n)); } if (n == 30) { //analyzer.deal(MainActivity.this,arrayList); //重置n和arrlist准备接收下一个5min的数据 n = 0; //arrayList.clear(); } } //tView.setText(recieveStr); //writeFile(recieveStr); break; case MESSAGE_DEVICE_NAME://4 // save the connected device's name mConnectedDeviceName = msg.getData().getString(DEVICE_NAME); Toast.makeText(getActivity(), "已成功连接到 " + mConnectedDeviceName, Toast.LENGTH_SHORT).show(); //requestSend();//初次连接成功后请求重发 break; case MESSAGE_TOAST://5 Toast.makeText(getActivity(), msg.getData().getString(TOAST), Toast.LENGTH_SHORT).show(); break; } } }; //处理其他Activity的返回结果 public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUEST_CONNECT_DEVICE://1 //当点击了设备列表后返回所指向设备的MAC地址,根据此MAC进行主动连接 if (resultCode == Activity.RESULT_OK) { String address = data.getExtras().getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS); BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); mBlueService.connect(device); } break; case REQUEST_ENABLE_BT://2 //由确认打开蓝牙Activity返回,若打开成功初始化名片列表 if (resultCode == Activity.RESULT_OK) { // Bluetooth is now enabled, so set up a chat session setupCards(); } else { // User did not enable Bluetooth or an error occured Toast.makeText(getActivity(), R.string.bt_not_enabled_leaving, Toast.LENGTH_SHORT).show(); //finish(); } break; case REQUEST_NEW_CARD://3 //由添加新名片Activity返回,若添加了新card重新读取并显示 if (resultCode == Activity.RESULT_OK) { setupCards(); } break; } } private void setupCards() { //完成显示内容后,初始化蓝牙服务对象 mBlueService = new BluetoothService(mHandler); } //重写setMenuVisibility方法,不然会出现叠层的现象 public void setMenuVisibility(boolean menuVisibility) { super.setMenuVisibility(menuVisibility); if (this.getView() != null) { this.getView().setVisibility(menuVisibility ? View.VISIBLE : View.GONE); } } } ``` 当我把周围的设备搜索出来,准备连接的时候,就给我报错如下:Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.bluetooth.BluetoothDevice android.bluetooth.BluetoothAdapter.getRemoteDevice(java.lang.String)' on a null object reference 出错的这段代码为:BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 我通过日志打印发现明明address是有值的啊,可是怎么就出这种错误呢,求各位大神指导一下啊! c币不多,能回答上的我追加财富。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
阿里P8数据架构师:顶级开发者都在用什么数据库?
其实从去年已经隐隐约约感觉到数据库的有变化,只是没有想到变得这么快。今年的一些事情实实在在地给了某些数据库重击,如果以前去某数据库还是喊喊,然后该用还用,今年从传统领域刮起的去某数据库的风,已经开始了,并且后面的乌云密布也看得见。 最近看一篇国外的开源产品提供厂商的一篇文字,主要是在询问了他的几百位客户后得出了下图中的2019年数据库的使用趋势。 从图中可以看出,MySQL以38.9...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
互联网公司分布式系统架构演进之路
介绍 分布式和集群的概念经常被搞混,现在一句话让你明白两者的区别。 分布式:一个业务拆分成多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 例如:电商系统可以拆分成商品,订单,用户等子系统。这就是分布式,而为了应对并发,同时部署好几个用户系统,这就是集群 1 单应用架构 2 应用服务器和数据库服务器分离 单机负载越来越来,所以要将应用服务器和数据库服务器分离 3 应用服务...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
程序员需要了解的硬核知识之汇编语言(一)
之前的系列文章从 CPU 和内存方面简单介绍了一下汇编语言,但是还没有系统的了解一下汇编语言,汇编语言作为第二代计算机语言,会用一些容易理解和记忆的字母,单词来代替一个特定的指令,作为高级编程语言的基础,有必要系统的了解一下汇编语言,那么本篇文章希望大家跟我一起来了解一下汇编语言。 汇编语言和本地代码 我们在之前的文章中探讨过,计算机 CPU 只能运行本地代码(机器语言)程序,用 C 语言等高级语...
OpenCV-Python 绘图功能 | 七
目标 学习使用OpenCV绘制不同的几何形状 您将学习以下功能:cv.line(),cv.circle(),cv.rectangle(),cv.ellipse(),cv.putText()等。 代码 在上述所有功能中,您将看到一些常见的参数,如下所示: img:您要绘制形状的图像 color:形状的颜色。对于BGR,将其作为元组传递,例如:(255,0,0)对于蓝色。对于灰度,只需传递...
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻… 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期看完了 Pyt...
Java知识体系最强总结(2020版)
更新于2019-12-15 10:38:00 本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。 文章目录...
计算机专业的书普遍都这么贵,你们都是怎么获取资源的?
介绍几个可以下载编程电子书籍的网站。 1.Github Github上编程书资源很多,你可以根据类型和语言去搜索。推荐几个热门的: free-programming-books-zh_CN:58K 星的GitHub,编程语言、WEB、函数、大数据、操作系统、在线课程、数据库相关书籍应有尽有,共有几百本。 Go语言高级编程:涵盖CGO,Go汇编语言,RPC实现,Protobuf插件实现,Web框架实...
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Fiddler+夜神模拟器进行APP抓包
Fiddler+夜神模拟器进行APP抓包 作者:霞落满天 需求:对公司APP进行抓包获取详细的接口信息,这是现在开发必备的。 工具:Fiddler抓包,夜神模拟器 模拟手机 安装APP 1.下载Fiddler https://www.telerik.com/download/fiddler Fiddler正是在这里帮助您记录计算机和Internet之间传递的所有HTTP和HTTPS通信...
小白学 Python 爬虫(42):春节去哪里玩(系列终篇)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(...
一文带你看清 HTTP 所有概念
上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性。我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的概念,但没有深入底层) HTTP 标头 先来回顾一下 HTTP1.1 标头都有哪几种 HTTP 1.1 的标头主要分为四种,通用标头、实体标头、请求标头、响应标头,现在我们来对这几种标头进行介绍 通用...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
[数据结构与算法] 排序算法之归并排序与基数排序
归并排序 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 基本思想 可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
史上最牛逼的 Eclipse 快捷键,提高开发效率!
如果你在使用IDEA,请参考博主另外的一篇idea快捷键的博客。
如何快速打好Java基础?
二哥,我是一名大学生,专业是电力工程,但想自学 Java,如何快速打好基础呢? 微信上 tison 向我提出了这个问题。我想我是有资格来回答的,从北京奥运会那年开始学 Java,到现在已经有 10 多个年头了,真的是从一名编程白痴一步步走到现在的。 我在各大技术网站上分享了不少 Java 方面的原创文章,不知道影响了多少初学者,反正文章的留言中经常能看到他们由衷的感谢。现在每天仍然有不少同学(...
在三线城市工作爽吗?
我是一名程序员,从正值青春年华的 24 岁回到三线城市洛阳工作,至今已经 6 年有余。一不小心又暴露了自己的实际年龄,但老读者都知道,我驻颜有术,上次去看房子,业务员肯定地说:“小哥肯定比我小,我今年还不到 24。”我只好强颜欢笑:“你说得对。” 从我拥有记忆到现在进入而立之年,我觉得,我做过最明智的选择有下面三个: 1)高中三年,和一位女同学保持着算不上朋友的冷淡关系;大学半年,把这位女同学追到...
相关热词 c#判断数字不得为负数 c#帧和帧协议 c#算偏移值 c# 在枚举中 c#6 字符串 插值 c#程序中的占位符标签 c#监听数组变化 c# vlc c#索引实现 c# 局域网广播通信
立即提问