Android调用接口出现的不返回数据问题 20C

使用Android网络请求框架Android-asyn-http请求一个接口,请求10次左右会出现一次后台返回数据但前端接收不到的情况,不走onSuccess,也不走onFail(),怎么回事呢

3个回答

看一看是不是Callback中所有的onSuccess回调和onFailure()回调都没有调用

代码,报文都贴出来。。。。

有可能是服务器端没有处理你的请求,等待时间设置的太长了。可以试着改变链接超时时间

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android同时调用多个webservice接口的问题
在一个Activity中同时调用多个webservice接口,有时候会出现数据混乱的问题。。。异步的情况也不会出现返回结果不正确吧
android studio 调用 webservice 莫名闪退
编译的APP,电机按钮就会闪退! 下面是代码,求助看看有没有问题! ``` package com.zt.lesson2_4; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.widget.Button; import android.widget.EditText; import android.view.View.OnClickListener; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import android.os.AsyncTask; import java.util.regex.Matcher; import java.util.regex.Pattern; public class MainActivity extends AppCompatActivity { private String result1; private TextView textView1; private TextView textView2; private TextView textView3; private EditText editText1; private Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView1=(TextView)findViewById(R.id.textView2 ); textView2=(TextView)findViewById(R.id.textView4 ); textView3=(TextView)findViewById(R.id.textView6 ); editText1=(EditText)findViewById(R.id.editText); button1=(Button)findViewById(R.id.button); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { QueryTask newQuery=new QueryTask(); newQuery.execute(editText1.getText().toString()); } }); } private class QueryTask extends AsyncTask<String,Integer,String>{ @Override protected String doInBackground(String... params) { try{ getRemoteInfo(params[0]); } catch (Exception e){ e.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { textView3.setText("返回数据是:\n\r" + result1); Pattern pattern1 = Pattern.compile("string=(.+?);"); Matcher matcher1 = pattern1.matcher(result1); int j = 0; String[] strings = new String[5]; while (matcher1.find()) { strings[j] = matcher1.group(); j = j + 1; } textView1.setText(strings[3].substring(7)); textView2.setText(strings[1].substring(7)); } } private void getRemoteInfo(String en_word) throws Exception{ String Target_URI = "http://fy.webxml.com.cn/webservices/EnglishChinese.asmx"; String namespace = "http://WebXml.com.cn/";//namespace String methodName = "TranslatorString";//要调用的方法名称TranslatorString SoapObject request = new SoapObject(namespace, methodName); // 设置需调用WebService接口需要传入的参数wordKey request.addProperty("wordKey", en_word); //创建SoapSerializationEnvelope 对象,同时指定soap版本号 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER12); envelope.bodyOut = request;//由于是发送请求,所以是设置bodyOut envelope.dotNet = true; HttpTransportSE httpTransportSE = new HttpTransportSE(Target_URI); httpTransportSE.call(null, envelope);//调用 // 获取返回的数据 SoapObject object = (SoapObject) envelope.bodyIn; // 获取返回的结果 result1 = object.getProperty(0).toString(); } } ```
Android 调用了一个用户列表接口,但是清酒不到返回结果?
![图片说明](https://img-ask.csdn.net/upload/201911/15/1573782120_282517.png)![图片说明](https://img-ask.csdn.net/upload/201911/15/1573782133_381036.png) Android上调用了一个API获取用户信息,Logcat上能看到返回的数据,但是程序段就是获取不到,怎么回事?![图片说明](https://img-ask.csdn.net/upload/201911/15/1573781757_115502.png) ``` ```
android webservice接口调用问题
public String login(String uid ,String pwd){ String result=null; // 设置需调用WebService接口需要传入的两个参数mobileCode、userId rpc.addProperty("uid", uid); rpc.addProperty("pwd",pwd); // 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10); envelope.bodyOut = rpc; // 等价于envelope.bodyOut = rpc; envelope.setOutputSoapObject(rpc); HttpTransportSE transport = new HttpTransportSE(url); try { // 调用WebService transport.call(null, envelope); result = envelope.getResponse().toString(); } catch (Exception e) { e.printStackTrace(); } // 获取返回的数据 // SoapObject object = (SoapObject) envelope.bodyIn; // String result = object.getProperty("getMobileCodeInfoResult").toString(); return result; } ``` ``` 在进行访问的时候 transport.call(null, envelope); 报错。 百度说是传值方式不对,,不知道是啥原因
Android调用WebService的时候出现问题
我按照网上代码写出来的调用WebService的程序,总是返回'服务器无法处理请求。-->未将对象应用设置到对象实例' 我的代码如下: public void other() { // 命名空间 String nameSpace = " www.webxml.com.cn/"; // 调用的方法名称 String methodName = "getSupportCity"; // EndPoint String endPoint = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"; // SOAP Action String soapAction = "http://WebXml.com.cn/getSupportCity"; HttpTransportSE transport = new HttpTransportSE(endPoint); // 指定WebService的命名空间和调用的方法名 SoapObject rpc = new SoapObject(nameSpace, methodName); rpc.addProperty("byProvinceName", "重庆"); // 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10); // 设置是否调用的是dotNet开发的WebService envelope.dotNet = true; transport.debug = true; // 等价于envelope.bodyOut = rpc; envelope.setOutputSoapObject(rpc); try { // 调用WebService transport.call(soapAction, envelope); } catch (Exception e) { e.printStackTrace(); } // 获取返回的数据 Object object = envelope.bodyIn; if(object==null){ Log.i(TAG, "return object is null!"); return; } if(object instanceof SoapFault){ Log.i(TAG, "SoapFault refult is :"+ object.toString()); return; }else if(object instanceof SoapObject){ // 获取返回的结果 Log.i(TAG, "SoapObject refult is :"+ object.toString()); } } ---------------------------------------------------- 返回的logcat打印如下: 01-22 16:43:34.966: I/MainActivity(1898): SoapFault refult is :SoapFault - faultcode: 'soap:Server' faultstring: '服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。' faultactor: 'null' detail: org.kxml2.kdom.Node@4228be08 ---------------------------------------------- 我调用了很多webservice接口,结果都是返回这个,应该不是服务器的问题,大神求指教!!
Android中如何把handlerMessage中返回的数据返回给主线程调用?
问题描述:我在主线程中调用WebService,通过handleMessage成功获取服务器返回的Json字符串。不过我还需要调用另外一个WebService的接口,需要把上一个返回的的字符作为传入参数。现在的问题是不知道如何把handleMessage中的变量返回到主线程中。请问该如何做到,代码中就是想在onCreate中获取instanceId这个参数,该如何实现? protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scan); init() ; setListen(); getData(); private void getData(){ new Thread() { public void run() { Looper.prepare(); myscanData= WebServiceUtil.getscanlist(taskId,locationId,userId,tokenSecurityLogin,mHandler); System.out.println("扫描巡更点后:"+myscanData); //获取巡更点的实例 Toast.makeText(getApplication(),instanceId,Toast.LENGTH_SHORT).show(); //show(); Looper.loop(); } }.start(); } ** Toast.makeText(getApplication(),instanceId,Toast.LENGTH_SHORT).show(); } ............................................ final Handler mHandler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch(msg.what){ case GET_XunJianScan: System.out.println("进入线路巡更点"); XunJianInstanceBean bean=new XunJianInstanceBean(); if (!msg.obj.toString().equals("error")) { try { myScanList.clear(); String strByJson = msg.obj.toString(); //Json的解析类对象 JSONArray jsonArray = new JSONObject(strByJson).getJSONArray("lzq"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject obj = ((JSONObject) jsonArray.opt(i)); String ID = obj.getString("ID"); String Remark = obj.getString("Remark"); String taskid=obj.getString("taskid"); String locationid=obj.getString("locationid"); String uid=obj.getString("uid"); String createdate1=obj.getString("createdate1"); String place=obj.getString("place"); bean.setID(ID); bean.setRemark(Remark); bean.setTaskid(taskid); bean.setLocationid(locationid); bean.setUid(uid); bean.setCreatedate1(createdate1); bean.setPlace(place); ** instanceId=ID;** } } catch (Exception e) { e.printStackTrace(); } } else { Toast.makeText(getApplication(), "加载巡检数据失败", Toast.LENGTH_SHORT).show(); } break; } if (mProgressDialog != null) { mProgressDialog.dismiss(); } } };
android调用wsdl参数值取不到
用安卓调用 javawebservice,以wsdl的形式,但是服务器端取不到传递的参数,具体代码如下,请高手帮忙!多谢 public static void getRemoteInfo(String phoneSec) { // 命名空间 // 调用的方法名称 String methodName = "login"; // EndPoint // SOAP Action String soapAction = nameSpace+methodName; // 指定WebService的命名空间和调用的方法名 SoapObject rpc = new SoapObject(nameSpace, methodName); // 设置需调用WebService接口需要传入的两个参数mobileCode、userId rpc.addProperty("userId", "lcq"); --这里的两个参数 rpc.addProperty("passWord", "123123123"); --这里的两个参数 // 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10); envelope.bodyOut = rpc; // 设置是否调用的是dotNet开发的WebService envelope.dotNet = true; // 等价于envelope.bodyOut = rpc; envelope.setOutputSoapObject(rpc); HttpTransportSE transport = new HttpTransportSE(endPoint); try { // 调用WebService transport.call(soapAction, envelope); } catch (Exception e) { e.printStackTrace(); } // 获取返回的数据 SoapObject object = (SoapObject) envelope.bodyIn; // 获取返回的结果 String result = object.getProperty(0).toString(); // 将WebService返回的结果显示在TextView中 //resultView.setText(result); }
为何数据接口在浏览器中无法返回数据,却能在AndroidStudio的代码中返回
我按照书上,调用“http://www.weather.com.cn/data/list3/city.xml ”这个地址, 用以返回城市和城市对应的代码,在app中是能获得数据,且数据结果与预期完全一致, 但如果把地址贴到浏览器(我使用的是Chrome)中,就会报错?请问为什么?
android的MVP模式的问题
设计模式什么的经常都是似懂非懂。前几天看了下关于android的MVP模式,然后根据自己的理解我把之前的项目给改了一下。 改完之后是这样的一个结构: ![图片说明](https://img-ask.csdn.net/upload/201709/06/1504690236_332003.png) 简单说一下我的项目结构。 view包中有activity、adapter(recyclerView和viewPager的)、custom(自定义view)--这些是V层 presenter包中就是两个activity的presenter以及一些衍生出来的接口--这些是P层 model包中就是一个javaBean、业务代码(网络访问、数据库等)和一些工具类--这些是M层 我是在activity中放一个presenter的实例,UI中需要进行业务操作的时候,调用presenter的相应方法,由presenter去调用业务代码。比如访问网络,访问数据库等操作,等这些业务代码得到了相应的数据后返回给presenter,由presenter去通知或直接地更新UI。 这是我对MVP的理解,请问理解的正确吗?如果不正确哪里不正确呢? 另外还想问问一般项目中都是用什么设计模式的?
Android中调用API(存储过程)
![图片说明](https://img-ask.csdn.net/upload/201612/06/1481012025_256228.jpg) 如图,现在想要点击CheckBox勾选数据,然后在点击装车入库button时,调用接口,得到一个返回集,并将选中的数据移除。现在已经获取到了sql语句,下一步该怎么编写代码 String sqlString = "exec Mobile_broker_manifestheader_CreateManifest" + " @StoreId=" + app.getwdid() + "," + " @Createuser='" + app.getusername() + "'," + " @InvoiceCode='" + cc + "'";
关于Android项目中MVP应用碰到的问题
我看了谷歌的MVP案例之后,在项目中套用也使用了MVP,但是,随着界面的增多,请求数据的增多,出现了一个问题,就是接口类的数量成倍增长,并且V层中需要实现的接口增多很多。 我在网上看到的好多MVP使用讲解,都是单单一个界面,一个请求,一个V只对应一个P。 但是我在开发的时候想,其实很多界面中的部分请求很可能都是相同的,或者说是属于同一个模块的,所以我改成了将同一个模块的请求放在了一个专门的P类中了。 另外,对于数据回调用的接口,项目写了没多少就发现增加了很多很多,并且接口中又是基本的onSuccess,onError,onFinish这些方法,V层每需要请求一种数据,都要增加三个这类的方法,因为要区别数据结果,这样V层的方法也增多了很多。这时候我就改了另一种方法,只用一个接口,参照onActivityResult的方法,请求数据的时候,带上一个参照值,P类对数据获取的状态进行判断,然后将状态、参照值和结果(放在一个能放多种类型数据的容器)一并返回,这样就免掉了很多的接口。 虽然我换了一种方式,但是不知道是否违背了MVP的初衷。请问有什么好的解决方案吗
为什么网上很多文章说 Cursor是一行的集合?明明是一个接口
http://www.2cto.com/kf/201109/103163.html 抄来抄去,转来转去,基本就上面链接里这个文章,说Cursor是每行的集合。 android 官方api是这么描述Cursor的:“This interface provides。。。。”这是一个接口啊,所以是我理解太肤浅还是网上的文章描述不够专业? 另外在进行数据库操作时,会有类似下面的语句: Cursor cursor = db.query(.....) 此处db是SQLiteDatabase的一个实例,调用query方法返回一个cursor实例,但是。。。Cursor不是接口吗?接口怎么有实例了? 于是我又迷茫了。。。求指点 还有一个问题,既然是接口,我通过android studio查看Cusor时,它的方法怎么都没有加“abstract”。。。。 ![图片说明](https://img-ask.csdn.net/upload/201505/24/1432459035_108067.png)
调用外部API不成功,显示的什么执行时间长,我实在解决不了了
下面是我的util package textview.exam; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * Created by fei on 2016/6/16. */ public class Shishinews { String httpUrl = "http://apis.baidu.com/songshuxiansheng/news/news"; String httpArg = ""; String jsonResult = request(httpUrl, httpArg); //System.out.println(jsonResult); /** * @param urlAll * :请求接口 * @param httpArg * :参数 * @return 返回结果 */ public static String request(String httpUrl, String httpArg) { BufferedReader reader = null; String result = null; StringBuffer sbf = new StringBuffer(); httpUrl = httpUrl + "?" + httpArg; try { URL url = new URL(httpUrl); HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setRequestMethod("GET"); // 填入apikey到HTTP header connection.setRequestProperty("apikey", "f761aa7e1d7b5ebe4******"); connection.connect(); InputStream is = connection.getInputStream(); reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String strRead = null; while ((strRead = reader.readLine()) != null) { sbf.append(strRead); sbf.append("\r\n"); } reader.close(); result = sbf.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } } 下面是我fragment的代码 package textview.exam; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class FragmentMainchatnews extends Fragment { String httpUrl = "http://apis.baidu.com/songshuxiansheng/news/news"; String httpArg = ""; private String[] title;//新闻标题 private String[] abs;//新闻简介 private String[] image_url;//图片链接地址 Thread thread = null; String newsjson; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // TODO Auto-generated method stub View view=inflater.inflate(R.layout.main_chat_news, null); return view; } // 开启线程得到答案 Runnable runnable = new Runnable() { @Override public void run() { newsjson = Shishinews.request(httpUrl, httpArg); Log.v("debug",newsjson); Message message = new Message(); message.what = 1;// 标志是哪个线程传数据 } }; @SuppressLint("HandlerLeak") class MyHandler extends Handler { // 接受message的信息 @Override public void handleMessage(Message msg) { super.handleMessage(msg); try { JSONObject object = new JSONObject(newsjson); newsjson = object.get("retDate").toString(); } catch (JSONException e) { e.printStackTrace(); } if (msg.what == 1) { // 创建一个List集合,List集合的元素是Map List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(); for (int i = 0; i < title.length; i++) { Map<String, Object> listItem = new HashMap<String, Object>(); listItem.put("image", image_url[i]); listItem.put("title", title[i]); listItem.put("abs", abs[i]); listItems.add(listItem); } // 创建一个SimpleAdapter SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity(), listItems,R.layout.simple_item, new String[]{"image", "title", "abs"}, new int[]{R.id.image, R.id.title ,R.id.abs}); ListView list = (ListView) getView().findViewById(R.id.chat_news); // 为ListView设置Adapter list.setAdapter(simpleAdapter); // 为ListView的列表项的单击事件绑定事件监听器 list.setOnItemClickListener(new AdapterView.OnItemClickListener() { // 第position项被单击时激发该方法 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent=new Intent(getActivity(),ChatActivity.class); startActivity(intent); } }); // 为ListView的列表项的选中事件绑定事件监听器 list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { // 第position项被选中时激发该方法 @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { System.out.println(title[position] + "被选中了"); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } } } public void sendMessage() { if (getView().findViewById(R.id.chat_news)==null) { Toast.makeText(getActivity(), "下拉刷新", Toast.LENGTH_SHORT).show(); } else { // 创建一个List集合,List集合的元素是Map List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(); for (int i = 0; i < title.length; i++) { Map<String, Object> listItem = new HashMap<String, Object>(); listItem.put("image", image_url[i]); listItem.put("title", title[i]); listItem.put("abs", abs[i]); listItems.add(listItem); } thread = new Thread(runnable); thread.start(); } } } 下面是我AndroidMainfest.xml中的代码 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="textview.exam" > <!-- 添加权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.READ_PROFILE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".LoginActivity" android:label="@string/title_activity_login" android:windowSoftInputMode="adjustResize|stateHidden" > </activity> <activity android:name=".ChatActivity" android:label="@string/title_activity_chat" > android:labl="聊天" </activity> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application> </manifest> 该有的权限我应该都设置了,可是还是不成功,大神们啊,这个我是解决不了了,就想获取个简单的新闻,我连什么关键词都没有
高德地图能获取到经纬度,但不能将地图移动到定位点,
package com.example.zengyue.gould_map; import android.app.Activity; import android.content.Intent; import android.icu.text.SimpleDateFormat; import android.os.Build; import android.os.Bundle; import android.support.annotation.RequiresApi; import android.util.Log; import android.view.Window; import android.widget.Toast; import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClientOption; import com.amap.api.location.AMapLocationListener; import com.amap.api.maps2d.AMap; import com.amap.api.maps2d.CameraUpdateFactory; import com.amap.api.maps2d.LocationSource; import com.amap.api.maps2d.MapView; import com.amap.api.maps2d.UiSettings; import com.amap.api.maps2d.model.LatLng; import java.util.Date; public class MainActivity extends Activity implements LocationSource,AMapLocationListener{ //AMap是地图对象 private AMap aMap; private MapView mMapView; //声明AMapLocationClient类对象,定位发起端 private AMapLocationClient mLocationClient = null; //声明mLocationOption对象,定位参数 public AMapLocationClientOption mLocationOption = null; //声明mListener对象,定位监听器 private OnLocationChangedListener mListener = null; //标识,用于判断是否只显示一次定位信息和用户重新定位 private boolean isFirstLoc = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //获取地图控件 mMapView= (MapView) findViewById(R.id.map); //创建地图 mMapView.onCreate(savedInstanceState);//重写 if (aMap==null){ aMap =mMapView.getMap(); //设置显示定位按钮 并且可以点击 UiSettings settings = aMap.getUiSettings(); aMap.setLocationSource(this);//设置了定位的监听 // 是否显示定位按钮 settings.setMyLocationButtonEnabled(true); aMap.setMyLocationEnabled(true);//显示定位层并且可以触发定位,默认是flase } //开始定位 location(); } private void location() { //初始化定位 mLocationClient = new AMapLocationClient(getApplicationContext()); //初始化定位参数 mLocationOption = new AMapLocationClientOption(); //设置是否返回地址信息(默认返回地址信息) mLocationOption.setNeedAddress(true); //设置定位模式为Hight_Accuracy高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); // //设置是否只定位一次,默认为false // mLocationOption.setOnceLocation(false); // //设置是否强制刷新WIFI,默认为强制刷新 // mLocationOption.setWifiActiveScan(true); // //设置是否允许模拟位置,默认为false,不允许模拟位置 // mLocationOption.setMockEnable(true); //设置定位间隔,单位毫秒,默认为2000ms mLocationOption.setInterval(2000); //给定位客户端对象设置定位参数 mLocationClient.setLocationOption(mLocationOption); //启动定位 mLocationClient.startLocation(); //设置定位回调监听 mLocationClient.setLocationListener(this); } @Override protected void onResume() { super.onResume(); //重新绘制加载地图 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //暂停地图的绘制 mMapView.onResume(); } @Override protected void onDestroy() { super.onDestroy(); //销毁地图 mMapView.onDestroy(); mLocationClient.stopLocation();//停止定位 mLocationClient.onDestroy();//销毁定位客户端。 } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //保存地图的当前状态 mMapView.onSaveInstanceState(outState); } @RequiresApi(api = Build.VERSION_CODES.N) @Override public void onLocationChanged(AMapLocation aMapLocation) { Log.i("ttt",">>>>>>>>>>1"); if (aMapLocation != null) { Log.i("ttt",">>>>>>>>>>2"); if (aMapLocation.getErrorCode() == 0) { Log.i("ttt",">>>>>>>>>>"+aMapLocation.getLatitude()+">>>>>>>>>"+//获取纬度 aMapLocation.getLongitude()); //定位成功回调信息,设置相关消息 aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见官方定位类型表 aMapLocation.getLatitude();//获取纬度 aMapLocation.getLongitude();//获取经度 aMapLocation.getAccuracy();//获取精度信息 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(aMapLocation.getTime()); df.format(date);//定位时间 aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。 aMapLocation.getCountry();//国家信息 aMapLocation.getProvince();//省信息 aMapLocation.getCity();//城市信息 aMapLocation.getDistrict();//城区信息 aMapLocation.getStreet();//街道信息 aMapLocation.getStreetNum();//街道门牌号信息 aMapLocation.getCityCode();//城市编码 aMapLocation.getAdCode();//地区编码 Log.i("ttt",aMapLocation.getCountry().toString()+aMapLocation.getProvince().toString()+aMapLocation.getCity().toString()+aMapLocation.getDistrict().toString()+aMapLocation.getStreet().toString()); // 如果不设置标志位,此时再拖动地图时,它会不断将地图移动到当前的位置 if (isFirstLoc) { //设置缩放级别 aMap.moveCamera(CameraUpdateFactory.zoomTo(17)); //将地图移动到定位点 aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude()))); //点击定位按钮 能够将地图的中心移动到定位点 mListener.onLocationChanged(aMapLocation); //添加图钉 // aMap.addMarker(getMarkerOptions(amapLocation)); //获取定位信息 StringBuffer buffer = new StringBuffer(); buffer.append(aMapLocation.getCountry() + "" + aMapLocation.getProvince() + "" + aMapLocation.getCity() + "" + aMapLocation.getProvince() + "" + aMapLocation.getDistrict() + "" + aMapLocation.getStreet() + "" + aMapLocation.getStreetNum()); Toast.makeText(getApplicationContext(), buffer.toString(), Toast.LENGTH_LONG).show(); isFirstLoc = false; Log.i("ttt",buffer.toString()); } } else { //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。 Log.e("AmapError", "location Error, ErrCode:" + aMapLocation.getErrorCode() + ", errInfo:" + aMapLocation.getErrorInfo()); Toast.makeText(getApplicationContext(), "定位失败", Toast.LENGTH_LONG).show(); } } } //激活定位 @Override public void activate(OnLocationChangedListener onLocationChangedListener) { mListener=onLocationChangedListener; } //停止定位 @Override public void deactivate() { mListener=null; } } ``` <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.zengyue.gould_map"> <!--用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!--用于获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!--用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <!--用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <!--用于访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <!--用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <!--用于写入缓存数据到扩展存储卡--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <!--用于申请调用A-GPS模块--> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission> <!--用于申请获取蓝牙信息进行室内定位--> <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <service android:name="com.amap.api.location.APSService"/> <meta-data android:name="com.amap.api.v2.apikey" android:value="c0fede08d244f741d053af1396317383" /> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> ``` <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.zengyue.gould_map.MainActivity"> <com.amap.api.maps2d.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent"> </com.amap.api.maps2d.MapView> </RelativeLayout>
关于Spring中事务的先关问题~~~苦等各位高手大拿~~~这里先谢谢啦~~有代码哦!
``` @Override @Transactional public JSONObject openToAccount(JSONObject params)throws Exception { JSONObject json = new JSONObject(); // 先判断是否存在用户账户记录 if(userAccountDao.isExistUserAmountRec(params.getString("userId")) <= 0){ // 不存在 // 初始化用户账户记录 int initcount = userAccountDao.initUserAccount(params.getString("userId")); if(initcount <= 0){ throw new BusinessException("初始化用户账户记录异常"); } }else{ //存在 // 获取用户账号对象 UserAccounct userAccounct = userAccountDao.getUserAmountByUserId(params.getString("userId")); // 是否存在 if(userAccounct != null){ logger.info(" userAccount Record is Exist ! "); // 个人收益是否大于0 if(userAccounct.getPlatformRevenue().compareTo(BigDecimal.ZERO) == 1){ try { logger.info(" userAccount record incomeAmount is ¥ " + userAccounct.getPlatformRevenue()); // 先修改本地记录 将用户收益归零 int updateUserAccountCount = userAccountDao.setPlatformRevenueByUserId(params.getString("userId"), BigDecimal.ZERO); if(updateUserAccountCount <= 0){ throw new BusinessException("重置该用户收益金额异常"); } logger.info(" userAccount record incomeAmount updated to Zero "); // 将所有属于该用户的订单更新为已折现 int updatePaymentCount = paymentDao.updateIsDiscountedByUserId(params.getString("userId")); if(updatePaymentCount <= 0){ throw new BusinessException("用户订单信息折现状态更新异常"); } logger.info(" payment record isdiscounted updated to 'true' "); // 封装数据 请求openToAccount接口 List<NameValuePair> paramsList = new ArrayList<NameValuePair>(); // 根据终端匹配AppId if(params.getString("terminal") == "ios" || "ios".equals(params.getString("terminal"))){ // iosAppId paramsList.add(new BasicNameValuePair("client_id", iosAppId)); } if(params.getString("terminal") == "android" || "android".equals(params.getString("terminal"))){// andoriApp paramsList.add(new BasicNameValuePair("client_id", androidAppId)); } logger.info(" access_token is "+ params.getString("access_token")); logger.info(" openid "+ params.getString("openId")); logger.info(" amount "+ userAccounct.getPlatformRevenue().toString()); paramsList.add(new BasicNameValuePair("access_token", params.getString("access_token"))); // access_token移动端传递 paramsList.add(new BasicNameValuePair("openid", params.getString("openId"))); // openId移动端传递 paramsList.add(new BasicNameValuePair("amount",userAccounct.getPlatformRevenue().toString())); // 金额 目前为全部折现 String r = HttpsClientUtils.doPost(openToAccountUrl, paramsList); // 调用开放平台openToAccount接口 JSONObject returnJson = JSONObject.parseObject(r); // openToAccount接口返回 JsonObject String code = returnJson.getString("code"); // 返回参数 code String success = returnJson.getString("success"); // 返回参数 success String msg = returnJson.getString("msg"); // 返回参数 msg logger.info(" UTOUU Open platform OpenToAcount return----->code:{}-----msg:{}-----success:{}",code,msg,success); // 根据openToCas接口返回的code码 判断 折现成功 if(code == ConfessionConstants.DISCOUNTED_SUCCESS_CODE || ConfessionConstants.DISCOUNTED_SUCCESS_CODE.equals(code)){ logger.info(" OpenToAcount return code is " + code);// 返回0为成功 // 返回折现成功消息 json = JsonUtils.getSucResultJson(ResultCodeAndMsg.RSP_SUCCESS_CODE, ResultCodeAndMsg.REVENUE_DISCOUNT_SUCCESS_MSG); return json; } // 折现失败 logger.info(" OpenToAcount return code is " + code); json = JsonUtils.getFailResultJson(ResultCodeAndMsg.RSP_FAIL_CODE, ResultCodeAndMsg.RSP_FAIL_MSG); throw new BusinessException("个人收益转出失败!"); } catch (Exception e) { e.printStackTrace(); } }else{ // 返回没有可以折现的收益金额信息 json = JsonUtils.getFailResultJson(ResultCodeAndMsg.RSP_SUCCESS_CODE, ResultCodeAndMsg.REVENUE_IS_ZREO); return json; } }else{ throw new BusinessException("未找到该用户账户记录异常"); } } json = JsonUtils.getFailResultJson(ResultCodeAndMsg.RSP_FAIL_CODE, ResultCodeAndMsg.RSP_FAIL_MSG); return json; } ``` 这个是我的一个业务实现类、大致用途是关于金额转出的、其中在代码中还请求了第三方服务的接口 现在我的问题主要有两个: 1:为什么我根据第三方服务返回的结果判断后(当然是我不想得到的结果时)throw 异常 后该service层调用的所有DAO不回滚? 2:如何防止并发呢?我这里是可以多点登录的、即同一个用户在不同的设备上同时执行了该业务类,这时候我就傻了~~~请问该如何处理? 谢谢大家了
如何将my eclipse查询MySQL的结果传给客户端。
下面是查询数据库的代码数据库 public boolean Seekaim(SeekUser seekid){ String word="select * from seeker where userID like '%"+seekid.getSeek_name()+"%'";//生成一条sql语句 try { Statement statement=connection.createStatement();//创建一个Statement对象 ResultSet resultSet=statement.executeQuery(word);//查询数据可通过Statement接口的executeQuery()方法执行SQL语句 //executeQuery()方法用于执行SELECT查询语句,将放回一个ResultSet型的结果集。通过遍历查询结果集的内容,才可获取SQL语句执行的查询结果。 //定义三个string类型的量 String id,name; while(resultSet.next()){//遍历结果集 id=resultSet.getString("userID"); System.out.println("查询的用户是"+id); name=resultSet.getString("userName"); System.out.println("查询用户的昵称是"+name); } /* 1:Result接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。 2:PreparedStatement接口中的excuteQuery()方法,在此PreparedStatement对象执行sql查询语句,返回结果为查询结果集Result对象 3:next()将指针向下移一行 4:ResultSet对象的getXXX()方法可获取查询结果集中数据。由于ResultSet中保存的数据是表的形式,因此可通过使用getXXX()方法指定列的序号与列的名称。 id=rs.getInt("id");//获得id username=rs.getString(2);// password=rs.getString("password");// age=rs.getInt(4);// sex=rs.getInt(5);// 仔细体会就可以明白,getXXX(参数);参数既可以是列的名称还可以是第几列的数字。 */ if (resultSet.next())//resultSet.next();如果为真代表查询结果有值,为假代表查询结果没有值 { return true; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } ``` ``` 已经查到了想要的数据,现在想把数据返回给安卓客户端我要怎么写呀,顺便贴上servlet的代码 ``` import java.io.DataOutputStream; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SeekServlet extends HttpServlet { /** * Constructor of the object. */ public SeekServlet() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取request中的参数(登陆)括号里面是安卓客户端里面构建url时写入的参数,保持一致,绿色的那个 /* *********************************搜索用户****************************************************************** */ //获取request中的参数 String seek_id = request.getParameter("edit_id"); //接收客户端消息处理 SeekUser seek3=new SeekUser(); seek3.setSeek_name(seek_id); //向数据库查询对象 MyDB_user mUser3=new MyDB_user(); mUser3.Seekaim(seek3); //返回查询结果 //创建一个DataOutputStream对象 DataOutputStream dos1=new DataOutputStream(response.getOutputStream()); if(mUser3.Seekaim(seek3)) { } } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 输出流 PrintWriter out = response.getWriter(); // 设置编码形式 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); // 获取传入的数据 String id = request.getParameter("id"); System.out.println("UserInfoServlet: id = " + id); } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init() throws ServletException { // Put your code here } } ``` 查询的结果已经可以遍历出来了但是不知道怎么传回给安卓端。Seekaim方法是在servlet中调用的有没有大佬来拯救一下小菜鸡
手机测试 wx.config 无反应,愿意发微信红包, 求大佬帮忙分析解决
我在微信开发工具测试, wx.config 显示ok , wx.chooseWXPay.没有此SDK或暂不支持此SDK模拟 **问题出在, 我用手机测试 (ios,android) wx.config无反应,** erro和ready均不进入 wx.chooseWXPay也无法用, 我在https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 验证了签名是一毛一样的, 求教大佬, 我这代码是出了啥毛病 ``` <!doctype html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html lang="zh-cn"> <head> <%@include file="/pc/inc/commoncontent.inc"%> <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script src="<%=contextPath%>/m/smartHotel/script/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> </script> <title>订单-支付</title> <span class="disb picNum padTB30"><i class="disib iconPic" onClick="openPic(this);" >3532rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr张</i></span> </head> <body> <script type="text/javascript"> var appId1,timeStamp1,nonceStr1,packageStr1,signType1,paySign1; $(document).ready(function () { $.ajax({ url : contextPath+ "/weixin/hotelorder/wxPay.action", type:"post", dataType:'json', //接受数据格式 async: false, data:{url:window.location.href.split('#')[0].replace(/\&/g,"%26")},//传参,建议使用json //1:手机号, 2:房间数.3单价4总价 5: 当前bedid 6 :入住人 姓名 7 发票8 入住日离开日 error:function(data){//请求失败时处理 // alert(data); window.location.href = '<%=contextPath%>/m/smartHotel/html/yysb.html'/*预订失败页*/ }, success:function(data) { if( data) { appId1 = data.pay.appId; timeStamp1 = data.pay.timeStamp; nonceStr1 = data.pay.nonceStr; packageStr1 = data.pay.package; signType1 = data.pay.signType; paySign1 = data.pay.paySign; } wx.config({ debug:false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:data.pay.appId, // 必填,公众号的唯一标识 timestamp:data.config.timestamp, // 必填,生成签名的时间戳 nonceStr:data.config.noncestr, // 必填,生成签名的随机串 signature:data.config.configSign, // 必填,签名,见附录1 jsApiList:['chooseWXPay','closeWindow'] }); wx.error(function(res){ alert("error enter"); }); wx.ready(function(){ alert("ready enter"); pay(); }); //onBridgeReady(); // alert("success inter"); } }); }); function pay() { // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 console.log(appId1 +" / "+ timeStamp1+" / " + nonceStr1+" / "+packageStr1 +" / "+ signType1+" / "+paySign1); wx.chooseWXPay({ timestamp:timeStamp1, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 nonceStr:nonceStr1, // 支付签名随机串,不长于 32 位 package:packageStr1, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***) signType:signType1, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' paySign:paySign1, // 支付签名 success:function(res) { alert("8888888888888"); alert(res); alert(res.errMsg); console.log(res.errMsg); // 支付成功后的回调函数 if (res.errMsg == "chooseWXPay:ok") { //支付成功 alert('支付成功'); } else { alert(res.errMsg); } } }); } function onBridgeReady(){ alert("进入了onbridgeready"); WeixinJSBridge.log("889"); WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId":appId1, //公众号名称,由商户传入 "timeStamp":timeStamp1, //时间戳,自1970年以来的秒数 "nonceStr":nonceStr1, //随机串 "package":packageStr1, "signType":"MD5", //微信签名方式: "paySign":paySign1 //微信签名 }, function(res){ WeixinJSBridge.log(res); alert("进入了success"); alert(res.errorMsg); // 使用以下方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。 if(res.errMsg == "get_brand_wcpay_request:ok") { alert("支付成功"); // window.location.href = "${pageContext.request.contextPath}/wx/success?orderId=${orderId}"; }else if(res.errMsg == "get_brand_wcpay_request:fail"){ alert('支付失败'); }else if(res.errMsg == "get_brand_wcpay_request:cancel"){ alert('支付取消'); }else{ alert(res.errMsg); } } ); } function openPic() { pay(); //wx.closeWindow(); } //调用模拟 回调 // $.ajax({ // url : contextPath+ "/weixin/hotelorder/moniWXPay.action", // type:"post", // dataType:'json', //接受数据格式 // async: false, // data:{parm1:getQueryString2("orderId")},//传参,建议使用json // error:function(data){//请求失败时处理 // alert(data); // }, // success:function(data) // { // if(data.result =="success") // { // window.location.href = '<%=contextPath%>/m/smartHotel/html/yycg.jsp?orderId='+getQueryString2("orderId"); // } // // } // }); function getQueryString2(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if(r != null) return decodeURI(r[2]); return null; } </script> </body> </html> ```
动态规划入门到熟悉,看不懂来打我啊
持续更新。。。。。。 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)根据定义,前十项为1, 1, 2, 3...
程序员,职场上请远离这种人!
对有些职场人来讲,甩锅就是一种生存手段。01.从大学打篮球说起上大学的时候喜欢打篮球,然后我又特别喜欢抢篮板,经常是跳起来的时候没事,落下来的时候偶尔会踩到别人的脚上,于...
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
一个读研让我损失了一百万的真实故事
关注我!只要10分钟,包你学会数据分析 毕业后,应该就业还是考研? 我刚出国留学那会儿,就惊讶的发现,外国local95%都不会选择读研 他们说,硕士学费很贵,时间宝贵,老板不认,所以很费 当几乎所有人都是本科学历时,硕士学历反而像个异类 在老板眼里,三年硕士远远不如3年的工作经验实用 他们甚至专门为拒绝高学历者发明了一个词,叫overoccupie...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给袈...
shell脚本:备份数据库、代码上线
备份MySQL数据库 场景: 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:dbname-2019-11-23.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
为什么你学不过动态规划?告别动态规划,谈谈我的经验
动态规划难吗?说实话,我觉得很难,特别是对于初学者来说,我当时入门动态规划的时候,是看 0-1 背包问题,当时真的是一脸懵逼。后来,我遇到动态规划的题,看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手,关于递归的,我之前也写过一篇套路的文章,如果对递归不大懂的,强烈建议看一看:为什么你学不会递归,告别递归,谈谈我的经验 对于动态规划,春招秋招时好多题都会用到动态...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一、背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。 但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来解决问题的。 这里有个悖论,有时候你觉得有些技术没用恰恰是...
【超详细分析】关于三次握手与四次挥手面试官想考我们什么?
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 三次握手 当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
新程序员七宗罪
当我发表这篇文章《为什么每个工程师都应该开始考虑开发中的分析和编程技能呢?》时,我从未想到它会对读者产生如此积极的影响。那些想要开始探索编程和数据科学领域的人向我寻求建议;还有一些人问我下一篇文章的发布日期;还有许多人询问如何顺利过渡到这个职业。我非常鼓励大家继续分享我在这个旅程的经验,学习,成功和失败,以帮助尽可能多的人过渡到一个充满无数好处和机会的职业生涯。亲爱的读者,谢谢你。 -罗伯特。 ...
2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在自定义端口上运行 Sprin...
【图解】记一次手撕算法面试:字节跳动的面试官把我四连击了
字节跳动这家公司,应该是所有秋招的公司中,对算法最重视的一个了,每次面试基本都会让你手撕算法,今天这篇文章就记录下当时被问到的几个算法题,并且每个算法题我都详细着给出了最优解,下面再现当时的面试场景。看完一定让你有所收获 一、小牛试刀:有效括号 大部分情况下,面试官都会问一个不怎么难的问题,不过你千万别太开心,因为这道题往往可以拓展出更多有难度的问题,或者一道题看起来很简单,但是给出最优解,确实很...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻… 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期看完了 Pyt...
杭漂程序员2019的心路历程,还不起助学贷款,交不起房租,披荆斩棘终雨过天晴
一个杭漂2019的心酸历程,一路披荆斩棘终于还是雨过天晴。
我采访了同事,让他掏出了每天都会浏览的干货网站
前言只有光头才能变强。文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y在周六的晚上,我日常去到公司写文章。想写...
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框架实...
相关热词 c# 数组类型 泛型约束 c#的赛狗日程序 c# 传递数组 可变参数 c# 生成存储过程 c# list 补集 c#获得所有窗体 c# 当前秒数转成年月日 c#中的枚举 c# 计算校验和 连续随机数不重复c#
立即提问