![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
文章平均质量分 84
咸鱼老罗
干活人
展开
-
http编程系列(一)——URL使用和爬取博客图片小DEMO
URL简介和基本使用浏览网页基本都用的http协议,java中也可以进行请求http服务器,并获得服务器响应。Java实现网络爬虫、抢购是用http进行。这里接收通过URL去访问http协议服务器,下图是网络请求流程。简单例子String urlStr = "http://127.0.0.1:8080/study_ssmvc/restful?id=1&name=2";URL原创 2017-05-18 19:11:11 · 2089 阅读 · 0 评论 -
unicode字符串解析
现象和答案在http接口接收时,很多接口提供方都喜欢把汉字通过unicode的方式传过来,而数字和字母保持不变,就像这样。{“Content”:"[reply]CocoWu892[/reply]\n\u6c9f\u901a\u662f\u6700\u91cd\u8981\u7684\u6280\u80fd\u4e4b\u4e00"}这里就必须涉及到一个带unicode字符串转成正常字符串...原创 2019-02-19 14:18:28 · 3925 阅读 · 0 评论 -
JAVA自动爬取CSDN用户数据并文章点赞
爬取用户某天,我发现我的文章被某个用户点赞了。欣喜之下,把那边文章重新校核更改一遍,接着进入这个点赞我的用户看看,结果发现他近期的博客是一些爬虫的实战。我想,我那篇文章,应该是他做的一个小程序批量加载用户信息并给文章点赞。我觉得这是一个有点意思的事,于是用java实现csdn批量爬取用户名并点赞。其中批量爬取用户名的思路借鉴这位大神的这篇博文GO+Selenium批量关注CSDN 1 (如何获取...原创 2019-02-13 10:55:58 · 1557 阅读 · 11 评论 -
CSDN用户行为分析和用户行为数据爬取
爬虫随机从CSDN博客取得800条用户行为数据,包含用户名、原创博客数、评论数、浏览量,试着从博客数,评论数,浏览量三个方面分析csdn的博主们的形象。原创博客数博主们的原创博客数并不是很多,50篇以下的占了70%,0篇的就有35%。我没有想到的是超过100篇原创博客的博主居然有21%,看来养成写博客习惯的人还是很多啊,原创博客超过100,也不是什么特别稀奇的情况。评论数有63%的博主评...原创 2019-02-16 10:17:57 · 3772 阅读 · 2 评论 -
spring-email官方翻译
官方地址:https://docs.spring.io/spring/docs/5.0.0.M5/spring-framework-reference/html/mail.htmlEmailIntroduction Library dependencies The following JAR needs to be on the classpath of your...翻译 2018-06-18 16:03:20 · 1250 阅读 · 0 评论 -
NIO系列(二)——Channel通道复制和Selector选择器
Channel通道NIO通过通道来读写数据Channel有以下实现类FileChannel:文件读写通道。DatagramChannel:通过UDP读写网络中的数据。SocketChannel:通过TCP读写网络中的数据。ServerSocketChannel:监听新进来的TCP连接,对每个新进来的连接都会创建一个SocketChannel。Channel读取数据的方式原创 2017-06-23 17:01:52 · 1960 阅读 · 0 评论 -
NIO系列(一)——介绍和Buffer缓冲区
NIO简介NIO是java1.4开始的替换IO的API,它相对于IO的特点是1.通道(Channel)和缓冲区(buffer)2.非阻塞3.选择器通过非阻塞,线程将数据读到缓存区,是非阻塞异步的。通过选择器,可以使多个通道在一个线程执行。通道(Channel)和缓冲区(buffer)通过channel连接文件、tcp、udp终端,通过buffer拿到数据通道可以原创 2017-06-09 17:56:42 · 1191 阅读 · 0 评论 -
socket系列(三)——Spring-socket实时通信、推送
Spring-socket实现实时通信实现Spring4.x发布spring-socket模块包,用于支持websocket,同时兼容支持socketJS。需要把spring所有的包更新到4.x以上版本,并下载spring-websocket包。所需jar包 org.springframework spring-context原创 2017-05-24 19:10:55 · 17550 阅读 · 4 评论 -
socket系列(二)——Javaee实现实时通信
实现java自带javaee-api7.0实现环境要求Tomcat7.0以上支持(最好tomcat8.0以上)Ie7,8,9不支持,可以有sockeJS代替Jar包:javaee-api-7.0.jar项目结构Java代码 import java.io.IOException;import java.util.concurrent.CopyOnWriteA原创 2017-05-24 18:52:06 · 1585 阅读 · 0 评论 -
socket系列(一)——socket实现推送
Javasocket实现推送实现设想:用socket实现服务器与客户端的tcp长连接,保持outputStream、InputStream连接,通过输入输出流实现信息实时推送代码public classTestPush { @SuppressWarnings("resource") @Test public void pushService() th原创 2017-05-24 18:41:24 · 1832 阅读 · 2 评论 -
java文件上传报文解析与实现
文件上传用web实现很容易,只需要在form加上enctype="multipart/form-data"就可以。用java实现也很简单,注意一下请求报文格式就好了。首先我们看一下报文数据POST /epg/admin/epg/originalfile/upload.doHTTP/1.1 Accept-Encoding: gzip, deflateContent-Length:原创 2017-07-20 17:10:05 · 2144 阅读 · 0 评论 -
Netty教程系列(一)——netty入门应答程序
Netty简介Netty是一个异步通信、事件驱动基于NIO编写的高性能高并发的java网络编程框架。下面通过一个简单的服务器应答程序来完成Netty的初步学习。代码地址:https://gitee.com/ShiXiCheng/study_nettyNetty的编程例子——应答程序设置开发环境Jdk1.8Mvn配置<dependencies> ...原创 2017-06-27 18:29:32 · 3166 阅读 · 7 评论 -
NIO系列(六)——线程通信(pipe)
PipePipe用于线程之间的数据传输。Pipe有两个嵌套类(内部类)SinkChannel和SourceChannel,数据写入到SinkChannel,数据从SourceChannel读取。创建Pipe通过Pipe.open()来创建管道Pipe pipe = Pipe.open();向管道写入数据创建SinkChannel对象Pipe.SinkChannel si原创 2017-06-23 17:44:38 · 857 阅读 · 0 评论 -
NIO系列(五)——Udp协议(DatagramChannel)
DatagramChannelDatagramChannel是收发UDP包的通道,与TCP协议不同,UDP发送不进行连接,也不对确认数据是否收到。打开DatagramChannelDatagramChannel server = DatagramChannel.open();server.socket().bind(newInetSocketAddress(10086));此例子原创 2017-06-23 17:39:15 · 1737 阅读 · 0 评论 -
NIO系列(四)——socket通道和serversocket通道
SocketChannelSocketChannel是一个连接到tcp网络套接字的通道。可以通过以下2中方式创建1.打开一个SocketChannel并连接到互联网上的某台服务器。SocketChannel client = SocketChannel.open(new InetSocketAddress("127.0.0.1",10699));2.ServerSocketChan原创 2017-06-23 17:36:08 · 1532 阅读 · 0 评论 -
NIO系列(三)——FileChannel文件通道
FileChannel文件通道FileChannel,是堵塞的。作用是文件的连接和读取。打开FileChannelFileChannel不能直接打开,我们可以使用RandomAccessFile、InputStream、OutputStream来获取FileChannel实例。下面是RandomAccessFile获取实例RandomAccessFile aFile = new R原创 2017-06-23 17:20:37 · 679 阅读 · 0 评论 -
分布式锁的实现以及在定时器中的应用
分布式锁是为了保证分布式各系统对于资源的强占,独占。分布式锁的设计与多线程锁设计一样,都是通过一个信号量,对它进行CAS(compare and set)原子操作来实现乐观锁,或通过一个独占锁实现悲观锁,悲观锁不推荐。乐观锁乐观锁的核心是通过信号量代表资源,通过CAS的操作去标志改信号被占用。CAS成功,代表资源没有被占用,执行任务;CAS失败,代表资源被占用或处理过,不执行改资源。ture...原创 2019-06-27 11:41:38 · 851 阅读 · 0 评论