- 博客(136)
- 资源 (2)
- 收藏
- 关注
原创 Trie树(字典树)实现词频统计或前缀匹配类型的问题
一:概念 如果我们有and,as,at,cn,com这些关键词,那么trie树(zidianshu)?从上面的图中,我们或多或少的可以发现一些好玩的特性。 第一:根节点不包含字符,除根节点外的每一个子节点都包含一个字符。 第二:从根节点到某一节点,路径上经过的字符连接起来,就是该节点对应的字符串。 第三:每个单词
2014-10-15 15:31:55
9602
1
转载 Java学习整理之Object的wait和notify方法
Wait()和notify():如果条件不满足,则等待。当条件满足时,等待该条件的线程将被唤醒。一般用在synchronized机制中。例如:线程A synchronized(obj) { while(!condition) { obj.wait();
2014-10-12 11:20:30
1467
1
转载 判断一个单链表是否有环及环的连接点
给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少? 解法:1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。2、对于问题2,记录下问题1的碰
2014-10-08 18:27:29
1911
转载 Spring Aop配置使用示例及实现过程和原理介绍
相信只要使用过Spring框架的,大家对于AOP都不陌生,尤其提起它就能立刻随口说出,一般用在日志处理、异常处理、权限验证等方面。但刚开始接触难免会有各种各样的疑惑,今天抽时间,按照之前的理解整理了一份关于Spring AOP的简单教程,希望能够帮助大家尽快的了解它的实现过程及原理。首先来明确几个概念:JointPoint系统在运行之前,AOP的功能模块需要织入到OOP的功能模块中
2014-10-05 13:59:26
1329
1
转载 spring中Bean的生命周期
Web容器Tomcat或Resin启动的时候会去加载web.xml。我们在web.xml中增加org.springframework.web.context.ContextLoaderListener或:contextorg.springframework.web.context.ContextLoaderServlet1那么Web容器会默认
2014-09-22 15:22:27
1091
1
转载 Cookie和Session的原理
Session是什么 Session一般译作会话,牛津词典对其的解释是进行某活动连续的一段时间。从不同的层面看待session,它有着类似但不全然相同的含义。比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,登录、并完成购物直到关闭浏览器,这是一个会话。而在web应用的开发者开来,用户登录时我需要创建一个数据结构以存储用户的登录信息,这个结构也叫做session。因此在
2014-09-21 21:23:08
3956
1
原创 Java实现O(n)最大连续子序列和
注意。这个1,3,4,7,9不是LIS,它只是存储的对应长度LIS的最小末尾。有了这个末尾,我们就可以一个一个地插入数据。虽然最后一个d[9] = 7更新进去对于这组数据没有什么意义,但是如果后面再出现两个数字 8 和 9,那么就可以把8更新到d[5], 9更新到d[6],得出LIS的长度为6。
2014-09-19 12:34:00
5059
原创 Java实现O(nlogn)最长上升子序列
问题描述:给出一个序列a1,a2,a3,a4,a5,a6,a7....an,求它的一个子序列(设为s1,s2,...sn),使得这个子序列满足这样的性质,s1
2014-09-19 12:22:13
3767
转载 数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)
BST树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点
2014-09-16 12:07:08
61770
2
转载 java主要集合类的数据结构
一. List 1).ArrayList ArrayList维护着一个对象数组。如果调用new ArrayList()后,它会默认初始一个size=10的数组。 每次add操作都要检查数组容量,如果不够,重新设置一个初始容量1.5倍大小的新数组,然后再把每个元素copy过去。 在数组中间插入或删除,都要移动后面的所有元素。(使用System.arraycopy
2014-09-15 12:44:18
1829
转载 Java学习整理系列之Java内存管理及垃圾回收
Java虚拟机会将内存分为几个不同的管理区,这些区域各自有各自的用途,根据不同的特点,承担不同的任务以及在垃圾回收时运用不同的算法。总体分为下面几个部分:程序计数器(Program Counter Register)、Java虚拟机栈(JVM Stacks)、本地方法栈(Native Method Stacks)、堆(Heap)、方法区(Method Area)
2014-09-09 16:56:14
2523
原创 Java使用反射、自定义注解注入对象
自己写的一个小例子,记录一下。package com.lxq.annotation;public class Person{ String name="default"; Integer age=0; public Person() { super(); } public Person(String name, Integer age) { super(
2014-08-02 17:15:30
9840
转载 POI操作excel基本使用
真正要实现一些复杂的时候,例如项目需要制作报表等等,通常的做法都是事先把格式一切的东西都手动制作好(这个做好了的文件在实际的项目里我们称之为“数据模板”,简称“模板”),然后在Java应用中适当的时机把这个文件读进来修改,最后再另存到指定的位置或者传递给下一个处理者(例如以流的方式送给Servlet等等),这样其实POI具体做的事情就是向模板里写业务的数据,还是很方便快捷的。
2014-07-26 15:38:09
7874
转载 定时器的实现、java定时器Timer和Quartz介绍与Spring中定时器的配置
转自:http://apps.hi.baidu.com/share/detail/33720498
2014-07-13 13:32:37
31426
原创 Java学习整理系列之Java枚举类型的原理
本以为RED只是一个Light类的一个static final的实例而已。但后然发现不是这样的,
2014-06-28 13:37:31
9250
2
原创 Java学习整理系列之Java枚举类型的使用
定义枚举类型其实就是在定义一个类,只不过很多细节由编译器帮你补齐了,所以,某种程度上enum关键词的作用就像是class或interface.当使用enum定义枚举类型时,实际上所定义出来的类型是继承自java.lang.Enum类。而每个被枚举的成员其实就是定义的枚举类型的一个实例,它们都被默认为final。无法改变常数名称所设定的值,它们也是public和static的成员,这与接口中
2014-06-27 19:47:38
47153
转载 Log4j的配置与使用
Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
2014-06-24 19:42:15
1065
转载 memcached基本配置与使用
一、概念Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。二、适用场合1.分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。2.数据库前段缓存。数据库常常是网站系统的瓶颈。数据库的大并发量访问,常常造成网站内存溢
2014-06-19 19:10:17
26423
2
转载 简单工厂、工厂方法、抽象工厂的总结
原文地址:http://blog.youkuaiyun.com/superbeck/article/details/4446177#commentshttp://www.cnblogs.com/devinzhang/archive/2011/12/19/2293160.html
2014-06-13 17:10:23
1010
原创 Java学习整理系列之ThreadLocal的理解
在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量。这时该变量是多个线程共享的,使用同步机制要求程序慎密地分析什么时候对变量进行读写,什么时候需要锁定某个对象,什么时候释放对象锁等繁杂的问题,程序设计和编写难度相对较大。而ThreadLocal则从另一个角度来解决多线程的并发访问。ThreadLocal会为每一个线程提供一个独立的变量副本,从而隔离了多个线程对数据的访问冲突。因为每一个
2014-06-11 20:30:01
7578
4
转载 Java学习整理系列之Java多线程实例讲解综述
编写具有多线程能力的程序经常会用到的方法有: run(), start(), wait(), notify(), notifyAll(), sleep(),yield(), join() 还有一个重要的关键字:synchronized 本文将对以上内容进行讲解。
2014-05-16 22:25:09
977
转载 jdk环境变量配置
进行java开发,首先要安装jdk,安装了jdk后还要进行环境变量配置:1、下载jdk(http://java.sun.com/javase/downloads/index.jsp),我下载的版本是:jdk-6u14-windows-i586.exe2、安装jdk-6u14-windows-i586.exe3、配置环境变量:右击“我的电脑”-->"高级"-->"环境变量"1)在系统
2014-03-14 15:18:10
838
转载 Java之美[从菜鸟到高手演变]系列之博文阅读导航
在阅读的过程中有任何问题,请联系:egg。邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef QQ群:169480361原文:http://blog.youkuaiyun.com/zhangerqing/article/details/8245560#commentsJava初级篇 Java之美[从菜鸟
2014-03-06 15:59:02
1848
原创 浙大PAT 1068题 1068. Find More Coins
动态规划,用dp[i][j]记录当使用前i个硬币时是否可以达到价值j,可以则为1,反之为0;用pre[i][j]记录当前第i个硬币是否在状态dp[i][j]中使用,是则为1,反之为0;最后在寻找解时,如果pre[i][j]为1,则记录到ans(便于一起输出),反之则不断i--,则到pre[i][j]为1。#include#includeint cmp(const void* ta,
2014-02-28 14:04:15
3769
转载 浙大PAT 1067题 1067. Sort with Swap(0,*)
该题的思路很容易想到,不过若不注重技巧会超时。若用数组v[]来容纳所有元素,该题目的目的就是通过最少的交换次数(注意只能必须是0与另一个数交换)来使得对于所有i均有v[i]== i,既然要求得最少交换次数,那就该尽量使每一次交换都能有一个元素被换到正确位置(且该元素不会再次被交换),下面分两种情况讨论:1. v[0] != 0: 说明0不在正确位置上,那要通过变换使
2014-02-27 14:32:25
3228
原创 浙大PAT 1051题 1051. Pop Sequence
设置一个变量tmp,由1开始自增。当栈顶元素与输入的元素不匹配时将当前tmp入栈并tmp自加,当匹配时栈顶出栈。#include#includeusing namespace std;int main(){ int i,j,M,N,K; int input,tmp,flag; scanf("%d %d %d",&M,&N,&K); for(i=0;i<K;i++){ flag
2014-02-26 21:22:10
2653
原创 浙大PAT 1050题 1050. String Subtractio
#includechar s1[10005],s2[10005];int ascii[1005];int main(){ int i; for(i=0;i<1000;i++){ ascii[i]=0; } gets(s1); gets(s2); for(i=0;s2[i]!='\0';i++){ ascii[s2[i]]++; } for(i=0;s1[i]!='\0
2014-02-26 19:23:27
857
原创 浙大PAT 1048题 1048. Find Coins
#includeint arr[1010];int main(){ int i,j,n,m,num; scanf("%d %d",&n,&m); for(i=0;i<=1000;i++){ arr[i]=0; } for(i=1;i<=n;i++){ scanf("%d",&num); arr[num]++; } for(i=1;i<=m;i++){ if(arr
2014-02-26 17:55:47
1433
原创 浙大PAT 1046题 1046. Shortest Distance
题目由于数据量比较大,还是要想一下的,代码如下。#includeint arr[100005];int sum[100005];int main(){ int i,j,n,m; scanf("%d",&n); sum[0]=0; for(i=1;i<=n;i++){ scanf("%d",&arr[i]); sum[i]=sum[i-1]+arr[i]; } scan
2014-02-25 21:31:06
901
原创 有趣的想法算法题
1、输入由一串字符,由数字和英文字母组成,求输出左边为数字,右边为英文字母。解题思路:利用快速排序的一趟快排过程。#include#includeint main(){ int i,j,len; int low,high; char str[1000]; while(scanf("%s",str+1)!=EOF){ len=strlen(str+1); low=0;
2014-02-25 15:43:14
832
原创 浙大PAT 1054题 1054. The Dominant Color
/*用C++读数据会超时,要用C读。*/#include#include#includeusing namespace std;int main(){ int i,j,n,m,num; mapmp; map::iterator it; cin>>n>>m; for(i=0;i<m;i++){ for(j=0;j<n;j++){ scanf("%d",&num);
2014-02-24 20:49:43
1623
原创 浙大PAT 1072题 1072. Gas Station
/*本题的题意开始没有理解,以为最优的第一条件就是平均值最小,但不是这样的。第一条件:所有候选点中到house最小值最大的那个候选点,第一个测试用例中G1的最小值为2,G2的最小值为1,G3的最小值为2,所以选取候选点G1和G3继续比较;4 2 4 33 1 3 45 3 2 4G12.0 3.3第二条件:平均值最小,第一个测试用例中,G1的平均值小于G3,所以最优解为G3;第
2014-02-24 20:26:34
3201
原创 浙大PAT 1071题 1071. Speech Patterns
/*模拟题,混用c和c++了,代码比较乱。ps:"alphanumercial" mean that f4 is a word.*/#include#include#include#includeusing namespace std;char str[1050000];char ctmp[1050000];mapmp;map::iterator it;int main(
2014-02-24 17:54:04
1414
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人