0%

基本记录,没有系统性整理,只是作为一个重温知识点用,不具有阅读参考价值。

注解(Inherited)

Spring注解方式减少了配置文件内容,更加便于管理。

MVC模块注解

@Controller :表明该类会作为与前端作交互的控制层组件,通过服务接口定义的提供访问应用程序的一种行为,解释用户的输入,将其转换成一个模型然后将试图呈献给用户。
@RequestMapping : 这个注解用于将url映射到整个处理类或者特定的处理请求的方法。
@RequestParam :将请求的参数绑定到方法中的参数上,有required参数,默认情况下,required=true。
@RequestParam :将请求的参数绑定到方法中的参数上,有required参数,默认情况下,required=true。
@RequestBody : @RequestBody是指方法参数应该被绑定到HTTP请求Body上。
@RestController :控制器实现了REST的API,只为服务于JSON,XML或其它自定义的类型内容,@RestController用来创建REST类型的控制器,与@Controller类型。

组件类注解

@Component :表示一个带注释的类是一个“组件”,成为Spring管理的Bean。当使用基于注解的配置和类路径扫描时,这些类被视为自动检测的候选对象。同时@Component还是一个元注解。
@ComponentScan:自动扫描指定包下所有使用@Service,@Component,@Controller,@Repository的类并注册。
@Repository:标注一个DAO组件类。
@Service:标注一个业务逻辑组件类。
@Controller:标注一个控制器组件类。
@Component 可以代替 @Repository、@Service、@Controller,因为这三个注解是被 @Component 标注的。

装配 Bean 时常用注解

@Autowired:属于Spring 的org.springframework.beans.factory.annotation包下,可用于为类的属性、构造器、方法进行注值。
@Resource:不属于spring的注解,而是来自于JSR-250位于java.annotation包下,使用该annotation为目标bean指定协作者Bean。
@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作。

Configuration and @Bean

使用@Configuration 来注解类表示类可以被 Spring 的 IoC 容器所使用,作为 bean 定义的资源。

IOC

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
https://zh.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%AC

Spring 通过 calss 直接获取 Bean

1
2
3
4
SpringApplication app = new SpringApplication(THTTPMain.class);
ApplicationContext ctx = app.run(args);
ReportManager manager = ctx.getBean(ReportManager.class);
manager.run();

Spring 标签管理

https://www.cnblogs.com/wuchanming/p/5426746.html

AOP 面向切面编程

会计基本假设

包括(会计主体、持续经营、会计分期和货币计量)

会计主体:规范空间范围,独立核算的特定单位或组织。
会计主体于法律主体并非对等的概念。法律主体可以作为会计主体,但会计主体不一定是法律主体。

持续经营:持续经营保持了会计信息处理的一致性和稳定性。

会计分期:将一个会计主体持续的生产经营活动划分为若干相等的会计期间,以便结算帐目和编制财务会计报告。

货币计量:指会计主体在会计确认、计量和报告时采用货币作为统一的计量单位。是衡量商品价值的共同尺度。

四个基本假设相互依存、相互补充关系。

会计基础

会计基础:确定收入和费用的归属期。按照其以应收应付还是实收实付作为标准。

权责发生制(应收应付制):以应收应付作为标准来确定本期收入和费用以计算本期盈亏的会计处理基础。(会计记账以此为主)

收付实现制:以款项的实际收付来确认本期收入和费用,计算本期盈亏的一种会计处理基础。(行政部门使用)

会计科目的设置不完全相同:
权责发生制:有必要设置一些待摊和预提账户。
收付实现制:不需要设置待摊和预提账户。

权责发生制比收付实现制计算的盈亏更准确,相对也更复杂。

会计要素与会计科目

会计要素:对会计对象的基本分类,会计核算对象的具体化。是设置会计科目的依据。
一类反应财务状况的要素,资产负债表的要素,包括资产、负债和所有者权益。
二类反应经营成果要素,包括收入、费用和利润。
资产:过去的交易或事项形成,企业拥有或控制,预期带来经济利益。(货币资金、交易型金融资产、应收及预付款项、存货、长期股权投资、固定资产、无形资产等)
负债:企业承担的现时义务,预期导致经济利益流出,过去交易或事项形成。(短期借款、应付票据、应付账款、预收账款、应交税费、应付职工薪酬、长期借款、应付债券、长期应付款)
所有者权益(股东权益):资产 - 负债 = 所有者权益。清算、减资、分派现金股利时不需要偿还,企业清算时享有剩余权益,参与利润分配。源于资产和负债的确认。

收入:日常活动中形成,与投入资本无关的经济利益总流入,导致所有者权益增加,本企业经济利益流入。

费用:日常活动中形成,导致所有者权益减少,与投入资本无关的经济利益总流出。

利润:一定会计期间的经营成果。利润=收入-费用+利得-损失。

会计要素的计量:

会计计量:为符合会计要素条件的登记入账,确定会计要素的金额。

历史成本:购置资产时的现金或其它等价物。用于资产或负债的过去价值的计量,不随时间折旧和市场价格变动影响。

重置成本:现实成本,按当前市场条件下,重新获取同样资产所需支付的现金或现金等价物。主要用于固定资产盘盈的计量。

可变现净值:资产预计售价 - 进一步加工成本 - 销售所需预计售金、费用后的净值。

现值:对未来现金流量以折旧率折现后的价值。

公允价值:在公平交易中,交易双方自愿进行资产交换或债务清偿的金额。

会计科目:
会计科目是对会计要素进行分类核算的项目。
意义:

  1. 复式记账的基础
  2. 编制记账凭证的基础
  3. 为成本计算与财产清查提供了前提条件
  4. 为编制财务报表提供了方便

会计等式与复式记账

会计恒等式:资产 + 费用 = 负债 + 所有者权益 + 收入

意义:是设置会计科目和账户,进行复式记账和编制资产负债表的理论依据。

复式记账法
对每一笔经济业务,需要在两个或两个以上项目联系账户中进行记录的方法。

  1. 需要完整的账户体系。
  2. 对每一笔经济业务都进行反映和记录
  3. 对每一笔经济业务都要反映设计的所有方面
  4. 对一定时期内的账户记录能进行综合试算平衡

借贷记账法是复式记账发的一种。以借、贷为记账符号,建立在会计恒等式的基础之上。通过“T”型图,左借右贷记录。

借贷记账法下各类会计科目的基本结构

记账规则:
有借必有贷 —— 账户登记方向
借贷必相等 —— 账户登记金额

记录步骤:

  1. 分析每一笔经济业务发证所涉及的账户名称,并判断账户性质
  2. 判断经济业务发生所引起的资金数量是增加还是减少
  3. 根据账户的结构确定记入账户的方向。

账户对应关系:在两个或两个以上账户之间形成的应借应贷的相互对照关系。作用是了解业务的来龙去脉,检查经济业务处理是否合理。

会计分录
是对某项经济业务事项表明其应借应贷账户及其金额的一种记录,简称分录。
格式:会计三要素,记账方向、对应账户、金额。
种类:简单会计分录:一借一贷的会计分录;复合会计分录:一借多贷或一贷多借的会计分录。

如何编制:

  1. 分析经济业务设计的要素
  2. 确定涉及哪些账户,是增加还是减少
  3. 确定应计入哪个账户的借方,哪个账户的贷方
  4. 确定应借应贷账户是否正确,借贷方金额是否相等

平衡方法——编制“总分类账户额试算平衡表”

平行登记:对所发生的每项经济业务事项都要以会计凭证为依据,一方面记入有关总分类账户,另一方面计入有关总分类账户所属明细分类账户的方法。要点:依据相同,借贷方向相同,会计期间相同,金额相等。

这篇文章是根据学习知乎 Live 提升专注力的四个方法 总结的学习笔记。

大纲

先放一个大纲,然后写出学习后会总结的点。

主要内容

主要分四个大块:

  1. 像设计游戏一样设计任务(目标、规则、障碍)

    • 我们要达成一个任务或者目标,首先将任务拆分成一个个小的、明确的小任务,每一个环节不用太难,也不用太简单,按照自己的专注力上限设计任务。
    • 每一个小环节可以设置一些障碍,来提升成就感,通过不断的成就感的提升驱使完成目标,在成就感与挫败感之间寻找一个平衡。
    • 这样可以在不断的达成目标时提升自己的专注力上限。
  2. 创造使用推理和类比的机会

    • 专注力应该是一种思维能力,而不仅仅是一种强制力。需要的是脑力的专注力,而不是身体的专注力。提升这些的方法是推理和类比。
    • 推理:通过一个点,去不断深挖,了解其本质。(推理解决 A ——> 什么是 A ?怎么产生的 A ? ——> 产生 A 的是什么?[是否有经验性的证据?] ——> 对这件事情我的理解是什么? ——> 我是否可以更深入的了解?)
    • 类比:相同事物的相关性思考。思考一个事物可以通过相关性的联系来帮助你理解。
    • 一件事情的训练需要可以的练习。
    • 创造和使用推理和类比的机会。
      • 费曼学习法则:如何把这个东西通俗易懂的讲解给别人?
      • 笔记整理和回顾
      • 输出:和别人分享你的经验、知识和见解(例如我写了这篇文章)
      • 反驳:养成反驳自己的习惯,站在相反的观点思考问题,左右互搏。通过自我辩论的方式。
  3. 学习之前寻找『困惑感』

    • 如何快速进入学习状态?积累困惑感。困惑感是你学习一个东西的源动力,当你找到足够多的困惑时,你学习一个东西的时候会更加专注。
    • 当你不知道自己有什么困惑的时候,需要先创造困惑感。
    • 根据主题寻找知识,更能提高你的兴趣。
      • 当你有问题的时候决定你如何看书,而不是被书牵着鼻子走。
    • 读一本书之前,先评估一本书是否适合你。
      • 首选根据作者选书。如果你觉得一本书写的很好,那么不妨看看这个作者的其它书。
      • 其次是看书的目录和简介,可以判断一本书的难易程度。
      • 看豆瓣和亚马逊的评分和评论。看其中的差评可以了解一本书的不足。
      • 通过以上三点来了解一本书是否适合你🌹时间去读。
  4. 抗干扰能力的养成 —— 学会和大脑相处

    • 做任何一件事情的时候不要过早退出循环。
    • 不要太习惯于失败的模式,要思考如何才能去成功。
    • 情绪控制
    • 选择控制
      • 不要给自己太多的选择。
    • 信息控制
    • 上面有部分的音频不能播放,不知道什么原因,👂不了

最后再贴一张图,是作者 PPT 中的一部分,觉得总结的很好,贴出来分享。

最后

这里提到的四块总结都是很实用的点,里面很多地方博主也是深有体会的。主要差在了刻意练习上面,不能很好的和自己的大脑相处,就像《象与骑象人》中描述的,骑象人无法很好的驾驭🐘,是因为不够了解🐘,缺乏足够的练习。

计划书单废弃,剩下的书并没有制定计划读下去,而是被工作需要左右了学习方向。

update at 2019-05-22


首先是书名,后面跟随的时间是读完的时间。

情商管理

《秘密-朗达.拜恩》

《情商套装6册-丹尼尔.戈尔曼》

《6秒钟改变你的情商-乔舒瓦弗理》

心理学

《社会心理学》

《象与骑象人》 2018.02

《最熟悉的陌生人》

《心理学与生活》

《裸猿三部曲》

软件工程

《代码大全》

《微服务设计》 2017.08

《程序员的自我修养:链接、装载与库》

散文随笔

《走到人生边上:自问自答》

语言文学

《蔡康永的说话之道(套装2册)》

经济管理

《金字塔原理1+2》

其它

《数学之美》 2016.xx

《天才在左疯子在右》 2015.xx

《最好的告别:关于衰老与死亡,你必须知道的常识》

《黄金时代-王小波》

《一九八四-乔治·奥威尔》

  1. 读书

    • 《见识-吴军》
    • 《领域驱动设计:软件核心复杂性应对之道》
    • Java相关
  2. 文章

    • Java相关的基础技术总结
    • Python各种技巧的技术使用(middleware、元类、with)
    • 《象与骑象人》读书笔记

以上

三月并没有制定和学习计划,只是随心更新了几篇文章。

  • 基金选购学习笔记
  • 关于java的最初了解
  • git场景化操作

基金适合什么样的人?

  • 没有太多时间关注市场的人
  • 对某种理财产品不了解又比较感兴趣
  • 有闲钱 3-5 年用不到,不适合短线投资

买基金要考虑什么?

  • 能不能坚持长期持有基金?
  • 能不能承担风险?因为有可能亏损。
  • 买基金的钱会不会影响我的生活?
  • 基金的风格和种类,是投资的哪种类型的资产?

基金的类型

高中低风险综合配置,可以有侧重。

  • 货币基金: 以余额宝为举例,风险低,收益不高且稳定。基金规模占总体的一半以上。
  • 债券基金: 纯债基金全部用来买债券,分为短债基金(一年左右,收益和风险略高于余额宝);长债基金(3-5年长期债券,风险和收益比短债高一些)。还有一种拿一部分用来买股票,分为一级债基(主要是打新股)和二级债基(可以买股票)。
  • 可转债基金: …
  • 混合基金: 主动型基金的主要品种,配置灵活,可以买股票、债券、大宗商品、货币等。
  • 对冲基金和量化基金: 震荡市场下严格按照模型去调整。
  • 指数基金: 不太依赖基金经理,受整体市场平均值影响。跟踪某一类股票指数的涨跌走,主要是做好模型,追求平均收益。(国内指数基金种类比较少)(若于美国和香港市场)
  • 股票型基金: 基金经理按照股票市场的形式去调整。每个基金和基金经理的风格和他们团队的风格不同而不同。
  • 增强指数基金: …
  • 主动型基金: 依赖基金经理团队的能力。需要挑好基金经理,基金团队,可获得超平均收益。
  • 分级基金: 门槛比较高,风险比价高。
  • QD基金: 投资海外。

购买基金的渠道

  • 基金公司官网(专卖店)(产品比较单一)
  • 基金公司运营的公众号、APP
  • 证券公司炒股软件(适合场内基金)
  • 第三方基金平台(基金超市)(赎回时间比较短一些)
  • 银行

推荐使用第三方平台,基金类型丰富,介绍详细,方便对比。

蚂蚁聚宝、天天基金网、好买基金网(看数据)

回撤率?

主动型基金看什么?

成立时间比较久的(稳步上升)
基金以往业绩(长期业绩、平均收益)
基金经理的水平(以往业绩、回报率、擅长强项、基金投资风格)
回撤率
基金评级(基金购买页面标星)(指数基金没有评级)
夏普(冒一个单位风险获得的收益越大基金越好)

不要过于纠结以往业绩

基金转换功能

买入一个基金,可以直接在同基金公司转换为另一个基金公司,转换过程只收申购费的差价,不需要买入卖出的申购费。

想节省申购费只能用同一个基金公司的基金互转,基金官网支持的转换种类比较多,第三方平台支持的比较少。

利用基金公司官网货基零元购,再去转换到其它基金,有的在转换中不需要再交申购费。不支持 QD 基金。

QD 基金申购费比较贵,申购和赎回都比国内基金高。

基金公司主要靠管理费来赚钱。

公募基金关注基金规模(更稳健),私募基金主要关注收益(更激进)。

场内基金是可以通过炒股软件来买的。带 ETF、LOF 后缀的是场内基金,申购费比较低。场内基金比较灵活,可以当天买当天卖。手续费一般都在 0.02% ~ 0.03%,适合短线投资。

定投基本原则

逢低买入,逢高卖出,越跌越买,越涨越卖,定期不定额,止盈不止损。(反人性)

冲正

冲正是为系统认为可能交易失败时采取的补救手法。即一笔交易在终端已经置为成功标志,但是发送到主机的账务交易包没有得到响应,即终端交易超时,所以不确定该笔交易是否在主机端也成功完成,为了确保用户的利益,终端重新向主机发送请求,请求取消该笔交易的流水,如果主机端已经交易成功,则回滚交易,否则不处理,然后将处理结果返回给终端。

小明(是一个虚构人物)作为一名开发工程师(认真脸),平时经常用 Git 提交代码,觉得有些操作姿势还是很不舒服的,于是专门研究了一下各种场景下如果操作更优雅。

简短的提供思路式的讲解。

git merge 场景

场景一:分支 merge

有时候开发一个稍微大一些的需求持续个几天,搞一个分支去提交吧,于是有了 git checkout -b mywork,在 mywork 分支 commit C4、C5,然后主分支被 commit C3,最后我要将分支 merge 到之分支之上 git merge mywork

流程示意图如上面,使用 merge 的好处就是多人维护一个项目仓库的时候,要任何时候保证主分支代码是可用的,任何人不应该直接在 master 上提交代码。

场景二:merge request

fork \ merge request

场景三:rebase

开发了很久,各种fix提交记录,终于测通过了,要合到主分支了。发现这么多无效信息的提交记录干扰我们阅读,这时可以通过rebase将你的多次提交记录压缩成一个commit信息,然后再合到主分支上。

压缩 commit
git log 选择你提交的前一个版本

git rebase -i e9a13ba5adcc154d5717b107d55f416e61c03958

然后对其中的各项 commit 选择 pick / f / drop

遇到问题后处理,然后 git rebase --continue 直到合并完成

rebase到最新提交前

把所有分支的提交记录都弄下来 git fetch --all

然后 git rebase base/master

还是遇到问题后处理,然后 git rebase --continue 直到合并完成

最后 git push -f origin master

还有处理过程中不想处理了可以 git rebase --abort

blame

咨询(检举)谁写的代码为什么这么设计(写了一堆坑)。

git blame __init__.py 可以查看每行代码提交记录

grep

git grep -n tensorflow 可以根据关键字搜索代码

7.5 Git 工具 - 搜索

revert

git revert C2 revert 是将你的一次提交代码反向重新创建一个新的记录

patch

patch 的做法是将我们多次的提交diff成一个问题件,然后在 apply 作为一个新的 commit 提交。对于上面 rebase 那种多次提交并带着merge记录的很难通过rebase操作,patch会很方便的解决。

https://www.cnblogs.com/y041039/articles/2411600.html

hooks

git操作的一些钩子,可以帮你做一些检查。

https://git-scm.com/book/zh/v1/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git%E6%8C%82%E9%92%A9

stash

临时保存操作内容

保存记录 git stash
提取记录 git stash pop

https://git-scm.com/book/zh/v1/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git%E6%8C%82%E9%92%A9

cherry-pick

对已经提交的数据再次提交使用

  1. 找到一个 commit,记录 log 值
  2. 新建一个分支 git checkout -b newbranch
  3. 将一个commit 复制到新分支提交一个新 commit。git cherry-pick 38361a55138140827b31b72f8bbfd88b3705d77a

零散整理,复习知识点。

HashMap 实现原理

Java 8 中,HashMap 是由哈希数组+链表+红黑树组成的,也就是哈希数组、哈希表、链表散列,意思就是数组不是紧密排列的。每个数组元素对应一种不同的hash值,但是不同的hash值可能会映射到数组的同一下标(即哈希冲突)。因为

1
2
n = tab.length
tab[i = (n - 1) & hash]

put(K key,V value)方法:添加键值对key-value,如果存在键key,则value覆盖oldValue,并返回oldValue。先通过键key,利用哈希函数hashCode()等操作,获取hash值,然后根据hash值得到映射到数组的下标,再判断key键是不是存在此下标中。
两个对象的hashCode相同,equals不一定相同;两个对象equals相同,hashCode一定相同。所以,重写equals()方法,一定要重写hashCode()方法。

get(Object key)方法:返回键key对应的value值,如果不存在键key,返回null。
以上两个方法都是找key,然后就直接获得附加的value值了。

https://blog.csdn.net/laoxingyao/article/details/81252977

Java clone

https://blog.csdn.net/zhangjg_blog/article/details/18369201

抽象类\抽象方法

https://blog.csdn.net/qq_33567641/article/details/80986235

Optional 使用

1
2
3
4
5
Optional.ofNullable(entities)
.orElse(Collections.emptyList())
.stream()
.map(this::copyValueFromEntity2Dto)
.collect(Collectors.toList());

##IntStream迭代索引

1
2
3
Map<String, Boolean> retMap = IntStream.range(0, skuList.size())
.mapToObj(i -> Pair.of(skuList.get(i).getSkuId(), purchased.get(i)))
.collect(Collectors.toMap(Pair::getLeft, Pair::getRight));

POJO

POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为VO(value -object)或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

函数接口

1
2
3
4
5
import java.util.function.*;
BiConsumer<T, U>
Function<T, R>
BiFunctionM<T, R, U>
@FunctionalInterface

https://www.ibm.com/developerworks/cn/java/j-java8idioms7/index.html

Supplier 接收一个函数,返回值类型为 T

1
2
3
4
public void abc(Supplier<T> fun){
fun.get();
}
abc(Class1::func1);

##Jackson - Annotations

@JsonIgnore 注解用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。这个注解只能用在POJO存在的字段要忽略的情况,不能满足现在需要的情况。
@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。
@JsonInclude 该注解也是放在类名上面,作用是忽略类中字段值为null的当接收的时候。

Mock\Stub

Mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取比较复杂的对象,用一个虚拟的对象来创建以便测试的测试方法。
Mock 与 Stub 的区别?
https://yanbin.blog/mockito-how-to-mock-void-method/#more-7748

EventBus

EventBus 是Google.Guava提供的消息发布-订阅类库,它实现了观察者设计模式,消息通知负责人通过EventBus去注册/注销观察者,最后由消息通知负责人给观察者发布消息。由于EventBus是将消息队列放入到内存中的,listener消费这个消息队列,故系统重启之后,保存或者堆积在队列中的消息丢失。

lombok

@Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法。
@Setter:注解在属性上;为属性提供 setting 方法。
@Getter:注解在属性上;为属性提供 getting 方法。
@Builder:构造一个实例,属性不需要单独 Set。

1
2
3
4
5
6
7
8
9
10
import lombok.Data;
import lombok.Builder;
@Data
@Builder
public class ReportReqDto {
private String id;
private Integer age;
private String name;
}
ReportReqDto.builder().id("1234312312313").age(12).name("test");
1
2
3
4
5
6
7
8
9
10
11
12
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AbelDeliveryRequestDto {
private long memberId;
private String skuId;
private int quantity;
private String extra;
private boolean anonymous;
private Map<String, String> params = new HashMap<>();
}

Maven 配置:

1
2
3
4
5
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>