Jason Lee Essay

Only dead fish go with the flow!

Jason Lee Essay

还有不到20天,即将迈入30岁了。子曰“三十而立”,我到底应该立什么呢?

这一年

一事无成

  • 年初想看完100本书,结果完成50%不到。
  • 爬虫写了一部分,其他的维护工作也停了。
  • 公众号想写文章推送,结果看到没有办法自动推送了也停止了。
  • 看电影,看了几部大作后,就又想回去看无脑的商业片。
  • 篮球打了不超过10次,跑步没有超过10次,也不运动了。
  • 体重成功的没有控制住,估计超标了。
  • 技术学习,完成看完而且实践的项目不多。代码一整年没写完多少。

还算可以的事情

  • 南口贷款买了一个房子;
  • 买了一辆车,哈弗H6,第5天就给破相了;
  • 给夫人和儿子办好了户口;
  • 去杭州旅行了三天;
  • 尝试了螃蟹,味道还不错;
  • 做了几道菜,东坡肉失败,水煮牛肉还可以,黄焖羊排还可以。

很与成就感的事情

  • 家里的小王子会走路了,能陪着他一起成长
  • 和老婆一起有苦有泪有笑有甜的一年,能配置她慢慢变老

到底想要什么

夫人常说:不想一天天重复的日子,活得太没劲了。

如果把青蛙丢进滚烫的热水里面,青蛙会迅速的跳出来;如果把青蛙放进温水里面,他会在里面舒服的温水浴;当你对水逐渐加热,你就能得到一只-熟青蛙。
而我,现在就像一只温水里面的青蛙,慢慢的游动着,丝毫没有察觉到危机的来临。
危机在哪儿?危机在与自己的缓慢的进步与修行上面。

修炼什么?

  1. 克制, 任何人对你提出意见的时候,别动怒,多听,听进,听懂,冷静。
  2. 主动, 做事情要积极一点,不懒惰,不拖沓
  3. 从心, 做事情从自己的内心出发,不要犹豫。

众所周知,数据库单表数据量大了以后,为了提高查询响应速度,需要创建索引。那如何判断一个查询是否命中了索引?如果命中了索引而查询效率没有提升的原因又是什么呢?

如何确认索引已建立?

MySql内置的infomation_schema库中存储了整个数据库的静态元信息,通过查询information_shcema.STATISTICS表中的信息可以查找到所有的索引信息,或者直接查看表的DDl语句。

如何确认命中?

阅读全文 »

如何用一句话通俗的解释AOP?

答:在不改变原有代码逻辑的基础上,实现特定的业务逻辑。

概念

什么是切面编程?

AOP,中文译作“面向切面编程”,即通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

术语

  • 通知(Advice):Spring的Aop支持4种类型的Advice:
  1. before advice 在方法执行前执行。
  2. after returning advice 在方法执行后返回一个结果后执行。
  3. after throwing advice 在方法执行过程中抛出异常的时候执行。
  4. Around advice 在方法执行前后和抛出异常时执行,相当于综合了以上三种通知。
  • 连接点(JoinPoint): 连接点是在应用程序中能够插入切面的一个点。
  • 切点(PontCut): 业务逻辑的切入点,某些连接点上面织入逻辑。
  • 切面(Aspect):
  • 引入(Introduction):
  • 织入(Weaving):

Spring对AOP的实现

Spring是如何实现AOP的?

Spring是运用动态代理的方法实现AOP的,基于动态代理的版本__只能支持方法连接点__。这个与其他AOP框架相比略有不足,无法满足字段和构造器的接入点。如果需要方法之外的连接点,那么就引入AspectJ来搞定吧。

Spring的实现了具体形式?

基于注解的

基于XML配置的

一个例子

总结

还原场景

原来有一个多线程代码,目的是同步mysql的数据到elasticsearch,原方案是启动一个线程把mysql数据读取出来,组织成目标数据结构,效率不够理想。新方案想改成生产者消费者模式,一个线程负责读取mysql数据,一个线程负责向elasticsearch发送数据。

改的过程中发现一个问题,具体报错信息是:

1
2
3
4
5
6
7
8
9
10
11
12
org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'caseProvider': Singleton bean creation not allowed while the singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:216)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054)
at cn.infisa.base.holder.SpringContextHolder.getBean(SpringContextHolder.java:33)
at cn.infisa.extracting.service.record.es.runner.Producer.getProvider(Producer.java:82)
at cn.infisa.extracting.service.record.es.runner.Producer.run(Producer.java:52)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

阅读全文 »

利用用户标签数据

标签是一种无层次化结构的、用来描述信息的关键词,它可以用来描述物品的语义。

根据给物品打标签的人的不同,标签应用一般分为两种:一种是让作者或者专
家给物品打标签;另一种是让普通用户给物品打标签,也就是UGC(User Generated Content,用
户生成的内容)的标签应用。

Scott A. Golder 总结了 Delicious 上的标签,将它们分为如下几类。
 表明物品是什么 比如是一只鸟,就会有 “ 鸟”这个词的标签;是豆瓣的首页,就有一个
标签叫“豆瓣”;是乔布斯的首页,就会有个标签叫“乔布斯”。
 表明物品的种类 比如在 Delicious 的书签中,表示一个网页类别的标签包括 article (文章)

blog (博客)
、 book (图书)等。
 表明谁拥有物品 比如很多博客的标签中会包括博客的作者等信息。
 表达用户的观点 比如用户认为网页很有趣,就会打上标签 funny (有趣)
,认为很无聊,
就会打上标签 boring (无聊)

 用户相关的标签 比如 my favorite (我最喜欢的)
、 my comment (我的评论)等。
 用户的任务 比如 to read (即将阅读)
、 job search (找工作)等。

什么是软件架构师?

软件架构师是一个开发角色,不是一个行政级别;是一个循序渐进的过程,不是一蹴而就的;是一个实践的职位,不是一个空谈写文档的职位。

架构师决定了软件的结构和具体的设计、技术选型、架构演化,不单满足业务功能需求,还需要满足各种非业务功能需求,比如:登录和拦截、日志审计、性能等。

架构师应该编码吗?

必须
架构设计是一个实践活动,作为架构师必须不断的做各种实验。通过编码来验证想法,验证新的技术,验证新的框架。

架构师不需要全部时间用在编码上面,除了技术,平衡资源与安排进度也是一门学问。

既要低头拉车,也要抬头开路。

阅读全文 »

Java基础类型的中float类型4字节,long是8字节,为什么4个字节的float数字长度比8字节的long的长度?

浮点数采用的是IEEE754标准来存储数字。

计算机本质上用二进制存储数值,有些小数可以用2进制准确表达,比如0.5是
$$
0.5 = 2^{-1}
$$
的表示。

阅读全文 »

最近拜读曹政大牛的《你凭什么做好互联网》一书,解答了现在阶段的数个疑惑。总结下来,作者是个善于运用搜索引擎的大牛,对于自我的管理确实有独到之处。

对于互联网公司的运作方式,本书开启了一扇窗,得以一窥互联网公司的运营的秘密。对自己来讲,无论从心里还是技术方面,最重要的还是以下三个部分:

阅读全文 »

引言: 最近在处理一个问题,大致是这个样子,从数据库里面取出一个集合,取出来的数据放到一个JavaBean里面。结果得到的集合长度为1.

TreeSetSet的一个实现,默认实现排序;故TreeSet的泛型类型必须是Comparable或者Comparator。TreeSet基于TreeMap实现。

TreeSet类图

阅读全文 »

Spring的profiles机制,是应对多环境下面的一个解决方案,比较常见的是开发和测试环境的配置。

配置项目

Spring的profiles有两个变量可以配置

  • spring.profiles.default 默认值,优先级低。当active没有配置时,使用此变量。
  • spring.profiles.active 优先级高,指定当前容器使用哪个profile。

一般用法

声明多profile

如果使用spring的profiles机制,第一步要在applicationContext.xml中配置多环境实例。

1
2
3
4
5
6
<beans profile="development">
<!-- 开发环境,具体加载bean或者properties文件 -->
</beans>
<beans profile="test">
<!-- 测试环境,具体加载bean或者properties文件 -->
</beans>
阅读全文 »
0%