MYSQL 字段加密方式研究

在涉及到数据库的安全性开发中,基于表和字段的加密一直是一项重要的功能项,实现字段加密可以防止非授权的数据访问造成的敏感信息泄漏。
在Java体系下,MYSQL数据库加密可以根据加解密的位置而区分不同的加密策略。按照架构从下到上可以分为:
数据库层
中间件层
JDBC层
DAO层
业务逻辑层
在数据库层,MYSQL提供了AES_ENCRYPT和AES_DECRYPT两个函数
在中间件层,有很多商用的或者开源的中间件可以提供
JDBC层,目前比较有代表性的是京东开发并开源 Apache ShdingSphere
DAO层,以MyBatis为例,可以使用拦截器进行替换处理。

记一次Mongodb 服务器CPU占用过高的问题排查

某日浏览服务器CPU占用,发现Mongodb的服务器占用CPU达到80%以上。
通过慢查询和当前运行的资源查询,没有找到占用资源过多的查询。
网上爬文也是没有头绪。于是查询Mongodb的日志,发现是日志偏异的警告,并且写日志超时。

2020-11-04T20:26:43.391+0000 W  STORAGE  [FlowControlRefresher] Flow control is engaged and the                   sustainer point is not moving. Please check the health of all secondaries.

这个时候,如果直接以关键字去进行搜索引擎搜索,是查不到任何信息的。根据日志的提示,我们可以知道,问题大概是发生在主从复制上。
于是登录到从服务器查询。服务器架构采用的是replaceSet的架构,主服务器对外提供服务,Secondary服务器用于做数据备份,并没有对外提供服务。

2020-11-06T06:00:28.925+0000 I  CONTROL  [LogicalSessionCacheReap] Failed to reap transaction table: FailedToSatisfyReadPreference: Could not find host matching read preference { mode: "primary" } for set rs1


2020-11-06T06:11:01.675+0000 I  ELECTION [replexec-73] Not starting an election, since we are not electable due to: Not standing for election because I cannot see a majority (mask 0x1)

上述日志,可以说明找不到主库。联想到之前有一次错误的操作过防火墙服务,有可能是此操作导致的找不到主节点。于是重启子节点的Mongodb服务。
重启后,子服务的主从同步正常,主服务器的CPU占用率也下降了。

自动检测tomcat服务的shell脚本

在实际工作中,需要实时的检测Tomcat服务的状态,并且如果在Tomcat停止时,自动的重启Tomcat服务,以方便我们的应用程序不被中断。

实现思路是使用Linux自带的计划任务,启动一个时间间隔为5分钟的检查服务,这个可以放到 /etc/crontab文件中。

*/5 * * * * su - root -c /root/restartTomcat.sh

接下为就是要实现这个.sh文件,我们可以参考下面的模板。基本思路就是通过PS得出当前的系统进程,然后通过文件的路径来确定指定的进程是否已经启动,如果没有启动,则先执行程序停止服务,再执行启动服务。
示例代码如下:

#!/bin/bash

pnum_server=`ps -wef|grep tomcat |grep -v grep |wc -l`

if test $pnum_server -lt 1

then

  /usr/local/tomcat/bin/shutdown.sh

   sleep 2s

  /usr/local/tomcat/bin/startup.sh

fi

如果这样写你可能会遇到一个小插曲,就是提示fi附近有语法错误。这个问题的原因是由于Windows下面的换行符导致。
因此你可以使用vi打开脚本文件,执行:set fileformat=unix,:wq保存即可。

微信开发之分享和获取用户信息

众所周知,微信是当之无愧的No.1,在产品推广和业务路演的过程中,扫一扫成了最为常见的功能。扫一扫就能获取用户的基础信息,然后可以进行投票啊,留言啊之类的功能几乎是网页的必备功能。 微信最常用的就是分享和获取用户信息的功能,这两个接口尽管微信都有详细的文档,网上也有相应的教程,但是过程中还是有一些坑的,在此记录一下。

继续阅读微信开发之分享和获取用户信息

使用Quartz定时器在Java中执行计划任务

在JavaEE系统中,计划任务的执行是一项很普通的工作,需要我们定时执行一些维护和例行的任务。比如定时统计,发送邮件,报表,甚至通知和提醒等。

计划任务的实现有多种方式。比如使用数据库的定时任务(Jobs和Events),服务器的计划任务(Windows的计划作任务,Linux的Crontab系统。

那么Java本身能否实现定时任务呢,当然是可以的,我们可以使用Java.util.Timer 和 Java.util.TimerTask来完成这项工作,但是这种方法在调用上其实是不方便,需要大量的代码。解决这个问题的通行方法是使用Quartz框架。它是一个基于Java的计划任务框架,在定时执行上,可以使用Linxu的CronExperssion,便于使用和维护。

继续阅读使用Quartz定时器在Java中执行计划任务

Reactive Native 在IOS中集成中的踩坑经历

什么是React Native

React-Native 是由Facebook出品的一款可以使用JavaScript来编写原生app的框架,官方说明是:A framework for building native app with React(一个使用React来编写原生app的框架),然而这个React也是由该公司出品的一款可以用来编写用户界面的JS库。二者的出现,以其强大的功能和便捷的使用方式迅速被广大开发者使用,并在各大平台的应用研发中占据了自己的一席之地。

继续阅读Reactive Native 在IOS中集成中的踩坑经历

C#代码中实现两个表(DataTable)的关联查询(JOIN)

之前通常都是使用SQL直接从数据库中取出表1和表2关联查询后的数据,只需要用一个JOIN就可以了,非常方便。近日遇到一种情况,两个表中的数据已经取到代码中,需要在代码中将这两个表关联起来,并得到它们横向拼在一起之后的完整数据。

继续阅读C#代码中实现两个表(DataTable)的关联查询(JOIN)

启示录读后感

4P营销理论相信大家都知道:产品(Product):注重产品功能,要有核心卖点,即包含产品的实体、服务、品牌、包装等;价格(Price):依据不同的市场定位来制定不同的价格策略,指企业出售产品所追求的经济回报;渠道(Place):企业为使其产品进入和达到目标市场,所组织并实施的各种活动,包括途径、环节、场所、仓储和运输等;促销(Promotion):即包含广告、人员推销、营业推广与公共关系等手段。其中产品的重要性毋庸置疑。

每个企业都梦寐以求打造爆款产品,成功产品为什么凤毛麟角?到底什么样的产品才算是好产品呢?如何打造一款让用户欲罢不能的产品?怎样发掘有价值的产品?这些都是我心中的疑问。我决定再次拿起这本书,有目的的去阅读并总结分享。

之前读书有个毛病,特别慢,有时候看着看着就睡着了,有时候被其他的事情打断,看完一个章节就从此搁置了。看了很多简书上的读书达人,一小时快读一本书,我只想说臣妾做不到啊! 后来学习了读书方法实践之后,确实效率高很多。

本书作者:Marty Cagan,作为负责定义和开发产品的高级经理人为多家一流企业工作过,包括惠普、网景、美国在线。曾担任eBay产品管理及产品设计高级副总裁,负责规划全球电子商务网站的产品和服务。亲历了个人电脑、互联网、电子商务的起落沉浮,致力于通过写作、演讲、培训 帮助客户打造富有创意的产品。创办了硅谷产品集团(SVPG),为“财富500强”企业和广大创业型企业提供产品咨询服务,他的客户包括Yahoo!、eBay、TiVo、BBC、PROTRADE Sports……
继续阅读启示录读后感

超级奢侈的码农享受

沉浸式电脑椅,帝王的选择。只要30万。

Emperor系列的一体工作游戏站其实早在CES2009已经展出过,200是它最新的一代。 官网介绍说,这是终极电脑工作站解决方案,具备触摸板,空气过滤系统,电动皮椅,3X27寸显示屏,光疗系统,超猛音频系统。安卓操控。售价只要30万(起),强烈期望土豪晒单,或者值得买众测也行。

一把舒适的椅子陪我们寂寞

一桌在手,天下我有

想象一下码农们在这台桌子上左右开弓的样子,就像是操控人生的上帝有米有,开启多个工作模式,完全不会精分,关爱自己家的码农,送给他一张未来会更加辛勤工作的桌子。