Jingh Blog

"志之所趋,无远弗届,穷山距海,不能限也"

Java并发和多线程

Java编程中“为了性能”尽量要做到的一些地方

注:本文的内容翻译自http://tutorials.jenkov.com/java-concurrency/deadlock.html 在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任...

Java编程Tips

Java编程中“为了性能”尽量要做到的一些地方

原文: Java编程中“为了性能”尽量要做到的一些地方 作者: javatgo 最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。 下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短...

UML学习归纳整理

写在前面 之前在学校比较系统的学习过统一建模语言UML,但长时间没使用遗忘了许多,最近因工作需要,所以对UML重新学习和梳理一下。UML可帮助我们做软件需求分析和软件设计的工作,会让你的需求分析或者软件设计工作更上一层楼。 UML的分类 主要分为两类:结构型的UML和行为型的UML 仅作参考,不同应用环境可能略有不同 其中基本不使用和很少会使用的我们不必深究,主要看...

Java编程的78条黄金法则

成为优秀程序员的78条黄金法则

整理自网络,如果你知道原作者,请通知我。 创建和销毁对象 1、考虑用静态工厂方法(返回类的实例的静态方法)代替构造器 2、遇到多个构造器参数时要考虑用构造器 3、用私有构造器或者枚举类型强化Singleton属性 4、通过私有构造器强化不可实例化的能力 5、避免创建不必要的对象 6、消除过期的对象引用 7、避免使用终结(final)方法 对于所有对象都通用的方法 8、覆盖equa...

小米2013校招笔试算法题-朋友圈

题目描述:假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友…),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。 假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋友圈,...

SSO原理与简单实现

一、单系统登录机制 1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系 但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览...

使用bash关联数组统计单词频数

从bash 4开始支持关联数组,使用前需要声明,即 declare -A map map[key1]=value1 map[key2]=value2 map=([key1]=value1 [key2]=value2) # 获取keys keys=${!map[@]} # 获取values values=${map[@]} 利用关联数组,很容易实现单词统计,源码文件wordCount.s...

bash字符串前美元符号的作用

bash是由内置变量IFS作为字段分隔符,IFS变量的值直接影响脚本如何解析参数,其默认值为\<space\>\<tab\>\<newline\>, 即空格、制表符以及换行符。 遇到一个需求是需要设置分隔符为换行符\n, 即一行一个字段,空格和制表符不会分割字段。很容易想到的办法是重设IFS变量值: OLD_IFS=$IFS IFS='\n' # do...

随机数生成算法和洗牌算法

1 伪随机数 什么是随机数?通俗说法就是随机产生一个数,这个数预先不能计算出来,并且每个数字出现的概率是一样的。随机数必须满足以下两个条件: 不可计算性。即在随机数产生前,不能通过任何方式计算出来。 机会均等性。即需要保证每个数出现的概率是相等的。 在生活中,随机数产生其实并不难,比如通过掷骰子的方式就可以很容易获取一个随机数。但计算机产生随机数却并不容易。在编程中,我们经...