摘要: 先来看下结论:正确启动线程的方式是使用start()方法,而不是使用run()方法。 代码实战 1. 输出线程名称 “Talk is cheap. Show me the code”,用代码说话:分别调用run()方法和start()方法,打印输出线程的名字。 运行结果: 2. 深入一点 如果代码是 阅读全文
posted @ 2020-01-29 20:36 James_Shangguan 阅读(804) 评论(0) 推荐(1) 编辑
摘要: 2019在干什么,在实习和找工作的旋律中飞快度过。说起这段历程,肯定首先是感谢。感谢在此过程中遇到的每家公司和每一个人,感谢给我机会的每家公司,有你们的认可,我觉得我还是有价值的;也要感谢拒绝我的公司,谢谢你们曾经看轻我,是你们的拒绝和不屑,鞭策我继续努力。 第一份实习 过完年回来学校,三月份开始准 阅读全文
posted @ 2019-12-29 14:46 James_Shangguan 阅读(1404) 评论(2) 推荐(4) 编辑
摘要: 随着生产力和经济社会的发展,现在已经进入内容付费的时代。得到APP便是其中的代表作,本文用于爬取得到APP的课程数据,包括课程名称、作者、单价、学习人数等数据,可作为一个爬取APP数据的demo进行分享。 阅读全文
posted @ 2019-10-27 16:55 James_Shangguan 阅读(3191) 评论(0) 推荐(1) 编辑
摘要: 并发编程是Java语言的重要特性之一,“如何在Java中实现线程”是学习并发编程的入门知识,也是Java工程师面试必备的基础知识。本文从线程说起,然后用代码说明如何在Java中实现线程。 阅读全文
posted @ 2019-08-28 22:10 James_Shangguan 阅读(1545) 评论(0) 推荐(3) 编辑
摘要: synchronized关键字在多线程并发编程中一直是元老级角色的存在,是学习并发编程中必须面对的坎,也是走向Java高级开发的必经之路。本文介绍synchronized关键字,用代码展示多线程访问同步方法的7种情况。 阅读全文
posted @ 2019-08-24 16:46 James_Shangguan 阅读(1712) 评论(0) 推荐(2) 编辑
摘要: 本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群。受限于自身条件,本文使用VMware虚拟机的克隆功能克隆了两台服务器进行操作,仅作为一个demo,开发中可根据实际情况进行调整。 阅读全文
posted @ 2019-08-03 19:41 James_Shangguan 阅读(11627) 评论(2) 推荐(5) 编辑
摘要: RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitMQ进行简单整合,实现生产和消费消息。 阅读全文
posted @ 2019-07-27 18:46 James_Shangguan 阅读(15496) 评论(1) 推荐(3) 编辑
摘要: RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要了解一下相关知识,RabbitMQ(一)已经入门RabbitMQ,本文介绍RabbitMQ的高级特性。 阅读全文
posted @ 2019-07-21 15:37 James_Shangguan 阅读(20567) 评论(3) 推荐(9) 编辑
摘要: RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章,主要内容包括RabbitMQ是什么、RabbitMQ核心概念、常用交换器类型、用Docker安装RabbitMQ等。 阅读全文
posted @ 2019-07-20 11:00 James_Shangguan 阅读(195539) 评论(3) 推荐(36) 编辑
摘要: 本文使用Docker部署Spring Boot项目。部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven;接着搭建一个Spring Boot项目,使其支持Docker部署;最后进行部署和测试。 阅读全文
posted @ 2019-06-24 19:29 James_Shangguan 阅读(20767) 评论(1) 推荐(2) 编辑
摘要: Docker提供一种安全、可重复的环境中自动部署软件的方式,拉开了基于与计算平台发展方式的变革序幕。如今Docker在互联网公司使用已经非常普遍。本文用十分钟时间,带你快速入门Docker。 阅读全文
posted @ 2019-06-22 09:13 James_Shangguan 阅读(1204) 评论(0) 推荐(0) 编辑
摘要: 在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能。关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Mybatis并完成CRUD操作,这是本文操作的基础。本文先准备一个测试的数据库,然后使用MyBatis Generator进行部分代码自动生成,再以一个例子来展示稍微高级点的操作:使用Mybatis完成级联一对多的CRUD操作。 阅读全文
posted @ 2019-06-06 15:45 James_Shangguan 阅读(1961) 评论(0) 推荐(0) 编辑
摘要: Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 阅读全文
posted @ 2019-05-21 15:35 James_Shangguan 阅读(6451) 评论(2) 推荐(2) 编辑
摘要: 单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。正是因为简单,也成为面试中的众矢之的。本文来手写单例模式。 阅读全文
posted @ 2019-04-22 20:00 James_Shangguan 阅读(1986) 评论(0) 推荐(0) 编辑
摘要: 前几天面试,被一位面试官嫌弃了“你的Linux命令有点low”。说心里话,还是挺感激的,因为很少有面试官会指出我的简历上出现的问题。所以呢,今天就来聊一聊不low的Linux命令——搜索文件的find命令、搜索文件内容的grep命令、对文件内容进行统计的awk命令、批量替换文件内容的sed命令。 阅读全文
posted @ 2019-04-15 20:56 James_Shangguan 阅读(2620) 评论(2) 推荐(1) 编辑
摘要: 排序算法——最基础的算法,互联网面试必备技能。春来来了,排序的季节来了!本文使用Java语言优雅地实现常用排序算法,希望对大家有帮助,早日拿到Offer! 阅读全文
posted @ 2019-04-02 17:10 James_Shangguan 阅读(924) 评论(1) 推荐(1) 编辑
摘要: 不久前,裸考国内知名电商平台拼多多的大数据岗位在线笔试,问答题(写SQL)被虐的很惨,完了下来默默学习一波。本文以一个笔试题为线索,穿插了基本的SQL语法,也涉及到高级的自定义变量和实现排名,希望帮助到找实习、找工作的同学。 阅读全文
posted @ 2019-03-25 09:19 James_Shangguan 阅读(3991) 评论(2) 推荐(0) 编辑
摘要: 在工作中常会遇到将数据分组排序的问题,如在考试成绩中,找出每个班级的前五名等。 在orcale等数据库中可以使用partition语句来解决,但在mysql中就比较麻烦了。本文就是专门解决这个问题的。 阅读全文
posted @ 2019-03-23 18:21 James_Shangguan 阅读(870) 评论(0) 推荐(0) 编辑
摘要: MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名。尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名效果。 阅读全文
posted @ 2019-03-22 14:59 James_Shangguan 阅读(731) 评论(0) 推荐(0) 编辑
摘要: 线程是比进程更加轻量级的调度执行单位,理解线程是理解并发编程的不可或缺的一部分;而生产过程中不可能永远使用裸线程,需要线程池技术,线程池是管理和调度线程的资源池。因为前不久遇到了一个关于线程状态的问题,今天就趁热打铁从源码的层面来谈一谈线程和线程池的状态及状态之间的转移。 阅读全文
posted @ 2019-03-14 09:00 James_Shangguan 阅读(1194) 评论(0) 推荐(1) 编辑