- 浏览: 98819 次
- 性别:
- 来自: 杭州
最新评论
-
ddnzero:
学习了 ,今天刚看见这框架就来看看是什么。看来Spring D ...
QueryDSL学习笔记 -
love398146779:
分析的不错,收了。
多进程log4j日志丢失问题分析 -
diecui1202:
Attach Listener这个应该是HotSpot的动态添 ...
JVM线程知多少 -
diecui1202:
janeky 写道写得很好,谢谢分享!希望对你有帮助~
Java虚拟机学习笔记(三)Java虚拟机 -
diecui1202:
weilJava 写道昨天被问到了多进程读写文件的问题一点思路 ...
多进程log4j日志丢失问题分析
文章列表
最近部门同事在开发统一数据服务层,了解到其底层使用到了QueryDSL,于是花了几个小时在网上看了一下资料,写了一个小例子,供大家参考;
QueryDSL介绍
QueryDSL仅仅是一个通用的查询框架,专注于通过Java API构建类型安全的SQL查询。
Querydsl可以通过一组通用的查询API为用户构建出适合不同类型ORM框架或者是SQL的查询语句,也就是说QueryDSL是基于各种ORM框架以及SQL之上的一个通用的查询框架。
借助QueryDSL可以在任何支持的ORM框架或者SQL平台上以一种通用的API方式来构建查询。目前QueryDSL支持的平台包括JPA,JDO,SQL ...
以前没有习惯去做总结,但是今年的今天,着实想写点什么,因为2011,于我来说,是非常重要的一年!
一、家庭
首先,今年3.10,我们在老家办喜酒,我们结婚了!
其实领证是在2010.6.1,但对两边的爸爸妈妈来说, ...
本文已在黄金档上发表,原文链接:http://www.goldendoc.org/2011/11/jvm-thread/
两个问题
什么是守护线程?守护线程与非守护线程有什么区别?其应用场景有哪些?
一个简单的Java程序,启动后JVM创建了哪些线程,它们的作用是什么?
熟悉上面两个问题的同学可以绕过了,不太熟的同学可以继续往下看,哈哈!
守护线程
守护线程,又叫Daemon线程,它有以下几个特点:
守护线程通常由虚拟机自己使用,比如垃圾收集器的线程;
Java程序可以把它任何创建的线程标记为守护线程;但必须在线程运行前设置;
Java初始线程(即开始于main方法 ...
开放平台这个话题其实很大,涉及到多方面,比如平台搭建、安全、流量控制与计费、服务端性能优化等;这次QCon会议中,人人网介绍了开放平台授权与验证,飞信介绍了资源分配与控制策略,淘宝介绍了Web请求异步化处理,腾讯介绍了Open API的设计;下面是我之后的一些总结;
1、授权与验证
还是拿网上最流行的例子吧,网站A提供图片存储服务,网站B提供在线打印服务;现在用户想使用网站B提供的在线打印功能打印存储在网站A上的图片,怎么办呢?通常有两种做法:
用户先从网站A把要打印的图片下载到本地,然后再上传到网站B,最后通过网站B完成打印;
用户从网站B上直接访问存储在网站A上的图片,然后打 ...
本文已发表在:http://www.5ilei.com/writing/2011-hangzhou-qcon-nosql.html
有幸参加了今年InfoQ在杭州首次举办的QCon大会,下面将我了解到的一些知识总结并分享给大家,其中有些是会后查资料了解的,有不正确的地方欢迎指出;
QCon中有一个专题专门介绍大数据及NoSQL,正好也对这方面有一点兴趣;介绍NoSQL的还真是多啊,Sina Weibo介绍Redis,盛大介绍MongoDB,Qunar介绍NoSQL常见误区及陷阱;
不管是哪种NoSQL产品,它们关注的点主要在以下几个方面:
1、schema- ...
[注]:本文已在黄金档
上发布,原文链接见http://www.goldendoc.org/2011/08/jms_spec_message/
。
JMS
,即
Java Message Service
,它为
Java
应用程序提供了一种通用的用于创建、发送、接收以及读取消息的方式;
JMS
体系架构
1、
JMS Provider
面向消息中间件的,
JMS
接口的一个实现。提供者可以是
Java
平台的
JMS
实现,也可以是非
Java
平台的面向消息中间件的适配器;
...
几个问题
了解以下几个问题的同学可以直接忽略下文:
1、listen
库函数主要做了什么?
2、
什么是最大并发连接请求数?
3、什么是等待连接队列?
socket
监听相对还是比较简单的,先看下应用程序代码:
listen( server_sockfd, 5) ;
其中,第一个参数
server_sockfd为服务端
socket所对应的文件描述符,第二个参数5
代表监听socket
能处理的最大并发连接请求数,在2.6.26
内核中,该值为
256
;
listen
库函数调用的主要工作可以 ...
一、前情回顾
上一节《socket
地址绑定
》中提到,应用程序传递过来的端口在内核中需要检查端口是否可用:
if (sk->sk_prot->get_port(sk, snum)) {
inet->saddr = inet->rcv_saddr = 0;
err = -EADDRINUSE;
goto out_release_sock;
}
按照前面的例子来分析,这里是调用了
tcp_prot
结构变量中的
get_prot
函数指针,该函数位于
net/ipv4 ...
接上篇《socket地址绑定》
三、根据不同的协议来完成绑定
上面代码中的第3步是根据应用程序在创建socket时传递到内核的协议域及socket类型来决定调用采用哪个方法,具体可以参考
创建socket
一文,这里不再赘述;下面以AF_IENT及SOCK_STREAM为例来说明绑定的过程;
1、调用链:
net/Socket.c:sys_bind()->net/ipv4/Af_inet.c:inet_bind();
一、socket绑定入口
1、示例代码
struct sockaddr_in server_address;
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = inet_addr("0.0.0.0");
server_address.sin_port = htons(9734);
server_len = sizeof(server_address);
bind(server_sockfd, (struct sockaddr *)&server_add ...
接上篇“创建socket”
一文;
5、分配sock结构:
本文中的例子会调用inet_family_ops.create方法即inet_create方法完成socket的创建工作;其调用链如下:
net/Socket.c:sys_socket()->sock_create()->__sock_create()->net/ipv4/Af_inet.c:inet_create();
inet_create()主要完成以下几个工作:
1、示例及函数入口:1) 示例代码如下:
int server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
2) 入口:net/Socket.c:sys_socketcall(),根据子系统调用号,创建socket会执行sys_socket()函数;2、分配socket结构:1) 调用链:
一、socket()库函数到系统调用,再到内核
1、Linux运行的C库是glibc;2、socket()调用如下:1) socket()->__socket():glibc-2.3.6/sysdept/generic/socket.c (weak_alias(name1, name2))2) __socket():glibc-2.3.6/sysdept/unix/sysv/linux/i386/socket.S3) ENTER_KERNEL:
一、注册时机
1、在内核初始化时完成;2、内核初始化过程(init/main.c):kernel_init()->do_basic_setup()->do_initcalls()->do_one_initcall();3、socket文件系统注册过程(net/socket.c):core_initcall(sock_init)
一、“回车”(Carriage Return)和“换行”(Line Feed)的来历
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换 ...