Android: 更新线程中的UI

我使用以下代码更新一个seekbar。问题是每当seekBar.setProgress()被调用时,UI上其它元素就被冻结。因此我想用另外一个线程在主线程中来更新 seekBar。

 private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        try {
            int pos;
            switch (msg.what) {
            case SHOW_PROGRESS:
                pos = setProgress();
                if (!mDragging && mBoundService.isPlaying()) {
                    msg = obtainMessage(SHOW_PROGRESS);
                    sendMessageDelayed(msg, 100 - (pos % 1000));
                }
                break;
            }
        } catch (Exception e) {

        }
    }
};

private int setProgress() {
    if (mBoundService == null || mDragging) {
        return 0;
    }
    int position = mBoundService.getCurrentPosition();
    int duration = mBoundService.getDuration();
    if (sliderSeekBar != null) {
        if (duration > 0) {
            // use long to avoid overflow
            long pos = 1000L * position / duration;
            sliderSeekBar.setProgress((int) pos);
        }
    }

    if (sliderTimerStop != null)
        sliderTimerStop.setText(stringForTime(duration));
    if (sliderTimerStart != null)
        sliderTimerStart.setText(stringForTime(position));

    return position;
}

我不明白为什么会出现这样的问题,如何进行?

2个回答

sendMessageDelayed(msg, 100 - (pos % 1000));

更新频率太快,你应该是写错了吧?

sendMessageDelayed(msg, 1000 - (pos % 1000));
hooopo
Hooopo 哈 还真有可能呢
大约 7 年之前 回复

Activities有一个runOnUiThread方法,允许单独的线程来更新UI组件。你的setProgress方法应该这样结束:

private int setProgress() {

    if (mBoundService == null || mDragging) {
        return 0;
    }
    final int position = mBoundService.getCurrentPosition();
    final int duration = mBoundService.getDuration();

    runOnUiThread(new Runnable(){

        @Override
        public void run(){

            if (sliderSeekBar != null) {
                if (duration > 0) {
                    // use long to avoid overflow
                    long pos = 1000L * position / duration;

                    sliderSeekBar.setProgress((int) pos);
                }
            }

            if (sliderTimerStop != null)
                sliderTimerStop.setText(stringForTime(duration));
            if (sliderTimerStart != null)
                sliderTimerStart.setText(stringForTime(position));
        }
    });

    return position;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于android更新ui的问题
为什么setClickable可以 在线程中修改ui而setEnable和setVisibilty不能在线程中使用。
Android线程与ui绘制的问题
当然知道只能在主线程更新UI,不过我有个非常费时的UI绘制操作(就是一堆自定义的view退出时保存在文件里,然后进入时读取文件绘制ui恢复界面,实测短板出现在view的绘制过程) 然后我一开始觉得只要View不添加就只是对象而已,然后尝试新开一个线程把这些控件new出来,然后在主线程addView,结果在我的平板(5.1.1)上完美运行,在手机(4.2.2)上闪退。 继续测试手机,新开一个线程,一个执行一句new一个edittext就崩溃,不过更加奇怪的是换成textview就正常。完全不明就里。 **ps,大家有什么替代方法,也望不吝赐教,感激不尽** 按照大家的提醒贴代码(实际的代码太长不便理解,我就写了一个TextView和EditText的,意思一样,而且方便大家理解。) @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); new Thread(new Runnable() { @Override public void run() { try { new TextView(mActivity); } catch (Exception e) { Log.d("debug", Log.getStackTraceString(e)); return; } Log.d("debug", "成功地new了一个TextView"); try { new EditText(mActivity); } catch (Exception e) { Log.d("debug", Log.getStackTraceString(e)); return; } Log.d("debug", "成功地new了一个EditText"); } }).start(); } 附上Logcat输出: 02-23 03:29:13.144 16364-16440/com.example.multicalc D/debug: 成功地new了一个TextView 02-23 03:29:13.156 16364-16440/com.example.multicalc D/debug: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() at android.os.Handler.<init>(Handler.java:197) at android.os.Handler.<init>(Handler.java:111) at android.widget.Editor$UserDictionaryListener.<init>(Editor.java:3836) at android.widget.Editor.<init>(Editor.java:192) at android.widget.TextView.createEditorIfNeeded(TextView.java:8475) at android.widget.TextView.<init>(TextView.java:1114) at android.widget.EditText.<init>(EditText.java:60) at android.widget.EditText.<init>(EditText.java:56) at android.widget.EditText.<init>(EditText.java:52) at com.example.multicalc.matrix.ui.WorkWindow$1.run(WorkWindow.java:174) at java.lang.Thread.run(Thread.java:856)
Android的UI线程是不断循环的吗?
在主线程进行大量的读写操作时,界面就会卡住,抛出ANR异常,所以我就设想是不是在主线程是不断循环的,当读写操作时,主线程执行不到刷新界面的代码,所以界面就卡住了。我这样的理解有错误吗?
Android 更新UI 耗时问题
假如现在我得到了某个List<String>,里面有1000个字符串,然后我想我在主线程中按下某个Button之后,把它们都动态地加载到UI上来,完全是用代码动态添加的布局,然后执行的时候发现有点耗时。 现在有两个问题: 1.有没有什么机制可以让它加载地更快,因为发现更新UI的语句只能在主线程执行,但是耗时的本身就是这些语句 2.如果一定得耗时,我想在加载的时候显示一个progressDialog,更新UI语句全在主线程一个foreach()循环里,我在foreach前showDialog,在foreach后dismiss,发现似乎是没有效果,网上查到的使用方法都是子线程里发消息通知耗时操作完成了,我这种情况的话应该怎么办
Android在UI线程中启动新线程复制文件,为什么还会使界面延迟
new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub // 把sql文件写入sd卡,然后把路径给so String mPath=""; if(android.os.Environment.getExternalStorageState().equals("mounted")){ mPath = android.os.Environment.getExternalStorageDirectory().toString() + "/com.newhaoli.Teamtips/"; }else{ mPath=android.os.Environment.getDataDirectory().getAbsolutePath()+ "/com.newhaoli.Teamtips/"; } // TODO Auto-generated method stub // 扫描或者复制整个文件夹到sd卡上 copyDir("Query", mPath+"Workflow/"); copyDir("htmlinc", mPath+"Workflow/"); copyDir("Html", mPath+"Workflow/"); } }).start();
在android中把数据从一个线程发送到另一个线程
我在Android UI线程执行一些程序,有一个很耗时的程序,所以我把它放在另一个线程中。 1.在这个子线程运行后,UI线程会开始执行某个程序 2.这个程序将会在子线程中创建一些数据 这是我的解决方案: Car car; public void onResume(){ super.onResume(); Thread t = new Thread(){ car = new Car(); car.takePetrol; //take car full petrol } }); t.join(); count_How_far_Car_can_go(car.getPetrol); 我的代码中的问题是:我使用 t.join(); 等待线程结束,但这将会阻止UI线程。我创建了另外一个线程,就是想让UI线程可以顺利的执行。现在阻止UI线程,我不想在程序中出现这个现象。还有什么解决方法呢?
Android清楚UI线程的队列
使用`runOnUIThread` 方法传递`Runnable` 任务到主线程队列,但是在传递新任务之前要清除以前的队列。怎么实现?
Android UI线程和子线程问题
我有一个循环语句 for(~~~){ send(i); } //剩下的代码 如:adapter = new Adapter(List<String>xx); public void send(){ //开启一个线程 List.add(xx); } PS:我想要在for循环结束以后再执行剩下的代码 我该怎么办?
android 怎么获取子线程中传递的数据
在Thread中改变的值怎么传给UI线程并且赋值给全局变量? 用Handler的话不能将Handler获取到的值赋值给全局变量
Android UI线程 关于AsyncTask的使用问题
![程序段](https://img-ask.csdn.net/upload/201508/20/1440072111_696762.png) 其中32行报“Illegal modifier for the local class DownloadImageTask; only abstract or final is permitted”这个错误,但是我直接从源码复制过来的,并没有修改内部结构,折腾了很久还是这个错误,跪求高手指点!!!!
求指点,Handler更新UI线程问题
public Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { case 0x123: one.setImageResource(imageIds[currentImageId++]); two.setImageResource(imageIds[currentImageId1++]); three.setImageResource(imageIds[currentImageId2++]); four.setImageResource(imageIds[currentImageId3++]); if (currentImageId >= imageIds.length) { currentImageId = 0; } if (currentImageId1 >= imageIds.length) { currentImageId1 = 0; } if (currentImageId2 >= imageIds.length) { currentImageId2 = 0; } if (currentImageId3 >= imageIds.length) { currentImageId3 = 0; } break; default: break; } linearLayout.invalidate(); } }; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.yaobude); initView(); } public void initView() { linearLayout = (LinearLayout)findViewById(R.id.linearlayout); one = (ImageView) findViewById(R.id.one); two = (ImageView) findViewById(R.id.two); three = (ImageView) findViewById(R.id.three); four = (ImageView) findViewById(R.id.four); one.setOnClickListener(this); two.setOnClickListener(this); three.setOnClickListener(this); four.setOnClickListener(this); imageIds = new int[]{ R.drawable.ee1,R.drawable.ee2,R.drawable.ee3,R.drawable.ee4,R.drawable.mmm2,R.drawable.mmm3 }; tt = new TimerTask() { @Override public void run() { // TODO Auto-generated method stub Message msg = new Message(); msg.what = 0x123; System.out.println("----------"+msg.what); mHandler.handleMessage(msg); } }; timer.schedule(tt, 0, period); } 代码如上,为啥还是会报不能更新ui线程的错误呢?求指点 thanks 报错语句:android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
关于android子线程操作UI的问题
看到的所有的资料上都说android的子线程不能操作UI,抱着好奇心我写了下面的程序,竟然运行成功了,不知谁能解释一下这个问题 public class MainActivity extends Activity { Button bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.bt); new Thread(new Runnable() { public void run() { bt.setText("haha"); } }).start(); } }
Android中子线程是否依赖于主线程的存在
本来是以为的,不过百度了一下后,发现主线程结束了,子线程也可以一直运行。但说什么的都有,想来这里问下各位大佬,还有这方面导致内存泄露的知识,有没有大神讲解下,或者发给我个链接我自己看。。。,还有我想了解下守护线程方面的概念,可以简单说下实现步骤吗?![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/2.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/2.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/2.gif)
Android工程导入Eclipse运行问题
当我将Android studio中的文件导入到Eclipse中时,原本在Android studio中运行在真机上会加载网络图片,可是导入到Eclipse中却载入不了网络图片,而且进度条的样式也改变了。 MainAcitivity.java文件如下: package com.example.imagedemo; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.ProgressBar; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class MainActivity extends Activity implements View.OnClickListener { private static final String[] params={ "http://p0.so.qhimg.com/bdr/_240_/t013971ecacef25bf25.jpg", "http://p4.so.qhimg.com/t018349127914f495ce.jpg" }; private Button btnFirst; private ProgressBar progress; private Bitmap bitmap=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnFirst = (Button) findViewById(R.id.btnFirst); progress = (ProgressBar) findViewById(R.id.progress); btnFirst.setOnClickListener(this); } @Override public void onClick(View v) { progress.setVisibility(View.VISIBLE); progress.setMax(100); MyASyncTask task = new MyASyncTask(); task.execute(params); } public class MyASyncTask extends AsyncTask<String, Integer, Bitmap> { protected Bitmap doInBackground(String... params) { int read; byte[] chars = new byte[1024]; Bitmap bitmap=null; InputStream inputStream = null; try { URL url = new URL(params[0]); HttpURLConnection con=(HttpURLConnection) url.openConnection(); con.setDoInput(true);//如果不设置的话,默认是true,它的意思是如果需要读取url上网络的数据时,必须要设置成true con.connect(); inputStream=con.getInputStream();//先要获取目标URL的地址的输入流 bitmap= BitmapFactory.decodeStream(inputStream);//通过BitmapFactory的decodeStream方法解析输入流 while((read=inputStream.read(chars))!=-1) { read+=chars.length; publishProgress(read); try { Thread.sleep(1300); } catch (InterruptedException e) { e.printStackTrace(); } } inputStream.close(); } catch (MalformedURLException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } return bitmap; } @Override protected void onProgressUpdate(Integer... values) { //当publichProcess被调用以后,UI线程将调用这个有方法在界面上展示任务的情况,比如一个额进度条。这里是更新进度条 int value=values[0]; progress.setVisibility(View.VISIBLE); progress.setBackgroundColor(Color.YELLOW); progress.setProgress(value); super.onProgressUpdate(values); } /*在 onPostExecute(Result) 中是请求获得结果后更新UI部分。你会看到他的参数就是我们类中的类型参数。代码如下*/ protected void onPostExecute(Bitmap Result){ ImageView imgView = (ImageView)findViewById(R.id.image);; imgView.setImageBitmap(Result); progress.setVisibility(View.VISIBLE); /*不显示进度条,当图片加载进来后,立马就占了进度条的位置*/ btnFirst.setText("图片下载完毕"); } } } 布局文件如下: <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:orientation="vertical"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btnFirst" android:text="开始下载"/> <ProgressBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/progress" android:visibility="invisible" android:max="100" style="?android:attr/progressBarStyleHorizontal"/> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/image" /> </LinearLayout> ``` ```
Android UI耗时问题处理
问题描述:UI中btn的一个响应有耗时操作,另起线程来执行,UI依然有卡顿 代码描述如下: public class MyActivity extends Activity { Button btnSend; protected void onCreate(Bundle savedInstanceState) { ..... btnSend=(Button) findViewById(R.id.btn_send); btnSend.setOnclickListener(mListener); } OnClickListener mListener=new new View.OnClickListener() { @Override public void onClick(View v) { new Thread(sendable).start(); } } Runnable sendable = new Runnable() { @Override public void run() { String data="data"; sendRemote(data); } } /***因为具体的发送方法在服务里,所以此处传递消息给 ****服务处理,发送函数是一个耗时操作,发送之后等待回复或等至超时***/ private void sendRemote(String strData){ Intent iSend=new Intent("send"); iSend.putExtra("data", msg); startService(iSend); } } 在这种情况下会有一个明显的卡顿,我的疑问是: 1、另起线程并没有完全将耗时程序从UI中剥离开来吗? 2、即使未剥离开,UI线程启动服务的操作也要一直等到 服务按要求启动并执行相应的步骤(此处为发送信息)之后才算完成吗?要不然也不应该卡顿啊 求高手指点,谢谢
Android使用HttpURLConnection简单的获取百度的首页源码失败?
就是想很简单的获取百度的源码,开了一个子线程,却不知到为什么一直获取失败。求高手告之原因。 代码: ``` public class MainActivity extends Activity implements View.OnClickListener { public static final int SHOW_RESPONSE = 0; private Button sendRequest; private TextView responseText; private Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case SHOW_RESPONSE: String response = (String) msg.obj; // 在这里进行UI操作,将结果显示到界面上 responseText.setText(response); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.web_layout); sendRequest = (Button) findViewById(R.id.send_request); responseText = (TextView) findViewById(R.id.response_text); sendRequest.setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId() == R.id.send_request) { sendRequestWithHttpURLConnection(); } } private void sendRequestWithHttpURLConnection() { // 开启线程来发起网络请求 new Thread(new Runnable() { @Override public void run() { HttpURLConnection connection = null; try { URL url = new URL("http://www.baidu.com/"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(8000); connection.setReadTimeout(8000); connection.setDoInput(true); connection.setDoOutput(true); if(connection.getResponseCode()!=200) { Log.d("haha", "code is "+connection.getResponseCode()); } InputStream in = connection.getInputStream(); // 下面对获取到的输入流进行读取 BufferedReader reader = new BufferedReader( new InputStreamReader(in)); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } Message message = new Message(); message.what = SHOW_RESPONSE; // 将服务器返回的结果存放到Message中 message.obj = response.toString(); handler.sendMessage(message); } catch (Exception e) { e.printStackTrace(); } finally { if (connection != null) { connection.disconnect(); } } } }).start(); } } ``` 布局代码: ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/send_request" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Send Request" /> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/response_text" android:layout_width="match_parent" android:layout_height="wrap_content" /> </ScrollView> </LinearLayout> ```
从 Javascript 中调用 Android 方法
我在 android 的 webview 中使用 geo-location 特征。使用 javascript (onload) 来调用Android 方法: public void getLocation() { _context.getLocation(); } 当程序执行到以下的位置时: public void locationUpdated(Location location) { NumberFormat frm = NumberFormat.getNumberInstance(new Locale("en_US")); // call javascript function webView.loadUrl("javascript:locationChangedHandler(" + frm.format (location.getLatitude()) + "," + frm.format(location.getLongitude()) + ")"); } 获得以下的异常: 03-10 01:17:06.262: ERROR/AndroidRuntime(659): FATAL EXCEPTION: Timer-1 android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. at android.view.ViewRoot.checkThread(ViewRoot.java:2802) at android.view.ViewRoot.invalidateChild(ViewRoot.java:607) at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:633) at android.view.ViewGroup.invalidateChild(ViewGroup.java:2505) at android.view.View.invalidate(View.java:5139) at android.view.View.onFocusChanged(View.java:2664) at android.widget.TextView.onFocusChanged(TextView.java:6469) at android.widget.AutoCompleteTextView.onFocusChanged(AutoCompleteTextView.java:1048) at android.webkit.WebTextView.onFocusChanged(WebTextView.java:357) at android.view.View.clearFocusForRemoval(View.java:2577) at android.view.ViewGroup.removeViewInternal(ViewGroup.java:2188) at android.view.ViewGroup.removeViewInternal(ViewGroup.java:2181) at android.view.ViewGroup.removeView(ViewGroup.java:2129) at android.webkit.WebTextView.remove(WebTextView.java:583) at android.webkit.WebView.clearTextEntry(WebView.java:1830) at android.webkit.WebView.loadUrl(WebView.java:1542) at android.webkit.WebView.loadUrl(WebView.java:1553) at com.binus.MainView$1.gotLocation(MainView.java:33) at com.binus.GeoLocation$GetLastLocation.run(GeoLocation.java:88) at java.util.Timer$TimerImpl.run(Timer.java:289) 有什么方法可以从其它线程中访问UI线程?使用非UI线程上执行的 javascript (onload) 来调用Android方法吗? 如何使我的代码线程安全?
android 如何实现单线程异步操作(类似windows那样的)
本身游戏有个主线程逻辑 我使用了handler 以及 AsyncTask 但是因为这两个其实是多线程的异步操作,android有没有单线程下的异步操作?比如联网的时候等候时间较长 导致无法响应UI线程的按键操作等- -!
android 线程问题 关于handler.post
程序段 为(在activity oncreat方法中): System.out.println("aa"); Runnable r=new Runnable() { @Override public void run() { System.out.println("bb"); } }; Handler handler =new Handler(); handler.post(r); System.out.println("cc"); 问题: 为什么执行结果为 aa cc bb 而不是 aa bb cc runnable对象不是运行在ui线程的吗
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问