自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 收藏
  • 关注

原创 高性能网络服务器编程

下面来解释下为什么Linux AIO 和Java AIO都不使用!基本的IO编程过程(包括网络IO和文件IO):打开文件描述符(windows是handler,java是stream或channel)多路捕获(Multiplexe,即select和poll和epoll)IO可读写的状态可以读写的文件描述符进行IO读写由于IO设备速度和CPU内存比速度会慢,为了更好的利用CPU和...

2018-04-19 16:08:13 498

原创 Java IO 再理解

上一次写对Java IO的理解,主要是各种查资料进行汇总,觉得自己对IO理解的差不多了。 直到最近参加面试之后,我感觉自己对IO的理解还是有些偏差,于是重新查阅一些资料,有了一些新的见解。同步与异步通过上一篇博客Java IO 深入理解的介绍,我们已经知道对于一个IO操作,它会涉及到两个系统对象,一个是调用这个IO的process(or Thread),另一个就是系统内核(Kernel)...

2018-04-19 14:46:46 407

转载 Java IO 深入理解

看了一段时间NIO之后,发现自己混淆了非阻塞和异步的概念。为了理清这些关系,这里就来详细了解下同步(Synchronous)、异步(ASynchronous)、阻塞(blocking)和非阻塞(non-blocking)这些概念。这些概念的由来与操作系统的发展是分不开的,为什么这么说呢?这要从操作系统的内核态和用户态说起:内核态: CPU可以访问内存所有数据, 包括外围设备...

2017-10-13 22:38:46 554

原创 Struts2:输入校验-基于XML配置方式实现

使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下,文件的取名格式为:ActionClassName-validation.xml,其中ActionClassName为action的简单类名,-validation为固定写法。如果Action类为cn.itcast.UserAction,那么该文件的取名应...

2018-03-30 00:09:32 576

原创 Struts2:输入校验-采用手工编写代码实现

在struts2中,我们可以实现对action的所有方法校验或者对action的制定方法进行校验。对于输入校验struts2提供了两种实现方法:采用手工编写代码实现基于XML配置方式实现1.采用手工编写代码实现 (1)对action中的所有方法校验 通过重写validate()方法实现,validate()方法会校验action中所有与execute方法签名相同的方法。当某个...

2018-03-30 00:08:39 203

原创 Struts2:输入校验的流程

在点击提交后,struts会对其进行处理。 1.类型转化器对请求参数执行类型转换,并把转换后的值赋给action中的值 (jsp中的值,传到Action中时 对应属性转换失败)2.如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,conversionError拦截器将异常信息添加到fieldErrors里。不管类型转换是否出现异常,都会进入第3步。3...

2018-03-30 00:06:39 234

原创 Struts2:自定义拦截器

要自定义拦截器需要实现com.opensymphony.xwork2.interceptor.Interceptor接口:public class PermissionInterceptor implements Interceptor { @Override public void destroy() { // TODO Auto-generated m...

2018-03-30 00:06:16 198

原创 Struts2:文件上传

第一步: 在WEB-INF/lib下加入commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar(FileUtils工具类在这个jar文件中)第二步:把form表的enctype设置为:“multipart/form-data”,如下:<form action="addfile" enctype="multipart/form-data" ...

2018-03-30 00:05:19 143

原创 Struts2:访问或添加request/session/application属性

Structs2为了避免你直接访问servlet API ,它对request/session/application 这三个范围进行了封装,可以通过ActionContext对象获取public String execute() throws UnsupportedEncodingException{ ActionContext ctx = ActionContext.getC...

2018-03-30 00:03:32 202

原创 Struts2:自定义类型转换器

public class DateTypeConverter extends DefaultTypeConverter { //必须继承DefaultTypeConverter类 //然后重写convertValue方法 @Override public Object convertValue(Map<Strin...

2018-03-30 00:02:10 258

原创 Struts2:接收请求参数

1.采用基本类型接收请求参数(get/post) 在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名属性 请求路径: http://localhost:8080/test/view.action?id=78public class ProductAction{ private Integer id; //构建GET SET...

2018-03-30 00:01:14 328

原创 Struts2:使用通配符定义action

<action name="list_*" class="cn.itcast.action.HelloWorldAction" method="{1}"> <result name="success">/WEB-INF/page/{1}.jsp</result></action>list_addUI

2018-03-29 23:59:29 199

原创 Struts2:result配置的各种视图转发类型

result配置类似于struts1中的forward,但struts2中提供了多种结果类型,常用的类型有:dispatcher(默认值)、redirect、redirectAction、plainText。在result中还可以使用${属性名}表达式访问action中的属性,表达式里的属性名对应action中的属性。如下:<result type="redirect">/...

2018-03-29 23:58:04 259

原创 Struts2:Action配置中的各项默认值

<package name="itcast" namespace="/test" extends="struts-default"> <action name="helloworld" class="cn.itcast.action.HelloWorldAction" method="execute"> &am

2018-03-29 23:56:57 309

原创 Struts2:搭建Struts2环境

搭建Struts2环境时,一般需要做以下3个步骤:找到开发Struts2应用需要使用到的jar文件编写Struts2的配置文件在web.xml中加入Struts2 MVC框架启动配置1.下载struts2完整包 注: 不要全选所有的包拉到web-inf的lib目录下,因为有些牵扯到和第三方框架插件包,但是本身没有提供第三方框架的类,会报找不到第三方框架类的错误。只需要拉必...

2018-03-29 23:55:55 196

原创 Struts2:第一个Struts2应用Hello world

配置struts.xml文件在struts2框架中使用包来管理Action,包的作用和java中的类包是非常相似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,它不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用。包的namespa...

2018-03-29 23:53:24 129

转载 Oracle和Mysql的区别

一、并发性并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。mysql: mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。 虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。oracle: ...

2018-03-22 15:24:20 152

转载 309. Best Time to Buy and Sell Stock with Cooldown

题目:Say you have an array for which the i-th element is the price of a given stock on day i.Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, bu

2018-01-24 10:46:33 160

原创 Spring中Bean及@Bean的理解

Bean在Spring和SpringMVC中无所不在,将这个概念内化很重要,下面分享一下我的想法:@Bean 只能用在方法上一、Bean是啥Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化);凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性;规律:凡是子类及带有方法或属性的类都要加上注册Bean到Spring IoC的注解;把Bean理解为

2017-12-22 00:00:18 5304 2

原创 Java: Timer启用后无法停止?如何停止Timer

利用Timer和TimerTask可以实现定时完成某些任务。但是在运行过程中出现了很奇怪的现象: 所有TimerTask都完成了,按理说线程应该自动退出,但是它却没有!在JDK1.5的文档Timer类中,有这样一句话: “对 Timer 对象最后的引用完成后,并且 所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。但是这可能要很长时间后才发生。”但是这个“

2017-11-29 08:58:52 16039

原创 Palindromic Substrings

Given a string, your task is to count how many palindromic substrings in this string. The substrings with different start indexes or end indexes are counted as different substrings even they consist

2017-11-27 13:46:27 171

原创 理解 Java synchronized

多线程开发离不开锁机制,现在的Java语言中,提供了2种锁,一种是语言特性提供的内置锁,还有一种是 java.util.concurrent.locks 包中的锁。对于synchronized的一些基本概念这里就不重复了,很多博客都写到了。这篇文章针对一个例子,讲一下我的理解。这是一个调用同步方法的同时,调用该对象非同步方法(但是内部含有同步块)的例子package tmp;/** * Crea

2017-11-24 17:47:30 157

原创 Subarray Sum Equals K

Given an array of integers and an integer k, you need to find the total number of continuous subarrays whose sum equals to k.Example 1:Input:nums = [1,1,1], k = 2Output: 2Note: The length of the ar

2017-11-18 15:08:06 143

原创 Path Sum III

You are given a binary tree in which each node contains an integer value. Find the number of paths that sum to a given value. The path does not need to start or end at the root or a leaf, but it

2017-11-16 10:36:49 172

原创 Partition Equal Subset Sum

Given a non-empty array containing only positive integers, find if the array can be partitioned into two subsets such that the sum of elements in both subsets is equal. Note: Each of the array el

2017-11-16 00:28:48 198

转载 /etc/ld.so.conf文件

Linux 系统上有两类根本不同的 Linux 可执行程序。第一类是静态链接的可执行程序。静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”。因为这一原因,静态可执行程序不依赖任何外部库就可以运行。  第二类是动态链接的可执行程序。   静态可执行程序与动态可执行程序比较  我们可以用 ldd 命令来确定某一特定可执行程序是否为静态链接的:   # ldd /sbin/sln

2017-11-13 19:25:37 244

转载 理解矩阵

理解矩阵1 理解矩阵2 理解矩阵3

2017-11-09 17:07:32 215

原创 动态规划的本质

动态规划方法要寻找符合“最优子结构“的状态和状态转移方程的定义,在找到之后,这个问题就可以以“记忆化地求解递推式”的方法来解决。而寻找到的定义,才是动态规划的本质。所以问题的重点在于如何鉴定“某一类问题”是动态规划可解的而不是纠结解决方法是递归还是递推!怎么鉴定dp可解的一类问题需要从计算机是怎么工作的说起。 计算机的本质是一个状态机,内存里存储的所有数据构成了当前的状态,CPU只能利用当前的状

2017-11-08 19:57:36 645

转载 error while loading shared libraries: xxx.so.x"错误的原因和解决办法

一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如:tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory原因一般有两个: 一个是操作系统里确实没有包含该共享库(lib*.so.*文件

2017-11-08 13:04:07 676

原创 301. Remove Invalid Parentheses

题目链接:https://leetcode.com/problems/remove-invalid-parentheses/ Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results.Note: The input str

2017-11-04 14:08:25 168

原创 Socket到底是什么?

学习java网络编程一段时间后,突然被问到socket是什么?回答不上来,感觉很尴尬,于是赶紧是查阅资料。网络由下往上分为 物理层 、数据链路层 、 网络层 、 传输层 、 会话层 、 表现层 和 应用层。通过初步了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP协议是应用层协议,主要解决如

2017-10-13 21:13:27 34168 11

原创 判断一个数是2的整数次幂

private static boolean isPowerOfTwo(int val) { return (val & (val-1)) == 0; } 或者 private static boolean isPowerOfTwo(int val) { return (val & -val) == val; }例如: val= 8,用

2017-10-12 13:04:55 531

原创 Java socket中isClose()和isConnected()

可以引起网络连接关闭的情况有以下4种:直接调用Socket类的close方法。只要Socket类的InputStream和OutputStream有一个关闭,网络连接自动关闭(必须通过调用InputStream和OutputStream的 close方法关闭流,才能使网络可爱接自动关闭)。在程序退出时网络连接自动关闭。将Socket对象设为null或未关闭最使用new Socket(…)建立

2017-10-11 10:51:26 4739 1

原创 RedHat 更新CentOS Yum源

由于需要在服务器上安装Teamviewer方便远程操作,发现Centos6的Yum源能正常帮助Teamviewer安装依赖(如果不行可能是CentOS-Base.repo配置文件有错),而红帽的不行。于是就去给RedHat更新CentoOS Yum源先从官网下载.rmp安装包,按照安装教程给的两个命令:yum install teamviewer.i686.rpm 或 rpm -i teamvie

2017-09-26 23:22:19 668

原创 Nginx快速搭建

安装Nginxmkdir /usr/local/software//用于放下载过来的软件,在该文件下解压,编译安装在/usr/local/具体软件1.在安装过程中,我们可能需要先安装编译工具以及库文件.//zlib-devel,gcc-c++,openssl-develyum -y install make zlib zlib-devel gcc-c++ libtool openssl open

2017-08-21 13:42:44 239

原创 LeetCode Container With Most Water

题目:Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two

2017-08-19 21:06:44 162

原创 Leetcode:First Missing Positive

Given an unsorted integer array, find the first missing positive integer. For example, Given [1,2,0] return 3, and [3,4,-1,1] return 2. Your algorithm should run in O(n) time and uses const

2017-08-18 22:00:51 152

原创 JAVA中方法的参数传递

不要认为只要是对象当做实参,传入到方法中,方法中的变化就能引起实参的变化 有一种例外:在方法中,形参又new了一个对象,那么形参和实参的地址就不一样了。//将有序数组转为二叉搜索树 public static TreeNode sortedArrayToBST(int[] num) { if (num.length == 0) return nu

2017-08-15 10:43:04 305

原创 SSM框架搭建整合

基于IDEA整合Spring,SpringMVC,Mybatis。这是一段···(不可描述)的路程首先附上文件结构图: 主要是三层,Dao层,Service层,Controller层。 由于都是面向接口编程,耦合性更低。 Dao层只有Ixxdao 接口,他的实现是通过Mybatis的map配置文件代理注入的,查看Mybatis配置文件就可以知道。而Service接口只负责声明服务,servi

2017-06-26 13:35:48 312

原创 二叉树遍历

二叉树的递归遍历算法就不用说了;在非递归算法中,后序遍历难度大,需要标记当前是从哪个子树遍历回来。public class Binary_Tree_Postorder_Traversal { /* 递归 */ public static List<Integer> mypostorderTraversal(TreeNode root) { List<Integer> l

2017-06-20 09:04:03 179

空空如也

空空如也

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

TA关注的人

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