- 博客(37)
- 收藏
- 关注
原创 关于知识图谱的思考
采用如何的构建方式自顶向下的构建方式,是指先确定知识图谱的数据模型,再根据模型去填充具体数据,最终形成知识图谱。数据模型的设计,是知识图谱的顶层设计,根据知识图谱的特点确定数据模型,就相当于确定了知识图谱收集数据的范围,以及数据的组织方式。这种构建方式,一般适用于行业知识图谱的构建,对于一个行业来说,数据内容,数据组织方式相对来说比较容易确定。比如对于法律领域的知识图谱,可能会以法律分类,法律条文,法律案例等等的方式组织。再比如建立一个三国时期人物的知识图谱,可能会以某个历史时期,魏蜀吴三个国家将人物进行
2020-08-07 09:48:58
359
1
原创 关于秒杀业务的一些思考
最近在想着把秒杀业务这个模块的细节做一些具体的思考,以自问自答的形式来展开,也是对技术进一步回顾和提升在去年开始的做了一个Spring Boot + Spring MVC + MyBatis框架的一个秒杀业务模块,利用shiro组件来实现登录注册,用mysql来作为数据库,RabbitMq来进行应用解耦和异步通信以及利用其死信队列来进行实现订单超时处理,最后在高压Jmeter测试下,发现了许多问题,比如说库存超卖(数据库total的值成为了负数),用户恶意刷单(同一个用户疯狂点击button导致一个用户抢
2020-08-06 22:46:53
639
原创 关于list.toArray integer出现的问题
我们知道list转换为数组的一个方法为list.toArray如 List<String> ans = new ArrayList(); ans.add("1"); ans.add("2"); ans.add("3"); ans.add("3"); System.out.println(ans.toArray(new String[4]));但是如果转换的类型为int一
2020-08-01 10:54:26
634
原创 Java---通过键盘输入的常用方法有哪些?
方法一通过Scanner类nextLine()以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。可以获得空白。public class test { public static void main(String args[]){ Scanner input = new Scanner(System.in);//用Scanner类来接受输入流 System.out.println("nextLine方式接收:");
2020-05-11 17:33:14
205
原创 Java---Integer.parseInt和Integer.valueOf到底有什么区别?
有次写代码的时候,在用Integer.parseInt的时候,想了想其实我用Integer.valueOf也是可以的,但是觉得应该不会有两个功能相同的方法,就想知道到底有什么区别?找出Integer.valueOf(String s)源码 public static Integer valueOf(String s) throws NumberFormatException { return Integer.valueOf(parseInt(s, 10)); }而Intege
2020-05-08 22:59:18
217
原创 Java---Tree
Concept树和图作为一种Java主要的非线性数据结构,树的变种有很多完全二叉树:对于一颗二叉树,假设其深度为d(d>1)。除了第d层外,其它各层的节点数目均已达最大值,且第d层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树满二叉树:所有叶节点都在最底层的完全二叉树平衡二叉树(AVL树):当且仅当任何节点的两棵子树的高度差不大于1的二叉树二叉搜索树(Binary ...
2020-05-08 21:23:10
152
原创 深入理解Java虚拟机---第十三章
第十三章当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的。在Java语言里面,不可变(Immutable)的对象一定是线程安全的,无论是对象的方法实现还是方法的调用者,都不需要再进行任何线程安全保障措施。Java语言中,如果多线程共...
2020-05-01 13:34:19
183
原创 深入理解Java虚拟机---第八章
第八章执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。从外观上来看,所有的Java虚拟机的执行引擎输入、输出都是一...
2020-04-30 22:42:42
165
原创 深入理解Java虚拟机---第七章
第七章Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。Java天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的。这种动态组装应用的方式目前已广泛应用于Java程序之中,从最基础的Applet、JSP到相对复杂的OSGi技术,都依赖着Java语言运...
2020-04-30 14:26:33
160
原创 Java---switch case
Conceptswitch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出...
2020-04-29 20:25:58
228
原创 深入理解Java虚拟机---第六章
第六章各种不同平台的Java虚拟机,以及所有平台都统一支持的程序存储格式——字节码(Byte Code)是构成平台无关性的基石Java虚拟机不与包括Java语言在内的任何程序语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集、符号表以及若干其他辅助信息。Java语言中的各种语法、关键字、常量变量和运算符号的语义最终都会由多条字节码指...
2020-04-28 11:35:09
259
原创 深入理解Java虚拟机---第五章
第五章目前单体应用在较大内存的硬件上主要的部署方式有两种:1)通过一个单独的Java虚拟机实例来管理大量的Java堆内存。2)同时使用若干个Java虚拟机,建立逻辑集群来利用硬件资源。编译时间是指虚拟机的即时编译器(Just In Time Compiler)编译热点代码(Hot Spot Code)的耗时Java语言为了实现跨平台的特性,Java代码编译出来后形成Class文件中储存的是...
2020-04-28 10:40:22
148
原创 深入理解Java虚拟机---第四章
第四章JDK中除了附带大量的命令行工具外,还提供了几个功能集成度更高的可视化工具,用户可以使用这些可视化工具以更加便捷的方式进行进程故障诊断和调试工作。这类工具主要包括JConsole、JHSDB、VisualVM和JMC四个Java Mission Control,曾经是大名鼎鼎的来自BEA公司的图形化诊断工具,随着BEA公司被Oracle收购,它便被融合进OracleJDK之中JHSD...
2020-04-28 10:13:19
198
原创 深入理解Java虚拟机---第三章
第三章当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就必须对这些“自动化”的技术实施必要的监控和调节。程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,在这几个区域内就不需要过多考虑如何回收的问题,当方法结束或者线程...
2020-04-27 23:05:22
265
原创 深入理解Java虚拟机---第二章
第二章Java虚拟机,在执行Java程序的过程中,会把他所管理的内存划分为若干个不同的数据区域,这些区域有各自的用途,以及创建和销毁的时间.程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,他是程序控制流的指示器,分支 循环 跳转 异常处理 线程恢复 等基础功能,都需要依赖这个计数器来...
2020-04-24 15:21:38
126
原创 图解HTTP---第十一章
第十一章来自互联网攻击大多数冲着Web站点来的。几乎如今所有的Web网站都会使用会话(session)管理、加密处理等安全性方面的功能,而HTTP协议内并不具备这些功能。就拿远程登录会使用的SSH协议来说,SSH具备协议级别的认证及会话管理的功能,HTTP协议则没有。通过URL查询字段或表单、HTTP首部、Cookie等途径把攻击代码传入,若此时Web应用存在安全漏洞,那内部信息就会遭到窃...
2020-04-22 18:17:13
272
原创 图解HTTP---第十章
第十章Web页面几乎全由HTML构建。HTML是为了发送Web上的超文本而开发的标记语言。超文本是一种文档系统,可将文档中任意位置的信息与其他信息(文本或图片等)建立关联,即超链接文本。标记语言是指通过在文档的某部分穿插特别的字符串标签,用来修饰文档的语言。我们把出现在HTML文档内的这种特殊字符串叫做HTML标签。平时我们浏览的Web页面几乎全是用HTML写成的。由HTML构成的文档经...
2020-04-22 16:48:27
235
原创 图解HTTP---第九章
第九章HTTP的瓶颈:一条连接上只可发送一个请求;请求只能从客户端开始,客户端不可以接受除响应以外的指令;请求/响应首部未经压缩就发送,首部信息越多延迟越大;发送冗长的首部,每次互相发送相同的首部造成的浪费较多;可任意选择数据压缩格式,非强制压缩发送Ajax(异步JavaScript与XML技术)是一种有效利用JavaScript 和 DOM的操作,以达到局部Web页面替换加载的异步通信手段...
2020-04-22 16:09:24
230
原创 图解HTTP---第八章
第八章何为认证:核对的信息通常指以下这些:密码;动态令牌;数字认证;生物认证;IC卡等BASIC认证:是Web服务器与通信客户端之间进行的认证方式。如果想再一次进行BASIC认证,一般的浏览器却无法实现认证注销操作,这也是问题之一。BASIC认证使用尚不够便捷灵活,且达不到多数Web网站期望的安全性等级,因此它并不常用。DIGEST认证:DIGEST认证同样使用质询/响应的方式,但不会像B...
2020-04-22 14:30:11
790
原创 图解HTTP---第七章
第七章HTTP的缺点:(1)通信使用铭文(不加密),内容可能会被窃听(2)不验证通信方的身份,因此有可能遭遇伪装(3)无法证明报文的完整性,所以有可能已遭篡改HTTP报文使用明文方式发送。只是说如果通信经过加密,就有可能让人无法破解报文信息的含义,但加密处理后的报文信息本身还是会被看到的。HTTP没有加密机制,但可以通过和SSL或TLS组合使用,加墨HTTP的通信内容。与SSL组合使用的...
2020-04-22 12:36:54
239
原创 图解HTTP---第六章
第六章HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。对于客户端用户来说,这些信息中的大部分内容都无须亲自查看。HTTP请求报文中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分构成。HTTP响应报文中,HTTP报文由HTTP版本、状态码(数字和原因短句)、HTTP首部字段三部分组成。HTTP首部字段:在客...
2020-04-20 12:57:43
225
原创 图解HTTP---第五章
第五章HTTP1.1规范允许一台HTTP服务器搭建多个Web站点。可以用一台服务器为多位客户服务,也可以为每位客户持有的域名运行各自不同的网站。这是因为利用了虚拟主机(虚拟服务器)的功能。在互联网上,域名通过DNS服务映射到IP地址(域名解析)之后访问目标网站。请求到服务器时,已经是以IP地址形式访问了。相同的IP地址下,由于虚拟主机可以寄存多个不同主机名和域名的Web网站,因此在发送HT...
2020-04-20 12:08:54
176
原创 图解HTTP---第四章
第四章状态码的职责是当客户端向服务端发送请求时描述服务端返回的请求结果。数字中的第一位指定了响应类别。2XX成功:200OK表示从客户端来的请求在服务器端被正常处理了。在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变。例如使用GET方法,响应返回对应请求资源的实体。而使用HEAD方法,在响应中只返回首部,不会返回实体的主体部分。204 No Content 请求已成功处理,但在...
2020-04-14 15:27:29
164
原创 图解HTTP---第三章
第三章用于HTTP协议交互的信息被称为HTTP报文。分为请求端的请求报文和服务端的响应报文。HTTP报文大致可分为报文首部和报文主体两块。通常,并不一定要有报文主体。报文首部是服务器或客户端需处理的请求或响应的内容及属性。报文主体是应被发送的数据。请求报文和响应报文的首部内容由以下数据组成:(1)请求行:包含用于请求的方法,请求URI和HTTP版本 (2)状态行:包含表明响应结果的状态码,...
2020-04-13 19:56:18
233
原创 图解HTTP---第二章
第二章HTTP与TCP/IP协议族内大多数协议一样,用于请求资源的客户端与提供资源响应的服务端之间的通信。请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。响应报文是由协议版本,状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。HTTP是一种不保存状态,即无状态协议。HTTP协议自身不对请求和响应之间的通信...
2020-04-12 18:45:30
140
原创 图解HTTP---第一章
第一章通过发送请求获取服务器资源的web浏览器等,都可称为客户端。Web使用一种名为Http(超文本传输协议)的协议作为规范,Web是建立在HTTP协议上通信的。TCP/IP协议族分为四层,层次化之后,把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动应用层:决定了向用户提供应用服务时通信的活动(FTP服务 DNS服务)传输层:对上层应用层提供处于网络连接的两台计算机之间...
2020-04-10 16:10:22
163
原创 Java---List ArrayList和LinkedList
ListList接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素。有两种List:(1)基本的ArrayList,在随机访问元素快,但是在List中间插入和移除元素较慢。(2)LinkedList,代价较低地在List中间进行插入和移除操作,优化了顺序访问。LinkedList在随机访问方面比较慢,但是特性集较ArrayList更大。Method...
2020-04-10 13:55:26
225
原创 Java---访问修饰符
ConceptJava面向对象的基本思想之一是封装细节并且公开接口。Java语言采用访问控制修饰符控制权限来向使用者暴露接口,但隐藏实现细节。默认访问权限没有任何关键字,但通常是指包访问权限。这就意味着当前的包中的所有其他类对那个成员都有访问权限,但对于这个包之外的所有类,这个成员却是private。如果两个文件同处于相同的目录并且没有给自己设定包名称,Java会把这样文件自动看成是隶属于该...
2020-04-06 22:35:56
157
原创 Java---Stack
Concept“栈”通常是指“后进后出”(LIFO)容器。有时栈也被称为叠加栈,因为最后“压入”栈的元素,第一个“弹出”栈。当一个Stack被创建时,里面是没有任何东西的。可以在Stack对象上执行Vector的操作。因为继承的作用使得Stack是一个Vector,因此所有可以对Vector执行的操作,都可以对Stack执行,例如elementAt().。Stack继承Vector,拥有V...
2020-04-06 00:13:05
305
原创 Java---Character
ConceptCharacter是char的包装类。Character类将原始类型char的值包装在一个对象中,一个Character类的对象包含着单一字段,其类型为char。此外,这个类提供了确定字符类别的几种方法(小写字母,数字等)以及使字符大小写相互转换的方法。创建Character对象Character ch = new Character('a');自动封箱包装类和基本类...
2020-04-03 16:33:49
248
原创 Java---static关键字
Concept通常来说,当创建类时,就是在描述那个类的对象的外观与行为。除非用new创建那个类的对象,否则实际上并未获得任何对象。执行new来创建对象时,数据存储空间才被分配,其方法才供外界调用。有两种情形用上述方法是无法解决的。一种是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。另一种情形是,希望某个方法不与包含它的类的任何对象关联在一起。也就是说...
2020-04-02 13:44:34
192
原创 Java---final关键字
Concept许多编译语言都有某种方法,来向编译器告知一块数据是恒定不变的。有时数据的恒定不变很用,比如 1. 一个永不改变的编译时常量 2. 一个在运行时被初始化的值,而你不希望它被改变。对于编译器常量,编译器可以将该常量值代入任何可能用到它的计算式中,也就是说,可以在编译时执行计算式,这减轻了一些运行时的负担。在Java中,这类变量必须是基本数据类型,并且以关键字final表示。在对这个常...
2020-04-01 19:41:59
223
1
原创 Java---StringBuffer和StringBuilder
概念StringBuffer是为了解决大量拼接字符串时产生很多中间对象问题而提供的类,可以将字符串添加到已有序列的末尾或指定位置,本质是一个线程安全的可修改的字符序列。区别如有大量的字符串操作情况,在单线程情况下,应该使用StringBuilder来操作字符串。在多线程情况下,应该使用StringBuffer....
2020-03-31 23:59:39
1392
原创 Java---String
概念String类代表着字符串。所有的Java程序中的String文字都会使用该类实例。String类在创建后是不可改变的,所以一旦创建了String对象,它的值就无法改变了。如果需要对字符串进行很多修改,那么应该选择使用StringBuffer和StringBuilder类。Java语言为String的连接符(+)和其他对象装换到String对象提供了特殊的支持。我们用toString的方...
2020-03-30 23:57:22
202
原创 Java---HashSet
前言HashSet是Set接口的实现类,以哈希表的结构为支持。但是它并不能保证集合中的顺序,也就是说每次迭代顺序都不一样。HashSet也顺序有null元素的出现。HashSet是基于HashMap实现的,底层用HashMap来保存元素。HashSet的迭代时间与HashSet中元素和容量之和成正比关系,所以如果迭代性能在这里很重要,就不要把初始容量设置得过高。HashSet并不是同步的。...
2020-03-29 15:30:05
320
1
原创 Java---HashMap
前言Map<K,V>是一个以键值(key)对应数值(value)来储存数据的接口。key和value在这里都是对象,系统在此时常常会启用自动包装机制来简化表达式(例如会把随机生成的int转换为Map可以使用的Integer引用)。在Map中我们是通过key来对value进行索引。HashMap是Map<K,V>的一种实现类,当然还有TreeMap, LinkedHash...
2020-03-28 22:34:28
268
原创 Java异常处理---throw和throws
发现错误的理想时期是在试图运行程序之前。然而,编译期间并不能找出所有的错误,余下的问题必须在运行期间解决。这就需要错误源通过某种方式,把适当信息传递给某个接受者——该接受者知道如何正确处理这个问题。throwthrow是语句抛出一个异常语法:throws(异常对象)throw e;throwsthrows是方法可能抛出异常的声明。(用于方法时,告诉调用方法的调用者,方法可能要抛出异常...
2020-03-28 11:45:34
466
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人