-
2019-12-18 10:09:56
你是否有为快速开发各种报表而烦恼?遇到类似如下的问题:
- 表格少的,可以用代码写,几十上百张表格呢,纯手工需要用多少时间?
- 格式复杂,逻辑复杂的,做起来更是头大
- 需求总变来变去,修改和维护成本太高
- 图形自己做不美观,而且工作量巨大
- 用第三方的相对简单,但集成和学习成本也不小
从各行业合作伙伴的实际使用情况,证明使用下文说的报表做表格和图形,可以极大的提升效率,节省成本,详情请查看文章:https://thinkwon.blog.csdn.net/article/details/125035932
文章干货多多,欢迎一键三连,谢谢😊😊更新于2021-08-13 22:55:12
欢迎关注微信公众号【技术人成长之路】
【技术人成长之路】,助力技术人成长!更多精彩文章第一时间在公众号发布哦!
本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。
整理的Java知识体系主要包括基础知识,工具,并发编程,数据结构与算法,数据库,JVM,架构设计,应用框架,中间件,微服务架构,分布式架构,程序员的一些思考,团队与项目管理,运维,权限,推荐书籍,云计算,区块链等,包含了作为一个Java工程师在开发工作学习中需要用到或者可能用到的绝大部分知识。千里之行始于足下,希望大家根据自己的薄弱点,查缺补漏,根据自己感兴趣的方面多学习,学的精通一点,从现在开始行动起来。路漫漫其修远兮,吾将上下而求索,不管编程开发的路有多么难走,多么艰辛,我们都将百折不挠,不遗余力地去追求和探索。
文章目录
Java面试总结
Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,中间件等,包含了作为一个Java工程师在面试中需要用到或者可能用到的绝大部分知识。欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。文章持续更新中…
基础知识
Java概述
基础语法
大部分已完成
待整理:
Java开发必会的反编译知识(附支持对Lambda进行反编译的工具)
一文读懂什么是Java中的自动拆装箱
Java的枚举类型用法介绍
类、枚举、接口、数组、可变参数
泛型、序列化
面向对象
待整理:
抽象
继承、封装、多态
接口、抽象类、内部类
序号 内容 链接地址 1 什么是面向对象 https://thinkwon.blog.csdn.net/article/details/100667386 集合框架
迭代器、增强for、泛型
序号 内容 链接地址 1 Java集合框架总结 https://thinkwon.blog.csdn.net/article/details/98844796 2 ArrayList(JDK1.8)源码解析 https://thinkwon.blog.csdn.net/article/details/98845119 3 HashMap(JDK1.8)源码解析 https://thinkwon.blog.csdn.net/article/details/98845487 4 LinkedHashMap(JDK1.8)源码解析 https://thinkwon.blog.csdn.net/article/details/102574293 5 LinkedList(JDK1.8)源码解析 https://thinkwon.blog.csdn.net/article/details/102573923 6 TreeMap(JDK1.8)源码解析 https://thinkwon.blog.csdn.net/article/details/102571883 IO流
待整理:
File、递归
字节流、字节缓冲流
编码表、编码方式、转换流、序列化、序列化流、打印流、commons-io
网络编程
网络概述、网络模型
Socket原理机制
UDP
TCP/IP
协议、OSI 七层协议、HTTP、HTTP2.0、HTTPS
网络安全
XSS、CSRF、SQL注入、Hash Dos、脚本注入、漏洞扫描工具、验证码
DDoS防范、用户隐私信息保护、序列化漏洞
加密解密、对称加密、哈希算法、非对称加密
服务安全、数据安全、数据备份
网络隔离、登录跳板机、非外网分离
认证、授权
常用API
String、StringBuffer、StringBuilder、正则表达式
Number、Radom、Math、System、包装类
Arrays、Collections
日期时间API
序号 内容 链接地址 1 Java7日期时间API https://thinkwon.blog.csdn.net/article/details/110777654 2 史上最全Java7日期时间工具类 https://thinkwon.blog.csdn.net/article/details/110779441 3 Java8日期时间API https://thinkwon.blog.csdn.net/article/details/111087199 4 史上最全Java8日期时间工具类 https://thinkwon.blog.csdn.net/article/details/111116600 常用工具类库
待整理:OkHttp、commons-lang3
序号 内容 链接地址 1 HttpClient工具类 https://thinkwon.blog.csdn.net/article/details/101391489 2 WGS84地球坐标系,GCJ02火星坐标系,BD09百度坐标系简介与转换 https://thinkwon.blog.csdn.net/article/details/101392187 3 Lombok简介、使用、工作原理、优缺点 https://thinkwon.blog.csdn.net/article/details/101392808 4 Java几种常用JSON库性能比较 https://thinkwon.blog.csdn.net/article/details/94354358 单元测试
JUnit
异常
日志
序号 内容 链接地址 1 常用日志框架Log4j,Logback,Log4j2性能比较与日志门面SLF4J简介 https://thinkwon.blog.csdn.net/article/details/101621135 2 日志作用 https://thinkwon.blog.csdn.net/article/details/101619725 3 Apache Log4j2详解 https://thinkwon.blog.csdn.net/article/details/95043111 4 Log4j2同步日志,混合日志和异步日志配置详解 https://thinkwon.blog.csdn.net/article/details/101625124 5 Log4j2配置文件详解 https://thinkwon.blog.csdn.net/article/details/101629302 6 Log4j2的Appenders配置详解 https://thinkwon.blog.csdn.net/article/details/101625820 7 Log4j2的Filters配置详解 https://thinkwon.blog.csdn.net/article/details/101627162 8 Log4j2的Policy触发策略与Strategy滚动策略配置详解 https://thinkwon.blog.csdn.net/article/details/101628222 9 Log4j2的Loggers配置详解 https://thinkwon.blog.csdn.net/article/details/101628736 Java8新特性
序号 内容 链接地址 1 Java8新特性-Lambda表达式 https://thinkwon.blog.csdn.net/article/details/113764085 2 Java8新特性-Optional https://thinkwon.blog.csdn.net/article/details/113791796 3 Java8新特性-Stream https://thinkwon.blog.csdn.net/article/details/113798096 4 Java8新特性-Base64 https://thinkwon.blog.csdn.net/article/details/113798575 5 Java8新特性-日期时间API https://thinkwon.blog.csdn.net/article/details/111087199 工具
IDEA
序号 内容 链接地址 1 IDEA常用配置和常用插件 https://thinkwon.blog.csdn.net/article/details/101020481 2 IDEA中Maven依赖下载失败解决方案 https://thinkwon.blog.csdn.net/article/details/101312918 3 在IDEA中使用Linux命令 https://thinkwon.blog.csdn.net/article/details/106320360 Eclipse & STS
序号 内容 链接地址 1 Eclipse & Spring Tool Suite常用配置 https://thinkwon.blog.csdn.net/article/details/101025543 Maven
序号 内容 链接地址 1 Maven简介 https://thinkwon.blog.csdn.net/article/details/94346090 2 Maven安装与配置 https://thinkwon.blog.csdn.net/article/details/94346569 3 Maven依赖冲突 https://thinkwon.blog.csdn.net/article/details/101483020 4 手动安装Maven依赖 https://thinkwon.blog.csdn.net/article/details/101483478 5 Maven部署jar包到远程仓库 https://thinkwon.blog.csdn.net/article/details/101483769 6 Maven私服Nexus安装与使用 https://thinkwon.blog.csdn.net/article/details/94346681 Docker
序号 内容 链接地址 1 使用Docker安装GitLab https://thinkwon.blog.csdn.net/article/details/95042797 2 虚拟机和容器有什么不同 https://thinkwon.blog.csdn.net/article/details/107476886 3 Docker 从入门到实践系列一 - 什么是Docker https://thinkwon.blog.csdn.net/article/details/107477065 4 Docker 从入门到实践系列二 - Docker 安装 https://thinkwon.blog.csdn.net/article/details/117638107 5 Docker 从入门到实践系列三 - Docker 常用命令 https://thinkwon.blog.csdn.net/article/details/117638128 6 Docker 从入门到实践系列四 - Docker 容器编排利器 Docker Compose https://thinkwon.blog.csdn.net/article/details/119511551 Git
GitLab
GitKraken
Navicat
并发编程
基础知识
并发理论
序号 内容 链接地址 1 Java内存模型 https://thinkwon.blog.csdn.net/article/details/102073578 2 重排序与数据依赖性 https://thinkwon.blog.csdn.net/article/details/102073858 3 as-if-serial规则和happens-before规则的区别 https://thinkwon.blog.csdn.net/article/details/102074107 4 Java并发理论总结 https://thinkwon.blog.csdn.net/article/details/102074440 并发关键字
序号 内容 链接地址 1 Java并发关键字-synchronized https://thinkwon.blog.csdn.net/article/details/102243189 2 Java并发关键字-volatile https://thinkwon.blog.csdn.net/article/details/102243670 3 Java并发关键字-final https://thinkwon.blog.csdn.net/article/details/102244477 Lock体系
待整理:
公平锁 & 非公平锁
乐观锁 & 悲观锁
可重入锁 & 不可重入锁
互斥锁 & 共享锁
死锁
序号 内容 链接地址 1 Lock简介与初识AQS https://thinkwon.blog.csdn.net/article/details/102468837 2 AQS(AbstractQueuedSynchronizer)详解与源码分析 https://thinkwon.blog.csdn.net/article/details/102469112 3 ReentrantLock(重入锁)实现原理与公平锁非公平锁区别 https://thinkwon.blog.csdn.net/article/details/102469388 4 读写锁ReentrantReadWriteLock源码分析 https://thinkwon.blog.csdn.net/article/details/102469598 5 Condition源码分析与等待通知机制 https://thinkwon.blog.csdn.net/article/details/102469889 6 LockSupport详解 https://thinkwon.blog.csdn.net/article/details/102469993 并发容器
序号 内容 链接地址 1 并发容器之ConcurrentHashMap详解(JDK1.8版本)与源码分析 https://thinkwon.blog.csdn.net/article/details/102506447 2 并发容器之ConcurrentLinkedQueue详解与源码分析 https://thinkwon.blog.csdn.net/article/details/102508089 3 并发容器之CopyOnWriteArrayList详解 https://thinkwon.blog.csdn.net/article/details/102508258 4 并发容器之ThreadLocal详解 https://thinkwon.blog.csdn.net/article/details/102508381 5 ThreadLocal内存泄漏分析与解决方案 https://thinkwon.blog.csdn.net/article/details/102508721 6 并发容器之BlockingQueue详解 https://thinkwon.blog.csdn.net/article/details/102508901 7 并发容器之ArrayBlockingQueue与LinkedBlockingQueue详解 https://thinkwon.blog.csdn.net/article/details/102508971 线程池
序号 内容 链接地址 1 线程池ThreadPoolExecutor详解 https://thinkwon.blog.csdn.net/article/details/102541900 2 Executors类创建四种常见线程池 https://thinkwon.blog.csdn.net/article/details/102541990 3 线程池之ScheduledThreadPoolExecutor详解 https://thinkwon.blog.csdn.net/article/details/102542299 4 FutureTask详解 https://thinkwon.blog.csdn.net/article/details/102542404 原子操作类
序号 内容 链接地址 1 原子操作类总结 https://thinkwon.blog.csdn.net/article/details/102556910 并发工具
序号 内容 链接地址 1 并发工具之CountDownLatch与CyclicBarrier https://thinkwon.blog.csdn.net/article/details/102556958 2 并发工具之Semaphore与Exchanger https://thinkwon.blog.csdn.net/article/details/102557034 并发实践
序号 内容 链接地址 1 实现生产者消费者的三种方式 https://thinkwon.blog.csdn.net/article/details/102557126 数据结构与算法
数据结构
序号 内容 链接地址 1 红黑树详细分析(图文详解),看了都说好 https://thinkwon.blog.csdn.net/article/details/102571535 1、数组 2、栈 3、队列 4、链表 5、树 二叉树 完全二叉树 平衡二叉树 二叉查找树(BST) 红黑树 B,B+,B*树 LSM 树 字段是不是数据结构
算法
语言只是编程工具,算法才是编程之魂!
1、排序算法:快速排序、归并排序、计数排序 2、搜索算法:回溯、递归、剪枝 3、图论:最短路径、最小生成树、网络流建模 4、动态规划:背包问题、最长子序列、计数问题 5、基础技巧:分治、倍增、二分法、贪心算法 宽度优先搜索 深度优先搜索 广度优先 双指针 扫描线 朴素贝叶斯 推荐算法
排序算法
序号 内容 链接地址 1 史上最全经典排序算法总结(Java实现) https://thinkwon.blog.csdn.net/article/details/95616819 2 冒泡排序(Bubble Sort) https://thinkwon.blog.csdn.net/article/details/101534473 3 选择排序(Selection Sort) https://thinkwon.blog.csdn.net/article/details/101534721 4 插入排序(Insertion Sort) https://thinkwon.blog.csdn.net/article/details/101537804 5 希尔排序(Shell Sort) https://thinkwon.blog.csdn.net/article/details/101538166 6 归并排序(Merge Sort) https://thinkwon.blog.csdn.net/article/details/101538756 7 快速排序(Quick Sort) https://thinkwon.blog.csdn.net/article/details/101543580 8 堆排序(Heap Sort) https://thinkwon.blog.csdn.net/article/details/101543941 9 计数排序(Counting Sort) https://thinkwon.blog.csdn.net/article/details/101544159 10 桶排序(Bucket Sort) https://thinkwon.blog.csdn.net/article/details/101544356 11 基数排序(Radix Sort) https://thinkwon.blog.csdn.net/article/details/101545529 LeetCode
序号 内容 链接地址 1 LeetCode第1题 两数之和(Two Sum) https://thinkwon.blog.csdn.net/article/details/103113049 2 LeetCode第3题 无重复字符的最长子串(Longest Substring Without Repeating Characters) https://thinkwon.blog.csdn.net/article/details/103113969 3 LeetCode第7题 整数反转(Reverse Integer) https://thinkwon.blog.csdn.net/article/details/103113167 4 LeetCode第9题 回文数(Palindrome Number) https://thinkwon.blog.csdn.net/article/details/103113151 5 LeetCode第13题 罗马数字转整数(Roman to Integer) https://thinkwon.blog.csdn.net/article/details/103113519 6 LeetCode第14题 最长公共前缀(Longest Common Prefix) https://thinkwon.blog.csdn.net/article/details/103113700 7 LeetCode第20题 有效的括号(Valid Parentheses) https://thinkwon.blog.csdn.net/article/details/103113848 8 LeetCode第26题 删除排序数组中的重复项(Remove Duplicates from Sorted Array) https://thinkwon.blog.csdn.net/article/details/103113097 数据库
Oracle
MySQL
数据库基础知识
序号 内容 链接地址 1 MySQL语句分类 https://thinkwon.blog.csdn.net/article/details/106610851 2 MySQL插入语句insert into,insert ignore into,insert into … on duplicate key update,replace into-解决唯一键约束 https://thinkwon.blog.csdn.net/article/details/106610789 3 MySQL复制表的三种方式 https://thinkwon.blog.csdn.net/article/details/106610810 4 MySQL删除表的三种方式 https://thinkwon.blog.csdn.net/article/details/106610831 5 MySQL中count(字段) ,count(主键 id) ,count(1)和count(*)的区别 https://thinkwon.blog.csdn.net/article/details/106610859 数据类型
引擎
索引
三大范式
常用SQL语句
存储过程与函数
视图
MySQL优化
事务
数据备份与还原
Redis
序号 内容 链接地址 1 Redis总结 https://thinkwon.blog.csdn.net/article/details/99999584 2 Redis使用场景 https://thinkwon.blog.csdn.net/article/details/101521497 3 Redis数据类型 https://thinkwon.blog.csdn.net/article/details/101521724 4 Redis持久化 https://thinkwon.blog.csdn.net/article/details/101522209 5 Redis过期键的删除策略 https://thinkwon.blog.csdn.net/article/details/101522970 6 Redis数据淘汰策略 https://thinkwon.blog.csdn.net/article/details/101530624 7 Redis与Memcached的区别 https://thinkwon.blog.csdn.net/article/details/101530406 8 Redis常见面试题(精简版) https://thinkwon.blog.csdn.net/article/details/103522351 9 Redis中缓存雪崩、缓存穿透等问题的解决方案 https://thinkwon.blog.csdn.net/article/details/103402008 10 阿里云Redis开发规范学习总结 https://thinkwon.blog.csdn.net/article/details/103400250 11 Redis开发常用规范 https://thinkwon.blog.csdn.net/article/details/103401781 12 这可能是最中肯的Redis规范了 https://thinkwon.blog.csdn.net/article/details/103401978 Java虚拟机
深入理解Java虚拟机
序号 内容 链接地址 1 深入理解Java虚拟机-走近Java https://thinkwon.blog.csdn.net/article/details/103804387 2 深入理解Java虚拟机-Java内存区域与内存溢出异常 https://thinkwon.blog.csdn.net/article/details/103827387 3 深入理解Java虚拟机-垃圾回收器与内存分配策略 https://thinkwon.blog.csdn.net/article/details/103831676 4 深入理解Java虚拟机-虚拟机执行子系统 https://thinkwon.blog.csdn.net/article/details/103835168 5 深入理解Java虚拟机-程序编译与代码优化 https://thinkwon.blog.csdn.net/article/details/103835883 6 深入理解Java虚拟机-高效并发 https://thinkwon.blog.csdn.net/article/details/103836167 架构设计
高可用架构
高并发架构
可伸缩架构
集群
设计模式
常用设计模式
创建型:
单例模式、工厂模式、抽象工厂模式结构型:
适配器模式、外观模式、代理模式、装饰器模式行为型:
观察者模式、策略模式、模板模式序号 内容 链接地址 1 设计模式 https://thinkwon.blog.csdn.net/article/details/96829572 创建型模式
结构型模式
行为型模式
J2EE模式
实践应用
序号 内容 链接地址 1 业务复杂=if else?刚来的大神竟然用策略+工厂彻底干掉了他们! https://thinkwon.blog.csdn.net/article/details/102924813 应用框架
如何学习一个框架或者技术
-
是什么,简介,概述
-
有什么用,用途,使用场景
-
怎么用,在实际开发中的应用,注意事项
-
优缺点
-
框架原理,工作流程,工作原理
-
常见面试题
-
源码分析,核心类,核心方法,设计模式
-
发布博客,在开发和实践中,博客反馈中持续改进
-
与同事朋友交流,技术论坛,技术分享中持续丰富知识
常用框架
-
集成开发工具(IDE):Eclipse、MyEclipse、Spring Tool Suite(STS)、Intellij IDEA、NetBeans、JBuilder、JCreator
-
JAVA服务器:tomcat、jboss、websphere、weblogic、resin、jetty、apusic、apache
-
负载均衡:nginx、lvs
-
web层框架:Spring MVC、Struts2、Struts1、Google Web Toolkit(GWT)、JQWEB
-
服务层框架:Spring、EJB
-
持久层框架:Hibernate、MyBatis、JPA、TopLink
-
数据库:Oracle、MySql、MSSQL、Redis
-
项目构建:maven、ant
-
持续集成:Jenkins
-
版本控制:SVN、CVS、VSS、GIT
-
私服:Nexus
-
消息组件:IBM MQ、RabbitMQ、ActiveMQ、RocketMq
-
日志框架:Commons Logging、log4j 、slf4j、IOC
-
缓存框架:memcache、redis、ehcache、jboss cache
-
RPC框架:Hessian、Dubbo
-
规则引擎:Drools
-
工作流:Activiti
-
批处理:Spring Batch
-
通用查询框架:Query DSL
-
JAVA安全框架:shiro、Spring Security
-
代码静态检查工具:FindBugs、PMD
-
Linux操作系统:CentOS、Ubuntu、SUSE Linux、
-
常用工具:PLSQL Developer(Oracle)、Navicat(MySql)、FileZilla(FTP)、Xshell(SSH)、putty(SSH)、SecureCRT(SSH)、jd-gui(反编译)
Spring
序号 内容 链接地址 1 Spring简介、设计理念、优缺点、应用场景 https://thinkwon.blog.csdn.net/article/details/102810748 2 Spring模块组成(框架组成、整体架构、体系架构、体系结构) https://thinkwon.blog.csdn.net/article/details/102810819 3 Spring容器中bean的生命周期 https://thinkwon.blog.csdn.net/article/details/102866432 4 控制反转(IoC)与依赖注入(DI)详解 https://thinkwon.blog.csdn.net/article/details/102912332 《Spring实战》读书笔记
序号 内容 链接地址 1 《Spring实战》读书笔记-第1章 Spring之旅 https://thinkwon.blog.csdn.net/article/details/103097364 2 《Spring实战》读书笔记-第2章 装配Bean https://thinkwon.blog.csdn.net/article/details/103527675 3 《Spring实战》读书笔记-第3章 高级装配 https://thinkwon.blog.csdn.net/article/details/103536621 4 《Spring实战》读书笔记-第4章 面向切面的Spring https://thinkwon.blog.csdn.net/article/details/103541166 5 《Spring实战》读书笔记-第5章 构建Spring Web应用程序 https://thinkwon.blog.csdn.net/article/details/103550083 6 《Spring实战》读书笔记-第6章 渲染Web视图 https://thinkwon.blog.csdn.net/article/details/103559672 7 《Spring实战》读书笔记-第7章 Spring MVC的高级技术 https://thinkwon.blog.csdn.net/article/details/103562467 Spring MVC
MyBatis
MyBatis 源码分析
序号 内容 链接地址 1 MyBatis 源码分析 - MyBatis入门 https://thinkwon.blog.csdn.net/article/details/114808852 2 MyBatis 源码分析 - 配置文件解析过程 https://thinkwon.blog.csdn.net/article/details/114808962 3 MyBatis 源码分析 - 映射文件解析过程 https://thinkwon.blog.csdn.net/article/details/115423167 4 MyBatis 源码分析 - SQL 的执行过程 https://thinkwon.blog.csdn.net/article/details/115603376 5 MyBatis 源码分析 - 内置数据源 https://thinkwon.blog.csdn.net/article/details/116331419 6 MyBatis 源码分析 - 缓存原理 https://thinkwon.blog.csdn.net/article/details/116809942 7 MyBatis 源码分析 - 插件机制 https://thinkwon.blog.csdn.net/article/details/116809961 Quartz
序号 内容 链接地址 1 Quartz简介 https://thinkwon.blog.csdn.net/article/details/109936696 Hibernate
Shiro
Spring Security
Netty
搜索引擎
Lucene/Solr
Elasticsearch
ELK
中间件
消息中间件
RabbitMQ
RocketMQ
ActiveMQ
Kafka
远程过程调用中间件
Dubbo
数据访问中间件
Sharding JDBC
MyCat
Web应用服务器
Tomcat
待整理:Tomcat各组件作用 Tomcat集群 Tomcat面试题
序号 内容 链接地址 1 Win10安装Tomcat服务器与配置环境变量 https://thinkwon.blog.csdn.net/article/details/102622905 2 Linux(CentOS7)安装Tomcat与设置Tomcat为开机启动项 https://thinkwon.blog.csdn.net/article/details/102717537 3 Tomcat与JDK版本对应关系,Tomcat各版本特性 https://thinkwon.blog.csdn.net/article/details/102622738 4 Tomcat目录结构 https://thinkwon.blog.csdn.net/article/details/102619466 5 Tomcat乱码与端口占用的解决方案 https://thinkwon.blog.csdn.net/article/details/102622824 6 Tomcat系统架构与请求处理流程 https://thinkwon.blog.csdn.net/article/details/102676442 7 史上最强Tomcat8性能优化 https://thinkwon.blog.csdn.net/article/details/102744033 Nginx
缓存
本地缓存
客户端缓存
服务端缓存
web缓存,Redis,Memcached,Ehcache
其他
Zookeeper
微服务与分布式
Spring Boot
序号 内容 链接地址 1 application.yml与bootstrap.yml的区别 https://thinkwon.blog.csdn.net/article/details/100007093 2 一分钟了解约定优于配置 https://thinkwon.blog.csdn.net/article/details/101703815 Spring Cloud
服务注册发现
服务配置
负载均衡
服务调用
服务限流
熔断降级
网关路由
服务权限
链路追踪
分布式事务
分布式缓存
分布式会话
日志收集
服务监控
消息驱动
数据处理流
自动化测试与部署
第三方支持
分布式协调服务Zookeeper
程序员的一些思考
序号 内容 链接地址 1 程序员写个人技术博客的价值与意义 https://thinkwon.blog.csdn.net/article/details/102980571 2 Java知识体系最强总结(2020版) https://thinkwon.blog.csdn.net/article/details/103592572 3 博客之星,有你的鼓励更精彩 https://thinkwon.blog.csdn.net/article/details/112517796 团队与项目管理
需求调研
项目管理
序号 内容 链接地址 1 Worktile、Teambition与Tower项目管理软件对比 https://thinkwon.blog.csdn.net/article/details/106064807 代码管理
文档管理
序号 内容 链接地址 1 几款常见接口管理平台对比 https://thinkwon.blog.csdn.net/article/details/106064883 2 Swagger2常用注解说明 https://thinkwon.blog.csdn.net/article/details/107477801 测试
Python
序号 内容 链接地址 1 Win10安装Python3.9 https://thinkwon.blog.csdn.net/article/details/112411897 2 Anaconda安装 https://thinkwon.blog.csdn.net/article/details/112412165 3 PyCharm2020.3.2安装 https://thinkwon.blog.csdn.net/article/details/112412497 4 PyCharm常用配置和常用插件 https://thinkwon.blog.csdn.net/article/details/112412783 运维
常规监控
APM
持续集成(CI/CD):Jenkins,环境分离
自动化运维:Ansible,puppet,chef
测试:TDD 理论,单元测试,压力测试,全链路压测,A/B 、灰度、蓝绿测试
虚拟化:KVM,Xen,OpenVZ
容器技术:Docker
云技术:OpenStack
DevOps
操作系统
计算机操作系统
计算机原理
Linux
CPU
进程,线程,协程
CentOS8
序号 内容 链接地址 1 VMware Workstation Pro 16搭建CentOS8虚拟机集群 https://thinkwon.blog.csdn.net/article/details/115058171 2 CentOS8安装Docker https://thinkwon.blog.csdn.net/article/details/115056214 3 CentOS8搭建Nacos1.4.0集群 https://thinkwon.blog.csdn.net/article/details/115056401 4 CentOS8安装GitLab13.7.2 https://thinkwon.blog.csdn.net/article/details/115056528 5 CentOS8安装MySQL8 https://thinkwon.blog.csdn.net/article/details/115055934 推荐书籍
序号 内容 链接地址 1 读书清单-计算机 https://thinkwon.blog.csdn.net/article/details/108077754 读书笔记
序号 内容 链接地址 1 高效休息法-读书笔记 https://thinkwon.blog.csdn.net/article/details/118638191 2 斯坦福高效睡眠法-读书笔记 https://thinkwon.blog.csdn.net/article/details/108349844 3 高效能人士的七个习惯-读书笔记 https://thinkwon.blog.csdn.net/article/details/108941111 4 富爸爸穷爸爸-读书笔记 https://thinkwon.blog.csdn.net/article/details/109261723 5 如何阅读一本书-读书笔记 https://thinkwon.blog.csdn.net/article/details/115422659 6 人性的弱点-读书笔记 https://thinkwon.blog.csdn.net/article/details/116809824 7 麦肯锡极简工作法-读书笔记 https://thinkwon.blog.csdn.net/article/details/118638191 云计算
IaaS、SaaS、PaaS、虚拟化技术、openstack、Serverlsess
搜索引擎
Solr、Lucene、Nutch、Elasticsearch
权限管理
Shiro、Spring Security
区块链
哈希算法、Merkle树、公钥密码算法、共识算法、Raft协议、Paxos 算法与 Raft 算法、拜占庭问题与算法、消息认证码与数字签名
更多相关内容 -
Java2核心技术第7版全两卷.pdf中文高清
2012-09-14 14:22:28本书是java 2技术权威指南,全面覆盖java 2技术的高级主题,包括:多线程、集合框架、网络api、数据库编程、分布式对象等,深入探究了swing、java 2d api、javabean、java安全模式、xml、注释、元数据等主题,同时... -
GPS定位数据的提取与存储系统的设计
2021-03-04 07:37:40鲍萍萍,陈光,王朋,王鹏辉(东华大学 信息科学与...运用GPS定位技术、多线程串口通信处理技术和数据库存储访问技术,应用Java语言编写,在Eclipse开发工具上设计并实现了一套GPS定位数据的实时提取与存储系统。测...鲍萍萍,陈光,王朋,王鹏辉
(东华大学 信息科学与技术学院 上海 201620)
摘要:针对传统的在VC++平台上实现的GPS定位数据的提取与存储系统已经不能满足系统的实时性和可靠性等需求,以及软件方面存在扩展性、兼容性、移植性差等问题,运用GPS定位技术、多线程串口通信处理技术和数据库存储访问技术,应用Java语言编写,在Eclipse开发工具上设计并实现了一套GPS定位数据的实时提取与存储系统。测试结果表明,该系统运行稳定,实验数据有效可靠,达到了预期的目标。
关键词:GPS;多线程;串口通信;数据存储;Java
0引言
随着卫星导航定位技术的发展,全球卫星定位系统(Global Position System,GPS)成为目前最为常用的一种导航定位系统,其全方位、全天候、全时段、高精度等特点使得GPS的应用遥遥领先。其原理是用户通过GPS接收机接收卫星信号,结合地理信息系统对信号进行处理,从而获得用户所需的经纬度、速度等信息,最终实现导航和定位 [1]。而GPS接收机中的数据提取与存储是GPS定位中的重要组成部分。
目前,GPS定位数据处理系统大多数在VC++平台上实现,其扩展性、移植性、兼容性差。为改善其性能,2003年王缓缓等人[2]对GPS定位数据进行提取,增强了系统的扩展性和兼容性,但仍然存在数据不能实时接收、同步处理及存储等问题。2006年李新源等人基于Java语言的GPS接收机的串口通信程序设计[3],整个系统结构虽然较为清晰,但其只是实现了GPS数据的提取,对数据的存储并未研究。
为改善已有GPS定位数据的提取与存储功能,有效提高数据的可靠性和实时性等要求,本文基于Java的跨平台性、开放性与面向对象等特点[3],运用GPS定位技术、多线程串口通信编程技术和数据库存储技术,设计了一套GPS定位数据的提取与存储系统。该系统能实时地接收、处理和存储GPS数据。
1系统组成
GPS定位数据的提取与存储系统主要包括GPS串口通信和GPS数据存储两部分,其结构图如图1所示。图1系统架构图其中,GPS串口通信部分主要实现多线程编程、串口的打开、串口数据的接收、提取处理与串口的关闭等操作;GPS数据存储部分实现将提取处理后的数据保存在MySQL数据库中 [24]。
2GPS串口通信
传统的用Java实现串口通信通常采用串口API,它以独立jar包的方式提供一个标准扩展[5]。此系统中,采用串口和并口通信的开源Java类库RXTX,其提供了多操作系统下的兼容javax.comm串口通信包API的实现。在Windows操作系统下,包含3个文件:RXTXcomm.jar、rxtxParallel.dll和rxtxSerial.dll,其提图2串口通信流程图供了通信用的Java API及相应的驱动类接口。系统在串口通信前,必须对串口驱动程序装载。其串口操作流程图如图2所示[6]。
2.1多线程技术
对串口进行操作的过程中,为提高CPU的使用效率,系统采用了多线程处理技术,很好地满足了多任务和实时性的需求[78]。
Java有两种实现多线程的方式:一是创建一个类继承Thread类,并重写run()方法;二是实现Runnable接口。本文采用继承Thread类的方式实现多线程,主要涉及串口数据接收线程、数据提取处理线程、数据存储线程,系统的关键是处理好线程之间的同步、安全和死锁[78]。
2.2多线程串口通信
(1)串口数据接收
在对GPS串口数据接收之前,必须明确GPS接收机的数据接收格式[24]。GPS接收机遵守NEMA0183标准协议,该协议内容包含GPS定位的经纬度、速度、日期时间、地面航向、卫星状况、磁偏角等信息。本系统中,使用NEMA0183协议中的“MYMGPRMC”帧格式进行数据的提取处理。
在进行数据接收前,首先打开串口并进行参数设置。然后,调用数据接收线程中的类实例方法对串口数据进行接收。为保证数据的可靠性和实时性,系统中设置了串口事件监听器。其部分关键代码如下,数据接收结果图如图3所示。
(2)串口数据提取处理
在成功接收GPS数据串后,要对其解析,转化成相应的格式。其思路如下:首先,判断数据串中是否含有“MYMGPRMC”数据,若存在,则截取MYMGPRMC包含的70 B数据;其次,对MYMGPRMC包含的GPS定位信息进行提取;最后,对数据作进一步的处理运算并保存在GpsData对象中,提高了代码的健壮性。为了简化问题,本文只提取出日期时间、经纬度、状态、速度信息[9]。其部分关键代码如下所示[2],数据提取处理图如图4、图5所示。
3数据库存储
对GPS定位数据进行提取处理后,需要将数据保存在数据库中,方便后期的使用。本设计将GPS定位数据存储部分作为后台数据库,不仅作为定位数据的容器,同时还可以随时随地地访问数据库与进行增、删、改、查等操作[4]。
在本系统中,将灵活可靠的MySQL作为后台数据库,应用JDBC技术连接数据库。下面从数据库的配置设计、存储和互联来实现高效可靠的数据存储。
3.1数据库的配置与数据表的设计
对MySQL数据库操作前,需要对其配置。配置信息封装在dbconfig.properties配置文件中,如图6所示。
本系统采用JDBC方式连接数据库,在MySQL中,需要新建一个数据库命名为mydb1,并添加一张数据表gpsdata用于存储GPS定位数据。数据表的列分别命名为日期时间datetime、定位状态status、纬度latitude、经度longitude、速度speed,并设置相应的列属性,允许为NULL。
3.2数据的存储与互联
数据的存储与互联技术是存储系统设计的核心。本设计中定义了两个核心类:JdbcUtils工具类和JdbcUtilsImpl类。其中,JdbcUtils类主要用于实现加载配置文件、加载驱动类与获取连接操作;JdbcUtilsImpl类主要用于向数据库中存储GPS数据、数据表的更新、释放等。其部分关键代码如下所示,图7为数据存入情况。
InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("dbconfig.properties");
props = new Properties();
props.load(in);
Class.forName(props.getProperty("driverClassName"));
DriverManager.getConnection(props.getProperty("url"),props.getProperty("username"),props.getProperty("password"));
String sql = "INSERT INTO gpsdata VALUES(?,?,?,?,?)";
pstmt=con.prepareStatement(sql);pstmt.setString(1, gpsdata.getDatetime());
......
pstmt.setDouble(4, gpsdata.getSpeed());
pstmt.executeUpdate();
4结论
本系统在Eclipse开发环境下,结合MySQL数据库技术,对GPS定位数据进行接收和提取处理,并将其存入数据库中,以供开发者后期使用。其中,系统中利用了Java中的多线程技术,将数据接收与提取处理高效地分离,有效地提高了数据的处理能力。同时,系统中加入了数据存储部分,为数据的有效性和可靠性提供了保障,更加体现了系统的整体性能。
参考文献
[1] 张帅帅, 崔红霞. GPS数据的采集提取和显示[J]. 科技创新导报, 2013(25):2223.
[2] 王缓缓, 李虎. 用Java实现GPS全球定位系统定位数据的提取[J]. 计算机与现代化, 2004(11):8991.
[3] 李新源, 赵树法, 魏宗寿,等. 基于Java语言的GPS接收机的串口通信程序设计[J]. 铁路计算机应用, 2007, 16(5):46.
[4] 徐涴砯, 陈光, 高孟茹. GPS船舶试航数据提取与存储系统的开发[J]. 微型机与应用, 2013,32(23):8689.
[5] 丁振凡, 王小明, 邓建明,等. 基于Java的串口通信应用编程[J]. 微型机与应用, 2012, 31(13):8486.
[6] 牛立, 王景中. GPS导航数据提取的设计与研究[J]. 微型机与应用, 2010, 29(20):13.
[7] 李良, 朱善安. 基于Java的串口通信[J]. 电子器件, 2007, 30(2):714716,720.
[8] 吴金锋, 刘伟平, 黄红斌. Java串口通信数据采控系统的设计与实现[J]. 微计算机信息, 2010, 26(10):6566.
[9] 袁林, 曹杰. 利用VC++实现GPS全球定位系统定位数据的提取[J]. 现代电子技术, 2004, 27(24):105107.
-
JAVA上百实例源码以及开源项目源代码
2018-12-11 17:07:42FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上... -
分布式数据存储系统:三要素
2021-12-26 13:28:33分布式数据存储系统:三要素前言什么是分布式数据存储系统?分布式数据存储系统三要素顾客:生产和消费数据导购:确定数据位置货架:存储数据知识扩展:业界主流的分布式数据存储系统有哪些?总结 前言 CAP 理论...
前言
CAP 理论指出,在分布式系统中,不能同时满足一致性、可用性和分区容错性,指导了分布式数据存储系统的设计。
随着数据量和访问量的增加,单机性能已经不能满足用户需求,分布式集群存储成为一种常用方式。把数据分布在多台存储节点上,可以为大规模应用提供大容量、高性能、高可用、 高扩展的存储服务。而分布式存储系统就是其具体实现。
分布式存储系统的关键三要素:顾客、导购与货架。
什么是分布式数据存储系统?
分布式存储系统的核心逻辑:将用户需要存储的数据根据某种规则存储到不同的机器上,当用户想要获取指定数据时,再按照规则到存储数据的机器里获取。
如下图所示,当用户(即应用程序)想要访问数据 D,分布式操作引擎通过一些映射方式,比如 Hash、一致性 Hash、数据范围分类等,将用户引导至数据 D 所属的存储节点获取数据。
获取数据的整个过程与商店购物的过程类似,顾客到商店购物时,导购会根据顾客想要购买的商品引导顾客到相应的货架,然后顾客从这 个货架上获取要购买的商品,完成购物。这里的顾客就是图中的应用程序,导购就相当于分布式操作引擎,它会按照一定的规则找到相应的货架,货架就是存储数据的不同机器节点。
这个过程就是分布式存储系统中获取数据的通用流程,顾客、导购和货架组成了分布式存储系统的三要素,分别对应着分布式领域中的数据生产者 / 消费者、数据索引和数据存储。
分布式数据存储系统三要素
顾客就是数据的生产者和消费者,顾客代表两类角色,生产者会生产数据(比如, 商店购物例子中的供货商就属于生产类顾客),将数据存储到分布式数据存储系统中,消费者是从分布式数据存储系统中获取数据进行消费(比如,商店购物例子中购买商品的用户就属于消费类顾客);导购就是数据索引,将访问数据的请求转发到数据所在的存储节点;货架就是存储设备,用于存储数据。
顾客:生产和消费数据
顾客相当于分布式存储系统中的应用程序,而数据是应用程序的原动力。根据数据的产生和使用,顾客分为生产者和消费者两种类型。生产者负责给存储系统添加数据,而消费者则可以使用系统中存储的数据。
就像是火车票存储系统,铁路局就相当于生产者类型的顾客,而乘客就相当于消费者类型的顾客。铁路局将各个线路的火车票信息发布到订票网站的后台数据库中,乘客通过订票网站访问数据库,来进行查询余票、订票、退票等操作。
生产者和消费者生产和消费的数据通常是多种多样的,不同应用场景中数据的类型、格式等都不一样。根据数据的特征,这些不同的数据通常被划分为三类:结构化数据、半结构化数据和非结构化数据:
- 结构化数据:指关系模型数据,其特征是数据关联较大、格式固定。火车票信息比如起点站、终点站、车次、票价等,就是一种结构化数据。结构化数据具有格式固定的特征,因此一般采用分布式关系数据库进行存储和查询。
- 半结构化数据:指非关系模型的,有基本固定结构模式的数据,其特征是数据之间关系比较简单。比如 HTML 文档,使用标签书写内容。半结构化数据大多可以采用键值对形式来表示,比如 HTML 文档可以将标签设置为 key,标签对应的内容可以设置为 value,因此一般采用分布式键值系统进行存储和使用。
- 非结构化数据:指没有固定模式的数据,其特征是数据之间关联不大。比如文本数据就是一种非结构化数据。这种数据可以存储到文档中,通过 ElasticSearch(一个分布式全文搜索引擎)等进行检索。
导购:确定数据位置
导购是分布式存储系统必不可少的要素,如果没有导购, 顾客就需要逐个货架去寻找自己想要的商品。如果去订票网站订火车票,按照自己的需求点击查询车票后,系统会逐个扫描分布式存储系统中每台机器的数据,寻找你想要购买的火车票。如果系统中存储的数据不多,响应时间也不会太长,毕竟计算机的速度还是很快的;但如果数据分布在几千台甚至上万台机器中,系统逐个机器扫描后再给你响应,严重影响购票体验。
因此在分布式存储系统中,必须有相应的数据导购,否则系统响应会很慢,效率很低。为解决这个问题,数据分片技术就走入了分布式存储系统中。
数据分片技术:指分布式存储系统按照一定的规则将数据存储到相对应的存储节点中,或者到相对应的存储节点中获取想要的数据,优点:
- 降低单个存储节点的存储和访问压力;
- 通过规定好的规则快速找到数据所在的存储节点,从而大大降低搜索延迟,提高用户体验。
当铁路局发布各个线路的火车票信息时,会按照一定规则存储到相应的机器中, 比如北京到上海的火车票存储到机器 A 中,西安到重庆的火车票存储到机器 B 中。当乘客查询火车票时,系统就可以根据查询条件迅速定位到相对应的存储机器,然后将数据返回给用户,响应时间就大大缩短了。如图所示,当查询北京 - 上海的火车票相关信息时,可以与机器 A 进行数据交互。
例子中按照数据起点、终点的方式划分数据,将数据分为几部分存储到不同的机器节点中,就是数据分片技术的一种。当查询数据时,系统可以根据查询条件迅速找到对应的存储节点,从而实现快速响应。 还有其他很多数据分片的方案。比如,按照数据范围,采用哈希映射、一致性哈希环等对数据划分。
针对数据范围的数据分片方案:按照某种规则划分数据范围,然后将在这个范围内的数据归属到一个集合中。这就好比数学中通常讲的整数区间,比如 1~1000 的整数,[1,100] 的整数属于一个子集、[101,1000] 的整数属于另一个子集。
对于前面讲的火车票的案例,按照数据范围分片的话,可以将属于某条线的所有火车票数据划分到一个子集或分区进行存储,比如机器 A 存储京广线的火车票数据,机器 B 存储京沪线的火车票数据。数据范围的方案是按照范围或区间进行存储或查询。
如图所示,当用户查询北京 - 上海的火车票相关信息时,首先判断查询条件属于哪个范围,由于北京 - 上海的火车线路属于京沪线,因此系统按照规则将查询请求转到存取京沪线火车票数据的机器 B,然后由机器 B 进行处理并给用户返回响应结果。
为了提高分布式系统的可用性与可靠性,除了通过数据分片减少单个节点的压力外,数据复制也是一个非常重要的方法。数据复制是将数据进行备份,以使得多个节点存储该数据。
数据复制和数据分片技术的区别:
数据 A 被拆分为两部分存储在两个节点 Node1 和 Node2 上,属于数据分片;数据 B 同一份完整的数据在两个节点中均有存储,就属于数据复制。
在实际的分布式存储系统中,数据分片和数据复制通常是共存的:
数据通过分片方式存储到不同的节点上,以减少单节点的性能瓶颈问题;而数据的存储通常用主备方式保证可靠性,对每个节点上存储的分片数据,采用主备方式存储,以保证数据的可靠性。主备节点上数据的一致,是通过数据复制技术实现的。
Kafka 集群消息存储架构图,消息数据以 Partition(分区)进行存储,一个 Topic(主题)可以由多个 Partition 进行存储,Partition 可以分布到多个 Broker 中;同时,Kafka 还提供了 Partition 副本机制(对分区存储的信息进行备份,比如 Broker 1 中的 Topic-1 Partion-0 是对 Broker 0 上的 Topic-1 Partition-0 进行的备份),从而保证了消息存储的可靠性。
货架:存储数据
货架是用来存储数据的,因为数据是由顾客产生和消费的,因此货架存储的数据类型与顾客产生和消费的数据类型是一致的,即包括结构化数据、半结构化数据和非结构化数据。
针对这三种不同的数据类型,存储“货架”划分为三种:
- 分布式数据库:通过表格来存储结构化数据,方便查找。常用的分布式数据库有 MySQL Sharding、Microsoft SQL Azure、Google Spanner、Alibaba OceanBase 等。
- 分布式键值系统:通过键值对来存储半结构化数据。常用的分布式键值系统有 Redis、 Memcache 等,可用作缓存系统。
- 分布式存储系统:通过文件、块、对象等来存储非结构化数据。常见的分布式存储系统 有 Ceph、GFS、HDFS、Swift 等。
对存储介质的选择,本质是选择将数据存储在磁盘还是内存(缓存) 上:
- 磁盘存储量大,但 IO 开销大,访问速度较低,常用于存储不经常使用的数据。比如,电商系统中,排名比较靠后或购买量比较少、甚至无人购买的商品信息,通常就存储在磁盘上。
- 内存容量小,访问速度快,因此常用于存储需要经常访问的数据。比如,电商系统中, 购买量比较多或排名比较靠前的商品信息,通常就存储在内存中。
知识扩展:业界主流的分布式数据存储系统有哪些?
货架针对结构化数据、半结构化数据和非结构化数据,分别对应不同的“货架”,即分布式数据库、分布式键值系统和分布式文件系统进行存储。
主流的分布式数据库,主要包括 MySQL Sharding、SQL Azure、 Spanner、OceanBase 等。
主流的分布式存储系统,主要包括 Ceph、GFS、HDFS 和 Swift 等。
总结
分布式数据存储系统的三要素,即顾客、导购和货架,对应到分布式领域的术语就是数据生产者 / 消费者、数据索引和数据存储。
- 顾客包括产生数据的顾客和消费数据的顾客两类;
- 导购是数据索引引擎,包括数据存储时确定数据位置,以及获取数据时确定数据所在位置;
- 货架负责数据存储,包括磁盘、缓存等存储介质等。
不同应用场景中,顾客产生的数据类型、格式等通常都不一样。根据数据的特征,这些不同的数据可以被划分为三类:结构化数据、半结构化数据和非结构化数据。与之相对应的,货架也就是数据存储系统,也包括三类:分布式数据库、分布式键值系统和分布式文件系统。
-
servlet中的数据存储
2019-06-14 10:24:54用以下几种方式实现数据存储和共享: 1)在客户端页面和服务器端程序之间,用request中的getParameter()方法共享数据 2)在请求和请求之间,可以用get/setAttribute方法来共享数据(转发的时候) 3)同一个...在servlet基础中,我们:
用以下几种方式实现数据存储和共享:
1)在客户端页面和服务器端程序之间,用request中的getParameter()方法共享数据2)在请求和请求之间,可以用get/setAttribute方法来共享数据(转发的时候)
3)同一个servlet对象,可以用servletConfig(xml)来共享数据(主要是获取配置信息)
getServletName();获取servlet的名称,也就是我们在web.xml中配置的servlet-name
getServletContext(); 获取ServletContext对象
getInitParameter(String); 获取在servlet中初始化参数的值。这里注意与全局初始化参数的区分。这个获取的只是在该servlet下的初始化参数
getInitParameterNames(); //获取在Servlet中所有初始化参数的名字,也就是key值
4)在整个web应用范围内,通过ServletContext的set/getAttribute方法共享数据
ServletContext: 代表的是整个应用。一个应用只有一个ServletContext对象。是单实例。
在一定范围内(当前应用),使多个Servlet共享数据。
现在我们说一个新的话题:会话管理
session/cookie
什么是会话?
会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
•会话过程中要解决的一些问题?
–每个用户不可避免各自会产生一些数据,程序要想办法为每个用户保存这些数据。
–例如:用户点击超链接通过一个servlet购买了一个商品,程序应该想办法保存用户购买的商品,以便于用户点结帐servlet时,结帐servlet可以得到用户购买的商品为用户结帐。
•Cookie
–Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
•HttpSession
–Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的HttpSession对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
总结:cookie存在客户端,session存在服务器端
cookie:
API:
public Cookie(String name,String value)
setValue与getValue方法
setMaxAge与getMaxAge方法 (秒)
setPath与getPath方法
setDomain与getDomain方法
getName方法
使用cookie的大概步骤:
1)创建并向客户端发送Cookie
•创建Cookie对象
–调用Cookie的构造方法,给出Cookie的名称和Cookie的值,二者都是字符串
•Cookie c = new Cookie(“userName”,”a1234”)
•设置最大时效
–如果要告诉浏览器将Cookie存储到磁盘上,而非仅保存在内存中,使用setMaxAge方法(参数为秒数)
–c.setMaxAge(60*60*24*7)//一周(正数)
•将Cookie放入到HTTP响应中
–使用response.addCookie(c)
–如没有这一步,将不会有任何Cookie被发送到浏览器
2)从客户端读取Cookie
Cookie[] cookies = request.getCookies(); if(cookies != null){ for(Cookie cookie : cookies){ if("userId".equals(cookie.getName())){ //doSomethingWith(cookie.getValue()); } } }
session:
同一颜色为一次逻辑,顺序为1,2,3,4
session 主要API:
•getAttribute()
–从会话对象中提取出一个之前存储的属性值
•如果没有找到与名称相关联的值,则返回null
•setAttribute()
–设置会话对象的属性名称和属性值
•removeAttribute()
–移除与名称关联的值
•getAttributeNames()
–返回会话中所有属性的名称
•getId()
–返回唯一的标识符
使用session的大概步骤:
//获取HttpSession对象,设置相关属性
HttpSession session = req.getSession();
session.setAttribute("userName", userName);
//获取HttpSession对象,取出相关属性
HttpSession session = req.getSession();
session.getAttribute("userName", userName);
分享一张尚学堂的我觉得很好的图
-
分布式数据存储系统:CAP理论
2021-12-26 11:47:48分布式数据存储:CAP理论前言什么是 CAP?CAP 选择策略及应用保 CA 弃 P保 CP 弃 A保 AP 弃 C对比分析知识扩展:CAP 和 ACID 的“C”“A”是一样的吗?总结 前言 分布式系统处理的关键对象是数据,而数据其实是与... -
Java虚拟机运行时数据区
2019-12-13 14:55:00Java虚拟机在执行Java程序的过程中,会把它所管理的内存划分若干个不同的数据区域,这些区域被赋予不同的用途,它们有着各自创建和销毁时间,有的区域是随着虚拟机进程启动而存在的,有的区域则是依赖用户线程... -
Java会话技术之Session
2021-06-14 23:34:21文章目录1.3 服务端会话...它本质仍是采用客户端会话管理技术,只不过保存到客户端的是一个特殊的标识,并且把要共享的数据保存到了服务端的内存对象中。 (后面看懵逼的再回来看一下这句话,其实还是为了存数据,不 -
Java EE数据持久化框架 • 【第1章 MyBatis入门】
2021-04-15 20:07:36狭义的讲就是将内存中的数据存储到数据库或其他介质的过程。 Dao层将数据存储到数据库中 Java如何实现数据持久化? JDBC编程操作: 代码重复繁琐、开发效率低 Mybatis、Hibernate等框架技术 企业级应用开发... -
Java Excel数据导出方案及性能优化策略 --基于Apache poi框架
2018-11-13 11:18:12目录: 1. 背景 ...4. SXSSF、EasyExcel大数据量方案实现 5. SXSSF、EasyExcel大数据量方案对比 6. 性能优化策略 7. 业界其他方案 8. demo下载地址 背景 • 项目背景 XXXXXXXX项目,数据... -
Java基础:什么是数据结构
2018-02-27 16:11:38数据结构往往同高效的检索算法和索引技术有关。(来源于百度百科)2、存储数据的方式1、变量变量声明格式: 数据类型 变量名示例:int age变量赋值:int age = 22;注意事项:需要注意值和类型的匹配... -
Java技术栈-服务四层技术
2021-11-29 14:19:40服务四层中包括中间件(Kafka、Mycat)、计算(Spark、Neo4j、Hive)、索引、微服务、大数据存储等重难点技术 运用Spring Boot快速开发框架,构建项目工程;并结合Spring Cloud全家桶技术,实现后端个人中心、... -
Java 简单的用户管理系统(代码注释超全超详细!!!)
2021-10-02 16:36:18实现的功能:登录、添加用户、修改用户(修改的时候用户原始数据显示到界面上、单个删除用户和多个删除用户、数据的分页和跳转、url过滤器 因为我写的时候是开了两个tomcat服务器将图片存储到另一个服务器上进行... -
java有哪些技术领域
2018-12-07 23:10:36数据访问中间件:解决应用访问数据库的共性问题。 分布式系统-dubbo-spring cloud:一定是有多个节点组成的系统,一般一个节点就是一台服务器,节点之间是相互连通协作的,这些连通的节点上部署了我们的组件,共同... -
10万字208道Java经典面试题总结(附答案)
2021-08-01 16:05:55JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。... -
Java Socket 发送/接收数据
2018-11-28 13:52:53在上一篇了解过 Java Socket 的两种形式(TCP、UDP)后,本文将继续介绍如何利用 Java Socket 发送和接收数据及其内部原理的实现。 Java Socket 的目的在于实现与其他程序的信息交互,包括发送和接收信息两种主要... -
Java常见设计模式总结
2021-09-18 17:18:54组合模式的UML结构图如下: 组合模式详情: Java设计模式之结构型:组合模式 12、结构型-享元模式: 享元模式通过共享技术有效地支持细粒度、状态变化小的对象复用,当系统中存在有多个相同的对象,那么只共享一份... -
Android数据存储、文件存储、SQLite数据库简单使用、 sharedPreferences存储(五)
2021-11-07 22:12:49文章目录5 数据存储5.1 数据的存储方式5.2 文件存储5.2.1 将数据存入文件中5.2.2 从文件中读取数据5.2.3 实战演练-保存QQ账号和密码5.3 sharedPreferences存储5.3.1 将数据存入SharedPreferences中5.3.2 读取和删除... -
基于javaSwing+文本存储的学生信息管理系统设计实现
2021-08-20 23:56:06该学生信息管理系统项目是使用Java swing开发,可实现基础数据维护、用户登录、学生信息列表查看、修改、删除和模糊查找以及退出注销等功能、界面设计比较简单易学、适合作为Java课设设计以及学习技术使用。... -
2021Java最新技术发展趋势
2021-09-13 15:18:06当前,计算机网站和应用程序的世界已经变得非常依赖Java,以至于大多数网站和应用程序都需要在我们日常使用的设备上安装Java,以使它们正常运行。从具有互联网功能的手机到巨型高科技超级计算机,Java是最受欢迎的... -
java分布式技术平台架构方案
2020-05-12 07:53:24系统平台具有较大的灵活调整空间,当有新的主数据类型、新的数据需求、新的数据结构、新的数据接口及流程等需求时,整体系统架构不需要重新构建,通过可扩展的架构方式即可满足功能变化,前端数据录入可根据数据模型... -
Java虚拟机(一)结构原理与运行时数据区域
2017-04-21 13:10:38本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关知识,Java虚拟机也并不是三言两语能够介绍完的,因此开了Java虚拟机系列,这一篇文章我们来学习Java虚拟机的结构原理与运行时数据区域... -
成为Java技术专家需要掌握的知识点
2019-03-06 11:24:57总结了一下自己的现状就是基础太渣,虽然说下面罗列的Java很多东西平常都用不到,但是如果想要成为与Java/Scala相关岗位的技术专家,就必须对这些基础非常清楚,随便聊到一个点就能谈一个面。 所以就去找了很多Java... -
Java 基础高频面试题(2022年最新版)
2021-03-31 23:39:26最新 Java 基础高频面试题 -
java源码包---java 源码 大量 实例
2013-04-18 23:15:262个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户... -
牛逼!Java 从入门到精通,超全汇总版
2021-05-06 19:40:33文章目录Java 基础Head First JavaJava 核心技术卷一Java 编程思想设计模式Head First 设计模式图解设计模式设计模式重学 Java 设计模式Java 进阶Java 并发编程实战Java 并发编程艺术Java 并发编程之美图解Java多... -
-
大数据技术介绍
2022-01-10 11:02:09为了方便大家梳理清楚大数据学习路线,本文从以下四个方面来介绍...做大数据开发,无非要干四件事情,采集、存储、查询、计算。此外,一些开发必备的基础语言能力是需要的。我按照这几个维度,对大数据常见技术栈做 -
Java Web中JSP实现数据传递和保存重点总结
2019-01-12 09:43:55获取表单提交的数据: JSP(Java Server Pages) 从浏览器到服务器是浏览器发送请求(request) 从服务器到浏览器是浏览器接收响应(response) 【通过JSP来实现】 request对象: 主要用于处理客户端请求 ...