无题
基于以太坊的众筹系统1. 针对什么应用场景,解决什么问题
应用场景:
公益筹款平台,如水滴筹,用于生大病患者的筹款。
问题:
信息造假:如救助金额和目标款项、医院资料、个人资料等可以造假。
资金管理不透明:资金流转操作由平台统一接管,存在隐私数据泄露、平台提成收取过高、资金发放迟缓等问题。
缺乏监管和透明度,影响捐赠者信任。
2. 面向什么客户,满足什么需求,提供什么价值
客户群体:
公益众筹:因病或因事故需要帮助的个人或家庭。
企业众筹:初创企业或项目。
需求:
安全性和可靠性:用户需要去中心化的众筹系统,保障信息和资金安全。
数据可溯源:用户希望对数据进行溯源,防止篡改和隐私泄露。
价值:
透明度和可追溯性:所有交易记录都记录在区块链上,增加透明度,减少欺诈行为。
去中心化:资金管理和分配不依赖于单一平台,降低中心化风险。
安全性:智能合约自动执行,减少人为干预,确保资金安全。
效率:自动化流程减少传统众筹中的繁琐步骤,提高效率。
信任:保证信息真实性和资金流向透明性,增强捐赠者和投资者的信任。
创新:利用区块链技术,为众筹领域带来创新解决方案,推动行业进步。
...
字节面试复盘
字节面试复盘个人介绍这一部分个人提前准备,展现技术栈和特点就好。
问题1:项目问题——@MultipartForm 原理解析@MultipartForm :用于解析多部分表单数据上传(基于JAX-RS框架)
框架会在接收到请求时检查 Content-Type 头是否为 multipart/form-data。如果是,它会解析请求体中的每个部分,并根据表单数据类(如 FileUploadForm)中的字段注入相应的数据。
问题2:断点续传的实现断点续传是指在文件传输过程中发生中断后,能够恢复传输,并从上次中断的位置继续传输。
1、记录已经传输的文件位置:在每次传输过程中,记录已经成功传输的文件位置或字节数,以方便下次传输时从该位置开始。
2、传输过程的中断和恢复:在传输过程中,如果发生了中断,需要能够恢复传输,并从上次记录的位置继续传输。
技术选型:
1、RandomAccessFile:Java中的一个类,可以实现对文件的随机访问,适用于断点续传功能的实现。
2、HttpURLConnection:Java中用于处理HTTP请求的类,可以通过设置请求头部信息实现下载文件的断点续传。
1 ...
Debug--SpringCloud用户鉴权中心
简陋版SpringCloud用户鉴权中心问题总结(吐槽actually)在写 网关的拦截器时,我想对我内部的 service 进行一个保护,使users 无法直接跳过登录,去调用我 service 的接口。就是这样,问题出现了,因为一开始的代码结构,我都是写一步看一步,所以我整体结构就是一坨 bullshit ,我在一开始 user 登录的时候给每个用户使用 JWT 生成了一个 token,并保存到 user 表中,所以在写网关拦截器时,我想都没想的去使用了 token 这个校验值去作为我是否放行的判断条件。
当我在写校验逻辑的时候我发现,我的 token 是用 userID 和 userPassword 生成的 这也导致了,我在鉴权时,必须要根据 token 得到的 userId ,从数据库中获取我对应的 user。同时我还在使用 mybatis-plus,这意味着我需要如果我要在 GateWay 中实现这个逻辑,则需要复写很多重复且无用的代码。
同时 因为个人能力问题和一开始技术栈选择错误(我SpringCloud 使用 eureka注册中心和 zuul 网关,md,下次打死不用这 ...
Cipher-加解密系统
项目介绍本项目是基于 SpringBoot 和 Vue,简单运用了SpringCloud 中微服务相互调用的功能实现的加解密系统,提供了 AES、ECDSA、SHA256、SM2、SM3、SM4这几种加密算法的加解密功能,其中秘钥部分,由系统自动随机生成。
系统架构前端Vue + Nuxt + axios
后端SpringBoot + SpringCloud + Mybatis-plus + Mysql
项目地址Cipher
期末复习——软件安全
软件安全复习综述(不考)缓冲区溢出基础###缓冲区溢出原理
缓冲区溢出 -> 当计算机向缓冲区内填充 数据位数超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
一般发生在写入内存的数据超过了分配给缓冲区的大小
进程内存空间分区按照内存地址从高 (0xffffffff)到低 (0x00000000)的顺序排列,可分为5大分区:栈区 -> 堆区 -> 数据区 -> 代码区。
系统栈的工作原理—内存的不同用途
分区
功能
代码区
存储被装入执行的二进制机器代码,处理器会到这个区域取指并执行
数据区
存储全局变量等
堆区
进程可以在堆区动态地请求一定大小的内存,并在用完后归还给堆区。特点:动态分配与回收
栈区
用于动态地存储函数之间的调用关系,保证被调用函数在返回时回复到父函数中继续执行
函数栈帧、函数调用原理函数栈帧,一般包含以下几类重要信息
信息
功能
局部变量
为局部变量开辟空间
栈帧状态值
保存前栈帧的顶部和底部,用于在本帧被弹出后恢复出上一个栈帧
函数返回地址
保存当前函数调用前的断点信息,以便函数返回时能恢 ...
随笔--记失眠的一晚
随笔 —— 记失眠的一晚不知道是因为什么缘故,今夜辗转反侧,难以入眠。遂翻身而下,不愿在与网易云音乐做半梦半醒的挣扎,在虚无中消磨掉夜晚的自由与白天的阴暗,想着用一篇博客记录下此时的所想,也算无病呻吟,聊以慰藉。
窗外的大雪淹没了时间的痕迹,悄无声息带走了这一学期的时光,也带走了四季。很快就要进入新的一年,一年的末尾时,总爱去想自己这一年究竟有了哪些成长,有了多少收获,就像出海的渔人一般,清点着别样的鱼获。可是,真的会有成长嘛?我以为的成长是真的有吗?这我不知道,但是我唯一确定的是,每一天后的我,会比前一天拥有更多勇气,或者说,每一天都在去试错,都在去和自己斗争,和自己的惰性,和自己的劣根性,进行一次又一次的斗争。有时候,我能够胜利,有时候,却输的彻底。我希望我能一直获胜,做一个常胜将军,我希望我能不向自己妥协,与自己做下的约定一定去完成,我希望我能坚持这一想法,直至生命终结。
眨眼之间,已经20岁,已达弱冠之龄,可是,我的眼中并没有对未来很执着的向往,反而更加怀念从前,对未来的展望中总是遍布着疑云,对每一条路的选择都抱有着不确定以及不自信能否走到最后的想法,我想拥有一个不会让自己后悔 ...
小米便签维护开发
Mi Note项目来源MiCode便签是小米便签的社区开源版,由MIUI团队(www.miui.com) 发起并贡献第一批代码,遵循NOTICE文件所描述的开源协议,今后为MiCode社区(www.micode.net) 拥有,并由社区发布和维护。
项目源地址:https://github.com/MiCode/Notes本项目地址:https://github.com/Shawnicsc/MiNote
环境配置Android Studio 2022.3
Gradle 8.1.3
SDK 11
JDK 17
阿里云数据库 – MySQL
使用说明可安装的程序包(apk文件) 在 release 文件下,直接安装运行。
新增功能介绍1、登录注册功能
2、上传下载功能
3、加密文件功能首先给note数据库添加属性password locker,当用户编辑便签,选择设置密码时,调用setPassword方法
123if (itemId == R.id.menu_set_passwd) { setPassword();}
在setPassword中,首先定义对话框,以及对 ...
Android-Studio配置运行小米便签
1.下载Android Studio官网地址:Android Studio
安装教程:Android Studio 安装教程
默认下载即可,选定好SDK的下载地址即可。
1.1配置 Gradle 地址(建议)在下载之后,可以配置一下Gradle的地址,这样在后续import项目时,出错后,方便修改。
在Settings -> Build -> Build Tools -> Gradle中可以修改Gradle的仓库地址
2.项目 clone小米便签项目仓库地址: 小米便签
git clone 或者直接直接下载压缩包都可
3. import 项目此处不能新建项目,直接把文件放入Android Studio,会有你意想不到的报错~
使用import的方式,通过Gradle 的方式编译整个项目。
在sync的过程中,会有各种各样、莫名其妙的报错,部分报错的解决办法,见第5部分的报错解决
出现如下图所示即为,sync成功
3.1 Gradle 项目gradle是基于Apache Maven概念的项目自动化构建开源工具。他是使用一种基于groovy的 特定领域语言来声明项目配 ...
赎金信
赎金信赎金信
此题采用数组解法,只需分别遍历两个数组,记录各元素出现次数即可。
12345678910111213141516171819202122class Solution { public boolean canConstruct(String ransomNote, String magazine) { int[] res = new int[26]; if(ransomNote.length() > magazine.length() ) return false; char[] maga = magazine.toCharArray(); for(int i = 0;i<magazine.length();i++){ res[maga[i] - 'a']++; } char[] ran = ransomNote.toCharArray(); for(int i = 0; i<ransomNot ...
四数之和
四数之和四数之和
思路分析此题是从四个数组中寻找相加为0的四个数,其中会有重复出现可能,所以可以使用 Map 哈希法来解决。
key 存放前两个数组a+b的值,value存储a+b出现的次数。
先遍历前两个数组,存储a+b的值和出现的次数。
再遍历剩下两个数组,寻找 0-c-d 是否在map中出现,使 res加上 出现的次数,即可获得答案。
123456789101112131415161718192021class Solution { public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) { Map<Integer,Integer> map = new HashMap<>(); // 寻找 a+b for(int a : nums1){ for(int b : nums2){ int sum = a+b; map.put(sum, m ...