- 博客(65)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 关于BoilerpipeExtractor解析html乱码问题
写在前面: 不知道网上这个解决方案是谁抄的谁的,千篇一律的答案,而且答案让人看得找不到北。网上的答案见下面.谁能告诉我,getEmptyConnection 是什么鬼。下面给出正确的方案: URL url = new URL(getUrl()); URLConnection connection = url.openConnection(); ...
2019-06-27 18:47:58
294
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Redis基础知识----SDS(简单动态字符串)
以下的总结,基于redis源码4.0.9版本 1、redis的底层存储数据结构: 简单动态字符串(SDS)、链表、字典、跳跃表、整树集合、压缩列表等 2、redis的数据结构对象 字符串、列表、哈希、集合、有序集合等简单动态字符串(sds)SDS通过字符串的长短不同实现了5中不同的数据结构,其不同在于头部用来标识字符串长度的类型,主要用来减小结构体的大小,...
2018-06-07 15:50:12
835
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JDK1.7中的ThreadPoolExecutor源码剖析
JDK1. 7中的ThreadPoolExecutor线程池,顾名思义一个线程的池子,池子里存放了很多可以复用的线程,如果不用线程池类似的容器,每当我们需要创建新的线程时都需要去new Thread(),用完之后就被回收了,线程的启动回收都需要用户态到内核态的交互,频繁的创建开销比较大。而且随着线程数的增加,会引起CPU频繁的上下文切换严重影响性能。这时候线程池类似的容器就发挥出了作用。线程池里面的
2016-08-10 15:03:38
4498
4
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 对Volatile变量的理解和总结
之前因为对Volatile变量的理解不够深刻,只是知道它可以轻量级的锁,但是在真正编写多线程的程序时,除用它来做为线程结束的标志外,并不敢过多的使用。但是在看Current包中的大部分源码时发现,作者居然使用Volatile变量加CAS操作实现了很多只有通过加锁才能实现的功能,叹为观止。然后就在前面了解了JMM的基础上,又去详细的了解了一下Volatile变量的使用。volatile变量的读写对所
2016-08-08 17:40:46
2905
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 关于javap编译后多出一部分代码以及finnaly块中加return 无法抛出异常的看法
先看代码static int test() throws Exception{ int i = 0; try { i = i+2; return i; } finally{ i=i+1; } }比较简单,之前知道finally块如果没有返回语句是不影响ret
2016-08-04 18:29:48
959
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 wabacus框架在Myeclipse reload过程中方法区溢出问题讨论
问题解析总结问题解析 (下面的文章都是基于个人的知识,由于本人是个菜鸟,欢迎指正) 现在手上有一个比较简单的信息管理系统的小项目,最开始立项的时候我还没有来到学校,已经定下来采用wabacus框架去做,至于wabacus框架是个什么东西,详情请点击。 Wabacus框架,是一个能大大提高J2EE项目开发效率的通用快速开发框架,与ExtJs,JQuery等纯客户端框架不同, 它提供的是前
2016-06-20 17:10:42
3047
3
原创 zk系列-1.客户端数据请求和接受
GetData// 同步调用 public byte[] getData(final String path, Watcher watcher, Stat stat) throws KeeperException, InterruptedException { final String clientPath = path; PathUtils.validatePath(clientPath); // the watch contains the u
2020-06-24 17:12:11
505
原创 关于Using index for group-by和Loose Index Scan的关系
最近看好多关于mysql的blog在讲松散扫描的时候,提到了explain后,extra会显示Loose Index Scan,但是在5.6.34等版本中,会显示Using index for group-by,通过查找官方资料发现两者没什么区别。下面引自官方文档:https://dev.mysql.com/doc/refman/8.0/en/group-by-optimization.html...
2020-03-24 10:52:21
1324
翻译 cannot find -lstdc++
Google 搜到的解决了问题 搜了很多没法解决。引自:http://tech.yipp.ca/compile-error/install-libstdc-for-32-bit-on-64-bit-centos/You are running CentOS 64-bit, and get the libstdc++ error cannot find -lstdc++/usr/bin/ld...
2020-03-11 10:25:56
820
原创 redo log的刷新策略
MySQL支持用户自定义在commit时如何将log buffer中的日志刷log file中。这种控制通过变量 innodb_flush_log_at_trx_commit 的值来决定。该变量有3种值:0、1、2,默认为1。但注意,这个变量只是控制commit动作是否刷新log buffer到磁盘。当设置为1的时候,事务每次提交都会将log buffer中的日志写入os buffer并调用f...
2019-08-26 15:33:26
885
原创 关于Mysql的Page Directory(或者slots 、 directory slots)
一下内容摘自Mysql的开发文档 地址见:https://dev.mysql.com/doc/internals/en/innodb-page-directory.htmlPage DirectoryThe Page Directory part of a page has a variable number of record pointers. Sometimes the record ...
2019-08-25 15:34:41
2550
转载 springboot 启动时refreshContext过程解析
写在前面:在Springboot启动的那些事中分析了SpringApplication.run的过程。下面分析一下最为重要的是refreshContext。发现一遍比较好的帖子:https://fangjian0423.github.io/2017/05/10/springboot-context-refresh/...
2019-08-20 16:26:31
720
原创 Springboot启动的那些事
写在前面:可扩展,可定制的内容: - 初始化器(Initializer) - 监听器(Listener) - 容器刷新后置Runners(ApplicationRunner或者CommandLineRunner接口的实现类) - 启动期间在Console打印Banner的具体实现类...
2019-08-19 20:05:57
171
原创 hibernate Session与dataSource连接的关系
一个事务同一时刻只能占有一个数据库链接一个数据库链接可以被多个事务使用,取决于数据库的连接池数据库连接池中空闲链接超时,回收。一个事务执行时间超过了数据库连接池的最大protected void doBegin(Object transaction, TransactionDefinition definition) { HibernateTransactionObject txO...
2018-10-30 18:49:49
1053
原创 Hibernate saveOrUpdate源码解析
HttpSession与Hibernate Session区别Hibernate怎么管理Session事务读写与FlushMode关系Session与事务的关系Session与事务传播级别的关系HibernateTemplate的save等方法的执行过程一条hql语句的执行过程笔记SessionImpl 实现了EventSource(封转保存等事件时,记录事件的原Session...
2018-10-30 18:14:33
2066
原创 Postman自定义header和cookie无效
做Web开发和测试的研发人员应该都有用过Postman插件,但是由于chrome版本的更新,出现了一些chrome安全的限制,Postman发不出带cookie和带有自定义头部标签的请求。所以说为了实现跟老版本的postman同样的功能,就必须安装Postman Interceptor插件,这样才能直接使用chrome浏览器的cookie等信息。其功能类似fiddler。找到上面的按钮,开...
2018-05-14 20:39:43
20262
原创 Java 中list(ArrayList)的foreach遍历方式调用list的remove删除元素,不抛出ConcurrentModificationException
关于list删除元素的当时有很多,具体可以参考下面这个博客。https://blog.csdn.net/claram/article/details/53410175里面提到了list的foreach遍历方式删除元素,会抛出ConcurrentModificationException。foreach是迭代器遍历的一种简写。 但是,如果list中只有两个元素,删除第一个元素时,则不会...
2018-05-13 19:54:48
957
原创 给定一个字符串,找出不含有重复字符的最长子串的长度。
给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。要点: 滑块
2018-04-13 16:55:53
17723
8
原创 找出所有不重复的三个元素组合使三个数的和为零.(要点)
题目:给定一个包含 n 个整数的数组 S,是否存在属于 S 的三个元素 a,b,c 使得 a + b + c = 0 ?找出所有不重复的三个元素组合使三个数的和为零。注意:结果不能包括重复的三个数的组合。 例如, 给定数组 S = [-1, 0, 1, 2, -1, -4], 一个结果集合为: [ [-1, 0, 1], [-1, -1, 2] ]要点: ...
2018-04-12 17:26:31
1507
原创 关于两个被final修饰的byte相加赋值给一个byte变量,会不会编译出错的问题
上代码byte b1=1,b2=2,b3,b6,b8; final byte b4=4,b5=6,b7=125; b6=b4+b5; //(1)不会发生编译错误b3=(b1+b2); //(2)会发生编译错误b8=b5+b7; //(3)会发生编译错误System.out.println(b3+b6); 代码块(2)位置肯定会出现编译错误。具体原因 b1和b...
2018-04-06 23:42:14
1441
原创 SLF4J: Failed toString() invocation on an object of type [org.eclipse.jetty.websocket.server......
在配置SpringBoot的log时,遇到如下错误:SLF4J: Failed toString() invocation on an object of type [org.eclipse.jetty.websocket.server.WebSocketServerFactory]Reported exception:java.lang.NullPointerException
2018-01-22 21:00:10
7658
转载 Transaction rolled back because it has been marked as rollback-only解决方案
默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。spring aop 异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认情况下aop只捕获runtimeexception的异常,但可以通过配置来捕获特定的异常并回滚,换句话说在service的方法中不使用try catch 或者在catch中最后加上t
2017-07-07 20:44:32
3740
转载 2017 idea intellij 激活方式 系统不限
1.到网站 http://idea.lanyus.com/ 获取注册码。2.填入下面的license server: http://intellij.mandroid.cn/ http://idea.imsxm.com/ http://idea.iteblog.com/key.php以上方法验证均可以PS:有钱推荐买正版的,扣jb公司连个正版的开发软件都不给买。
2017-06-12 10:09:00
893
转载 最大递增子序列求解从O(n^2)到O(nlogn)
最长递增子序列问题的求解最长递增子序列问题是一个很基本、较常见的小问题,但这个问题的求解方法却并不那么显而易见,需要较深入的思考和较好的算法素养才能得出良好的算法。由于这个问题能运用学过的基本的算法分析和设计的方法与思想,能够锻炼设计较复杂算法的思维,我对这个问题进行了较深入的分析思考,得出了几种复杂度不同算法,并给出了分析和证明。 一, 最长递增子序列问题的描述 设L=public vo
2016-09-02 22:49:19
706
转载 Java程序执行超时——Future接口介绍
public interface Future Future 表示异步计算的结果。 Future有个get方法而获取结果只有在计算完成时获取,否则会一直阻塞直到任务转入完成状态,然后会返回结果或者抛出异常。 Future 主要定义了5个方法: 1)boolean cancel(boolean mayInterruptIfRunning):试图取消对此任务的执行。如果任务已完成、或已取消,或者由于某
2016-08-31 17:00:55
1085
原创 ConcurrentHashMap中并发级别,桶内hash表的长度,扩容门槛的确定
ConcurrentHashMap中sigment数量,sigment中hash表的长度,以及加载因子的确定。 分析一下下面的构造函数参数 initialCapacity 是我们指定的map的初始容量大小,但是map初始完成后的容量并不一定等于该值。 loadFactor 用来控制每个桶内的扩容的门槛threshold 桶内元素大于该值,要扩容在hashrehash() concurren
2016-08-17 16:13:11
2598
原创 把数组排成最小的数
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。个人理解和感觉,题目不是很难,比较简单,但是有需要注意的地方,1,数字的拼接不能用int或者long,数组很大会溢出。2,排序规则,要重新定义,根据,a和b的前后顺序不一样,可以得到两个数,ab和ba比较
2016-08-15 18:24:36
575
原创 寻找数组中最小的k个数(快排和堆排)
题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路1:利用快排的思想,寻找第k个位置上正确的数,k位置前面的数即是比k位置小的数组,k后面的数即是比k位置元素大的数组。 public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, in
2016-08-15 13:02:57
10956
原创 数组,字符串全排列算法分析(字典序生成法)
先看一个题: 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。就是输入一个字符串,按字母顺序输出全排列后的字符串。下面说一个字典序方法
2016-08-11 22:40:01
1970
原创 数据库事务和隔离级别(重点,不可重复读和可重复度的区别)
数据库事务的四个特性(ACID)1 、原子性 (Atomicity) 事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 2 、一致性 (Consistency) 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数
2016-08-11 12:05:16
13398
3
原创 总结:对Java内存模型JMM的理解
JMM规定了线程的工作内存和主内存的交互关系,以及线程之间的可见性和程序的执行顺序。一方面,要为程序员提供足够强的内存可见性保证;另一方面,对编译器和处理器的限制要尽可能地放松。JMM对程序员屏蔽了CPU以及OS内存的使用问题,能够使程序在不同的CPU和OS内存上都能够达到预期的效果。 在jsr-133中是这么定义的 A memory model describes, given a
2016-08-08 16:29:00
4080
原创 CAS操作ABA问题发生的场景
最开始看一些资料,提到了CAS操作存在问题,就是在CAS之前A变成B又变回A,CAS还是能够设置成功的,开始十分的费解,怎么可能呢,A变回了A就应该能够CAS成功啊,为什么会不成功呢?于是去查了一些资料,其中提到了两种情况: 第一种,A最开始的内存地址是X,然后失效了,有分配了B,恰好内存地址是X,这时候通过CAS操作,却设置成功了。这种情况在带有GC的语言中,这种情况是不可能发生的,为什么呢?
2016-08-06 23:10:00
6730
4
转载 Java线程面试题 Top 50
原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位
2016-08-06 16:52:27
395
原创 Thread类中值得注意的方法
1,Sleep(long)让出cpu的使用权,不释放锁 Wait(long)让出cpu使用权,并释放锁。 2,Join()是通过wait函数实现的主线程阻塞。 3,interrupted()函数是Thread静态函数,用来检测当前线程的interrupt状态,检测完成后,状态清空 4,yield()函数告诉cpu我可以让出使用权了,同优先级的线程可以使用了,并不一定立即让出,让出后
2016-08-06 16:12:08
2609
原创 剑指offer复杂链表复制
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)我的代码,思路比较笨,就是首先构造一个正常的不大random指针的链表,然后再去遍历原始链表,查看random指针指向的位置,同时移动复制的链表的next,找到后赋值。时间复杂度比
2016-08-05 22:06:41
449
转载 Tomcat7源码导入MyEclipse
Tomcat 1, 下载Tomcat7 http://labs.renren.com/apache-mirror/tomcat/tomcat-7/v7.0.22/src/apache-tomcat-7.0.22-src.zip,进行下一步之前请确定你机器上有Ant1.8.2或以上版本。有JDK6或以上版本。 2, 解压zip包进入 J:\apache-tomcat-7.0.22-wind
2016-08-05 20:08:17
2461
2
原创 微信登录获取扫码结果的原理
之前面试,有个面试官问我微信扫码登录的原理,当时我没具体的看过,就说了一下自己的猜想。 用户访问网页版登录界面,登录页面动态生成一个登录链接,应该带有token之类的,这时候网页开始不停的给服务器发送请求,轮训用户是否已经扫码成功。用户用微信客户端扫码,扫码之后微信客户端向服务器发送一个请求,告诉服务器用户扫码成功,此时可以update一个标志,在网页版微信下次轮询登录状态时,获取到扫码成功的命
2016-08-05 16:57:48
8323
1
原创 ByteBuffer的Put和Get的用法和要注意的细节
最近再看java的NIO,里面提到了几个基本的类,其中ByteBuffer是最基础的,用于Channel的读写传输数据使用。下面总结一下我理解的ByteBuffer。 先从代码开始分析 static public void asIntBuffer() { ByteBuffer bBuf = ByteBuffer.allocate(512); bBuf.putI
2016-08-05 13:07:25
23759
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人