leetcode:224. 基本计算器 I、227. 基本计算器 II 224.标题基本计算器 I通用解法就不说了,这里介绍下用正则表达式来解这道题,基本思路是先用正则表达式计算出括号中的子表达式,最后计算整个表达式。代码如下:import java.util.Arrays;import java.util.regex.*;class Solution { public int calculate(String s) { s = s.replace("...
图的深度优先遍历(DFS)和广度优先遍历(BFS)算法分析 1. 深度优先遍历深度优先遍历(Depth First Search)的主要思想是:1、首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;2、当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点,直至所有的顶点都被访问过。在此我想用一句话来形容 “不到南墙不回头”1.1 无向图的深度优先遍历图解以下"无向图"为例:对上无向图进行深度优先遍历,从A开始:...
Java黑科技之源:JVMTI完全解读 Java生态中有一些非常规的技术,它们能达到一些特别的效果。这些技术的实现原理不去深究的话一般并不是广为人知。这种技术通常被称为黑科技。而这些黑科技中的绝大部分底层都是通过JVMTI实现的。 形象地说,JVMTI是Java虚拟机提供的一整套后门。通过这套后门可以对虚拟机...
MySQL高级之索引失效与优化详解 案例所用的表结构、索引、与数据如下: 索引失效与优化1、全值匹配我最爱2、最佳左前缀法则(带头索引不能死,中间索引不能断)如果索引了多个列,要遵守最佳左前缀法则。指的是查询从索引的最左前列开始 并且 不跳过索引中的列。 正确的示例参考上图。错误的示例: 带头索引死: 中间索引断(带头索引生效,其他索引失效): 3、不要在索引上做任何操作(计算、函数、自动/手动类型...
工作经验总结 一、关于日志 关于日志的作用之前只知道是用来观察线上运行情况的,现在发现也有一些其他的作用。比如增强系统高并发的能力。在用户行为统计中,要记录的行为种类和次数都是很多的,若在用户触发行为的同时就进行数据库的插入必然会影响系统高并发的能力,而此时可以借助日志。通过写入日志的方式,在凌晨的时候定时任务跑日志进行数据的分析与统计,就能很好的将白天的运算量迁移到晚上,晚上的硬件资源也得到了利用,并且晚...
md转html(linux) yum install -y npmnpm install -g i5ting_toci5ting_toc -f readme.mdll preview/readme.html
详述 PO VO BO DTO DAO 和 POJO 的概念及区别 说实话,我相信对于刚接触 PO、VO、BO、DTO、DAO 和 POJO 这些概念的同学来说,大都会有一种“这都是什么鬼?”的感觉,可谓是云里雾里,不知今夕何夕!现在,就让咱们一起揭开这些 “X”O 的面纱,看看它们的庐山真面目。首先,来个图瞅瞅:第 1 个:DAO DAO(Data Access Object)数据访问对象,它是一个面向对象的数据库接口,负责持久层的操作,为业务...
23种设计模式-结构型模式-享元模式 一、简介享元模式英文名Flyweight,又叫蝇量模式,享元模式主要关注的有两个点:共享对象和细粒度的对象,由于分配太多对象会导致应用性能下降,同时造成内存溢出,享元模式就是为了解决这类问题的共享技术。所谓享元模式就是运行共享技术有效地支持大量细粒度对象的复用。系统使用少量对象,而且这些都比较相似,状态变化小,可以实现对象的多次复用。共享模式是支持大量细粒度对象的复用,所以享元模式要求能够共...
23种设计模式-结构型模式-外观模式 外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。1. 外观模式概述不知道大家有没有比较过自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、茶具和开水,如图1(A)所示,而去茶馆喝茶,最简单的方式就是跟茶馆服务员说想要一杯什么样的茶,是铁观音、碧螺...
23种设计模式-行为型模式-访问者模式 在患者就医时,医生会根据病情开具处方单,很多医院都会存在以下这个流程:划价人员拿到处方单之后根据药品名称和数量计算总价,而药房工作人员根据药品名称和数量准备药品,如下图所示。在软件开发中,有时候也需要处理像处方单这样的集合对象结构,在该对象结构中存储了多个不同类型的对象信息,而且对同一对象结构中的元素的操作方式并不唯一,可能需要提供多种不同的处理方式。在设计模式中,有一种模式可以满足上述要求,...
23种设计模式-结构型模式-装饰模式 1、意图:动态地给一个对象添加一些额外的职责。就增加功能来说, Decorator模式相比生成子类更为灵活。该模式以对客 户端透明的方式扩展对象的功能。2、适用环境(1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。(2)处理那些可以撤消的职责。(3)当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的 子类,使得子类数目呈...
23种设计模式-结构型模式-组合模式 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。大话设计模式中程杰老师给出的定义是,组合模式:将对象组合成树形结构以表示”部分-整体”的层次结构。组...
最新阿里云申请免费SSL证书实现网站HTTPS化 发现很多使用阿里云的小伙伴找不到申请免费SSL证书的位置了,今天就结合自己申请Symantec证书的精力为大家用图文教程演示一下如何在阿里云申请免费SSL证书吧。一、申请免费SSL证书:1、登录阿里云:2、领取代金券礼包:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=0a5rig7f3、进入管理控制...
Base64图片工具类 package controller;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.Unsup...
什么是Base64? 一、什么是Base64? 百度百科中对Base64有一个很好的解释:“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法”。 &n...
ajax发送json对象 前端:function ajaxJsonCommu(url,type,param,successCallBack,errorCallBack) { $.ajax({ url : url, type : type, data : JSON.stringify(param), // 预期返回数据类型为json,即将返回的数据转成...
IDEA中SpringBoot项目使用JRebel插件热部署 一、安装JRebelFile - Settings - Plugins - Install JetBrains plugins 搜索JRebel点击install等待完成安装,安装完成后需要重启IDEA二、激活Help - JRebel - Activation激活服务器可以填写:http://139.199.89.239:1008/46994e4c-ed76-4873-b423-...
linux后台执行命令:&和nohup 当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨)。为了使这些进程能够在后台运行,也就是说不在终端屏幕上运行,有几种选择方法可供使用。& 当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。例如:s...
spring.jackson.default-property-inclusion无效问题 yml文件配置如下:spring: jackson: default-property-inclusion: non_null按照网上的说法,password属性为null时jackson应该不会将其序列化,但是真实情况如下:阅读文档发现:Finally, if you opt out of the Spring Boot default MVC configuratio...
tr标签设置block布局错乱问题 <table> <tr> <td><label>请选择商品:</label></td> <td> <select id="selectGoods4" class="easyui-combobox" panelHeight="auto" style...
使用URLDecoder.decode解析字符串含有"+","+"号这个特殊字符会被吃掉,转换成空格 实际使用情况是这样的:我们在使用url的时候,一般从网络或是服务器得到的一个url地址一般都是经过encode编码过的(一般是使用URLEncoder.encode),或者是我们要给服务端传递url参数,直接使用的话,到服务端去解析的时候(应该服务端就是使用decode来解析的),那么原来没有经历过encode编码的字符串,比如za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0j...
linux查看openjdk的安装的路径(环境变量) 前言 : 现在基本上linux为了避免版权问题都会默认的为你安装开源的openjdk,而不是jdk 。有些时候需要运行一些环境需要用到jdk的环境变量,本文就是简单描述下如何查看openjdk的环境变量 。1 echo $JAVA_HOME 很多小伙伴都知道使用echo $JAV...
Tomcat在INFO: Deploying web application directory卡住 今天在linux上的tomcat部署一个网站时,在刚启动tomcat的时候提示启动成功,然后也能访问成功.可是第二次启动时虽然没有报错,但无法访问tomcat,查看了catalina.out日志(可用./catalina.sh run命令控制台启动tomcat,各种日志都会打印在命令行),发现tomcat卡在了INFO: Deploying web application directory …...
实体-关系图转换为关系模型 1.逻辑设计概述 概念结构是独立于任何一种数据模型的,在实际应用中,一般所用的数据库环境已经给定(如SQL Server或Oracel或MySql),本文讨论从概念结构向逻辑结构的转换问题。 由于目前使用的数据库基本上都是关系数据库,因此首先需要将E-R图转换为关系模型,然后根据具体DBMS的特点和限制转换为特定的DBMS支持下的数据模型,最后进行优化。2.E-R图向关系模型的转换2....
建立实体-关系模型(案例) 一、标识实体通常有用户、角色这两个实体。二、标识关系用户与角色间为多对多的互相拥有关系。三、标识实体、关系的属性不仅仅是实体有属性,关系同样也有属性,这些属性在实体间建立关系时才会存在。有时属性太多,无法在图上一一列出,可以用表格,在后面的步骤中这个表格同样会用到,如下:四、确定属性域 属性域就是属性的取值范围。 这时,可以用表格将属性的数据类型、数据长度、取值范围及...
关于 Integer 和装箱、拆箱以及缓存 一、关于拆箱和装箱装箱 就是自动将基本数据类型转换为包装器类型;拆箱 就是自动将包装器类型转换为基本数据类型基本数据类型包装器类型int(4子节)Integerbyte(1子节)Byteshort(2子节)Shortlong(8子节)Longfloat(4子节)Floatdouble(8子节)Doublechar(2子节)...
内部类通过反射创建对象 一.静态内部类1.正常创建newOuter.InnerA a = new Outer.InnerA();2.反射创建Outer.InnerA a = InnerA.class.newInstance();二.非静态内部类1.正常创建newInnnerB b = new Outer().new InnnerB();2.反射创建InnnerB b = InnnerB.clas...
23种设计模式-行为型模式-迭代器模式 迭代器模式定义迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。迭代器模式的角色构成(1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法:取得下一个元素的方法next(),判断是否遍历结束的方法hasNext()),移出当前对象的方法remove(),(2)具体迭代器角色(Concrete Iter...
23种设计模式-行为型模式-中介者模式 在我们的生活中处处充斥着“中介者”,比如你租房、买房、出国留学、找工作、旅游等等可能都需要那些中介者的帮助,同时我们也深受其害,高昂的中介费,虚假信息。在地球上最大的中介者就是联合国了,它主要用来维护国际和平与安全、解决国际间经济、社会、文化和人道主义性质的问题。国与国之间的关系异常复杂,会因为各种各样的利益关系来结成盟友或者敌人,熟话说没有永远的朋友,也没有永远的敌人,只有永远的利益!所以国与国...
23种设计模式-行为型模式-备忘录模式 引子我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状 态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返 回。下象棋的时候,可以反悔。这时我们便可以使用备忘录模式来实现。定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复...
23种设计模式-结构型模式-适配器模式 一、结构型模式: 结构型模式(Structural Pattern): 描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构 结构型模式可以分为类结构型模式和对象结构型模式:类结构型模式关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。对象结构型模式关心类与对象的组合,通过关联关...
23种设计模式-行为型模式-策略模式 面向实现编程的弊端举一个简单的动物界的例子,我们需要写一段代码,包含以下要素:鸭子类,鸭子的若干子类,实现一些方法。惯用的编程思路:1、写一个鸭子类Duck,写几个方法,比如鸭子飞行的方法fly(),鸭子叫的方法quack()。2、写鸭子的子类,比如绿头鸭MallardDuck,继承Duck类。3、在子类中重写以上两个方法。这种编程思路的弊端:1、代码冗杂:在代码量少且代码稳...
一个检查jar包编译版本的小demo package indi.lbw.main;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOE...
浅谈服务端渲染(SSR) 这几天服务端渲染在知乎上热度又上来了,于是我又去翻看了一些相关资料。服务端渲染是什么我最开始接触是在Vue的官网上,开始是作为一个小节出现,现在已经是个专门的大章节来专门讲Vue服务端渲染的内容。服务端渲染 简单来说就是在服务器上把数据和模板拼接好以后发送给客户端显示。回顾下前端的历史,最开始的站点是简单的静态网站。后端大哥把.html文件...
IntelliJ IDEA 使用 FindBugs 进行代码分析 FindBugs 介绍FindBugs 是一个使用静态分析来 ** 查找 Java 代码中的错误 ** 的程序。它是免费软件当前版本的 FindBugs 是 3.0.1FindBugs 运行需要 1.7 或更高版本的 JRE(或 JDK)。但是,它可以分析从任何版本的 Java 编译的程序,从 1.0 到 1.8以上是来自官网的介绍,核心内容为查找 Java 代...
SimpleDateFormat线程不安全及解决办法 以前没有注意到SimpleDateFormat线程不安全的问题,写时间工具类,一般写成静态的成员变量,不知,此种写法的危险性!在此讨论一下SimpleDateFormat线程不安全问题,以及解决方法。为什么SimpleDateFormat不安全?直接上一个例子,日期格式化成字符串:package com.anjz.test.simpleDateFormat; import java.te...
表单(POST请求)的三种编码 表单有两种提交方式,POST和GET。通常我们会使用POST方式,一是因为形式上的安全 ;二是可以上传文件。我之前经常忽略掉表单的编码类型,觉得它特别长比较难记,而且不设置也似乎不影响什么。表单的编码类型,用来控制表单中的数据的编码格式。 默认 enctype=“application/x-www-form-urlencoded”,数据以键值对的方式传送到服务器,这种方式适合于大多数场景。...
SpringMVC注解@RequestParam全面解析 一、基本使用,获取提交的参数@RequestMapping("testRequestParam") public String filesUpload(@RequestParam String inputStr, HttpServletRequest request) { System.out.println(inputStr); int ...
解决 SpringMvc 返回ModelAndView设置viewName无效 package com.fai.web.controllers;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springfram...
查看jar包中class的jdk编译版本 在eclipse中运行java程序,抛出异常:Unsupported major.minor version 52.0原因:在高版本的jdk编译,在低版本的jre环境运行程序查看jar包编译jdk版本:一、解压jar包执行jar -xvf xxxxxx.jar二、javap命令查看class文件的jdk编译版本$ javap -verbose MyClass | grep “maj...
Log4j rootLogger根配置以及4种日志级别 Log4j 根配置语法log4j.rootLogger = [ level ] , appenderName, appenderName, …把指定级别以上的日志信息输出到指定的一个或者多个位置我们把INFO层级以及以上的信息输出到Console和File;即输出到控制台和本地硬盘文件log4j.rootLogger=INFO, Console ,File #Console ...
Spring 中配置log4j日志功能 一,添加log4j依赖包可从官网上下载该依赖包log4j-x.x.xx.jar,下载后 build path,添加依赖包二,创建 log4j.properties 配置文件log4j.properties配置文件用来配置 日志的输出格式、输出的地址…### set log levels 日志的优先级###log4j.rootLogger=INFO , console , debug , ...
CentOS7 安装与配置Ant 一、到官网下载Ant1、在官网的左侧菜单找到 Download(下载)- Binary Distributions(二进制发行版)2、下载ant包,我下的是:apache-ant-1.9.7-bin.tar.gz二、解压缩[arthur@arthur ~]$ tar -zxvf apache-ant-1.9.7-bin.tar.gz三、移动目录(可选)由于我的应用都统一放在opt目...
CentOS添加环境变量 我们详细介绍一下在linux下将php和mysql加入到环境变量中的方法(假设php和mysql分别安装在/usr/local/webserver/php/和/usr/local/webserver/mysql/中)。方法一:直接运行命令export PATH=$PATH:/usr/local/webserver/php/bin 和export PATH=$PATH:/usr/loca...
Ant学习(四) Ant 生成 JAR 文件编译完你的 java 源文件后,接下来就构建 java 存档,例如: JAR 文件。创建 Ant 中的 JAR 文件十分简单,运用 jar 任务来生成 jar 包。在 jar 任务中常用的属性如下所示:属性描述basedir表示输出 JAR 文件的基目录。默认情况下,为项目的基目录。compress表示告知 Ant 对于创建的 JAR 文件进行压缩。keep...
Ant学习(三) Ant 编译项目现在我们已经学习了 Ant 的数据类型,是时候在实际过程中运用所学知识了。在这一章节中,我们将会构建一个项目。这一章节的目的是创建一个 Ant build 文件,该文件能够编译 Java 源文件和将这些类文件存储在 WEB-INF\classes 文件夹下。考虑接下来构建项目的结构:数据脚本存储在 db 文件夹中。java 源文件存储在 src 文件夹中。images (图像),j...
更改Ant的JDK编译版本 转自:http://neoman.iteye.com/blog/571806ant 运行时,必需依赖jdk6.0,而是用ant编译java文件时,却需要是用jdk1.4或者1.5。那如何指定ant编译版本呢?最近发现了两种解决方案:1、为 javac 任务指定target属性,取值为:1.3、1.4、1.5 即自己需要编译源码的版本,部分源码:<target name="main2"...
Ant学习(二) Ant 属性Ant 构建文件是用 XML 编写的,它不能像你喜欢的编程语言那样去声明变量。然而,正如你可能已经想到的,如果允许 Ant 声明变量,如项目名称,项目源目录等,这将是非常有用的。Ant 使用属性 (property) 元素来让你能够具体说明属性。这就允许这些属性能够在不同的构建和不同的环境下发生改变。默认情况下,Ant 提供以下预定义的属性,这些属性都是可以在构建文件中使用的...
Ant学习(一) 介绍Ant 是一个 Apache 基金会下的跨平台的基于 Java 语言开发的构件工具。在我们详细了解 Apache Ant 之前, 让我们来讲解为什么构建工具是需要最先了解的。构建工具的需求一般情况,开发人员花费大量的时间做一般性的任务,比如:构建和部署,通常包含下面的工作:编译代码封装二进制文件在测试服务器上部署二进制文件测试改变从一个地点拷贝代码到另一个地点为了自动和简化上面的工作,Apac...
最准确的Spring官网下载各版本jar包 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuexianchang/article/details/53583327 1:浏览器输入官网地址:http://spring.io/projects2:点击如图树叶页面按钮。 3:点击如图小猫图片按钮。 4:查找d...
Win10映射CentOS为网络驱动器 1.本人用的是阿里云的CentOS7.6,由于需要用用编译器直接修改CentOS中的存储的Java代码,所以需要挂载CentOS,按照网上的说明在CentOS上安装了samba,然而不管怎么配置samba,win10死活就是访问不了(防火墙已经关闭,阿里云web配置界面已经把445和139放行),观察CentOS的进程在445和139端口都有监听,samba正常运行。然后我试着把Tomcat中一...
文件传输协议FTP、SFTP和SCP 网络通信协议分层应用层:HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页)DNS(Domain Name System)FTP(File Transfer Protocol)SFTP(SSH File Transfer Protocol,和FTP不一样)SCP(Secure copy,based on SSH)SSH (Secure She...
CentOS7 Firewall常用命令汇总,开放端口及查看已开放的端口 1、firewalld的基本使用启动: systemctl start firewalld查看状态: systemctl status firewalld 停止: systemctl disable firewalld禁用: syst...
23种设计模式-行为型模式-状态模式 1. 简介 在软件开发过程中,应用程序中的有些对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态会发生改变,从而使得其行为也随之发生改变。如人的情绪有高兴的时候和伤心的时候,不同的情绪有不同的行为,当然外界也会影响其情绪变化。 对这种有状态的对象编程,传统的解决方案是:将...
Servlet3.0 - ServletContainerInitializer注册JAVA组件 【1】ServletContainerInitializer是什么在web容器启动时为提供给第三方组件机会做一些初始化的工作,例如注册servlet或者filtes等,servlet规范中通过ServletContainerInitializer实现此功能。每个框架要使用ServletContainerInitializer就必须在对应的jar包的META-INF/services 目录创建...
resin的安装与配置 1.安装jdk 之前装过了,就不做演示了 vim /etc/profile //注意java的配置文件 JAVA_HOME=/usr/local/jdk1.8/JAVA_BIN=/usr/local/jdk1.8/binJRE_HOME=/usr/local/jdk1.8/jrePATH=$PATH:/usr/local/jdk1.8/bin:/usr/loc...
在centos下安装resin 前提条件得现在centos下安装java环境:参考地址安装我们先去官网获得下载地址: 我们选择rpm格式。在centos命令行下执行命令下载:wget http://caucho.com/download/rpm-6.5/4.0.43/x86_64/resin-pro-4.0.43-1.x86_64.rpm安装# rpm -ivh resin-4.0.43-1.x86_64...
Java对象的复制三种方式 1、概述在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。例如下面程序展示的情况:class Student { private int number; public int g...
手动建立JavaEE项目 为了解“徒手”建立一个web应用,此博客建立简单过程1、在任意一个目录下,建立一个文件夹,取名字 webDemo 。这个应用名字。2、在 webDemo 内建立一个 WEB-INF 文件夹,此处大小写敏感。3、在 Tomcat 的项目例子中(tomcat 的 webapps 目录内有例子),复制一个 web.xml 文件。放到 WEB-INF 文件夹下。4、修改复制后的 web.xml 文...
23种设计模式-行为型模式-解释器模式 为人处事是一门大学问,察言观色、听懂弦外之音都是非常重要的,老板跟你说“XX你最近表现平平啊,还得要多努力”,如果你不当回事,平常对待,可能下次就是“XX,恩,你人还是不错,平常工作也很努力,但是我想这份工作可能不是很适合你…..”。又比如你老大说“XX,你最近表现不错,工作积极性很高啊!继续保持啊!”,你高兴乐呵着心想是不是老板要给我...
23种设计模式-行为型模式-观察者模式 概述它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象...
JVM虚拟机参数、自定义参数与main方法参数 1. JVM虚拟机参数-Xms20M-Xmn20M-Xmx20M-XX:NewRatio=4....等等,不做细讲例如:java -Xmx20M MainTest2. JVM自定义参数JVM自定义参数通过java命令的可选项:-D<name>=<value>来传入JVM,传入的参数作为system的property。因此在程序中可以通过下面的语句获取参...
SVN常用命令 SVN(Subversion)是一个自由、开源的项目源代码版本控制工具。目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器。不同的是,它可以记录每一次文件和目录的修改情况,这样就可以在需要的回滚时,将数据恢复到以前的版本,并可以查看数据的更改细节。SVN 官方网址:Apache Subvers...
SVN分支的合并和同步 使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并的方法不甚了解,这才是硬伤。 最近由于适配机型的需要(本人从事手机客户端的开发),需要经常接触分支和合并两项工作,突然发现这玩意整不明白很难开展工作,遂这两天着重研究了一下,有点收获,怕...
23种设计模式-行为型模式-责任链模式 1. 简介责任链模式:如果有多个对象都有机会处理请求,责任链可使请求的发送者和接受者解耦,请求延着责任链传递,直到有一个对象处理了它为止注意:责任链模式也叫职责链模式。2. 结构职责链模式主要包含以下角色:抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处...
Resin 与 Tomcat 服务器对比 Resin 与 Tomcat对比(个人总结)图片来源Tomcat PK Resin上图对比发现Tomcat对于Resin来说,有诸多优点,但是Resin也有很多优点。比方说: 速度比较 resin的速度要比tomcat快3倍,当然了官方的测试报告是针对resin-2.x与tomcat4.x版本以前的了,测试报告地址: http://www.caucho.com/art...
23种设计模式-行为型模式-命令模式 1.1. 模式动机 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。 命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求...
IntelliJ IDEA 创建Web项目 说明:IntelliJ IDEA 版本为14.JDK 版本为1.7tomcat 版本为apache-tomcat-7.0.70注:在创建过程中注意相关软件版本位数的问题。32位,64位的软件混搭会导致访问不成功的问题!!!首先要理解一个基本问题:对比eclipse ,在IntelliJ IDEA中“new Project”相当于eclipse中的工作空间(Workspace),...
解决IntelliJ IDEA控制台输出中文乱码问题 一、问题情况:IntelliJ IDEA 控制台输出中文乱码部分如图所示:二、解决方法:1.打开tomcat配置页面,Edit Configurations。2.选择项目部署的tomcat,在配置项VM options文本框中输入-Dfile.encoding=UTF-8,点击Apply或OK即可。3.尝试重启tomcat,乱码问题解决。ps:若乱码问题依然存在...
一个表格的15个需求 1、实现以上的表格。2、“姓名”列超长时支持尾部打点”…”(css控制)。3、整个表格固定宽度为500px,“生日”列固定宽度为120px,“操作”列固定宽度为200px,“姓名”列自动为剩下的。4、除标题栏,支持鼠标拖动改变每一行的次序(jquery的sortable)。5、“操作”列提供“上移”、“下移”操作。(要求第一行没有“上移”,最后一行没有“下移”)6、“操作”列提供“删除...
【转义字符】HTML 字符实体< >: &等 在开发中遇到javascript从后台获取的url 会被转义,如:http://localhost:8080/Home/Index?a=14&b=15&c=123,想把它转成http://localhost:8080/Home/Index?a=14&b=15&c=123网上找了半天的解决方案:转义分为escapeHTML和unescapeHTML,先看两个函数的...
js 数组删除元素,并获得真实长度 前言:js数组删除一般采用数组的 splice 方法和 delete 方法,但是采用 delete 方法后直接数组.kength 来获取数组长度是获取不了真实长度的,下面详细讲解一下。一、splice 方法 splice ( index , len , [ item ] ) 该方法会改变原始数组。 index:数组开始下标。len:替换/删除的长度。item:...
Java的Date类与Calendar类 一:Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用。 1.使用Date类代表当前系统时间 Date date = new Date(); System.out.println(date); 使用Date类的默认构造方法创建...
eclipse首次使用基本设置 最近,一些刚开始学习Java的朋友使用eclipse遇到了一些编码导致的问题向我询问,那就总结一下首次安装eclipse后我们大体应该设置哪些基本东西吧~大神们呐就不用看啦。一、修改工作空间默认编码在菜单导航栏上 Window-->Preferences 打开"首选项"对话框左侧导航树导航到 Gen...
MySQL的四种事务隔离级别 本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2...
微信红包算法以及带上下限的红包算法 微信红包算法以及带上下限的红包算法原文地址: 带上下限的红包算法实践总结微信红包的随机算法是怎样实现的? - 知乎一、微信红包算法代码大致意思是这样的:假设有100元钱,分给十个人。那么第一个人获得红包大小怎么计算呢?100/10 = 10元。这是期望值。从0.01到20的区间中(其中20=10乘以2)随机抽取一个数,就是第一个人获得红包的大小。假设第一个人获得了15元,那么剩下的85...
发红包问题 题目:100块红包发给5个人,要求每人至少1元。借鉴了微信发红包的算法,代码如下:package test;import java.math.BigDecimal;import java.util.Random;public class Main { static class RedPackage { double remainMoney; int remainSiz...
token的作用及实现原理 1:首先,先了解一下request和session的区别request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中。在这个过程中可以使用forward方式跳转多个jsp。在这些页面里你都可以使用这个变量。request是用户请求访问的当前组件,以及和当前web组件共享同一用户请求的web组件。如:被请求的js...
Java中i+=i-=i*=i的运行结果是什么? i*(2-i)要搞清楚运算的方法和顺序i += x ; ( x为 i-=i*=i )即i = i + xi -= y ; ( y 为 i*=i)即 x = i -yi*=i 即 i = ii即 y = ii所以有i = i + i - ii即 i = i(2-i);
单链表是否有环,有返回环入口点 快慢指针首先创建两个指针1和2(在java里就是两个对象引用),同时指向这个链表的头节点。然后开始一个大循环,在循环体中,让指针1每次向下移动一个节点,让指针2每次向下移动两个节点,然后比较两个指针指向的节点是否相同。如果相同,则判断出链表有环,如果不同,则继续下一次循环。例如链表A-&gt;B-&gt;C-&gt;D-&gt;B-&gt;C-&gt;D,两个指针最初都指向节点A,进入第一轮循...
学生表S,课程表C,学生课程表SC 面试题,有三张表,学生表S,课程表C,学生课程表SC,学生可以选修多门课程,一门课程可能被多个学生选修,通过SC表关联。(1)写出建表以及插入语句;(2)写出SQL语句,查询选修了所有选修课程的学生;(3)写出SQL语句,查询选修了至少2门课程的学生;#(1)create table S( s_id int primary key auto_increment, s_name v...
非重复字符数组的全排列 public class Main { public static void main(String[] args) { char[] input = { 'a', 'b', 'c' }; range(input, 0, input.length); } //思路:不断从剩余的字符数组中选取一个字符组成新的全排列 private static void range(char[] ...
TCP网络编程中RST分节总结 RST为“复位”,它是TCP在某些错误情况下所发出的一种TCP分节。有三个条件可以产生RST: 1), SYN到达某端口但此端口上没有正在监听的服务器。对于UDP,当一个数据报到达目的端口时,该端口没在使用,它将产生一个ICMP端口不可达的信息...
快排第n趟排序结果校验 快排第n趟排序结果校验@(算法学习)(2014.11)下列选项中,不可能是快速排序第二趟排序结果的是:A. 2,3,5,4,6,7,9 B. 2,7,5,6,4,3,9 C. 3,2,5,4,7,6,9 D. 4,2,3,5,7,6,9分析:只需要掌握一点就可以解出这个问题:每趟排序就有一个元素排在了最终的位置上。那么就是说,第n趟结束,至少有n个元素已经排在了最终的位置上。所以...
表达式(前缀,中缀,后缀表达式)与二叉树 1. 概念前缀表达式(Prefix Notation)是指将运算符写在前面操作数写在后面的不包含括号的表达式,而且为了纪念其发明者波兰数学家JanLukasiewicz,所以前缀表达式也叫做“波兰表达式”后缀表达式(Postfix Notation)与之相反,是指运算符写在操作数后面的不包含括号的算术表达式,也叫做逆波兰表达式中缀表达式(InfixNotation)就是常用的将操作符放在...
用拉链法和线性探测法解决哈希冲突 转自:http://www.tuicool.com/articles/QNjAbaf 前言前面学习到的几种算法比如 红黑树 , 二叉搜索树 ,查找插入 时间复杂度 最快也只能到 O(logn) .现在介绍一种算法可以使查找插入 时间复杂度 达到常数级别。散列表(Hash table...
Java的三种代理模式 Java的三种代理模式1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接...
Thumbnailator库(高质量缩略图)简单总结 1. Thumbnailator是一个用java生成高质量缩略图的第三方库,可以用来1.生成缩率图;2.添加水印;3.图片旋转;4.图片大小缩放;5.图片压缩;2.Thumbnailator的github地址3. 帮助文档4.thumbnailator库只有一个jar,不依赖第三方库,maven依赖<dependency> <groupId>net...
TCP三次握手 一、报文格式:标志位有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)先来看看三次握手时标志位的情况:第一次握手的标志位我们可以看到标志位里...
Redis单线程解读 之前面试时被面试官问了一个问题,Redis是多线程还是单线程的?依稀记得Redis为单线程,其更深层次的技术原理完全懵逼。所以此篇文章旨在解读Redis为什么为单线程。1、基本原理 采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗) (1)为什么不采用多进程或多线程处理?多线程处理可能涉及到锁 多线程处理会涉及到线程...
Java静态工厂方法与工厂模式 静态工厂方法和工厂模式很像,但是在java中还是有很大区别的。(一)静态工厂方法vs工厂模式对于一个类来说,为了让客户端获得一个自身的实例,最常用的方法就是提供一个公有的构造器。除了这种使用构造器的方法之外,对于单个类来说,我们可以定义静态工厂方法来获取自身的类的一个实例。静态工厂方法和工厂模式的不同也体现在此,静态工厂方法是获取这个类自身的一个实例,他的存在是为了更好的描述和处理这个类。...
.gitignore忽略规则、语法、检查文件详解 Git 忽略规则优先级在 .gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):从命令行中读取可用的忽略规则 当前目录定义的规则 父级目录定义的规则,依次递推 $GIT_DIR/info/exclude 文件中定义的规则 core.excludesfile中定义的全局规则Git 忽略规...