查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT有约

 
 
 
 
 
 

北京市 海淀区 天秤座

 发消息  写留言

 
在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)
 
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

日志分类

 
 
日志分类列表加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 
 

技术博客网站

 
 
模块内容加载中...
 
 
 
 
 
 
 

[置顶] 月赚3000,这样过一生,确定吗?

2017-8-11 10:33:13 阅读182 评论0 112017/08 Aug11

文章来自知乎:Amber  微信公众号:灰色的秘密

赚钱教过这么多,聊聊现实吧

按着大多数普通人的人生轨迹来说

那一年,你毕业了

刚入社会,没什么赚钱思路

于是,找了薪酬不高不低的工作

26岁,你看着身边的朋友陆续结了婚

婚礼的随礼每年增加

那年春节,父母不再带你串门

变成了带你去见相亲对象

可惜 见过这些个姑娘

你总是觉得和那个人比起

差了一点

28岁那年,你遇见她,和你遭遇差不多的女孩

你们有一搭没一搭的聊天

她说:你挺好的

你抿了一口果汁说:你也是啊

你甚至不确定喜不喜欢她

双方家长就已经摆好了订婚宴

结婚的前一周,你和朋友出去喝酒

你说,我不想结婚

朋友说,你啊,就是想太多。谁不是这么过来的?

29岁,你们完成了婚礼

婚礼规模不大不小,朋友来的不多不少

存了几年想要去浪迹天涯的钱

搭在了这一场百人的私人庙会上

婚礼进行到一半

司仪用他那商业化的微笑

对着台下你的亲朋好友喊道

要不要让他们亲一个!

台下的人当然一起起哄

没什么特别的赶紧

你就简简单单的亲了一下

俩人恢复到了一开始的站位

你低声说了一句:我爱你

作者  | 2017-8-11 10:33:13 | 阅读(182) |评论(0) | 阅读全文>>

使用贫血领域模型通常被认为是一种反模式,因为它鼓励程序员无意义地重复编写代码。下面我将简短(而琐碎)地用一个例子来阐述这个是如何产生的。我们可以通过细致的规划以及严格的编码规范来避免其发生,但是同样可以获得较好的封装。防止陷入贫血领域模型深坑的难度随项目人数呈指数级增长。

使用贫血领域模型通常被认为是一种反模式,因为它鼓励程序员无意义地重复编写代码。下面我将简短(而琐碎)地用一个例子来阐述这个是如何产生的。我们可以通过细致的规划以及严格的编码规范来避免其发生,但是同样可以获得较好的封装。防止陷入贫血领域模型深坑的难度随项目人数呈指数级增长。

我相信所有人对面向对象都有所认识,但我却有趣地发现一些看似毫无意义的小举措却导致了最终一场大灾难。

第一步:编写贫血实体

在软件开发的某些情况下,我们会在一个领域实体之外实现一些逻辑。这可能是由于一个明确的设计决定或者,更有可能,持久类不能引用外部服务造成了不能将这段逻辑实现在领域对象的内部。把外部服务(依赖)添加到实体对象中将会造成与数据库的交互变的复杂而晦涩难懂。

public class User {     private final String name;     private final String emailAddress;     

作者  | 2014-3-29 20:20:49 | 阅读(891) |评论(0) | 阅读全文>>

[置顶] 程序员必读经典书籍

2012-8-19 15:23:41 阅读13839 评论6 192012/08 Aug19

很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 10的书。

其实除了前10本之外,推荐数前30左右的书籍都算经典,笔者整理编译这个问答贴,同时摘译部分推荐人的评语。

下面就按照各本书的推荐数排列。

新浪微博:IT有约(记得关注噢) http://weibo.com/itgzj

1、《代码大全》 史蒂夫·迈克康奈尔

“优秀的编程实践的百科全书,《代码大全》注重个人技术,其中所有东西加起来, 就是我们本能所说的“编写整洁的代码”。这本书有50页在谈论代码布局。” —— Joel Spolsky

对于新手来说,这本书中的观念有点高阶了。到你准备阅读此书时,你应该已经知道并实践过书中99%的观念。– esac

Steve McConnell的原作《代码大全》(第1版)是公认的关于编程的最佳实践指南之一, 在过去的十多年间,本书一直在帮助开发人员编写更好的软件。

作者  | 2012-8-19 15:23:41 | 阅读(13839) |评论(6) | 阅读全文>>

数据库表结构设计方法及原则

2014-3-13 23:00:44 阅读598 评论0 132014/03 Mar13

在目前的企业信息系统中,数据库还是最佳的数据存储方式,虽然已经有很多的书籍在指导我们进行数据库设计,但应该那种方式是设计数据库的表结构的最好方 法、设计时应遵从什么样的原则、四个范式如何能够用一种方式达到顺畅的应用等是我一直在思考和总结的问题,下文是我针对这几个问题根据自己的设计经历准备 总结的一篇文章的提纲,欢迎大家一块进行探讨,集思广益。其中提到了领域建模的概念,但未作详细解释,希望以后能够有时间我们针对这个命题进行深入探讨。

1) 不应该针对整个系统进行数据库设计,而应该根据系统架构中的组件划分,针对每个组件所处理的业务进行组件单元的数据库设计;不同组件间所对应的数据库表之 间的关联应尽可能减少,如果不同组件间的表需要外键关联也尽量不要创建外键关联,而只是记录关联表的一个主键,确保组件对应的表之间的独立性,为系统或表 结构的重构提供可能性。

2)采用领域模型驱动的方式和自顶向下的思路进行数据库设计,首先分析系统业务,根据职责定义对象。对象要符合封 装的特性,确保与职责相关的数据项被定义在一个对象之内,这些数据项能够完整描述该职责,不会出现职责描述缺失。并且一个对象有且只有一项职责,如果一个 对象要负责两个或两个以上的职责,应进行分拆。

3)根据建立的领域模型进行数据库表的映射,此时应参考数据库设计第二范式:一个表中的所 有非关键字属性都依赖于整个关键字。关键字可以是一个属性,也可以是多个属性的集合,不论那种方式,都应确保关键字能够保证唯一性。在确定关键字时,应保 证关键字不会参与业务且不会出现更新异常,这时,最优解决方案为采用一个自增数值型属性或一个随机字符串作为表的关键字。

作者  | 2014-3-13 23:00:44 | 阅读(598) |评论(0) | 阅读全文>>

我理解的互联网商业模式之一:信息类(转)

2014-3-13 22:55:05 阅读312 评论0 132014/03 Mar13

文/kingson

作为一个信仰互联网,从小就在网络中浸染长大,并献身于这个行业近十年的我来说,互联网思维是一个最经常被别人问起的东西。特别是我目前创业所在的互联网教育领域,跟很多的教育人士接触,他们都极度渴望拥有互联网思维,期待掌握它来改变自己所从事的事情。我一直跟他们说需要理解什么是互联网思维,需要首先从本质上理解互联网的商业模式是什么,在这种商业模式下,一个互联网企业是如何运作的。这里,我希望以我当年做出创业决定时的思考过程,讲述一个我所理解的互联网商业模式是怎么样的。

第1种商业模式:以信息为基础

互联网本质上是一个计算机所做的事情,而计算机只能处理信息,所以一切网站,都必须要基于一个信息。在我思索我创业该做些什么的时候,我首先考虑的是我要基于什么信息个体,来实现一个什么行为。在我看来,所有的成功网站都是基于单一信息个体和单一行为的,淘宝的信息个体是商品(含有标题、描述、售价等子信息),行为是购买;微博的信息个体是140字,行为是阅读;谷歌的信息个体是一个网页(含有title, keyword, description),行为是搜索。

这里的信息个体和行为的选取非常重要,选取什么信息个体直接影响了商业模式的成本,而什么行为则决定了市场容量。每个人一辈子会重复无数次的行为就是最好的行为,例如购物,每一个人在其一生中都会做无数次这个事情,而我们如果能用互联网来改变这种行为,那就是载入史册的革命。另一方面,我们需要选择一个很好的信息个体,并且很好地考虑清楚这些信息该如何产生。我最崇拜的公司是谷歌,因为他创造了一个每个人会

作者  | 2014-3-13 22:55:05 | 阅读(312) |评论(0) | 阅读全文>>

当json键为数字时如何取值

2013-8-30 14:12:46 阅读362 评论0 302013/08 Aug30

当json的键为数字时如何取值,如: 

var aa={'111':'aaaaa'}; 

alert(sss.111); 

这样是不行的,alert不会弹任何东西。

json的键必须是一个对象,才能取出东西,如: 

var aa={'s111s':'aaaaa'}; 

var idd="s111s"; 

alert(sss.idd);

解答:

对于数字键名或者非正常变量字符(比如有空格),必须使用 aa[x]的方式。

var aa={'111':'aaaaa'}; 

alert(sss["111"]);

作者  | 2013-8-30 14:12:46 | 阅读(362) |评论(0) | 阅读全文>>

int和byte互转 long和byte互转

2013-5-14 14:51:38 阅读456 评论0 142013/05 May14

1. byte转long

public static long bytes2long(byte[] b) {      long temp = 0;      long res = 0;      for (int i=0;i<8;i++) {          res <<= 8;          temp = b[i] & 0xff;          res |= temp;      }      return res;  }

2. long 转byte

public static byte[] long2bytes(long num) {      byte[] b = new byte[8];      for (int i=0;i<8;i++) {          b[i] = (byte)(num>>>(56-(i*8)));      }      return b;  }

3. int转byte

public static byte[] int2bytes(int i) {          byte[] b = new byte[4];            b[0]

作者  | 2013-5-14 14:51:38 | 阅读(456) |评论(0) | 阅读全文>>

启动SQL Server 2008 Management Studio

工具----选项----Designers(设计器)----阻止保存要求重新创建表的更改  取消勾选即可。

作者  | 2013-4-26 9:08:56 | 阅读(191) |评论(0) | 阅读全文>>

SQL自定义函数

2013-4-16 22:25:58 阅读570 评论0 162013/04 Apr16

“自定义函数”是我们平常的说法,而“用户定义的函数”是 SQL Server 中书面的说法。

SQL Server 2000 允许用户创建自定义函数,自定义函数可以有返回值。

自定义函数分为:标量值函数或表值函数两种。

标量值函数:如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数。表值函数:如果 RETURNS 子句指定 TABLE,则函数为表值函数。

表值函数又分为两种:内嵌表值函数(行内函数)或多语句函数

如果 RETURNS 子句指定的 TABLE 不附带列的列表,则该函数为内嵌表值函数。如果 RETURNS 子句指定的 TABLE 类型带有列及其数据类型,则该函数是多语句表值函数

如果你不晓得Returns从哪里来,请看创建函数的语法(这里是创建标量值函数的语法)

Create function 函数名(参数) Returns 返回值数据类型 [with {Encryption | Schemabinding }] [as] begin SQL语句(必须有return 变量或值) End

这里的with为附加选项:

如果需要对函数体进行加密,可使用WITH ENCRYPTION;如果需要将创建的函数与引用的数据库绑定,可以使用WITH SCHEMABINDING(注:函数一旦绑定,则不能删除、修改,除非删除绑定)

现在我们就为三种函数分别举个例子看看。

首先看一个标量值函数

CREATE

作者  | 2013-4-16 22:25:58 | 阅读(570) |评论(0) | 阅读全文>>

天涯草:设计模式之命令模式

2013-4-16 21:17:48 阅读469 评论0 162013/04 Apr16

 在许多设计中,经常设计一个对象请求另一个对象执行某一个操作。如果请求者无法或者不希望直接和被请求者打交道,即请求对象无法或者不希望含有被请求者的引用,那么可以使用命令模式。命令模式里称提出请求的对象为请求者,被请求者的对象为接收者。在命令模式中,当一个对象请求另一个对象调用其方法时,不和被请求者直接打交道,而是把这种“请求”封装到一个“命令”对象中,封装的手段将“请求”封装到“命令”对象的一个方法中。命令模式的核心就是使用命令对象来封装方法调用。

 GOF 在《设计模式》一书中阐述其意图:“将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。”这里所谓的“不同的请求”也既意味着请求可能发生的变化,是一个可能扩展的功能点。

  例如,在军队作战时,指挥官要命令三连偷袭敌人。但是指挥官这时无法或者不希望和三连直接取得联系,那么指挥官可以发出一个命令,把该命令的执行者设置为三连。这样指挥官只要和命令打交道。

  命令模式包含四种角色:

  接收者:接收者是一个类的实例,该实例负责执行与请求相关的操作。

  命令接口:命令式一个接口,规定了用来封装“请求”的若干个方法,比如execute()、undo()等方法。

  具体命令:具体命令式实现了命令接口的类的实例,包含命令接口的方法。并且包含接受者的引用,指明那个对象去执行该命令。

  请求者:请求者是包含命令接口变量类的实例,该接口变量可以存放任何具体命令的引用。请求者负责调用具体命令,让具体命令执行那些封装了的请求方法。

作者  | 2013-4-16 21:17:48 | 阅读(469) |评论(0) | 阅读全文>>

怎样存款划算

2013-3-25 16:19:22 阅读291 评论0 252013/03 Mar25

1. 是否转存 

如果银行加息,首先受影响的便是大量的存款客户,存款利息提高了,对于在银行有定期存款的市民而言,得考虑是否该转存以享受较高利率的问题。 

转存时限有讲究 

  业内人士表示,这要视定期存款的期限和已存天数而定,具体计算公式如下:360天×存期年限×(新定存利率-原定存利率)÷(新定存利率-原活期利率)=转存时限。 

  以一年期定期存款为例,计算转折是否划算,可以用以下公式计算:以一年定期存款为例,360×1×(3.25%-3%)÷ (3.25%-0.4%)=32.4天。也就是说,对于存了一年期定期存款的市民而言,如果存款已经存了33天,将钱取出再转存,就不划算了。不过对于已 存期限尚未超过33天的市民而言,将钱取出再转存,则要划算些。 

以同样方法可以计算出,存5年期定期存款的市民,如果已存期限尚未超过93天,则取出来转存划算些,如果已经超过了93天,则没有必要转存。 

2. 少用活期存款,存期越长不一定越划算 

3. 储蓄存款不宜集中开一张存单   

   一张存单金额太大,不仅不安全,如一旦遇到急用,需提前支取其中的一部分,会因此损失一部分利息,办起来也不如分散开几张存单方便与实惠。 

4. 储蓄存款不宜选择太长的期限 

5. 12存单法,即滚雪球”的存钱方法 

每月提取工资收

作者  | 2013-3-25 16:19:22 | 阅读(291) |评论(0) | 阅读全文>>

程序员需要记住的 20 个开发细节

2013-3-22 22:20:05 阅读385 评论0 222013/03 Mar22

1:提交到SVN的代码必须有提交备注,以便于以后查看。

2:如考虑页面缓存,可以在路径后增加随机数:url + "&TimeS=" + Math.random();。

3:类的头注释:类说明、作者、版本、特别说明。

4:方法必须有注释:方法说明、参数列表含义。

5:没有特殊要求,列表页面一律10条数据进行显示,需要弹出框的以15条进行显示。

6:列表页面必须有增加、删除、修改、详细四个按钮,名称顺序功能不能修改,需要特殊功能的在四个按钮后面增加特殊功能的按钮。

7:分表的日志页面,一律显示本周或本月的数据,不得显示所有表所有数据。

8:详细页面尽量使用弹出框实现。

9:对外提供的服务接口,必须在service包下。

10:无论是Java代码还是Js函数,不准拷贝别人代码后直接使用原来的名称,必须以自己的模块和业务进行命名,例如平台的用户增加commUserAdd()。

11:系统内所有的路径,除特殊情况外,必须使用绝对路径。

12:系统内的打印,即使是调试也必须使用Log进行打印,不准在系统内出现System.out.println()字样。

13:没有特殊要求,不准使用异步加载的方式进行级联操作,或获取相关信息,必须使用弹出框的方式,具体弹出框后台代码和前台页面的路径,必须由组长指定。

14:数据库表的名称,不得出现表名称、配置文件内名称、JDBC时名称不一致的情况,本系统推荐:系统-模块-业务实体类名称。

作者  | 2013-3-22 22:20:05 | 阅读(385) |评论(0) | 阅读全文>>

软件开发者如何提升和推销自己

2013-3-19 18:04:38 阅读341 评论0 192013/03 Mar19

编写出伟大的代码,对于开发者来说已经到达一个层级了。但是不断提升、适当的推销自己,可以令你得到更多。以下是一些有效的途径,希望能够帮到你。

1.  写博客

建立自己的博客,并至少每月发布一篇文章。文章中要尽量有一些你真正的研究项目,这样会确保你看起来有些水平。

2.  参与开源

投身开源领域,发布自己的开源项目。别人可以通过你开放的源代码,来了解你的水平和方向。并试着在你的项目中,用最简单的方式来解决复杂的问题。

3.  不要频繁跳槽,也不要举步不前

不要每6个月就换一次工作,那样你什么都得不到。但也不要停留在一个地方,做同样的工作10年,那样你会被模式化。比如在IBM,你不能只会用IBM的方式编写IBM的栈。我不会雇用在IBM或类似组织工作超过1、2年的,他们往往在面试中会给我留下印象,但他们往往无法通过编程测试。

4.  放眼未来,着手实际

年轻的开发者往往倾向于新的技术,Ruby是我最喜欢的语言,但是它的市场要远远小于Java。同时,也不要停留在一个技术上太久,因为未来的你会相当于现在的COBOL或PowerBuilder 开发者。

5.  写你自己的文档

我之前参加的项目中,很多次都被拉进项目经理级别的会议上,就是因为我写了一个他们能够看到和理解的文档或演示。

6.  简洁是灵魂

项目中的事情或问题,试图给出最短、最简洁的答案或解决方案。一旦你的回复过于冗长或复杂,往往会令人不知所云。

作者  | 2013-3-19 18:04:38 | 阅读(341) |评论(0) | 阅读全文>>

Node.js教程

2013-3-15 20:43:16 阅读18630 评论3 152013/03 Mar15

新浪微博:IT国子监(记得关注噢) http://weibo.com/itguozijian

什么是Node.js?还服务器端javascript?对于这个概念我在这篇文章不做解释,可以自己去搜索了解下,服务器端js不是新技术,只是最近的node.js的火爆让他爆发了,我会在以后的文章里解释什么是node.js。这里只是纯粹的搭建,连环境都没有,还玩什么服务器端js,一切都成了浮云,让我们先搭建一个环境,输入一个“hello world”的页面。

对的,win7下的搭建,你只需一步一步跟着我做,就ok了,不用去了解过多的细节,那不是我们现在要关心的,我们现在首要目的是把环境搭建好,要不然就没有下一步了。

Step 1. 下载

node.js在windows下是要安装在Cygwin下的,去Cygwin下载Cygwin安装程序。

Cygwin:http://cygwin.com/

直接下载地址:http://cygwin.com/setup.exe

Step 2. 安装

安装你下下来的Cygwin程序,基本上只需下一步就可以。

在Choose A Download Source界面选择-》install from internet

作者  | 2013-3-15 20:43:16 | 阅读(18630) |评论(3) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018

注册 登录  
 加关注