自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ethan_Novice的专栏

滴水穿石

  • 博客(71)
  • 资源 (4)
  • 收藏
  • 关注

原创 leetcode_209 长度最小的子数组

滑动窗口算法/** * 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。 * * 示例: * * 输入: s = 7, nums = [2,3,1,2,4,3] * 输出: 2 * 解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。 */public class 划动窗口 { public int minSubArrayLen(int s, int[] nums)

2021-03-22 22:46:06 122

原创 记录一下今天的面试题,待后面补充

1、数据库事务实现的流程?redo、undo的日志格式?binlog的格式?使用了什么技术保证ACID?2、mysql的后续版本使用了哪些优化手段来解决binlog同步慢(时延)的问题?3、update xxx set xxx = xxx where id = 1使用了什么锁?id >= ? id < ? id <= ? next-key 锁、gap锁的适用场景?4、redis主从同步的流程?怎么解决单线程带来的问题?跳跃表的原理及时间复杂度?epoll用过没有?怎么实现榜单排

2021-02-01 20:52:07 154 1

原创 xxx公司三道笔试题

/* 问题:假设一条路上种了一排苹果树,苹果树上各自结了果子。一位果农沿路采摘果实, 规则是不能连续采摘两颗果树上的果实。假设果树上的果实用一个list来表示apples[], 请为果农设计一个最优的采摘方式,使得他能收获最多的果实*/public class 不相邻元素的最大和_递归 { public int dpRob(int[] nums, int n, int[] array) { if (n < 0) return 0; .

2021-01-21 15:35:36 208 2

转载 为什么MySQL使用可重复读作为默认隔离级

《以下内容来源于一篇网络文章,暂时找不到出处了。我只是加了一些注解》一般的DBMS系统,默认都会使用读已提交(Read-Comitted,RC)作为默认隔离级别,如Oracle、SQLServer等,而MySQL却使用可重复读(Read-Repeatable,RR)。要知道,越高的隔离级别,能解决的数据一致性问题越多,理论上性能损耗更大,可并发性越低。隔离级别依次为 "串行化 > RR > RC >读未提交"。主从复制是基于binlog的,而binlog有三种格式:statem

2020-12-31 16:24:58 150

原创 ABA问题

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-10-20 19:42:04 345

转载 反向代理服务器的工作原理

一  概述                         反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。               通常的代理服务器,只用于代理内部网络对Internet的连接

2015-05-21 13:48:12 713

转载 Java 自动装箱与拆箱

??什么是自动装箱拆箱基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。 一般我们要创建一个类的对象的时候,我们会这样: Class a = new Class(parameter);  当我们创建一个Integer对象时,却可以这样: Integer i = 100; (注意:不是 int i = 100; )实际

2015-01-22 17:51:29 564

转载 图解正向代理、反向代理、透明代理

标签:反向代理正向代理 透明代理 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://z00w00.blog.51cto.com/515114/1031287套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术。一般实现代理技术的方式就是在服务器上安装代

2014-06-30 16:51:38 894

转载 单例模式

Abstract         在开发中,如果某个实例的创建需要消耗很多系统资源,那么我们通常会使用惰性加载机制,也就是说只有当使用到这个实例的时候才会创建这个实例,这个好处在单例模式中得到了广泛应用。这个机制在single-threaded环境下的实现非常简单,然而在multi-threaded环境下却存在隐患。本文重点介绍惰性加载机制以及其在多线程环境下的使用方法。(作者number

2013-09-29 20:14:00 571

转载 堆和栈的区别

此文章虽然是面向C/C++程序员写得,但是对咱们Java程序员还是很有帮助的。 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由O

2013-08-08 13:59:11 535

转载 jvm垃圾回收

在jvm中堆空间划分为三个代:年轻代(Young Generation)、年老代(Old Generation)和永久代(Permanent Generation)。年轻代和年老代是存储动态产生的对象。永久代主要是存储的是java的类信息,包括解析得到的方法、属性、字段等等。永久代基本不参与垃圾回收。我们这里讨论的垃圾回收主要是针对年轻代和年老代。具体如下图。年轻代又分成3个部分,一个ed

2013-06-27 16:42:00 621

转载 height、clientHeight、scrollHeight、offsetHeight区别

我们来实现test中的onclick事件   function justAtest()   {        var test= document.getElementById("test");        var test2=document.getElementById("test2")        var test3=document.getElement

2013-02-05 14:12:51 407

转载 oracle配置

在init.ora中有db_name,instance_name,service_name在操作系统中需要配置oracle_sid在listener.ora中有SID_NAME,GLOBAL_DBNAME,在tnsname.ora中有SERVICE_NAME,SID这么多,是不是你也看糊涂了。先晕一个,下面慢慢道来。 在init.ora中有db_name,instanc

2012-12-26 17:27:22 473

转载 oracle 设置默认值无效

几天前有人问我设置了字段的默认值为什么无效呢?查找了一些资料,做了一个总结:-->create table TEST(  ID          VARCHAR2(64),  A           VARCHAR2(3) default '0',  NAME    VARCHAR2(100) );SQL> insert into test(a,name) values

2012-10-16 10:35:02 3620 1

转载 char 与 unsigned char的本质区别

在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,

2012-08-17 13:31:56 726

转载 公钥和私钥

公钥密码体制的核心思想是:加密和解密采用不同的密钥。这是公钥密码体制和传统的对称密码体制最大的区别。对于传统对称密码而言,密文的安全性完全依赖于密钥的保密性,一旦密钥泄漏,将毫无保密性可言。但是公钥密码体制彻底改变了这一状况。在公钥密码体制中,公钥是公开的,只有私钥是需要保密的。知道公钥和密码算法要推测出私钥在计算上是不可行的。这样,只要私钥是安全的,那么加密就是可信的。显然,对称密码

2012-08-02 16:08:15 727

转载 大端小端(Big- Endian和Little-Endian)

在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领 域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正 确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:Big-Endian和Little-Endian,下面先 从字节序说起。

2012-07-30 11:47:47 1502 1

转载 移位运算符

移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:(左移)、>>(带符号右移)和>>>(无符号右移)。  在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实

2012-07-23 10:17:50 482

转载 轻松掌握ISO8583报文协议

我刚进入金融行业时,就知道了IS08583报文协议,我想可能我还没进入这个行业都已经听过了,可知ISO8583的影响力有多大了。最初刚接触它时,确实对其中的一些细节概念不是很清晰,对有些地方比较迷惑。鉴于此,我想很多同行也必然会经历同样得阶段,所以我写下本文,以便大家能够少走一些弯路。同时,我在网上(http://blog.csdn.net/lysheng/archive/2005/03/03/3

2012-07-06 14:07:13 940

转载 关于SIGPIPE信号

我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试.  但是服务器总是莫名退出,没有core文件.最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程.具体的分析可以结合TCP的"四次挥手"关闭. TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个

2012-06-27 10:08:10 474

转载 TCP三次握手及四次挥手详细图解

相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助.    而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-)。有时上午面试前强调这个问题,并重复讲一次,下午几乎每一个人都被问到这个问题。 因此在这里详细解释一下这两个过程。

2012-06-27 09:46:15 504

转载 C语言运算符优先级

C语言运算符优先级 详细列表优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(

2012-06-10 15:47:38 415

原创 信号量集

信号量集的操作三个IPC对象类型中,信号量集的操作函数相对于其他两个类型的操作函数要复杂得多,当然信号量的应用也比其他两个更广泛些。像共享内存的操作一样,信号量也有自己的专属操作函数semctl,函数原型如下:#include int semctl( int sem_id, int semnu, int cmd [, union semun arg]);

2012-05-31 09:58:43 2008 1

转载 信号量

linux信号量机制(semaphore)  信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。当公共资源增加时,调用函数sem_post()增加信号量。只有当信号量值大于0时,才能使用公共资源,使用后,函数sem_wait()减少信号量。函数sem_trywait()和函数pthread_ mutex_trylock()起同样的作用,它是函数sem_wait()的非阻塞版

2012-05-30 19:25:42 3260

原创 工作中经常使用到的

sqlplus命令格式如下:用法: SQLPLUS [ [] [] [] ]其中 ::= -H | -V | [ [-M ] [-R ] [-S] ] ::= [/][@] | / |/NOLOG : : = @[.] [ ...]"-H" 显示 SQL*Plus 的版本标帜和使用语法"-V" 显示 SQL*Plus 的版本标帜"-M " 使用 HTML 标志选项

2012-05-09 10:18:20 669

转载 SQL注入攻击三部曲之入门篇

服务器安全管理员和攻击者的战争仿佛永远没有停止的时候,针对国内网站的ASP架构的SQL注入攻击又开始大行其道。本篇文章通过SQL注入攻击原理引出SQL注入攻击的实施方法,旨在企业安全管理员能够通过技术学习提升自己的安全意识。第一节、SQL注入原理 以下我们从一个网www.mytest.com开始(注:本文发表前已征得该站站长同意,大部分都是真实数据)。在网站首页上,有名为“IE不能打开

2012-05-04 11:54:00 516

转载 SQL注入原理解析

对于Web应用来说,注射式攻击由来已久,攻击方式也五花八门,常见的攻击方式有SQL注射、命令注射以及新近才出现的XPath注射等等。本文将以SQL注射为例,在源码级对其攻击原理进行深入的讲解。一、注射式攻击的原理注射式攻击的根源在于,程序命令和用户数据(即用户输入)之间没有做到泾渭分明。这使得攻击者有机会将程序命令当作用户输入的数据提交给We程序,以发号施令,为所欲为。为了发动注射攻击

2012-05-04 11:30:11 580

原创 关于上一篇文章《B-树及B+树》的bug

偶然在网上找到上一篇文章《B-树及B+树》,本想利用一下,但是发现了一个bug:当树高于3时,算法的输出是错误的。于是在下面把源代码罗列出来,其中if(ap->son[0]!=NULL) ap->son[0]->parent=ap;……if(ap->son[i-s]!=NULL) ap->son[i-s]->parent=ap;是自己为修复bug添加的代码。#include

2012-04-09 20:06:44 696

转载 B-树及B+树

1、B树的定义    B树是一种平衡的多分树(m叉树),通常我们说m阶的B树,它必须满足如下条件:    (1)每个结点至多有m个子结点;    (2)若根结点不是叶子结点,则至少有两棵子树;    (3)所有的叶结点在同一层;    (4)有k个子结点的非根结点恰好包含k-1个关键码。2、B-树数据结构#define M 4        //B-树的阶,暂设为4

2012-04-07 17:42:29 970

转载 libxml2

libxml2尝试  etc项目中实现一个http server,刚好用到大量的XML,每次处理的数据包XML数据相对较小,先尝试了expat,SAX解析方式确实痛苦,需要自己维护状态树。 libxml2相对功能比较全,SAX、DOM解析方式都有实现,而且还有XPath、XLink等实现,甚至连HTMLparser都有了,下面是我这次用到的一

2012-03-19 19:51:33 1477

原创 单纯md5的一个具体实现

/** md5 -- compute and check MD5 message digest.* this version only can calculate the char string.** MD5 (Message-Digest algorithm 5) is a widely used, partially* insecure cryptogr

2012-03-07 17:54:28 758

转载 Gdb调试多进程程序

Gdb调试多进程程序程序经常使用fork/exec创建多进程程序。多进程程序有自己独立的地址空间,这是多进程调试首要注意的地方。Gdb功能强大,对调试多线程提供很多支持。方法1:调试多进程最土的办法:attach pidAttach是调试进程的常用办法,只要有可执行程序以及相应PID,即可工作。当然,为方便调试,可以在进程启动后,设定sleep一段时间,如30s,这样即可有充足的时间来

2012-02-01 21:02:39 860

转载 GDB多进程调试(转)

GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统:进程 Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子进程。如何使用 GDB 调试 proc2 或者 proc3 呢?实际上,GDB 没有对多进程程序调试提供直接支持。例如,使用GDB调试某个进程,如

2012-02-01 20:19:36 710

原创 Linux消息队列之命令行相关

一、消息队列 (也叫做报文队列)是Unix系统V版本中3种进程间通信机制之一。另外两种是信号灯和共享内存。这些IPC机制使用共同的授权方法。只有通过系统调用将标志符传递给核心之后,进程才能存取这些资源。这种系统IPC对象使用的控制方法和文件系统非常类似。使用对象的引用标志符作为资源表中的索引。消息队列就是一个消息的链表。就是把消息看作一个记录,并且这个记录具有特定的格式以及特定的优先级。对

2012-02-01 10:50:53 9071

原创 什么是握手协议

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN

2012-02-01 09:14:27 1841

原创 sql*plus与存储过程举例

一、表结构-- Create tablecreate table CARD_BIN_CTRL(  CARD_BIN     CHAR(12) not null,  CARD_LEN     INTEGER not null,  CHANNEL_TYPE CHAR(2) not null,  CARD_BIN_LEN INTEGER,  CARD_TYPE    CH

2012-01-18 15:49:28 809

转载 makefile(这哥们很强,看完这篇文章,自己写makefile肯定能过关了)

跟我一起写MAKEFILE  陈皓 概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成

2012-01-15 12:55:50 4986

转载 非阻IO与EWOULDBLOCK EAGAIN

默认 socket 是阻塞的,读写函数 read, readv,recv, recvfrom, recvmsg 以及write, writev,send, sendto,sendmsg 都有可能会阻塞。可以将 socket 描述字设为非阻塞,这样,当 socket 描述字未就绪时,调用以上读写函数将会返回 EWOULDBLOCK 或 EAGAIN 。UNPv1 给出了一个

2012-01-12 16:43:55 7313 1

转载 GCC编译选项-包含的头文件

许多情况下,头文件和源文件会单独存放在不同的目录中。可以直接在.c文件中利用#include“/path/file.h", 通过指定头文件的路径(可以是绝对路径,也可以是相对路径)来包含头文件. 但这明显降低了程序的可移植性. 在别的系统环境下编译可能会出现问题.  所以还是利用"-I"选项指定头文件完整的包含路径.  针对头文件比较多的情况, 最好把它们统一放在一个目录中,比如~/p

2012-01-10 21:16:33 11169

原创 使用samba实现Ubuntu 11和win7文件共享

1.      安装samba服务器命令:sudo apt-get install sambasudo apt-get install smbfsubuntu11.10中启动 ,命令:sudo service smbd start注:ubuntu下/etc/init.d/下没有samba,只有smbd,smbd

2012-01-10 19:36:03 4257 1

Hessian学习入门实例

这是一个Hessian入门学习的实例,程序包是一个web工程,使用intellij idea + Maven开发,其中通过两个方式展示了使用Hessian实现RMI的原理,一个是访问jsp页面,一个是在代码中手工创建client。对于Hessian Servlet的使用也展示了两种方式,一种是在web.xml中配置,一种是在java代码中配置。

2018-04-10

学习dwr的入门例子

学习dwr的入门例子 解压后是一个eclipse工程

2013-01-06

使用samba实现Ubuntu 11和win7文件共享

使用samba实现Ubuntu 11和win7文件共享 一步一步的操作

2012-01-10

libcurl教程

libcurl教程 想要一个封闭了对http等协议的支持的开源包吗?

2011-12-12

空空如也

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

TA关注的人

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