通过aidl 实现打电话功能 报错 5C

错误信息

 04-02 11:42:52.816: E/AndroidRuntime(25387): FATAL EXCEPTION: main
04-02 11:42:52.816: E/AndroidRuntime(25387): Process: com.example.call, PID: 25387
04-02 11:42:52.816: E/AndroidRuntime(25387): java.lang.NoSuchMethodError: No interface method call(Ljava/lang/String;)V in class Lcom/android/internal/telephony/ITelephony; or its super classes (declaration of 'com.android.internal.telephony.ITelephony' appears in /system/framework/framework.jar:classes2.dex)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at com.example.call.MainActivity.onCreate(MainActivity.java:37)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.Activity.performCreate(Activity.java:6100)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2481)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2614)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.ActivityThread.access$800(ActivityThread.java:178)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.os.Handler.dispatchMessage(Handler.java:111)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.os.Looper.loop(Looper.java:194)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.ActivityThread.main(ActivityThread.java:5643)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at java.lang.reflect.Method.invoke(Native Method)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at java.lang.reflect.Method.invoke(Method.java:372)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

3个回答

再此加上文件目录

图片说明

MainActivity代码

 package com.example.call;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import com.android.internal.telephony.ITelephony;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

    private Method method;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //通过反射机制得到类

        try {
            //得到类
            Class clazz = Class.forName("android.os.ServiceManager");
            //得到方法
            method = clazz.getMethod("getService", String.class);
            //调用方法(静态方法不用传对象)
            IBinder iBinder = (IBinder) method.invoke(null, Context.TELEPHONY_SERVICE);
            //得到远程服务接口
            ITelephony telePhone = ITelephony.Stub.asInterface(iBinder);
            //打电话功能
            telePhone.call("15686207622");
        } catch (ClassNotFoundException e) {
            //没有找到这个类
            Log.i("123", "没有找到这个类");
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // 没有找到这个方法
            Log.i("123", "没有找到这个方法");
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // 方法调用失败
            Log.i("123", "方法调用失败");
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // 方法调用失败
            Log.i("123", "方法调用失败");
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // 方法调用失败
            Log.i("123", "方法调用失败");
            e.printStackTrace();
        } catch (RemoteException e) {
            // 拨打电话失败
            Log.i("123", "拨打电话失败");
            e.printStackTrace();
        }

    }


}

ITelephony.aidl

 /*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.internal.telephony;

import android.os.Bundle;
import java.util.List;
import android.telephony.NeighboringCellInfo;

/**
 * Interface used to interact with the phone.  Mostly this is used by the
 * TelephonyManager class.  A few places are still using this directly.
 * Please clean them up if possible and use TelephonyManager insteadl.
 *
 * {@hide}
 */
interface ITelephony {

    /**
     * Dial a number. This doesn't place the call. It displays
     * the Dialer screen.
     * @param number the number to be dialed. If null, this
     * would display the Dialer screen with no number pre-filled.
     */
    void dial(String number);

    /**
     * Place a call to the specified number.
     * @param number the number to be called.
     */
    void call(String number);

    /**
     * If there is currently a call in progress, show the call screen.
     * The DTMF dialpad may or may not be visible initially, depending on
     * whether it was up when the user last exited the InCallScreen.
     *
     * @return true if the call screen was shown.
     */
    boolean showCallScreen();

    /**
     * Variation of showCallScreen() that also specifies whether the
     * DTMF dialpad should be initially visible when the InCallScreen
     * comes up.
     *
     * @param showDialpad if true, make the dialpad visible initially,
     *                    otherwise hide the dialpad initially.
     * @return true if the call screen was shown.
     *
     * @see showCallScreen
     */
    boolean showCallScreenWithDialpad(boolean showDialpad);

    /**
     * End call or go to the Home screen
     *
     * @return whether it hung up
     */
    boolean endCall();

    /**
     * Answer the currently-ringing call.
     *
     * If there's already a current active call, that call will be
     * automatically put on hold.  If both lines are currently in use, the
     * current active call will be ended.
     *
     * TODO: provide a flag to let the caller specify what policy to use
     * if both lines are in use.  (The current behavior is hardwired to
     * "answer incoming, end ongoing", which is how the CALL button
     * is specced to behave.)
     *
     * TODO: this should be a oneway call (especially since it's called
     * directly from the key queue thread).
     */
    void answerRingingCall();

    /**
     * Silence the ringer if an incoming call is currently ringing.
     * (If vibrating, stop the vibrator also.)
     *
     * It's safe to call this if the ringer has already been silenced, or
     * even if there's no incoming call.  (If so, this method will do nothing.)
     *
     * TODO: this should be a oneway call too (see above).
     *       (Actually *all* the methods here that return void can
     *       probably be oneway.)
     */
    void silenceRinger();

    /**
     * Check if we are in either an active or holding call
     * @return true if the phone state is OFFHOOK.
     */
    boolean isOffhook();

    /**
     * Check if an incoming phone call is ringing or call waiting.
     * @return true if the phone state is RINGING.
     */
    boolean isRinging();

    /**
     * Check if the phone is idle.
     * @return true if the phone state is IDLE.
     */
    boolean isIdle();

    /**
     * Check to see if the radio is on or not.
     * @return returns true if the radio is on.
     */
    boolean isRadioOn();

    /**
     * Check if the SIM pin lock is enabled.
     * @return true if the SIM pin lock is enabled.
     */
    boolean isSimPinEnabled();

    /**
     * Cancels the missed calls notification.
     */
    void cancelMissedCallsNotification();

    /**
     * Supply a pin to unlock the SIM.  Blocks until a result is determined.
     * @param pin The pin to check.
     * @return whether the operation was a success.
     */
    boolean supplyPin(String pin);

    /**
     * Handles PIN MMI commands (PIN/PIN2/PUK/PUK2), which are initiated
     * without SEND (so <code>dial</code> is not appropriate).
     *
     * @param dialString the MMI command to be executed.
     * @return true if MMI command is executed.
     */
    boolean handlePinMmi(String dialString);

    /**
     * Toggles the radio on or off.
     */
    void toggleRadioOnOff();

    /**
     * Set the radio to on or off
     */
    boolean setRadio(boolean turnOn);

    /**
     * Request to update location information in service state
     */
    void updateServiceLocation();

    /**
     * Enable location update notifications.
     */
    void enableLocationUpdates();

    /**
     * Disable location update notifications.
     */
    void disableLocationUpdates();

    /**
     * Enable a specific APN type.
     */
    int enableApnType(String type);

    /**
     * Disable a specific APN type.
     */
    int disableApnType(String type);

    /**
     * Allow mobile data connections.
     */
    boolean enableDataConnectivity();

    /**
     * Disallow mobile data connections.
     */
    boolean disableDataConnectivity();

    /**
     * Report whether data connectivity is possible.
     */
    boolean isDataConnectivityPossible();

    Bundle getCellLocation();

    /**
     * Returns the neighboring cell information of the device.
     */
    List<NeighboringCellInfo> getNeighboringCellInfo();

     int getCallState();
     int getDataActivity();
     int getDataState();

    /**
     * Returns the current active phone type as integer.
     * Returns TelephonyManager.PHONE_TYPE_CDMA if RILConstants.CDMA_PHONE
     * and TelephonyManager.PHONE_TYPE_GSM if RILConstants.GSM_PHONE
     */
    int getActivePhoneType();

    /**
     * Returns the CDMA ERI icon index to display
     */
    int getCdmaEriIconIndex();

    /**
     * Returns the CDMA ERI icon mode,
     * 0 - ON
     * 1 - FLASHING
     */
    int getCdmaEriIconMode();

    /**
     * Returns the CDMA ERI text,
     */
    String getCdmaEriText();

    /**
     * Returns true if CDMA provisioning needs to run.
     */
    boolean getCdmaNeedsProvisioning();

    /**
      * Returns the unread count of voicemails
      */
    int getVoiceMessageCount();

    /**
      * Returns the network type
      */
    int getNetworkType();

    /**
     * Return true if an ICC card is present
     */
    boolean hasIccCard();
}

接口订义的不正确。 检查配置文件。

qq_22994781
傻狗123 什么配置文件 是这个吗?ITelephony.aidl 代码我发出来
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android开发 AIDL接口文件里使用内部类报错unknown type
在Android开发时涉及到一个进程间通讯,要传递一个内部类对象到远程服务端。已经把内部类对象用Parcelable序列化了,但是编译总是报错unknown type 外部类.内部类。 1、AIDL能否传递内部类对象到远程端? 2、此问题该怎样解决?
为对象类编写的AIDL文件报错。。。
``` parcelable Person; ``` 这是为一个Person对象类定义接口的AIDL文件,可是总是显示parcelable是错的,错误信息显示是拼写错误,求解。。
android studio编译aidl文件报错
报错情况如下,求大神帮我解决一下,小弟新号没有悬赏,请多多包涵![图片](https://img-ask.csdn.net/upload/201707/18/1500389380_371497.png)
android通过aidl和直接点击icon启动app,application有什么不同
现在由A B C三个APP,在B的application的oncreat方法中通过aidl调用了C的初始化service 现在有两个现象: 一、直接启动B,B的application可以通过aidl成功调用C的初始化service 二、启动A,A通过aidl调用B的service,这个时候B的application中调用C初始化service失败了
aidl进程通信报这个错怎么回事呀各位大神
![图片说明](https://img-ask.csdn.net/upload/201603/09/1457530889_887093.png) 获取包名方法也行不通
Android如何主工程和library工程使用同一个aidl文件
现在有一个aidl文件必须放在主工程中的src下面,但是在library工程下的src也需要用到这个aidl文件的内容具体该怎么实现这个功能?
aidl使用问题,有点乱!!!
很多博文说复制aidl文件到客户端时,包名不能改变,但是我写了Demo,证明改了包名也是没有问题的,只要自动生成的.java里DESCRIPTOR字段和服务器端自动生成的一样就没问题,不一样就会报错。但是我们公司有两个项目,包名和DESCRIPTOR字段都和服务器不一样,但是也没问题,晕了,,,不知道怎么回事,请大神赐教!
怎么使用AIDL进行电话拦截?
拦截方式都有哪几种啊?现在对这个问题有点不清楚,请大家解释一下,非常感谢!
Android studio写AIDL时报错:Execution failed for task,
我用的是Android Studio 1.4 ![图片说明](https://img-ask.csdn.net/upload/201604/20/1461137087_410343.png) ![图片说明](https://img-ask.csdn.net/upload/201604/20/1461137380_344758.png) 第二张图compile sdk version那里只能选api level 23. 在aidl包下我写了2个aidl文件,另外MainActivity那个包中的MyParcelClass,这3个和aidl有关。下面贴下代码: MyParcelClass.java ``` public class MyParcelableClass implements Parcelable { private int id; private String str; public MyParcelableClass(int id,String str) { this.id=id; this.str=str; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out,int flags) { out.writeInt(id); out.writeString(str); } private MyParcelableClass(Parcel in) { id=in.readInt(); str=in.readString(); } public static final Parcelable.Creator<MyParcelableClass> CREATOR=new Parcelable.Creator<MyParcelableClass>() { @Override public MyParcelableClass[] newArray(int size) { return new MyParcelableClass[size]; } public MyParcelableClass createFromParcel(Parcel in) { return new MyParcelableClass(in); } }; } ``` MyParcelClass.aidl: ``` package com.example.dell_pc.aldl; parcelable MyParcelableClass; ``` IMyParcelManager.aidl: ``` package com.example.dell_pc.aldl.aidl; import com.example.dell_pc.aldl.MyParcelableClass; // Declare any non-default types here with import statements interface IMyParcelManager { /** * Demonstrates some basic types that you can use as parameters * and return values in AIDL. */ void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString); void add(in MyParcelableClass mMyParcelableClass); MyParcelableClass get(); } ``` 与aidl有关的3个文件的代码如上,报这个错误好像是Android Studio不会自动生成IMyParcelmanager.java?但是我build,然后make project后就是这个样子,求解决方法,网上搜索的方法都不行
android AIDL使用的问题
AIDL的使用步骤是: 创建两个工程,一个为client,一个为server server端在src目录下专门创建一个包用于放置创建的myInterface.aidl接口文件,定义用于通信的抽象方法,然后编译,在gen目录下生成myInterface.java文件,该文件会自动生成内部接口myInterface.Stub;再创建一个Service类,在类中创建myInterface.Stub对象,实现在接口中定义的用于通信的抽象方法; 再重写onBind方法,把Stub对象返回出去(Stub类是IBinder的子类,可以用于client端和server端的通信) 然后在AndroidManifest文件里配置Service类 然后把在server端定义的aidl接口文件复制到client端项目中(连包带文件一起复制,保持client端和server端aidl接口所在包路径一样),在client端的Activity中定义ServiceConnection类对象和server端接口myInterface对象,重写ServiceConnection对象的onServiceConnect,在该方法中获取来自server端的myInterface对象, 现在就可以调用myInterface中的方法(也就是client端调用server端的方法,也就完成了进程间通信) 上面的ServiceConnection要能获取到IBinder对象,还需要client用Intent完成与server端的Service类的绑定 我就卡在这一步了 不管是对server端Service指定Action来让client端启动,还是指定其它东西,就是无法再client端项目里启动server端项目里的Service 有谁知道怎么解决吗? 简而言之,就是如何在当前工程中调用远程Service
这是什么意思 看不懂 ,A s 里面AIDL文件弄错了 包这个错误
Error:Execution failed for task ':app:compileDebugAidl'. > java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing process C:\Users\dell\AppData\Local\Android\Sdk\build-tools\26.0.1\aidl.exe with arguments {-pC:\Users\dell\AppData\Local\Android\Sdk\platforms\android-25\framework.aidl -oE:\androidStudio\ziwolianxi\kengdie\Pay1\app\build\generated\source\aidl\debug -IE:\androidStudio\ziwolianxi\kengdie\Pay1\app\src\main\aidl -IE:\androidStudio\ziwolianxi\kengdie\Pay1\app\src\debug\aidl -IC:\Users\dell\.android\build-cache\91a1a3afdbd4a364dfb47f78ec4003c37ec9f739\output\aidl -IC:\Users\dell\.android\build-cache\b8b1d8c6c02cce5fcbf9bae854d52452508cbc7c\output\aidl -IC:\Users\dell\.android\build-cache\8285ea810903feb082f1c4694f5a33720cabdcb8\output\aidl -IC:\Users\dell\.android\build-cache\d836d27870e1dc97cde740c3c5d05d70c1f17590\output\aidl -IC:\Users\dell\.android\build-cache\cc4b003899bada7b338f241c8434b923b229811d\output\aidl -IC:\Users\dell\.android\build-cache\42471075ec66394ede54964d5e064c5fce31fbab\output\aidl -IC:\Users\dell\.android\build-cache\44b23df0d72730a3fb60726d2b49b1ab3613e379\output\aidl -IC:\Users\dell\.android\build-cache\477d1820f9221c4a0345999e3308189f7a4a0aba\output\aidl -IC:\Users\dell\.android\build-cache\495208a08bb05f885e5453bba6e19d5dadc6188b\output\aidl -IC:\Users\dell\.android\build-cache\d15f5902e518c4ab551c553bebcee35f91f789f0\output\aidl -dC:\Users\dell\AppData\Local\Temp\aidl6540516008299528629.d E:\androidStudio\ziwolianxi\kengdie\Pay1\app\src\main\aidl\com\example\dell\pay1\AIDL.aidl}
android aidl-cpp方式接口调用出现问题
android aidl-cpp方式: java client 端调用接口: return mPoiGateWayService.hasHomeLocation(); C++ service端实现接口:  Status hasHomeLocation(bool* _aidl_return) override { ALOGI("Entering hasHomeLocation"); *_aidl_return = true; return Status::ok(); } aidl 声明的接口:  boolean hasHomeLocation(); 问题:为啥java端接口调用的时候报错:  I apkPoiTest: call cns hasHomeLocation fail: java.lang.IllegalArgumentException
android中AIDL传输需要联网吗?
AIDL是IPC的一种,AIDL在android内部进程通信,是服务器端与客户端的相互通信,那这种通信方式需要联网吗?难道不联网就能 两台机器之间进行通信了吗?这个AIDL之间的通信有地域限制吗?请大牛帮帮忙,解答一下谜团,谢谢啦!
aidl 向远程服务注册listener问题
在android开发中遇到一个aidl问题。 向远程服务注册监听器,但是报一个Bad magic number for Bundle错误 在普通用法是没有问题的,这个错误是因为我有个需求是在静态方法中调用 有没有人遇到过这样的问题?
Android系统应用的aidl怎么获取,为什么我下载的sdk中,没有aidl文件?
Android系统应用的aidl怎么获取,为什么我下载的sdk中,没有aidl文件?
android开发 Broadcast和AIDL区别和适用范围
如题, 进程或组件间通信时可以用广播或者AIDL,二者有何区别?适用范围?
关于Android IDevicePolicyManager.aidl的问题
看关于Android锁屏的代码看到最后是调用了IDevicePolicyManager.aidl里面的方法。比如getPasswordQuality()。那IDevicePolicyManager.aidl这个文件最后又是怎么往下调用呢?该怎么追踪这种aidl文件的方法?
AIDL获取aidl文件自动生成的java类的对象为空的问题
public void onServiceConnected(ComponentName arg0, IBinder service) { //拿到远程服务 imediaPlaybackService = IMediaPlaybackService.Stub.asInterface(service); Log.i(TAG,"拿到服务"); } ``` long Id =imediaPlaybackService.removeTrack(num1 ); textview.setText("Id"); ``` 报错提示如下 01-03 15:22:37.936: E/AndroidRuntime(3665): java.lang.NullPointerException: Attempt to invoke interface method 'int com.android.music.IMediaPlaybackService.removeTrack(long)' on a null object reference 01-03 15:22:37.936: E/AndroidRuntime(3665): at com.music.musicaidltest.MainActivity.onClick(MainActivity.java:68) 其中imediaPlaybackService是aidl的java类IMediaPlaybackService这的对象,请问有谁知道可能是什么情况造成
android做音乐播放器,为什么都用aidl呢,bindservice不也可以么?
android做音乐播放器,为什么都用aidl呢,bindservice不也可以么?
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
小白如何学习java?
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的《阿里巴巴 Java 开发手册》上有一段内容说:“循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作符。”到底为什么啊,我平常一直就用的‘+’号操作符啊!二哥有空的时候能否写一篇文章分析一下呢? 就在昨天,一位叫小菜的读者微信我说了上面这段话。 我当时看到这条微信的第一感觉是:小菜你也太菜了吧,这都不知道为啥啊!我估
"狗屁不通文章生成器"登顶GitHub热榜,分分钟写出万字形式主义大作
前言 GitHub 被誉为全球最大的同性交友网站,……,陪伴我们已经走过 10+ 年时间,它托管了大量的软件代码,同时也承载了程序员无尽的欢乐。 上周给大家分享了一篇10个让你笑的合不拢嘴的Github项目,而且还拿了7万+个Star哦,有兴趣的朋友,可以看看, 印象最深刻的是 “ 呼吸不止,码字不停 ”: 老实交代,你是不是经常准备写个技术博客,打开word后瞬间灵感便秘,码不出字? 有什么
推荐几款比较实用的工具,网站
1.盘百度PanDownload   这个云盘工具是免费的,可以进行资源搜索,提速(偶尔会抽风......) 不要去某站买付费的......   PanDownload下载地址   2.BeJSON 这是一款拥有各种在线工具的网站,推荐它的主要原因是网站简洁,功能齐全,广告相比其他广告好太多了     bejson网站   3.二维码美化 这个网站的二维码美化很好看,网站界面
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的段子
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问