[置顶] 剖析金额不能用浮点数表示的原因

近期支援双十一红包项目。参与到了一个涉及到钱的项目,开发自然十分的谨慎。先抛出我有问题的代码,作用是把以分为单位的金额转成以元为单位的字符串。long adjustFee; String.valueOf(adjustFee / 100.0);  很自信的以为这行代码简洁明了的完成了使命。@壹双 同学review了我的代码后,指出这段代码会造成精度丢失的问题。先演示一个demo,构造一个浮点数丢失精度...
阅读(2424) 评论(6)

[置顶] 《CSAPP》读书笔记:面向高速缓存编程

计算机发展初期,CPU是和主存直接交互。但是随后CPU的速度越来越快,甩了主存几十条街。这时候Intel的提出了一个解决方案——在CPU和主存中插入高速缓存(cache)。于是现代计算机的存储层次结构衍生成了下图的样子,图片源于《CSAPP》一书    CPU需要读数据,会首先访问L1 Cache, 如果Hit miss,就去请求L2 cache。如果L2 Cache hit miss,那么......
阅读(2463) 评论(0)

[置顶] 字符串的公共前缀对Mysql B+树查询影响回溯分析

最近项目组接微信公众号。上线之后,跟微信相关的用cid列的查询会话的SQL变慢了几十倍!思考这个问题思考了很久,从出现以来一直是我心头的一个结。这一列是建了索引的,普通的cid列更新都没问题,为何只有微信的有问题?相同的前缀又是如何影响索引的?     分析过程     1.explain下微信cid的查询     explain  select * from a...
阅读(4073) 评论(9)

[置顶] 七条基本的编码规范

接手3.0的项目接近两个Q,在阅读了这些代码的基础上开了一些新功能。对我们项目组的核心工程的代码有些批判的想法,现在拿来跟大家分享一下。 计算机巨匠 Donald Kunth(《计算机程序设计的艺术》系列作者)有一句名言:程序是写给人看的,只是偶尔让机器执行一下。言辞颇为偏激,但是至少强调了一点,代码的可读性是十分重要的。一个大型的项目,一般会有10-20次的产品迭代,就我们IM这个可以做到...
阅读(860) 评论(0)

[置顶] 个人代码量的统计

以前看到李开复写过的一本书,说是微软推荐应届毕业生最好有10万行的代码经验。于是自己我想写个程序统计写了多少行代码。正好当时在学C#的正则表达式,借助正则表达式的简便。我统计了自己的代码量,大概有8万行的样子。       程序的主要函数是一个先根遍历文件夹树的函数。因为运用了...
阅读(1573) 评论(0)

ReactJs组件间通信的方法

一 父子组件间通信1. 父组件调用子组件父组件的容器通过refs属性调用子组件的方法2. 子组件调用父组件父组件的方法通过props传递给子组件,在子组件内部调用父组件的回调函数二 平级兄弟组件的相互调用父组件作为通信枢纽方法一: 通过父组件的state进行重绘 子组件A回调父组件的方法,父组件的方法里修改容器中的state数据 state中的数据以props的形式传递给子组件B(render方法中...
阅读(76) 评论(0)

mybatis相对于ibatis的优势

2010年,apache的Ibatis框架停止更新,并移交给了google团队,同时更名为MyBatis。从2010年后Ibatis在没更新过,彻底变成了一个孤儿框架。一个没人维护的框架注定被mybatis拍在沙滩上。1. 入参无需用对象封装(或者map封装),使用@Param注解当Ibatis需要接收超过一个参数时,则需要将多个参数封装成对象,这个时候会产生很多Domain查询类。还有很多同学偷懒...
阅读(239) 评论(0)

IDEA Debug模式下启动慢的解决办法

工程没有做什么大的改动,近期Idea在debug模式下启动耗时800s +,run模式下200s。Idea debug模式启动的时候会有这样的提示: 方法断点会戏剧性的降低debug的速度。当时并没有在意,因为并不清晰这个方法断点是个什么概念。。。。。看了网友的帖子,才知道这个method breakpoints就是方法签名上的断点。idea的这个提示能否更人性化点,就叫method signat...
阅读(1118) 评论(0)

ReactJS见习笔记

项目组要求用reactJs搭建前端页面,但是对react一点不了解,边推进项目边学习react。node.js, npm的关系Node.js 就是运行在服务端的 JavaScript。NPM是随同NodeJS一起安装的包管理工具。ReactReact 是一个用于构建UI的 JAVASCRIPT 库。 React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 20...
阅读(136) 评论(0)

volatile型变量自增操作的隐患

用FindBugs跑自己的项目,爆出两处An increment to a volatile field isn’t atomic。相应报错的代码如下:volatile int num = 0; num++;  FindBugs针对这种类型的错误给出了相应的解释 An increment to a volatile field isn’t atomic This code incremen...
阅读(2507) 评论(5)

用mvn generate命令行创建多模块Web应用骨架

昨天重新搭一个多模块Web应用,打开以前的总结帖,用maven命令行创建多模块WEB项目,mac shell命令行下直接开搞,原以为1分钟内搞定,毕竟这个方法以前屡试不爽。mvn -X archetype:create -DgroupId=com.***.*** -DartifactId=***-tag -DarchetypeArtifactId=maven-archetype-quickstart...
阅读(613) 评论(0)

MAC版Idea下ignore文件的办法

习惯了Windows下右键ignore不提交文件的方式,换了Mac后,没有找到合适的git 带UI的客户端。idea自带的git右键菜单也不能提供ignore功能能。一脸懵逼。   在Idea的官方帮助文档里找到了解决办法,https://www.jetbrains.com/help/idea/2016.2/configuring-ignored-files.html.   IntelliJ I...
阅读(1839) 评论(0)

利用zookeeper的发布/订阅模式实现配置动态变更

ZooKeeper的Watcher事件机制可以说分布式场景下的观察者模式的实现。基于这个watcher事件机制,配合注册到特定的ZNode节点,可以实现Java应用的配置运行时的变更。在学习zookeeper之前,听同事说配置可以在运行时动态变更,觉得不可思议。研习了zookeeper之后,实现这个功能是很easy的。   发布/订阅系统设计起来无非两种模式,推和拉。 1. 推模式,服务端负责把...
阅读(3069) 评论(0)

macOS Sierra 下安装svn方法

前几天mac升级了最新版的macOS Sierra 10.12。今天Idea下svn commit代码,提交失败。转而去命令行提交,命令相应如下:svn commit xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Develo...
阅读(3275) 评论(10)

LeetCodeOJ 137. Single Number II 一题三解

原题链接:https://leetcode.com/problems/single-number-ii/137. Single Number II QuestionEditorial Solution My SubmissionsTotal Accepted: 91049Total Submissions: 235598Difficulty: MediumGiven an array of int...
阅读(766) 评论(0)

无法在同一张表上查询和更新的问题解决方法

问题引入要在一张已存在并且有数据的表上建一个唯一索引,由于建索引的这列有很多重复的数据,导致无法建unique索引!要一条条数据手工删除吗?不!我是工程师,我要用技术的手段删除重复数据。写了一个删除重复数据的sql,如下: delete from entity_tag where id not in (select max(id) fr...
阅读(734) 评论(1)

Spring + Spring mvc + Ibatis + Velocity 框架搭建

总结下如何用这四个常用框架搭建一个Java Web工程,方便以后更快速的开发工程。首先得用maven搭建一个多模块的web工程,这里不再赘述,请参考以前的总结:用maven命令行创建多模块WEB项目    首先导入这些框架所需的maven依赖:3.2.2.RELEASE 1.6.3 1.2 5.1.15 org.apache.ibatis ibatis-sqlmap...
阅读(1403) 评论(0)

自定义Lucene分词器示例

集团的内部通讯工具搜同事时,需要根据姓名后缀进行搜索。譬如“徐欢春”,我们要能根据“欢春”搜出这个人;“黄继刚”,要根据“继刚”为关键字搜出“黄继刚”。这是个很人性化的用户体验,当我们有同事的名字是三个字的时候,我们通常会叫他们名字的最后两个字。Lucene本身并没有提供这种分词器,只能自己照着Lucene已有的分词器进行模仿开发。    参照ngram分词器进行开发。    实现一个Tokeni...
阅读(3252) 评论(1)

LeetCode OJ 207. Course Schedule 拓扑排序+邻接表

题目链接:https://leetcode.com/problems/course-schedule/207. Course Schedule My SubmissionsQuestionEditorial SolutionTotal Accepted: 42752 Total Submissions: 154752 Difficulty: MediumThere are a total of n...
阅读(1002) 评论(0)

LeetCode OJ 347. Top K Frequent Elements hashmap+排序求解

题目链接:https://leetcode.com/problems/top-k-frequent-elements/、347. Top K Frequent Elements My SubmissionsQuestionEditorial SolutionTotal Accepted: 15510 Total Submissions: 36453 Difficulty: MediumGiven...
阅读(2158) 评论(0)

LeetCode OJ 61. Rotate List 考虑边界条件

题目链接:https://leetcode.com/problems/rotate-list/61. Rotate List My SubmissionsQuestionEditorial SolutionTotal Accepted: 71917 Total Submissions: 311425 Difficulty: MediumGiven a list, rotate the list t...
阅读(1570) 评论(0)

Spring Aop Demo

最近做项目时,接入了四个极其重要的外部接口。为了核对接口的准确性,把这四个接口的所有入参和返回值都打了日志。完全是重复性的机械劳动。端午节的时候回想这件事,发现AOP不正是职业解决这种事情的吗!而且用AOP打日志,原有的业务代码省去了日志代码,更加精简。    先写了个AOP的demo体验下功能。导入aop相关的依赖 3.2.0.RELEASE 1.1.36...
阅读(773) 评论(0)

Js图片轮播功能DEMO

去年为我们的客户端做了一个下载页面,页面里有个图片轮播功能,介绍产品特性。过了一年之后自己都忘记当时是怎么实现的了,最近重新看了这块儿的代码,总结了下,同时拿来分享给大家。    先看效果图:    轮播的原理很简单,所有轮播的div都已经在页面上了,只是每次只显示一个,把其他的div的display属性置为none。有一个定时器会控制轮播的顺序,每个时刻只会有一个div的display属性是bl...
阅读(2694) 评论(0)
208条 共11页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:798940次
    • 积分:8353
    • 等级:
    • 排名:第2268名
    • 原创:207篇
    • 转载:1篇
    • 译文:0篇
    • 评论:169条
    博客专栏
    文章分类
    最新评论