`
文章列表
在项目中有这么一个需求:判断上传文件的类型,考虑两种方案: 1. 通过正则表达式从文件名中获取; 2. 使用URLConnection.guessContentTypeFromStream通过文件前16个字节推断;   第一种方法显然不够严谨(文件名可随意更改),于是采用 了第二种方案   // some code FileInputStream inputFile = new FileInputStream("D:/test.pdf"); String mime = URLConnection.guessContentTypeFromStream(inp ...
今天同事在编译Maven工程时,显示jre报错 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project omega-common: Compilation failure [ERROR] Unable to locate the Javac Compiler in: [ERROR] C:\Program Files\Java\jre1.8. ...
hash对于我们coder来说并不陌生,在我们使用hashmap和hashtable也许会有其底层实现的疑问,此处以hashmap第底层实现为例子进行说明,同时提出hash冲突的解决办法。   上图就是一个散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。但是当关键字数量比较大的时候,难免就会造成一个问题,就是不一样的关键字隐射到同一个地址上,这样就造成了一个问题,就是hash冲突。那么如何解决呢? ...
/** * @author lanwei 2018-05-19 */ public class ConditonPrintAB { public static void main(String[] a) { PrintAB printAB = new PrintAB(); new Thread(() -> printAB.print1()).start(); new Thread(() -> printAB.print2()).start(); } public stati ...
锁优化   自旋锁 共享数据的锁定状态只会持续很短的一段时间,为了这段时间去挂起和恢复线程并不值得。 如果物理机器有一个以上的处理器,能让两个或以上的线程同时并行执行,我们就可以让后面请求锁的那个线程“稍等一下”,但不放弃处理器的执行时间,看看持有锁的线程是否很快就会释放锁。 为了让线程等待,我们只需让线程执行一个忙循环(自旋),这项技术就是所谓的自旋锁。 自旋等待不能代替阻塞,自旋等待本身虽然避免了线程切换的开销,但它是要占用处理器时间的,因此,如果锁被占用的时间很短,自旋等待的效果就会非常好,反之,如果锁被占用的时间很长,那么自旋的线程只会白白消耗处理器资源,而不会做任何有用的工作 ...
将博客迁移至CSDN
       最近项目中需要开发一个定时任务,项目中已经落地spring cloud微服务框架,schedule task server作为一个独立服务部署,但是业务层逻辑代码又包含在主服务的一个module中,在开发阶段启动过多的服务与开发调试不便,于是想着将定时任务集成到主服务中便于调试(类似Unit Test),但是在生产环境中又要保证这个定时任务不会在主服务中启动,此时@Profile 闪亮登场。   @Profile("dev") @Component public class TestTask { private final Logger ...
每个Java开发人员都知道字节码经由JRE(Java运行时环境)执行。但他们或许不知道JRE其实是由Java虚拟机(JVM)实现,JVM分析字节码,解释并执行它。作为开发人员,了解JVM的架构是非常重要的,因为它使我们能够编写出更高效的代码。本文中,我们将深入了解Java中的JVM架构和JVM的各个组件。   JVM   虚拟机是物理机的软件实现。Java的设计理念是WORA(Write Once Run Anywhere,一次编写随处运行)。编译器将Java文件编译为Java .class文件,然后将.class文件输入到JVM中,JVM执行类文件的加载和执行的操作。   JVM ...
译文:理解Java中的弱引用 OCT 12TH, 2014 不久之前,我面试了一些求职Java高级开发工程师的应聘者。我常常会面试他们说,“你能给我介绍一些Java中得弱引用吗?”,如果面试者这样说,“嗯,是不是垃圾回收有关的?”,我 ...
自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解。这篇文章中,我将向大家讲述到底什么是注解,为什么要引入注解,注解是如何工作的,如何编写自定义的注解(通过例子),什么情况下可以使用注解以及最新注解和ADF(应用开发框架)。这会花点儿时间,所以为自己准备一杯咖啡,让我们来进入注解的世界吧。 什么是注解? 用一个词就可以描述注解,那就是元数据,即一种描述数据的数据。所以,可以说注解就是源代码的元数据。比如,下面这段代码: @Override public Str ...
问:为什么感觉工厂模式没什么优势呢?比如我想用三种工厂模式中的工厂方法模式,但是它用子工厂返回对象和new对象一样吧,我觉得还没有new简单。    答:new你妹,需求的变更贯穿于每一个软件项目。设计模式精髓就在于应对“未来的变化”。当然这种变化主要是扩展性。   这是我目前看到的最能解决初学者困惑的回答!
A服务器 代理 B服务器的内容,但发现用户访问A服务器只能获取到部分内容。 检查几个问题: 1 直接访问B服务器,正常2 访问非PHP内容,正常3 关闭压缩也没有解决问题,与压缩无关 试过 gzip和gunzip的功能,都没有解决,不过这两个跟缓存压缩数据有帮助哦 后来查得两篇文章,解决了,是 fastcgi_temp 目录的读写权限问题。表现症状:Nginx的错误日志出现大量类似如下的错误: 2013/08/
转自:http://mysql.taobao.org/monthly/2016/03/10/ 前言 最近一段时间处理了较多锁的问题,包括锁等待导致业务连接堆积或超时,死锁导致业务失败等,这类问题对业务可能会造成严重的影响,没有处理经验的用户往往无从下手。下面将从整个数据库设计,开发,运维阶段介绍如何避免锁问题的发生,提供一些最佳实践供RDS的用户参考。 设计阶段 在数据库设计阶段,引擎选择和索引设计不当可能导致后期业务上线后出现较为严重的锁或者死锁问题。 1. 表引擎选择使用myisam,引发table level lock wait。从5.5版本开始,MySQL官方就把默认引擎由 ...
     在操作服务器CentOS的过程中,执行一些基础命令是频繁报错:   [deploy@iZ942m5dzxvZ ~]$ ls -bash: fork: retry: Resource temporarily unavailable -bash: fork: retry: Resource temporarily unavailable       上面这段错误提示的本质是Linux操作系统无法创建更多进程,导致出错。因此解决这个问题需要修改Linux允许创建更多的进程。修改Linux最大进程数我们可以通过ulimit -a来查看当前Linux系统的一些系统参数。 [d ...
       初到公司,技术团队是使用git来对项目进行管理,不得不说,在还没把握其精髓的情况下,还是先将其作为一个工具,用起来再说!下面进入正题。        一、拉取GitHub上的远程代码 拉取代码前,用一下两条命令查 ...
Global site tag (gtag.js) - Google Analytics