Zacard's Notes


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 搜索
close
Zacard's Notes

Mac osx推荐2款键盘党软件

发表于 2016-02-03 | 分类于 软件技术 | | 阅读次数

背景

由于平时键盘操作大于触摸板(无鼠标操作),然后前段时间整了个机械键盘,连触摸板都不想用了。于是去网上找了几款键盘党神器级软件,基本能解放触摸板了~

shortcat

Shortcat lets you keep your hands on the keyboard and boost your productivity! Shortcat is a keyboard tool for OS X that lets you “click” buttons and control your apps with a few keystrokes. Think of it as Spotlight for the user interface

Shortcat 是一款OS X上的键盘工具,能够让你的双手在键盘上操作代替鼠标或者触摸板的操作,提高生产力。可以把他想象成用户界面上的Spotlight

效果如下:

阅读全文 »
Zacard's Notes

使用java8编写整洁的逻辑判断

发表于 2016-02-01 | 分类于 软件技术 | | 阅读次数

背景

IN-LINE PREDICATES CAN CREATE A MAINTENANCE NIGHTMARE

代码内部的逻辑判断将会成为代码可维护性的恶梦。

使用lambda表达式和steam接口对集合进行常见的操作是非常畅快的。例如如下代码:

public List<Person> getAdultMales (List<Person> persons) {
    return persons.stream().filter(p ->
            p.getAge() > ADULT && p.getSex() == SexEnum.MALE
    ).collect(Collectors.<Person>toList());
}

这很简便!但是这么写却会导致高昂的维护成本。在一个企业级的应用程序中,您的开发团队肯定会有编写重复的业务逻辑判断的代码,这肯定不是你想要看到的项目。因为对于一个易维护,可扩展的企业应用来说,它违反了以下3个重要的原则:

阅读全文 »
Zacard's Notes

dubbo service单元测试参数校验的问题

发表于 2016-01-29 | 分类于 软件技术 | | 阅读次数

背景

当我们编写dubbo service端的单元测试的时候,并且设置了dubbo的validation是在客户端(服务消费端)校验的话,那么测试类中的基于注解的参数校验将不会生效。

阅读全文 »
Zacard's Notes

Ubuntu中添加zsh(oh-my-zsh)的环境变量

发表于 2016-01-23 | 分类于 软件技术 | | 阅读次数

背景

听说有个shell叫zsh和oh-my-zsh完爆Ubuntu默认的bash,果断安装试用。

命令:

apt-get install -y zsh
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

安装完成后体验了下被网友力推的几个功能和插件(详情可以见:传送门),确实方便好用。

但是碰到个问题:无法读取到配置在~/.bashrc中的环境变量,这也是摆明的问题,你shell都换了,zsh这么可能读到bash的配置文件中的环境变量。

阅读全文 »
Zacard's Notes

IntelliJ IDEA内存优化

发表于 2016-01-21 | 分类于 软件技术 | | 阅读次数

背景

经常有人抱怨说idea反应慢,吃内存。于是google到了一篇老外对idea内存配置优化方案的比较和测试,传送门

引用

Don’t be a Scrooge and give your IDE some more memory

不要做守财奴,给IDE多分配点内存吧。

哈哈!老外已经说了,idea慢的原因,基本是内存给的不够。

阅读全文 »
Zacard's Notes

关于使用maven jetty插件启动慢的解决方法

发表于 2016-01-19 | 分类于 软件技术 | | 阅读次数

背景

使用maven的jetty插件启动web(spring)项目时,可能会遇到项目启动很慢,甚至可能直接timeout或者报一些其他错误。我们可以根据错误来优化maven中jetty的启动速度。

常见错误一

当遇到类似如下错误:

java.lang.ArrayIndexOutOfBoundsException: 51889

或者:

java.lang.Exception: Timeout scanning annotations
阅读全文 »
Zacard's Notes

java锁的种类及研究

发表于 2016-01-13 | 分类于 软件技术 | | 阅读次数

背景

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。

自旋锁

自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被当前线程改变时其他前程才能进入临界区。

自旋锁流程:获取自旋锁时,如果没有任何线程保持该锁,那么将立即得到锁;如果在获取自旋锁时锁已经有保持者,那么获取锁操作将自旋在那里,直到该自旋锁的保持者释放了锁。

简单实现原理的代码如下:

阅读全文 »
Zacard's Notes

单元测试中涉及到mybatis plugin时需要注意的地方

发表于 2016-01-11 | 分类于 软件技术 | | 阅读次数

背景

当编写test case的时候,如果测试内容中又涉及到mybatis plugin(interceptor)的时候,可能会出现奇怪的问题。比如一部分mybatis的dao调用进入了plugin,一小部分却不经过plugin。

例子

请看如下单元测试代码:

/**
 * 测试分页查询
 */
@Test
public void testQueryPage() {
    // 分页对象
    Pager<Account> pager = new Pager<>();
    pager.setCurrentPage(2);
    pager.setPageSize(10);
    // 查询参数
    QueryParams queryParams = new QueryParams();
    queryParams.setRole("ADMIN");
    // 调用查询接口
    List<Account> accounts1 = accountDAO.queryPage(queryParams, pager);
    Assert.assertTrue(accounts1.size() == 1);
    // 调用查询接口
    pager.setCurrentPage(1);
    List<Account> accounts2 = accountDAO.queryPage(queryParams, pager);
    Assert.assertTrue(accounts2.size() == 10);
}
阅读全文 »
Zacard's Notes

java list循环中删除元素的坑

发表于 2016-01-07 | 分类于 软件技术 | | 阅读次数

背景

当我们要循环一个list中的元素,并且要删除某个元素的时候,一点要小心谨慎!其中深埋了好几个坑!

坑1

请看如下代码:

/**
 * 测试删除集合中的空白元素
 */
@Test
public void removeBlank() {
    List<String> list = new ArrayList<>();
    list.add("1");
    list.add("2");
    list.add("3");
    list.add(" ");
    list.add("  ");
    for (String s : list) {
        if (StringUtils.isBlank(s)) {
            list.remove(s);
        }
    }

    System.out.println("list:" + list);
}

输出结果:list:[1, 2, 3, ] 。可以看到空白元素没有删除干净。

阅读全文 »
Zacard's Notes

关于windows下jetty锁文件的解决办法

发表于 2016-01-06 | 分类于 软件技术 | | 阅读次数

在windows环境中开发,当使用jetty作为容器时,可能会发生修改js、css文件而没有生效,甚至报错的情况。

产生原因

这是因为jetty会使用内存映射文件来缓存静态文件,其中就包括js、css文件。而在windows下,使用内存映射文件会导致文件被锁定。

解决方法

解决方法很简单,只需要再web.xml文件中配置相应的静态文件不使用内存映射文件来缓存即可:

<!--配置使windows下的jetty不锁定文件-->
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>default</servlet-name>
    <init-param>
        <param-name>useFileMappedBuffer</param-name>
        <param-value>false</param-value>
    </init-param>
</servlet>
1…567
zacard

zacard

优生笑,菜鸟哭

65 日志
2 分类
105 标签
RSS
GitHub Weibo ZhiHu
Links
  • DingDang's Notes
© 2015 - 2021 zacard
由 Hexo 强力驱动
主题 - NexT.Mist