我有一个问题,并希望有人可以帮助我.
我的问题是每当我在"MainFile"中运行代码时,它会输出它添加了条目的两个ID,但是当我查看我的数据库时,我有六个条目而不是两个...有人可以告诉我为什么它可能会这样做?
注意:我只提供了类中代码的片段,因为提供完整的类将是太多的代码.这是唯一可以执行的代码.
编辑史上的代码
编辑:我已经在这篇文章的底部添加了一个调试日志,验证我只为每个查询执行一次SQL代码.
编辑:我不再使用序列化方法,因为存储此类数据显然不是一个好主意.但是,即使我的新代码将每个单独的值存储在数据库中,我仍然会得到三个条目而不是一个条目.所以,这是同一个问题.什么?
编辑:经过几天的调试后,我已将其缩小到导致问题的这一行
Throwlite::$systemSQL->executeSql("INSERT into ".SQL_COMMENTTHREADS_TABLE." (id, sort_order) values (DEFAULT, '2')");
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看LiteSQL类以供参考:http://pastebin.com/a4C6fF4u
另外,作为参考,以下是用于创建表的代码:
"CREATE TABLE IF NOT EXISTS `" . SQL_COMMENTTHREADS_TABLE . "` (`id` int unsigned NOT NULL AUTO_INCREMENT, `sort_order` int NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;"
Run Code Online (Sandbox Code Playgroud)
而且,即使我非常确定它应该没关系,这里是定义SQL_COMMENTTHREADS_TABLE的地方.
define( 'SQL_COMMENTTHREADS_TABLE', "tl_comment_threads");
Run Code Online (Sandbox Code Playgroud) 我正在编写VPN应用程序,用于VPN连接的套接字是在我的本机C代码中处理的,而不是在java中处理的.我如何VpnService.protect()
在该套接字上使用?我注意到它有一个VpnService.protect(int)
重载,我可以socket
返回从本机代码返回到Java 的int 并以这种方式保护它吗?
例
// Native Code
int socket;
JNIEXPORT jint JNICALL
Java_com_my_package_Class_initializeSocket
(
JNIEnv *env,
jobject jobj
) {
socket = socket(AF_INET, SOCK_DGRAM, 0);
// . . . Handler other socket preparations
return (jint)socket;
}
Run Code Online (Sandbox Code Playgroud)
// Java Code
public native int initializeSocket();
. . .
int socket = initializeSocket();
this.protect(socket);
Run Code Online (Sandbox Code Playgroud)
编辑
我确实找到了这个描述protect
函数如何工作的问题,看起来它可能在C中有一个非常简单的实现,因为它似乎只是使用了一个setsockopt
调用.但我对C也比较陌生,所以我不能完全遵循如何复制它.
Android TileService文档声明如下:
磁贴何时应该是最新的并且列表将由 onStartListening() 和 onStopListening() 指示。
根据 TileService 的生命周期,您应该在onStartListening()
调用时开始更新图块状态。
问题是,当图块进入用户视图时,似乎并没有立即调用此回调。这意味着在视图正确更新之前,它有时可能会显示过时的信息几秒钟。
例如,服务已连接,磁贴将其显示为已连接。然后,我切换到应用程序,关闭服务,然后重新打开“快速设置”视图。它仍然显示该服务已连接很长时间。
理论上,磁贴进入视图的那一刻,它应该已使用新数据进行更新并将其显示为未连接。
我通过简单地添加一条日志消息作为视图中的第一个条目来确认这种情况。当我将图块带入用户视图时,该日志消息在 4-5 秒的时间内不会写入 log cat。
发生什么了?我错过了什么吗?
我的代码
@Override
public void onStartListening() {
android.util.Log.d("Test", "onStartListening called");
updateTileDisplay();
registerDelegate();
}
Run Code Online (Sandbox Code Playgroud)
该updateTileDisplay();
功能正在更新图块的标题、状态和图标。一旦完成,它就会按tile.updateTile();
应有的方式进行调用。此外,该registerDelegate();
函数正在注册一个委托,该委托将侦听内部状态更改并相应地更新图块。onStopListening()
该委托稍后在被调用时被删除。
onStartListening called
直到我将图块放入视图后 5 秒以上,我才看到该日志消息。这似乎与 TileService 文档不一致。
我正在尝试使用Java生成特定的计算机ID.我已经考虑过像硬盘驱动器序列,或Windows串行密钥,CPU ID或MAC地址这样的东西,但其他计算机也可能有相同的东西.例如,如果某人盗版了Windows 7的副本,他们就可能拥有相同的序列号作为某人..我想知道是否有人可以给我一种方法来生成一个永远不会改变并可使用Java检索的计算机特定ID?
我做了一些研究,发现了一些有用的功能.而且,我在想这样的事情.但如果他们更改了硬件,它将更改计算机ID.有人知道我可以用的东西吗?
public String getComputerID(){
InetAddress ip = InetAddress.getLocalHost();
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte[] mac = network.getHardwareAddress();
String sn = getSerialNumber("C");
String cpuId = getMotherboardSN();
return MD5(mac + sn + cpuId);
}
public String MD5(String md5) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
byte[] array = md.digest(md5.getBytes());
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
}
return sb.toString();
} catch (java.security.NoSuchAlgorithmException e) {
}
return null; …
Run Code Online (Sandbox Code Playgroud) 所以,我有一个问题.我从Logger中捕获了一些东西,输出看起来像这样:
11:41:19 [INFO] ?[35;1m[Server] hi?[m
Run Code Online (Sandbox Code Playgroud)
我需要知道如何删除那些讨厌的ASCII颜色代码(或解析它们).
我正在开发一个用户可以在原始Java代码中存储插件的项目.然后我的应用程序将获取这些插件,编译它们并导入它们.这些类基于存储在我的jar中的接口.但是,当我尝试使用JavaCompiler.CompilationTask运行它时,它拒绝允许我将当前jar添加到编译器的类路径中.在这种情况下,当它试图编译它时,就好像接口不可用于实现一样.
这是我的文件的结构:
主.jar文件:
CommandProcessor.java
----------------------------------------------
package plugins;
public interface CommandProcessor {
public String onCommand(String command);
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个加载插件的功能.
http://hastebin.com/jabacopeye.coffee(HasteBin避免过于混乱的问题)
以下是其中一个用户插件的示例:
public class MyCommand implements plugins.CommandProcessor {
@Override
public String onCommand(String command){
return "this is a test";
}
}
Run Code Online (Sandbox Code Playgroud)
每当应用程序尝试编译这个外部存储的.java文件时,它都会说"plugins.CommandProcessor"类不存在.
我有一个很大的C文件库,它依赖于OpenSSL,我对使用本机库非常陌生,尤其是使用android的新手.我已经成功地在iOS上实现了这个库而没有任何问题.
我一直在网上寻找有关如何做到这一点的教程/信息,但到目前为止我还没有发现任何我能理解的内容.这对我来说都很困惑.
本质上我正在试图弄清楚如何使用NDK将C文件库编译成本机库,并使用imy android应用程序编译库.
根据我的理解,我需要一个自定义的cmake文件用于android本身,但我不知道从哪里开始,我发现的文档非常难以理解.
所以,我需要一些帮助来理解在以下庄园中编译库的过程:
(我已经设法为android需要的所有arch构建libssl和libcrypto,但我不知道如何处理.a
/ .so
files.)
任何有关此事的帮助都会令人难以置信.
谢谢
编辑:
我设法使用以下内容生成一些库文件.
文件结构:
.idea
app
build
gradle
jni <--- I made this folder specifically fo this.
Android.mk <-- This is the important file.
include
openssl
<openssl header files>
libs
arm64-v8a
libcrypto.a
libcrypto.so
libssl.a
libssl.so
armeabi
libcrypto.a
libcrypto.so
libssl.a
libssl.so
armeabi--v7a
libcrypto.a
libcrypto.so
libssl.a
libssl.so
mips
libcrypto.a
libcrypto.so
libssl.a
libssl.so
mips64
libcrypto.a
libcrypto.so
libssl.a
libssl.so
x86
libcrypto.a
libcrypto.so
libssl.a
libssl.so
x86_64
libcrypto.a
libcrypto.so …
Run Code Online (Sandbox Code Playgroud) 我的网站的一个朋友被列为恶意网站,我们发现一些混淆的代码已被注入他的index.php而他却不知情.我将代码反向混淆了两级,发现了这个:
任何人都可以告诉我它正在尝试做什么以及它为什么是恶意的?
我有一个PHP脚本,我喜欢它,以便它只显示这个特定的文本,如果你在浏览器中查看页面,它不包含在另一个脚本..
例如
//foo.php
<?php
if(!included){
echo "You can only see this if this is the page you're viewing";
}
?>
//bar.php
<?php
include 'foo.php';
?>
Run Code Online (Sandbox Code Playgroud)
现在,当你查看"bar.php"时,你不应该看到文本..但是如果你打开foo.php,你会......我怎么会这样做...?如果可能..
我正在尝试在项目的构建设置中为库添加特定于体系结构的位置。但是由于某种原因,我在菜单中看不到它们。
我的菜单外观:
菜单的外观
(不完全相同,但是您可以在此图中看到他们如何能够为配置设置选择特定于体系结构的选项。我只能选择特定于操作系统的内容,而不能选择体系结构)
请参阅此页面以获取有关其工作方式的参考。
java ×4
android ×2
php ×2
android-ndk ×1
arm64 ×1
armv7 ×1
ascii ×1
c ×1
classpath ×1
color-codes ×1
colors ×1
compilation ×1
duplicates ×1
include ×1
ios ×1
javascript ×1
mysql ×1
obfuscation ×1
openssl ×1
replace ×1
sockets ×1
sql ×1
sql-insert ×1
xcode ×1