常见的数据访问的写法大概有以下几种: Native SQL JPQL Criteria API Spring Data JPA 其他框架(jooq、MyBatis等) Native SQL Native SQL 算是最简单,也最直观的使用方法了。EntityManger是JSR标准里面提供的,所以不需要依托任何框架就可以使用。 JPQL JPQL跟Native SQL相比,其实也是大同小异。只是把select部分省略了。 Criteria API Criteria API 其实功能很强大,但是就是写起来太复杂。理解起来也比较费劲。在项目中实际使用的其实很少。 Spring Data
Author: tony56
前两天面试一个remote职位,一个技术型的面试官,问的特别细致。还记得其中一个是关于Github action的安全措施的。这个考官也十分新奇,问的都很抽象。他就问我在Github action中,都采用了什么样的安全措施。我当时也是有点蒙,细节部分当时确实不是很清楚,直接说了句把重要信息都存在了Parameter Store来敷衍了过去。所以也是为了给自己补补课,打算重新再认真总结下WEB系统常见的安全措施。 WEB安全,主要分为两个大块。一个是Application层面,一个是Network层面。Network的话,我自己也还不是特别熟悉,这次先主要总结下Application层面常见的应对措施。 账号安全 CORS Cross Site Scripting SQL Injection ClickJacking POST、GET等Request Method的正确使用 系统信息的加密,hash化 账号安全 主要包含账号注册,login,logout相关部分的处理。账号注册方面:・要注意不能使用太简单的密码,密码要经过加密处理・为了避免恶意注册,要添加2段认证,比如通过email注册login:・页面里的auto complete最好关闭・如果使用java的session管理功能的话,login前后的JSESSIONID务必要刷新・为了防止暴力破解,要加入login尝试次数限制的机制logout:・logout不只是页面的迁移,之前的认证key也需要进行invalidate处理 CORS 使用API时有时会需要跨域,最好通过ALB的设置解决,商业环境ajax的跨域设置最好要关闭。Spring的话可以设置某些指定环境才打开CORS。 Cross Site Scripting 通过往数据库里写入script,然后在画面显示的时候去执行这些script。以用来窃取用户本地的信息。
Github action:主要用来做CI/CD整体的控制,包括何时build、何时test、何时deploy到相对应环境中去 ECS:用来用来管理docker image 的repository,以及自动发布 解读下上面这段代码。1. 开头的 on 部分这里是指定GitHub action的trigger,可以是push,可以是merge,也可以是publish。 2. Maven Build在GitHub的虚拟环境中执行build的相关指令。 3. Configure AWS Credentials设置AWS的访问密钥。因为yml文件是需要进行版本控制的,为了更加安全起,就将密钥信息写在了GitHub的Secrets里面,这样就避免了在代码里的明文。 4. Deploy docker image这步是将build完了jar文件上传到ECR中,发布在ECS上面的,其实就是一个个的image。 5. Render Amazon ECS
2020年的NISA还有一定的额度,然后最近Softbank的股票比较低迷。之前肺炎严重的时候,全部股票都在跌,就只有通信股相对稳定。尤其是NTT,当时更是创了历史新高。所以就想着在通信股里再选一选,看入手那个比较好一些。然后,我在YouTube上找了一些分析通信股的视频,大部分都看好KDDI,先简单总结下大家的思路,然后再说下自己的。说KDDI比较稳定的,大概可以看上面的这张图就可以。通信三社里,NTT这次营收额减少了,而且并不是因为投资5G之类的,更多的原因是面向普通用户的plan的营业没做好,然后KDDI跟软银的话,相对稳中有升。売上和利益的话,KDDI表现最好,甚至超过了NTT。分红方面,KDDI跟NTT差不多。虽然Softbank利率最高,但是他的配当性向(从利润中拿出来用来分红的钱的比例)相对较高,市场分析这个情况还是不太健康,或者这种高分红的情况不能维持长久。还有就是自己資本率、KDDI虽然比不过NTT,但是比Softbank做的好一些。Softbank虽然ROE高一些,但是自己資本率太低,导致ROE不太有参考性。所以结论大概可以这样总结为:NTT最近营收不太好,接下来仍旧可能会被Softbank跟KDDI抢夺市场,前景不太明朗。Softbank的话,债务稍微有些问题,营收或许看上去不错,但是应对危机的能力较弱。KDDI,5G方面已经进行了跟NTT一样足够规模的投资,营收方面表现也不错,债务处理也很好,稳定中又有发展前景。所以,如果从三家中选择的话,还是KDDI相对好一些。 然后下面说下我自己的看法。我个人其实是更看好Softbank的。原因大概有这么几点:1. Softbank的财报本身其实还是不错的。前景也比较不错。尤其是跟其他两家相比,Softbank的营收里还包含了Yahoo,这部分的增长率是比通信部分更高一些的。孙正义玩转日本国内的市场其实已经驾轻就熟,一旦出现机会,能马上迅速作出决断,抢占市场。2018年成立的Paypay就是一个很好的例子。仅仅两年时间,已经做到头号品牌了。加上去年跟LINE合并,还是对他比较有信心的。5G投资方面,软银虽然较弱一些,但是晚一些时间,回报比未必会差很多。也不能仅仅根据投资金额去判断好坏。2. 孙正义这次跌了一个大跟头,Uber跟Wework估值下降,上市不成功等等,导致营收减少1个兆。关于这件事,可能有些太过于主观的判断。我觉得,对于62岁的他来说,这未必是一件好事。通过变卖20%左右的资产,算是把现金流跟债务问题解决了。公司尚没有到生死存亡的时刻。孙正义是个聪明人,以后他或许还会跌跟头,但是我觉得10年以内,他再次作出成绩之前,应该不会再同样的地方再跌跟头了吧。所以就是我个人对这个经营者比较有信心,觉得他能把Softbank经营好。3.Softbank的股价当前偏低。从利回り和历史股价就可以看出来。所以如果打算长期持有的话,现在算是个好时机。 当然,KDDI也是不错的一支,但是感觉当前股价稍高,等过段时间稳一下再入手吧。同样,NTT也是,因为营收减少,预测股价还会跌。将来的趋势还不太明朗。
下次预感到危机要来的时候,要不要止损? 如何判断是经济不景气,还是泡沫? 上周的跌幅又是历史级别的,之前一直认为长期投资,不要去考虑这些欺负什么的,只要股票可以带来分红就OK了。而且,如果挣钱了就卖掉,套现出来,钱又不能生钱,不还是要再进股市。但是,这两天突然感觉自己是不是忘记考虑了一点就是,当你对一只股票的中短期不太看好,然后当时股票又有capital gain的时候,是不是应该考虑卖掉,持有一段时间的现金,等它跌回去以后,再考虑重新购入呢?比如「インヴィンシブル」,1月底的时候其实已经看到疫情对inbound事业,对旅游业的影响了,但是当时并没有抛售,如果当时能看清楚中短期的影响,应该就能作出更加正确的选择了。抛售了股票,诚然会少拿部分分红,但是,比起股价下跌10%以上的风险,尤其还在赚钱的情况下,先把capital gain拿到手以后,静观一段时间的市场变化在做决策才更加明智一些。所以,下次务必要尝试下提前止损的操作。 https://www.nli-research.co.jp/report/detail/id=64017?site=nli
Design(システムにとって適切な設計か?) Functionality(作者が意図したとおりに振る舞うか?) Complexity(できるだけシンプルになっているか?) Tests(適切な自動テストが備わっているか?) Naming(変数やクラス、メソッドに明確な名前が付けられているか?) Comments(コメントは明確で分かりやすいか?) Style(コードはスタイルガイドに従っているか?) Documentation(関連するドキュメントは更新されているか?) https://google.github.io/eng-practices/review/reviewer/
记得去年此时,CI/CD还是相当的火。SRE工程师的招聘职位也很多。但是不得不感叹技术发展之迅速。到今年,CI/CD已经成了必备功能,很少再听到专门拿出来说事了。 最近在拿springboot做一个小项目,部署到ec2上面。刚好客户那边对CI/CD也有需求,于是就尝试了下codebuild,codedeploy跟codepipeline的组合。 网上关于这方面的介绍已经很多了,我只把自己尝试过程中踩过的一些坑发出来作为分享。 Codebuild 我的springboot项目是拿maven做管理的,所以其实codebuild只是帮你执行了以下mvn install的命令而已。(这里要吐槽以下codebuild不够智能的地方:local几秒钟build完成的东西,在codebuild上,每次都要重新下载所有依存的jar包,每次都要多花去5-6分钟)只是唯一要注意一点的地方,为了deploy顺利进行,需要把appspec.yml跟jar包传递给codedeploy。 version: 0.2 phases: install: runtime-versions: java: corretto8 build: commands: – mvn install artifacts: files: – target/cms-0.0.1.jar – appspec.yml –
之前为了解决github跟slack用户相关联的问题,拿hubot在heroku上面部署了一个小程序,但是偶尔会出现程序虽然在运行,但是slack通知不成功的现象。 这些往往出现在程序运行一两个小时以后,重新启动heroku的dyno可以暂时消除问题,但依旧无法解决问题。 后来猜测,是不是长时间不调用webhook,或者不使用hubot,就会导致程序挂起,于是,在heroku的addon里,安装了一个Heroku Scheduler、然后添加了以下命令,尝试10分钟health check一次。 $ curl -X ‘POST’ -H ‘X-Github-Event:health_check’ https://xxx.herokuapp.com/webhook 但是很遗憾,过一段时间后,slack依旧通知不成功。 后来就考虑能不能定时重启dyno,这样总可以了吧。 在网上找了一些hroku重启的方法,大部分都是 heroku restart 的方法。但是这是安装了heroku的cli的前提下,我们部署到的heroku服务器上,其实是没有安装cli的。后来,在stackoverflow上面,看到其实heroku有提供api,于是采用了以下方法,定时重启dyno,算是暂时解决问题了。 $ curl -n -X DELETE https://api.heroku.com/apps/xx/dynos -H “Content-Type:
最近工作中碰到系统故障,分析log文件进行原因调查时,又用到了各种文件处理的命令行,尤其是awk命令,深感它的便利性。虽说这些命令的用法去网上一查就会出来一大堆,但是,真正碰到问题时,能够信手拈来的话,还是能极大的提高效率的。以下简单的总结了下这次的示例,算作是自己的学习笔记,以后有时间回顾一下也有助于理解和记忆。 ・all_salary文件(公司全员的工资表) (姓名,工资) AA,1001 AB,2001 AC,3005 BB,2043 ・it_dept_list文件(IT部门的员工表) (姓名) AA AC ・目的: 分别计算出IT部门和IT部门以外员工的平均工资。 当然,如果把这些数据插入到数据库里,一个select语句就可以解决问题。不过这次是为了练习linux命令的使用方法,所有数据都是以csv文件形式进行处理为前提。 各命令行的执行流程: ①将部门员工表于总表进行结合,抽出部门员工的工资一览 join -j 1 all_salary it_dept_list > it_dept_salary ※-t ‘,’可以指定分隔符 ・it_dept_salary
刚毕业找到工作的新人们,满怀期望的迈进社会这所学校的大门。他们勤奋努力工作,每个人拿到薪水后脸上都洋溢着幸福的表情,然后每每到年末,看着自己「源泉征收票」上的年收金额一直在增长,觉得这一整年是那么的美好。但是,其实大多数人都没有意识到,随着年收的增长,每年纳税的金额(住民税,所得税)也在增加。可能很多人已经注意到了,但是觉得自己无能为力,又不能改变日本的征税制度,所以就放弃思考了。其实呢,减少纳税的方法有很多,下面几种制度如果能够合理利用的话,0税收说不定也不只是梦想喔。 1.抚养补助 如果你有孩子或者妻子全勤在家,他们的生活都依赖你的收入,你跟妻子和孩子之间就是抚养和被抚养的关系。这种情况下,为了减轻抚养人的负担,可以申请政府提供的抚养补助。只不过这个补助不是多给钱,而是通过减少抚养人的税收(住民税和所得税)来执行的。具体的计算方法比较复杂,抚养人的年收多少决定减税金额的多少。年收1000万以下的话,一个抚养人大概能减税2万到10万左右不等。 外国人的抚养人在海外的情况下,2016年之前de抚养补助申请都是自由申报,而且政府不会去审核,2016年以后稍微变得严格了一点,需要你提供跟抚养人的关系证明+抚养人的护照信息+汇款凭证。不过想一想减税的那些钱,麻烦一点也是值得的。 风险指数:☆☆☆☆☆ 推荐指数:★★★★☆ 2.生命保险 购买保险也会减少你的纳税金额,养老保险和储蓄保险等也在减税范围内。不过减税金额没有抚养补助那么高,大概几千到1万之间不等。不过有总比没有好,而且买储蓄保险的话,其实就相当于你存一个定期,最少可以每个月只交几千日元,然后10年以后这些钱还可以全额返回。感觉比放到银行里好多了。 风险指数:★☆☆☆☆ 推荐指数:★★☆☆☆ 3.401K 年轻人可能对自己退休以后的生活还没有考虑特别多。401K是一种特殊的退休金缴纳方式。具体的运作方式不在这里解释了,只说它的好处,就是交的这部分钱可以减少你的税收,当时坏处就是这些钱只有你退休以后才能取出来。减税的金额也是根据你交钱的多少而定,大概几万到十几万之间不等。 风险指数:☆☆☆☆☆ 推荐指数:★★☆☆☆ 4.持ち株会 这个可能跟纳税没有太大关系,作为公司福利的一种介绍一下。如果你所在的公司是上市公司,而且你打算在那家公司长久待下去的话,那么一定不要错过这个机会。基本上所有的上市公司多会面向自己内部员工实行「持ち株会」的政策,你拿薪水花钱买自己公司的股票,公司会给你一定数量的补贴,大概是你投入金额的2%-10%左右,比如说你们公司的股价是1000日元/股,你每个月拿10000日元买股票,公司给你补助10%,那么其实你每个月是得到了10000*1.1/1000=11股的股票。这比你在股市里买股票当然要划算的多。但是,「持ち株会」也是有缺点的,首先当然是股市有风险,其次就是为了避免内幕交易,你每个月只能在固定的日子买股票,而且有在公司结算期间不能调整投资金额等种种限制。虽然有诸多缺点,不过如果你是从中长期的投资考虑的话,还是比较推荐的。 风险指数:★★☆☆☆ 推荐指数:★★★☆☆ 5.財型貯蓄 有些公司会提供的一个福利制度。大概分为三种类型,「养老存款」、「住房存款」、「普通存款」。利用公司的存款制度的好处主要有两个:一是公司会根据你存款的金额给予一定的补贴,大概在你存款金额的3%左右,不过这个补贴一般都有上限(大概不到1万日元)。另外一个好处是,养老存款和住房存款里获得的利息不用缴税(普通存款除外)。所以利用这个福利制度会比你在外面普通银行的定期存款划算很多。 风险指数:☆☆☆☆☆ 推荐指数:★★★★★ 6.ふるさと納税 这两年超级火的「ふるさと納税」,简单说就是拿税金买各种土特产,具体细节可以谷歌参考各种介绍网站。当然这个制度不能减税,但是可以让你拿较少的钱买超值的土特产。如果你是一个吃货的话,一定不要错过。 风险指数:☆☆☆☆☆