- 浏览: 27658 次
- 来自: 上海
最新评论
-
qifeifei:
这个代码很明显有读也有写,但是释放锁没有在finally里面写 ...
java 多线程高并发读写控制 误区 -
focus2008:
qifeifei 写道11楼的理解是在读前面也加上synchr ...
java 多线程高并发读写控制 误区 -
qifeifei:
11楼的理解是在读前面也加上synchronized吗?对并发 ...
java 多线程高并发读写控制 误区 -
LieutenantGeneral:
1、不是这个并发有问题,是你的理解有问题:你想实现读写互斥,你 ...
java 多线程高并发读写控制 误区 -
haochong:
楼主的多线程还得多学习哈。。
java 多线程高并发读写控制 误区
文章列表
hi,
自己在做工程的时候,遇到批量插入数据的数据修复场景。我的思路是在插入前准备一个临时表,临时表的整理就看当时的选择条件了,临时表就是要插入的数据集,最后再批量插入到数据库中。
WITH tempT AS (
SELECT
item_id AS combo_id,
item_id,
now() AS create_date
FROM
ali_item
WHERE
item_id NOT IN (
SELECT
combo_id
FROM
ali_item_combo
)
)
INSERT INTO ali_item_combo (combo_ ...
Thrift项目一般用来做内部项目接偶用的,还有能跨不同语言的功能,非常方便,一般前端系统和后台server线上都是3个节点,然后前端通过获取client来访问后台server,那么如果是多太server,就是有一个负载均衡的方法,然后最后访问其中一个节点。那么换个思路,能不能发送给所有节点的server呢,如果能就可以做到消息群发了,答案是可以的。充分利用这一点将能够解决我们项目中的很多问题。
在多节点的系统中,如何实现分布式锁机制,其中用redis来实现是很好的方法之一,我们先来看一下jedis包中,有个类名BinaryJedis,它有个方法如下:
public Long setnx(final byte[] key, final byte[] value) {
checkIsInMulti();
client.setnx(key, value);
return client.getIntegerReply();
}
它的意思是,设置这个key和value,前提是当前key不存在的情况下,还有一个重要前提,不存在多线程共享一个client,如 ...
自己写的一个开源爬虫框架,取名为Slit。现在的爬虫框架确实有很多,例如Nutch,Heritrix,webMagic等等我为什么又要自己写一个呢?这几个爬虫框架确实都不错,网上也有很多关于它们的评价,但是我发现它们中有很多功能我用不到,有些地方扩展性有点限制,然后自己一想搞个适合自己的轻框架,于是准备这个练手的项目Slit。
下面我对Slit项目做一些基本的介绍,包括项目的架构,内部运行逻辑,特点,怎么使用,和传统爬从比较等等。
1, Slit 的模块介绍
2, Slit 内部运行逻辑
2.1,Fetcher模块,主要负责从url等待队列头取url, ...
下面这段sql本来目的是想更新条件下的数据,可是这段sql却更新了整个表的数据。sql如下:
UPDATE tops_visa.visa_order
SET op_audit_abort_pass_date = now()
FROM
tops_visa.visa_order as t1
INNER JOIN tops_visa.visa_visitor as t2
ON t1. ID = t2.order_id
WHERE
t1.op_audit_abort_pass_date IS NULL
AND (
t2. STATE = 'pch_abort_op_au ...
我使用的是ubuntu13.04系统,在安装nginx的时候遇到如下几个问题,然后找思路解决的,nginx 的下载与安装
wget http://nginx.org/download/nginx-1.0.11.tar.gz
tar zxvf nginx-1.0.11.tar.gz
./configure
make
make install
安装的时候出现错误如下:
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the mod ...
先看一下下面的错误代码,对写加了synchronized控制,保证了写的安全,但是问题在哪里呢?
public class testTh7 {
private String data;
public String read(){
System.out.println(Thread.currentThread().getName() + "read data " + data);
return this.data;
}
public synchronized void write(String data){
System.out.pri ...
非常实用的java比较器,贴上代码:
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.BooleanUtils;
imp ...
在项目开发的时候,经常有一些输入框,控制输入的格式,而不是等输入好了再去检查格式,格式错了就报错,体验不好。
/** 数字,中文,字母,浮点数(+/-/.) 类型输入限制,只要在input标签上加上 jInput="number,chinese,alphabet,floating" 备注:floating属性只能单独用*/
function limitInptFormat(){
var inputType=['number','chinese','alphabet','floating'];
$('body').delegate(&quo ...
1, java多线程共享主内存中变量的时候,一共会经过几个阶段,
lock:将主内存中的变量锁定,为一个线程所独占。
unclock:将lock加的锁定解除,此时其它的线程可以有机会访问此变量。
read:将主内存中的变量值读到工作内存当中。
load:将read读取的值保存到工作内存中的变量副本中。
use:将值传递给线程的代码执行引擎。
assign:将执行引擎处理返回的值重新赋值给变量副本。
store:将变量副本的值存储到主内存中。
write:将store存储的值写入到主内存的共享变量当中。
所以线程操作共享变量的时候,都 ...