- 博客(159)
- 收藏
- 关注
原创 在Java中快速创建kafka
在优锐课的java学习分享中,这个详细的教程将帮助你创建一个简单的Kafka生产者,该生产者可将记录发布到Kafka集群。在本教程中,我们将创建一个简单的Java示例,该示例创建一个Kafka生产者。 你创建一个名为my-example-topic的新复制的Kafka主题,然后创建一个使用该主题发送记录的Kafka生产者。将向Kafka制作人发送记录。同步发送记录,稍后,你将异步发送记录。在你...
2019-12-14 15:23:22
470
原创 如何使用Spring Cloud Contract进行测试
通过优锐课核心java学习笔记中,我们可以看到如何使用Spring Cloud Contract进行测试,码了很多专业的相关知识, 分享给大家参考学习。在使用Spring Cloud Contract进行测试了解有关消费者/提供商关系的更多信息以及如何使用Spring Cloud合同进行测试; 测试和验证API通信。1、了解如何使用Spring Cloud进行测试。随着许多行业转变为微服务...
2019-12-13 17:20:09
470
原创 摸透Spring MVC真正如何工作核心原理(part:2)
通过优锐课核心Spring MVC学习笔记中,我们可以看到Spring MVC中包含的功能可以在Web应用程序中发挥巨大作用的强大功能,一起来看看。这里看着很迷的小伙伴可以去我主页,翻前面的第一章节,part110、DispatcherServlet:统一请求处理HttpServlet.service()实现通过HTTP动词的类型路由请求,在低级servlet的上下文中非常有意义。 但是,在...
2019-12-13 10:09:58
236
原创 摸透Spring MVC真正如何工作核心原理(part:1)
通过优锐课核心Spring MVC学习笔记中,我们可以看到Spring MVC中包含的功能可以在Web应用程序中发挥巨大作用的强大功能。这是Spring Web MVC的强大功能和内部工作的深入研究,它是Spring Framework的一部分。1、项目设置在整篇文章中,将使用最新,最出色的Spring Framework5。我们在这里重点介绍Spring的经典Web堆栈,该框架的第一版已经...
2019-12-12 14:51:07
228
原创 微服务架构-使用Docker进行Spring Boot开发
优锐课学习笔记中研究了如何将容器带入Spring Boot项目。 在这里,我们使用Docker来包含Java REST后端,而无需担心操作系统。一起来看看AtSea Shop是示例店面应用程序,可以部署在不同的操作系统上,并且可以针对企业开发和运营环境进行自定义。 在较早的帖子中,我讨论了该应用程序的体系结构。 在本文中,我将介绍如何设置开发环境以调试在容器中运行的Java REST后端。1、...
2019-12-12 12:03:42
355
原创 为什么 Java 坚持多线程不选择协程?
协程是非常值得学习的概念,它是多任务编程的未来。但是Java全力推进这个事情的动力并不大。先返回到问题的本源。当我们希望引入协程,我们想解决什么问题。我想不外乎下面几点:节省资源,轻量,具体就是:节省内存,每个线程需要分配一段栈内存,以及内核里的一些资源节省分配线程的开销(创建和销毁线程要各做一次syscall)节省大量线程切换带来的开销与NIO配合实现非阻塞的编程,提高系统的吞吐使...
2019-08-19 17:54:14
1818
1
原创 为什么说java是只有值传递?
如果你学的第一门程序语言是java可能对这个传递方式没有那么敏感,如果学了c或c++,然后再学java,那么可能对这个问题会感到困惑。1.值传递与引用传递的概念在将传递方式之前先理解一下形参与实参。形式参数:是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。实际参数:在调用有参函数时,主调函数和被调函数之间有数据传递关系。在主调函数中调用一个函数时,函数名后面括...
2019-08-19 16:47:23
273
原创 JAVA面试题 启动线程是start()还是run()?为什么?
面试官:请问启动线程是start()还是run()方法,能谈谈吗?应聘者:start()方法当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。但是这并不意味着线程就会立即运行。只有当cpu分配时间片时,这个线程获得时间片时,才开始执行run()方法。start()是方法,它调用run()方法.而run()方法是你必须...
2019-08-17 17:48:53
961
原创 程序员真不是青春饭
程序员,尤其是互联网行业,永远没有青春饭一说,仍然是可持续发展,回报率较高的行业。如果你觉得它是青春饭,说明你还没有找到这个岗位可持续发展的钥匙。不管你在IT行业待几年,互联网思维会让你受用终生。有网友留言咨询:「哥,你好,我是一名26岁的女生,土想从事前端开发,现在还来得及吗?」我看见这条消息之后,便简短地回复了一下:只要你热爱它,一切都来得急。回复完之后,她又发来一条消息:「可I...
2019-08-17 17:05:57
331
原创 为什么说麻将比围棋难?游戏AI复杂度怎么算
在游戏AI的缘起与进化一文中我们讲到,游戏 AI 的进化始终与 AI 研究相生相伴,这是由于游戏种类丰富,难度和复杂性也很多样,人工智能攻克不同类型的游戏自然也反映了 AI 研究的进展,因此长期以来游戏一直是 AI 研究的黄金测试平台。随着人工智能逐个攻克双陆棋、国际跳棋、国际象棋、围棋等棋类游戏,AI 仍在继续挑战难度更高的游戏,例如扑克、桥牌、麻将这类不完美信息游戏。那么为什么这类游戏的难度...
2019-08-16 16:59:04
3285
1
原创 面试题解答系列:Hibernate中二级缓存使用和详解
一.简介Gaving King曾经对别人说,hibernate最耀眼之处是hibernate的缓存机制。Hibernate为了降低应用程序对物理数据源的访问,使用了缓存机制。Hibernate缓存包括一级缓存和二级缓存。一级缓存又称"Session的缓存",是不能被卸载的。本文笔者为大家介绍的是Hibernate的二级缓存。二.二级缓存Hibernate的二级缓存又称为"SessionFac...
2019-08-16 15:57:08
296
原创 面试题解答系列:Hibernate中一级缓存使用和详解
什么是一级缓存Hibernate创建每个Session对象时,都会给Session分配一块独立的缓存区,用于存放Session查询出来的对象,这个分配给Session的缓存区称之为一级缓存,也叫Session级缓存为什么使用一级缓存Session读取数据时,会优先向缓存区取数据,如果存在数据直接返回,不存在才会区数据库查询,从而降低了数据库的访问次数。提升了代码的运行效率如何使用一级缓存...
2019-08-15 18:22:01
206
转载 全家都是程序员,会是一种什么样的体验?大部分人不知道是什么
转载地址:https://zhuanlan.zhihu.com/p/78322995来源:知乎作者:旧港94今天小编在网上看到一群程序员们在集体讨论一个非常好玩的话题“如果全家都是程序员,那将会是怎么样的一种体验?”下面小编就把网友们的这些脑洞分享给大家!1、网友甲:我觉得我小学可能毕不了业小时候,爸爸教数学:来,爸爸教你数小花,0,1,2,3,,,,妈妈教我学的英语:“hello...
2019-08-15 17:59:40
363
原创 面试题解答系列:LeetCode相关题目参考
LeetCode相关题目参考1.两数之和参考答案:class Solution {public int[] twoSum(int[] numbers, int target) {int [] res = new int[2];if(numbers==null||numbers.length<2)return res;HashMap<Integer,Integer>...
2019-08-14 18:20:51
194
原创 面试题解答系列:数组与链表
LeetCode相关题目参考1.两数之和参考答案:class Solution {public int[] twoSum(int[] numbers, int target) {int [] res = new int[2];if(numbers==null||numbers.length<2)return res;HashMap<Integer,Integer>...
2019-08-14 18:11:49
324
转载 面试题解答系列:GC收集器种类,CMS收集器与G1收集器的优缺点
原文转载来自:https://zhuanlan.zhihu.com/p/77967443作者:旧港94来源:知乎首先要知道 Stop the world的含义(网易面试):不管选择哪种GC算法,stop-the-world都是不可避免的。Stop-the-world意味着从应用中停下来并进入到GC执行过程中去。一旦Stop-the-world发生,除了GC所需的线程外,其他线程都将停止工作,...
2019-08-13 17:26:31
822
原创 GC的三种收集方法:标记清除、标记整理、复制算法的原理与特点
一、什么是GCJava GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,在使用JAVA的时候,一般不需要专门编写内存回收和垃圾清理代码。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。二、关于GC的三种算法1、复制算法(Copying):在JVM的堆内存当中,新生代使用的是复制算法。新生代的内存区域又分成Eden、Fro...
2019-08-13 16:47:47
4970
1
原创 两个对象相互引用会不会被GC?
两个相互引用的对象会被GC垃圾回收吗?答案应该是不会!只要对象、属性等存在被引用,GC都会过滤掉的,不会被回收。笔者就简单谈一谈其中的原理吧。判断对象是否存活,可以考虑以下方法。1、引用计数算法给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1。当引用失效时,计数器值就减1。任何时刻计数器为0的对象就是不可能再被使用的。但是主流的java虚拟机没有采用引用计数算法,其中最主要的原...
2019-08-12 17:30:26
2372
转载 GC的两种判定方法:引用计数与引用链
原文转自:https://zhuanlan.zhihu.com/p/77760838作者:旧港94转侵删Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Ja...
2019-08-12 17:22:43
936
1
原创 面试题解答系列:java newCachedThreadPool 线程池使用在什么情况下?
Executors 是一个Java中的工具类。提供工厂方法来创建不同类型的线程池。从上图中也可以看出,Executors的创建线程池的方法,创建出来的线程池都实现了ExecutorService接口。常用方法有以下几个:newFiexedThreadPool(int Threads):创建固定数目线程的线程池。newCachedThreadPool():创建一个可缓存的线程池,调用execut...
2019-08-10 17:30:19
2133
1
原创 面试题解答系列:排序算法的时空复杂度、稳定性分析
1.基本概念时间复杂度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法的语句执行次数称为语句频度或时间频度。记为T(n)。n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律,为此,引入时间复杂度概念。若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数...
2019-08-09 18:20:27
1092
1
原创 面试题解答系列:算法连载之求解两个有序数组的中位数
问题给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。找出这两个有序数组的中位数。假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.合并两个有序数组来获得中位数1、先将两个有...
2019-08-09 17:06:44
661
原创 socket 和mina 的区别
MINA,Grizzly[grizzly-nio-framework],xSocket都是基于 java nio的 server framework. 这里的性能缺陷的焦点是指当一条channel上的SelectionKey.OP_READ ready时,1.是由select thread读完数据之后再分发给应用程序的handler,2.还是直接就分发,由handler thread来负责读数...
2019-08-08 11:28:37
1018
原创 面试题解答系列:在 Spring中如何注入java集合
您已经看到了如何配置基本数据类型使用value属性和使用标签的ref属性在你的bean配置文件中的对象引用。这两种情况下处理过单值到一个bean。现在什么样,如果你想通过多元价值,如Java Collection类型List, Set, Map 及 Properties。要处理这种情况,Spring提供了四种类型的如下集合的配置元素:元素描述list这有助于注入值列表Li...
2019-08-07 11:29:51
2355
原创 面试题解答系列:解释Spring框架中bean的生命周期
Bean的生命周期:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁Bean的定义Bean 是 spring 装配的组件模型,一切实体类都可以配置成一个 Bean ,进而就可以在任何其他的 Bean 中使用,一个 Bean 也可以不是指定的实体类,这就是抽象 Bean 。Bean的初始化Spring中bean的初始化回调有两种方法一种是在配置文件中声明init-m...
2019-08-07 11:02:20
7587
1
原创 面试题解答系列:java invokelater 以及invokeandwait
SwingUtilities中invokeLater和invokeAndWait介绍在Java中Swing是线程不安全的,是单线程的设计,这样的造成结果就是:只能从事件派发线程访问将要在屏幕上绘制的Swing组件。事件派发线程是调用paint和update等回调方法的线程,它还是事件监听器接口中定义的事件处理方法,例如,ActionListener中的actionPerformed方法在事件派发...
2019-08-06 18:08:39
331
原创 面试题解答系列:单例模式:懒汉、饿汉以及双重检查
一、基本概念单例模式属于创建型设计模式。确保一个类只有一个实例,并提供该实例的全局访问点。实现: 使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。二、结构类图:私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。三、几类经典单例模式实现1、懒汉式-线程不安全下面的实现中,私有静态变量 uniqueInstance 被延迟实例化,这样做...
2019-08-06 17:48:56
681
原创 面试题解答系列:关系型数据库和非关系型数据的比较
一、关系型数据库关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织优点:1、易于维护:都是使用表结构,格式一致;2、使用方便:SQL语言通用,可用于复杂查询;3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。缺点:1、读写性能比较差,尤其是海量数据的高效率读写;2、固定的表结构,灵活度稍欠;3、高并发读写需求,传统关系型数据库来说,硬盘...
2019-08-06 16:01:51
1873
原创 Mysql索引的了解:B-Tree(B-树)和B+Tree(B+树)
为什么会使用B-Tree和B+Tree,而不是二叉树、红黑树数据结构说索引之前需要先提到一点,树结构做查找时,最坏情况需要查找的次数是树的高度H,而对于Mysql来说,当数据文件很大时,就需要根据树的节点把对应的数据加载到内存中,也就是I/O。上面的形容中有几点信息:树高H影响查找次数;上一点中的每一次查找还会涉及到磁盘I/O;记 N 为 B-tree 中的 Key 的数据量,d 为...
2019-08-05 17:40:20
421
原创 面试题系列解答:Mysql怎么分库分表
一、何谓分库分表?把原本存储于一个库的数据分块存储到多个库(主机)上,把原本存储于一个表的数据分块存储到多个表上。二、为什么要分库分表?数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增删改查的开销也会越来越大。另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有...
2019-08-05 17:01:06
1881
原创 联合索引(各种索引)
聚集索引和非聚集索引数据库中B+树索引可以分为聚集索引和非聚集索引(辅助索引)聚集索引每张表只有一个聚集索引,且是建立在主键上面的。主键索引在InnoDB存储引擎中,每张表都有个主键,如果在创建表时没有显式地定义主键,则InnoDB存储引擎会按如下方式选择或创建主键首先判断表中是否存在非空的唯一索引,如果有,则该列即为主键如果不符合上述条件,InnoDB存储引擎自动创建一个6字节大小...
2019-08-05 16:40:57
3733
1
原创 Java面试之战:基础第一回合
1、面向对象的特征有哪些方面?抽象:将同类对象的共同特征提取出来构造类。继承:基于基类创建新类。封装:将数据隐藏起来,对数据的访问只能通过特定接口。多态性:不同子类型对象对相同消息作出不同响应。2、访问修饰符public,private,protected,以及不写(默认)时的区别?protected 当前类,同包,异包子类。3、String 是最基本的数据类型吗?答:不是。J...
2019-08-03 16:13:23
170
原创 面试题解析系列:SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程
SSL协议格式SSL(Secure socket Layer 安全套接层协议)指使用公钥和私钥技术组合的安全网络通讯协议。SSL协议是网景公司(Netscape)推出的基于WEB应用的安全协议,SSL协议指定了一种在应用程序协议(如Http、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客...
2019-08-02 18:03:26
1706
原创 面试题系列:TCP UDP HTTP 的关系和区别
TCP UDP HTTP 三者的关系:TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有HTTP、FTP、TELNET、SMTP、DNS等协议。TCP 传送控制协议(Transmission Control Protocol):TCP是传输...
2019-08-02 16:50:33
1785
原创 面试题解答系列:ISO/OSI七层模型,包括TCP,IP的一些基本知识
1.ISO/OSI七层模型下四层是为数据传输服务的,物理层是真正的传输数据的,数据链路层、网络层、传输层主要是写入对应数据的传输信息的物理层:比特设备之间的比特流的传输、物理接口、电气特性数据链路层:帧保存的最主要的信息是网卡的 mac 地址,mac 地址负责局域网通信的,发件人和收件人的mac 地址mac地址的作用:尽管你是要在互联网中传输数据(貌似需要IP地址就可以了),但是在互联...
2019-08-01 18:03:31
1322
原创 TCP/IP体系结构
一、简介1、传输控制协议/网络互联协议,是针对Internet开发的一种体系结构和协议标准,相对于OSI体系结构更简洁。2、结构类型:分层体系,由下至上分别是网络接口层、网际层、传输层和应用层(四层分法)。3、TCP/IP协议与OSI模型的对应关系(五层分法)。二、TCP/IP体系结构1、应用层:为用户的应用程序提供接口,使用户可以访问网络。(IE浏览器就处于应用层)HTTP 超...
2019-08-01 17:50:28
2366
原创 面试题解答系列:同步与异步,阻塞与非阻塞的关系
这几个知识点其实用处很多,也是很容易搞混的,我们平时可能用了但是并没有发现,今天想来总结一下。我第一次感受到同步和异步的不同是在学习volatile的时候(因为我之前也没有多线程概念),之前也被同步啊这些概念搞的很乱。当我主线程新建了一个子线程之后两个线程是同时运行的,当时我才发现原来他们不是串行的,献丑了。好了进入正题。从总体来看,同步和异步的概念是大于阻塞与非阻塞,并且他们之间没有对应关系...
2019-08-01 17:29:13
948
原创 面试解答系列:什么是Spring的依赖注入?哪些方法进行依赖注入?
Spring 能有效地组织J2EE应用各层的对象。不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的 管理下有机地协调、运行。Spring将各层的对象以松耦合的方式组织在一起,Action对象无须关心Service对象的具体实现,Service对 象无须关心持久层对象的具体实现,各层对象的调用完全面向接口。当系统需要重构时,代码的改写量将大...
2019-07-31 16:59:11
4867
原创 Socket 通信原理
整理和总结了一下大家常遇到的问题:1. 客户端socket发送消息后,为什么服务端socket没有收到?2. 使用while 循环实现连续输入,是不是就是多线程模式?3. 对多线程处理机制不是很明白,希望详细讲解?4. 希望详细讲解ServerSocketChannel和SocketChannel与ServerSoket和Socket的区别?5. 希望有详细的例子,可以...
2019-07-30 18:19:08
6122
原创 面试题系列:谈谈HTTP的请求和响应
HTTP是HyperText Transfer Protocol的缩写,意思是超文本传输协议。它是一种应用层协议,允许基于WEB的应用程序进行通信和交换数据。你可以把HTTP看作是网络的信使。HTTP是基于TCP/IP协议的,可以使用http进行内容的传输,比如图片,视频,音频,文档等等。客户端和服务端需要进行通信的话,通常会使用request response cycle的形式。客户端需...
2019-07-30 17:11:24
565
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅