自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jiaobuchong的专栏

为工艺所滋润的世界,是幸运的所在

  • 博客(173)
  • 资源 (7)
  • 收藏
  • 关注

原创 栈实现括号匹配

现在有圆括号 ()、方括号 [] 和花括号 {},将它们任意嵌套 {[(3+2) * 2] + 3} 是合法的格式, {[(3+2 * 2] + 3} 是不合法的格式。

2018-12-03 22:56:42 666

原创 链表中环的检测

链表中环的检测定义两个快慢指针 pFast 和 pSlow,pFast 每次走两步,pSlow 每次走一步,如果 pFast 在循环遍历后为 null,则链表中不存在环。如果 pFast 和 pSlow 相遇则链表中存在环,废话不多说,看代码吧:public class DetectLoop { public static void main(String[] args) { ...

2018-12-02 19:57:56 1919

原创 轻松搞定链表面试题

构造的链表和打印 public static void main(String[] args) { int[] arr = {1, 3, 5, 7, 9, 11, 13, 15, 17}; LinkedListDemo linkedListDemo = new LinkedListDemo(); Node head1 = linkedListDe...

2018-12-01 17:34:53 219

原创 Spring MVC 优雅下载和文件名正常显示

使用 Spring MVC 的 ResponseEntity 传入文件的字节码即可实现下载功能,不用往HttpServletResponse response 的输出流写字节了。public class BasicController { protected ResponseEntity<byte[]> getFile(String fileName, byte[] data

2018-11-29 23:13:42 4523 4

转载 快速排序算法

参考:算法 3:最常用的排序——快速排序【漫画】不要再问我快速排序了

2018-11-25 22:05:54 186

转载 彻底理解 String.intern

Java字符串常量池jdk1.8深入解析String#intern

2018-11-17 12:25:22 207

原创 Java 桥接方法(Bridge Method)

什么是「桥接方法」,下面来从两个例子中体会一下。重写方法的返回类型是其父类返回类型的子类型public class Merchant { public Number actionPrice(double price) { return price * 0.8; }}public class NaiveMerchant extends Merchant {...

2018-11-04 23:23:17 6351 10

原创 补码原理的个人理解

二进制是最高位是符号位,0表示正数,1表示负数。正数的值是其本身,负数的值是最高位(符号位不变),其它位逐位取反,再 +1。两数相加,若最高位(符号位)有进位,则进位被舍弃。可以将符号位同一处理,最高位不再表示数值,而是作为符号位,正好数值折半,即一半是负数,一半是正数。如:4 位二进制数共有 16 个数,用补码表示,则一半是 0-7,一半是 -1–8。补码运算是封闭的:运算结果保留在补码...

2018-10-19 22:13:01 4933 4

转载 欧几里德与扩展欧几里德算法

欧几里德算法欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。第一种证明: a可以表示成a = kb + r,则r = a mod b  假设d是a,b的一个公约数,则有  d|a, d|b,而r = a - kb,因此d|r...

2018-10-17 23:39:06 473

原创 【一】实践中学习 awk

记录awk 把每一个换行符结束的行称为一个记录,$0 变量:它指的是整条记录。# 输出 test.txt 文件中的所有记录 awk '{print $0}' test.txt 变量 NR:一个计数器,每处理完一条记录,NR 的值就增加 1。# 输出 test.txt 中的所有记录,并在记录前显示行号awk '{print NR, $0}' test.txt域记录中的每个...

2018-10-13 12:34:30 12651

转载 CSDN 新版 Markdown 教程

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2018-10-01 14:19:39 359

原创 Java 结合多线程实现简单 HTTP 服务器

能自己实现一个简单的 HTTP 服务器,还有些小激动的。 实现给客户端返回 HTML 文本和 二进制文件(图片), 啥也不说了,直接上码吧: import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.SynchronousQueue;impor...

2018-09-09 17:10:12 3247

原创 Maven dependencyManagement中的依赖版本会覆盖传递依赖版本

最近在项目中使用Maven遇到一个问题,明明传递依赖进来的是最新版本,但引用的还是旧版本。原来在parent pom中的dependencyManagement里指定了一个低版本的依赖,然后传递进来的依赖就是低版本了。在Maven官方文档中Introduction to the Dependency Mechanism有一段话:Dependency management - this al...

2018-08-19 21:51:51 29361 5

原创 MySQL 随机生成日期

心血来潮,想在数据表里面随机Mock一批数据测试一下我的程序,但是得有一个日期字段是不一样的,那怎么随机生成日期呢?直接上SQL:select date(from_unixtime( unix_timestamp('2017-01-01') + floor( rand() * ( unix_timestamp('2018-08-08') - unix_timestamp('...

2018-08-08 23:34:27 9908 5

原创 Log4j2 + SLF4J开箱即用的配置

网上有很多关于Log4j2和SLF4J的文章,我就不再赘述了,直接上我在项目中的使用的log4j2.xml配置文件,也算是一个总结记录吧,以后随时补充进来。Maven dependency<dependencies> <!-- log4j2核心包 --&amp

2018-07-29 17:35:10 665

原创 Java应用beanstalkd消息队列

应用场景最近做一个项目,处理每一个从队列收到的消息都要去获取一个锁(使用Redis实现的分布式锁),如果没有获取到锁,也不能把这个消息给丢了,那可不可以把这个没有获取到锁的消息再发回队列?如果是用Kafka的话,消息一发回队列,马上就消费,然而这时候还是获取不到锁,进入死循环了,影响性能。考虑把这些消息给存起来,但又很繁琐。 如图,每个消费者收到消息后准备进行业务处理时都会去获取分布...

2018-07-14 12:10:20 2353

原创 在Spring Data JPA 使用LocalDate映射MySQL的DATE类型

MySQL 类型: `date_begin` DATE NOT NULL COMMENT '开始日期'实体类: @Entity@Table(name = "tb_plan")public class Plan { @Column(name = "date_begin") private LocalDate dateBegin; @Column(name =...

2018-06-26 00:15:52 6898 3

原创 Ubuntu Debian Linux快速安装Thrift

获取Thrift源去Apache Thrift官方网站:https://thrift.apache.org/download: 点击tar.gz的包下载链接进入: 复制上图其中一个红框中的地址到浏览器: 进入debian目录: 一个完整的源目录至少包含dists和pool两个目录,否则都是无效的源,进入dist目录: 这些就是Thrift的版本,0.9.3正好是我...

2018-05-30 23:53:58 5107 1

原创 Hadoop Single Node Cluster环境搭建

参考: linux中执行jps进程没有完全显示5个进程 https://www.youtube.com/watch?v=5rJTPMLKsq0 https://www.youtube.com/watch?v=OF4CzB54VYc

2018-05-23 10:58:23 382

原创 Hibernate log4j2配置打印sql日志

引入Hibernate版本: <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <

2018-05-20 19:31:33 6344 4

原创 彻底计数排序和基数排序

随机化快速排序、堆排序、归并排序、插入排序都是比较模型的排序,最好的情况下时间复杂度是O(nlgn),那有没有比nlgn更快的呢?答案是有的,利用空间换时间,那就是计数排序和基数排序。计数排序参考:计数排序 Java实现: import java.util.Arrays;public class CountingSort { public static void ...

2018-03-29 07:53:11 464

原创 mysql分组求和,并对和排序、取top n

面试时遇到的一个问题,当时我都把那个sql在纸上写出来了,面试官也没看我写得是什么,我自己也不敢确定,然后支支吾吾对面试官说没有写出来。现在回想起来,多么简单的一个sql,愧对我那些年写过的代码。还有就是在面试时写算法或sql语句时,按着自己的想法写出来,不管自己确不确定,先给面试官看,没准面试官会给你屡思路,自己也会从中学习。来看问题: create table tb_user_...

2018-03-19 21:04:54 28432 3

原创 WARNING: Nothing matches the include pattern '/private/etc/php-fpm.d/*.conf'

mac 10.13.3自带php7和php-fpm, 在运行php-fpm的时候出现: 解决: cd /private/etc/php-fpm.d sudo cp www.conf.default www.conf参考Mac OSX 10.9搭建nginx+mysql+php-fpm环境

2018-03-18 18:46:00 6444 2

原创 处理Java异常的不定法则

由于天天写bug,代码里各个地方充斥着对异常的处理,有时候思路被卡住:这个地方是该抛异常呢,还是我就地解决?是抛出受检异常(Exception)还是抛出非受检异常(RuntimeException)呢?这个异常带不带状态码啊?常常在想,有没有什么好的定律可以指导我优雅地处理Java异常。目前项目中常见的抛异常的做法是public interface IExceptionCode { ...

2018-02-12 21:40:13 1153

原创 Jar包冲突引发的血案

Spring Boot和RabbitMq集成的时候,引入compile("org.springframework.boot:spring-boot-starter-amqp")在运行项目的时候报了错: Caused by: java.lang.NoClassDefFoundError: com/rabbitmq/client/QueueingConsumer at ja...

2018-02-09 23:37:41 4725 2

原创 Spring Boot Profiles

为不同的环境设置配置文件来看项目结构图: application.yml: spring: profiles: active: dev # 激活特定环境的profile配置# include: usage_message运行项目以后,会激活application-dev.yml的配置项(杂七杂八的配置:MySQL、Redis、RabbitMQ)。同...

2018-02-08 16:25:38 750

原创 彻底理解归并排序算法

分治法归并排序算法是采用分治法的一个典型应用。分治法是设计算法的一种策略,包含三步: 1、分 把原问题分解成若干子问题 2、治 (递归地)解决子问题 3、合 合并子问题的解,得到原问题的解归并排序算法工作原理不断将数组一分为二,递归成一个个的子数组,得到最小子数组的排序,并合并: 1. 申请两个空间存放子序列数据,子序列是排好序的 2. 设定两个指针,分别指向两个序列...

2018-01-02 22:08:21 1708

原创 二分查找

回想大学时代写的第一个排序算法就是冒泡排序,原理也比较好理解,就是比较大的数往下沉就好了,哈哈哈,虽然其时间复杂度是 O(n2),但也很有必要缅怀一下:public class BubbleSort { public static void main(String[] args) { int a[] = {49, 38, 65, 97, 76, 13, 27, 49, 78,

2017-12-10 11:03:33 203

原创 冒泡排序

回想大学时代写的第一个排序算法就是冒泡排序,原理也比较好理解,就是比较大的数往下沉就好了,哈哈哈,虽然其时间复杂度是 O(n2),但也很有必要缅怀一下:public class BubbleSort { public static void main(String[] args) { int a[] = {49, 38, 65, 97, 76, 13, 27, 49, 78,

2017-12-10 10:59:44 176

原创 Atom-使用Markdown画流程图

最近接手了好几个新项目,看别人的代码总得记录一下,不然过脑之后一点感觉都没有。我会一边看代码,一边在编辑器里写一下代码的执行流程,但都是文字,不是很清晰。那画流程图吧,用个画图工具画流程图显得很麻烦!那怎么办,用markdown化流程图呗!那在你的电脑先安装一个Atom吧,一般的文件编辑我都使用Atom,那黝黑的外表很符合我健康的肤色。打开你的Atom,快捷键:cmd + shift + p,如下图

2017-11-08 22:53:25 10301

原创 commons-lang3之元组返回多个数据对象

经常有这样的操作,在一个方法体里返回多个不同类型的对象,Java的return只能返回一个数据对象。为了方便,为了节省时间,为了装x,也不要自己写一个类型封装了,使用commons-lang3所提供的元组来容装多个数据对象并返回。Example: @Test public void testTuple() { User user = new User();

2017-10-28 13:42:28 2137

原创 Guide to Guava Table

正好在项目中遇到两个元素决定一个值的情况,发现Guava的Table非常完美的满足了这样一个数据结构,我得mark下,so show my code: @Test public void guavaTableTest() { Table<Integer, Integer, String> animalTable = HashBasedTable.create();

2017-10-28 11:55:29 604

原创 通过Hystrix理解熔断和降级

刚开始参加工作的时候,看公司的SOA框架描述什么降级和熔断,当时我百脸懵逼,什么鬼。就写几个代码,还要熔断和降级,难道在代码中安装了保险丝,代码执行着突然不爽还要降一级吗,有病吧!笑哭了!曾几何时欠下的技术债终于要还了,最近项目中使用到了Netflix公司的开源组件Hystrix,于是研究了一下,对降级和熔断有些理解了。下面通过Hystrix的两个例子来理解降级和熔断,更多关于Hystrix的内容,

2017-10-14 11:16:54 10266 2

原创 介绍一款基于MVEL简单规则引擎

参考原文A Really Simple But Powerful Rule EngineMVEL 介绍最近正好做到规则引擎相关的需求,于是就预研了一下,找到一些可以满足我需求的技术。首先会引入一个东西——MVEL,怎么定义MVEL表达式,参看MVEL Guide。来一段代码看一下MVEL的功能,首先引入MVEL解析库: compile 'org.mvel:mvel2:2.3.2.Final'

2017-09-23 13:57:28 9222 1

原创 关于技术和产品的一些体会

从毕业伊始,到现在工作有一年多了,经历了很多项目,游走于技术、业务、产品之间。大部分工作是在开发业务功能,但并不妨碍自己从中学到很多东西。做着做着,慢慢觉得设计一个好的项目骨架,使用适合的设计模式、数据结构、算法能让你的系统变得易于扩展,可维护性增强,事半功倍。大学时候学的设计模式以及数据结构用处还是非常大的,是时候好好温习一下了。技术反正就是写代码呗,但希望自己是那个写代码写得好的。1. 注意响应

2017-09-21 22:12:36 1050

原创 Java对Collections进行分组

在处理批量数据的时候,查出一批数据后想分组处理咋办,有什么简便的方法吗? 准备一点数据: public class User { private Integer id; private String type; private String name; private String date; private BigDecimal money; pri

2017-09-15 21:34:54 11132

翻译 使用Java8进行API设计

英文原文:https://dzone.com/articles/the-java-8-api-design-principles只要你在写Java代码你就是一个API接口的设计者!程序员分不分享他们的代码不重要,代码会一直被其他人或代码的作者使用。因此,Java开发者掌握优秀API设计的基本理念就很重要了。一个好的API设计需要严谨的思维和很多经验之谈。幸运的是,我们可以向其他聪明的人学习

2017-09-03 23:00:13 561

原创 poi操作excel之: 将NUMERIC转换成TEXT

没办法,企业业务系统总是避免不了要使用excel进行导入和导出,本代码使用的poi版本是3.16:一、NUMERIC TO TEXT(生成excel)代码生成一个excel文件:public static void generateExcel() throws Exception { XSSFWorkbook workbook = new XSSFWorkbook();

2017-08-23 23:58:51 7291 1

原创 使用Optional去替换null check

“hi 伙计,你的代码又抛出了一个NullPointerException,哈哈!” “你烦不烦人,事情辣么多,我还要分神去检查null。”如下的null check代码在一般的项目中就特别的多:User user = userService.getUserById(12);if (null != user) { // balabala}Java8 提供了Optio

2017-08-20 11:48:46 7668

原创 MySQL/Java服务端对emoji的支持

最近一个开发一个功能需要支持emoji表情��,MySQL数据库使用的字符集是utf8,要让MySQL支持emoji字符,就是改变数据库的字符集为utf8mb4_unicode_ci。 上我的sql: /*改变表的字符集*/ALTER TABLE tb_product CHARSET utf8mb4 COLLATE utf8_general_ci;/*改变字段*/ALTER TABLE tb_

2017-08-12 22:35:30 634

新版Markdown教程

新版Markdown教程,文档里是其教程,喜欢Markdown的朋友,欢迎下载。

2018-10-01

secureCRT 7.1

强大的linux远程管理工具,是技术开发人员必备的“生活用品”。

2015-01-26

Go语言编程

go语言是google公司开发的一种新语言,随着时间的推进go语言也在开始展示他的的独特的一面,学习它,很有必要!

2014-02-13

梦断代码-pdf

这是一个电子书,专门讲述作者在软件开发过程中的点点滴滴,是学习、参考的好书……

2013-11-26

css禅意花园

css禅意花园,是网页设计较好的一个参考!

2013-08-02

计算机专用英语词

计算机专用英语词汇1500词,对于计算机英文文档的阅读,会得到很大提高!

2013-06-05

jpgraph-3.5.0b1.tar

jpgraph-3.5.0,超好的php制图!

2013-06-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除