Coder Social home page Coder Social logo

simplerecord_springboot's People

Contributors

sloppyjack avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

simplerecord_springboot's Issues

java.lang.ExceptionInInitializerError: null

本地环境

  • windows 10 20H2
  • mysql Ver 8.0.21 for Win64 on x86_64 (MySQL Community Server - GPL)
  • redis-cli 5.0.10 (git:1c047b68)
  • jdk 11.0.11

error

Registered plugin: 'AbstractSqlParserHandler(sqlParserList=null, sqlParserFilter=null)'
Parsed mapper file: 'file [C:\Users\Travis\Documents\justForFun\SimpleRecord_SpringBoot\target\classes\mapper\CommonLogMapper.xml]'
Parsed mapper file: 'file [C:\Users\Travis\Documents\justForFun\SimpleRecord_SpringBoot\target\classes\mapper\MenuMapper.xml]'
Parsed mapper file: 'file [C:\Users\Travis\Documents\justForFun\SimpleRecord_SpringBoot\target\classes\mapper\RecordDetailMapper.xml]'
Parsed mapper file: 'file [C:\Users\Travis\Documents\justForFun\SimpleRecord_SpringBoot\target\classes\mapper\RecordTypeMapper.xml]'
Parsed mapper file: 'file [C:\Users\Travis\Documents\justForFun\SimpleRecord_SpringBoot\target\classes\mapper\RoleMapper.xml]'
Parsed mapper file: 'file [C:\Users\Travis\Documents\justForFun\SimpleRecord_SpringBoot\target\classes\mapper\RoleMenuMapper.xml]'
Parsed mapper file: 'file [C:\Users\Travis\Documents\justForFun\SimpleRecord_SpringBoot\target\classes\mapper\SpendCategoryMapper.xml]'
Parsed mapper file: 'file [C:\Users\Travis\Documents\justForFun\SimpleRecord_SpringBoot\target\classes\mapper\UserMapper.xml]'
Parsed mapper file: 'file [C:\Users\Travis\Documents\justForFun\SimpleRecord_SpringBoot\target\classes\mapper\UserRoleMapper.xml]'
 _ _   |_  _ _|_. ___ _ |    _ 
| | |\/|_)(_| | |_\  |_)||_|_\ 
     /               |         
                        3.3.2 
[2021-05-09 22:23:59:131] [WARN] - org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:559) - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'qrcodeController': Unsatisfied dependency expressed through field 'wechatAuthService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'wechatAuthServiceImpl': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'wechat.appId' in value "${wechat.appId}"
[2021-05-09 22:23:59:158] [INFO] - cn.jackbin.SimpleRecord.common.manager.ShutdownManager.shutdownAsyncManager(ShutdownManager.java:34) - ====关闭后台任务任务线程池====
[2021-05-09 22:23:59:159] [WARN] - org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:182) - Destroy method on bean with name 'shutdownManager' threw an exception
java.lang.ExceptionInInitializerError: null
	at java.lang.J9VMInternals.ensureError(J9VMInternals.java:184) ~[?:?]
	at java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:173) ~[?:?]
	at cn.jackbin.SimpleRecord.common.manager.ShutdownManager.shutdownAsyncManager(ShutdownManager.java:35) ~[classes/:?]
	at cn.jackbin.SimpleRecord.common.manager.ShutdownManager.destroy(ShutdownManager.java:24) ~[classes/:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) [spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:242) [spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:579) [spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:551) [spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1089) [spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:512) [spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1082) [spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1061) [spring-context-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564) [spring-context-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE]
	at cn.jackbin.SimpleRecord.SpringbootSimpleRecordApplication.main(SpringbootSimpleRecordApplication.java:14) [classes/:?]
Caused by: java.lang.NullPointerException
	at cn.jackbin.SimpleRecord.utils.SpringContextUtil.getBean(SpringContextUtil.java:24) ~[classes/:?]
	at cn.jackbin.SimpleRecord.common.manager.AsyncManager.<init>(AsyncManager.java:27) ~[classes/:?]
	at cn.jackbin.SimpleRecord.common.manager.AsyncManager.<clinit>(AsyncManager.java:36) ~[classes/:?]
	... 25 more
[2021-05-09 22:23:59:175] [INFO] - org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:173) - Stopping service [Tomcat]

[建议]有关多人记账思路

我为能尽量干净的多人记账,试验过了一堆软件。单机记账的发展相对充分,云空间的同步功能也是。(比如BlueCoins)
大多数现行支持多人记账的,要不收费要不广告很多,除去本身盈利的目的,无法否认多人访问时候需要从服务器相互同步的原因,从服务器同步就需要支付同步服务器的代价。
就算买了永久会员,也难免遇到潜在的问题。数据托管在运营商的服务器,存在运营商跑路后无法使用的问题,并不可能永久。

对多人记账功能而言,思路还是靠服务器同步账本,为了避免同时做修改时候相互覆盖(我以前用随手记就出现过),需要一定处理。

最简方案

  • 约束所有人只修改自己账本,不能修改其他人做的记录
  • 显示时前端从多个用户账本抓取数据合并处理
  • 该方案好处是同时记录绝对不会相互覆盖,也不需要折腾权限,实现起来相对容易
    • 相当适合自建后端的用户
  • 缺点显而易见,不能修改他人的记录

备选方案

  • 主账本发起人对账本具备所有权,其他人的其实在发起人账户建立了附加的修改记录
  • 发起人需要手动执行记录合并,合并现有的修改记录到账本中
    • 截取当前的修改记录
    • 按照时间顺序对主账本完成更改
    • 去除对应执行过的修改记录
  • 合并前可以显示修改记录,按记录行标记,就算是不慎冲突用户也比较好办
  • 可能需要折腾权限,需要发起人手动执行记录的合并,也不是彻底覆盖,可以修改他人记录

针对多人记账服务的特别提示

  • 让用户可以自己搭建后端服务器或数据存储
    • 减少总服务器的空间和流量费用
    • 允许用户对接到有公网IP的家庭私有云
      • 还可以宣传,无需付费会员,不怕数据丢失,哪怕开发者不再维护,用户数据还在自己家
    • 因为搭建有一定门槛,可能引来部分具备一定技术基础的用户协助
  • 提供公有云服务上的服务器搭建方案
    • 提供搭建方案或傻瓜方式搭建包
    • 提供付费的云空间售卖和搭建服务
    • 后期空间和流量问题,让用户对自己负责
    • 这个说的是代搭建方案,不排除有人想搭建到免费空间,可提示潜在危险
  • 正常付费用户模式,面对一般不想折腾技术的人
    • 提供类似现存按月按年付费方案
    • 可不提供永久会员等买断模式,毕竟让有技术的用户自己去搭
      • 对想买断的,提示可以做代搭建服务
      • 变相宣传自行搭建的方案,要求自行搭建用户参加项目群
  • 如没有一般付费用户,可以只存放小程序前端,静态服务器空间就行,存储空间的问题爆减
    • 当然为了后期开发费用,最好还是允许一般用户可通过付费方案进行多人记账
    • 开始是付费用户后来搭建空间的,办理数据迁移需要一次性付费,不过费用不高,毕竟迁移后就不用托管对应数据了
  • 总的从数据的托管情况来看就是,托管方案(付费用户),半托管方案(云空间代搭建),非托管方案(云空间自行搭建)
    • 甚至可以对应的分成付费用户,搭建用户,项目用户三个群

以上是关于后期多人记账时候的思路,望考虑下。

同学,您这个项目引入了20个开源组件,存在61个漏洞,辛苦升级一下

检测到 SloppyJack/SimpleRecord_SpringBoot 一共引入了20个开源组件,存在61个漏洞

漏洞标题:FasterXML jackson-databind 代码问题漏洞
缺陷组件:com.fasterxml.jackson.core:[email protected]
漏洞编号:CVE-2020-8840
漏洞描述:FasterXML Jackson是美国FasterXML公司的一款适用于Java的数据处理工具。jackson-databind是其中的一个具有数据绑定功能的组件。FasterXML jackson-databind 2.0.0版本至2.9.10.2版本中存在代码问题漏洞,该漏洞源于程序缺少xbean-reflect/JNDI黑名单类。攻击者可利用该漏洞执行代码。
国家漏洞库信息:https://www.cnvd.org.cn/flaw/show/CNVD-2020-13183
影响范围:[2.8.0, 2.8.11.5)
最小修复版本:2.8.11.5
缺陷组件引入路径:cn.jackbin:[email protected]>io.jsonwebtoken:[email protected]>com.fasterxml.jackson.core:[email protected]

另外还有61个漏洞,详细报告:https://mofeisec.com/jr?p=i49070

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.