自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(184)
  • 资源 (12)
  • 论坛 (1)
  • 收藏
  • 关注

原创 CPU利用率突增排查总结

1 背景处理CPU突增问题时,首先要对整个系统的整体结构和流量路径做到心中有数。例如流量进入系统要经过负载均衡、网关、服务…引起高利用率的原因可能多种多样,具体情况需要根据具体位置的警报来进行判断。2 场景与解决2.1 单机硬件故障表现:整个系统链路上各个环节流量均正常。可能原因:现如今微服务部署,一台物理机上可能划分多个虚拟机器,并分配给不同的业务使用。由于由于单机硬件性能影响,及同宿主机的其它业务影响,导致自身服务部可用。解决:快速禁用服务,更换机器。通过服务管理中心禁用改机服务,随后替换

2020-11-21 18:22:20 10

原创 mysql分组(group by)后检查是否包含某些值的学习

1 背景开发业务使用mysql数据库时,为了扩展性通常会使用列表(纵表)。如下图,在这个表中抽象出类型和值,当类型增加后,不需要改表结构,直接插入即可。表名:configtypevalue1出行1饮食1娱乐2饮食2娱乐有时候通过这类表建立配置表。初始会通过人工导入一些数据,同时要求数据必须满足某些条件,比如表中约定任意一个type都必须要有“出行”这个值。在人工操作时,有时会发生忘记导入某些数据。从上面的例子看,就是2这个类型下缺少了出行这

2020-11-20 21:52:12 29

翻译 Java Instrumentation API开发Java Agent学习记录

1.简介本文将讨论Java Instrumentation API。Instrumentation API由JVM提供用来修改已加载类的工具,可以提供Java语言编写的插桩功能,动态修改运行时代码的能力。此外本文还会介绍如何开发Java agent,通过Java agent来动态增强系统功能。2.JPDA介绍JPDA(Java platform debugger architecture)定义了一整套完整的调试体系,它将调试体系分为三部分,并规定了三者之间的通信接口[1]。三部分由低到高分别是Jav

2020-11-08 22:34:24 28

翻译 Java并发中的ABA问题学习与解决

1.简介我们将了解在并发编程中的ABA问题。同时学习引起该问题的根因及问题解决办法。2.Compare and swap为了理解根本原因,首先回顾一下Compare and swap的概念。Compare and Swap (CAS)在无锁算法中是一种常见的技术。能够保证并发修改共享数据时,一个线程将共享内存修改后,另一线程尝试对共享内存的修改会失败。我们每次更新时,通过两种信息来实现:要更新的值及原始值。首先Compare and swap 会比较原始值和当前获取到的值。如果相等,那么将值更新为要

2020-10-18 22:09:06 42

原创 Hystrix并发请求合并(Request Collapsing)模式学习

1 背景我们日常开发的系统,对外会提供一些接口。例如提供id可以查询用户个人信息。采用每请求每线程时,系统在处理这类请求时都是来一个请求分派一个处理线程。这些查询都有相似的特性,根据一个同类id查对应的数据。如果是在一个批量查询的场景,如分页查询,我们通常会一次传一批id去查。但在查单次请求的场景下,后台每收到一次请求,就会请求一次存储系统。由于用户每次请求只传一个id,因此乍一看没法像批量查那样减少网络连接数量、请求线程数。受批量查的启发。如果有这种性质相似的单次查询请求。服务端收到了,缓冲一

2020-09-30 21:42:15 81

原创 并发调用隔离之BulkHead模式学习

1 BulkHead模式是什么bulkhead指船的防水壁,如下图:当一个防水壁漏水时不会导致整个船沉掉,起到保护作用,提高稳定性。即通过隔离的形式,让不稳定因素限制在某一个小范围内,不会导致整个系统崩溃。在我们日常开发系统,对外提供服务均以HTTP或RPC的形式对外提供。如下图,每种形式在接收到请求后根据业务的不同会在内部调用多个外部依赖来完成业务。一个接口会依赖多个外部远程服务。外部服务由于各种原因,可能不可靠。会出现超时,无响应的情况。这样就会导致调用线程阻塞。如果有大量的这种请求产生,则会

2020-09-26 21:29:53 29

翻译 熔断保护之断路器模式概念学习

熔断保护在软件系统中进行远程函数调用是很常见的操作。本地和远程函数调用最大的一个区别是远程调用可能会由于各种原因导致调用失败。例如:远程服务没有响应而导致调用挂起,最终直到超时。更糟糕的是,如果有大量的远程调用都出现问题阻塞,这是可能会导致系统关键资源耗尽,例如,线程或连接对象等。最终使多个系统发生级联失败。为了解决这个问题提出了“断路器模式”来防止这种情况发生。断路器的思想很简单,将调用函数包装在一个断路器对象中,这个包装对象会监控调用失败次数。一旦调用失败次数达到阈值,断路器将会打开,对函数的调用

2020-09-23 08:46:11 37

翻译 流量控制之漏桶算法学习

1 流量整形的概念流量整形是一种控制发送速率和数量的机制。通过流量整形能够调节数据传输速度减少拥塞。有两种类型的流量整形算法:漏桶令牌桶2 漏桶算法介绍假设我们有一个桶,我们希望以随机的速率向桶中倒水,并以恒定的速率从桶中取水。因此我们需要在桶底部打一个固定大小的洞,这样来保证水流处的速率是恒定的。由于桶的体积有限,因此倒满后就停止。水流入的速率可以改变,但输出的速率是恒定的。这种平滑输出流量的方法称为漏桶技术。突发进入的流量存储在桶中,并以稳定的速率输出。上图中,假设主机产生突发流量

2020-09-19 21:20:23 189

翻译 Java深拷贝的几种方法

1. 简介在Java中拷贝对象有深拷贝和浅拷贝两种。本文将对这两种方法进行比较,并学习四种实现深拷贝的方法。2. Maven依赖后文实现深拷贝会依赖两个工具 Gson、Jackson 及 apache commons lang。为了进行单元测试我们这里使用assertj流式断言库。<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artif

2020-08-25 13:27:44 119

原创 分布式锁的几种实现方式学习

0 背景RPC(Remote Procedure Call)远程过程调用。不同语言中有很多的框架,比如Java下的dubbo,通用的thrift,gRpc等。本文主要是学习RPC调用通用涉及的流程,不针对具体的RPC框架1 RPC的结构RPC框架一般都由Client和Server两部分组成...

2020-08-02 17:40:49 60

原创 API网关基本概念学习

背景介绍随着公司规模扩大,业务线越来越多。每个业务线肯定会存在一些重复的系统能力。为了提高开发效率,常会将一些公共的能力沉淀,日后复用,从而避免重复工作,提升研发效率。随着微服务的流行,开始出现API网关的概念。介于外部用户与内部系统之间的,作为一个入口,实现对外部请求的协议转换、流量控制、接口监控、鉴权等功能。而这些能力是不同服务所通用,最终实现能力复用,提升研发管理效率。在没有统一服务的时候,我们自己会独立开发一个应用层,介于外部客户端和内部服务见。实现协议转换、流量控制、接口监控、鉴权等功能。

2020-07-12 16:56:44 82

原创 WEB系统访问权限管理模型

1 权限系统模型日常开发的系统包含很多功能,但对于不同的用户只能访问不同的功能。因此这就涉及到了权限管理。权限管理都是针对用户进行,因此前置条件是用户登陆到系统中,最终有一个身份,最终根据这个身份来管理。所以这类权限管理应该包含如下实体。资源:我们系统中所包含的各种功能(系统接口、链接等)。例如查看系统访问记录、更新系统用户资料。权限 :可以操作资源的能力。例如查看系统访问记录权限。角色 :一个系统中有很多权限,而实际在访问系统时,可拥有的权限可能是权限集合的一个子集。因此通过角色来关联可拥有的权

2020-07-11 13:58:16 106

翻译 Java使用Bean Validation验证枚举类型

1.简介第一篇介绍了Bean Validation基本使用。本文主要介绍通过自定义Validation注解来验证枚举。系统提供的默认注解大多数注解无法用来验证枚举。例如,使用@Pattern注解验证enum将会得到错误提示。javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.Pattern' valid

2020-07-10 22:32:23 676

翻译 高并发下缓存常见问题及处理

1 背景在日常开发过程中,为了提高查询速度,我们通常会用到本地缓存或分布式缓存。特别是在高并发场景下使用分布式缓存会遇到很多问题。主要可以归为如下几种:一致性击穿雪崩接下来就看一看如何处理这些常见问题。2 缓存一致性缓存通常对数据库数据缓存。而分布式缓存,还会存在主从结点。从结点会再同步主结点数据。因此在这种情况下访问缓存就可能导致缓存中数据与数据库数据不一致。或从结点数据与主几点数据不一致。对于一致性问题,通常会结合业务特点进行一定折衷,只要确保在业务可接收范围内,实现最终一致即可。

2020-06-13 15:57:59 137

翻译 Guava Cache在日常开发中的使用及问题

1.Guava Cache概念Guava cahe是一个线程安全的本地缓存。当通过缓存查询数据时,未找到所要查询的数据,通过执行自定义数据读取方法获取数据,并将结果存入缓存。通过锁避免多线程重复加载。最终通过应用本地缓存提高查询速度。Guava cache的主要功能如下:对数据未命中,可加载进缓存当缓存数据过期,可移除可根据缓存读取或写入的时间更新过期时间可统计缓存的命中率、异常等数据2.使用Guava Cache通过系统的CacheBuilder来构建缓存对象,并在build方法中指定

2020-06-06 22:19:04 153

翻译 使用Bean Validation 2.0验证Java Bean

1 简介本文将介绍通过标准框架对Java bean的成员进行验证 - JSR 380。验证用户输入是一个常见的需求。Java Bean验证框架是一个用来处理这类验证逻辑的一套标准。通过使用注解简化我们的验证规则开发。2 JSR 380JSR 380[1]是Java API中用来验证Bean所定义的规范。通过@NotNull,@Min 及 @Max等注解实现验证。3.依赖本节介绍使用该框架所需的maven依赖。我们需要添加下述依赖完成验证工作。3.1 Validation API<dep

2020-05-30 21:37:51 118

翻译 Git rebase 自身冲突原因分析与处理

Git rebase工作原理概述在我们的项目中,假设当前的分支状态如下:...--o--*--A--B <-- master \ C--D--...--Z <-- featuremaster当前指向commit B,在“*号”commit创建了分支feature,并进行了多次提交:C到Z。当在分支feature上执行git rebase master后。git定位到*号这次提交。随后需要将Commit C至Z复制到maste

2020-05-16 18:08:21 512

翻译 浏览器反爬虫异常的使用

1 异常在识别中的使用爬虫在抓取浏览器数据时,常会用到代码js代码执行的工具。为了识别,会利用函数栈来进行判断。如下是一个简单的例子来描述问题。如果是在代码执行器中执行就可以暴露出执行器方法名及行列等信息。因此将这些信息上报给后台,与实际信息进行比较,分析判断即可识别出是否是爬虫。(function(){try{ throw new Error("test");}catch(err) { console.log(err.stack);}})();VM754:5 Error:

2020-05-14 00:49:27 194

翻译 mysql分表参数路由策略及库表数的选择

数据表拆分的首要原则,就是要尽可能找到数据表中的数据在业务逻辑上的主体,并确定大部分(或核心的)数据库操作都是围绕这个主体的数据进行,然后可使用该主体对应的字段作为分表键,进行分库分表。 编辑中…...

2020-04-30 23:36:11 183

翻译 mysql分库分表概念学习

背景读写分离的基本概念学习后了解到可以通过该方法进行系统读能力的扩展。但随后会想到如果是大量写的场景如何扩展?这是就用到分库分表。当业务规模不断壮大,数据暴增,可能会出现设置了索引也没法改善数据库性能的问题。这时可以通过水平分区来解决。即将一张数据表存储的大量数据,拆分为多个子表来维护。进行划分主要有三种方式,分表、分库及分库分表。仅分表:在一个库中将一张表拆分为多个表。原有库中的表变...

2020-04-25 00:29:12 92

翻译 mysql读写分离概念学习

读写分离的概念在我们使用单独一个mysql实例的情况下,所有的读写操作均在这一个实例上。若业务系统读操作占大多数时,就可以考虑使用读写分离的模式。使用mysql集群,将一个mysql配置为主库,其它的mysql配置为从库。主库通过binlog将数据同步给从库,这称为主从复制[1]。从主从分离的结构可以看出其优点如下:水平扩展:当请求过大时,我们可以增加从结点对集群扩展,提高服务能力。避...

2020-04-19 14:20:04 113

原创 浏览器反调试绕过无限debugger及代码执行器检测

背景现在做数据爬虫的朋友常有的方法就是利用浏览器的调试能力分析别人JS代码逻辑。如果遇到复杂的代码可能会第三方代码执行功能。例如使用puppeteer的evalute方法执行代码获取结果。而我们做反爬遇到这种情况就是进行调试干扰,例如加入定时器,重复调用debugger,那么调试模式下就影响调试。而对于类似通过evalute方法执行代码进行抓取的爬虫通过异常调用栈即可检测。例如执行代码中故...

2020-04-11 11:22:47 1042

翻译 javascript拦截instanceof

javascript拦截instanceof数据抓取进行问题分析很重的一个方法就是拦截(hook),一般的函数属性拦截通过Proxy即可。而对于instanceof则需要使用Symbol.hasInstance。当一个对象定义Symbol.hasInstance的属性描述符后,就可以拦截到instanceof调用。Object.defineProperty(Navigator, Symbol...

2020-03-31 22:50:49 107

原创 pupppeteer-page-proxy每个页面或请求独立使用代理

1 pupppeteer-page-proxy模块简介puppeteer代理设置方法中介绍了设置代理的几种方式,其中之一是通过拦截请求,再通过http模块转发,给http模块加上代理实现代理设置。pupppeteer-page-proxy[1]nodejs模块就是基于此实现为每个请求或page加代理。其中一些特性如下:支持每个page或每个请求使用代理。内部处理cookie。支持http...

2020-03-23 20:49:50 885

原创 Chrome地理位置信息模拟

Chrome地理位置信息模拟通过Chrome的Sensor面板可以设置经纬度与时区。首先我们要设置允许获取经纬度数据。在地址栏输入chrome://settings/content/location[1]进入位置信息面板。首先设置Chrome允许获取位置信息,如果某些网站位置信息被禁止获取,要从对应的列表中排除,否则提示没有权限。接着在Sensors面板中可以设置默认区域,或者我们可以自定义...

2020-03-20 00:01:48 134

原创 HTML5 音频API产生音频指纹进行用户追踪介绍

背景介绍在浏览器上可以通过生成指纹信息,来反爬虫或进行用户追踪。之前我们提到的有canvas指纹,除此外还有音频指纹。音频指纹的思路和canvas指纹类型。在不同浏览器不同机器上通过音频api产生的声音信息会有略微的差异。因此可以通过这些api来获取我们需要的数据生成指纹。音频指纹实现为了使用音频相关的API,下面的代码是[1]一个通过音频API产生声音的一个例子。// 创建音频上下文 ...

2020-03-05 22:01:00 666

原创 通过实例学习SpringStateMachine之基于Zookeeper的分布式TURNSTILE

背景介绍本系列通过学习SpringStateMachine中附带的10余个Sample来学习SpringStateMachine中的各个概念和用法。项目是使用的分支为2.2.0.RELEASE。项目参考文档也是2.2.0.RELEASE。基于Zookeeper的分布式TURNSTILE简介这个例子是对TURNSTILE[1]的改进,在TURNSTILE demo基础上基于zookeeper增...

2020-03-01 17:07:04 441

原创 通过实例学习SpringStateMachine之Persist

背景介绍本系列通过学习SpringStateMachine中附带的10余个Sample来学习SpringStateMachine中的各个概念和用法。项目是使用的分支为2.2.0.RELEASE。项目参考文档也是2.2.0.RELEASE。Persist简介Persist这个例子演示了通过状态机来更新数据库中记录的状态。例如一条订单记录,有两个状态,支付与未支付。建立对应的订单状态机,当状态机...

2020-02-29 23:55:23 221

原创 通过实例学习SpringStateMachine之Washer

背景介绍本系列通过学习SpringStateMachine中附带的10余个Sample来学习SpringStateMachine中的各个概念和用法。项目是使用的分支为2.2.0.RELEASE。项目参考文档也是2.2.0.RELEASE。Washer简介Washer是对洗衣机的描述。通过建立洗衣机的的状态机来演示如何使用history来实现状态的恢复。 例如甩干的过程中突然按下了暂停按钮。如...

2020-02-23 16:13:39 152

原创 通过实例学习SpringStateMachine之Tasks

背景介绍本系列通过学习SpringStateMachine中附带的10余个Sample来学习SpringStateMachine中的各个概念和用法。项目是使用的分支为2.2.0.RELEASE[1]。项目参考文档也是2.2.0.RELEASE[1]。Tasks简介Tasks演示了在region内如何处理并行任务,并且添加了错误处理方法,在任务恢复执行前,通过自动或手动的方式修正问题。我们在使...

2020-02-23 11:50:06 135

原创 通过实例学习SpringStateMachine之CD Player

背景介绍本系列通过学习SpringStateMachine中附带的10余个Sample来学习SpringStateMachine中的各个概念和用法。项目是使用的分支为2.2.0.RELEASE[1]。项目参考文档也是2.2.0.RELEASE[1]。CD Player简介cd player是对cd播放器的描述。cd播放器可以让用户打开光盘插槽,插入光盘,并通过按下不同的按钮来使用cd播放器的...

2020-02-16 14:08:04 165

原创 通过实例学习SpringStateMachine之Showcase

背景介绍本系列通过学习SpringStateMachine中附带的10余个Sample来学习SpringStateMachine中的各个概念和用法。项目是使用的分支为2.2.0.RELEASE[1]。项目参考文档也是2.2.0.RELEASE[1]。Showcase简介showcase这个例子演示的是一个分层有限状态机(HFSM)[1]。该例中的状态机共分4层,并且引入了action、gua...

2020-02-09 15:07:15 183

原创 通过实例学习SpringStateMachine之TURN STILE

背景介绍本系列通过学习SpringStateMachine中附带的10余个Sample来学习SpringStateMachine中的各个概念和用法。项目是使用的分支为2.2.0.RELEASE[1]。项目参考文档也是2.2.0.RELEASE[1]。TURN STILE简介turnstile是对体育场入口或地铁入口的旋转栅门构建的状态机。状态机的两种状态:LOCKEDUNLOCKED...

2020-02-09 11:48:51 169

原创 SpringBoot中@Enable*与@Import注解

1 背景介绍我们在开发SpringBoot项目时会引用很多功能包,常会看到@Enable*注解[1]。例如使用Spring StateMachine中@EnableStateMachine注解启用状态机相关能力。相关能力就是通过开发一些类,生成实例来提供能力。例如状态机配置选择,状态机配置等。接着查看@Enable*注解通常会带有@Import注解。通过@Import注解实现了@Enable*的...

2020-02-08 13:06:46 297

原创 浏览器爬虫数据采集可视化解析实现之单页面的可视化解析

1 前言在进行数据采集时,也即我们说的爬虫,抓到数据后通常需要进行解析。在PC端通常需要通过写代码进行解析。对于抓取业务较简单的场景,重复写代码完成这样的工作十分耗时。我们希望通过抓取到页面数据后,在页面上进行点选目标元素,就可以直接获得需要的数据,这样提高工作效率。我们在市面上见到的工具有Portia及八抓鱼等工具即通过选择的形式实现解析。本文将介绍实现的主要原理。只要明白了这些原理,其余类似...

2020-01-09 01:02:35 657 2

翻译 chrome android远程调试工作原理

注意⚠️:本文为个人学习原理所翻译的文章,文中介绍的方法还未实践验证,不保证有效可用。目前仅进行了原理学习,后续会补充实际操作过程中遇到的问题。chrome android远程调试工作原理Chrome Android 允许通过桌面对web页面进行远程调试。调试使用了devtools-protocol协议[1]。本文介绍桌面chrome与android chrome间是如何建立连接。andro...

2020-01-04 12:00:40 301

原创 navigator plugins与mimetyps的模拟实现分析

1 调整数组类型和数组成员类型正常navigator.plugins对象数组中成员类型是Plugin,数组类型为PluginArray。正常navigator.mimeTypes数组成员类型是MimeType,数组类型mimeTypes。PluginArray {0: Plugin, 1: Plugin, 2: Plugin, Chrome PDF Plugin: Plugin, Chrome...

2019-12-24 21:28:48 540

原创 LogLog基数估计算法学习与实现分析

1 基本概念1.1 基数基数指一个集合中不同元素的个数。例如集合{A,B,C,B,C}共5个元素,但只有3个不重复的元素。所以基数为3。1.2 基数估计算法基于概率统计理论估计指定集合基数的算法。这种类型的算法降低了存储空间的使用,会带来统计误差。但可以通过一定方法将误差控制在一定范围内1.3 伯努利试验一次实验的结果只有发生和不发生两种,重复做这个实验,直到结果发生为止,记录下实验的...

2019-12-19 22:45:27 245

原创 HTML5 Canvas指纹及反追踪介绍

1 Canvas指纹的简介很多网站通过Canvas指纹来跟踪用户。browserleaks[1]是一个在线检测canvas指纹的网站。一般的指纹实现原理即通过canvas画布绘制一些图形,填写一些文字,随后获取画布的base64编码,再经过hash后得到。下面是一个简单的例子,最终调用toDataUrl会生成一段编码。// Text with lowercase/uppercase/punc...

2019-12-13 22:24:13 2038 1

原创 google GSON打印json所有叶子节点的路径

1.背景当我们有一串json字符串,有时候希望能得到json path。例如JSON.l1.l1_2.l1_2_1 表示节点121的路径。通过GSON提供的功能我们可以快速获取路径。{ "l1": { "l1_1": [ "l1_1_1", "l1_1_2" ], "l1_2": { ...

2019-12-04 21:57:36 215

2014SAP实习生笔试题

SAP实习生笔试题目,包括三部分C++,SQL,及Javascript

2014-05-21

Winsock简单的多线程TCP服务器与客户端

Winsock实现的简单的多线程TCP服务器与客户端。 可以进行文件下载。

2014-03-13

语义网基础教程

书 名: 语义网基础教程 作 者:(希腊)GrigorisAntoniou 出版社: 机械工业出版社 出版时间: 2008 ISBN: 9787111237341 本书是一本语义网的入门性教科书,内容包括语义网技术概述、XML语言、结构化文档、RDF和RDFSchema、网络本体语言OWL、与语义网相关的逻辑与推理规则和本体工程等方面。本书还介绍了一些知名待业公司的语义网应用实例,极具实用参考价值。 本书主要用于大学语义网课程的教学,也是语义网技术专业人士十分难得的参考读物。本书还可作为大学计算机专业本科生教材。

2013-10-19

软件项目管理的九阴真经

1 前言(连载一) 2 如何做业务调研? 2.1 调研工作如何组织? 2.2 调研准备阶段容易犯哪些错误?(上)(连载二) 2.3 调研准备阶段容易犯哪些错误?(中)(连载三) 2.4 调研准备阶段容易犯哪些错误?(下)(连载四) 2.5 现场调研阶段容易犯哪些错误?(一)(连载五) 2.6 现场调研阶段容易犯哪些错误?(二)(连载六) 2.7 现场调研阶段容易犯哪些错误?(三)(连载七) 2.8 现场调研阶段容易犯哪些错误?(四)(连载八) 2.9 现场调研阶段容易犯哪些错误?(五)(连载九) 2.10 现场调研阶段容易犯哪些错误?(六)(连载十) 2.11 调研工作方法推荐(连载十一) 2.12 接口调研背景知识(上)(连载十二) 2.13 接口调研背景知识(下)(连载十三) 2.14 调研后续工作落实阶段(连载十四) 3 如何写解决方案? 3.1 解决方案难写在哪里?(连载十五) 3.2 坏的解决方案有哪些特征?(上)(连载十六) 3.3 坏的解决方案有哪些特征?(中)(连载十七) 3.4 坏的解决方案有哪些特征?(下)(连载十八) 3.5 写好方案心得(上)(连载十九) 3.6 写好方案心得(下)(连载二十) 3.7 方案分类及用途(连载二十一) 4 如何做产品演示? 4.1 什么是演示?(连载二十二) 4.2 演示的目的 4.3 售前演示为什么效果不好?(上)(连载二十三) 4.4 售前演示为什么效果不好?(下)(连载二十四) 4.5 售前演示工作应如何组织?(上)(连载二十五) 4.6 售前演示工作应如何组织?(下)(连载二十六) 4.7 如何准备标准演示套路?(上)(连载二十七) 4.8 如何准备标准演示套路?(下)(连载二十八) 4.9 如何进行现场演示(一)(连载二十九) 4.10 如何进行现场演示(二)(连载三十) 4.11 如何进行现场演示(三)(连载三十一) 4.12 如何进行现场演示(四)(连载三十二) 4.13 如何进行现场演示(五)(连载三十三) 4.14 如何组织演示后工作(连载三十四) 4.15 演示方案准备经常考虑的问题(连载三十五) 5 如何做用户考察? 5.1 前言(连载三十六) 5.2 典型用户有什么意义? 5.3 典型用户应如何管理(上)(连载三十七) 5.4 典型用户应如何管理(下)(连载三十八) 5.5 用户现场考察应如何组织?(上)(连载三十九) 5.6 用户现场考察应如何组织?(中)(连载四十) 5.7 用户现场考察应如何组织?(下)(连载四十一) 6 如何做公司介绍? 6.1 前言(连载四十二) 6.2 哪些情况下需要公司介绍 6.3 正式陈述时常见错误? 6.4 口头和会面介绍时常见技巧(连载四十三) 6.5 在客户处进行公司介绍三个要点 6.6 如何对在公司考察客户做介绍(连载四十四) 6.7 做好总部公司介绍的三个决窍 6.8 公司总部接待考察客户要注意的细节 7.1 培训工作在项目实施中作用(上)(连载四十五) 7.2 培训工作在项目实施中作用(中)(连载四十六) 7.3 培训工作在项目实施中作用(下)(连载四十七) 7.4 培训工作应如何组织?(连载四十八) 7.5 培训注意事项(连载四十九) 7.6 总部培训 8 如何做现场推广? 8.1 现场推广工作可进行条件?(连载五十) 8.2 现场推广工作为什么进展慢? 8.2.2 要推广的业务流不完整(连载五十一) 8.2.4 没有激发用户的主动性(连载五十二) 8.2.6 边界总在变更(连载五十三) 8.3 现场推广工作如何才能做好?(连载五十四) 9 如何做项目验收? 9.1 验收工作应如何组织?(连载五十五) 9.1.3 主动沟通(连载五十六) 9.1.4 写好备忘录(连载五十七) 9.2 如何催款? 10 如何做项目团队管理 10.1 如何做项目团队管理之前言(连载五十八) 10.2 好的项目团队构建要求 10.3 好团队的两个特征(连载五十九) 10.4 如何看待项目经理在团队中作用 10.5 团队建设心得和误区(连载六十)

2013-10-04

微软团队-成功秘诀

书名: 微软团队:成功秘诀 英文原书名: Dynamics of Software Development 作者: 吉姆.麦卡锡 译者: 苏斐然 本书叙述了吉姆.麦卡锡带领微软Visual C++开发团队的故事,告诉读者如何构建一个优 秀的软件开发团队,如何在一段时间内成功地开发一个软件,而且此后不断地完成新版, 并一直受到市场的肯定。他将自己思考的结晶和种种惨痛的教训归纳出54条言简意赅的法 则,从产品设计、程序开发到成功的营销,无所不包,在微软,本书是每一位项目经理的 必读圣经。 推荐序一 …III 推荐序二 …VII 出版者的话 …X 译者序 …XII 作者简介 …XV 作者序 …XVII 绪论 软件开发的四个时期 软件开发的省思 …4 软件开发的四个时期 …9 第一篇 布局时期 组织开发团队 …16 品保人员(QA)是少数民族? …18 谁来设计产品? …19 法则1 建立一个共同的目标 …22 法则2 使大家主动投入 …38 法则3 建立开发多版本的技术规划 …42 法则4 别做笨蛋 …52 死亡进行曲 …56 法则5 刺探敌情 …61 法则6 注意人员的组成比例 …68 法则7 运用特色监督小组 …71 法则8 项目经理的职责 …89 团队的精神 …93 法则9 要权威,不要霸权 …97 竞争 …104 人类学缩影 …105 软件竞争 …108 法则10 没有竞争对手?未必是好事 …111 法则11 竞争者紧追不舍?推出创新的功能特色 …115 法则12 落后竞争对手?加大投入,更快推出新版本 …119 法则13 领先竞争对手?不要回头 …123 法则14 保持新鲜 …126 顾客 …129

2013-09-15

《Visual C++音频/视频技术开发与实战》前9章源码

《Visual C++音频/视频技术开发与实战》前9章源码 含有可执行文件,不过原书代码存在问题用的话自己要修改一下。

2013-05-13

程序设计培训讲义 递归

程序设计培训讲义递归 ppt 用c 来描述的。

2012-01-08

软件设计师考试试题 数据库部分收集

软件设计师考试试题 数据库部分,主要是理论部分。

2012-01-08

FASTJSON那些事.pptx

这篇文章告诉大家: * Fastjson究竟有多快 * 为什么Fastjson这么快 * 你能用Fastjson来做什么! * 如何获得fastjson?

2019-09-22

xtext 2.7.3

Xtext是一个真正的实现编程语言的开源框架。它使用了人们熟知的方法来实现语言,比如解释器、符号表、编译器等。

2016-05-06

WxWidget教程

wxWidgets是一个给程序员使用的开发包,这个开发包用来开发用于桌面电脑或者移动设备的 GUI(图形用户界面,下同)应用程序。它提供了一个编程框架,作了很多底层的工作以便给应用程序 及其控件提供默认的行为。wxWidgets库给程序员提供了大量的类,这些类支持很多方法(方法是C+ +中的关键词)以供其使用,程序员可以通过重载这些方法来实现定制的行为. 一个典型GUI程序所作 的事情包括: 显示一个包含各种控件的窗口,在窗口中绘制特定的图形或者图像,响应来自鼠标,键 盘以及其它输入设备的输入,和其它的进程通信,调用别的应用程序等,wxWidgets所做的事情,就是 让程序员可以通过更简单的手段来实现所有这些当代应用程序的通用特性.

2015-09-13

程序员面试金典 英文版 第四版

程序员面试金典 英文版 第四版,讲解了面试中的经典题目。英文版文字版质量很高。

2015-08-20

FserSuN的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除