摘要: Protocol Buffers学习笔记 1. 简介 Protocol Buffers是google发明的一种数据交换格式,独立于语言,独立于平台。与其他的数据交换格式有所不同,Protocol Buffers是一种二进制的格式,因此在网络传输的时候效率更高,相对于json它的文件体积更小,相对于x 阅读全文
posted @ 2018-08-01 20:45 scuwangjun 阅读(219) 评论(0) 推荐(0) 编辑
摘要: Java的Lambda表达式 1. 什么是Lambda表达式 简单的说,Lambda表达式就是匿名方法。Lambda表达式让程序员能够使用更加简洁的代码,但是同样也使代码的可读性比较差。 Lambda表达式也叫做匿名方法或者闭包。 2. 和匿名内部类做对比 Lambda是匿名方法,这个时候我们会想想 阅读全文
posted @ 2018-06-16 20:05 scuwangjun 阅读(340) 评论(0) 推荐(0) 编辑
摘要: mysql之group_concat函数 在介绍GROUP_CONCAT之前,我们先来看看concat()函数和concat_ws()函数。 先准备一个测试数据库: concat()函数 concat()函数的功能是将多个字符连接成一个字符串。 语法: concat(str1, str2,...) 阅读全文
posted @ 2018-06-14 20:40 scuwangjun 阅读(162) 评论(0) 推荐(0) 编辑
摘要: Java排序之归并排序 1. 简介 归并排序的算法是将多个有序数据表合并成一个有序数据表。如果参与合并的只有两个有序表,则成为二路合并。对于一个原始的待排序数列,往往可以通过分割的方法来归结为多路合并排序。 2. 归并排序思路 1. 将长度为n的待排序数组看做是由n个有序长度为1的数组组成 2. 将 阅读全文
posted @ 2018-06-06 12:55 scuwangjun 阅读(226) 评论(0) 推荐(0) 编辑
摘要: Java排序之计数排序 计数排序思路 计数排序适用于有明确范围的数组,比如给定一个数组,且知道所有值得范围是[m,n]。这个时候可以使用一个n m+1长度的数组,待排序的数组就可以散在这个数组上,数组的值就是当前值的个数,再经过一次遍历展开,得到的数组就有序了。 1. 新建一个长度为n m+1的临时 阅读全文
posted @ 2018-06-04 18:44 scuwangjun 阅读(417) 评论(0) 推荐(0) 编辑
摘要: Fork/Join框架 1. Fork/Join框架简介 Fork/Join框架是java7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果得到大任务结果的框架。Fork指的就是把一个大任务分割成若干子任务并行的执行,Join就是合并这些子任务的执行结果,最 阅读全文
posted @ 2018-06-03 16:43 scuwangjun 阅读(146) 评论(0) 推荐(0) 编辑
摘要: Java设计模式之观察者模式 一直想写一篇学习观察者模式的总结没有契机,今天学习阻塞队列的原理时候看到在实现生产者消费者的时候用到了通知模式,就是所谓的观察者模式,正好顺便整理一下。 1. 简介 观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被 阅读全文
posted @ 2018-06-02 22:59 scuwangjun 阅读(173) 评论(0) 推荐(0) 编辑
摘要: Java锁优化 应用程序在并发环境下会产生很多问题,通常情况下,我们可以通过加锁来解决多线程对临界资源的访问问题。但是加锁往往会成为系统的瓶颈,因为加锁和释放锁会涉及到与操作系统的交互,会有很大的性能问题。那么这个时候基于锁的优化手段就显得很重要了。 一般情况下,可以从两个角度进行锁优化:对单个锁算 阅读全文
posted @ 2018-06-02 11:06 scuwangjun 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 整型计算 今天做LeetCode看到一道题, "翻转整型" ,其中一行代码 表示超出范围就会有损失,有点不太明白,正好之前复习过原码,反码,补码这些,研究了半天,写个总结。接下来从两个问题入门看计算机内部是如何计算的。 1. 为什么Integer.MAX\_VALUE + 1 = Integer.M 阅读全文
posted @ 2018-06-02 10:14 scuwangjun 阅读(348) 评论(0) 推荐(0) 编辑
摘要: Java线程池 1. 简介 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互,这个时候使用线程池可以提升性能,尤其是需要创建大量声明周期很短暂的线程时。Java中的线程池是运用场景最多的并发框架。 线程池类似于数据库连接池,在系统启动的时候即创建大量空闲的线程,可以将一个线程任务提交给 阅读全文
posted @ 2018-06-02 10:11 scuwangjun 阅读(159) 评论(0) 推荐(0) 编辑