自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 问答 (2)
  • 收藏
  • 关注

原创 Java Socket搭建一个简单地Web服务器(1)

今天突然想写一个简单地Web服务器,根据我对Tomcat的了解,简单总结了一下写一个简单地服务器需要哪些步骤:1.首先肯定要借助ServerSocket和Socket这两个类。2.ServerSocket类指定服务器接口。3.ServerSocket调用accept()方法生成一个Socket对象,Socket对象调用getInputStream()获得浏览器发来的Http请求的基本信

2017-06-27 21:17:39 6053

原创 java源代码学习——InputStream

InputStream :一个abstract类已知直接子类:AudioInputStream,ByteArrayInputStream,FileInputStreamFilterInputStream,org.omg.CORBA.portable.InputStreamObjectInputStramPipedInputStreamSequenceInputStr

2017-06-16 14:33:25 280

原创 由Spring引出的一些瞎想(3)

上次虽然可以不依赖与构造方法的参数,但是依旧要求为每个参数写一个构造方法,这次就完全去掉构造方法。既然不使用构造方法来生成实例对象,那么就一定要用到Method和Field两个类。基本思路如下:getDeDe1.XML解析思路不变,最终解析还是返回一个List.2.创建Bean的方法要发生改变,这次先要用Field类的getName方法返回要生成Bean的类的全部属

2017-06-14 20:31:21 271

原创 JAVA源码学习(1)——Integer

Integer类继承Number类,实现Comparable接口Number是一个抽象类,里面定义了对应int,float等数据类型的多种抽象方法Integer的parseInt方法:parseInt(String s)默认调用parseInt(s,10)parseInt(String s,int radix):radix为String表示的数是以几进制的形式表

2017-06-13 20:50:41 211

原创 由Spring引出的一些瞎想(2)

之前利用List进行创建实例,主要存在的问题是要求各个类的属性的个数必须一致。为了能够可以不受这个限制,考虑用Map来存放XML中的配置信息因为要创建XML中配置的所有的对象,所以还是用List来储存,不同的的是List,用map来储存创建实例所需要的全部信息。每个map除了需要有创建实例所需要的属性以外,还要有该类的全类名。这个全类名也从XML中获取。

2017-06-12 13:57:33 252

原创 由Spring引出的一些瞎想(1)

在学习Spring的时候,突然想自己写一个解析XML得到并得到实例对象的方法。打算分成两个步骤来完成:1.解析XML,得到基本信息。2.由解析得到的内容创建实例对象。首先来写一个XML文件,自己给XML文件定义了一系列规则:XML文件每个Bean中必须有一个class标签,class标签内的内容为要创建的对象的类型。每个POJO必须有一个构造

2017-06-11 19:06:09 213

原创 当你输入网址时都发生了什么(2)——TCP链接的建立

关于TCP有一个重要并且著名的三次握手和四次分手,这里只说一下三次握手首先看一下TCP包的首部结构可以看到在这个结构的中间有URG,ACK等标识。当客户机要和服务器建立链接时,就要通过这些标识来确认链接。这里我们讨论的主要是SYN,ACK,SEQ。首先,客户端发送一个SYN为1,且SEQ为随机(记为X)的一个包给服务器服务器收到后,会产生一个SEQ(Y)为随

2017-06-05 21:01:53 363

转载 mysql之TIMESTAMP(时间戳)用法详解

一、TIMESTAMP的变体TIMESTAMP时间戳在创建的时候可以有多重不同的特性,如:1.在创建新记录和修改现有记录的时候都对这个数据列刷新:TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP2.在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它:T

2017-06-03 16:57:38 1512

原创 java web在linux环境下上传文件出现的一些问题

昨天做了一个文件的上传和下载功能,在win环境下测试没有问题,但是项目打包发布到linux时就出现了各种问题。记录一下出现的问题和解决方案。使用的server服务器是tomcat,数据库是mysql。首先,我在win环境下上传路径设置的是request.getSession().getServletContext().getRealPath("\\")+File.separator

2017-06-03 14:55:21 3482

原创 当你输入网址时都发生了什么(1)——URL解析与DNS

最近做Java Web也有一段时间了,既然做网站,那么怎么能对访问网站的流程没有一个基本的呢,所以就整理了一下从输入网址并回车的到成功访问到网站的一个过程。简单来说,访问网址的过程大致可以分为五步:1.解析URL。2.浏览器发起DNS查询请求。3.浏览器与网站建立连接。4.进行数据的请求和传输。5.浏览器根据服务器发回的内容解析并渲染页面。这篇文章中我先介绍第一

2017-06-01 09:56:37 1430

原创 关于java web中session的一些注意事项与总结

session的创建时机:session的创建并不是在浏览器向服务器发出请求的瞬间产生的,而是在server端调用HttpServletRequest.getSession()时创建的。在一个jsp页面中,session能够作为隐式对象被调用是因为jsp在编译的过程中自动调用了HttpServletRequest.getSession()。而当在jsp商品页面中使用时,jsp页面将不会

2017-05-12 12:38:44 782

原创 <ref bean>使用注意事项

最近在学习spring过程中,有人问我为什么使用标签时总是显示bean未定义。为了解决这个问题,就要分析一下bean的加载机制和的作用范围。首先,查找的范围有两个,一个是当前xml文档,另一个是和它属于同一BeanFactory中的其他javabean。而对于bean的加载,以scope为单例为例,bean是在ApplicationContext对象创建时调用。例如Applicat

2017-05-08 11:09:33 929

原创 剑指offer(java代码)——从尾到头打印链表

题目表述:输入一个链表,从尾到头打印链表每个节点的值。这个题目可以利用Stack的特点。Stack是先入后出,可以利用Stack的pop方法从尾部弹出元素,把弹出的元素放入一个数组中,再将这个数组从头到尾输出。

2017-05-06 19:30:20 232

原创 在腾讯云Centos7系统下配置tomcat

首先要确保jdk已经正确安装和配置然后下载tomcat安装包,这里我用的是wget命令下载,下载地址可以登录tomcat的主页,点击gz包,此时的url就是wget需要的地址下载完成后用tar命令,解压安装。之后,我们要进入tomcat安装目录下的bin文件夹,用sudo sh startup.sh命令,启动tomcat然后我们可以来看一下启动是否成功。输入curl

2017-05-04 21:21:48 224

原创 剑指offer(java代码)——用两个栈实现队列

题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。首先我们知道,栈的特点是先入后出,而队列的特点是先入先出。假设有abc这三个数,对于栈来说,它的入栈顺序是abc,而出栈顺序是cba,而对于队列来说,它的入列和出列顺序都是abc。那么如果我们用对abc进行出栈操作,把出栈的元素按顺序放入另一个栈(记作栈2),那么栈2的入栈顺序就是cba,那么就可

2017-05-04 18:31:16 259

原创 剑指offer(java代码)——替换空格

题目描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。这道题的步骤大致是这样的:1.计算字符串中空格的数量。2.计算替换后字符串的长度。3.进行替换

2017-05-04 16:20:03 299

原创 剑指offer(java代码)——矩形覆盖

题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?还是一个斐波那契数列问题,直接放代码:

2017-05-03 19:01:24 235

原创 剑指offer(java代码)——二维数组中的查找

题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。常规思路肯定就是按照顺序遍历二维数组,但是这样时间复杂度太高。这个问题其实如果大学里学过运筹学的话解决起来特别简单。我们看这个二维数组有什么特点。这个数组每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序

2017-05-02 12:40:13 191

原创 剑指offer(java代码)——变态跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。这个题和之前的跳台阶问题很相似,主要解决点在于找出规律和用循环代替递归。

2017-04-28 13:06:40 481

原创 剑指offer(java代码)——和为S的两个数字

题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 这道题友好就友好在给的是一个递增数组。对于递增数组,我们可以去计算数组第一个数字和数组最后一个数字的和,如果和小于S,那么我们就去计算第二个数与最后一个数的和。如果大于S,我们就计算数组第一个数与倒数第二个数的和。这样做的一个好处是,我们找到的第一个符

2017-04-28 10:43:46 231

原创 剑指offer(java代码)——第一个只出现一次的字符

题目描述:在一个字符串(1看到这个题,第一个反应可能是按顺序遍历字符串,对字符串中每一个字符,都去看它的后面有没有和它一样的字符。但是这种方法太费时间,所以要换一种思路。如果是建立一个HashMap,把key设为字符串中每个字符,value设为每个字符出现的次数,那么我们只需要对字符串进行一次遍历,用字符串中每个字符作为key,去找value为1的那个字符就可以了。

2017-04-28 09:23:24 230

原创 剑指offer(java代码)——青蛙跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。看看这道题,是不是有种很熟悉的感觉,没错,之前出现的斐波那契数列又来了。

2017-04-27 21:26:40 381

原创 剑指offer(java代码)——斐波那契数列

今天争取每天更新一篇剑指offer的算法题,算是做笔记,也算是督促自己学习,今天先做一个最简单的斐波那契数列。斐波那契题目大家都很熟悉了,最基本的方法是用递归。但是递归意味着要消耗大量的空间,所以这里尝试用循环的方式去解决。先直接放代码这里代码的重点就是用while循环去做相当与递归的操作。直接拿斐波那契数列的前几项举例说明:0,1,1,2,3,5一开始,我们用num1模拟

2017-04-27 20:02:03 255

原创 用java在linux上写一个hello world

首先在用root用户权限进入linux然后进入到/usr/local目录下,执行wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-

2017-04-27 16:56:35 9457

原创 一个关于java调用顺序的题目

在牛客网上刷到了一道很有意思的java题这道题还是有一些绕的,但是如果对java的调用顺序十分了解的话,做对这道题也很容易。首先程序执行了new B(),new B里上来super(5),我们就要去找到B的父类A中的构造方法,A中的构造方法执行了一步setValue(),这里是第一个重点,就是这个setValue执行的是A的setValue还是B的setValue。这里

2017-04-24 15:19:03 281

原创 一个经典的java传递问题

偶然看到了这么一个题public class foo{public static void main(String[] args) {StringBuffer a =new StringBuffer("A");StringBuffer b =new StringBuffer("B");operate(a,b);System.out.println(a+"."+b);

2017-04-23 19:09:01 329

原创 基本算法(1)--快速排序法

快速排序法是经常用到的基本的算法之一,它的过程主要可以分为三步:1.在待排序数中找出一个基数。2.将大于或等于这个基数的数全部放到这个基数的右边,将小于或等于这个基数的数全部放到这个数的左边。3.对这个基数的左右两边进行相同的操作,直到完成排序。以13,532,25,24,1,25,23这组数为例,我们可以把第一个数,即13作为基数,设置一个temp存放这个基数。然后从最右边的数开

2017-04-20 15:12:50 320

原创 汉诺塔问题分析与python实现

问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。汉诺塔问题是一个经典的递归问题,对于这个问题,我们可以把它简单的去看成是如何用n-1去表示n。在A,B,C三个柱子上,我们先假

2017-04-08 23:16:56 2829

原创 ORACLE数据库基础——视图

视图可以被理解为是数据库中一张虚拟的表。视图基于一个表或多个表,视图本身并不包含任何数据。当基表的数据发生改变时,视图的数据同样会发生改变。1.创建单表视图CREATE OR REPLACE VIEW VW_STU AS SELECT * FROM STUDENTWITH READ ONLY;OR REPLACE表示新建视图可以覆盖原有的同名视图。WITH RE

2017-03-31 18:23:49 447

原创 oracle内置函数(2)字符型

chr(n):把指定的Ascii码转换为字符。select chr(97) from dual; 输出a。ascii(char):返回指定char的ascii码。select ascii('a') from dual; 输出97。length(string):返回指定字符串的长度。select length('helloworld') from dual; 输出10。upp

2017-03-30 18:12:38 463

原创 oracle常用内置函数(1)数值型

ABS(n):返回n的绝对值:SELECT ABS(-1) FROM DUAL; 输出1。MOD(x,y):返回x除以y的余数:SELECT MOD(10,3) from dual;输出1。CEIL(n):返回大于等于n的最小整数:SELECT CEIL('1.2') from dual;输出2。select ceil(‘-1.2’)from dual;输出-1。FLOOR

2017-03-29 20:17:59 259

原创 对Java的内存分配的简单了解(1)

在JVM内部,Java内存模型把内存分成了两部分:线程栈区和堆区,一般来讲,可以更加细致的分为五个部分: Method Area,Heap,VM Stack,Native Method Stack,Progrom Counter Register。 这其中Method Area和Heap属于允许多个线程共享的部分,而VM Stack,Native Method Stack,Progrom Cou

2017-03-25 23:35:20 270

原创 一个简单的java链接oracle数据库实例

最近学习了一下j数据库,所以写一个简单的java链接数据库的实例。首先是源代码:public class Test {    public static void main(String[] args) {        try {            Class.forName("oracle.jdbc.driver.OracleDriver");        Con

2017-03-24 22:50:24 3351 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除