activity绑定Service成功时ServiceConnection的回调问题? 5C

Activity绑定Service时ServiceConnection回调onServiceConnected传过来的IBinder对象,为什么相同进程下是Binder对象,不同进程下是BinderProxy对象。

 private ServiceConnection mConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            Log.d(TAG, "IBinder.class.Name : " + service.getClass().getName());
            mService = new Messenger(service);
            Message msg = Message.obtain();
            Bundle data = new Bundle();
            String msgString = "hello ,this is client.";
            data.putString("msg", msgString);
            msg.setData(data);
            msg.replyTo = clientHandler;
            try {
                mService.send(msg);
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    };

3个回答

首先android的进程间通信采用的是IPC机制,IPC的主角就是Binder,整个通信机制在设计上是采用了代理模式来实现。
比如:A(客户端)进程要调用B(服务)进程的一个方法funcB(),
这个时候A并不能直接去访问B中的方法(出于数据保护,进程间是不允许直接通信的,IPC利用了共享内存来实现通信的)。
IPC的大致思路是:
A将这个请求委托给客户端的Binder代理,
进而将请求转给BinderDriver,
再将请求给服务端的Binder代理,
最后通过Binder代理调用B中的funcB()。

如果不去考虑中间的过程,客户端调用远程服务(跨进程)的时候,都是获得一个远程服务在本地的代理BinderProxy对象。
通过该对象实现RPC的调用。

stven_king
静默加载 这些基础知识我知道,我想问的是Android的framework处理的细节。最好能有一源码分析的文章。
大约 3 年之前 回复

Android技术内幕.系统卷.pdf
ANDROID框架揭秘.pdf
这两篇有对源码做详细的说明

之前我也仔细的去看过AIDl的使用,了解了绑定服务的过程,被你这么一问我又重新看到了一遍...

首先我要说我现在还没办法给你完整的分析整个的流程,因为我不懂c,而且我也没有完整的Android系统源码,但是我可以帮你分析一下:

首先Android系统多个层级,除了你想要知道的FrameWork框架层,还有驱动层,驱动层是由c实现的,
例如进程的创建,各种服务的启动(例如控制音量或者是亮度,最终调用的是都是c)。
所以跨进行通信(AIDl),必然会调用驱动层的东西。
(创建进程的开销很大,例如把WebActivity设置到新进程中,第一次会很慢)

你可以先看这个篇博客,他分析了bindService整个流程:
http://blog.csdn.net/zhangyongfeiyong/article/details/51953300

但是注意里面有些方法抛出了TransactionTooLargeException异常,这个异常会在跨进程通信的对象内存过大抛出(例如我们的方法参数和返回值),
也就是说这个地方有可能在什么条件下,会去调用c的代码,我猜测很有可能是在这个过程中,把Binder转化成了BinderProxy。

接下来再看这个,看看里面整理的c的代码,虽然可能是看不懂,但是你会看到Binder和BinderProxy,里面有判断具体要使用哪一个。
http://xxw8393.blog.163.com/blog/static/372568342009828101455182/

所以你想要知道他俩具体转换的地方,我猜测是在c代码的部分,我也只能帮你到这里了,如果你有了新的发现,一定要告诉我。

stven_king
静默加载 最近因为这个问题看了好多文章,最后通过http://blog.csdn.net/universus/article/details/6211589一篇文章对binder数据结构分析的,可以看出返回Bpbinder还是BBinder是在C层做的判断的。至于到底是在哪里,我自己感觉追不下去啦~~!
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
fragment 怎么绑定 service

使用 ViewPager 的时候,在其 Fragment 中要执行下载任务,这个下载任务我是在 Service 中实现的,但是我在 Fragment 中使用 绑定 Service 的时候,却总不成功,是怎么回事呢?在 Fragment 中是否能够绑定 Service,如果不能,那么应该在哪里实现开启服务实现下载逻辑,又怎么样将数据传送到 Fragment 呢?

AccountSetupOptions has leaked ServiceConnection

12-14 15:57:59.940: E/ActivityThread(5339): Activity com.android.email.activity.setup.AccountSetupOptions has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@41c31a88 that was originally bound here 12-14 15:57:59.940: E/ActivityThread(5339): android.app.ServiceConnectionLeaked: Activity com.android.email.activity.setup.AccountSetupOptions has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@41c31a88 that was originally bound here 12-14 15:57:59.940: E/ActivityThread(5339): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:979) 12-14 15:57:59.940: E/ActivityThread(5339): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:873) 12-14 15:57:59.940: E/ActivityThread(5339): at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1575) 12-14 15:57:59.940: E/ActivityThread(5339): at android.app.ContextImpl.bindService(ContextImpl.java:1558) 12-14 15:57:59.940: E/ActivityThread(5339): at android.content.ContextWrapper.bindService(ContextWrapper.java:517) 12-14 15:57:59.940: E/ActivityThread(5339): at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:175) 12-14 15:57:59.940: E/ActivityThread(5339): at com.android.emailcommon.service.EmailServiceProxy.updateFolderList(EmailServiceProxy.java:254) 12-14 15:57:59.940: E/ActivityThread(5339): at com.android.email.activity.setup.AccountSetupOptions.optionsComplete(AccountSetupOptions.java:383) 12-14 15:57:59.940: E/ActivityThread(5339): at com.android.email.activity.setup.AccountSetupOptions.access$200(AccountSetupOptions.java:60) 12-14 15:57:59.940: E/ActivityThread(5339): at com.android.email.activity.setup.AccountSetupOptions$3$1.run(AccountSetupOptions.java:313) 12-14 15:57:59.940: E/ActivityThread(5339): at android.app.Activity.runOnUiThread(Activity.java:4727) 12-14 15:57:59.940: E/ActivityThread(5339): at com.android.email.activity.setup.AccountSetupOptions$3.run(AccountSetupOptions.java:310) 12-14 15:57:59.940: E/ActivityThread(5339): at android.accounts.AccountManager$11.run(AccountManager.java:1427) 12-14 15:57:59.940: E/ActivityThread(5339): at android.os.Handler.handleCallback(Handler.java:733) 12-14 15:57:59.940: E/ActivityThread(5339): at android.os.Handler.dispatchMessage(Handler.java:95) 12-14 15:57:59.940: E/ActivityThread(5339): at android.os.Looper.loop(Looper.java:136) 12-14 15:57:59.940: E/ActivityThread(5339): at android.app.ActivityThread.main(ActivityThread.java:5127) 12-14 15:57:59.940: E/ActivityThread(5339): at java.lang.reflect.Method.invokeNative(Native Method) 12-14 15:57:59.940: E/ActivityThread(5339): at java.lang.reflect.Method.invoke(Method.java:515) 12-14 15:57:59.940: E/ActivityThread(5339): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 12-14 15:57:59.940: E/ActivityThread(5339): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 12-14 15:57:59.940: E/ActivityThread(5339): at dalvik.system.NativeStart.main(Native Method) 12-14 15:57:59.940: W/ActivityManager(1047): Unbind failed: could not find connection for android.os.BinderProxy@419ed618 12-14 15:57:59.950: I/monkey(5339): EmailContent

ServiceConnection接口中的onServiceConnected

public void onServiceConnected(ComponentName name, IBinder service){ } 这个方法是干什么用的呢?

从不同的 Activity 中停止和取消服务

我在 preference activity 中添加了 exit 选项,在这个选项中我想停止和取消服务。但是程序关了,服务器没有停止。我从另一个 activity 中开启和绑定服务。在 preference activity 中我没有开启也没绑定。 preference activity 代码: Preference exit = findPreference("Exit"); exit.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { // TODO Auto-generated method stub new AlertDialog.Builder(SettingsActivity.this) .setTitle("Exit :") .setMessage("Are You Sure??") .setNegativeButton("No", null) .setPositiveButton("Yes", new Dialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { stopService(new Intent(getApplicationContext(), MyService.class)); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } }) .show(); return true; } }); 但是 myservice 不能停止。如何停止服务器? 获得的错误: 08-28 10:20:30.699: E/AndroidRuntime(18503): FATAL EXCEPTION: main 08-28 10:20:30.699: E/AndroidRuntime(18503): java.lang.IllegalArgumentException: Service not registered: com.androidhive.musicplayer.SettingsActivity$1@405c7af8 08-28 10:20:30.699: E/AndroidRuntime(18503): at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:891) 08-28 10:20:30.699: E/AndroidRuntime(18503): at android.app.ContextImpl.unbindService(ContextImpl.java:901) 08-28 10:20:30.699: E/AndroidRuntime(18503): at android.content.ContextWrapper.unbindService(ContextWrapper.java:352) 修改过的代码: getApplicationContext().stopService(new Intent(SettingsActivity.this, MyService.class)); getApplicationContext().unbindService(serviceConnection);

bindService返回true,但未执行到Service中的onBind方法,为什么?

我创建的Service ``` public class ListenMessageService1 extends Service { private static String TAG = "ListenMessageService1"; public class MyBinder extends Binder { public ListenMessageService1 getService() { return ListenMessageService1.this; } } public IBinder onBind(Intent intent) { Log.i(TAG,"onBind"); return myBinder; } private MyBinder myBinder = new MyBinder(); @Override public void onCreate() { super.onCreate(); Log.i(TAG,"onCreate"); } @Override public void onDestroy() { super.onDestroy(); Log.i(TAG,"onDestroy"); // MyData.service1Running = false; } } ``` 绑定: ``` Intent listenMessageServiceIntent = new Intent(this,ListenMessageService1.class); boolean bindeSuccess = bindService(listenMessageServiceIntent,serviceConnection,0); ``` serviceConnection如下: ``` ServiceConnection serviceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { ListenMessageService.MyBinder myBinder = (ListenMessageService.MyBinder)service; ListenMessageService listenMessageService = myBinder.getService(); } @Override public void onServiceDisconnected(ComponentName name) { } }; ```

android 传递给service数据空指针问题

74行出错 ,nullpointException,帮我解答感激不尽,我想把这个数据传给service public class pdrActivity extends Activity implements View.OnClickListener{ private Button wifi_btn,pdr_btn,photo_btn,other_btn; EditText ed1,ed2,ed3; TextView txt1,txt2,txt3,txt4,txt5; Button startBtn,stopBtn; Spinner spinner; pdrService myservice; pdrService.myBind mybind; float[] sendmessage=new float[3]; Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pdr); ed1=(EditText)findViewById(R.id.ed1_pdr); ed2=(EditText)findViewById(R.id.ed2_pdr); ed3=(EditText)findViewById(R.id.ed3_pdr); txt1=(TextView)findViewById(R.id.txt1_pdr); txt2=(TextView)findViewById(R.id.txt2_pdr); txt3=(TextView)findViewById(R.id.txt3_pdr); txt4=(TextView)findViewById(R.id.txt4_pdr); txt5=(TextView)findViewById(R.id.txt5_pdr); spinner=(Spinner)findViewById(R.id.spin_pdr); startBtn=(Button)findViewById(R.id.start_pdr); stopBtn=(Button)findViewById(R.id.stop_pdr); wifi_btn=(Button)findViewById(R.id.btn1_main); photo_btn=(Button)findViewById(R.id.btn3_main); other_btn=(Button)findViewById(R.id.btn4_main); startBtn.setOnClickListener(this); stopBtn.setOnClickListener(this); handler=new Handler(); setData(); // wifi_btn.setOnClickListener(this); // photo_btn.setOnClickListener(this); // other_btn.setOnClickListener(this); } @Override protected void onDestroy() { super.onDestroy(); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.start_pdr: Intent intent=new Intent(this,pdrService.class); bindService(intent,conn,BIND_AUTO_CREATE); handler.postDelayed(runnable,20000); mybind.setData(sendmessage); //error line break; case R.id.stop_pdr: if (myservice.serviceState=="onBind"){ Toast.makeText(this,"service关闭关闭关闭关闭",Toast.LENGTH_SHORT).show(); unbindService(conn); } } } private ServiceConnection conn=new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { System.out.print("service 连接"); mybind=(pdrService.myBind)service; myservice=mybind.getService(); } @Override public void onServiceDisconnected(ComponentName name) { } }; public void setData(){ sendmessage[0]=1; sendmessage[1]=1; sendmessage[2]=1; } Runnable runnable=new Runnable() { @Override public void run() { float[] inf=mybind.getInf(); if(inf==null){ Toast.makeText(pdrActivity.this,"空数据",Toast.LENGTH_SHORT).show(); } else { Toast.makeText(pdrActivity.this,"非空数据",Toast.LENGTH_SHORT).show(); } txt1.setText(String.valueOf(inf[0])); txt2.setText(String.valueOf(inf[1])); txt3.setText(String.valueOf(inf[2])); txt4.setText(String.valueOf(inf[3])); txt5.setText(String.valueOf(inf[4])); handler.postDelayed(this,20000); } }; } 下面的是我的service public class pdrService extends Service implements SensorEventListener{ float[] inf=new float[5]; float[] infmation={0,0,0}; dataExchange dataexchange; private myBind mybind=new myBind(); public static String serviceState=""; proceedThread thread; @Override public void onCreate() { super.onCreate(); if (infmation!=null){ inf[0]=1; inf[1]=1; inf[2]=1; } else{ inf[0]=2; inf[1]=2; inf[2]=2; } thread=new proceedThread(); thread.start(); } @Nullable @Override public IBinder onBind(Intent intent) { serviceState="onBind"; return mybind; } public class myBind extends Binder { public float[] getInf(){ return inf; } public pdrService getService(){ return pdrService.this; } public void setData(float[] data){ pdrService.this.infmation=data; } } private class proceedThread extends Thread{ public Handler myHandler; public void run(){ Looper.prepare(); myHandler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what==1){ inf[0]+=1; inf[1]+=1; inf[2]+=1; inf[3]+=1; inf[4]+=1; } } }; Looper.loop(); } } @Override public void onSensorChanged(SensorEvent event) { } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } public void dataListener(dataExchange listener){ this.dataexchange=listener; } }

安卓中AIDL里面onServiceConnected和bindService两个函数执行顺序的问题

``` private IAgent iAgent; protected ServiceConnection agentConn = new ServiceConnection() { @Override synchronized public void onServiceConnected(ComponentName componentName, IBinder iBinder) { iAgent = IAgent.Stub.asInterface(iBinder); Log.e("111","获得agent接口对象"+iAgent); } @Override public void onServiceDisconnected(ComponentName componentName) { iAgent = null; } }; Intent PersonIntent = new Intent(); PersonIntent.setAction("com.example.sky000.aidlagent.AgentService"); PersonIntent.setPackage("com.example.sky000.aidlagent"); if (bindService(PersonIntent,agentConn, Context.BIND_AUTO_CREATE)){ Log.e("111", "绑定Person服务成功"); Log.e("111", String.valueOf(iAgent)); } ``` 打印结果:第一行是绑定Person服务成功,第二上是null,第三行是"获得agent接口对象com.example.sky000.aidlserverdemo.IPerson$Stub$Proxy@568592 加了Thread.sleep(1000);之后也不能改变这两个的执行顺序, 我需要在绑定成功后得到IAgent对象

安卓,用messenger绑定service,服务的消息发不到客户端,求大神指导

以下是ativity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:orientation="vertical"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击这里开始绑定service"/> <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 以下是服务的java代码: package com.example.test_service_messenger; import android.app.Service; import android.os.Handler; import android.os.Message; import android.os.Messenger; import android.os.IBinder; import android.content.Intent; public class SelfService extends Service { class SelfHandler extends Handler { public void handleMessage(Message msg) { if(msg.what==101) { System.out.println("收到了客户端发来的消息"); Message msgReply=Message.obtain(msg); msgReply.what=102; try{ msg.replyTo.send(msgReply); System.out.println("已发送");} catch(Exception e){ e.printStackTrace(); } } } } Messenger messenger=new Messenger(new SelfHandler()); public IBinder onBind(Intent intent) { return messenger.getBinder(); } } 以下是客户端mainActivity.java的代码: package com.example.test_service_messenger; import android.os.Bundle; import android.widget.*; import android.app.Activity; import android.view.Menu; import android.content.ServiceConnection; import android.os.Binder; import android.os.Handler; import android.os.Message; import android.os.Messenger; import android.view.View; import android.view.View.OnClickListener; import android.content.ComponentName; import android.os.IBinder; import android.content.Intent; import android.content.Context; public class MainActivity extends Activity { Intent intent=new Intent(); Button but=null; TextView textview=null; Messenger messenger=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intent.setClass(MainActivity.this,SelfService.class); but=(Button)super.findViewById(R.id.button); textview=(TextView)super.findViewById(R.id.textview); but.setOnClickListener(new OnClickListenerimpl()); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } ServiceConnection connection=new ServiceConnection() { public void onServiceConnected(ComponentName arg1,IBinder binder) { messenger=new Messenger(binder); } public void onServiceDisconnected(ComponentName arg1) { } }; Handler handler=new Handler() { public void handleMessage(Message msg) { if(msg.what==102) { System.out.println("接收到了服务传回来的消息"); MainActivity.this.textview.setText("接收到了服务传回的消息"); } } }; Messenger messenger1 =new Messenger(handler); class OnClickListenerimpl implements OnClickListener { public void onClick(View v) { bindService(intent,connection,Context.BIND_AUTO_CREATE); Message message=Message.obtain(); message.what=101; message.replyTo=messenger; try{messenger.send(message);} catch(Exception e) { e.printStackTrace(); } } } } 以下是logcat: ![图片说明](https://img-ask.csdn.net/upload/201511/26/1448527537_667794.png) 从logcat中可看出,服务已接收到了客户端发来的消息,并已经发回了消息,但是服务那边收不到服务发回来的消息?请问这个应该怎么解决? 另外我还想问问,多个线程或进程间互发消息,线程或进程发消息是怎样设定发往哪里的?又是怎样知道是发给自己的?是广播,然后让what相等的其他线程,进程知道是发给自己的,还是怎样?顺便希望大家能指导指导一下这个问题。

service本地服务通信(无法查看状态)

可以绑定服务与解绑,但是无法查看状态 ![图片说明](https://img-ask.csdn.net/upload/201911/09/1573263669_233388.png) 也没有服务断开连接的提示 MainActivity的代码 ``` public class MainActivity extends AppCompatActivity { MyService.MyBinder myBinder; //定义一个ServiceConnection对象 private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { Log.v("MainActivity", "服务连接成功"); myBinder = (MyService.MyBinder) iBinder; } @Override public void onServiceDisconnected(ComponentName componentName) { Log.v("MainActivity", "服务断开连接"); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClick(View view) { switch (view.getId()) { case R.id.b1: //绑定服务service Intent intent = new Intent(this, MyService.class); bindService(intent, connection, BIND_AUTO_CREATE); break; case R.id.b2: //解除绑定服务service unbindService(connection); break; case R.id.b3: Toast.makeText(this, myBinder.getCount(), Toast.LENGTH_SHORT).show(); break; default: break; } } } ``` 以下是报错信息 ``` E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.sixteenapplication, PID: 2005 java.lang.IllegalStateException: Could not execute method for android:onClick at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402) at android.view.View.performClick(View.java:5198) at android.view.View$PerformClick.run(View.java:21147) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) at android.view.View.performClick(View.java:5198)  at android.view.View$PerformClick.run(View.java:21147)  at android.os.Handler.handleCallback(Handler.java:739)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5417)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x5 at android.content.res.Resources.getText(Resources.java:312) at android.widget.Toast.makeText(Toast.java:286) at com.example.sixteenapplication.MainActivity.onClick(MainActivity.java:42) at java.lang.reflect.Method.invoke(Native Method)  at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)  at android.view.View.performClick(View.java:5198)  at android.view.View$PerformClick.run(View.java:21147)  at android.os.Handler.handleCallback(Handler.java:739)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5417)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  I/Process: Sending signal. PID: 2005 SIG: 9 Application terminated. ```

安卓关于service服务的关闭

开发时候如果用的是startservice开启服务,然后在ondestory中stopservice,service中 有计数,但是重新运行时候计数并没有清零,而是接着运行,怎样让其清除数据重新开始

当实现调用的Activity或者fragment发生orientation改变时,服务器会停止吗?

当实现调用的Activity或者fragment发生orientation改变时,服务器会停止吗? 查了很多资料,都是`当调用 Context.stopService()或者stopSelf()时服务器会停止。` 就是说假设当Activity或者fragment发生orientation改变时,服务器不停止。 用startService()重写默认由bindService(Intent, ServiceConnection, int)管理的服务器,需要服务器一直运行,直到调用了stopService(Intent)方法,不会被其他的客户端影响。 是不是就是说服务器不遇到调用`stopService`就会一直运行?

startService没反应,也没有报错,Logcat没任何信息,请大哥大姐们帮看看,呆马如下:

public class MainActivity extends Activity implements OnClickListener { private Button start; private Button stop; private Button bind; private Button unbind; private MyService.DownloadBinder downloadBinder; private ServiceConnection connection = new ServiceConnection() { public void onServiceDisconnected(ComponentName name) { } public void onServiceConnected(ComponentName name, IBinder service) { downloadBinder = (MyService.DownloadBinder) service; downloadBinder.startDownload(); downloadBinder.getProgress(); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start = (Button) findViewById(R.id.start_service); stop = (Button) findViewById(R.id.stop_service); bind = (Button) findViewById(R.id.bind); unbind = (Button) findViewById(R.id.unbind); start.setOnClickListener(this); stop.setOnClickListener(this); bind.setOnClickListener(this); unbind.setOnClickListener(this); } public void onClick(View v) { switch(v.getId()) { case R.id.start_service: Intent startIntent = new Intent(this, MyService.class); startService(startIntent); break; case R.id.stop_service: Intent stopIntent = new Intent(this, MyService.class); stopService(stopIntent); break; case R.id.bind: Intent bindIntent = new Intent(this, MyService.class); bindService(bindIntent, connection, BIND_AUTO_CREATE); break; case R.id.unbind: unbindService(connection); break; default: break; } } } public class MyService extends Service { private DownloadBinder db = new DownloadBinder(); class DownloadBinder extends Binder { public void startDownload() { Log.v("MyService", "download"); } public int getProgress() { return 0; } } @Override public IBinder onBind(Intent intent) { return db; } public void onCreate() { super.onCreate(); Log.d("MyService", "start"); } public int onStartCommand(Intent intent , int flags, int startId) { Log.d("MyService", "startedCommand"); return super.onStartCommand(intent, flags, startId); } public void onDestroy() { super.onDestroy(); Log.d("MyService", "destroyed"); } }

Application 执行耗时任务初始化数据,在activty 获取时出现空指针异常怎么办?

如题,在Application 绑定了一个service 但是返回binder 并赋值这个操作特别慢 导致在 Activity 中通过Application 的方法获取到的 binder 一直是空值。请问我该如何处理,才能获取到 ? ## application 中代码: public class MyApplication extends Application { private MusicPlayService.PlayServiceBinder msbinder; private ServiceConnection mConnection=new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.d("绑定并开启服务","绑定成功"); //获取到bindler 了 可以并转成service 可以调用里面的方法了 msbinder= (MusicPlayService.PlayServiceBinder) service; msbinder=getbinder(); Log.d("返回bindler",""+msbinder.toString()); } @Override public void onServiceDisconnected(ComponentName name) { } }; @Override public void onCreate() { super.onCreate(); Intent intent=new Intent(this,MusicPlayService.class); startService(intent); bindService(intent, mConnection, Context.BIND_AUTO_CREATE); } //获取绑定的Binder public MusicPlayService.PlayServiceBinder getbinder(){ if(msbinder!=null){ Log.d("msbinder不为空","不为空"); }else { Log.d("msbinder为空","空"); } return msbinder; } } ## activity中代码: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); application= (MyApplication) getApplication(); mSbinder=application.getbinder(); }

这段代码Service运行会报空指针异常

代码如下 ``` //查询 @ApiOperation(value="船东发布展示信息列表", notes="船东发布展示信息列表的接口") @RequestMapping(value = "/findContent" , method = RequestMethod.POST) @ApiImplicitParams({ @ApiImplicitParam(name="startDate", value="开始时间", required=false), @ApiImplicitParam(name="endDate", value="结束时间", required=false), @ApiImplicitParam(name="startLoading", value="最小吨数", required=false), @ApiImplicitParam(name="endLoading", value="最大吨数", required=false), @ApiImplicitParam(name="typeShip", value="船舶类型", required=false), @ApiImplicitParam(name="emptyPort", value="港口", required=false) }) public SysResult find(Date startDate,Date endDate , String startLoading , String endLoading, Long typeShip , Long emptyPort){ try{ EntityWrapper<ShipRelease> wrapper = new EntityWrapper<>(); //只能状态为发布中的数据展示出来 wrapper.where( "state = {0} ", 4 ); //筛选时间日期 if(startDate != null && endDate != null) { wrapper.where( "empty_date >= {0} ", startDate ); wrapper.and( " empty_date <= {0}", endDate ); } //筛选两数值之剑 if(startLoading != null && endLoading != null) { wrapper.where( "tonnage_loading >= {0} ", startLoading ); wrapper.and( " tonnage_loading <= {0}", endLoading ); } //筛选类型1 if(typeShip != null) wrapper.where("type_ship={0}", typeShip); //筛选类型2 if(emptyPort != null) wrapper.where("empty_port={0}", emptyPort); wrapper.setSqlSelect("id, title,empty_date,aircraft_sky,tonnage_loading,type_ship"); List<ShipRelease> shipReleaseList = webShipownerReleaseShowMapper.selectList( wrapper ); return SysResult.ok(shipReleaseList); }catch (Exception e){ e.printStackTrace(); return SysResult.build(201,"查询失败"); } } ``` 这段代码我写在Controller上是可以运行的,但是我想写到Service上,现在问题是我写到Service上的话会报空指针异常,请问要如何解决这个问题呢 [同一问题](https://ask.csdn.net/questions/753635 "同一问题") 使用框架是spring-boot+mybatisPlus

关于使用百度地图定位功能抛出的异常解决

使用环信的第三方框架下面的一个聊天功能里面有一个发送当前位置定位服务 发现抛出异常 12-06 11:25:02.704 8841-8841/com.atguigu.im E/ActivityThread: Activity com.hyphenate.easeui.ui.EaseBaiduMapActivity has leaked ServiceConnection com.baidu.location.b@421acb18 that was originally bound here android.app.ServiceConnectionLeaked: Activity com.hyphenate.easeui.ui.EaseBaiduMapActivity has leaked ServiceConnection com.baidu.location.b@421acb18 that was originally bound here at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:992) at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:886) at android.app.ContextImpl.bindServiceAsUser(ContextImpl.java:1507) at android.app.ContextImpl.bindService(ContextImpl.java:1495) at android.content.ContextWrapper.bindService(ContextWrapper.java:496) at com.baidu.location.LocationClient.onStart(Unknown Source) at com.baidu.location.LocationClient.access$2100(Unknown Source) at com.baidu.location.LocationClient$a.handleMessage(Unknown Source) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5265) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:760) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576) at dalvik.system.NativeStart.main(Native Method) 12-06 11:26:54.274 8841-8841/com.atguigu.im W/IInputConnectionWrapper: showStatusIcon on inactive InputConnection 并且我已经在manifest文件中添加了定位的service服务 <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service> 请问大神们这个问题如何解决

关于unbindService的问题

就是我调用完unbindService(conn)方法后,这个conn里的内存会不会被释放? MyConn conn = new MyConn(); bindService(intent, conn, BIND_AUTO_CREATE); unbindService(conn); 这个conn是null吗

关于服务执行的顺序问题

这是服务里的代码 public class Myservice extends Service { private DownloadBinder mBinder= new DownloadBinder(); @Override public IBinder onBind(Intent intent){ return mBinder; } class DownloadBinder extends Binder{ public void startDownload(){ Log.d ( "MyService","startDownload excuted"); } public int getProgress(){ Log.d("MyService","getprogress"); return 0; } } @Override public void onCreate(){ super.onCreate(); Log.d ( "MyService","OnCreate excuted"); } @Override public int onStartCommand(Intent intent,int flags,int startId){ Log.d ( "MyService","start excuted"); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy(){ super.onDestroy(); Log.d ( "MyService","stop excuted"); } } 这是主活动的代码 public class MainActivity extends ActionBarActivity implements OnClickListener { private Button startService; private Button stopService; private Button bindService; private Button unbindService; private Myservice.DownloadBinder downloadBinder; private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { // TODO Auto-generated method stub } @Override public void onServiceConnected(ComponentName name, IBinder service) { downloadBinder = (Myservice.DownloadBinder) service; downloadBinder.startDownload(); downloadBinder.getProgress(); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startService = (Button) findViewById(R.id.start_service); stopService = (Button) findViewById(R.id.stop_service); bindService = (Button) findViewById(R.id.bind_service); unbindService = (Button) findViewById(R.id.unbind_service); startService.setOnClickListener(this); stopService.setOnClickListener(this); bindService.setOnClickListener(this); unbindService.setOnClickListener(this); } @Override public void onClick(View v){ switch(v.getId()){ case R.id.start_service: Intent startIntent = new Intent(this,Myservice.class); startService(startIntent);break; case R.id.stop_service: Intent stopIntent = new Intent(this,Myservice.class); stopService(stopIntent);break; case R.id.bind_service: Intent bindIntent = new Intent (this,Myservice.class); bindService(bindIntent,connection,BIND_AUTO_CREATE); break; case R.id.unbind_service: unbindService(connection); break; default: break; } } } 为什么DownloadBinder放在onStartCommand()后面然后点击bing_service会执行oncreate() 方法,放在oncreate则不会执行

信鸽推送时,关于状态栏显示消息的两个问题

信鸽推送,会在通知栏上显示消息。 现在的问题是: 1、点击通知栏的消息,程序会崩溃。报错log如下。 07-15 18:32:06.779: E/ZTEGesture(1087): ViewRootGestureDispatcher bindService Fail 07-15 18:32:06.789: E/ActivityThread(1087): Activity com.activity.Login has leaked ServiceConnection android.view.ViewRootGestureDispatcher$1@41986228 that was originally bound here 07-15 18:32:06.789: E/ActivityThread(1087): android.app.ServiceConnectionLeaked: Activity com.activity.Login has leaked ServiceConnection android.view.ViewRootGestureDispatcher$1@41986228 that was originally bound here 07-15 18:32:06.789: E/ActivityThread(1087): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:965) 07-15 18:32:06.789: E/ActivityThread(1087): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:859) 07-15 18:32:06.789: E/ActivityThread(1087): at android.app.ContextImpl.bindService(ContextImpl.java:1260) 07-15 18:32:06.789: E/ActivityThread(1087): at android.app.ContextImpl.bindService(ContextImpl.java:1252) 07-15 18:32:06.789: E/ActivityThread(1087): at android.content.ContextWrapper.bindService(ContextWrapper.java:394) 07-15 18:32:06.789: E/ActivityThread(1087): at android.view.ViewRootGestureDispatcher.<init>(ViewRootGestureDispatcher.java:32) 07-15 18:32:06.789: E/ActivityThread(1087): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:415) 07-15 18:32:06.789: E/ActivityThread(1087): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292) 07-15 18:32:06.789: E/ActivityThread(1087): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224) 07-15 18:32:06.789: E/ActivityThread(1087): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149) 07-15 18:32:06.789: E/ActivityThread(1087): at android.view.Window$LocalWindowManager.addView(Window.java:547) 07-15 18:32:06.789: E/ActivityThread(1087): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2646) 07-15 18:32:06.789: E/ActivityThread(1087): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2097) 07-15 18:32:06.789: E/ActivityThread(1087): at android.app.ActivityThread.access$600(ActivityThread.java:133) 07-15 18:32:06.789: E/ActivityThread(1087): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203) 07-15 18:32:06.789: E/ActivityThread(1087): at android.os.Handler.dispatchMessage(Handler.java:99) 07-15 18:32:06.789: E/ActivityThread(1087): at android.os.Looper.loop(Looper.java:137) 07-15 18:32:06.789: E/ActivityThread(1087): at android.app.ActivityThread.main(ActivityThread.java:4794) 07-15 18:32:06.789: E/ActivityThread(1087): at java.lang.reflect.Method.invokeNative(Native Method) 07-15 18:32:06.789: E/ActivityThread(1087): at java.lang.reflect.Method.invoke(Method.java:511) 07-15 18:32:06.789: E/ActivityThread(1087): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 07-15 18:32:06.789: E/ActivityThread(1087): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 07-15 18:32:06.789: E/ActivityThread(1087): at dalvik.system.NativeStart.main(Native Method) 2、我想隐藏状态栏的推送信息,不让它显示,有没有什么方法。 我在onNotifactionShowedResult回调方法的最后一行,使用了 XGPushManager.clearLocalNotifications(context); XGPushManager.deleteTag(context, CommData.TAG_TYPE); NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancelAll(); 这几句话,完全没有效果啊

安卓开发的问题,求大神指教

Intentservice1.java文件 public class Intentservice1 extends IntentService { private String count; private mybinder bind=new mybinder(); public class mybinder extends Binder { public String getcount() { return count; } } public Intentservice1() { super("Intentservice1"); } @Override public IBinder onBind(Intent intenr) { return bind; } @Override protected void onHandleIntent(Intent arg0) { // TODO Auto-generated method stub } } MainActivity.java文件 public class MainActivity extends Activity { private TextView text; private Intentservice1.mybinder binder1; private ServiceConnection conn=new ServiceConnection() { @Override public void onServiceConnected(ComponentName name,IBinder service) { binder1=(Intentservice1.mybinder)service; if(binder1==null) System.out.println("空了"); } @Override public void onServiceDisconnected(ComponentName name) { } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text=(TextView)findViewById(R.id.textview1); try { text.setText(binder1.getcount()); //出错的是这里,NullPointerException } catch(Exception e) { System.out.println(123); } Intent intent=new Intent(MainActivity.this,Intentservice1.class); bindService(intent,conn,Service.BIND_AUTO_CREATE); } 在运行时出现了错误,text里没有显示任何东西,logcat里输出了123,然后还输出了“skipped 82 Frames!The application may be doing too much work on its mainThread 请问大神我这里应该如何改正?如何解决?

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

Only老K说-爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

2020_五一数学建模_C题_整理后的数据.zip

该数据是我的程序读取的数据,仅供参考,问题的解决方案:https://blog.csdn.net/qq_41228463/article/details/105993051

R语言入门基础

本课程旨在帮助学习者快速入门R语言: 课程系统详细地介绍了使用R语言进行数据处理的基本思路和方法。 课程能够帮助初学者快速入门数据处理。 课程通过大量的案例详细地介绍了如何使用R语言进行数据分析和处理 课程操作实际案例教学,通过编写代码演示R语言的基本使用方法和技巧

人才招聘系统PHP+MySQL源码

PHP 5.0及以上 + MySQL 5.0及以上 开发的人才招聘系统完全可运行源码,按照操作说明简单配置即可运行。学习PHPWEB应用的完整系统程序源码。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

python可视化分析(matplotlib、seaborn、ggplot2)

python可视化分析总结(matplotlib、seaborn、ggplot)一、matplotlib库1、基本绘图命令3、图形参数设置4、特殊统计图的绘制4.1 数学函数图4.2 气泡图4.1 三维曲面图二、seaborn库1、常用统计图1.1 箱线图1.2 小提琴图1.3 点图1.4 条图与计数图1.5 分组图1.6 概率分布图2、联合图3、配对图三、ggplot库1、图层画法+常用图形2、快速绘图 一、matplotlib库 1、基本绘图命令 import matplotlib.pyplot as

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

课程主要面向嵌入式Linux初学者、工程师、学生 主要从一下几方面进行讲解: 1.linux学习路线、基本命令、高级命令 2.shell、vi及vim入门讲解 3.软件安装下载、NFS、Samba、FTP等服务器配置及使用

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

【大总结2】大学两年,写了这篇几十万字的干货总结

本文十天后设置为粉丝可见,喜欢的提前关注 不要白嫖请点赞 不要白嫖请点赞 不要白嫖请点赞 文中提到的书我都有电子版,可以评论邮箱发给你。 文中提到的书我都有电子版,可以评论邮箱发给你。 文中提到的书我都有电子版,可以评论邮箱发给你。 本篇文章应该算是Java后端开发技术栈的,但是大部分是基础知识,所以我觉得对任何方向都是有用的。 1、数据结构 数据结构是计算机存储、...

lena全身原图(非256*256版本,而是全身原图)

lena全身原图(非256*256版本,而是全身原图) lena原图很有意思,我们通常所用的256*256图片是在lena原图上截取了头部部分的256*256正方形得到的. 原图是花花公子杂志上的一个

【项目实战】 图书信息管理系统(Maven,mybatis)(第一个自己独立完成的项目)

《程序设计综合训练实践报告》 此项目为图书信息管理系统,是一个采用了mysql+mybatis框架+java编写的maven项目

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

Python入门视频精讲

Python入门视频培训课程以通俗易懂的方式讲解Python核心技术,Python基础,Python入门。适合初学者的教程,让你少走弯路! 课程内容包括:1.Python简介和安装 、2.第一个Python程序、PyCharm的使用 、3.Python基础、4.函数、5.高级特性、6.面向对象、7.模块、8.异常处理和IO操作、9.访问数据库MySQL。教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!

20行代码教你用python给证件照换底色

20行代码教你用python给证件照换底色

2018年全国大学生计算机技能应用大赛决赛 大题

2018年全国大学生计算机技能应用大赛决赛大题,程序填空和程序设计(侵删)

MySQL数据库从入门到实战应用

限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利2:购课后添加学习助手(微信号:csdn590),按消息提示即可领取编程大礼包! 为什么说每一个程序员都应该学习MySQL? 根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。 使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能! 【课程设计】 在本课程中,刘运强老师会结合自己十多年来对MySQL的心得体会,通过课程给你分享一条高效的MySQL入门捷径,让学员少走弯路,彻底搞懂MySQL。 本课程包含3大模块:&nbsp; 一、基础篇: 主要以最新的MySQL8.0安装为例帮助学员解决安装与配置MySQL的问题,并对MySQL8.0的新特性做一定介绍,为后续的课程展开做好环境部署。 二、SQL语言篇: 本篇主要讲解SQL语言的四大部分数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,学会熟练对库表进行增删改查等必备技能。 三、MySQL进阶篇: 本篇可以帮助学员更加高效的管理线上的MySQL数据库;具备MySQL的日常运维能力,语句调优、备份恢复等思路。 &nbsp;

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

专为程序员设计的数学课

<p> 限时福利限时福利,<span>15000+程序员的选择!</span> </p> <p> 购课后添加学习助手(微信号:csdn590),按提示消息领取编程大礼包!并获取讲师答疑服务! </p> <p> <br> </p> <p> 套餐中一共包含5门程序员必学的数学课程(共47讲) </p> <p> 课程1:《零基础入门微积分》 </p> <p> 课程2:《数理统计与概率论》 </p> <p> 课程3:《代码学习线性代数》 </p> <p> 课程4:《数据处理的最优化》 </p> <p> 课程5:《马尔可夫随机过程》 </p> <p> <br> </p> <p> 哪些人适合学习这门课程? </p> <p> 1)大学生,平时只学习了数学理论,并未接触如何应用数学解决编程问题; </p> <p> 2)对算法、数据结构掌握程度薄弱的人,数学可以让你更好的理解算法、数据结构原理及应用; </p> <p> 3)看不懂大牛代码设计思想的人,因为所有的程序设计底层逻辑都是数学; </p> <p> 4)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; </p> <p> 5)想修炼更好的编程内功,在遇到问题时可以灵活的应用数学思维解决问题。 </p> <p> <br> </p> <p> 在这门「专为程序员设计的数学课」系列课中,我们保证你能收获到这些:<br> <br> <span> </span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">①价值300元编程课程大礼包</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">②应用数学优化代码的实操方法</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">③数学理论在编程实战中的应用</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">④程序员必学的5大数学知识</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">⑤人工智能领域必修数学课</span> </p> <p> <br> 备注:此课程只讲程序员所需要的数学,即使你数学基础薄弱,也能听懂,只需要初中的数学知识就足矣。<br> <br> 如何听课? </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习; </p> <p> 2、登录CSDN学院官网。 </p> <p> <br> </p> <p> 购课后如何领取免费赠送的编程大礼包和加入答疑群? </p> <p> 购课后,添加助教微信:<span> csdn590</span>,按提示领取编程大礼包,或观看付费视频的第一节内容扫码进群答疑交流! </p> <p> <img src="https://img-bss.csdn.net/201912251155398753.jpg" alt=""> </p>

Eclipse archetype-catalog.xml

Eclipse Maven 创建Web 项目报错 Could not resolve archetype org.apache.maven.archetypes:maven-archetype-web

使用TensorFlow+keras快速构建图像分类模型

课程分为两条主线: 1&nbsp;从Tensorflow的基础知识开始,全面介绍Tensorflow和Keras相关内容。通过大量实战,掌握Tensorflow和Keras经常用到的各种建模方式,参数优化方法,自定义参数和模型的手段,以及对训练结果评估与分析的技巧。 2&nbsp;从机器学习基础算法开始,然后进入到图像分类领域,使用MNIST手写数据集和CIFAR10图像数据集,从简单神经网络到深度神经网络,再到卷积神经网络,最终完成复杂模型:残差网络的搭建。完成这条主线,学员将可以自如地使用机器学习的手段来达到图像分类的目的。

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

最近面试Java后端开发的感受:如果就以平时项目经验来面试,通过估计很难,不信你来看看

在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间。我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架,我相信其它公司招初级开发时,应该也照着这个标准来面的。 我也知道,不少候选人能力其实不差,但面试时没准备或不会说,这样的人可能在进团队干活后确实能达到期望,但可能就无法通过面试,但面试官总是只根据面试情况来判断。 但现实情况是,大多数人可能面试前没准备,或准备方法不得当。要知道,我们平时干活更偏重于业务,不可能大量接触到算法,数据结构,底层代码这类面试必问

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

相关热词 c#设计思想 c#正则表达式 转换 c#form复制 c#写web c# 柱形图 c# wcf 服务库 c#应用程序管理器 c#数组如何赋值给数组 c#序列化应用目的博客园 c# 设置当前标注样式
立即提问