Martin

Java虚拟机最多支持多少个线程?

白昼怎懂夜的黑 提交于 2020-07-24 23:03:33
作者:miracle1919 http://www.importnew.com/10780.html McGovernTheory在StackOverflow提了这样一个问题: Java虚拟机最多支持多少个线程?跟虚拟机开发商有关么?跟操作系统呢?还有其他的因素吗? Eddie的回答: 这取决于你使用的CPU,操作系统,其他进程正在做的事情,你使用的Java的版本,还有其他的因素。我曾经见过一台Windows服务器在宕机之前有超过6500个线程。当然,大多数线程什么事情也没有做。一旦一台机器上有差不多6500个线程(Java里面),机器就会开始出问题,并变得不稳定。 以我的经验来看,JVM容纳的线程与计算机本身性能是正相关的。 当然了,你要有足够的本机内存,并且给Java分配了足够的内存,让每个线程都可以拥有栈(虚拟机栈),可以做任何想做的事情。任何一台拥有现代CPU(AMD或者是Intel最近的几代)和1-2G内存(取决于操作系统)的机器很容易就可以支持有上千个线程的Java虚拟机。 如果你需要一个更精确的答案,最好是自己做压测。 Charlie Martin的回答: 这里有很多的参数(可以设置)。对于特定的虚拟机,都会有自己的运行时参数。(最大线程数)一定程度上由操作系统决定的:底层的操作系统要给线程提供哪些支持?施加哪些限制?虚拟机使用的是原生的操作系统的线程还是red

很少有人会告诉你的5个编程名言,安排!

社会主义新天地 提交于 2020-05-09 08:41:47
通过理解这些永恒的见解,你将成为更好的开发人员。 成为一名优秀的程序员,就是让你自己接受不断学习的生活(活到老,学到老)。包括新功能、新语言、新工具、新框架等优秀的源头——学习永不停息。但是,其实计算机科学也是一个令人惊讶的传统领域,这是基于久经考验的原则得出来的。我们已经添加了面向对象、现代硬件以及人工智能。然而,尽管发生了这么多的变化,许多上一代人提出来的见解在今天仍然适用(这点和我们现在的名言警句类似)。 在这篇文章中,我剖析了一些我最喜欢的关于计算机科学的引用。我设置的唯一条件就是,每个优秀的引用必须至少有20年的历史。因为古老的技术很快就会变得毫无用处,而我们编程祖先的古老戒律却有更强的持久力。 1. 关于Indirection "计算机科学中的所有问题都可以通过另一种间接的方式来解决"。——David Wheeler 这里有一个很少被开发者愿意解释却又经常被复用的compsci的引用。但这是我最喜欢的编程真理之一,因为它触及了编码的核心。 开始考虑Indirection的最简单的方法是想像层次。例如,假设您有一个小项目,需要将组件A放入组件B: 两个都是标准的组件,因此你不能破坏他们并更改他们的工作方式。你可以构建一个全新的组件,但这需要大量的工作和不必要的重复。一个更好的方式就是这两个部分之间添加一层——一个适合于两个组件并在它们之间进行转化的适配器。

代码整洁之道(中文完整版)pdf

旧巷老猫 提交于 2020-05-01 14:37:18
下载地址: 网盘下载 内容简介 · · · · · · 《代码整洁之道(英文版)》提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,《代码整洁之道(英文版)》作者给出了一系列行之有效的整洁代码操作实践。这些实践在《代码整洁之道(英文版)》中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。 软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。 《代码整洁之道(英文版)》阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。 作者简介 · · · · · · Rober C.Martin,Object Mentor公司总裁。面向对象设计、模式、UML、敏捷方法学和极限编程领域的资深顾问。他是Designing Object-Oriented C++Applications Using the BoochMethod以及Jolt获奖图书Agile SoftwareDevelopment,Principles,Pattems,and Practices

Chapter 2 :重构的原则

给你一囗甜甜゛ 提交于 2020-05-01 11:23:28
1,什么是重构? 在不改变软件可观察行为的前提下,使用一些重构的手法,提高代码可读性。 换句话说,在保持软件可用的前提下,修改代码使得更加容易被理解。 2,为什么重构? 为了后续的代码维护和修改,易读是重构的核心价值。 除此之外,重构随之带来的好处有: 找到bug 提高编程速度(在代码量累计到一定程度时,重构过的代码会更加易于添加新功能) 3,什么时候重构? 添加新功能之前重构 添加新功能最快的方法往往是先修改现有代码,使新功能容易被加入。 使代码更易理解时重构 顺便重构(修复bug,添加新功能) 代码复审(code review)时重构 总而言之:重构的门槛远远没有想象中那么高,重构是对既有代码的修改,也许我们在无意识中就已经做了这样的工作,一方面继续保持良好的编程习惯,另一方面学习更加成体系的重构手法。 就如同重构的定义,在可用的前提下,提高重构的技术。 什么时候不应该重构? 对于一段凌乱的代码,如果不需要修改它,就不需要重构。 只有当你需要理解其工作原理时,重构才变得有价值。 如果重写比重构更加容易,那就不需要重构了。(判断) 4,重构会遇到哪些问题? “毕竟生活里很少有晴空万里的好事” ——Martin Fowler 延缓新功能开发 先添加新功能再重构,还是先重构再添加新功能,这不是一个对错的问题,而是一个取舍的分叉口。 Martin Fowler的回答醍醐灌顶

spring----对IoC和DI的理解

て烟熏妆下的殇ゞ 提交于 2020-05-01 02:40:05
 学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 一、分享Iteye的开涛对Ioc的精彩讲解   首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/blog/1413846 1.1、IoC是什么    Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。 在Java开发中, Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:   ● 谁控制谁,控制什么 : 传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建; 谁控制谁?当然是IoC 容器控制了对象;控制什么

spring依赖注入和控制反转

此生再无相见时 提交于 2020-05-01 02:39:28
2017-11-15 学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 一、分享Iteye的开涛对Ioc的精彩讲解 首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/blog/1413846 1.1、IoC是什么 Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。 在Java开发中, Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下: ●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建; 谁控制谁?当然是IoC 容器控制了对象;控制什么

Oracle 函数 ROLLUP,CUBE

好久不见. 提交于 2020-04-27 22:48:04
创建测试表 group_test create table group_test (group_id int, job varchar2(10), name varchar2(10), salary int); 初始化数据 insert into group_test values (10,'Coding', 'Bruce',1000); insert into group_test values (10,'Programmer','Clair',1000); insert into group_test values (10,'Architect', 'Gideon',1000); insert into group_test values (10,'Director', 'Hill',1000); insert into group_test values (20,'Coding', 'Jason',2000); insert into group_test values (20,'Programmer','Joey',2000); insert into group_test values (20,'Architect', 'Martin',2000); insert into group_test values (20,'Director', 'Michael',2000)

IOC框架之 Unity 入门

喜你入骨 提交于 2020-04-27 02:42:26
十年河东,十年河西,莫欺少年穷 学无止境,精益求精 Unity是什么? Unity是patterns & practices团队开发的一个轻量级、可扩展的依赖注入容器,具有如下的特性: 1. 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能还包含了其它被依赖的对象实例。 2. Unity允许将预先配置的对象注入到类中,实现了inversion of control (IoC)的功能。在Unity中,支持constructor injection(构造器注入), property setter injection(属性设值注入)以及method call injection(方法注入)。ps:这里的方法注入与Martin Fowler定义的接口注入类似而稍有区别。 3. 支持容器的体系结构。一个容器可以有子容器,允许从子容器到父容器的对象定位查询。 4. 可以通过配置文件进行准备和配置容器。 5. 不会影响到类的定义(属性设值注入和方法注入除外),这也是轻量级容器的一个体现。 6. 支持自定义的容器扩展。 使用Unity,最基本步骤有三步。 1. 建立容器; 2. 将接口与类的映射注册到容器中; 3. 从容器中解析出正确的对象。 为了接下来的说明,我们先编写几个后面需要的接口和类: 准备工作:ILogger 接口 public interface ILogger {

Oracle PLSQL游标、游标变量的使用

房东的猫 提交于 2020-04-25 04:50:12
参考文章: https://www.cnblogs.com/huyong/archive/2011/05/04/2036377.html 在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现 使用有四个步骤:定义、打开、提取、关闭 例子: 09:52:04 SCOTT@std1> DECLARE 09:52:07 2 CURSOR c_cursor 09:52:07 3 IS SELECT ename, sal 09:52:07 4 FROM emp 09:52:07 5 WHERE rownum<11; 09:52:07 6 v_ename emp.ename%TYPE; 09:52:07 7 v_sal emp.ename%TYPE; 09:52:07 8 BEGIN 09:52:07 9 OPEN c_cursor; 09:52:07 10 FETCH c_cursor INTO v_ename, v_sal; 09:52:07 11 WHILE c_cursor%FOUND LOOP 09:52:07 12 DBMS_OUTPUT.PUT_LINE(v_ename||'---'||to_char(v_sal) ); 09:52:07 13 FETCH c_cursor INTO v_ename, v_sal; 09:52:07 14 END LOOP; 09

蓝绿部署、A/B测试以及灰度发布(金丝雀发布)

一个人想着一个人 提交于 2020-04-24 13:55:30
过去的10多年里,很多大公司都在使用蓝绿部署,安全、可靠是这种部署方式的特点。蓝绿部署虽然算不上”Sliver Bullet“,但确实很实用。在有关于“微服务”、“DevOps”、“Cloud-native”的讨论中,蓝绿部署、A/B测试、灰度发布,这三种部署方式往往同时出镜。 那么问题来了,蓝绿部署、A/B测试、灰度发布,这三者之间究竟有何不同? A/B测试 AB测试是为 Web 或 App 界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组(目标人群)随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析、评估出最好版本,正式采用。主要用于to C环境。 A/B测试的作用 消除 客户体验 (UX)设计中不同意见的纷争,根据实际效果确定最佳方案; 通过对比试验,找到问题的真正原因,提高产品设计和运营水平; 建立数据驱动、持续不断优化的闭环过程; 通过A/B测试,降低新产品或新特性的发布风险,为产品创新提供保障。 参考:https://baike.baidu.com/item/AB%E6%B5%8B%E8%AF%95/9231223?fr=aladdin 但是关于A/B测试的有效性,在一份关于 A/B 测试的报告中,Qubit 的 Martin Goodson 认为:大多数 A/B 测试的结果都不太准确。Web