再次体会到全栈开发的威力!其效率绝对大于纯前端+纯后端。因为可以从更高的维度来思考问题,看问题也更加全面和透彻。
继上次优化微信H5的前端js和css加载速度后,仍有一些用户反馈加载速度慢的情况。这次通过server端来进行gzip压缩和处理。效果非常显著。
我们微信服务器的后端server用的Nginx做反向代理,如下是具体的gzip配置和分析。
继续阅读“微信公众号上运行的前端代码精简压缩,优化加载速度,提升用户体验——gzip大法”
no Pain no Gain no Gavin
再次体会到全栈开发的威力!其效率绝对大于纯前端+纯后端。因为可以从更高的维度来思考问题,看问题也更加全面和透彻。
继上次优化微信H5的前端js和css加载速度后,仍有一些用户反馈加载速度慢的情况。这次通过server端来进行gzip压缩和处理。效果非常显著。
我们微信服务器的后端server用的Nginx做反向代理,如下是具体的gzip配置和分析。
继续阅读“微信公众号上运行的前端代码精简压缩,优化加载速度,提升用户体验——gzip大法”
这是一种可以创建多线程消息的函数
使用方法:
1. 首先创建一个Handler对象
Handler handler=new Handler();
2. 然后创建一个Runnable对象
Runnable runnable=new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
//要做的事情,这里再次调用此Runnable对象,以实现每两秒实现一次的定时器操作
handler.postDelayed(this, 2000);
}
};
3. 使用PostDelayed方法,两秒后调用此Runnable对象
handler.postDelayed(runnable, 2000);
实际上也就实现了一个2s的一个定时器
4. 如果想要关闭此定时器,可以这样操作
handler.removeCallbacks(runnable);
当然,你也可以做一个闹钟提醒延时的函数试试,比如,先用MediaPlayer播放闹钟声音,
如果不想起,被停止播放之后,下次就5分钟后再播放,再被停止的话,下次就4分钟后播放,
………………
只要更改延时的时间就可以实现了,用一个static对象的话会比较容易操作。
是可以异步效果,但Runnable的执行是在Handler对象所在的线程
如果其所在的线程是UI线程的话,Runnable中还是不能执行耗时操作,不然会ANR
前几天我们自己的设备很卡,卡到跳转界面都需要不到1秒的时间,我就把跳转的动作放在Runnable里边,外边加上弹出进度提示框
注:举例说明
public class XXX extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.loading); // 显示第1屏 Handler handler = new Handler(); handler.postDelayed(new splashhandler(), 2000); // 延迟2秒,再运行splashhandler的run() } class splashhandler implements Runnable { public void run() { startActivity(new Intent(getApplication(), SecondActivity.class)); // 显示第2屏 XXX.this.finish(); // 结束第1屏 } } }
在帮TextView控件设置大小的时候,发现和在XML中用PX设置的不一样,原因是setTextSize()默认的单位是sp,可以用另一个设置字体大小的方法:
setTextSize(int unit, int size)
第一个参数可设置如下静态变量:
TypedValue.COMPLEX_UNIT_PX : Pixels
TypedValue.COMPLEX_UNIT_SP : Scaled Pixels
TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels
收到阿里云短信,提示server被搞成“挖坑机”的肉鸡了。
一、排除过程
1. top c 命令发现如下进程CPU占用率100%(恢复快照后,第二次CPU占用率50%)
/usr/sbin/bashd -a cryptonight -o stratum+tcp://get.bi-chi.com:3333 -u 47EAoaBc5TWDZKVaAYvQ7Y4ZfoJMFathAR882gabJ43wHEfxEp81vfJ3J3j6FQGJxJNQTAwvmJYS2Ei8dbkKcwfPFst8FhG -p x
方法1:footer高度固定+绝对定位
<style> html{height:100%;} body{min-height:100%;margin:0;padding:0;position:relative;} header{background-color: #ffe4c4;} main{padding-bottom:100px;background-color: #bdb76b;}/* main的padding-bottom值要等于或大于footer的height值 */ footer{position:absolute;bottom:0;width:100%;height:100px;background-color: #ffc0cb;} </style> <body> <header>header</header> <main>content</main> <footer>footer</footer> </body>