- 浏览: 17486 次
最新评论
文章列表
1、前言
最近有同学问我有没有做过在线咨询功能。同时,公司也刚好让我接手一个 IM 项目。所以今天抽时间记录一下最近学习的内容。本文主要剖析了 WebSocket 的原理,以及附上一个完整的聊天室实战 Demo (包含前端和后端,代码下载链接在文末)。
2、WebSocket 与 HTTP
WebSocket 协议在2008年诞生,2011年成为国际标准。现在所有浏览器都已经支持了。WebSocket 的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话。
HTTP 有 1.1 和 1.0 之说,也就是所谓的 keep-alive , ...
记录某公司的一次面试
- 博客分类:
- Interview
昨天去了一家公司面试 Java 开发岗位,这篇文章主要是做一个面试的记录以及总结。
...请看原文,原文地址在文章的最下方
1、面向对象的三大特性
答:封装、继承、多态。
2、XML解析
...请看原文,原文地址在文章的最下方
3、反射
...请看原文,原文地址在文章的最下方
7、Hibernate 的一级缓存、二级缓存
经典Java面试题收集(二)
- 博客分类:
- Interview
97、Servlet接口中有哪些方法?
答:Servlet接口定义了5个方法,其中前三个方法与Servlet生命周期相关:
void init(ServletConfig config) throws ServletException
void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException
v ...
经典Java面试题收集
- 博客分类:
- Interview
1、面向对象的特征有哪些方面?
答:面向对象的特征主要有以下几个方面:
抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些 ...
前言
本文中的题目来源于网上的一篇文章《百度搜索 “Java面试题” 前200页》,但该文章里面只有题目,没有答案。因此,我整理了一些答案发布于本文。本文整理答案的原则是尽量做到精简、点到即止(因为一般面试题的试卷里面的作答区域有限)。如果你有更好的答案,欢迎在评论区指出,或者给Github仓库提PR。
本文永久更新地址:https://github.com/nnngu/LearningNotes/blob/master/Interview/03%20%E7%99%BE%E5%BA%A6%E6%90%9C%E7%B4%A2%20%E2%80%9CJava%E9%9D%A2%E8%AF%95 ...
Spring MVC的配置和使用
- 博客分类:
- Spring MVC
笔记仓库:https://github.com/nnngu/LearningNotes
Spring MVC需要的jar包
文章中 Spring MVC 使用的版本是 3.2.18 , 需要的 jar 包如下:
spring-webmvc
jstl 1.1.2
aopalliance 1.0
commons-logging 1.1.1
spring-aop
spring-beans
spring-context
spring-core
spring-expression
spring-web
使用 Maven 构建的 Java 项目,需要在 pom.xml ...
用js实现2048小游戏
- 博客分类:
- JavaScript
笔记仓库:https://github.com/nnngu/LearningNotes
1、游戏简介
2048是一款休闲益智类的数字叠加小游戏。(文末给出源代码和演示地址)
2、游戏玩法
在 4*4 的16宫格中,您可以选择上、下、左、右四个方向进行操作,数字会按方向移动,相邻的两个数字相同就会合并,组成更大的数字,每次移动或合并后会自动增加一个数字。
当16宫格中没有空格子,且四个方向都无法操作时,游戏结束。
3、游戏目的
目的是合并出 2048 这个数字,获得更高的分数。
4、游戏截图
Struts2的配置和一个简单的例子
- 博客分类:
- Struts2
笔记仓库:https://github.com/nnngu/LearningNotes
简介
这篇文章主要讲如何在 IntelliJ IDEA 中使用 Struts2,文章使用的 Struts2 的版本是2.5.14.1,与其他的版本有一点差别,在文章里已经说明。
环境
IntelliJ IDEA 2017.2.6
jdk1.8.0_101
Tomcat 8.0.38
添加依赖
依赖的 jar 包有如下几个:
笔记仓库:https://github.com/nnngu/LearningNotes
上一篇完成了音乐相册里面的相册功能,这一篇主要总结的是音乐相册里面的音乐播放器功能。
数据准备
在src/data目录添加音乐数据文件:musicDatas.js
代码如下:
export const MUSIC_LIST = [
{
id: 1,
title: '童话镇',
artist: '陈一发儿',
file:
笔记仓库:https://github.com/nnngu/LearningNotes
上一篇文章用爬虫自动下载了一些图片,这一篇就用这些图片做一个音乐相册吧!
效果预览
点击图片,切换到背面:
如何用Python爬虫实现百度图片自动下载?
- 博客分类:
- Spider
Github:https://github.com/nnngu/LearningNotes
制作爬虫的步骤
制作一个爬虫一般分以下几个步骤:
分析需求
分析网页源代码,配合开发者工具
编写正则表达式或者XPath表达式
正式编写 python 爬虫代码
效果预览
运行效果如下:
存放图片的文件夹:
源代码:https://github.com/nnngu/LagouSpider
效果预览
思路
1、首先我们打开拉勾网,并搜索“java”,显示出来的职位信息就是我们的目标。
2、接下来我们需要确定,怎样将信息提取出来。
查看网页源代码,这时候发现,网 ...
Github:https://github.com/nnngu项目源代码:https://github.com/nnngu/nguSeckill
关于并发
并发性上不去是因为当多个线程同时访问一行数据时,产生了事务,因此产生写锁,当一个获取了事务的线程把锁释放,另一个排队线程才能拿到写锁,QPS(Query Per Second每秒查询率)和事务执行的时间有密切关系,事务执行时间越短,并发性越高,这也是要将费时的 IO 操作移出事务的原因。
项目中的高并发发生在哪?
下图中,红色的部分就表示会发生高并发的地方,绿色部分表示对于高并发没有影响。
Github:https://github.com/nnngu项目源代码:https://github.com/nnngu/nguSeckill
前端交互流程设计
对于一个系统,需要产品经理、前端工程师和后端工程师的参与,产品经理将用户的需求做成一个开发文档交给前端工程师和后端工程师,前端工程师为系统完成页面的开发,后端工程师为系统完成业务逻辑的开发。对于我们这个秒杀系统,它的前端交互流程设计如下图:
这个流程图就告诉了我们详情页的流程逻辑,前端工程师根据这个流程图设计页面,而我们后端工程师根据这个流程图开发我们对应的代码。前端交互流程是系统开发中很重要的一部分,接下来进行
作者:nnngu项目源代码:https://github.com/nnngu/nguSeckill
首先在编写Service层代码前,我们应该首先要知道这一层到底是干什么的。
Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着在Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的dao层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。
在项目中要降低耦合的话,分层是一种很好的概念,就是各层各司其职, ...