综合( 右侧选择分类 )
java

一文了解JVM

一、什么是JVMJVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是平台无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java
451 人浏览
java

正交分析法设计理论及实践

一、理念介绍在黑盒用例设计方法中有一个大家耳熟能详的正交分析法,却鲜有人知 “Pairwise”设计理念。设想一种常见的场景,工期很紧的项目,原定的测试时间被“无理”地压缩之后,如何能用极少的时间去保证更高的质量呢?举个例子,如果让你测试一下word字体效果,你会整理出多少个用例呢?答案很简单是2的七次方=128个用例,但当工期特别紧的时候(128个用例执行不完)你又会从中选取哪些用例来执行呢?“
497 人浏览
java

Kubernetes在宜信落地实践

一、容器云的背景伴随着微服务的架构的普及,结合开源的Dubbo和Spring Cloud等微服务框架,宜信内部很多业务线逐渐了从原来的单体架构逐渐转移到微服务架构。应用从有状态到无状态,具体来说将业务状态数据如:会话、用户数据等存储到中间件中服务中。微服务的拆分虽然将每个服务的复杂度降低,但服务实例的数目却呈现出爆炸式增长,这给运维增加难度,一方面是服务部署、升级,另一方面是服务的监控故障恢复等。
502 人浏览
java

通过OpenGL理解前端渲染原理(1)

通过OpenGL理解前端渲染原理,本文着重介绍渲染管线工作流程。一、OpenGLOpenGL,是一套绘制3D图形的API,当然它也可以用来绘制2D的物体。OpenGL有一大套可以用来操作模型和图片的函数,通常编写OpenGL库的人是显卡的制造者。我们买的显卡都支持特定版本的OpenGL。下图是用OpenGL做的旋转的立方体。二、渲染原理2.1 渲染管道在OpenGL中,所有东西都在一个3D的空间里
448 人浏览
java

AI中台——智能聊天机器人平台的架构与应用(分享实录)

内容来源:宜信技术学院第3期技术沙龙-线上直播|AI中台——智能聊天机器人平台主讲人:宜信科技中心AI中台团队负责人王东导读:随着“中台”战略的提出,目前宜信中台建设在思想理念及架构设计上都已经取得了很多成果。宜信是如何借助中台化的思想打造“AI中台”及相关的智能产品呢?本次直播,宜信科技中心AI中台团队负责人王东老师分享了宜信AI中台的具体实施路径,并重点介绍了AI中台的智能产品——智能聊天机器
472 人浏览
java

基于可视化配置的日志结构化转换实现

导读:数据总线DBus的总体架构中主要包括六大模块,分别是:日志抓取模块、增量转换模块、全量抽取程序、日志算子处理模块、心跳监控模块、Web管理模块。六大模块各自的功能相互连接,构成DBus的工作原理:通过读取RDBMS增量日志的方式来实时获取增量数据日志(支持全量拉取);基于Logstash,flume,filebeat等抓取工具来实时获得数据,以可视化的方式对数据进行结构化输出。本文主要介绍的
488 人浏览
java

一个项目的SpringBoot微服务改造过程

SSO是公司一个已经存在了若干年的项目,后端采用SpringMVC、MyBatis,数据库使用MySQL,前端展示使用Freemark。今年,我们对该项目进行了一次革命性的改进,改造成SpringBoot架构,并且把前后端分离,前端采用Vue框架。一、使用SpringBoot架构进行改造1.1 为什么使用SpringBoot相比较于传统的Spring,SpringBoot具有以下优点:部署简单,S
474 人浏览
java

程序员笔记|详解Eureka 缓存机制

引言Eureka是Netflix开源的、用于实现服务注册和发现的服务。Spring Cloud Eureka基于Eureka进行二次封装,增加了更人性化的UI,使用更为方便。但是由于Eureka本身存在较多缓存,服务状态更新滞后,最常见的状况是:服务下线后状态没有及时更新,服务消费者调用到已下线的服务导致请求失败。本文基于Spring Cloud Eureka 1.4.4.RELEASE,在默认r
448 人浏览
java

程序员笔记|编写高性能的Java代码需要注意的4个问题

一、并发Unable to create new native thread ……问题1:Java中创建一个线程消耗多少内存?每个线程有独自的栈内存,共享堆内存问题2:一台机器可以创建多少线程?CPU,内存,操作系统,JVM,应用服务器我们编写一段示例代码,来验证下线程池与非线程池的区别://线程池和非线程池的区别publicclassThreadPool{ publicstaticinttim
493 人浏览
java

程序员笔记|常见的Spring异常分析及处理

一、前言相信我们每个人在SpringMVC开发中,都遇到这样的问题:当我们的代码正常运行时,返回的数据是我们预期格式,比如json或xml形式,但是一旦出现了异常(比如:NPE或者数组越界等等),返回的内容确实服务端的异常堆栈信息,从而导致返回的数据不能使客户端正常解析; 很显然,这些并不是我们希望的结果。我们知道,一个较为常见的系统,会涉及控制层,服务(业务)层、缓存层、存储层以及接口调用等,其
450 人浏览
java

我是如何在2年内逆袭成为BAT年薪40W的资深开发工程师的?

我是如何在2年内逆袭成为BAT年薪40W的资深开发工程师的?坐标:杭州 | 工作时间:2年 | 年薪:40W毕业院校:普通二本(非计算机专业)现任职位:BAT某公司资深开发工程师身边的师弟师妹经常问到:非计算机专业出身,你是在2年内如何逆袭成BAT年薪40W的资深开发工程师的。其实很简单——努力!我16年毕业于普通的二本学校,非计算机专业出身,只因为对软件开发感兴趣,所以找工作的时候就一直投IT行
522 人浏览
java

面试:你懂什么是分布式系统吗?Redis分布式锁都不会?

我面试过上千个程序员,我发现有80%的程序员对于分布式系统,并没有一个很清晰的概念。分布式系统涉及到很多的技术、理论与协议,很多人也说,分布式系统是“入门容易,深入难”,有一些人简历上写着熟悉分布式系统,但是随着我深入问下只能算是管中窥豹,只见得其中一斑。那么究竟什么是分布式系统?分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的
721 人浏览
java

为什么80%的码农都做不了架构师?

一般来说技术团队的金字塔顶尖往往是技术最牛的人做架构师(或TL)。所以架构师在广大码农中的占比大概平均不到 20%。而架构师也可以分为初级、中级、高级,江湖上真正高水平的架构师就更少了。所以,80%码农干上许多年,还是做不了架构师,正在辛苦工作的程序员们,你有没有下面几种感觉?① 我的工作就是按时完成领导交给我的任务,至于代码写的怎样,知道有改进空间,但没时间去改进,关键是领导也不给时间啊。② 我
543 人浏览
java

java高级技术体系,撸了今年阿里、头条和美团的面试,我有一个重要发现

就目前大环境来看,跳槽成功的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。最近我搜集了93套阿里、腾讯、美团、网易等公司19年的面试题,把技术点梳理成一份大而全的“Java高级工程师”面试xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节,由于篇幅有限,这里以图片的形式给大家展示一部分。这份 xmind 尤其适合:1.近期想跳槽
798 人浏览
php

为什么程序猿996多猝屎,而企业家007却不会?

557 人浏览
php

PHP - 将macOS系统下的PHP升级成最新版本(7.3),并设为默认

1,通过 brew 安装 php在终端输执行如下命令,不需要指定安装php版本,它会自动升级到最新版本,同时brew会自动update。1brew install php2,启用新版本的 php(1)安装后我们在终端执行php -version会发现版本还是老的:(2)首先我们执行如下命令打开.bash_profile1sudo vim ~/.bash_profile(3)按下i键启用编辑模式,并
635 人浏览
php

MySQL的text类型的最大长度

有个字段是text类型,竟然67kb的内容都保存不了,说是 Data too long, 爆掉了查看了一下,原来是这样的: TINYTEXT256 bytes TEXT65,535 bytes~64kbMEDIUMTEXT 16,777,215 bytes~16MBLONGTEXT4,294,967,295 bytes~4GB改成mediumtext就ok了,16M应该够用了
603 人浏览
php

2019年8月编程语言排行

八月头条:波澜不惊的月度排行 相比 7 月榜单,本月编程语言的排名并未有太大波动,因此TIOBE 官方也将 8 月编程语言排行榜戏谑为“Silly season”。在 Top 10 中唯一的变化就是 Objective-C 和 SQL 的位置首次发生了变换(Objective-C 位列第九,SQL 排名第十)。近年来,Objective-C 在苹果主推 Swift 的举措下,发展得尤为艰难。不过
520 人浏览
kotlin

包与导入

源文件通常以包声明开头:packagefoo.bar funbaz(){} classGoo{} //……源文件所有内容(无论是类还是函数)都包含在声明的包内。 所以上例中baz()的全名是 <foo.bar.baz、Goo 的全名是 foo.bar.Goo。如果没有指明包,该文件的内容属于无名字的默认包。默认导入有多个包会默认导入到每个 Kotlin 文件中:kotlin
538 人浏览
kotlin

基本数据类型

在 Kotlin 中,所有东西都是对象,在这个意义上讲我们可以在任何变量上调用成员函数和属性。 一些类型可以有特殊的内部表示——例如,数字、字符和布尔值可以在运行时表示为原生类型值,但是对于用户来说,它们看起来就像普通的类。 在本节中,我们会描述 Kotlin 中使用的基本类型:数字、字符、布尔值、数组与字符串。一、数字Kotlin 处理数字在某种程度上接近 Java,但是并不完全相同。例如,对于
488 人浏览