- 博客(105)
- 资源 (3)
- 收藏
- 关注
原创 spring transaction & mybatis-spring
spring transaction1.概念首先认识一下spring事务源码中主要类:PlatformTransactionManager: spring事务管理顶层接口.其中有获取事务, 提交事务和回滚等抽象操作. 我们使用的主要实现是DataSourceTransactionManager类, 数据源事务管理.需要配置数据源Datasource.我们常用的数据源也有druid,dbc...
2019-09-04 21:49:40 377
原创 java动态代理和spring aop
静态代理 VS 动态代理java静态代理:静态代理的相关代码编译前就要写好.如果代理当中处理的逻辑一样, 然后在调用目标接口. 一个被代理对象RealSubject 就需要一个代理Proxy,太重复。所以衍生了在程序运行时动态生成代理类的字节码(.class), 然后返回实例化的代理对象, 就叫动态代理.java动态代理生成方式分四种: jdk动态代理、javassist、cglib、a...
2019-08-22 17:28:25 716
原创 AQS 独占&共享模式以及ReenterantLock、CountLatchDown实现原理
1.AQSAQS总结2.ReenterantLock2.1 公平锁2.2非公平锁2.3最本质区别
2019-03-22 15:15:34 969 2
原创 线程池ThreadPoolExecutor实现原理
1.ThreadPoolExecutor源码解析前三位代表状态后29位为线程最大的ctl 代表线程池当前状态和线程数量. private static int runStateOf(int c) { return c & ~CAPACITY; } private static int workerCountOf(int c) { return c &...
2019-03-20 22:04:54 195
原创 mybatis插件Plugin、TypeHandler、二级缓存问题
本文介绍mybatis的三个部分:Plugin、TypeHandler、二级缓存问题。mybatis插件Plugin使用与原理mybatis使用方式: 1. 插件必须实现org.apache.ibatis.plugin.Interceptor接口。它可以拦截executor、statementHandler、resultHandler、parameterHandler接口。 由下图...
2018-08-07 20:40:31 1103
原创 mysql笔记
从项目管理视角看,将已知风险列出风险应对计划,未知风险越早发现后期付出的代价越小。软件项目中也一样,在产品迭代过程中,尽量将表结构设计优雅一点。 msyql设计 mysql单表存储大数据时考虑如下方面: 1. 考虑旧数据归档,让单表数据尽量少 2. 考虑数据冷热,比如某些字段访问频繁,某些恰相反,结合业务情况考虑主表与附属表设计(或后期的垂直拆分) 3. 水平拆分
2016-11-03 21:40:05 452
原创 Redis实现分布式锁
Redis实现分布式锁优点:redis单线程(通过队列将并发变成串行,同一刻只有一个操作可以执行),有getset, setnx(set if not exist)等便于实现的方法问题:1. 简单的get & set方法为何不能实现:并发情况下会有锁竞争。参考http://blog.csdn.net/ugg/article/details/41894947Redis实现
2016-11-02 16:04:54 1212
原创 MC&Redis&Ehcache介绍
很久没有更新博客,希望以后有时间还是持续去写,现在才发现这是很棒的过程。很早之前就整理过有关缓存的使用和介绍,现在将它贴出来:Memecached介绍许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。这时就该memcached大显身手了。memc
2015-08-04 17:00:33 1968 2
原创 AJAX
Ajax 是Asynchronous Javascript and XML的简写,对它最多的人是无非是局部刷新技术,它可以在不刷新页面的情况下向后台发送或者请求数据。它的核心是XMLHttpRequest对象(简称XHR),在IE7+、Firfox、Opera、Chrome、Safari都支持原生的XHR对象即显式使用var xhr = new XMLHttpRequest()就可以直接创建此
2014-04-11 23:12:59 1103 1
转载 数据库---冗余字段
什么是冗余字段?在设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。——以上是我自己给出的定义冗余字段的存在到底是好还是坏呢?这是一个不好说的问题。可能在有人看来,这是一个很蹩脚的数据库设计。因为在数据库设计领域,有一个被大家奉为圭臬的数据库设计范式,这个范式理论上要求数据库设计逻辑清晰、关系
2014-03-17 17:05:22 1199 1
原创 windows键盘快捷键
Windows 系统组合键F1:帮助CTRL+ESC:打开“开始”菜单ALT+TAB:在打开的多个程序之间切换ALT+F4:退出程序SHIFT+DELETE:永久删除项目Windows 徽标+L:锁定计算机 (不使用 CTRL+ALT+DELETE)Windows 程序组合键CTRL+C:CopyCTRL+X:剪切CTRL+V:粘贴CTRL+Z:撤消CTRL+B:加粗CTR
2014-03-15 10:17:25 1187
原创 个人校招经历及面试题目
校招告一段落了,准备签唯品会。参加过37wan,新浪,阿里巴巴,中融天力,酷狗,唯品会,软通动力,金山笔试,深圳茁壮成长网络,只收到其中四个面试通知,参加三个面试:唯品会,酷狗,中融天力。参加这么多,提问题主要是为了蹭奖品。哎,技不如人,想要的还是得不到,但至少给了自己一个结果。一切的奔波就让它结束吧。最早来offer的是中融天力,那时候中融天力给了我一点点希望,可是更多的是犹豫,唯品会的of
2013-11-09 23:00:21 8359 6
原创 Javascript杂记
eval()参数是一个字符串,eval会将传入的字符串当作代码来执行。使用Function函数依然可以做到这点,setTimeout,setInterval也可以。尽量不要使用这些,两个set...函数要用也要使用函数实行,不要使用字符串。严格模式下不能使用eval来创建变量和函数,非严格模式下可以eval(“alert(‘Hi!’)”);var myfunc = new Fun
2013-10-02 21:53:08 1114
原创 实习面试总结
面试了大概15家公司左右,最后到了有面试都不去的境地。在总结的同时,想提供一些深圳和长沙的面试的情况,以便后面的童鞋至少可以避免我犯过的一些错误。在准备找工作之前我一直在筹备考研,每天在想不是我考不上怎么办,而是在想考上了怎么办,三年的时间加上研究生毕业的就业方向问题加上个人的倾向,让我果断决定了要找本专业对口的软件开发工作
2013-08-02 11:37:21 3041 19
原创 C# 连接Sql数据库
连接数据库的步骤:1、建立SqlConnection对象;2、指定SqlConnection对象的ConnectionString 属性;3、打开数据库连接;4、指定SQL语句;5、建立SqlDataAdapter对象和DataSet对象(myDataAdapter = new SqlDataAdapter(strCmd,conn););6、添冲DataSet;
2012-10-16 22:28:32 1167
原创 USC 20121007 组队赛 H题 矩阵乘法
H. DecodeBruce Force has had an interesting idea how to encode strings. The following is the description of how the encoding is done: Let x1,x2,...,xn be the sequence of characters of the string t
2012-10-10 16:38:17 1334
原创 POJ 1664 分苹果,整数拆解
这个问题和整数拆解问题是一样的;就是将n拆成不大于m的数的和; 例如: n=6,m=6; 6=6; 6=5+1; 6=4+2; 6=4+1+1; 6=3+3; 6=3+2+1; 6=3+1+1+1; 6=2+2+2; 6=2+2+1+1; 6=2+1+1+1+1; 6=1+1+1+1+1+1;按如下分析:分解函数Split(n
2012-10-06 10:59:08 2235
原创 POJ 1201 Intervals 差分约束系统
以前以为很难,理解起来很简单还是重在运用吧。随便百度就知道,差分约束系统可以用最短路径来求,可是为什么呢:假设不等式 x1-x2 x1x2+d 的时候就必须更新 即d[u]>d[v]+w的时候就要松弛时一样的道理。这道题的题意很好理解我们只要找到两个约束条件:Sbi+1-Sai>=ci;1>= Si+1-Si >=0;(Si+1-Si>=0; Si-Si+1>=-1)注意这里是
2012-09-24 17:32:00 850
原创 POJ 2914 Minimum Cut 最小割
最小割Stoer_Wagner算法,网上到处都有这个算法的步骤,实现起来也比较简单。刚刚才理解最小割就是最大流,之所以不用最大流算法,是因为最大流算法有确定的源点和汇点,但是求最小割没有指明源点和汇点;如果枚举每个源点和汇点加上最大流的算法时间复杂度太高O(n^4),用这个算法时间复杂度在O(n^3)。给个链接介绍给大家:http://www.cnblogs.com/ylfdrib/arc
2012-09-24 17:19:45 1520
原创 POJ 2135 Farm Tour 最小费用最大流
题意:FJ带朋友参观自己的农场,从自己的房子出发到barn(谷仓、畜棚或车库),再从barn返回自己的房子,要求去回不走同一条路。建图:取超级源点,并与房子连一条边,容量为2;取barn与超级汇点间的边的容量为2,中间的建图方法如代码。代码:#include#include#define maxe 400005#define maxn 1005#define INF 0x7ff
2012-09-24 17:05:19 1058
原创 POJ 1905,3122,3273
做了不想写解题报告,有点水。POJ 1905:卡精度的题目,WA到疯了。代码:#include#includeusing namespace std;const double eps = 1e-5;const double pi = acos(-1.0);int main(){ double L, N, C; while ( sc
2012-09-21 10:54:09 782
原创 POJ 1850 Code
下标都弄得我头晕。我先打表把以某字母开头长度为i的方案数都预先存储。然后再从输入的字符串里面分解:假设为 cdvx字符串,把长度为1,2,3的所有方案数相加,然后从做到右来分析,第一个字符c,第一个字符最小必须为a,把a,b开头长度为4的方案数加起来;第二个字符最小必须为‘c’+1也就是d,所以这个不管;v这个位置必须大于'd',所以又把‘e’~‘u’开头长度为2的方案数加起来,最后一位一样的
2012-09-19 11:21:19 638
原创 POJ 3252 Round Numbers
好久不写,这个题目又弄了几个小时,水平还是有限。 这道题我用组合数学来做,如果要求区间[a,b]的个数,先求出[2,a)的个数和[2,b]的个数,两者相减。 首先我们假设求 [1000,10000)(二进制表示)这个区间,那么在这个区间里高位都是为1的,剩下3位里面必须至少有两位为0。故为C(3,2)+C(3,3)=C(3,0)+C(3,1),因为左边和右边之和为2^3(二项式定
2012-09-13 15:28:29 674
原创 POJ 2635 The Embarrassed Cryptographer
先找出10^6之内的素数打表,然后用每个数组的一个单位代表1000进制,这种思想是我在学大数除法的时候学到。这里选用一千进制是因为l有10^6,取模如果再乘以下一位数的时候正好最大为10^9不会超int型。代码:#include#include #define maxn 1000000int num[40],s,f[1000005],p[100005],plen,len;using
2012-09-10 21:25:57 730
原创 POJ 1019 Number Sequence
这个题目我在很久以前做过,不过是很蠢的方法,结果还是用了16ms,现在几乎是暴力都能0ms AC,一年的时间过得好快,两年的时间也好快。。。。我的方法应该很好理解,首先是要一路减下去,先确定这个数是在 多大 的范围内,然后再确定。我先自己确定了一下2147483647个数 大约在1-150000范围内。所以是10^6,t=10;故最多是 10^7。这样做不会爆。代码:#include
2012-09-10 16:42:43 658
原创 POJ 1840 Eqs
求满足公式的解有多少种,其中xi!=0;这道题应该要缩小枚举的范围,将等式化为两边相等,即a1x13+ a2x23+ a3x33= - ( a4x43+ a5x53 或者前面两项后面三项都是一样的。所以首先要枚举右边的值可以有那些,再枚举左边的值看那些可以和右边的值相等即可。还有一个地方值得注意,做这道题我本来也是想接触hash的,所以3*50^4=18750000,一千
2012-09-09 10:55:04 700
原创 USACO Section 1.5
昨天看了一天的《天堂绣》,挺好看的,顺便给各位推荐,既偶像(陆毅+韩智慧异国恋);又有底蕴,讲述中国苏州的手绣古董流失海外和手绣艺术向海外的传播。今天下午才开始A题,又水了四道。终于到了第二单元。代码:numtri: 数塔,如此简单的动规。代码:/*ID: duanjia2PROG: numtriLANG: C++*/#include#include#incl
2012-09-05 22:51:58 762
原创 POJ 3349 Snowflake Snow Snowflakes
上次在BFS的时候需要hash判重,但是很少接触hash的用法,其实还是和数据结构讲得一样,就是用一个公式起到一个映射的作用,用在搜索上可是缩小查找范围。代码:#include#includeusing namespace std;#define maxn 10949 //hash的大小最好是素数 vector hash[maxn];int arm[100005][6];
2012-09-04 10:09:30 1358
原创 USACO Section 1.4
怎么说这些个题,看的头晕。学长说这是两百年前的题目了。这一单元学到了哈希查找的效率。Clocks: 自己开始便是想到BFS,结果BFS一做时间不佳,空间更加不佳。不过很蛮的BFS。加上了位运算的加速和哈希表记录转态。12,3,6,9这中状态我用0,1,2,3分别表示,每个数3位,所以9个数可以用27位的数了表示,加上哈希判重。这道题还是枚举的好把0ms能AC。具体0ms在nocow上有详细的分
2012-09-03 17:01:30 760
原创 POJ 1419 Granph Coloring
早就听说这是图的独立集问题,可是杨大哥的DFS提醒我还是这样做靠谱,那个算法没学过。只有黑色的结点被枚举了两次,所以算不了2的次方的复杂度。代码:#include#includeusing namespace std;bool col[105],map[101][101],a[105];int n,ans;bool ok(int i){ for(int j=1
2012-09-03 15:35:15 844
原创 POJ 2992 Divisors
这种题目,纯粹是折磨人的。那么容易TLE,昨天做了一个上午都没做出来,今天算是改对了,杨大哥说把素数打表,我嫌烦,不过打表之后确实会快。每一个数都可以用 m = p1^a1 * p2^a2 * ...... * pn^an来表示,所以它的因子的个数有(a1+1)*(a2+1)*...*(an + 1)中,很简单,每个因子都有指数都有0,1,2....到自身的ai+1个选择。 所以:我们
2012-09-01 09:57:50 493
原创 POJ 1836 Alignment
最长上升子序列的变形,不过题目有点问题,怎么看怎么Wrong.要考虑中间的如果i ->j是上升的,j -> n-1是下降也是可以。还有中间有两个相等的也可以。主要注意这个就可以了。代码:#include#include#includeusing namespace std;int dp1[1005],dp2[1005];double a[1005];int main(){
2012-08-30 18:53:51 511
原创 POJ 3267 The Cow Lexicon
这道题目看了我很久。 题意:给你一个主串,和一些单词,问你在主串中至少删除几个字母,是的剩下的都是由给出的单词组成。 分析:这道题想了我老久,因为我也是在对DP的探究之中。对于主串str,在i的位子上有两个决策:删除,不删除。不删除的话必须在字典当中要有与之匹配的单词,删除的话那么dp[i]= dp[i-1] + 1.不删除则必须分析,如果 acorw 做到w时,假设有一个单词
2012-08-30 14:47:45 570
原创 USACO Section 1.3
昨天到今天又做了四道简单的题。有开启了一个新的一页。milk: 很简单的贪心,先选单价便宜的呀。代码:/*ID: duanjia2PROG: milkLANG: C++*/#include#include#includeusing namespace std;struct node{ int p,a;} s[5005];bool cmp(no
2012-08-30 09:49:08 558
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人