- 浏览: 69599 次
- 性别:
- 来自: 绍兴
最新评论
文章列表
很喜欢一本叫《走出软件作坊》的书,其中有一句话让我较为深刻,“架构师,客户和程序员之间走钢丝的人”,一个优秀的程序员过单行线都会左右都看看,更何况一个架构师肯定是需要非常谨慎的。那怎么样才能做到谨慎呢?在我看来对于架构师的谨慎其实就是一句话:不要让程序员写原本不应该是他写的代码,这句话说的好像有点抽象,但其实很好理解,就是尽可能让程序员的代码变的少,这样不但开发起来效率快,而且review代码以及排查bug都是很方便的,那怎么样才能让程序员写的代码变少呢?今天我想借java的反射来举几个例子,通过反射封装让编码变的更简单,当然这肯定不是唯一的办法。
1.excel文件导出
这个封装是在我工作两 ...
在我刚接触程序的时候我觉得设计模式没啥用,只要能解决问题完成任务找得到工作拿得到工资就行了,后来编码一段时间我又感觉设计模式主要对那些搭建框架的大牛有用,再后来我又感觉其实大部分需要用到设计 ...
Web开发学习11 全局缓存控制
- 博客分类:
- 笔记
缓存用的好可以减少数据库的压力,在大并发的情况下极大的提升服务器的性能,理论上缓存数据类型是按越接近用户端为最优先的,意思就是如果在web项目中满足业务需求的情况下优先备份html页面->业务处理层->数据获取层,备份html页面很常见,比如新闻中心的新闻详情页会事先根据录入的数据创建静态化页面,从而提高客户端访问速度.这种情况针对页面数据比较单一或者改动比较少的情况是比较好的,但如果改动多的话每次一改动页面中某个模块的数据就需要重新生成该页面那是很麻烦的,所以这种情况我们就需要降级缓存,把缓存做到service层,当用户端请求到达action的时候,调用各个service方法,如果 ...
Web开发学习10 hadoop实战
- 博客分类:
- 笔记
前一篇说到项目记录了很多埋点日志,当有一天项目需求需要对这些日志做分析时那hadoop就是一把好手了,下面简单介绍下用java调用hadoop分布式计算的例子
首先我们需要做hadoop配置
public static Configuration getConf(){
Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://192.168.217.129:9100");
conf.set("mapred.job.tracke ...
Web开发学习(9)全局埋点
- 博客分类:
- 笔记
埋点的作用是把客户端每次访问服务端的操作记录下来,包括请求连接 请求者ip 请求参数 请求结果等等,以便于在出现异常的情况下排查,在用户量庞大的情况下还可以对这些记录做数据分析.这个功能我还是坚持一直以来的原则,一次封装终身受用,使用拦截器的方式全局做埋点记录.
首先创建一个注解类,这个注解类的作用是在action方法上标注当前方法的中文信息,记录到日志以后有便于查阅
package cn.sdh.common.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retent ...
Web开发学习8Struts2基类封装
- 博客分类:
- 笔记
一个好的基类可以帮助开发者减少很多开发工作,像我这种爱偷懒的人比较喜欢在这方面较真,项目需求和时间计划出来后工作进度就靠个人效率了,如果不花点时间把重复的劳动工作封装一下,那经常加班加点也怨不得别人.
今天分享下我专为ajax访问封装的action基类,依然用的全注解方式,主要使用基于泛型的模板模式实现;先来看下类头吧
@Results({
// 返回Action堆栈内所有对象 ignoreHierarchy=false(取消父子分离,将父类的属性也作为json传递)
// excludeNullProperties 排除为null的对象
// excludeProperties 排除 ...
Web开发学习7按钮级别权限控制
- 博客分类:
- 笔记
这个功能的思路是自己原创的,没看过其他例子,其实是在做之前网上搜了很多也没个可以参考的例子.主要技术是后台springsecurity做拦截判断,前台Extjs4做按钮动态渲染.如果你不了解springsecrity,那你可以先看下我的另一篇相关博客
创建数据库表(liqiubase方式创建看上一篇)
<createTable tableName="permissions">
<column name="id" type="bigint">
...
开发过程中经常碰到数据库更改的情况,在日常环境下如果每位开发人员连接的都是同一个库,那问题不算太大,修改代码上传后仅需修改该公共库即可,但是如果连的是本地个人的库那必须要把修改的sql语句发给其他开发者各自进行修改,这个工作是非常繁琐的;
liqiubase帮我们做了这些事情,通过xml配置的方式来增加修改表,添加数据等等操作,下面直接进入配置代码示例
首先需引入liqiubase的核心包
liquibase-core-1.9.5.jar
liqiubase的配置启用很简单,只需在spring配置文件中添加以下代码集合
<!-- 配置liqiubase -->
<be ...
enum Province{ ZHEJIANG,SHANGHAI,JIANGSU }
Province是一个最简单枚举类,它内部有三个指向它实例包括江浙沪
枚举类的特点就是它的所有实例都是在它内部生长的,并都是由编译器创建生成的
Province.values() //返回Province所有实例的数组[ZHEJIANG ...
1、创建普通Java项目:
mvn archetype:create -DgroupId=[your project's group id] -DartifactId=[your project's artifact id]
2、创建WEB项目:
mvn archetype:create -DgroupId=[your project's group id] -DartifactId=[your project's artifact id]
-DarchetypeArtifactId=maven-archety ...
<html>
<head>
<title>html5 clock</title>
</head>
<body>
<canvas id="clock" width=200 height=200 style="position:absolute;left:200;top:100"></canvas>
<script>
var clockCanvas = document.getElementById(&quo ...
<html>
<head>
<title>JS</title>
</head>
<body>
<canvas id="square" width=500 height=500></canvas>
<script>
var deg = Math.PI/180;
function snowflake(c, n, x, y, len) {
c.save(); // Save curren ...
html5 audio与video方法属性事件概括
- 博客分类:
- 笔记
play() 继续播放
pause() 暂停播放
pause 是否暂停
currentTime 定点播放
seeking 是否正在跳播
ended 是否结束
volume 音量 0-1之前
muted 静音
duration 总时长
initialTime 定位开始播放时间
played 已播放的时间段
buffered 已经缓冲的时间段
seekable 需 ...
首先定义自定义过滤器
<bean id="codecFilter" class="org.apache.mina.filter.codec.ProtocolCodecFilter">
<constructor-arg>
<!--编码过滤器-->
<bean class="com.kcb.common.socket.kaicom.KaiComCodecFactory"></bean>
</constructor-arg>
</bea ...
重装了N次,倒腾了一上午总算有所心得,我的是双屏,首先F12工具栏会显示透明的开发人员工具图标,但实际界面没有出来,右键选择最大化,这货就出来了,然后将它取消独立悬浮定位到窗体下部(右上角第二排按钮),然后把窗体移到另一个屏幕,把开发人员工具恢复悬浮,问题解决