element

Java+Netty、Vue+Element-UI实现的即时通信应用 leo-im

偶尔善良 提交于 2020-04-28 07:35:22
之前工作接触了几个开源的IM产品,再加上曾经用Netty实现过几个服务,于是就有了用Netty实现一个IM的想法,于是用业余时间写了一个IM,和喜欢Netty的程序员们分享。 考虑到方便扩展,在服务端采用了Http+Socket结合的设计,客户端所有的请求都基于Http,如发送消息、修改个人信息等,所有的消息推送采用Socket方式即时推送到客户端,这样的设计可以在并发访问量大的情况下,将Http服务与Socket服务分开部署,减小各自的访问压力。 Http服务也基于Netty实现,在Netty之上做了扩展,参考Spring MVC注解实现了netty-rest-server( netty-rest-server ),使用该框架,可实现注解注入REST controller,实现统一异常处理控制器和拦截器(如跨域拦截器、身份验证拦截器等)。 Http服务和Scoket服务之间的解耦和通讯可使用Java内置的队列或Redis发布/订阅实现,消息处理器接收到任务后,会将该任务交由线程池处理,处理后通过GroupChannel发送广播或发给指定的Channel。 前端基于Vue+Element-UI开发,建议使用Chrome浏览器体验。 在线体验 测试用户:test1、test2、test3,口令均为:123456 源码地址 服务端 Web端 来源: oschina 链接: https:

ArrayList源码分析--jdk1.8

拜拜、爱过 提交于 2020-04-28 07:25:58
JDK1.8 ArrayList源码分析--jdk1.8 LinkedList源码分析--jdk1.8 HashMap源码分析--jdk1.8 AQS源码分析--jdk1.8 ReentrantLock源码分析--jdk1.8 ArrayList概述   1. ArrayList是可以动态扩容和动态删除冗余容量的索引序列,基于数组实现的集合。   2. ArrayList支持随机访问、克隆、序列化,元素有序且可以重复。   3. ArrayList初始默认长度10,超出扩容1.5倍,使用Object[]存储各种数据类型。 ArrayList数据结构   数据结构是集合的精华所在,数据结构往往也限制了集合的作用和侧重点,了解各种数据结构是我们分析源码的必经之路。   ArrayList的数据结构如下: ArrayList源码分析 /* * 用数组实现的集合,支持随机访问,元素有序且可以重复 * RandomAccess(ArrayList) 支持快速随机访问,使用for循环更加快速 * LinkedList 使用 iterator迭代器更加 快速 * RandomAccess 这是一个标记接口,一般此标记接口用于 List 实现,以表明它们支持快速(通常是恒定时间)的随机访问。 * 该接口的主要目的是允许通用算法改变其行为,以便在应用于随机或顺序访问列表时提供良好的性能 *

[Angular] Angular Elements Intro

早过忘川 提交于 2020-04-28 06:58:40
Make sure install the latest Angular v6 with Angular CLI. Checkout ght Github for the code. 1. Create a new application: ng new elementApp 2. Install @angular/elements package: ng add @angular/elements --project-name=<your_project_name> 3. Generate a component: ng g c course-title 4. Conver the element to angular elements: First we need to add our component to 'entryComponents' import { BrowserModule } from '@angular/platform-browser' ; import { NgModule, Injector } from '@angular/core' ; import { createCustomElement } from '@angular/elements' ; import { AppComponent } from './app.component' ;

《JavaScript DOM 编程艺术(第2版)》- 综合笔记

梦想与她 提交于 2020-04-28 03:16:52
1.1 JavaScript 的起源 JavaScript 是 Netscape 公司与 Sun 公司合作开发的。 JavaScript 是 ECMAScript 标准的一种实现,但在一般表述中,这两者是指同一种编程语言。 1.2 DOM DOM(Document Object Model,文档对象模型),是一套对文档的内容进行抽象和概念化的方法。 通过 DOM 可以对文档内的某些实际内容进行查询和操控。 1.3 浏览器战争 1.3.1 DHTML DHTML(Dynamic HMTL,动态 HTML),是描述 HTML、CSS 和 JavaScript 技术组合的术语。其背后的含义是: 利用 HTML 把网页标记为各种元素; 利用 CSS 设置元素样式和它们显示的位置; 利用 JavaScript 实时地操控页面和改变样式。 1.3.2 浏览器之间的冲突 Netscape 公司和 Microsoft 公司的浏览器的 DOM 的差异,导致了当时 DHTML 技术的难以实现。 1.4 制定标准 W3C 于 1998 年 10 月完成了“第 1 级 DOM”(DOM Level 1)标准,这种标准化的 DOM 可以让 任何一种 程序设计语言对使用 任何一种 标记语言编写出来的 任何一种 文档进行操控。 1.4.1 浏览器以外的考虑 DOM 是一种 API(Application

Web Scraper 高级用法——抓取二级网面 | 简易数据分析 13

早过忘川 提交于 2020-04-28 03:04:01
这是简易数据分析系列的 第 13 篇 文章。 在前面的课程里,我们抓取的数据都是在同一个层级下的内容,探讨的问题主要是如何应对市面上的各种分页类型,但对于详情页内容数据如何抓取,却一直没有介绍。 比如说我们想抓取 b 站的动画区 TOP 排行榜的数据: https://www.bilibili.com/ranking/all/1/0/3 按之前的抓取逻辑,我们是把这个榜单上和作品有关的数据抓取一遍,比如说下图里的排名、作品名字、播放量、弹幕数和作者名。 经常逛 B 站的小伙伴也知道,UP 主经常暗示观看视频小伙伴三连操作(点赞+投币+收藏),由此可见,这 3 个数据对视频的排名有一定的影响力,所以这些数据对我们来说也有一定的参考价值。 但遗憾的是,在这个排名列表里,并没有相关数据。这几个数据在视频详情页里,需要我们点击链接进去才能看到: 今天的教程内容,就是教你如何利用 Web Scraper,在抓取一级页面(列表页)的同时,抓取二级页面(详情页)的内容。 ##1.创建 SiteMap 首先我们找到要抓取的数据的位置,关键路径我都在下图的红框里标出来了,大家可以对照一下: 然后创建一个相关的 SiteMap,这里我取了个 bilibili_rank 的名字: 2.创建容器的 selector 设置之前我们先观察一下,发现这个网页的排行榜数据是 100 条数据一次性加载完的

JavaScript的一些基础性知识

感情迁移 提交于 2020-04-28 02:33:47
1. JavaScript概述 1.1. JavaScript概述 1.1.1. JavaScript是一门独立的语言 JavaScript是基于对象和事件驱动的脚本语言,主要应用在客户端。 JavaScript是一门独立的语言。 JavaScript是一种脚本语言,不需要编译,是解释运行的语言。 JavaScript运行需要环境,最常见的运行环境就是浏览器,现代主流的浏览器都内置了JS引擎,可以运行JavaScript代码。JS也有服务器端运行环境,我们不做讨论(Node.js、GoogleV8引擎…)。 1.1.2. JS的特点 解释运行,没有编译过程 基于对象 弱类型 1.1.3. JavaScript不得不说的历史 和JAVA的关系:语法十分相似,但其实毫无关系。 1995年5月,Netscape,LiveScript 1995年12月,改名为JavaScript 1996年8月,微软,Jscript 1997-1999年,ECMA,ECMAScript,基于已有的JavaScript和Jscript,提出了标准的Script语法规则,JavaScript和Jscript都遵循这套标准。 1999-以后,ECMAScript不断的更新 JS的优点: 交互性(它可以做的就是信息的动态交互) 安全性(不允许直接访问本地硬盘) 跨平台性(只要是可以解释Js的浏览器都可以执行

Spring之IOC原理及代码详解

我们两清 提交于 2020-04-28 02:28:01
一、什么是IOC   引用 Spring 官方原文:This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) [1] principle. IoC is also known as dependency injection (DI). It is a process whereby objects define their dependencies, that is, the other objects they work with, only through constructor arguments, arguments to a factory method, or properties that are set on the object instance after it is constructed or returned from a factory method. The container then injects those dependencies when it creates the bean. This process is fundamentally the inverse, hence the name Inversion of

python爬虫另辟蹊径绕过企查查的登录验证,我太冇财了

冷暖自知 提交于 2020-04-27 22:05:50
从企查查爬取企业信息,如果没有登录直接检索,邮箱、电话都被隐藏了 点击详情,部分信息同样会被隐藏 毕竟只是打工的,没钱不能任性! 想要查看更完整的企业信息,只有登录了。 但登录需要滑块验证,有时可能还会有图片验证码 但我干不过他们,老大不提供资金支持,那就只能另辟蹊径了。 突然看到右下角有三小只,不禁有点想法了 是不是可以通过授权的形式进行登录呢,那就开始吧 那就拿三小只试试: 首先通过微博登录,将该绑定的绑定,该授权的授权,避免登录后让验证 (微博授权 + 手机号绑定 + 竟然还让关注了公众号) 账号准备完毕,上代码 from selenium import webdriver import time import xlwt import sys import imp imp.reload(sys) # 伪装成浏览器,防止被识破 option = webdriver.ChromeOptions() option.add_argument( '--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"') driver = webdriver.Chrome(chrome

[Selenium+Java] Flash Testing with Selenium

家住魔仙堡 提交于 2020-04-27 21:42:34
Original URL: https://www.guru99.com/flash-testing-selenium.html Flash Testing with Selenium In Selenium Automation, if the elements are not found by the general locators like id, class, name, etc . then XPath is required to find an element on the web page to perform operation on that particular element. But in Flash testing, XPath fails to access flash object. So Flashwebdriver object is required to find flash object in any application. Here you will see how to execute flash Testing and how to do flash testing with Selenium. In this tutorial, you will learn- What is Flash Testing? How Flash

解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果

一曲冷凌霜 提交于 2020-04-27 20:03:34
解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果 一、前言 最初还是在抖音上看到可以使用简单地代码实现炫酷的网页效果的,但是想要找到可以运行的代码还是比较困难的,最近突然想起就在网上汇总了一些这样的代码。 二、3D效果代码 2.1、旋转相册 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>旋转相册</title> <style type="text/css"> body,div,p,ul,ol,li,dl,dt,dd,table,tr,td,form,hr,fieldset,h1,h2,h3,h4,h5,h6,img,input{ margin:0; padding:0; } body{ background: black; } .content{ width: 200px; height: 150px; position: relative; margin:200px auto 0; perspective: 1500px; } .box{ width: 200px; height: 150px; transform-style: preserve-3d; transform:rotateX(-30deg); animation:photo 15s linear