接口测试 Postman 做接口自动化测试_入门篇

  • 可能是目前最好用的web接口调试工具
  • 无需注册(注册后可多终端同步用例)
  • 免费(每年付费$60可用云服务,30天免费试用)
  • 保存历史记录
  • 支持录制请求
  • 基于Chrome的V8引擎,支持JS脚本(基本支持ES6,浏览器相关对象和API和require() import等除外)
  • 同样的代码和用例可用于自动化接口测试,见它的命令行版本Newman介绍
  • 能生成各种语言的HTTP请求代码模板
  • 能生成比较好看的在线API文档(支持MarkDown)
  • 提供简易版持续集成(Monitor功能,只支持公网IP的请求…不如Jenkins实用)
选它的做自动化测试的理由:
  • 满足互联网公司的多数场景
  • 超轻,比另一个热门选择——JMeter门槛低、开发效率高、界面顺眼
  • 开发几乎人手一个,容易沟通,容易推动开发自测
  • 容易拉功能测试入坑,发生人员变动时容易交接
不选它的理由:
  • 功能受限:Postman运行在沙盒里,Newman虽然基于Node.js,但一套脚本2边共用决定了它的功能不能比Postman多,无法用在以下场景:
  • 需要读写文件
  • 需要读写数据库
  • 需要引入外部库,如不常见/自定义的加密方式
  • 非HTTP协议
  • 毕竟是调试小工具出身,和成熟的自动化测试框架在管理用例、代码复用、稳定性、报告,甚至易用性上都有明显差距,用的人要有足够能力从坑里爬出来
  • 如果项目经常用JMeter做接口测试,有人足够熟悉JMeter,可以考虑把脚本拆分到单个接口的粒度,花点功夫把功能和性能自动化都做了,不用维护2套
  • 如果全英文和缺乏中文资料也算的话

安装
https://www.getpostman.com/apps
建议选择Mac/Windows app,比起Chrome app,下载不需要,功能更强大

基本使用
官方文档
教程
接口测试工具 postman, 2016-09-01(基于Chrome版的Postman,和桌面版大同小异)
 
[API 测试]postman, 2016-02-29
 
API自动化测试利器——Postman, 2015-09-26(教程里的版本比较旧了,但还是讲得不错)
 
How to write powerful automated API tests with Postman, Newman and Jenkins, 2015-09-03
 
How to write automated tests for APIs using Postman – Part 1, 2014-03-07
 
How to write automated tests for APIs with Postman – Part 2, 2014-04-17
 
Writing automated tests with Postman – Part 3, 2014-05-09
  • 有些早期文章会提到Jetpack,曾经收10美元,现在成了Postman自带的Collection Runner,可以批量执行用例
示例
Postman Echo
Making the perfect HTTP request using Postman Echo, 2015-11-13
Cooper's Meal Plan
Conditional Workflows in Postman, 2016-03-23
Spotify Playlist Generator
Generate Spotify Playlists using a Postman Collection, 2016-11-09
CurencyCloud的Postman集合和使用说明

录制接口
Capturing requests (native app)
 
Using Postman Proxy to Capture and Inspect API Calls from iOS or Android Devices,2016-06-26
接口调用方希望测试业务逻辑时,用不着Fiddler/Charles抓包再往里面一个个填这么麻烦
 
开启Postman的代理(默认5555端口),浏览器/手机设好对应的IP和端口就行
支持正则表达式过滤URL,建议排除掉静态资源、流量统计站和别的后台进程时不时请求的网站
 
baidu|google|microsoft|github|qq\.com|.*\.(html?|css|js|png|jpe?g|webp|ico)$
可以设置保存的位置:
 
如果所有操作步骤都要做接口测试,建议直接保存到目标集合
 
如果一大堆操作里只取其中一个到几个接口,建议保存到历史记录,挑出想要的另存到目标集合,不用浪费时间删

Collection Runner
Running a collection
  • 适合一次运行/调试多个用例,不用自己一个个点发送
  • 适合开发自测接口性能(例如循环个10000次),至少响应时间和稳定性都过关了才交给别人调用
  • 适合做简单的数据驱动测试——CSV文件里写上各种合法非法参数组合,1个集合/文件夹只放1个接口,关联起来点运行就是
  • runtime、默认行为(比如不保存环境变量)、可以指定数据文件等跟Newman一样,适合用界面调通了用例再放到命令行做持续集成
Postman集合的概念
导出之后可以看到1个集合其实就是1个json文件,打开文件就能看到,里面的item属性是个数组,每个用例都是数组里的1个JSON对象
 
Postman/Newman1次只能跑1个集合,各个集合之间没有任何关系
Postman文件夹的概念
文件夹实际上也是集合的item数组里的对象,它里面也有1个item数组,文件夹里的用例是这数组里面的对象
 
collection runner/Newman批量跑用例的最小粒度是文件夹
  • 目前集合下只支持1级文件夹,不推荐场景搞太复杂,用例管理起来有难度
  • 目前集合和文件夹只能按字母顺序排序,用例可以拖动排序
  • 目前搜索不能搜到URL地址,建议用例名写成 /path/to/api 接口描述,方便看和搜索
如果打算做自动化和持续集成:
  • 集合、文件夹的名字建议英文无空格,方便命令行调用
  • 要么不放,要么全放文件夹
  • 每个文件夹测完全独立的子场景,文件夹之间的用例不要有顺序、状态等依赖关系
如果你不是从写用例到搞持续集成都包了并且一直由你自己维护,不能假设别人会按你想要的方式、顺序、设置运行测试
 
别人写的脚本可能运行整个集合或逐个文件夹运行,不同文件夹之间可能同步可能异步,可能会保存运行中产生的环境变量也可能不保存
此外,越多耦合,稳定性越差,维护工作量越大
流程控制
只有在collection runner或Newman里才生效(在普通界面你选哪个发送就是哪个)
/* 假设2个用例的顺序为: 用例A 用例B 如果希望执行顺序为: 用例A -> 用例B -> 用例A,又不想复制一份用例A,那么 */ // 用例A的Tests里写 if (xxx) postman.setNextRequest('null'); // 终止执行 // 用例B的Tests里写 postman.setNextRequest('用例A'); // 【注意】如果不设终止条件,用例A执行完到用例B,用例B执行完又指向用例A,会构成死循环 // PS:postman是Postman提供的全局对象

断言
Testing Sandbox 内建对象、方法、变量和可用的第三方库介绍
 
Testing examples
 
Extracting data from responses and chaining requests, 2014-10-27
在主界面可以靠肉眼看返回结果,但在collection runner/Newman里如果不加断言,跑完没法知道是成功还是失败
 
断言写在Tests标签页里,上手可以参考文档和界面右边的代码模板:
tests['Status code is 200'] = responseCode.code === 200; // 推荐用全等 ===,确保类型和值都一致
tests['Response time is less than 200ms'] = responseTime < 200; tests['Body matches string'] = responseBody.has('xxx'); // 只要有指定关键字就行,在哪、有几个等都不管 tests['Content-Type is present'] = postman.getResponseHeader('Content-Type') || false; // Postman的断言实际上就是往全局对象
tests 添加键值对 // 它的key会显示在报告界面上,value是可以解析为boolean的表达式 // 如果得出的值是true,在报告里显示为成功,false失败 // 【变通】用总是为真的断言来显示信息 tests[`[INFO] Request params: ${JSON.stringify(request.data)}`] = true; // 显示所有请求参数(在自动化测试里很有用)
tests[`跑第${iteration + 1}次`] = true; // 用在runner里循环很多次时 // 迭代次数 iteration 是Postman提供的全局变量,从0开始 // PS:request是Postman提供的全局对象 // responseCode(对象)、responseTime(数字)、responseBody(字符串)目前是Postman收到服务器返回内容才声明的变量 //
【注意】如果你在做自动化测试,目前在接口超时没返回时: // responseCode、responseTime、responseBody都没定义,使用时会导致脚本出错,判断是否超时没返回的只能靠header // request.data里的变量在超时时不解析,很容易让人误会请求参数传错了,建议此时不显示这行
关于'use strict';
因为Postman提供了不少全局变量,写了'use strict';会在用到这些变量的地方出警告提示
 
如果平时有养成好习惯,不用容易出错的写法,不写它也没关系

提取接口返回值
返回JSON时
let json = JSON.parse(responseBody); // responseBody是包含整个返回内容的字符串
// 提取某字段的值: let foobar = json.foo.bar[0].foobar;
// 假设结构为 {"foo": {"bar": [{"foobar": 1}, {"baz": 2}]}}
// 想用在自动化测试可以多写点: let json; try { json = JSON.parse(responseBody); } catch (err) { tests['Expect response body to be valid JSON'] = false; tests[`Response body: ${responseBody}`] = true; console.error(err); }
返回HTML时
// A. 用正则表达式匹配 let foo = responseBody.match(/foo/g);
// g 全局 i 不分大小写 m 多行 tests['blahblahblah'] = foo[0] === 'bar';
// 正则里包含变量时: let foo = 'xxx'; let bar = responseBody.match(new RegExp(`^${foo}.*$`, 'g');
// B. 用CheerioJS库(可以让你用jQuery语法): const $ = cheerio.load(responseBody); $.html()
// 整个网页 $('title').text();
// 标签里的文字 </div> <div> jQuery replaced by CheerioJS in Postman Sandbox, 2016-08-30 </div> <hr> <div> 提取请求参数的值 </div> <div> 利用Postman提供的request.data </div> <div> 如果POST Body里选了form或x-www-form-urlencoded </div> <div>   </div> <div> request对象的data属性是个对象,里面每个属性对应你填的参数名 </div> <div> // 假设有个参数叫phone request.data.phone </div> <div> 如果Body里选的是raw,request.data是字符串 </div> <div> // 假设传JSON字符串,里面有叫做phone的属性 JSON.parse(request.data).phone </div> <hr> <div> 设置环境变量 </div> <div> Setting up an environment with variables </div> <div> Postman的环境变量分为 environment 和 global 2种 </div> <div> 实际上就是environment、globals这2个全局的对象(字典)里的内容 </div> <div>   </div> <div> 它们的key作为变量名,value作为变量的值 </div> <div> environment </div> <div> 满足99%的需要,平时只用它就够了,global留到后文讲 </div> <ul> <li>作用域为整个集合</li> <li>能创建多个environment文件,方便切换不同测试环境</li> </ul> <div> 在地址栏、header、请求参数、外部数据文件里,用 {{变量名}} 获取环境变量的值 </div> <div>   </div> <div> 如:{{URL}}/path/to/api </div> <div> (更常见的${}在JS的ES6语法里被占用了,Postman只能选这么个奇怪写法) </div> <div> 在Pre-request Script和Tests的代码里略有不同: </div> <div> /* 官方提供的方法 */ // 设置 postman.setEnvironmentVariable('variableKey', value); </div> <div> // 注意:通过菜单或以上方法设置的环境变量,值会转成字符串,取的时候要转换 </div> <div> // 获取 let foo = postman.getEnvironmentVariable('variableKey'); </div> <div> // 最常用到字符串数字转数字:Number(foo) // 或者万能的 JSON.parse(foo) 字符串的数字、数组、对象、布尔值扔进去都能转成对应的类型 // 更新 // 就是再设置一次同名的环境变量,换别的值 // 清除环境变量 postman.clearEnvironmentVariable('variableKey'); </div> <div> /* 懒人版 */ </div> <div> // 既然知道实际上是操作 environment 对象,如果你有JS基础,可以直接: </div> <div> // 添加属性 environment.variableKey = 12345; </div> <div> // 少打字,取出时也不用转换类型 </div> <div> // 获取 let foo = environment.variableKey; </div> <div> // 清除 delete environment.variableKey; </div> <div> // 不要用 environment.variableKey = undefined; 实际上属性还在,只是平时我们发现值是undefined时当它不存在了而已 </div> <div> // 而Postman不这么干,它把undefined转成字符串…… </div> <div> // 如果你非要跟自己过不去,用了变量名不允许的字符做key(比如有空格),只能写成 environment['variableKey'] </div> <div> // 只要没跟自己过不去,可以用ES6的对象解构语法一次取多个: let {key1, key2, key3} = environment; </div> <div> 【注意】 </div> <div> 在Postman主界面运行过后,通过代码设置的环境变量会存到IndexedDB,跟在菜单里设置一样,用例跑完不消失 </div> <div> 但在collection runner或Newman跑则是默认不保存,跑完就消失,做自动化测试时要注意 </div> <hr> <div> 动态请求参数 </div> <div> 在runner里循环发n次请求/做自动化测试时,有些接口不适合写死参数 </div> <ol> <li>Postman有以下内建变量,适合一次性使用:</li> </ol> <div> {{$guid}} // 生成GUID {{$timestamp}} // 当前时间戳 {{$randomInt}} // 0-1000的随机整数 </div> <ol> <li>参数依赖上一个请求的返回:</li> </ol> <div> 上个请求的Tests里提取参数存环境变量,这个请求里用{{变量名}}取值 </div> <ol> <li>参数每次都不同,但之后的断言或别的请求里可能还要用:</li> </ol> <div> 在Pre-request Script里写代码处理,存为环境变量,参数里用{{变量名}}取值 </div> <div> 例如 </div> <div> const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; </div> <div> // 随机整数 const getRandomValue = list => list[randomInt(0, list.length - 1)]; </div> <div> // 随机选项 // 随机手机 environment.randomMobile = `18${randomInt(100000000, 999999999)}`; </div> <div> // 随机设备名 environment.randomDevice = getRandomValue(['ios', 'android']); </div> <div> Postman目前没有很方便的重用代码的手段,编辑框也不是IDE,没智能提示,尽量别整那么复杂 </div> <hr> <div> 调试 </div> <div> cmd + alt + c(Windows ctrl + alt + c)打开Postman控制台,可以看请求和响应内容 </div> <div> 用console.log()打印,到控制台看 </div> <div>   </div> <div> 或tests['这里拼出你想看的字符串'] = true在界面/报告看断言 </div> <hr> <div> mock </div> <div> Using a mocking service to create Postman Collections,2016-01-26 </div> <hr> <div> global </div> <div> 不做自动化测试可以跳过这段 </div> <div> 跟environment几乎完全一样,在地址栏、header、请求参数、外部数据文件里也是{{}}调用,除了: </div> <ul> <li>只有1个global文件</li> <li>菜单藏得较深,在生成的API文档里也不解析,决定了它不适合做参数化</li> <li>environment和global同名时,优先用environment</li> </ul> <div> global只建议用在1种场景:定义公共函数 </div> <div> 先正常地写好函数,再用在线压缩工具压成一行 </div> <div>   </div> <div> 在菜单里选 Bulk Edit,以每行一对 key:value 的形式编辑,变量名做key,函数做value </div> <div> assertNotTimeout:var hasResponse=postman.getResponseHeader('Content-Type')?true:false; if(!hasResponse) </div> <div> tests['服务端在超时前没返回任何数据,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false; logParams:if(hasResponse) </div> <div> tests[`[INFO] 请求参数(仅限POST,超时没返回时不解析):${JSON.stringify(request.data)}`]=true; getResponseJson:try{if(hasResponse) var json=JSON.parse(responseBody);}catch(err){ tests['服务端没返回合法的JSON格式,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false; </div> <div> tests[`[INFO] 返回:${responseBody}`]=true; console.error(err);} assertType:var assertType=(name,value,type)=>{let isType=(type==='array')? Array.isArray(value):typeof value===type; tests[`${name}为${type}(实际值:${value})`]=isType;}; assertEqual:var assertEqual=(name,actual,expected)=>{tests[`${name}等于${expected}(实际值:${actual})`]=actual===expected;}; assertNotEqual:var assertNotEqual=(name,actual,expected)=>{tests[`${name}不等于${expected}(实际值:${actual})`]=actual!==expected;}; // 注意在这里定义变量只有 var 的作用域够大,用 let 或 const 的话eval后就销毁了 </div> <div> 假设返回 {"name":"张三","userType":1,"settings":[]},在Tests里一上来就写: </div> <div> eval(globals.assertNotTimeout); // 判断是否超时(通过有没有Content-Type请求头),超时则断言失败 eval(globals.logParams); // 如果不超时,显示发出的请求参数 eval(globals.getResponseJson); // 如果不超时,解析返回的JSON对象,赋给json变量,返回值不合法则断言失败 // 下面定义了3个公共函数,免得每次断言都要写一大串: eval(globals.assertType); eval(globals.assertEqual); eval(globals.assertNotEqual); // 上面3个基本满足日常使用需要 if (json) { assertType('用户名', json.name, 'string'); // 在报告中显示为: '用户名为string,(实际值:张三)' assertType('设置', json.settings, 'array'); // JS里其实没有array类型(数组是object),这里做了处理,让报告更好懂 assertEqual('用户类型', json.userType, 1); // 显示为: '用户类型等于1,(实际值:1)' assertNotEqual('用户类型', json.userType, 2); // 显示为: '用户类型不等于2,(实际值:1)' } </div> <div> 在官方给出更方便的重用代码的方法前,这是除了复制粘贴外唯一的重用方法 </div> <div>   </div> <div> 如果不做自动化测试,且断言写得很简单,不建议这么搞 </div> <div> 如果不幸跳了自动化的坑,通常一个项目会有100~200个接口要做自动化测试,要仔细比较哪种方法成本更高 </div> <div>   </div> <div> 定义函数前要仔细考虑好,万一中途要改参数和返回值,已经写好的n份也得改…… </div> <div> 建议定义的公共函数不超过个位数,并保留好没压缩的版本,不然别人没法接手 </div> <div> Writing a behaviour driven API testing environment within Postman </div> <div> // 如果确实要在代码里设global // 官方的: postman.setGlobalVariable('variableKey', value); // 同样存成字符串 let bar = postman.getGlobalVariable('variableKey'); postman.clearGlobalVariable('variableKey'); // 或者自己操作 globals 对象 </div> <hr> <div> 数据文件 </div> <div> 不做自动化测试可以跳过这段 </div> <div> Using data variables to run a collection multiple times </div> <div>   </div> <div> Using CSV and JSON data files in the Postman Collection Runner, 2014-10-28 </div> <div> Using variables inside Postman and Collection Runner, 2014-02-20 </div> <div> 在collection runner或命令行的Newman里可以加载数据文件 </div> <div> /* JSON格式 */ </div> <div> // 文件里有且只有1个数组,每个对象算1条用例(在Postman里的全局变量叫做data) </div> <div> // key作为变量名,value作为变量的值 </div> <div> // 文件里依然可以用 {{}} 拿到环境变量,注意不要把自己绕进去: </div> <div> // 如果是Pre-request Script里生成的环境变量,直接写进请求参数,不用经这里 [ {"mobile": "17000000001", "pwd": "123456"}, {"mobile": "17000000002", "pwd": "654321"}, {"mobile": "17000000003", "pwd": ""}, {"mobile": "{{ADMIN_MOBILE}}", "pwd": "{{ADMIN_PWD}}"} ] </div> <div> // 显然,这是json文件,并不能在里面写代码(除非你蛋疼在value里写字符串然后在用例里eval) </div> <div> // 用例的请求参数里依然用 {{key}} 拿到数据文件里的值,代码里则是 data.key </div> <div> // 如果key跟environment/globals里的key重名,这里的 > environment > globals </div> <div> /* CSV格式 */ </div> <div> // 第1行变量名,下面是值,每行1条用例,没有空格 </div> <div> // 没JSON格式的数据文件灵活 mobile,pwd 17000000001,123456 17000000002,654321 17000000003, </div> <div> 【注意】 </div> <div> 谨慎使用。这东西增加了调试和定位问题的复杂性,也就大大增加了维护成本 </div> <div>   </div> <div> 而它带来的收益并不明显: </div> <ol> <li>针对单个接口的简单压力测试</li> </ol> <div> Postman不是正经的压测工具,既然选择了它就是图简单方便 </div> <div>   </div> <div> 像JMeter那样用CSV文件做数据源的意义不大,还得另外写程序/脚本生成这样的文件,时间上不划算 </div> <div>   </div> <div> 直接用代码生成数据就好,不差那一两毫秒 </div> <ol> <li>数据驱动测试:一条用例测多种参数组合,包括合法和非法值,避免复制粘贴n条略有不同的</li> </ol> <div> 很诱人,但是 </div> <ul> <li>产品设计时有考虑异常情况吗?</li> <li>需求来源是否统一?</li> <li>需求是否足够稳定?</li> <li>整个项目有统一的异常处理规范还是看开发个人习惯?</li> </ul> <div> 如果不确定有些输入要不要/怎么处理,意味着改动可能会非常大 </div> <div>   </div> <div> 今天非法,明天变合法,后天又变非法 </div> <div> 如果冒烟用例用在持续集成,有测试不通过会阻止发布,会严重干扰正常发版,也影响大家对自动化测试的信心 </div> <div> 此外 </div> <ul> <li>内部的基础组件为了不同项目通用,可能会允许看起来相当没道理的值</li> <li>不对外暴露的接口为了性能,可能会有意去掉所有校验</li> </ul> <div> 不要因为所谓“测试思维”,就在不了解的情况下为了测试而测试 </div> <div>   </div> <div> 这种力气留到探索性测试和安全测试,自动化测试还是要讲求稳定和省事 </div> <div> 此外 </div> <ul> <li>为了能匹配正常和异常情况(和具体哪一种异常情况),断言必须写得比平时复杂</li> <li>然后你会希望把断言条件也写进数据文件里,一种格式,eval后到处通用</li> <li>然后数据文件的格式会变得远比上面的示例复杂</li> <li>然后你会准备一键生成模板的脚本,批量修改的脚本,封装Newman的脚本,一个框架的雏形……别问我怎么知道的</li> </ul> <div> 然后你回过头发现,一开始不用数据文件不就省事多了?! </div> </div> <p>转载于:https://www.cnblogs.com/Zcxxf/p/6612017.html</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1279309572086972416"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(接口测试 Postman 做接口自动化测试_入门篇)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1946619961573175296.htm" title="想家里的唠唠叨叨了" target="_blank">想家里的唠唠叨叨了</a> <span class="text-muted">小城聆听夜雨</span> <div>上一次在家和父母一起过年是2013年吧,想来是有点太久远了,都快忘记了过年的味道了,但是永远忘不了了一家人凑在一起吃饭的场景,很怀念父亲把肉的肥的部分他自己吃,把瘦的部分夹给我吃的样子,我不爱吃肥的部分,父亲一直记在心里。记得有一次过年我做的红烧鱼味道太浓了,以至于没了鱼的鲜香味,父亲尝了一口,给我讲了个一个道理,他说:“孩子,做人做事都是一个道理,就拿你做的这盘红烧鱼来说吧,鱼本质鲜美,即便是你</div> </li> <li><a href="/article/1946619576557039616.htm" title="孩子" target="_blank">孩子</a> <span class="text-muted">好心情2丶0</span> <div>刚刚看了宝妈的短文《你想让孩子成为什么样的人,你就先成为什么样子的人》心深感动,影响最深的一段就是保持微笑,生活是一面镜子,你笑他就笑你哭他就哭........图片发自App儿子百日冲刺这几天完全没有进入状态,手机不离身,每天上QQ聊天,还玩游戏,最可恶的事今天偷偷地烫头发了……在以前我肯定会大发雷霆,可是我一直在自我控制自己,心里默念不生气,少说话,我只是弱弱的问了他一句:“你觉得你今天的事做的</div> </li> <li><a href="/article/1946618938230108160.htm" title="私信回复 | 非英专翻译新手如何入行?有多难?" target="_blank">私信回复 | 非英专翻译新手如何入行?有多难?</a> <span class="text-muted">福州翻译Ivy</span> <div>收到了一条写得清清楚楚的私信:我是今年的应届毕业生,本科经济学跨考了语言学,毕业前跟你一样签了一家大公司的市场岗,实习了几个月,也纠结了几个月,最终在签劳动合同前离职了。一是觉得公司带教机制不完善不利职业成长,二是纠结于千辛万苦为了热爱而跨考的语言专业会逐渐丢弃(日日加班打破了我业余做点翻译的幻想)。过去的整个七月,我想了很多也看了很多资料,最终还是决定做口笔译。但我研究生学习的是偏理论的语言学,</div> </li> <li><a href="/article/1946618682683748352.htm" title="「高能PPT演讲技巧训练」| 让您的演讲更加吸引听众的三条原则" target="_blank">「高能PPT演讲技巧训练」| 让您的演讲更加吸引听众的三条原则</a> <span class="text-muted">全息演说智慧</span> <div>求职面试中的PPT介绍总让你紧张不已,不知所措?论文答辩时要怎样借助PPT表达学术观点?小组汇报、工作总结时的PPT展示怎样做更清晰有力?如何有效避免中途冷场?其实对听众演讲就像喂一个两岁的小孩子吃苹果酱。一匙的量越多,就会有越多的苹果酱掉在地板上。无论在你的幻灯片还是你的演讲正文上,你只需要那些能支持你观点的必要信息,其他的都删掉。当没有什么可以删掉时,你便写完了你的演讲稿。学会这三大原则,让你</div> </li> <li><a href="/article/1946618172903845888.htm" title="2019-04-17" target="_blank">2019-04-17</a> <span class="text-muted">健康平安豆</span> <div>今天,我们学校举行了《第三届读书节汇报演出表彰大会》。老师带领我们大家有秩序的走到操场上,入座后,我看到舞台上摆放着一个超大的大牌子,上面写着《壮丽70年.奋斗新时代》————童心向党做新时代好少年。大会开始第一项,我们学校全体师生起立,升国旗,唱国歌。然后,有大哥哥大姐姐们表演的节目,有老师为我们表演的节目,还有参加的叔叔阿姨们为我们表演的节目......我觉得我今天过得非常开心,也非常有意义,</div> </li> <li><a href="/article/1946615856498798592.htm" title="为什么我们要调用API?用“点外卖”理解程序员的生存智慧" target="_blank">为什么我们要调用API?用“点外卖”理解程序员的生存智慧</a> <span class="text-muted"></span> <div>  你有没有想过:为什么用手机点奶茶时,不用自己去茶园摘茶叶、买奶精、找杯子?因为有人早已把这些麻烦事打包成“服务”,你只需“点一点”就能享受结果。  程序员写代码同理——调用API,就像点外卖:无需自己种粮食、养奶牛、建厨房,直接调用他人封装好的功能,把精力聚焦在更核心的事上。  今天,我们用最通俗的语言,聊聊为什么对程序员来说,“调用API”比“自己从头做”更聪明。一、操作系统:你家的“全能大</div> </li> <li><a href="/article/1946614993327812608.htm" title="读《致教师》轻松做教师" target="_blank">读《致教师》轻松做教师</a> <span class="text-muted">菩提xqsx</span> <div>8月,是个很惬意的时间,作为教师正值暑假过半,心无杂念、游走之余捧一本书静静地阅读,这真是难得的幸福!这次我读的是朱永新教授的《致教师》。用本书中的一句话形容本书在一个教师成长过程的重要性就是:在大师的肩膀上攀升!本书以书信的形式共有四辑,由教师提出教育教学中出现的各种困惑、问题、现象,朱教授用书信的形式给予回答。第一辑是:给我一个做教师的理由,一共15个问题,告诉我们为什么要做教师,如何做老师?</div> </li> <li><a href="/article/1946613981238063104.htm" title="2021-5-11晨间日记" target="_blank">2021-5-11晨间日记</a> <span class="text-muted">飞翔_8019</span> <div>今天是什么日子起床:7:05就寝:23:32天气:晴天心情:好纪念日:昨天跟闺蜜聊天一个多小时叫我起床的不是闹钟是梦想年度目标及关键点:财富自由本月重要成果:理财投资学习今日三只青蛙/番茄钟1.读书2.日更文章成功日志-记录三五件有收获的事务1.不能自己欺骗自己,要实事求是能做多少,不能做多少,为什么做不了,要分析原因。不能太迁就自己。2.自己最近做事效率不高。要想办法提高效率。3.规定自己什么时</div> </li> <li><a href="/article/1946613088727920640.htm" title="2019-06-07" target="_blank">2019-06-07</a> <span class="text-muted">d0945092c1e5</span> <div>烤全羊很多人都吃过,把一头小羊肉弄好之后绑上铁架子上烤,烤到外皮焦脆的时候吃,非常香!但是烤全牛你见过吗?前所未闻是大多数人的感受!在这大众创新万众创业的高频率发展时代,为了响应市场发展需求,牛匠专利烤牛炉应运而生。整只全牛烤制的震慑感,手撕大口吃肉的强烈满足感,令人们风靡于“烤牛”世界。你们从未想过要了解的烤全牛炉牛匠专利烤牛炉1.原创烤牛炉,填补空白市场:人无我有。做别人没有的,是商机、是特色</div> </li> <li><a href="/article/1946609401490108416.htm" title="【财富自由之路】复盘四" target="_blank">【财富自由之路】复盘四</a> <span class="text-muted">Hey大角牛</span> <div>卡片:付费才是捡便宜,你付了费真的捡到便宜了吗?见:注意力〉时间〉金钱。由此公式可以看出注意力是最昂贵的,而恰恰我们以为最重要的金钱反而是相对比较便宜的东西。当然注意力用对了,可以创造出更多的金钱。花钱买时间,把节省下来的注意力用在创造更大价值的事情上是绝对划算的事情。感:周末洗衣服做家务总是会花掉我一天的时间。这段时间牺牲了陪娃,总觉得不划算。思:你是否应该花钱买注意力的判断标准是你未来的产出的</div> </li> <li><a href="/article/1946606589347688448.htm" title="小猴子摘桃" target="_blank">小猴子摘桃</a> <span class="text-muted">5285cd5b6ce6</span> <div>图片发自App一天早晨,天气晴朗,猴哥哥和猴弟弟到河边玩,清澈见底的小河唱着歌流向远方。他俩发现河对岸是一片桃园,茂盛的桃树上结着又大又红的桃子,馋得他俩垂涎三尺,猴弟弟说:“哥哥,我们去摘几个桃子吧!”猴哥哥说:“河上没有桥,我们得想个办法法过河。”他想了一会儿,拽着弟弟就往家跑,原来是回家搬大木盆当小船,还找来一根竹竿做船桨,这样他们就滑着小船过了河,他们摘了很多又大又红的桃子,高兴极了!</div> </li> <li><a href="/article/1946606590626951168.htm" title="每天做一件让自己幸福感爆棚的事情" target="_blank">每天做一件让自己幸福感爆棚的事情</a> <span class="text-muted">倾清阿</span> <div>今天下初雪啦!早晨一起床发现窗外白茫茫一片,真好!下初雪啦!天空中还飘着雪花,刷牙的时候能感受到窗外呼呼的冷风,静静地看了一会儿,享受着这一切。大四不考研,在宿舍躺了两个星期之后,照镜子忽然发现自己出现了假胯宽。身材越来越变形,一阵寒战这样不OK的!我寒假还有好多好多梦想呢!彻底开始决定减肥,不过今天超级冷,出去走了4000步就熬不住了,回来冻得直拉肚子……以后每天做一件让自己幸福感爆棚的事情吧,</div> </li> <li><a href="/article/1946606335147700224.htm" title="无意识现象" target="_blank">无意识现象</a> <span class="text-muted">dear心理咨询师黄倩雯</span> <div>我希望能以少语言尽可能明白的解释无异议整数与在精神分析中意义,并且仅限于这精神分析中的意义。一个出现在意识中的概念和任何其他心理因素,过一会儿就可能消失,再过一段时间,这又可能重新出现。因此我们说他在记忆中并没有发生变化,他的再度出现并不是我们感官重新感觉的结果。为这一点,我们习惯于这样解释假定在一定的时间里纪念只存在于心中,却潜伏在意识里。至于他这样做时采取了什么形式,我们都无法猜测。这是在这点</div> </li> <li><a href="/article/1946605696850128896.htm" title="坚持地努力" target="_blank">坚持地努力</a> <span class="text-muted">旦旦日记</span> <div>很享受这种在家的感觉。昨天上午出去跑了一圈,下午和晚上都是在家里工作,学习电商。同一件事情,让不同阶段的自己来做,效果是大大的不一样。就像我这次重新拾起淘宝,几乎就等于拾起最后一根稻草的感觉,不管你想不想学好、能不能学好,结果是你都得必须学好。因为一家子就指靠着这个生活呢,我特意在书桌上摆了珺祎的四罐奶粉,一扭头就能看到,就是为了时刻提醒自己挣奶粉钱。虽然说现在浙江业务的收入来源足够保证我们这一大</div> </li> <li><a href="/article/1946603795123335168.htm" title="@基层干部 以“45度” 找准“角色设定”" target="_blank">@基层干部 以“45度” 找准“角色设定”</a> <span class="text-muted">夏天_175f</span> <div>政绩观直接反映干部从政的价值取向,是干部履职尽责、创造政绩的思想基础。对于基层干部来说,在实际工作中遇到难题是畏首畏尾还是迎难而上,考验的便是政绩观的正确与否,而“45度人生”则印证了他们应有的正确政绩观的人生姿态。“45度”是一种蹲踞姿势,朝前对准目标,做自身建设的突破者。党的二十大报告指出,“要坚定不移听党话、跟党走,怀抱梦想又脚踏实地,敢想敢为又善作善成,立志做有理想、敢担当、能吃苦、肯奋斗</div> </li> <li><a href="/article/1946603540843655168.htm" title="沪杭线的故事——夫妻" target="_blank">沪杭线的故事——夫妻</a> <span class="text-muted">娟姐说法</span> <div>最近特别忙碌,也不知道忙的什么事情,总是感觉事情总也做不完!周末,以前帮我看娃的阿姨打来电话,我热情的邀请她来杭州家里坐坐,其实我知道她有事情,也想让她来散散心。阿姨到了,因为几年没见面聊起来亲切的不得了!尤其她看到已经上学的娃,喜欢的不得了,总是回想以前孩子小的时候的样子。人生很奇妙,以前觉得离开桐庐就散了,没想到有缘分的人还是要聚在一起。这次阿姨的事情也是个大变故,想当初帮我看娃时,她老公做木</div> </li> <li><a href="/article/1946602907814129664.htm" title="老何大咖:锁定了做哪个项目,就踏踏实实做,不要想三想四,想多了,累" target="_blank">老何大咖:锁定了做哪个项目,就踏踏实实做,不要想三想四,想多了,累</a> <span class="text-muted">老何大咖123</span> <div>老何大咖:网络创业随笔1)、赚钱,在我看来,就是解决3个问题:1、卖什么?2、复制谁?3、怎么复制?……2)、推广不难。最难的是知道自己一辈子卖什么。项目锁定了,习惯性从一而终。不要一会儿A,一会儿B。……3)、赚钱就是抓到核心,做比较重要的事儿。不要在细节上浪费时间。很多人赚不到钱,就是过于注重细节,如此而已!……4)、卖点锁定,口子缩小,深挖一口井,这样成功案例多,也赚钱多,会形成一个良好的循</div> </li> <li><a href="/article/1946602611046150144.htm" title="面试经验分享 | 成都某安全厂商渗透测试工程师" target="_blank">面试经验分享 | 成都某安全厂商渗透测试工程师</a> <span class="text-muted"></span> <div>更多大厂面试题看我的主页或者专栏找我免费领取目录:所面试的公司:某安全厂商所在城市:成都面试职位:渗透测试工程师岗位面试过程:面试官的问题:1.平常在学校打CTF嘛,获奖情况讲下,以及你自己的贡献如何?2.内网渗透主要思路说一下吧?3.web打点过程中有没有遇到过waf?怎么绕过的4.现在给你一个站你会怎么做信息搜集?5.如何快速检测定位网站目录下的webshell呢?6.简单讲下反弹shell的</div> </li> <li><a href="/article/1946602275971592192.htm" title="无所事事的一天" target="_blank">无所事事的一天</a> <span class="text-muted">居山之禾</span> <div>图片发自App感觉今天这一天又被浪费了,什么有意义的事情也没有做,就已经快要结束了。寒冷的冬季不愿走到室外去,一直窝在几乎是封闭的空间里面,室内没有那么寒冷,所以一待就待了快一天。本来想写点什么的,可是,今天却感觉自己并没有什么可写。所以整个下午几乎都只是在看书,消磨时间。其实心里有也有很多的困惑,很多的焦虑。只是不知道怎么处理,怎么消除这些不好的情绪。只好任由其一直在周围盘旋,时不时地靠近自己给</div> </li> <li><a href="/article/1946602021704495104.htm" title="激活干部队伍" target="_blank">激活干部队伍</a> <span class="text-muted">郭强GQ</span> <div>在市场竞争处于劣势的情况下,用干部队伍激活的确定性,应对环境与商业变化的不确定性是组织必须做的事情。干部选拔与任用机制干部选拔与任用要真正建立起基于实际作业的履历,而不是曾经任命过的岗位履历。干部履历,一是作业履历,二是履历的附件,即个人写的自我鉴定。比如,什么地点做过什么事,证明人是谁?这些都要有真实记录。实际的项目作战经验,“上过战场、开过枪、受过伤”,永远是组织的优先标准。明确关键岗位资格要</div> </li> <li><a href="/article/1946601127810232320.htm" title="2019-7-17" target="_blank">2019-7-17</a> <span class="text-muted">yl柠檬草的味道</span> <div>六项精进姓名:袁丽公司:上海缘缀包装材料有限公司【日精进打卡第353天】【知~学习】《六项精进》1遍共242遍《大学》1遍共242遍公司使命、愿景、价值观1遍共23遍【经典名句分享】【行~实践】一、修身:(对自己个人)1、步行:80002、坚持学习19天3、做早餐二、齐家:(对家庭和家人)1、和家人视频,都都快过来了,让她把要带过来的东西准备好,不错!小家伙能熟背我的手机号码了!三、建功:(对工作</div> </li> <li><a href="/article/1946599855459725312.htm" title="20190309易效能5.0践行第三周总结" target="_blank">20190309易效能5.0践行第三周总结</a> <span class="text-muted">小梨子_59bd</span> <div>一、我的三个标签:1.两个孩子的母亲,父母的高度决定孩子的高度,不断学习,更好的陪伴,做孩子的榜样。2.财务工作者,目前在公司里负责财务管理工作。3.广东狮子会会员狮子会是一个公益慈善服务组织,出钱、出力、出心、出席,加入狮子会参加各项服务活动让我和我的家人更好的成长,收获更多的爱。让付出成为习惯。二、【90天大目标】(具体化,可衡量)1、运动:每周至少三次2、阅读:亲子阅读和自己阅读3、早睡22</div> </li> <li><a href="/article/1946598951192948736.htm" title="〖Python 数据库开发实战 - Redis篇②〗- Linux系统下安装 Redis 数据库" target="_blank">〖Python 数据库开发实战 - Redis篇②〗- Linux系统下安装 Redis 数据库</a> <span class="text-muted">哈哥撩编程</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E2%91%A4/1.htm">⑤</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98%E7%AF%87/1.htm">数据库开发实战篇</a><a class="tag" taget="_blank" href="/search/Python%E5%85%A8%E6%A0%88%E7%99%BD%E5%AE%9D%E4%B9%A6/1.htm">Python全栈白宝书</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">数据库开发实战</a><a class="tag" taget="_blank" href="/search/linux%E5%AE%89%E8%A3%85redis/1.htm">linux安装redis</a> <div>订阅Python全栈白宝书-零基础入门篇可报销!白嫖入口-请点击我。推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V!说明:该文属于Python全栈白宝书专栏,免费阶段订阅数量4300+,购买任意白宝书体系化专栏可加入TFS-CLUB私域社区。福利:加入社区的小伙伴们,除了可以获取博主所有付费专栏的阅读权限之外,还有机会加入星荐官共赢计划,详情请戳我。作者:不渴望力量的哈士奇(哈哥),</div> </li> <li><a href="/article/1946597943087788032.htm" title="html sql连接mysql数据库_HTML连接sql数据库" target="_blank">html sql连接mysql数据库_HTML连接sql数据库</a> <span class="text-muted">旋风1968</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/sql%E8%BF%9E%E6%8E%A5mysql%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">sql连接mysql数据库</a> <div>怎样从HTML网页中获取SQL数据库里的数据我现在是一名学生,第一学期快结束了,老师要CSS布局HTML小编今天和大家分享我们每个学习小组用C#做HTML是无法读取数据库的,HTML是页面前端脚本语言,要想从HTML网页中获取SQL数据库里的数据,需要借助JSP或ASP或PHP或RUBY等语言来实现。简单的关系可以这样理解:数据库JSP或ASP或PHP或RUBY等语言HTML如:在JSP页面中显示</div> </li> <li><a href="/article/1946597815983599616.htm" title="5.8g微波雷达芯片_导弹、卫星、雷达的军用芯片龙头——亚光科技" target="_blank">5.8g微波雷达芯片_导弹、卫星、雷达的军用芯片龙头——亚光科技</a> <span class="text-muted">小胖娃</span> <a class="tag" taget="_blank" href="/search/5.8g%E5%BE%AE%E6%B3%A2%E9%9B%B7%E8%BE%BE%E8%8A%AF%E7%89%87/1.htm">5.8g微波雷达芯片</a> <div>亚光电子(上市公司持股97.38%)是国内最大的微波半导体器件、微波电路军用企业之一,与中电科13所、55所同处国内军用微波组件第一梯队。亚光电子主要产品为半导体分立器件、芯片、微波电路及组件,应用于三大领域:雷达、导引头、航天通信(卫星等航天器)。从产业逻辑上来看,亚光电子与紫光国微同处高景气度的军用芯片赛道。亚光电子做军用模拟芯片,实现微波信号的接收与发射,亚光电子的产业也聚焦于收发处理环节;</div> </li> <li><a href="/article/1946597816889569280.htm" title="python分布式爬虫打造搜索引擎--------scrapy实现" target="_blank">python分布式爬虫打造搜索引擎--------scrapy实现</a> <span class="text-muted">weixin_30515513</span> <a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7/1.htm">开发工具</a> <div>http://www.cnblogs.com/jinxiao-pu/p/6706319.html最近在网上学习一门关于scrapy爬虫的课程,觉得还不错,以下是目录还在更新中,我觉得有必要好好的做下笔记,研究研究。第1章课程介绍1-1python分布式爬虫打造搜索引擎简介07:23第2章windows下搭建开发环境2-1pycharm的安装和简单使用10:272-2mysql和navicat的安装</div> </li> <li><a href="/article/1946593778311688192.htm" title="Java大厂面试实录:从电商场景到AIGC的深度技术拷问" target="_blank">Java大厂面试实录:从电商场景到AIGC的深度技术拷问</a> <span class="text-muted">remCoding</span> <a class="tag" taget="_blank" href="/search/Java%E5%9C%BA%E6%99%AF%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8/1.htm">Java场景面试宝典</a><a class="tag" taget="_blank" href="/search/Java%E9%9D%A2%E8%AF%95/1.htm">Java面试</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Boot/1.htm">Boot</a><a class="tag" taget="_blank" href="/search/Kafka/1.htm">Kafka</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%8E%82%E9%9D%A2%E8%AF%95/1.htm">大厂面试</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a> <div>第一轮提问:电商场景与微服务基础面试官:小曾,请描述一个典型的电商秒杀场景,你会如何设计系统架构?涉及哪些关键技术?小曾:秒杀嘛,主要是高并发,我一般会用SpringBoot搭后端,数据库用Redis做缓存,消息队列用Kafka异步处理订单。具体技术细节……呃,好像没细想。面试官(微笑):“不错,Redis和Kafka选得对。那如果用户请求量超10万/QPS,你会如何扩容?SpringCloud的</div> </li> <li><a href="/article/1946593526275960832.htm" title="Java大厂面试实录:从Spring Boot到AI微服务架构的深度拷问" target="_blank">Java大厂面试实录:从Spring Boot到AI微服务架构的深度拷问</a> <span class="text-muted">remCoding</span> <a class="tag" taget="_blank" href="/search/Java%E5%9C%BA%E6%99%AF%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8/1.htm">Java场景面试宝典</a><a class="tag" taget="_blank" href="/search/Java%E9%9D%A2%E8%AF%95/1.htm">Java面试</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Boot/1.htm">Boot</a><a class="tag" taget="_blank" href="/search/Jakarta/1.htm">Jakarta</a><a class="tag" taget="_blank" href="/search/EE/1.htm">EE</a><a class="tag" taget="_blank" href="/search/AI%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">AI微服务</a><a class="tag" taget="_blank" href="/search/Kafka/1.htm">Kafka</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Cloud/1.htm">Cloud</a><a class="tag" taget="_blank" href="/search/AI%E9%9D%A2%E8%AF%95/1.htm">AI面试</a> <div>第一轮提问:电商场景下的高并发架构面试官:小曾,我们公司电商业务面临“双十一”秒杀场景,需要支持百万级并发,你会如何设计系统架构?请结合SpringCloud和消息队列谈谈方案。小曾:(搓手)额……我会用SpringCloudAlibaba,搞个Nacos做服务注册,网关用Zuul,然后订单服务用SpringBoot+Redis缓存,秒杀请求走消息队列,比如Kafka吧,异步处理,降低峰值压力……</div> </li> <li><a href="/article/1946593398236442624.htm" title="Java大厂面试实录:从Spring Boot到AI微服务架构的层层递进" target="_blank">Java大厂面试实录:从Spring Boot到AI微服务架构的层层递进</a> <span class="text-muted">remCoding</span> <a class="tag" taget="_blank" href="/search/Java%E5%9C%BA%E6%99%AF%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8/1.htm">Java场景面试宝典</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Boot/1.htm">Boot</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Cloud/1.htm">Cloud</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/Kafka/1.htm">Kafka</a><a class="tag" taget="_blank" href="/search/Redis/1.htm">Redis</a><a class="tag" taget="_blank" href="/search/Microservices/1.htm">Microservices</a> <div>场景:互联网大厂Java后端面试面试官(严肃):请简单介绍下你参与过的项目,主要使用哪些技术栈?小曾(自信):我参与过电商平台的订单系统,用了SpringBoot+SpringCloudAlibaba,数据库是MySQL+Redis缓存,消息队列用Kafka处理异步任务。面试官(点头):不错,能具体说说订单系统如何应对高并发场景的吗?小曾:我们用了HikariCP优化数据库连接池,Redis集群做</div> </li> <li><a href="/article/1946593272013058048.htm" title="Java大厂面试实录:从Spring Boot到AI微服务架构的深度技术挑战" target="_blank">Java大厂面试实录:从Spring Boot到AI微服务架构的深度技术挑战</a> <span class="text-muted">remCoding</span> <a class="tag" taget="_blank" href="/search/Java%E5%9C%BA%E6%99%AF%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8/1.htm">Java场景面试宝典</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Boot/1.htm">Boot</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Cloud/1.htm">Cloud</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/Kafka/1.htm">Kafka</a><a class="tag" taget="_blank" href="/search/Redis/1.htm">Redis</a><a class="tag" taget="_blank" href="/search/Docker/1.htm">Docker</a> <div>场景:互联网大厂Java后端开发面试面试官(严肃):小曾,请简单介绍下你过往的项目经验,特别是你在微服务架构中解决过哪些技术难题?小曾(自信):我之前参与过电商平台的订单系统重构,将单体应用拆分为SpringCloud微服务架构。我们使用了SpringCloudGateway做网关路由,服务间通过Kafka异步通信,并引入Redis缓存热点数据。面试官:很好,能具体说说你们如何解决订单超卖问题的吗</div> </li> <li><a href="/article/31.htm" title="312个免费高速HTTP代理IP(能隐藏自己真实IP地址)" target="_blank">312个免费高速HTTP代理IP(能隐藏自己真实IP地址)</a> <span class="text-muted">yangshangchuan</span> <a class="tag" taget="_blank" href="/search/%E9%AB%98%E9%80%9F/1.htm">高速</a><a class="tag" taget="_blank" href="/search/%E5%85%8D%E8%B4%B9/1.htm">免费</a><a class="tag" taget="_blank" href="/search/superword/1.htm">superword</a><a class="tag" taget="_blank" href="/search/HTTP%E4%BB%A3%E7%90%86/1.htm">HTTP代理</a> <div>    124.88.67.20:843 190.36.223.93:8080 117.147.221.38:8123 122.228.92.103:3128 183.247.211.159:8123 124.88.67.35:81 112.18.51.167:8123 218.28.96.39:3128 49.94.160.198:3128 183.20</div> </li> <li><a href="/article/158.htm" title="pull解析和json编码" target="_blank">pull解析和json编码</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/pull%E8%A7%A3%E6%9E%90/1.htm">pull解析</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a> <div>n.json文件: [{name:java,lan:c++,age:17},{name:android,lan:java,age:8}]   pull.xml文件 <?xml version="1.0" encoding="utf-8"?> <stu>     <name>java</div> </li> <li><a href="/article/285.htm" title="[能源与矿产]石油与地球生态系统" target="_blank">[能源与矿产]石油与地球生态系统</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E8%83%BD%E6%BA%90/1.htm">能源</a> <div>       按照苏联的科学界的说法,石油并非是远古的生物残骸的演变产物,而是一种可以由某些特殊地质结构和物理条件生产出来的东西,也就是说,石油是可以自增长的....       那么我们做一个猜想: 石油好像是地球的体液,我们地球具有自动产生石油的某种机制,只要我们不过量开采石油,并保护好</div> </li> <li><a href="/article/412.htm" title="类与对象浅谈" target="_blank">类与对象浅谈</a> <span class="text-muted">沐刃青蛟</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80/1.htm">基础</a> <div>        类,字面理解,便是同一种事物的总称,比如人类,是对世界上所有人的一个总称。而对象,便是类的具体化,实例化,是一个具体事物,比如张飞这个人,就是人类的一个对象。但要注意的是:张飞这个人是对象,而不是张飞,张飞只是他这个人的名字,是他的属性而已。而一个类中包含了属性和方法这两兄弟,他们分别用来描述对象的行为和性质(感觉应该是</div> </li> <li><a href="/article/539.htm" title="新站开始被收录后,我们应该做什么?" target="_blank">新站开始被收录后,我们应该做什么?</a> <span class="text-muted">IT独行者</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/seo/1.htm">seo</a> <div>新站开始被收录后,我们应该做什么?         百度终于开始收录自己的网站了,作为站长,你是不是觉得那一刻很有成就感呢,同时,你是不是又很茫然,不知道下一步该做什么了?至少我当初就是这样,在这里和大家一份分享一下新站收录后,我们要做哪些工作。       至于如何让百度快速收录自己的网站,可以参考我之前的帖子《新站让百</div> </li> <li><a href="/article/666.htm" title="oracle 连接碰到的问题" target="_blank">oracle 连接碰到的问题</a> <span class="text-muted">文强chu</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>Unable to find a java Virtual Machine--安装64位版Oracle11gR2后无法启动SQLDeveloper的解决方案 作者:草根IT网 来源:未知 人气:813标签: 导读:安装64位版Oracle11gR2后发现启动SQLDeveloper时弹出配置java.exe的路径,找到Oracle自带java.exe后产生的路径“C:\app\用户名\prod</div> </li> <li><a href="/article/793.htm" title="Swing中按ctrl键同时移动鼠标拖动组件(类中多借口共享同一数据)" target="_blank">Swing中按ctrl键同时移动鼠标拖动组件(类中多借口共享同一数据)</a> <span class="text-muted">小桔子</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BB%A7%E6%89%BF/1.htm">继承</a><a class="tag" taget="_blank" href="/search/swing/1.htm">swing</a><a class="tag" taget="_blank" href="/search/%E6%8E%A5%E5%8F%A3/1.htm">接口</a><a class="tag" taget="_blank" href="/search/%E7%9B%91%E5%90%AC/1.htm">监听</a> <div>        都知道java中类只能单继承,但可以实现多个接口,但我发现实现多个接口之后,多个接口却不能共享同一个数据,应用开发中想实现:当用户按着ctrl键时,可以用鼠标点击拖动组件,比如说文本框。 编写一个监听实现KeyListener,NouseListener,MouseMotionListener三个接口,重写方法。定义一个全局变量boolea</div> </li> <li><a href="/article/920.htm" title="linux常用的命令" target="_blank">linux常用的命令</a> <span class="text-muted">aichenglong</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/1.htm">常用命令</a> <div>1 startx切换到图形化界面 2 man命令:查看帮助信息 man 需要查看的命令,man命令提供了大量的帮助信息,一般可以分成4个部分 name:对命令的简单说明 synopsis:命令的使用格式说明 description:命令的详细说明信息 options:命令的各项说明 3 date:显示时间 语法:date [OPTION]... [+FORMAT] </div> </li> <li><a href="/article/1047.htm" title="eclipse内存优化" target="_blank">eclipse内存优化</a> <span class="text-muted">AILIKES</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a> <div>一 基本说明      在JVM中,总体上分2块内存区,默认空余堆内存小于 40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。     1)堆内存(Heap memory):堆是运行时数据区域,所有类实例和数组的内存均从此处分配,是Java代码可及的内存,是留给开发人</div> </li> <li><a href="/article/1174.htm" title="关键字的使用探讨" target="_blank">关键字的使用探讨</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E5%85%B3%E9%94%AE%E5%AD%97/1.htm">关键字</a> <div>//关键字的使用探讨/*访问关键词private 只能在本类中访问public 只能在本工程中访问protected 只能在包中和子类中访问默认的 只能在包中访问*//*final   类 方法 变量 final 类 不能被继承 final 方法 不能被子类覆盖,但可以继承 final 变量 只能有一次赋值,赋值后不能改变 final 不能用来修饰构造方法*///this()</div> </li> <li><a href="/article/1301.htm" title="JS中定义对象的几种方式" target="_blank">JS中定义对象的几种方式</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/js/1.htm">js</a> <div>    1. 基于已有对象扩充其对象和方法(只适合于临时的生成一个对象): <html> <head> <title>基于已有对象扩充其对象和方法(只适合于临时的生成一个对象)</title> </head> <script> var obj = new Object(); </div> </li> <li><a href="/article/1428.htm" title="表驱动法实例" target="_blank">表驱动法实例</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E9%A9%B1%E5%8A%A8%E6%B3%95/1.htm">表驱动法</a><a class="tag" taget="_blank" href="/search/TDD/1.htm">TDD</a> <div>获得月的天数是典型的直接访问驱动表方式的实例,下面我们来展示一下: MonthDaysTest.java package com.study.test; import org.junit.Assert; import org.junit.Test; import com.study.MonthDays; public class MonthDaysTest { @T</div> </li> <li><a href="/article/1555.htm" title="LInux启停重启常用服务器的脚本" target="_blank">LInux启停重启常用服务器的脚本</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>启动,停止和重启常用服务器的Bash脚本,对于每个服务器,需要根据实际的安装路径做相应的修改   #! /bin/bash Servers=(Apache2, Nginx, Resin, Tomcat, Couchbase, SVN, ActiveMQ, Mongo); Ops=(Start, Stop, Restart); currentDir=$(pwd); echo</div> </li> <li><a href="/article/1682.htm" title="【HBase六】REST操作HBase" target="_blank">【HBase六】REST操作HBase</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hbase/1.htm">hbase</a> <div>HBase提供了REST风格的服务方便查看HBase集群的信息,以及执行增删改查操作   1. 启动和停止HBase REST 服务 1.1 启动REST服务 前台启动(默认端口号8080) [hadoop@hadoop bin]$ ./hbase rest start   后台启动 hbase-daemon.sh start rest   启动时指定</div> </li> <li><a href="/article/1809.htm" title="大话zabbix 3.0设计假设" target="_blank">大话zabbix 3.0设计假设</a> <span class="text-muted">ronin47</span> <div>What’s new in Zabbix 2.0? 去年开始使用Zabbix的时候,是1.8.X的版本,今年Zabbix已经跨入了2.0的时代。看了2.0的release notes,和performance相关的有下面几个:          :: Performance improvements::Trigger related da</div> </li> <li><a href="/article/1936.htm" title="http错误码大全" target="_blank">http错误码大全</a> <span class="text-muted">byalias</span> <a class="tag" taget="_blank" href="/search/http%E5%8D%8F%E8%AE%AE/1.htm">http协议</a><a class="tag" taget="_blank" href="/search/javaweb/1.htm">javaweb</a> <div>响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。 响应码分五种类型,由它们的第一位数字表示: 1)1xx:信息,请求收到,继续处理 2)2xx:成功,行为被成功地接受、理解和采纳 3)3xx:重定向,为了完成请求,必须进一步执行的动作 4)4xx:客户端错误,请求包含语法错误或者请求无法实现 5)5xx:服务器错误,服务器不能实现一种明显无效的请求 </div> </li> <li><a href="/article/2063.htm" title="J2EE设计模式-Intercepting Filter" target="_blank">J2EE设计模式-Intercepting Filter</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>Intercepting Filter类似于职责链模式 有两种实现 其中一种是Filter之间没有联系,全部Filter都存放在FilterChain中,由FilterChain来有序或无序地把把所有Filter调用一遍。没有用到链表这种数据结构。示例如下: package com.ljn.filter.custom; import java.util.ArrayList;</div> </li> <li><a href="/article/2190.htm" title="修改jboss端口" target="_blank">修改jboss端口</a> <span class="text-muted">chicony</span> <a class="tag" taget="_blank" href="/search/jboss/1.htm">jboss</a> <div>修改jboss端口   %JBOSS_HOME%\server\{服务实例名}\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml   中找到 <!-- The ports-default bindings are obtained by taking the base bindin</div> </li> <li><a href="/article/2317.htm" title="c++ 用类模版实现数组类" target="_blank">c++ 用类模版实现数组类</a> <span class="text-muted">CrazyMizzz</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a> <div>最近c++学到数组类,写了代码将他实现,基本具有vector类的功能 #include<iostream> #include<string> #include<cassert> using namespace std; template<class T> class Array { public: //构造函数 </div> </li> <li><a href="/article/2444.htm" title="hadoop dfs.datanode.du.reserved 预留空间配置方法" target="_blank">hadoop dfs.datanode.du.reserved 预留空间配置方法</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/%E9%A2%84%E7%95%99%E7%A9%BA%E9%97%B4/1.htm">预留空间</a> <div>对于datanode配置预留空间的方法 为:在hdfs-site.xml添加如下配置  <property>     <name>dfs.datanode.du.reserved</name>     <value>10737418240</value>    </div> </li> <li><a href="/article/2571.htm" title="mysql远程访问的设置" target="_blank">mysql远程访问的设置</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E9%98%B2%E7%81%AB%E5%A2%99/1.htm">防火墙</a> <div>第一步: 激活网络设置 你需要编辑mysql配置文件my.cnf. 通常状况,my.cnf放置于在以下目录: /etc/mysql/my.cnf (Debian linux) /etc/my.cnf (Red Hat Linux/Fedora Linux) /var/db/mysql/my.cnf (FreeBSD) 然后用vi编辑my.cnf,修改内容从以下行: [mysqld] 你所需要: 1</div> </li> <li><a href="/article/2698.htm" title="ios 使用特定的popToViewController返回到相应的Controller" target="_blank">ios 使用特定的popToViewController返回到相应的Controller</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/controller/1.htm">controller</a> <div>1、取navigationCtroller中的Controllers NSArray * ctrlArray = self.navigationController.viewControllers; 2、取出后,执行, [self.navigationController popToViewController:[ctrlArray objectAtIndex:0] animated:YES</div> </li> <li><a href="/article/2825.htm" title="Linux正则表达式和通配符的区别" target="_blank">Linux正则表达式和通配符的区别</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/%E9%80%9A%E9%85%8D%E7%AC%A6%E5%92%8C%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%8C%BA%E5%88%AB/1.htm">通配符和正则表达式的区别</a><a class="tag" taget="_blank" href="/search/%E9%80%9A%E9%85%8D%E7%AC%A6/1.htm">通配符</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/1976579 首先得明白二者是截然不同的 通配符只能用在shell命令中,用来处理字符串的的匹配。 判断一个命令是否为bash shell(linux 默认的shell)的内置命令 type -t commad 返回结果含义 file  表示为外部命令 alias  表示该</div> </li> <li><a href="/article/2952.htm" title="Ubuntu Mysql Install and CONF" target="_blank">Ubuntu Mysql Install and CONF</a> <span class="text-muted">gengzg</span> <a class="tag" taget="_blank" href="/search/Install/1.htm">Install</a> <div>http://www.navicat.com.cn/download/navicat-for-mysql Step1: 下载Navicat ,网址:http://www.navicat.com/en/download/download.html Step2:进入下载目录,解压压缩包:tar -zxvf navicat11_mysql_en.tar.gz </div> </li> <li><a href="/article/3079.htm" title="批处理,删除文件bat" target="_blank">批处理,删除文件bat</a> <span class="text-muted">huqiji</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/dos/1.htm">dos</a> <div>@echo off ::演示:删除指定路径下指定天数之前(以文件名中包含的日期字符串为准)的文件。 ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。 ::本例假设文件名中包含的日期字符串(比如:bak-2009-12-25.log) rem 指定待删除文件的存放路径 set SrcDir=C:/Test/BatHome rem 指定天数 set DaysAgo=1</div> </li> <li><a href="/article/3206.htm" title="跨浏览器兼容的HTML5视频音频播放器" target="_blank">跨浏览器兼容的HTML5视频音频播放器</a> <span class="text-muted">天梯梦</span> <a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>HTML5的video和audio标签是用来在网页中加入视频和音频的标签,在支持html5的浏览器中不需要预先加载Adobe Flash浏览器插件就能轻松快速的播放视频和音频文件。而html5media.js可以在不支持html5的浏览器上使video和audio标签生效。   How to enable <video> and <audio> tags in </div> </li> <li><a href="/article/3333.htm" title="Bundle自定义数据传递" target="_blank">Bundle自定义数据传递</a> <span class="text-muted">hm4123660</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/Serializable/1.htm">Serializable</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E4%BC%A0%E9%80%92/1.htm">自定义数据传递</a><a class="tag" taget="_blank" href="/search/Bundle/1.htm">Bundle</a><a class="tag" taget="_blank" href="/search/Parcelable/1.htm">Parcelable</a> <div>      我们都知道Bundle可能过put****()方法添加各种基本类型的数据,Intent也可以通过putExtras(Bundle)将数据添加进去,然后通过startActivity()跳到下一下Activity的时候就把数据也传到下一个Activity了。如传递一个字符串到下一个Activity   把数据放到Intent</div> </li> <li><a href="/article/3460.htm" title="C#:异步编程和线程的使用(.NET 4.5 )" target="_blank">C#:异步编程和线程的使用(.NET 4.5 )</a> <span class="text-muted">powertoolsteam</span> <a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B/1.htm">线程</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B/1.htm">异步编程</a> <div>异步编程和线程处理是并发或并行编程非常重要的功能特征。为了实现异步编程,可使用线程也可以不用。将异步与线程同时讲,将有助于我们更好的理解它们的特征。 本文中涉及关键知识点 1. 异步编程 2. 线程的使用 3. 基于任务的异步模式 4. 并行编程 5. 总结 异步编程 什么是异步操作?异步操作是指某些操作能够独立运行,不依赖主流程或主其他处理流程。通常情况下,C#程序</div> </li> <li><a href="/article/3587.htm" title="spark 查看 job history 日志" target="_blank">spark 查看 job history 日志</a> <span class="text-muted">Stark_Summer</span> <a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%BF%97/1.htm">日志</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/history/1.htm">history</a><a class="tag" taget="_blank" href="/search/job/1.htm">job</a> <div>SPARK_HOME/conf 下: spark-defaults.conf 增加如下内容 spark.eventLog.enabled true spark.eventLog.dir hdfs://master:8020/var/log/spark spark.eventLog.compress true spark-env.sh 增加如下内容 export SP</div> </li> <li><a href="/article/3714.htm" title="SSH框架搭建" target="_blank">SSH框架搭建</a> <span class="text-muted">wangxiukai2015eye</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a> <div>MyEclipse搭建SSH框架 Struts Spring Hibernate 1、new一个web project。 2、右键项目,为项目添加Struts支持。    选择Struts2 Core Libraries -<MyEclipes-Library>      点击Finish。src目录下多了struts</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>