移除链表中的元素
移除链表中的元素移除链表中的元素移除元素的主要操作是将
找到待移除节点的前一个节点node
将 node 的指针域指向其下下个节点,即 待移除节点的下一个节点
注意事项:
有头节点,移除头节点时,需单独分析
删除重复的值时 使用while循环。
1234567891011121314151617181920212223242526272829303132333435/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution { public ListNode removeElements(ListNode h ...
Github OAuth 认证登录
Github OAuth 认证登录1. Introduction在完成项目时,可能会使用到第三方登录的情况,例如:WeChat、QQ,而Github OAuth 也是其中的一种。
Github OAuth 是一种基于授权码的认证模式,由github服务器完成授权码的认证和用户信息的传输。其登录模式大致可列为以下几个步骤
用户点击登录,网站 A 让用户跳转到 GitHub。
GitHub 要求用户登录,然后询问”A 网站要求获得 xx 权限,你是否同意?”
用户同意,GitHub 就会重定向回 A 网站,同时发回一个授权码。
A 网站使用授权码,向 GitHub 请求令牌。
GitHub 返回令牌.
A 网站使用令牌,向 GitHub 请求用户数据。
本文旨在介绍Github OAuth的一种简单用法,无需自己搭建服务器,简单调用API,用于自己的项目之中。
2. 前置准备在正式在项目中使用OAuth API 前,我们需要先创建一个OAuth Application,访问网址 https://github.com/settings/applications/new
在开发环境中,可如 ...
Spring基础知识总结
1.IOC–容器1.1 应用场景 IOC – 用于集中封装、组织、管理对象,该技术用于在开发中,降低代码的耦合度,使更新替换的效率更高。
IOC思想:将开发者主动new 生成对象模式 -> 由IOC工厂统一提供对象的模式
DI:依赖注入,对于IOC工厂中不同的Bean之间绑定依赖关系
1.2 实现方式
通过配置文件的形式实现 Bean的注册
1234567<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> ...
安全即时通讯系统
一、课程设计目的本次课程设计目的是了解大型程序开发设计时所需要的步骤及其基本原则,通过团队分工合作的方式,以实践为过程,认识了软件开发的过程模型和生命周期,并且在程序设计的途中, 充分体会团队合作中沟通交流、合理分工的重要性,学习将分工完成的内容整合形成一个完整的工程。
二、需求分析1、系统功能:我们站在程序使用者的角度,分析出用户所需要的功能,再结合程序设计要求,我们认为该系统需要具备以下功能:通过P2P和C/S混合架构实现即时通讯,通过加解密函数和信息隐写实现安全传输、通过Vue框架实现前端交互界面、通过数据库进行用户管理等等。其中客户端和服务器端的具体功能如下:
客户端:o 注册:与集中服务器通信完成注册,包括用户名、密码、邮箱
o 认证登陆:与集中服务器通信完成用户名、口令认证登陆
o 通信录管理功能,实现对通信录好友的添加、删除
o 即时通讯功能:实现与通信录好友间的信息发送、接收
o 透明加解密功能:采用非对称密码体制协商加密秘钥,用对称密码算法进行加解密,实现端到端的透明加解密
o 信息隐藏功能:实现以图片为载体的透明嵌入提取功能
o 人机交互界面:
服务器端:o 用户注 ...
简单邮件收发系统
实验环境Maven+Java Socket+JavaMail+wireshark
数据结构1、Mail 类 封装一封邮件中所应包含的内容
2、serveSocket 用于接收客户连接请求,参数port指定服务器要绑定的端口(服务器要监听的端口),参数backlog指定客户连接请求队列的长度
3、MailSender类 用于发送邮件,构造器中封装了properties配置变量,sender() 方法,通过session与服务器进行交互建立transport ;createMimeMessage ()方法 用于封装一个邮件信息,使用MimeMessage类进行封装4、Pattern 类是Java中用于编译正则表达式的类
5、Matcher 类是Java中用于执行匹配操作的类
定义参数变量1、Session 用于收集JavaMail运行过程中的环境信息,解析上文提到的properties配置,找到对应配置信息
2、properties 配置邮件发送的主机,服务器,以及相关配置参数
3、用于读写的io:
12345InputStream input = null;InputStreamRead ...
非关系型数据库--NoSQL
1.定义NoSQL(Not only SQL)是对不同于传统的关系数据库的数据库管理系统的统称,即广义地来说可以把所有不是关系型数据库的数据库统称为NoSQL。
NoSQL 数据库专门构建用于特定的数据模型,并且具有灵活的架构来构建现代应用程序。NoSQL 数据库使用各种数据模型来访问和管理数据。这些类型的数据库专门针对需要大数据量、低延迟和灵活数据模型的应用程序进行了优化,这是通过放宽其他数据库的某些数据一致性限制来实现的。
1.1 常见分类键值数据库键值:键值数据库是高度可分区的,并且允许以其他类型的数据库无法实现的规模进行水平扩展。
键值数据库是一种非关系数据库,它使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。键和值都可以是从简单对象到复杂复合对象的任何内容。键值数据库是高度可分区·的,并且允许以其他类型的数据库无法实现的规模进行水平扩展。
内存数据库内存:游戏和广告技术应用程序具有排行榜、会话存储和实时分析等使用案例,它们需要微秒响应时间并且可能随时出现大规模的流量高峰。
文档数据库文档:在应用程序代码中,数据通常表示为对象或 JSON ...