当我在1秒钟内从GCM收到大量推送消息(假设为50)时,我收到以下异常:
java.lang.IllegalStateException:适配器的内容已更改,但ListView未收到通知.确保不从后台线程修改适配器的内容,而只是从UI线程修改.[在ListView(2131427434,类android.widget.ListView)中使用Adapter(类an)]在android.widget.List.layoutChildren(ListView.java:1544)在android.widget.AbsListView.onLayout(AbsListView.java:2045)在Android.widget上的android.view.View.layout(View.java:14255)android.view.Linout.setChildFrame(LinearLayout.java:1670)的android.view.ViewGroup.layout(ViewGroup.java:4413). LinearLayout.layoutVertical(LinearLayout.java:1528)位于android.view.View. Layout(View.java:14255)的android.view.Linout.onLayout(LinearLayout.java:1441)android.view.ViewGroup.layout(ViewGroup) .java:4413)在Android.view.ViewGroup.layout(ViewGroup.java:4413)android.view.View.layout(View.java:14255)的android.support.v4.view.ViewPager.onLayout(未知来源)在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1670)的android.widget.LinearLayout.layoutVertical(LinearLayout.java:1528)android.widget.LinearLayout.onLayout(LinearLayout.java:1441)android.view .View.layout(VIE w.java:14255)在android.view.View.lay(View.java:的android.sview.v4上,android.view.vout.Douter.onLayout(未知来源)的android.view.ViewGroup.layout(ViewGroup.java:4413) 14255)在android.view.Loutout(MapLayout.java:446)的android.view.View.Loutout(View.java:1425)android的Android.view.View.Loutout(FrameLayout.java:446)的android.view.ViewGroup.layout(ViewGroup.java:4413).在android.view上的android.view.View.layout(View.java:14255)的android.support.v7.internal.widget.ActionBarOverlayLayout.onLayout(未知来源)中查看.ViewGroup.layout(ViewGroup.java:4413).位于android.view.View.Loutout(ViewLayout.java:446)的android.view.Loutout(ViewLayout.java:446)处于android.view.View.layout(View.java:14255)处的ViewGroup.layout(ViewGroup.java:4413) .java:4413)在Android.widget.LinearLayout.ayLayout(LinearLayout.java:1441)上的android.widget.LinearLayout.setChildFrame(LinearLayout.java:1670)android.widget.LinearLayout.layoutVertical(LinearLayout.java:1528)在android.vi上的android.view.View.layout(View.java:14255)ew.ViewGroup.layout(ViewGroup.java:4413)位于android.view.View.Viewout.Loutout(ViewLayout.java:446),位于android.view.View.layout(View.java:14255),位于android.view.ViewGroup.layout (ViewGroup.java:4413)在Android.view.ViewRootImpl.exeTraversals(ViewRootImpl.java:1812)的android.view.ViewRootImpl.exeTransals(ViewRootImpl.java:1899)上的android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1998)(ViewRootImpl.java: 1050)在Android.view.ChoreIs上的android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:4560),在android.view.Choreographer.doCallbacks(Choreographer.java:562)的android.view.Choreographer $ CallbackRecord.run(Choreographer.java:749) )在Android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:735)的android.view.Horeler.handleCallback(Handler.java:725)android.view.Choreographer.doFrame(Choreographer.java:532)位于android.app.Looper.loop(Looper.java:137)的.os.Handler.dispatchMessage(Handler.java:92)位于java.lang.reflect的android.app.ActivityThread.main(ActivityThread.java:5171).中号 在com.android的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:797)的java.lang.reflect.Method.invoke(Method.java:511)中的ethod.invokeNative(Native Method).在dalvik.system.NativeStart.main(Native方法)的internal.os.ZygoteInit.main(ZygoteInit.java:564)
我已经尝试解决这个问题,通过把两个messages.add()和notifyDataSetChanged()里面的runOnUIThread.我想这onUpdate()是因为每个推送消息都会调用我的监听器.但不应该解决这个问题runOnUIThread(),因为一切都是连续执行的?
MainApplication app = (MainApplication) context.getApplicationContext();
app.setOnRoomMessageUpdateListener(new OnRoomMessageUpdateListener() {
@Override
public void onUpdate() {
// save message with highest time, so we can only query the new
// messages
long highestTime = getHighestMessageTime();
messageDatabase.getConditionBuilder().add(
DatabaseHelper.KEY_MESSAGE_ROOM_ID + " = ? AND " + DatabaseHelper.KEY_MESSAGE_LOCAL_TIME
+ " > ? AND …Run Code Online (Sandbox Code Playgroud) 在我的适配器中使用动画时遇到问题.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(resource, parent, false);
holder = new ViewHolder();
holder.newRoomView = (TextView) convertView.findViewById(R.id.newRoom);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Room item = items.get(position);
// animate new rooms
if (item.isNewRoom()) {
AlphaAnimation alphaAnim = new AlphaAnimation(1.0f, 0.0f);
alphaAnim.setDuration(1500);
alphaAnim.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
holder.newRoomView.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationRepeat(Animation …Run Code Online (Sandbox Code Playgroud) 码:
var storage = require('@google-cloud/storage');
var gcs = storage({
projectId: config.google.projectId,
keyFilename: config.google.keyFilenameFirebase
});
var bucket = gcs.bucket('project-id.appspot.com');
var destination = 'uploads/12345/full.jpg';
bucket.upload(myFile, { public: true, destination: destination }, function(err, file) {
if (err) {
console.log(err);
}
});
Run Code Online (Sandbox Code Playgroud)
我的文件已成功上传到我的firebase存储,但是:
public: true 似乎打破了Firebase存储UI:
未显示右侧图像的预览,我无法通过下载按钮下载图像.此外,没有下载网址(我不介意,因为我可以通过上面的链接访问它)和点击"创建新的下载URL"Firebase产量
生成下载URL时出错
删除public: true预览时显示正确,我也可以生成下载URL.但公共网址 https://storage.googleapis.com/project-id.appspot.com/uploads/12345/full.jpg将不再适用,这对我来说是必要的.
所以我的计划是坚持public: true,但它仍然让我感到困惑,预览/下载按钮不起作用,它看起来像Firebase中的一个错误.任何人都可以证实吗?
Minify对我来说很好,但在更改其中一个源文件后,我会收到一个白色的空白页面.刷新页面不会改变任何内容.没有缓存的刷新(Strg + F5)解决了这个问题.在没有缓存的一次刷新之后,我可以通过缓存重新刷新并且它可以工作.
URL im调用如下所示:
开发/分钟/ min.php/JS?类型= JS&SRC%5B0%5D = ewOutlibs%2Fjquery.min.js&SRC%5B1%5D = ewOutlibs%2Fcookie%2Fjquery.cookie.js
min.php
<?php
define('MINIFY_MIN_DIR', dirname(__FILE__));
// load config
require MINIFY_MIN_DIR . '/config.php';
// autoload
require $min_libPath . "/Minify/Loader.php";
Minify_Loader::register();
// caching
Minify::setCache(
isset($min_cachePath) ? $min_cachePath : ''
,$min_cacheFileLocking
);
// get files to merge
$aSrc = $_GET['src'];
// replace shortened url with long url
if (isset($_GET['type']) && $_GET['type'] === 'js') {
$aSrc = str_replace('ewOut', '//out/xxx/src/js/', $aSrc);
}
// build array
$aSources = array(
'files' => $aSrc,
'maxAge' => …Run Code Online (Sandbox Code Playgroud) 运行后创建应用程序做出反应的npm run build,所创建的index.html这个样子的:
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>React App</title><link rel="shortcut icon" href="/favicon.ico"><link href="/main.e606e04b6e0092a87205a9dc4662479c.css" rel="stylesheet"></head><body><div id="root"></div><script type="text/javascript" src="/main.35180d284d8a2058f717.js"></script></body></html>
Run Code Online (Sandbox Code Playgroud)
两者script和link src/ - href属性都指向了错误的方向./应删除前导,因为所有生成的文件都在同一目录中.这是一个错误还是我能以某种方式配置这些路径?
搜索函数ro将数字舍入到最接近的5的倍数
22 -> 20
23 -> 25
40 -> 40
46 -> 45
48 -> 50
Run Code Online (Sandbox Code Playgroud)
等等.
试过这总是返回更高的价值:
5 * ceil($n / 5);
Run Code Online (Sandbox Code Playgroud) 我正在运行带有express的Node.js应用程序,并希望开始提高其性能.定义了几条路线.我们有一个基本的例子:
app.get('/users', function (req, res) {
User.find({}).exec(function(err, users) {
res.json(users);
}
});
Run Code Online (Sandbox Code Playgroud)
假设我们有3个客户端A,B和C,他们试图使用这条路线.他们的请求以A,B,C的顺序到达服务器,两者之间有1毫秒的差异.
1.如果我正确理解了node.js架构,那么每个请求都会被立即处理,因为它Users.find()是异步的并且有非阻塞代码?
让我们用同步调用展开这个例子:
app.get('/users', function (req, res) {
var parameters = getUserParameters();
User.find({parameters}).exec(function(err, users) {
res.json(users);
}
});
Run Code Online (Sandbox Code Playgroud)
相同的请求,相同的订单.getUserParameters()完成需要50毫秒.
2. A将进入路由回调函数并阻塞node.js线程50毫秒.B和C将无法进入该功能并且必须等待.当A完成时getUsersParameters(),它将继续异步User.find()功能,B现在将进入路由回调函数.C仍然需要等待50多毫秒.当B进入异步功能时,可以最终处理C的请求.合在一起:C必须等待50毫秒才能完成A,50毫秒需要B完成,50毫秒才能完成(为简单起见,我们忽略了异步功能的等待时间)?
现在假设我们还有一个路由,只有管理员可以访问,并且每分钟都会通过crontab调用.
app.get('/users', function (req, res) {
User.find({}).exec(function(err, users) {
res.json(users);
}
});
app.get('/admin-route', function (req, res) {
blockingFunction(); // this function takes 2 seconds to complete
});
Run Code Online (Sandbox Code Playgroud)
3.当请求X命中admin-route并被blockingFunction()调用时,A,B和C将/users在X的请求之后立即呼叫,必须等待2秒,直到它们甚至进入路由回调函数?
4.我们是否应该将每个自定义函数(即使只需要4毫秒)作为具有回调的异步函数?
我正在构建一个简单的REST-API,它有一个端点,它将被大量渗透.我们称之为POST /message.我必须决定使用Node还是PHP.数据库是MySQL.
在此路由中发生的事情: - 通过HTTP-Auth的凭据将通过从数据库中读取来检查. - 请求另一个REST-API. - 将执行另一个写入数据库操作.
因此,有2个数据库连接和另一个REST-API的http请求.路线应该都是关于速度的.我会选择PHP,因为当前的系统基于PHP,但是路由中的请求让我感到害怕,因为在使用PHP时它不是异步的.我不关心这个请求的结果,在节点中我可以只检查凭据并返回success,异步发送请求并在请求返回后执行数据库写入性能.我不认为我可以在PHP中这样做,因为当我返回REST调用时success,一切都必须在之前完成,对吧?
去PHP还是节点?
登录正在运行,但它只询问基本权限,并且在取消或完成对话时没有触发警报.
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : 'XXX', // App ID from the App Dashboard
channelUrl : 'XXX', // Channel File for x-domain communication
cookie : true, // set sessions cookies to allow your server to access the session?
xfbml : true, // parse XFBML tags on this page?
frictionlessRequests: true,
oauth: true
});
FB.login(function(response) {
if (response.authResponse) {
alert("ok");
} else {
alert("canceled");
}
}, {scope:'publish_actions,publish_stream'});
};
Run Code Online (Sandbox Code Playgroud) 我有RelativeLayout三个观点.两者都TextViews应该在右侧,ImageView而秒应该在第一个之下TextView.
码:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#bdbdbd"
android:paddingBottom="15dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="15dp" >
<ImageView
android:id="@+id/avatar"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_centerVertical="true"
android:src="@drawable/default_avatar" />
<TextView
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/avatar"
android:text="Chris"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/university"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/username"
android:layout_toRightOf="@id/avatar"
android:text="Oxford"
android:textSize="13sp" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
结果: 
android:layout_centerVertical="true"从第一个TextView中删除后,一切都按预期工作(除了它不垂直).

为什么这样,我怎样才能使第一个TextView垂直居中?