- 博客(69)
- 收藏
- 关注
原创 tomcat应用容器启动过程II
tomcat启动springMVC的过程tomcat 与启动脚本步骤1 环境预热与catalina.sh定位catalina.sh 与 Bootstrap.jar1.catalina.sh脚本tomcat 与启动脚本步骤1 环境预热与catalina.sh定位JavaWeb项目发布tomcat容器,我们一般是到tomcat下的bin/startup.sh运行或者直接运行catalina.sh脚本。事实上,startup.sh脚本主要用来判断环境,找到catalina.sh脚本源路径,将启动命令参数传递
2021-03-23 16:36:22 492 1
原创 Tomcat WEB 的启动过程
前言:很多文章已经对springmvc 的加载细节进行详细的介绍,但是并没有去介绍服务容器是如何触发这一系列动作的。这里我们将通过实际项目进行分步骤介绍web 启动加载步骤。如下是一个实际的springMVC下web项目的结构。那么问题是tomcat 启动过程中是如何使得该项目生效的呢。大致分为两个步骤。步骤一、解析server.xml 启动Tomcat,会去读取web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常的被启动起来。但是加载webapps中的web.xml
2021-02-04 15:35:38 576
原创 SQL慢查询“优化”记录之服务层解决法
1. 慢查询语句及执行计划EXPLAINSELECT COUNT(id)FROM tb_record_topics_feedbackWHERE is_effective = 1AND ( ( phase_code = '03' AND subject_code = '02' ) OR ( phase_code = '04' AND subject_code = '02' ) OR ( phase_code = '05' AND subject_code =
2020-12-30 17:21:13 221
原创 循环语句下对象的声明
关于对象的声明应该在for循环内还是for循环外的讨论:看到一段别人的代码片段A如下AList<String> pkgIds = new ArrayList<>();for (OResPkgBaseEntity entity : oResPkgBaseEntities) { if (null != entity) { OResPkgTopicBase oResPkgTopicBase = new OResPkgTopicBase(); pkgIds.add(e
2020-05-09 16:58:51 449
原创 数据库事务及spring支持
前言:本篇文章主要针对网上对数据库事务个人感觉绕人而写,并方便日后复盘而作。正文通俗理解我是这么理解数据库事务:就像打游戏时候,给数据库(英雄)加了一些属性(技能)。当数据库(英雄)具备了事务(技能)属性,那么他将会具有以下属性加成:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),也就是我们常说的事务ACID,...
2020-04-22 17:56:06 253
原创 十进制与任意进制转化
题目十进制与任意进制转换,题目要求不解释。以十进制转二进制为例:我们知道10转化成2进制是1010。所以具体思路见如下代码:import java.util.Scanner;/** * 十进制转化任意进制 * Created by yanzhang on 2020/3/17 21:27 */public class DecimalConversion { public ...
2020-03-17 22:14:32 192
原创 多线程解决多数组元素反转问题
多线程解决多数组元素反转问题该题属于自由市场中,某大厂的笔试题题目内容对多个String数组中,指定位置范围内的数字进行反转后,输出合并所有数组后的字符串。要求用多线程解决该问题思路与代码要求多线程考虑使用数量为数组数量的固定线程池,要求返回字符串结果,所以考虑使用具有返回值的Callable。代码如下:import java.util.Arrays;import java.uti...
2020-03-17 21:11:48 475
原创 关于POJO类中的布尔类型
阿里巴巴开发手册中有这么一段话:“POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误。反例:定义为基本数据类型boolean isSuccess 的属性,它的方法也是isSuccess(),RPC框架在反向解析的时候,以为对应的属性名称是success,导致属性获取不到,进而抛出异常”。具体的理解如下:通常基于Java的Web开发过程中不可避免的会遇到rpc服务调用,...
2019-07-28 22:35:50 1935
原创 前端传的汉字到Controller层乱码
前端传汉字到Controller乱码这种问题网上也经常反馈:首先得先F12查看前端传来的参数是否无误,类似于以下情况说明没有问题。然后观察后端参数,出现以下情况(这里参数并没有对应,不过所有参数都是这样乱码)解决方法:修改Tomcat config server.xml配置如下,重启Tomcat即可...
2019-07-01 10:26:46 1383
原创 Angular 4.x 路由
一、基本概率操作1.安装路由首先第一件事,我们需要安装 Angular Router。yarn add @angular/router# ORnpm i --save @angular/router以上命令执行后,将会自动下载 @angular/router 模块到 node_modules 文件夹中,如下所示。2. 根路由我们需要做的最后一件事,是将 标签添加到我们的 in...
2019-03-11 20:25:52 392
原创 Angular——LocalStorage与SessionStorage
1.历史在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。2.优势与局限localStorage的优势1、localStorage拓展了cooki...
2019-02-14 10:16:42 2736
原创 Angular编译提示js heap out of memory
1.错误信息==== JS stack trace =========================================Security context: 0000006FC6325879 2: collapse_single_use_vars(aka collapse_single_use_vars) [000001F6E9B022D1 :5984] [bytecode=00...
2019-01-31 10:35:07 2226
原创 Java 静态工厂方法与构造器
Java静态工厂方法替代构造器分析1.概述1.1 构造器1.2 静态工厂方法2.实现及优、劣势分析2.1 实现2.2 优势分析2.3 劣势3.总结1.概述Java是典型的面向对象的语言,在Java泰斗级别书籍《Effective Java》中,第2章(第1章引言)开始变介绍了对象的创建和销毁。本篇文章将重点对该书籍第2章第1条定律——考虑用静态方法代替构造器的讲解进行剖析。1.1 构造器构...
2019-01-26 18:22:45 772
原创 最大连续子序列和
这是本人28号好未来一面遇到的三道手撕编程题中最难的一道题了^V^,下面对此题进行记录分析。 1.题目描述 求一整数序列中连续子串和的最大值,注意:可能包括正数、负数和0。 2.解题思路 从定义一个变量sum左到右记录当前连续子序列的和,开始位置为start,结束位置为end。若sum不断增加,那么最大子序列max不断更新,向后扫描过程中遇到负数,将导致sum减小,此时不更新max即可。若s
2017-10-06 10:16:49 358
原创 Cookie、Session入门介绍
针对近期找工作一些经典的面试问题Http是否是有状态协议(回答没有),那么如何弥补http这种不足问题的回答。 回答如下 1. 实现状态保持的方案: 1)修改Http协议,使得它支持状态保持(难做到) 2)Cookies:通过客户端来保持状态信息 Cookie是服务器发给客户端的特殊信息 cookie是以文本的方式保存在客户端,每次请求时都带上它 3)Session
2017-09-12 16:35:26 313
原创 之字形打印树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解题思路 借用两个栈,分别保存奇数层和偶数层节点。 每当从左到右输出奇数层的时候,顺便将奇数层的子节点按照从左到右存在偶数栈中,这样下一层的偶数层节点从栈中输出的顺序便可以按照从右到左了。 对于偶数层也是按照这种方法,输出的时候将接下来的奇
2017-08-24 16:44:56 607
原创 反转链表
题目描述 输入一个链表,反转链表后,输出链表的所有元素。思路 用pre表示当前节点的前一节点,用next表示当前节点的后续节点。 对于任意节点,需要将指向next变成指向pre即可完成链表反转的效果。步骤如下: 1.先用next保存head的下一个节点信息,保证head指向pre之后,head->next节点仍然可以找到。 2.让head指向pre; 3.依次反转下一节点。代码publi
2017-08-18 18:33:16 189
转载 TCP协议如何保证传输可靠性
TCP提供一种面向连接、可靠的字节流服务。 1.面向连接:使用TCP的应用(服务端和客户端)在彼此交换数据之前必须先建立一个TCP三次握手连接。在一个TCP连接中,仅有两方进行彼此通信。注意广播和多播不能用于TCP。2.可靠性 TCP通过以下方式来提供可靠性: 1》应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变(将数据截断为合理的长度)
2017-08-17 23:54:31 16415
转载 Cookie/Session笔记
转自:http://blog.csdn.net/fangaoxin/article/details/6952954/ 先借用来自http://blog.csdn.net/yaopeng_2005/article/details/7064869 OSI七层模型的图 关于各层的设备一般如下: 物理层:网卡,网线,集线器,中继器,调制解调器 数据链路层:网桥,交换机 网络层:路由器 网关工
2017-08-17 23:04:50 327
原创 获取所有非manager的员工emp_no
题目描述 获取所有非manager的员工emp_no CREATE TABLE dept_manager ( dept_no char(4) NOT NULL, emp_no int(11) NOT NULL, from_date date NOT NULL, to_date date NOT NULL, PRIMARY KEY (emp_no,dept_no)); CREATE T
2017-08-17 10:27:50 1338
原创 剑指offer-正则表达式匹配
题目描述 请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配 解题思路 逐个匹配字符 当模式中的第二个字符不是“*”时: 1、如果字符串第一个字
2017-08-16 17:04:50 238
原创 Spring mvc 请求处理
转自:http://www.cnblogs.com/dreamworlds/p/5396112.html 转自:http://www.jianshu.com/p/baa3a05cd271 转自:http://blog.csdn.net/binglumeng/article/details/53585821 从web.xml中servlet的配置开始,根据servlet拦截的url-patter
2017-08-15 16:29:52 605
原创 丑数
1.题目描述 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当作是第一个丑数。求按从小到大的顺序的第N个丑数。2.分析 可以定义一个存储N个丑数的数组ugNum[N+1]。依据题意,第一个丑数是1,则ugNum[0]=1。又因为丑数只包含因子2、3、5,因此欲按照从小到大的顺序给出第N个丑数,只需将满足要求的丑数排入
2017-07-25 17:09:40 599
原创 栈的压入、弹出序列
1.题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。2.分析:借助一个辅助栈,按照压入序列入栈,然后每入栈一次,与出栈序列进行比较,若相等,则出辅助栈。最终如果辅助栈为空,说明该弹出
2017-07-25 14:53:50 206
转载 Java之Annotation(注解)
本文转发自技术世界,原文链接 http://www.jasongj.com/2016/01/17/Java1_注解Annotation引言本文介绍了Java Annotation的概念以及Java提供的四种Meta Annotation的功能,并结合实例详解了自定义Annotation的方法和注意事项。概念Annotation是Java5开始引入的特性。它提供了一种安全的类似于注释和Java doc
2017-07-18 17:23:03 294
原创 二叉搜索树
引言计算机系统中,经常遇到的树是分级文件结构。文件的路径和根等术语来自于树的理论。我们接下来对二叉搜索树进行整理。注意到,分级文件结构和接下来讨论的树有明显不同,文件结构中,子目录中不含有数据:他们只有其他子目录或者文件的引用,只有文件中才包含数据。而在书中,每个节点都包含数据,以及其他节点的引用(除叶子节点)。 二叉搜索树特征定义可以这样说:二叉树中,一个节点的左子节点的关键字值小于这个节点,右
2017-07-18 15:27:43 201
翻译 {"JSON":"P"}
{“Getting”:”started”}翻译:(JSON-P) https://javaee.github.io/jsonp/getting-started.html这是一篇JSON-P操作快速入门指导手册。添加依赖 添加如下的依赖关系:<dependency> <groupId>javax.json</groupId> <artifactId>javax.json-api</a
2017-07-14 14:58:29 263
原创 一个类继承不同接口存在相同方法的处理
1.问题来源:无意间和同学讨论这种情况,本以为这种情况不可能出现,因为一个类的重写是不允许相同方法只有返回值不同的情况,这也不是OOP多态的体现。于是查阅资料,发现了解决办法,也就是内部类方式来解决。 2.举例:类C同时implements具有相同方法的接口A和B 3.解决方案,分别用内部类实现A和B,然后调用内部类方法。代码如下:public class Test implements A,
2017-07-13 15:04:44 675
原创 CopyOnWriteArrayList实现原理
引言《Java并发编程实战》P43中提到:“通过将某个元素放入Vector、CopyOnWriteArrayList、CopyOnWriteArraySet、synchronizedList或者synchronizedSet中,可以将元素安全的发布到任何从这些容器中访问该元素的线程”。源码分析另外,我们知道CopyOnWriteArrayList适用于写少读多的并发场景。那么不妨从源码分析其实现原理
2017-07-10 15:50:38 328
转载 Netty之TCP粘包拆包问题
引言粘包拆包问题是处于网络比较底层的问题,在数据链路层、网络层以及传输层都可能发生。我们日常的网络应用开发大都在传输层进行,由于UDP有消息保护边界(推荐一篇关于边界处理保护的解释http://blog.csdn.net/zhangxinrun/article/details/6721427),不会发生这个问题,因此这篇文章只讨论发生在传输层的TCP粘包问题。 什么是粘包、拆包? 对于什么是粘包
2017-07-10 08:19:45 261
原创 数据库SQL实战-查找入职员工时间排名倒数第三的员工所有信息
1.题目描述 查找入职员工时间排名倒数第三的员工所有信息 create table employees (emp_no int(11) not null, birth_date date not null, first_name varchar(14) not null, last_name varchar(16) not null, gender char(1) not null,
2017-07-09 11:13:17 3898
原创 数据库SQL实战-查找最晚入职员工
1.题目描述查找最晚入职员工的所有信息 create table employee( emp_no int(11) not null, birth_date date not null, first_name varchar(14) not null, last_name varchar(16) not null, gender char(1) not null, hire_date
2017-07-09 10:49:28 3383
原创 Netty线程模型
1.Netty线程模型分类 事实上,Netty线程模型与与Reactor线程模型(之前有介绍)相似,下面我们通过Netty服务端和客户端的线程处理流程来介绍Netty的线程模型。 1.1服务端线程模型 一种比较流行的做法是服务端监听线程和IO线程分离,类似于Reactor的多线程模型,它的工作原理图如下: Netty服务端线程工作流程 下面结合Netty的源码,对服务端创建线程
2017-07-09 09:53:35 285
转载 Struts2源码粗略分析一:开发环境
**简介Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。S
2017-07-04 16:30:58 276
原创 连续子数组的最大和
1.题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长
2017-07-02 17:31:12 169
原创 最小的K个数
题目描述: 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 2.思路 先将数组排序,然后将前K个入list中。 3.代码import java.util.ArrayList;import java.util.Arrays;public class Solution { public static void ma
2017-07-01 16:57:22 179
原创 复杂链表的复制
1.题目描述 输入一个复杂链表(每个节点中有节点值,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中节点的引用,否则判断程序会直接返回空) 2.分析 整体解体思路分为两步 1>复制链表 将原链表复制一份,但是需要注意该链表的特殊性(一个特殊指针指向任意节点),因此直接在每个原节点后复制新的节点,是解决新链表特殊性问
2017-06-19 18:04:26 256
原创 二叉搜索树的后序遍历序列
1.题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。2.代码及思路public class Solution { public static void main(String[] args) { int[] a = {4,6,12,8,16,14,10}; boo
2017-06-14 23:28:20 187
原创 希尔排序
2.定义 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 2.分析 周所周知,
2017-06-12 16:54:05 309
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人