是否可以让某个范围内的所有非空单元格显示符号而不是它们的值+,但同时在公式中会使用单元格的真实值?
Evgeniy's questions
假设有一个矩阵
vector< vector<int> > a = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 42}
};
我可以很容易地得到这个矩阵的行向量,例如a[1]将返回一个包含{5, 6, 7, 8}.
有没有办法也可以获取矩阵的列向量?也就是例如通过索引,2得到一个包含 的向量{3, 7, 11}。
有一种这种类型的服务,每次打开应用程序时都会启动:
public class SomeService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(new Runnable() {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// Что-то происходит
}
}
}).start();
return super.onStartCommand(intent, flags, startId);
}
}
问题是,如果你先启动应用程序,然后最小化/关闭(服务继续工作)然后重新打开,服务将启动,但已经有两个正在运行onStartCommand。
您如何确保此流始终只是一个水实例?
如果活动正在运行,我如何从服务中找出并根据此显示/不显示通知?
你好。我有一个包含LinearLayout和FrameLayout另一个的标记LinearLayout:
LinearLayout
| ....
| FrameLayout
| | ...
| | LinearLayout
| | | Button
我在按钮上挂了一个监听器,我启动它 - 按钮没有响应按下。删除了他们的按钮LinearLayout- 一切正常:
LinearLayout
| ....
| FrameLayout
| | Button
| | LinearLayout
| | |
标记本身:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<include android:id="@+id/toolbar"
layout="@layout/toolbar" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:orientation="horizontal">
<EditText
android:id="@+id/etNewChat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/button_new_chat_background"
android:ems="10"
android:inputType="phone"
android:textSize="18sp"
android:visibility="gone" />
<Button
android:id="@+id/btNewChat"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginBottom="20dp"
android:layout_marginEnd="20dp"
android:layout_weight="1"
android:background="@drawable/button_new_chat_background"
android:gravity="center"
android:text="+"
android:textColor="@android:color/white"
android:textSize="24sp" />
</LinearLayout>
<ListView
android:id="@+id/contactsList"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
需要做什么才能在里面按下按钮LinearLayout?
可以转移到ObjectOutpurStream ArrayList吗?如果是这样,那么如何正确阅读它ObjectInputStream呢?
该类InetAddress有一个方法将包含orgetByAddress的字节数组作为输入。但在Java中,最大值为- ,即有些地址不能转,比如到IPv4IPv6byte128
InetAddress host = InetAddress.getByAddress(new byte[]{192, 168, 0, 1});
会发誓,因为192和168不在价值观范围内byte。
也就是原来并不是所有的地址都可以转移?还是我误会了什么?
我有两个功能,encrypt和decrypt。在encrypt我创建一个密钥,加密一个字符串,并将密钥本身添加到字符串的开头。首先,我从加密字符串中分离出decrypt密钥(密钥大小是固定的)并尝试解密,但结果与初始字符串不匹配,这就是问题所在。
检查调试,在两个函数中key调用时数组是相同decrypt(encrypt(string))的,显然问题出在SecretKeySpec(恕我直言)。
我该如何解决?
代码本身:
static String encrypt(String str) {
SecretKeySpec sks = null;
byte[] key = null;
try {
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed("this is seed".getBytes());
KeyGenerator kg = KeyGenerator.getInstance("AES");
kg.init(128, sr);
key = kg.generateKey().getEncoded();
sks = new SecretKeySpec(key, "AES");
} catch (Exception e) {
Log.e("Crypto", "AES secret key spec error");
}
// Encode the original data with AES
byte[] encodedBytes = null;
try {
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE, sks);
encodedBytes = c.doFinal(str.getBytes());
} catch (Exception e) {
Log.e("Crypto", "AES encryption error");
}
return Base64.encodeToString(key, Base64.DEFAULT) +
Base64.encodeToString(encodedBytes, Base64.DEFAULT);
}
static String decrypt(String str) {
byte[] key = Base64.decode(str.substring(0, 25), Base64.DEFAULT);
byte[] strBytes =
Base64.decode(str.substring(25, str.length()), Base64.DEFAULT);
SecretKeySpec sks = new SecretKeySpec(key, "AES");
// Decode the encoded data with AES
byte[] decodedBytes = null;
try {
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.DECRYPT_MODE, sks);
decodedBytes = c.doFinal(strBytes);
} catch (Exception e) {
Log.e("Crypto", "AES decryption error");
}
return Base64.encodeToString(decodedBytes, Base64.DEFAULT);
}
UPD调用方法:
editText.setText(Crypt.encrypt(editText.getText().toString()));
...
editText.setText(Crypt.decrypt(editText.getText().toString()));
有以下测试:
@Test(timeout = 15)
public void test() throws Exception {
AesCrypt aes = new AesCrypt("password");
String crypted = aes.encrypt("Test string");
Assert.assertEquals("Test string", aes.decrypt(crypted));
}
理论上,执行时间超过15ms应该会失败。同时,如您在屏幕截图中所见,测试运行了 23 毫秒,但仍被视为通过。
为什么这样?

我在 Internet 上阅读了有关为应用程序创建激活设置的信息。在我找到的所有文章中,都使用了该方法addPreferencesFromResource():
public class PrefActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences)
}
}
但事实证明,这种方法已被弃用,这就提出了一个问题:API 版本 25 中的设置激活是如何创建的?
UPD:我做了@Regent 给出的答案中所写的一切,但是当我尝试启动设置 akivity 时,应用程序关闭,弹出“应用程序停止”窗口。PrefFragment.java:
package com.evgeniy.calc;
import android.os.Bundle;
import android.preference.PreferenceFragment;
public class PrefFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
PrefActivity.java:
package com.evgeniy.calc;
import android.preference.PreferenceActivity;
import java.util.List;
public class PrefActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preferences, target);
}
@Override
protected boolean isValidFragment(String fragmentName) {
return PrefFragment.class.getName().equals(fragmentName);
}
}
在 MainActivity.java 中调用设置活动:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
startActivity(new Intent(this, PrefActivity.class));
return true;
case R.id.action_about:
startActivity(new Intent(this, AboutActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
目前,代码长度为 127 个字符,没有空格、制表符和换行符。任务是将代码的长度减少到至少 125 个字符,以便它可以被编译器版本 c++ 5.0.1 编译。
#include <iostream>
main() {
int64_t i=-100,a,b,c,d;
std::cin>>a>>b>>c>>d;
for(; i<101; i++)
if(a*i*i*i+b*i*i+c*i+d == 0) std::cout<<i<<" ";
}
这个问题可以分为两点:
是否有一种方法可以
true在字符串/TextView 中出现字符时返回,false否则返回?如果不是,如果不创建单独的方法,你怎么能检查这个条件,因为恕我直言,创建一个将被调用一次的方法在美学上不是很令人愉悦。
有一段代码:
String[] del = {"\"", "\'", ",", ".", ";", "`", ":", "!", "(", ")", "<", ">", "-", "_"};
for (String delElement : del) {
word = word.replaceAll(delElement, "");
}
在编译期间抛出 PatternSyntaxException:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed group near index 1
(
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.accept(Pattern.java:1813)
at java.util.regex.Pattern.group0(Pattern.java:2908)
at java.util.regex.Pattern.sequence(Pattern.java:2051)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at java.lang.String.replaceAll(String.java:2223)
at WordCounter.main(WordCounter.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
我该如何解决?
有以下一段代码:
OutputStream outputStream = null;
try {
outputStream = new BufferedOutputStream(new FileOutputStream(fileName));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
assert outputStream != null;
assert text != null;
outputStream.write(text.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
问题是执行后,文件内容被删除,text.getBytes()显示在控制台。
如何纠正?