Tag: java

为什么Java和C#中的逻辑运算符和按位运算符有区别?

Java和C#等语言都有按位和逻辑运算符。 逻辑运算符仅对布尔操作数有意义,按位运算符也适用于整数类型。 由于C没有布尔类型并且将所有非零整数都视为真,因此逻辑和按位运算符的存在在那里是有意义的。 但是,Java或C#等语言具有布尔类型,因此编译器可以自动使用正确类型的运算符,具体取决于类型上下文。 那么,是否有一些具体的理由在这些语言中同时使用逻辑和按位运算符? 或者他们是否因熟悉原因而被包括在内? (我知道你可以在布尔上下文中使用“按位”运算符来规避Java和C#中的短路,但我从来不需要这样的行为,所以我想这可能是一个大多未使用的特殊情况)

为什么C#中没有并发集合?

我试图概述C#中集合背后的线程安全理论。 为什么Java中没有并发集合? ( java docs )。 一些集合看起来是线程安全的,但我不清楚这个位置是什么,例如关于: 复合作业, 使用迭代器的安全性, 写操作 我不想重新发明轮子! (我不是一个multithreading的大师,绝对不会低估这有多难)。 我希望社区可以提供帮助。

C#/ Java | AES256加密/解密

我想加密通过Java / C#套接字(Java服务器,C#客户端)发送的所有数据。 我想使用AES256,但我不能让Java和C#生成相同的加密代码。 任何人都可以给我两个例子,1个用Java,1个用C#生成相同的结果并正确解密结果? 到目前为止我尝试了什么: public Encrypt(AOBCore instance){ try { String message=”This is just an example”; // Get the KeyGenerator KeyGenerator kgen = KeyGenerator.getInstance(“AES”); kgen.init(256); // 192 and 256 bits may not be available // Generate the secret key specs. SecretKey skey = kgen.generateKey(); //Cantget ‘test’ in here… byte[] raw = skey.getEncoded(); SecretKeySpec skeySpec […]

如何使用Unity3D将AndroidJavaObject中的变量转换为C#类

我找不到如何从C#中的AndroidJavaObject获取ListArray变量。 我正在尝试使用Count为ListArray中存储为AndroidJavaObject的项目数创建for函数。 但我需要知道如何从AndroidJavaObject获取Count以及如何正确使用它。 这是我用来获取变量的,也注意到“packages”不是AndroidJavaObject[] 。 AndroidJavaClass jc = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”); AndroidJavaObject currentActivity = jc.GetStatic(“currentActivity”); int flag = new AndroidJavaClass(“android.content.pm.PackageManager”).GetStatic(“GET_META_DATA”); AndroidJavaObject pm = currentActivity.Call(“getPackageManager”); AndroidJavaObject packages = pm.Call(“getInstalledApplications”, flag); 在这一点上它是非常基本的,但它的工作得益于这个如何使用Unity3D安装应用程序列表的一些帮助? 到目前为止的进展停止了获取图标,其他一切工作完美,我需要一种方法来获得一个链接到图标的string ,或者图标的Texture2D 。 另一种选择是使用包含drawable的AndroidJavaObject ,就好像它是Texture2D一样。 我不知道怎么做到这一点。 我的另一个想法是将它转换为另一个变量,比如可以传输和转换回来的byte[] ,但是我还没有找到一种在这种情况下工作的方法。 int count = packages.Call(“size”); AndroidJavaObject[] links = new AndroidJavaObject[count]; string[] names = new string[count]; Texture2D[] icons = new […]

字符串与字节数组,性能

(这篇文章是关于高频类型编程) 我最近在一个论坛上看到(我认为他们正在讨论Java),如果你必须解析很多字符串数据,最好使用字节数组而不是带split()的字符串。 确切的post是: 使用任何语言,C ++,Java,C#的一个性能技巧是避免对象创建。 这不是分配或GC的成本,而是访问不适合CPU缓存的大型内存arrays的成本。 现代CPU比它们的内存快得多。 对于每次缓存未命中,它们会停止许多周期。 大多数CPU转置预算都是通过大缓存和大量滴答来分配的。 GPU通过准备执行大量线程来隐藏内存访问延迟并且几乎没有缓存并将晶体管花费在更多内核上,从而以不同方式解决问题。 因此,例如,不是使用String和split来解析消息,而是使用可以就地更新的字节数组。 您真的希望避免对大型数据结构进行随机内存访问,至少在内部循环中是这样。 他只是说“不要使用字符串,因为它们是一个对象并且创建对象是昂贵的”? 还是他说了别的什么? 使用字节数组是否确保数据尽可能长时间保留在缓存中? 当你使用一个字符串是否太大而无法保存在CPU缓存中? 一般来说,使用原始数据类型是编写更快代码的最佳方法吗?

C#SHA-256与Java SHA-256。 结果不同?

我想将一些Java中的代码转换为C#。 Java代码: private static final byte[] SALT = “NJui8*&N823bVvy03^4N”.getBytes(); public static final String getSHA256Hash(String secret) { try { MessageDigest digest = MessageDigest.getInstance(“SHA-256”); digest.update(secret.getBytes()); byte[] hash = digest.digest(SALT); StringBuffer hexString = new StringBuffer(); for (int i = 0; i < hash.length; i++) { hexString.append(Integer.toHexString(0xFF & hash[i])); } return hexString.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } […]

将C#RSACryptoServiceProvider代码转换为Java

我需要为项目相关的目的加密String,并由供应商给出相同的代码。 public static string EncryptString(string StringToEncrypt) { RSACryptoServiceProvider provider = new RSACryptoServiceProvider(); string xmlString = “qqoWhMwGrrEBRr92VYud3j+iIEm7652Fs20HvNckH3tRDJIL465TLy7Cil8VYxJre69zwny1aUAPYItybg5pSbSORmP+hMp6Jhs+mg3qRPvHfNIl23zynb4kAi4Mx/yEkGwsa6L946lZKY8f9UjDkLJY7yXevMML1LT+h/a0a38=AQAB20PwC7nSsfrfA9pzwSOnRYdbhOYivFSuERxvXHvNjCll5XdmFYYp1d2evXcXbyj3E1k8azce1avQ9njH85NMNQ==x0G0lWcQ13NDhEcWbA7R2W5LPUmRqcjQXo8qFIaHk7LZ7ps9fAk/kOxaCR6hvfczgut1xSpXv6rnQ5IGvxaHYw==lyybF2qSEvYVxvFZt8MeM/jkJ5gIQPLdZJzHRutwx39PastMjfCHbZW0OYsflBuZZjSzTHSfhNBGbXjO22gmNQ==NJVLYa4MTL83Tx4vdZ7HlFi99FOI5ESBcKLZWQdTmg+14XkIVcZfBxDIheWWi3pEFsWqk7ij5Ynlc/iCXUVFvw==X5Aw9YSQLSfTSXEykTt7QZe6SUA0QwGph3mUae6A2SaSTmIZTcmSUsJwhL7PLNZKbMKSWXfWoemj0EVUpZbZ3Q==jQL4lEUYCGNMUK6GEezIRgiB5vfFg8ql3DjsOcXxnOmBcEeD913kcYnLSBWEUFW55Xp0xW/RXOOHURgnNnRF3Ty5UR73jPN3/8QgMSxV8OXFo3+QvX+KHNHzf2cjKQDVObJTKxHsHKy+L2qjfULA4e+1cSDNn5zIln2ov51Ou3E=”; provider.FromXmlString(xmlString); return Convert.ToBase64String(provider.Encrypt(Encoding.ASCII.GetBytes(StringToEncrypt), false)); } 但是我需要修改或翻译成JAVA。 为了同样的目的,我写了下面的方法。 public static String EncryptString(String strToBeEncrypted) throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, UnsupportedEncodingException, IllegalBlockSizeException, BadPaddingException { String modulusString = “qqoWhMwGrrEBRr92VYud3j+iIEm7652Fs20HvNckH3tRDJIL465TLy7Cil8VYxJre69zwny1aUAPYItybg5pSbSORmP+hMp6Jhs+mg3qRPvHfNIl23zynb4kAi4Mx/yEkGwsa6L946lZKY8f9UjDkLJY7yXevMML1LT+h/a0a38=”; String publicExponentString = “AQAB”; byte[] modulusBytes = Base64.decodeBase64(modulusString); byte[] exponentBytes = Base64.decodeBase64(publicExponentString); BigInteger modulus […]

是否有C#/ .NET的跨平台GUI框架?

让我们说只是为了它的乐趣,我决定不再用Java编写桌面应用程序,而是想切换到使用C#。 我希望能够构建一个将在某些主流Linux发行版上运行的应用程序,以及最近发布的MS Windows。 它将有一个GUI组件。 在Java中,我可以构建一个使用Swing的应用程序。 一旦我有它工作,我可以将该jar文件从Windows复制到Linux,反之亦然,这取决于我开发它的位置。 它通常会运行java -jar myapp.jar 。 在C#中可以这样做吗? 在C#中是否有与Swing或AWT相同的function?

PDF解析提取CheckBox字段值

我有一个PDF Documnet,想从PDF和Chackbox和单选按钮类型字段值中提取内容。 PDF文件的版本为1.4(Acrobat 5.x),可以从Web浏览器生成。 CheckBox在PDF中显示此类型 我想找到已选中的复选框值但是没有任何API和工具成功解析为此类复选框字段值,我只是成功从PDF中提取文本。 和复选框无法通过API识别Checked值。 如果有人知道如何提取以及哪种API应该适用于此类PDF文件。 请建议我。 提前致谢

从Java / C#角度理解C ++编译器

我是一名经验丰富的Java / C#程序员,我最近开始学习C ++。 问题是,我无法理解如何构造各种头文件和代码文件。 这似乎主要是由于我对编译器如何将所有内容链接在一起缺乏了解。 我曾尝试过阅读一些教科书,但我的先入之见在我的Java和C#知识上有很大的色彩。 例如,我很难掌握方法等可以在命名空间中定义而不是仅在类定义中定义的事实。 我发现了很多C ++ – > Java / C#指南,但实际上没有其他方法可行。 是否有任何好的资源可以简化Java / C# – > C ++转换,特别是在理解编译过程方面?