
学习
程序员plus
这个作者很懒,什么都没留下…
展开
-
什么是Maven? 使用Apache Maven构建和依赖项管理
什么是Maven? 使用Apache Maven构建和依赖项管理开始使用最流行的Java构建和依赖管理工具MavenApache Maven是Java开发的基石,也是Java使用最广泛的构建管理工具。 Maven简化的基于XML的配置模型使开发人员能够快速描述或掌握任何基于Java的项目的轮廓,这使得启动和共享新项目变得很容易。Maven还支持测试驱动的开发,长期项目维护,其声明性配置和广泛...原创 2020-03-18 15:21:46 · 691 阅读 · 0 评论 -
创建一个Maven原型
通过优锐课的java架构学习分钟中,整理了本教程,以了解如何从现有项目中创建Maven原型。 此人使用Eclipse IDE创建Maven项目Java面试必备之JVM+GC教程介绍很多时候,我们需要创建一个Maven原型来分发项目模板。 在本文的本文中,我将描述从现有项目创建Maven原型是多么容易。创建一个Maven项目首先,让我们创建一个非常简单的Maven项目。 我正在使用Ecli...原创 2020-02-06 16:21:21 · 423 阅读 · 0 评论 -
用Java读取EDI数据
如今,大多数Java开发人员期望使用JSON来与其他系统和企业交换数据。但是,当无法使用JSON时会发生什么呢?容易忘记,还有其他格式的数据交换,其中一些更难处理。一种这样的格式称为EDI。EDI本身有多种风格(例如X12和EDIFACT),因此读取它的代码可能并不总是“一刀切”。特别期间通过优锐课在线的java分享中,了解了关于用Java读取EDI数据。受益匪浅,特整理出来供大家参考学习。...原创 2020-02-02 14:38:15 · 3474 阅读 · 1 评论 -
人们疯狂编写错误代码的3个原因
在优锐课的程序员学习方法论理, 讨论了程序员为什么在各处都看到错误的代码? 发生这种情况的原因有几个。一起来看看在过去的几天里,我一直在思考为什么我们作为一个行业一直一直在生产不良代码。能够构建高质量代码的系统的开发人员数量很少,而且彼此之间就相去甚远,正如老套话所说,每个人就像大海捞针一样。1.明显原因我能想到的最明显的原因是,有好的程序员和不太好的程序员,技能水平较高的人和技能水平较低...原创 2019-12-20 15:35:34 · 858 阅读 · 0 评论 -
全家都是程序员,会是一种什么样的体验?大部分人不知道是什么
转载地址:https://zhuanlan.zhihu.com/p/78322995来源:知乎作者:旧港94今天小编在网上看到一群程序员们在集体讨论一个非常好玩的话题“如果全家都是程序员,那将会是怎么样的一种体验?”下面小编就把网友们的这些脑洞分享给大家!1、网友甲:我觉得我小学可能毕不了业小时候,爸爸教数学:来,爸爸教你数小花,0,1,2,3,,,,妈妈教我学的英语:“hello...转载 2019-08-15 17:59:40 · 355 阅读 · 0 评论 -
村干货:25道经典Java算法题
即使做web开发,也会遇到各种各种需要解决的算法问题,本文节选部分经典练手算法,并提供相关参考答案,希望对你有所帮助【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题public class test01 {public static void main(S...原创 2019-07-24 20:07:06 · 262 阅读 · 0 评论 -
高并发编程系列:CountDownLatch、Semaphore等4大并发工具类详解
通常我们所说的并发包也就是java.util.concurrent,Java并发编程集中在这个并发包种,主要包含:Java并发工具类和并发容器等。今天主要介绍concurrent包的内容以及4大并发工具类。并发工具包1.并发工具类提供了比synchronized更加高级的各种同步结构:包括CountDownLatch、CyclicBarrier、Semaphore等,可以实现更加丰富的多...原创 2019-07-29 15:59:33 · 983 阅读 · 0 评论 -
并发编程系列:Java线程池的使用方式,核心运行原理、以及注意事项
并发编程系列:高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景线程池的缘由java中为了提高并发度,可以使用多线程共同执行,但是如果有大量线程短时间之内被创建和销毁,会占用大量的系统时间,影响系统效率。为了解决上面的问题,java中引入了线程池,可以使创建好的线程在指定的时间内由系统统一管理,而不是在执行时创建,执行后就销毁,从而避免了频繁创建、销毁线程带来的系统开销。线...原创 2019-07-29 15:49:23 · 181 阅读 · 0 评论 -
Java并发编程系列:线程的五大状态,以及线程之间的通信与协作
今天主要分享多线程状态流转与通信,这也是面试中必考的基础知识点。01多线程的基本概念1.进程进程是操作系统进行资源分配和调度的基本单位。2.线程线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。3.多线程什么是多线程呢?即就是一个程序中有多个线程在同时执行。02线程的生命周期java中每个线程都需经历新生、就绪、运行、阻塞和死亡五种状态,线程从...原创 2019-07-29 15:46:05 · 332 阅读 · 0 评论 -
@程序员,不会 Debug 还做什么开发?
原文地址:原文地址转自 知乎—架构师每个大程序里都有一个不安分的小程序”,想要成为一名好的开发人员,你得先真正学会 Debug 才行。以下为译文:总结我的编程生涯,可以得出如下两个硬道理:任何代码都可能出错,而且肯定会出错。代码有味道。而中和这些苦涩现实的唯一方法就是调试(Debug)。没错,就是调试。在刚开始接触编程的时候,没人会喜欢调试。相反,调试往往是沮丧和恐惧的根源。很多人...转载 2019-07-23 20:40:10 · 188 阅读 · 0 评论 -
简单聊聊volatile关键字的原理
volatile这个关键字他主要做两个事情,一个是禁止重排序,一个是内存可见性。一、禁止重排序先做一个思考,为什么要禁止重排序?回答这个问题之前先想想为什么要重排序?我们可以这么理解,举个例子,我们的代码是这个样子:a=1+1;c=24b=3+2;单核cpu会是这么计算,先算a=a+1,再算b=b+1,最后是c=ab;这么算自然是没有问题的,但是我们希望计算机的速度更快,假设原先C...原创 2019-07-30 16:19:09 · 207 阅读 · 0 评论 -
面试题系列:谈谈HTTP的请求和响应
HTTP是HyperText Transfer Protocol的缩写,意思是超文本传输协议。它是一种应用层协议,允许基于WEB的应用程序进行通信和交换数据。你可以把HTTP看作是网络的信使。HTTP是基于TCP/IP协议的,可以使用http进行内容的传输,比如图片,视频,音频,文档等等。客户端和服务端需要进行通信的话,通常会使用request response cycle的形式。客户端需...原创 2019-07-30 17:11:24 · 552 阅读 · 0 评论 -
Socket 通信原理
整理和总结了一下大家常遇到的问题:1. 客户端socket发送消息后,为什么服务端socket没有收到?2. 使用while 循环实现连续输入,是不是就是多线程模式?3. 对多线程处理机制不是很明白,希望详细讲解?4. 希望详细讲解ServerSocketChannel和SocketChannel与ServerSoket和Socket的区别?5. 希望有详细的例子,可以...原创 2019-07-30 18:19:08 · 6099 阅读 · 0 评论 -
Java多线程之Executor框架「Callable、Future和Executor」
引言Executor框架是指JDK 1.5中引入的一系列并发库中与Executor相关的功能类,包括Executor、Executors、ExecutorService、Future、Callable等。一、为什么要引入Executor框架?1、如果使用new Thread(…).start()的方法处理多线程,有如下缺点:① 开销大。对于JVM来说,每次新建线程和销毁线程都会有很大的开销...原创 2019-07-22 19:56:19 · 694 阅读 · 0 评论 -
面试解答系列:什么是Spring的依赖注入?哪些方法进行依赖注入?
Spring 能有效地组织J2EE应用各层的对象。不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的 管理下有机地协调、运行。Spring将各层的对象以松耦合的方式组织在一起,Action对象无须关心Service对象的具体实现,Service对 象无须关心持久层对象的具体实现,各层对象的调用完全面向接口。当系统需要重构时,代码的改写量将大...原创 2019-07-31 16:59:11 · 4859 阅读 · 0 评论 -
简单理解散列表(如py的dict)的内部机制:实现、冲突和散列函数
我们知道,数组利用下标可以随机访问数组下标对应的值,相对于链表的顺序访问,数组的下标访问是最快的(常量时间,二分查找是对数时间)。如果反过来,怎样才能由数组的值访问到其下标的值?或者,如果存储了一份商品价格表(商品名称、价格),怎样才能通过商品名称随机访问到其价格呢?通过散列表(散列,来自英文字hash,也有翻译成哈希的,散列表有时也叫哈希表、关联数组),可以实现此目的。数据在内存中的物理存...原创 2019-07-26 18:59:30 · 381 阅读 · 0 评论 -
面试题解答系列:同步与异步,阻塞与非阻塞的关系
这几个知识点其实用处很多,也是很容易搞混的,我们平时可能用了但是并没有发现,今天想来总结一下。我第一次感受到同步和异步的不同是在学习volatile的时候(因为我之前也没有多线程概念),之前也被同步啊这些概念搞的很乱。当我主线程新建了一个子线程之后两个线程是同时运行的,当时我才发现原来他们不是串行的,献丑了。好了进入正题。从总体来看,同步和异步的概念是大于阻塞与非阻塞,并且他们之间没有对应关系...原创 2019-08-01 17:29:13 · 940 阅读 · 0 评论 -
TCP/IP体系结构
一、简介1、传输控制协议/网络互联协议,是针对Internet开发的一种体系结构和协议标准,相对于OSI体系结构更简洁。2、结构类型:分层体系,由下至上分别是网络接口层、网际层、传输层和应用层(四层分法)。3、TCP/IP协议与OSI模型的对应关系(五层分法)。二、TCP/IP体系结构1、应用层:为用户的应用程序提供接口,使用户可以访问网络。(IE浏览器就处于应用层)HTTP 超...原创 2019-08-01 17:50:28 · 2349 阅读 · 0 评论 -
面试题解答系列:ISO/OSI七层模型,包括TCP,IP的一些基本知识
1.ISO/OSI七层模型下四层是为数据传输服务的,物理层是真正的传输数据的,数据链路层、网络层、传输层主要是写入对应数据的传输信息的物理层:比特设备之间的比特流的传输、物理接口、电气特性数据链路层:帧保存的最主要的信息是网卡的 mac 地址,mac 地址负责局域网通信的,发件人和收件人的mac 地址mac地址的作用:尽管你是要在互联网中传输数据(貌似需要IP地址就可以了),但是在互联...原创 2019-08-01 18:03:31 · 1307 阅读 · 0 评论 -
面试官最喜欢问的:多线程、线程并发面试题详解(volatile+ThreadLocal+Sleep)
1、什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。2、线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程...原创 2019-07-23 20:33:44 · 465 阅读 · 0 评论 -
JAVA开发异常处理十大秘诀
1.前提 第一层:遇到异常首先必须告诉自己,冷静,不要慌。(一看到Bug就心慌,那么武功就施展不了了)2.入门级第二层:遇到Bug,第一潜意识看输出异常的信息的(控制台输出,Junit输出,页面输出),优先将异常输出在控制台。建议:遇到JUnit异常输出,最好转成控制台输出。(对测试方法的代码try catch )如:一下异常如果在Junit查看,不好发现为,只知道是数据库出错了。转...原创 2019-07-23 20:22:18 · 211 阅读 · 0 评论 -
2年java开发,迷茫了,该怎么办?
2年java开发,迷茫了,该怎么办?头发浓密乌黑的程序员 2019-05-28 14:59迷茫的原因?程序员是一个特殊的群体,我们不知道为什么加入这个行业,也不知道这个行业还能做多久,不同人有着不同的故事,有着不同的迷茫。家庭的作用你和大多数人不一样,你投入大量的业余时间,拼了命的学习总结,终于有点成绩,在职业上有所收获,级别和待遇都比一般人高了。但是,不要忽视一个问题,那就是家庭。有...原创 2019-05-28 15:01:20 · 552 阅读 · 0 评论 -
单点登录的三种实现方式
在我实习之前我就已经在看单点登录的是什么了,但是实习的时候一直在忙其他的事,所以有几个网站就一直躺在我的收藏夹里边:在前阵子有个读者来我这投稿,是使用JWT实现单点登录的(但是文章中并没有介绍什么是单点登录),所以我觉得是时候来整理一下了。简单代码实现JWT(json web token)完成SSO单点登录一、什么是单点登录?单点登录的英文名叫做:Single Sign On(简称SSO...原创 2019-05-28 14:57:05 · 9047 阅读 · 2 评论 -
java学习的八大忌
1.人云亦云,没有思想好多人就是听了个Java收入高,不是相关行业的要转行,不是相关专业的就要自学,就要培训。但是自己没有对自己进行过评估,跟风就上,不是说一定学不好,而是对于大部分这种情况来说确实不易。初学少则学习数月,多则一二年,尚不知人最宝贵的并非金钱,而是时间。2.一叶障目,七零八碎好多吧友学Java就知道是Java用来开发网站和软件,其实软件开发的范畴要比Java大的多。本人网站没...原创 2019-06-05 14:10:10 · 269 阅读 · 0 评论 -
KMP字符串模式匹配算法Java实现
本文灵感来自于July的博客从头到尾彻底理解KMP,并着重于Java实现原创 2019-05-30 14:47:27 · 545 阅读 · 0 评论 -
海量数据解决思路之BitMap
一、概述本文将讲述Bit-Map算法的相关原理,Bit-Map算法的一些利用场景,例如BitMap解决海量数据寻找重复、判断个别元素是否在海量数据当中等问题.最后说说BitMap的特点已经在各个场景的使用性。二、Bit-Map算法先看看这样的一个场景:给一台普通PC,2G内存,要求处理一个包含40亿个不重复并且没有排过序的无符号的int整数,给出一个整数,问如果快速地判断这个整数是否在文件4...原创 2019-05-30 14:44:28 · 282 阅读 · 0 评论 -
Java程序员如何提升自我?可以从这8方面出发
作为一个开发人员,我们最大的挑战就是保持自己了解新的技术。技术变化很快,你大概每两年就会看到一个新版本的编程语言和框架。最近两年区块链、人工智能,物联网等等技术已经扑面而来了。除了这些离我们较远的,说几个离我们最近的:JDK 9、 Spring 5、 Spring Security 5、 Spring Boot 2、ServiceMesh等。这一年对于一个Java开发来说可能是最忙碌的一年了,我...原创 2019-05-30 14:36:12 · 1227 阅读 · 0 评论 -
java有哪些冷知识?
1)jvm有很多种,其实jvm是一个标准,sun做的那个叫hotspot,作者就是后来v8的作者lars bak,其他公司也做过jvm,其中做得比较好的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在内,都做得不行,所以jvm主要是整合淘汰掉这些做得不好的jvm(s),整合成一个统一的openjdk2)java是典型的oop语言,其执行效率的优化,最早就是lars bak...原创 2019-05-30 14:22:43 · 271 阅读 · 0 评论 -
自学Java到什么程度才能就业?
多年Java开发从业者:首先,这个问题主要问:自学Java编程技术,如果才能找到一份Java编程的工作。按照现在的招聘标准来看,无论你去哪个公司面试,你只需要满足他们公司的需求就可以。找到一份Java编程工作需要掌握的内容如下:首先是Javase作为Java最基本的学习内容,不在多说。然后是掌握Java的基本原理,因为做Java编程开发必须学会Java,用到Java非常多,但是现在很多公司是...原创 2019-05-27 11:22:26 · 1471 阅读 · 4 评论 -
业务系统开放实现
一、引言现在大部分的人都是在做业务,毕竟业务是一个公司的支撑,没有业务带来的收益,公司又怎么能发展呢。做技术的人都喜欢钻研技术,认为做技术是有含金量的,包括我自己在前两年的工作中也是这么想的。后面发现不是这样的,技术是为了更好的服务于业务的发展,真正体现一个人的技术是他能用技术解决业务上的难题。做业务的同学有一个感受,业务需求永远都做不完,做完一个接一个,天天都在码代码。这个时候就要抬头看路了...原创 2019-05-29 11:06:26 · 209 阅读 · 0 评论 -
Spring的连接数据库以及JDBC模板(实例讲解)
前言今天介绍的是关于Spring的数据库连接以及Jdbc模板的相关API方法,虽然在学习了hibernate之后,会知道实现数据库连接一般都是使用hibernate等持久化框架来实现的。但是,很多时候一些涉及到事务的东西使用这些框架并不能够实现,所以我们还需要结合spring来实现相关的需要。一、创建工程、导包要想使用Spring的jdbc模板前,还需要导入相关的jar包:二、进行相关的...原创 2019-07-15 11:54:49 · 2388 阅读 · 0 评论 -
干货分享:新晋程序员不知道的25个编程小技巧
如果只是周而复始地写代码,想必编程的工作会让很多程序员发狂。如何在看似枯燥的工作寻找乐趣,我认为对工作的激情和兴奋感、始终学习的态度,还有掌握一些实用高效的编程技巧,对于提升工作乐趣和效率大有裨益。今天我就跟大家分享一下25个实用编程小技巧,希望可以给大家的工作和学习带来更多的思考。不要毫无计划地写代码,思考、调研、计划、编码、测试、修改,一个都不能少;不要写代码前过度计划,在一头钻...原创 2019-07-02 11:27:03 · 216 阅读 · 0 评论 -
腾讯的“无名之辈”,却比雷军更有钱,他才是程序员里的人生赢家
想了解有趣有料的数码资讯,手机深度评测,数码选购要点,最新薅羊毛秘诀,动动手指,点击关注我们。避坑的事交给我们来做吧~穷的日常吃土的学霸君,不知道为什么就精准地收到了 2019 中国富豪排行榜的推送。。。。。看了一眼,前十来来回回都是那几位老熟人,遂略过。直到第 15 开外,学霸君发现了一个写着「腾讯创始人之一」的大佬,无情地骑在顺丰王卫、小米雷军,还有百度李彦宏之上。说起腾讯,其实大家...原创 2019-06-04 11:08:37 · 944 阅读 · 0 评论 -
做一个优秀的程序员到底难在哪里?
初入此门,觉得语法和算法很难,搞不懂C++的STL,搞不懂Java的Full GC,搞不懂函数式,搞不懂动态规划和各种树、图……入行二三年,正常情况下,语法和算法都不再成为门槛,开始感觉最难是架构:RX还是Vue? Weex还是RN?Django还是Flask?然而入行五六年,我感觉最难的,还是在“人”。对于上级,你要说服他们你在做的东西是有意义的,或者使你做的东西至少“看起来”有意义——因...原创 2019-05-29 12:18:21 · 398 阅读 · 0 评论 -
系统架构第三篇之架构(上)
一、引言架构在百科中的定义是"架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计"。看到这个定义,从中获取的有效信息不大,只知道这个很厉害,用于指导大型软件系统各个方面的设计。那何为架构呢?自己对它的理解是"按照架子把它构建出来",这里包含两个方面:一是架子是什么;二是如何构建出来。在架构两篇文章中回答这两个问题。二、架构分类大部分人谈的架构,一般是...原创 2019-05-29 11:25:48 · 281 阅读 · 0 评论 -
系统架构第二篇之系统(下)
一、引言上一篇文章中已经提到系统是具有层次特性,那么系统的层是如何推导出来的呢?本文就主要从系统分层的最终表现反向推导出分层的过程。二、再论系统特性在上一篇文章中根据系统的定义,提炼出系统的两个关键特点:系统的整体和部分、系统的层次结构性。层次特性现在我们大概知道了,在计算机系统中也有接触过,如网络协议的分层、计算机的分层等等。分层是一种表象特征,同时系统也具有整体和部分的特征。通过整体与...原创 2019-05-29 11:24:54 · 190 阅读 · 0 评论 -
系统架构第一篇之系统(上)
一、引言系统架构是平常讲得比较多的词汇,但它的含义比较广,以自己的思考和实践写出系统架构系统文章,希望对大家有些启发作用。在本文中,先讨论什么是系统,系统在百科中的解释是"系统就是若干相互联系、相互作用、相互依赖的要素结合而成的,具有一定的结构和功能,并处在一定环境下的有机整体"。从这句话里可以提炼两点内容出来:一是整体与部分(由要素结合而成的);二是结构性(具有一定的结构和功能)。本文也是基...原创 2019-05-29 11:23:45 · 200 阅读 · 0 评论