乱码三千 – 分享实用IT技术

乱码三千 – 码出一个新世界


  • 首页

  • 归档

  • 搜索

关于几种Web会话跟踪技术的对比分析

发表于 2023-04-08

前言

正常情况下, 当浏览器打开访问某个网站时一个新会话便创建了, 当浏览器关闭, 那该会话便结束

会话跟踪技术: 检查多个或多次接口请求是否属于同一个会话的技术, 简而言之就是判断这些请求是否来自同一个用户的技术

常见的会话跟踪技术有:

  • Cookie
  • Session
  • JWT

Cookie

优势:

  • HTTP协议中支持的技术
  • 全程自动跟踪

劣势:

  • 移动端APP无法使用Cookie
  • 不支持跨域
  • 不安全 用户可以手动禁用Cookie
  • 前端收到的Cookie数据为明文 信息不安全

Session

优势:

  • HTTP协议中支持的技术
  • 信息相对安全 前端收到的Cookie数据为密文, 真实数据存在后端
  • 全程自动跟踪

劣势:

  • 移动端APP无法使用Session
  • 不支持跨域
  • 由于Session是基于Cookie实现的, 所以用户同样可以手动禁用Cookie使得Session无法使用
  • 由于数据存在后端 加大了后端了存储压力
  • 服务器集群环境下无法共享Session

JWT

全称json web token,

优势:

  • 支持PC端和移动端
  • 解决集群环境下的认证问题
  • 减轻了服务端的存储压力
  • 不存在跨域问题
  • 数据为密文 防篡改 安全性高

劣势:

  • 需要手动存储token到本地

总结

Cookie和Session属于传统的会话跟踪技术, 如果只做Web端, 可以采用

如果是面对多平台的开发, 推荐目前主流的jwt技术

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

SpringBoot工程根据实体类自动创建数据库表

发表于 2023-04-07

实现步骤

  1. 集成jpa依赖包

    1
    implementation "org.springframework.boot:spring-boot-starter-data-jpa"
  2. 给实体类添加注解

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @Entity
    @Table(name = "user")
    data class User(
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long? = null,
    @Column(name = "nickName",nullable = false)
    val nickName: String? = null,
    @Transient //表中不生成对应字段
    val qqAccount: String? = null,
    val avatar: String? = null,
    val realName: String? = null,
    val password: String? = null,
    )
  3. 在application.yml配置文件中对jpa进行相关配置

    1
    2
    3
    4
    5
    spring:
    jpa:
    hibernate:
    ddl-auto: update # 当实体类发生改变时更新表
    show-sql: true

    ddl-auto枚举参数介绍:

    • create:每次运行程序时,都会重新创建表,故而数据会丢失
    • create-drop:每次运行程序时会先创建表结构,然后程序结束时清空表
    • update:每次运行程序,没有表时会创建表,如果对象发生改变会更新表结构,原有数据不会清空,只会更新(推荐使用)
    • validate:运行程序会校验数据于数据库的字段类型是否相同,字段不同会报错
    • none:禁用DDL处理, 此为默认模式
  4. 启动工程

    配置完后, 每次启动工程则会检查相关实体类, 如有新增实体类则自动创建表

    需要注意的是: 只能自动创建表和新增字段 删除字段和修改字段类型需要手动处理

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

SpringBoot实现自动生成接口文档

发表于 2023-04-06

前言

需要使用knife4j这个框架来实现我们的需求, 这里我使用的是Gradle构建环境, 具体步骤如下

实现步骤

  1. 添加依赖

    1
    implementation "com.github.xiaoymin:knife4j-spring-boot-starter:2.0.9"
  2. 定义配置类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    @Configuration
    @EnableSwagger2WebMvc
    open class SwaggerConfiguration : WebMvcConfigurer{
    override fun addResourceHandlers(registry: ResourceHandlerRegistry?) {}

    // 创建Docket存入容器,Docket代表一个接口文档
    @Bean
    open fun webApiConfig(): Docket? {
    return Docket(DocumentationType.SWAGGER_2) // 创建接口文档的具体信息
    .apiInfo(webApiInfo()) // 创建选择器,控制哪些接口被加入文档
    .select() // 指定@ApiOperation标注的接口被加入文档
    .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation::class.java))
    .build()
    }

    // 创建接口文档的具体信息,会显示在接口文档页面中
    private fun webApiInfo(): ApiInfo? {
    return ApiInfoBuilder() //
    .title("文档标题") //
    .description("文档描述")
    .version("1.0")// 版本
    .contact(Contact("联系人信息", "http://baidu.com", "baidu@qq.com")) // 版权
    .license("版权地址")
    .licenseUrl("http://www.baidu.com")
    .build()
    }
    }
  3. 给Controller添加文档注解

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    @Api(tags = ["文件管理"])
    @ApiSupport(author = "开发者名称", order = 1)
    @CrossOrigin
    @RestController
    @RequestMapping("/file")
    class FileController {


    @Autowired
    lateinit var service: FileService
    @ApiOperation(value = "文件上传", notes = "这是注释")
    @PostMapping(value = ["/upload"])
    fun uploadFile(
    @RequestParam(value = "file", required = true) file: MultipartFile,
    ): BaseEntity<String> {
    return try {
    val url = service.uploadFile(file)
    BaseEntity(data = url)
    } catch (e: Exception) {
    BaseEntity(code = 505, msg = e.message.orEmpty(), data = "")
    }

    }

    }
  4. 在application.yml配置文件中对knife4j进行相关配置

    1
    2
    3
    4
    5
    6
    7
    knife4j:
    enable: true #开启文档自动生成功能
    production: false # 生产版本时 无权限访问
    basic: # 设置访问密码
    enable: false
    username: abc
    password: 123
  5. 运行工程, 查看文档

    浏览器输入http://ip:端口/doc.html查看自动生成的文档, 如下:

    image-20230410114636451

文档参考

官方文档: 点击进入

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

SSH链接失败提示REMOTE HOST IDENTIFICATION HAS CHANGED

发表于 2023-04-05

前言

昨天在使用Git推送代码的时候, 莫名其妙突然报错,提示:

1
2
3
4
5
6
7
8
9
10
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMc
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:3

解决方案

  1. 第一种 直接删除.ssh目录下的known_hosts文件

  2. 第二种 修改.ssh目录下的config配置文件, 添加如下配置:

    1
    2
    StrictHostKeyChecking no  # 不进行主机检查
    UserKnownHostsFile /dev/null #不保存在known_hosts中
  3. 第三种 只删除known_hosts文件中对应ip的相关rsa信息

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

使用Python语言进行硬件开发

发表于 2023-04-03

前言

cool-admin V6.0开始接入了物联网开发,默认集成了MQTT服务。在这个万物互联的时代,我们多掌握一种技能就多一分优势。

Show

选型

目前市面上大多数开发物联网的都是c系列的语言,但是随着硬件性能的提升其实我们对编程语言的选择已经慢慢趋向于考虑好用、方便、简单,而不是性能。

对于没接触过c语言的开发者,他们大部分习惯用java、php、go、python等比较上层的语言,学c的话花的时间可能比较久。因此综合cool的粉丝和其他考虑,我们选用 MicroPython来作为我们开发物联网的语言,使用起来和python几乎无差别。

python做为一门工具语言,是很多开发着需要去掌握的!!!

MicroPython

MicroPython是一种基于Python的精简版嵌入式操作系统,它能够在小型的嵌入式系统中运行Python解释器。MicroPython支持各种硬件平台,包括单片机,Wi-Fi模块,以及其他各种嵌入式设备。

MicroPython被设计成轻量级的、高效的,并且可以非常容易地与各种传感器、执行器和其他外部硬件设备进行通信。它支持许多标准Python库,同时还具有一些专门为嵌入式设备设计的库和工具。

MicroPython的目标是提供一个方便的Python环境,可以让开发人员在嵌入式设备上轻松地编写代码,并且可以直接在设备上运行代码,而不需要在外部计算机上编译或调试代码。

MicroPython可以通过串口或者Wi-Fi连接进行编程和调试,还可以使用MicroPython的交互式REPL环境(Read-Eval-Print-Loop)来进行快速原型开发。同时,MicroPython还支持Python 3语法,并且具有自动垃圾回收功能,这使得编写代码更加简单和高效。

硬件设备

对比了市面上很多种设备,最终选用Esp32,来作为我们的硬件设备,它有以下特点(看不懂的同学不要着急,大概了解就行):

  1. 高性能:ESP32拥有两个Tensilica LX6内核,主频高达240MHz,能够提供高性能的计算能力,可以处理复杂的算法和任务。
  2. 低功耗:ESP32的功耗非常低,它具有多种节能模式,可以延长电池寿命,从而使其成为无线传感器、物联网设备和移动设备的理想选择。
  3. 内置Wi-Fi和蓝牙:ESP32具有内置的Wi-Fi和蓝牙模块,支持多种无线协议和标准,可以实现快速、稳定的网络通信,从而扩展了应用场景。
  4. 丰富的外设:ESP32集成了多个外设,包括多个通用输入输出口、ADC、DAC、PWM、SPI、I2C、UART、定时器等,可以满足不同应用的需求。
  5. 安全性:ESP32支持多种安全特性,包括加密算法、安全引导和安全存储,可以保证系统的安全性。
  6. 易于开发:ESP32可以使用Arduino、MicroPython、JavaScript等多种编程语言进行开发,同时还有丰富的开发工具和社区支持,可以方便快速地进行原型设计和开发。

总的来说,ESP32硬件具有高性能、低功耗、内置无线通信、丰富的外设、安全性高和易于开发等优点,可以满足各种物联网和嵌入式应用的需求。

Eps32

资源

  • 一个模拟开发板的网站,支持Esp32和MicroPython:https://wokwi.com/open in new window
  • 一个入门学习错的教程:https://doc.itprojects.cn/0006.zhishi.esp32/02.doc/index.html#/open in new window
  • 制作定制电路板:https://www.jlc.com/open in new window

附加

除了MicroPython之外, 目前还有pikapython

具体文档: 点击进入

本文转载自: COOL-JS

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

AI和硬件开发

发表于 2023-04-02

前言

国内有不少已经接入ChatGPT相关API并做成了独立Web形式的网站, 比如

https://talkai.cc/

image-20230404145647933

想尝鲜的可以体验一下

AI和硬件

AI归根结底还是一个软件, 未来必须结合硬件才能大展拳脚, 更进一步

所以硬件开发在接下来的时间里会有一个迅速的进步

以前我们所谓的智能家居, 其实还是相对简陋了一些, 只不过是从原来的机械控制转变成了数字控制, 但实际操作还是离不开人

未来有AI的参与, 那智能家居才算是真正意义上的智能, AI就是生活管家

硬件开发

关于硬件开发 涉及的技术点不少 比如单片机知识 汇编语言 C语言等等

在20年的时候有幸录过一套汇编语言相关的视频, 该套视频全部上传至B站供大家免费观看

《程序员进阶之三大架构汇编语言入门视频教程-胖薯出品》

  • 录制时间 2020年12月14日
  • B站:点击跳转
  • 网易云课堂: 点击跳转

更多教程可前往 有瓣杂货铺

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

临时手机号&邮箱大合集

发表于 2023-04-01

前言

最近ChatGPT大火, 很多小伙伴都想尝一尝鲜, 可惜国内账号无法注册, 只能借助国外手机号

考虑到个人的隐私安全, 我们可以使用一些临时的手机号或者邮箱进行使用

其中有收费和免费的 不用多想 收费的肯定要稳定好用一些

临时手机号

  1. sms-activate

    收费接码平台 稳定好用

    image-20230404141409473

    官网: 点击进入

  2. 阿里小号

    阿里推出的虚拟手机号平台, 可绑定真实手机号, 保护个人隐私

临时邮箱

  1. temp-mail

    免费临时邮箱

    有了它, 不用再担心垃圾邮件,广告邮件,黑客和机器人攻击。让您真实的邮箱保持干净和安全。Temp Mail提供临时、安全、匿名、免费的一次性电子邮件地址。

    image-20230404141741513

    网站: 点击进入

  2. 24mail

    国内临时邮箱服务站

    image-20230606102623501

    网站: 点击进入

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

不小心关闭谷歌浏览器怎么恢复(快速恢复所有被关闭的网页)

发表于 2023-03-09

前言

在使用浏览器访问网页的时候,有没有遇到因一时手残关闭所有浏览器网页的情况?

打开的网页有点多还能恢复吗?不要着急,下面就给大家分享四种恢复谷歌浏览器已经关闭的网页的方法。

不小心关闭谷歌浏览器怎么恢复(快速恢复所有被关闭的网页)

第一种方法:快捷键

很多人不知道Chrome浏览器撤销关闭页面的快捷键是什么,其实这是一个组合键,即Crtl+Shift+T。对于习惯使用快捷键的朋友,这是最快的恢复chrome已关闭网页的方法。

第二种方法

从历史浏览记录里选取已关闭网页。打开历史记录的方法是从“菜单”选择“历史记录”,或者使用快捷键Ctrl+H。还有一个快捷方法是,长按或者往下拉“后退键”,即可打开Chrome历史浏览页面。所谓的“后退键”在浏览器页面左上角,找到一个形状为向左的箭头,就是它了。

第三种方法:标签页右键点击

其实这个方法也是属于从历史浏览记录中恢复已关闭网页,不同是的,单手即可操作。在任意标签页上点击右键,可以看到菜单中一个选项“重新打开关闭的标签页”,点击之即可自动在新标签页中打开前面一个刚关闭的页面。

第四种方法:使用插件

对于插件党而言,一切的方法都可以使用万能的插件来解决。恢复已关闭页面的Chrome插件有很多,类似Sexy Undo Close Tab,Simple Undo Close等等,可以直接去Chrome网上应用商店搜索安装即可使用。

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Android开发之图片取色工具

发表于 2023-01-06

前言

我们在开发过程中经常会遇到需要对图片进行取色的情况

如果你也嫌弃下载取色软件麻烦

那么有一些顺手的工具可以满足我们的取色需求

使用Android Studio自带取色工具

在VCS版本管理关卡页面, 有一个取色工具

image-20230106102842956

image-20230106102709895

使用Chorme浏览器自带取色工具

进入控制台, 随便点击一个色块, 会弹出取色工具

image-20230106103019125

image-20230106103118581

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Go语言性能为何还无法赶上C语言

发表于 2022-10-01

解答

Go语言也能生成二进制可执行文件, 然而性能之所以还不如C 主要还是因为GC功能拖慢了运行速度, 但凡是带有GC的语音 性能都不可能超过C

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

1…101112…51

乱码三千

android程序员一枚,擅长java,kotlin,python,金融投资,欢迎交流~

505 日志
145 标签
RSS
© 2026 乱码三千
本站总访问量次
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4
0%