首页 文章
  • 分布式系统常见的事务处理机制

    原文出处:waylau为保障系统的可用性、可靠性以及性能,在分布式系统中,往往会设置数据冗余,即对数据进行复制。举例来说,当一个数据库的副本被破环以后,那么系统只需要转换到其他数据副本就能继续运行下去。另外一个例子,当访问单一服务器管理的数据的进程数不断增加时,系统就需要对服务器的数量进行扩充,此时,对服务器进行复制,随后让它们分担工作负荷,就可以提高性能。但同时,如何保障多个数据节点之间数据的一...
  • 聊聊 Java 分布式系统

    原文出处:waylau一提起“分布式系统”,大家的第一感觉就是好高大上啊,深不可测,看各类大牛关于分布式系统的演讲或者书籍,也大多是一脸懵逼。本文期望用浅显易懂的大白话来就什么是分布式系统、分布式系统有哪些优势、分布式系统会面临哪里挑战、如何来设计分布式等方面的话题来展开讨论。 什么是分布式系统 关于“分布式系统”的定义,我们先看下老外是怎么说的。《分布式系统原理和范型》一书中是这样定义分布式系统...
  • Java 泛型详解

    原文出处:ZiWenXie 引言 泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除。 泛型基础 泛型类 我们首先定义一个简单的Box类: public class Box { private String object; public void set(String...
  • 如何读取 classpath 下的资源

    原文出处:飒然Hang最近在写一些公共组件时,碰到了需要读取classpath下文件的场景。也突然想起其实之前有很多场景牵扯到读取类加载路径下的文件内容、路径,包括非jar包和jar包中的。总结一下,以备后续使用。 由于获取类路径下的资源文件的都是基于URL的,因此这里需要先讲述一下URL的概念。URL(Uniform Resource Locator)即统一资源定位器,指向互联网资源的指针,是一...
  • Java classpath 的理解及其使用方式

    笔者之前对于classpath都没有什么深入的研究,之前的项目打包jar包都是按照网上的教程自己照着葫芦画瓢。但是因为最近碰到一些关于这方面的知识,因此索性觉得要好好补充一下这方面的知识。下面的文章主要是翻译自oralce官网关于设置classpath的说明Setting the class path,并对其中一些地方进行了部分的补充说明,方便读者理解。 概要 classpath是Java运行时环...
  • Java JDK 10:下一代 Java 有哪些新特性?

    工欲善其事,必先利其器。作为老牌军 Java 在发行二十多年的今天,战胜了 C 和 C++,成为诸多开发者的宠儿,且如今从其更新速度来看,也是不甘落后。 今年的 9 月 21 日,大家期待已久的Java 9正式发布,现在开发者即将在几个月后就可以使用下一代 Java —— Java 10。十二月中旬,计划中的 Java 10 开发工具包升级节奏已经逐渐放缓。所以在目前阶段,产品升级后只能修复 P...
  • Java文件上传功能代码 —— 普遍适用

    一. 前言   通过之前的博客,基本上已经将各个框架上传文件的功能逻辑理清楚,有文件下载肯定就需要有文件上传,那么接下来会跟大家一起分享各个框架上传文件的功能代码;   那么,今天我们将重点放在各个框架适用的java文件上传功能代码方面,直接切入主题: 二. 实例   方法实例: //upload file,普通java上传文件方式 public String uploadFile()...
  • JDBC连接ORACLE的三种URL格式

    使用jdbc连接oracle时url有三种格式 格式一: Oracle JDBC Thin using an SID:jdbc:oracle:thin:@host:port:SIDExample: jdbc:oracle:thin:@localhost:1521:orcl这种格式是最简单也是用得最多的你的oracle的sid可以通过一下指令获得:sqlplus / as sysdbaselect ...
  • 为什么处理排序后的数组比未排序的数组更快?

    问题 这是一段看起来很奇特的C代码。出于某种奇怪的原因,对数据进行奇迹排序使得代码几乎快了六倍。 #include <algorithm> #include <ctime> #include <iostream> int main() { // Generate data const unsigned arraySize = 32768; ...
  • 为什么要减去这两次(在1927年)给出一个奇怪的结果?

    问题 如果我运行下面的程序,该程序分析引用时间间隔1秒的两个日期字符串并对它们进行比较: public static void main(String[] args) throws ParseException { SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Strin...
  • Java是“通过引用传递”还是“按值传递”?

    问题 我一直认为Java是通过引用传递。 不过,我见过一些博客文章(例如this blog),声称它不是。 我不理解它们的区别,能解释一下吗? #1 热门回答(4651 赞) Java永远是传递值.不幸的是,他们决定将对象的位置称为“引用”。当我们传递一个对象的值时,我们将它传递给它。这对初学者来说很混乱。 它是这样的: public static void main(String[] args...
  • Java 如何避免使用 “!=null” 语句?

    问题 我使用object!= null来避免NullPointerException。 有没有一个更好的选择呢? 例如: if (someobject != null) { someobject.doCalc(); } 这避免了一个NullPointerException,当它不知道对象是否为null时。 请注意,接受的答案可能已过时,请参阅https://stackoverflow.c...
  • 为什么不是Java的=, - =,* =,/ =复合赋值操作符需要转换?

    问题 直到今天,我认为,例如: i += j; 只是一个捷径: i = i + j; 但是,如果我们尝试这样做: int i = 5; long j = 8; 然后i = i j;不会编译,但是i = j;会编译好。 这是否意味着实际上i = j;是这样的一个快捷方式i =(类型i)(i j)? #1 热门回答(2194 赞) 像这些问题一样,JLS持有答案。在这种情况下,§15.26.2...
  • Java 读取/转换 InputStream 为字符串

    问题 如果你有一个java.io.InputStream对象,你应该如何处理这个对象并产生一个String? 假设我有一个包含文本数据的InputStream,并且想将它转换为String,例如我可以将它写入日志文件。 采用InputStream并将其转换为String的最简单方法是什么? public String convertStreamToString(InputStream is) { ...
  • 怎样使用 Android UserManager.isUserAGoat() ?

    问题 我正在研究在Android 4.2中引入的新API。在查看UserManager类时,我遇到了以下方法: public boolean isUserAGoat() 用于确定发起此呼叫的用户是否需要进行远程传送。返回进行此调用的用户是否是山羊。 它该如何使用和何时使用? #1 热门回答(1490 赞) 从他们的source,用于返回false的方法直到它在API 21中被更改。 /**...
  • Java中的 HashMap 和 Hashtable 有什么区别?

    问题 Java中的HashMap和Hashtable有什么区别? 哪种方法对非多线程应用程序更有效? #1 热门回答(3173 赞) Java中的HashMap和Hashtable有几个区别: Hashtable 是同步的,而HashMap不是。这使得 HashMap 对于非线程应用程序更好,因为非同步对象通常比同步对象执行得更好。 Hashtable` 不允许空键或值。 HashMap允许一...
  • Spring Batch 批处理框架介绍

    原文出处:吴兆锋 前言 在大型的企业应用中,或多或少都会存在大量的任务需要处理,如邮件批量通知所有将要过期的会员等等。而在批量处理任务的过程中,又需要注意很多细节,如任务异常、性能瓶颈等等。那么,使用一款优秀的框架总比我们自己重复地造轮子要好得多一些。 我所在的物联网云平台部门就有这么一个需求,需要实现批量下发命令给百万设备。为了防止枯燥乏味,下面就让我们先通过Spring Batch框架简单地实...
  • 给Java程序猿们推荐一些值得一看的好书

    原文出处:五月的仓颉“学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会。个人认为看书有两点好处: 1、能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料 2、对着书上的代码自己敲的时候方便 “看完书之后再次提升自我的最好途径是看一些相关的好博文“,我个人认为这是学习的第二步,因为一本书往往有好几百页,好的博文是自己看书学习...
  • 如何直接初始化HashMap(以字面方式)? [重复]

    问题 这个问题在这里已有答案: 如何初始化静态 Map ? 40个答案 有没有像这样初始化Java HashMap的方法?: Map<String,String> test = new HashMap<String, String>{"test":"test","test":"test&qu...
  • Executor, ExecutorService 和 Executors 间的不同

    参考:Executor, ExecutorService 和 Executors 间的不同 UML简要类图关系: 下面详细看一下三者的区别: Executor vs ExecutorService vs Executors 正如上面所说,这三者均是 Executor 框架中的一部分。Java 开发者很有必要学习和理解他们,以便更高效的使用 Java 提供的不同类型的线程池。总结一下这三者间的区别...
  • 从数组创建ArrayList

    问题 我有一个数组: Element[] array = {new Element(1), new Element(2), new Element(3)}; 我想将这个数组转换成 ArrayList 类的一个对象,怎样实现更好? ArrayList<Element> arraylist = ???; #1 热门回答(3911 赞) new ArrayList<>(Ar...
  • 为什么字符[]优先于字符串的密码?

    问题 在Swing中,密码字段有一个getPassword()(返回char [])方法,而不是通常的getText()(返回String)方法。同样,我遇到了一个不使用String来处理密码的建议。 为什么String在密码方面对安全构成威胁?使用char []感觉不方便。 #1 热门回答(3682 赞) 字符串是不可变的.这意味着一旦创建了String,如果另一个进程可以转储内存,那么在ga...
  • 如何在Java中的特定范围内生成随机整数?

    问题 如何在特定范围内生成一个随机的“int”值? 我尝试了以下,但那些不起作用:** Attempt 1:** randomNum = minimum + (int)(Math.random() * maximum); // Bug: `randomNum` can be bigger than `maximum`. ** Attempt 2:** Random rn = new Random...
  • 迭代HashMap [重复]

    问题 可能重复:如何有效地迭代'Map'中的每个条目? 在“HashMap”中迭代项目的最佳方法是什么? #1 热门回答(4091 赞) 如果你只对键有兴趣,你可以遍历map的keySet(): Map<String, Object> map = ...; for (String key : map.keySet()) { // ... } 如果你只需要这些值,可以使...
  • 用Java创建内存泄漏

    问题 我刚接受采访,并被要求用Java创建内存泄漏。毋庸置疑,我对于如何开始创建一个自己而言毫无头绪。 一个例子会是什么? #1 热门回答(1914 赞) 以下是在纯Java中创建真正的内存泄漏(通过运行代码无法访问但仍保存在内存中的对象)的好方法: 应用程序创建一个长时间运行的线程(或使用线程池更快地泄漏)。 线程通过(可选的自定义)ClassLoader加载一个类。 类分配大量内存(例如,...
  • 何时使用 ArrayList 何时使用 LinkedList?

    问题 我一直只使用一个: List<String> names = new ArrayList<>(); 我使用接口作为类型名称来提供便携性,以便当我提出这些问题时,我可以重写我的代码。 什么时候应该使用LinkedList而不是ArrayList,反之亦然? #1 热门回答(2820 赞) 摘要带有ArrayDeque的ArrayList`在比LinkedList更多...
  • 如何有效地迭代'Map'中的每个条目?

    问题 如果我有一个在Java中实现Map接口的对象,并希望迭代其中包含的每一对,那么通过地图的最有效方法是什么? 元素的排序是否依赖于我为界面设计的特定映射实现? #1 热门回答(4034 赞) Map<String, String> map = ... for (Map.Entry<String, String> entry : map.entrySet()) { ...
  • 如何在Java中将字符串转换为int?

    问题 如何在Java中将String转换为int? 我的字符串只包含数字,我想返回它表示的数字。 例如,给定字符串“1234”,结果应该是数字“1234”。 #1 热门回答(3506 赞) String myString = "1234"; int foo = Integer.parseInt(myString); 有关更多信息,请参阅Java Documentation。...
  • 什么是serialVersionUID,我为什么要使用它?

    问题 当缺少serialVersionUID时,Eclipse会发出警告。 可序列化类Foo不声明long类型的静态最终serialVersionUID字段 什么是“serialVersionUID”?为什么它很重要?请展示缺少serialVersionUID会导致问题的例子。 #1 热门回答(1881 赞) 对于java.io.Serializable的文档可能会有如下的解释: 序列化运...
  • 在Java中,封装私有,公共,受保护和私有之间的区别

    问题 在Java中,在使用class和interface并处理继承时,是否存在何时使用每个访问修饰符的明确规则,即默认(package private),public,protected和private? #1 热门回答(4560 赞) The official tutorial可能对你有一些用处。 │ Class │ Package │ Subclass │ Subclass │ World ...

热门问题