- 从OkHttp引入Cronet支持quic协议
keeng2008
Androiduic语言网络协议
HTTP/3在HTTP/2的基础上,增强了安全上的限制,且使用UDP传输降低丢包导致的头部阻塞、降低因为TCP的协议限制而导致的连接耗时高等问题,但是目前各大浏览器的支持范围不够广,暂时不建议在网页相关的服务上进行升级。但是其提高了传输效率,有必要在传输数据量较大的应用上进行升级,建议对HTTP/3支持的改造设计与研究,在规范成熟时发布支持HTTP/3协议的版本。>前期在调研quic选型中,选择了
- 云音乐Android Cronet接入实践
Android小贾
Android移动开发架构android移动开发安卓MMKV架构
背景网易云音乐产品线终端类型广泛,除了移动端(IOS/安卓)之外,还有PC、MAC、Iot多终端等等。移动端由于上线时间早,用户基数大,沉淀了一些端侧相对比较稳定的网络策略和网络基础能力。然而由于各端在基础能力上存在不对齐的现状:移动端双端在这些能力细节上有差异,同时PC、MAC这方面能力相较于移动端又略微滞后。为了避免各端在网络侧反复投入人力进行能力维护和定位解决问题,同时统一网络基础设置,将端
- 【微信】request:fail errcode:-202 cronet_error_code:-202 error_msg:net::ERR_CERT_AUT
顾鸟
微信https网络协议http
一.介绍微信小程序开发过程中,在开发者工具调试过程中出现request:failerrcode:-202cronet_error_code:-202error_msg:net::ERR_CERT_AUT,看了网上很多大佬们的讲解,最终确定是证书链不完整导致这个问题,只要把证书链补全就可以了。还可能是因为SSL证书到期导致,需要重新认证域名后更新服务器之前的SSL证书。看网上很多都说证书的问题,我也
- 小程序支付bug
jymstart
深入学习系列小程序bug
1.小程序开发工具访问https服务器没问题,真机就报错,是证书链不完整:在开发者工具调试过程中出现request:failerrcode:-202cronet_error_code:-202error_msg:net::ERR_CERT_AUT,看了网上很多大佬们的讲解,最终确定是证书链不完整导致这个问题,只要把证书链补全就可以了。还可能是因为SSL证书到期导致,需要重新认证域名后更新服务器之前
- 使用免费证书,小程序无法请求接口,提示 request_fail errcode_-202
forever14998
小程序nginxssl
前言使用acme创建的免费证书,小程序无法使用,考虑不是免费域名导致的问题,因为大多数开发者正常使用。问题复现{"errno":600001,"errMsg":"request:failerrcode:-202cronet_error_code:-202error_msg:net::ERR_CERT_AUTHORITY_INVALID"}request:failerrcode:-202cronet
- 抖音最新抓包方案
q2919761440
开发语言大数据
可以通过hookjava层如下图所示的地方,dy默认走的是quick协议,但是为了兼容更多版本的手机,有一个降级操作,毕竟担心cronet低版本适配不好,所以可以通过hook这个方法来使其强制降级到Http协议。frida脚本:123456789setImmediate(function(){Java.perform(function(){vartargetClass='org.chromium.
- 从Cronet 看Http3和QUIC(一)(上)
yjy239
前言前一段时间,在公司内部进行了一次QUIC协议的演讲。当时因为时间有限,没有仔细的讨论Cronet的源码细节,仅仅只是介绍了QUIC的协议细节。本文就从Cronet源码出发,聊聊QUIC的一些实现,进而看看QUIC对比Http2的优势,解决了什么问题?网上搜了不少QUIC解析文章,不是太老就是粗略聊聊原理,没有几个真的深入源码层面来证明说法是否正确,本文将主要根据QUIC最新的源码来聊聊整个协议
- 从 OkHttp 引入 Cronet 支持 quic 协议
二次蓝
okhttphttp3
转自:https://blog.csdn.net/keeng2008/article/details/119174331初步进行了一些排版优化。HTTP/3在HTTP/2的基础上,增强了安全上的限制,且使用UDP传输降低丢包导致的头部阻塞、降低因为TCP的协议限制而导致的连接耗时高等问题,但是目前各大浏览器的支持范围不够广,暂时不建议在网页相关的服务上进行升级。但是其提高了传输效率,有必要在传输数
- ffmpeg cronet,cronet库下载地址
RAtime360
chromiumffmpegcronetchrome
https://console.cloud.google.com/storage/browser/chromium-cronet/android;tab=objects?pli=1&prefix=浏览器打开后见图
- Android Quic协议资料
胡刚2016
网络androidjava
https://developer.android.google.cn/guide/topics/connectivity/cronet/lifecycleCronetCronet库编译指南chromium-cronet库的编译用于Android和ios平台实现quic协议蘑菇街AppChromium网络栈实践
- Cronet网络库(Quic连接出错篇章一)
Magic旭
问题因为业务需求把所有业务的域名都搞成相同的,导致Cronet在底层连接出错的判断逻辑也跟着出错了。原因是域名相同后,假如某个业务域名所建立的连接一直出错,但是该连接的端口有1-3个的话,出错后cronet会记录内存、本地,后续有其他业务域名命中这个1-3个端口的话,就会导致一直命中跳过quic连接的逻辑。本章节主要分析quic连接出错状态后续会导致其他连接被误认为是需要跳过的。QuicJob创建
- vscode调试 调试so
zjfclimin
背景编译flutter和cronet(chromium分离)在android--AS环境中使用会导致调试困难,所以下面是用VScode进行调试的步骤编译编译出so,报错符号so首次调试,利用AS将lldb推到APP的沙盒里,重启进程AS步骤利用终端启动沙盒lldb-server127|blueline:/$run-astv.athena.service.demo查看是否存在lldb修改权限blue
- Cronet网络库学习与开发(一)
Magic旭
机遇一直在工作上忙着做不完的需求,很久没有学习到新的知识点了。在某次机缘巧合下,让我有机会学习、接触网络相关的工作,接触我梦寐以求ndk相关的开发。刚开始的时候确实压力不小,因为一直都是从事android相关业务工作,从没有从事过正式的ndk开发。后面边学边做,首先是把C++的全部基础语法看熟(因为大学有c语言基础),然后结合项目的具体代码排查bug,从一小块逐步熟悉代码的功能。介绍我们本章主要从
- Cronet 使用
孙龙波
1.按照https://www.jianshu.com/p/aed96e11fe36生成xcode工程后编译cronet_static_frameworktarget会生成静态库Static/Cronet.framework,2.将Cronet.framework引入自己的xcode工程,并添加以下依赖CFNetwork.frameworkCoreTelephony.frameworkMobile
- Mac上 Google Cronet iOS编译
孙龙波
1.安装depot_toolsgitclonehttps://chromium.googlesource.com/chromium/tools/depot_tools.git2.配置环境变量exportPATH="$PATH:/path/to/depot_tools"3.创建chromium目录mkdirchromium&&cdchromium4.获取代码fetchios如果想要仓库小一些可以fe
- Cronet网络库系列(四):移动网络弱网优化综述
蒂卡波湖牧羊犬
chromium
弱网指标:以下6个指标基本覆盖了网络状态。不同的业务会侧重不同指标,例如视频传输可能将吞吐量放首位,IM可能将rtt指标放首位。指标的具体数据可以借助一些网络测试工具进行模拟,比如腾讯的WeTest,苹果的NetworkLinkConditioner,Facebook的ATC(AugmentedTrafficControl),来获取不同场景的指标数据。当然最终还是在发布产品中建立上报体系监控实际运
- Cronet网络库系列(一):用例与原理实现详解
蒂卡波湖牧羊犬
net
背景对于小程序框架这种既有业务API请求,又有web请求。Android平台上不管是系统HttpUrlConnection还是OkHttp都无法满足完全优化的需求,所以在使用自研webview基础上,有了使用Chromium网络栈优化的想法。以下引用是Cronet官方介绍翻译。Cronet是Chromium的网络堆栈,已单独编译成库供移动设备使用。这与十亿多人在Chrome浏览器中使用的网络堆栈相
- Cronet网络库系列(一):用例与原理实现详解
蒂卡波湖牧羊犬
net
背景对于小程序框架这种既有业务API请求,又有web请求。Android平台上不管是系统HttpUrlConnection还是OkHttp都无法满足完全优化的需求,所以在使用自研webview基础上,有了使用Chromium网络栈优化的想法。以下引用是Cronet官方介绍翻译。Cronet是Chromium的网络堆栈,已单独编译成库供移动设备使用。这与十亿多人在Chrome浏览器中使用的网络堆栈相
- Cronet Request生命周期
kongnge
Network
了解Cronet创建的请求(Request)的生命周期,学习如何使用回调函数(Callback)管理这些生命周期。生命周期概述Cronet库创建的网络请求使用UrlRequest类来描述。理解UrlRequest的生命周期的一些非常重要的概念如下:状态(State):状态是请求在某一时间进入的特定条件。在生命周期中,Cronet库创建的UrlRequest对象在不同状态之间切换。请求生命周期状态包
- 编译 cronet android 库时出现 Template collision【contains a template "split_static_library"】
kph_Hajash
cronet
该错误出现在执行./components/cronet/tools/cr_cronet.pygn--debug--out_dir=out/debug-Cronet时,使用的chromium仓库分支为75.0.3770.100;需要在v8目录下将v8仓库的分支切换到d1ee844出现Undefinedidentifierv8_use_snapshot也是因为v8的分支不匹配chromium75.0.
- 改造 cronet 库使得 安卓 release SDK 可以捕获 cronet 库 QUIC 相关日志实践
kph_Hajash
cronetcronet日志安卓quic
1、背景介绍在我们移动端文件上传场景中,尝试使用QUIC协议来优化上传效果,为了准确的分析上传失败的任务,需要建立上传任务与QUIC连接的关联性;当前每个上传任务结束时,或失败或成功都会上报一条日志,我们打算在启用了QUIC的上传任务中,增加一个字段保存QUIC相关信息,比如连接ID、连接建立的日志、连接关闭的日志等,QUIC连接关闭时会带上详细的关闭原因,帮助分析QUIC失败时客户端的状态,实现
- 安卓 cronet 库 JNI ERROR (app bug): local reference table overflow (max=512)
kph_Hajash
cronet
1、问题背景由于定位问题需要,将cronet库中quic部分的LOG_LEVEL为-3级别的日志一并通过回调函数输出了,但导致了cronet库的崩溃,崩溃的直接原因是输出日志过多,导致了jni层的局部引用表溢出。那么肯定是代码中使用局部引用的次数过多、过频繁,并且未及时释放这些局部引用,从而导致了崩溃。2、问题定位、解决2.1问题分析首先需要了解什么样的局部引用会导致这样的问题,以及这些局部引用如
- 精简 chromium 源码后编译 Android cronet 失败:undefined symbol: iswblank
kph_Hajash
cronet
0、缘起由于工作需要,团队决定自己维护一份Androidcronet库的源码,但由于chromium项目代码过于庞大,需要移除不必要的代码,移除之后再编译来测试是否成功编译出cronet库。精简过程中需要删除一些可能不需要依赖的目录,以及修改相关的BUILD.gn文件,这些改动的后果都是不太能确定的。1、总结错误本身跟android_ndk版本没关系,因为编译成功和编译失败的参数都是一致的chro
- Ubuntu 1804 编译 Android Cronet 时安装依赖项
kph_Hajash
cronet
AndroidCronet需要在linux平台下编译,因为部分工具只能在Ubuntu上执行(Chromium项目大部分开发工作是在Ubuntu上完成的),因此优先选择Ubuntu系统。编译Cronet库需要安装系统依赖以及安卓的特殊依赖,在chromium项目中都有专门的脚本去执行依赖的安装,进入已下载好源码的chromium/src目录,执行如下脚本:./build/install-build-
- 【Android】移动端接入Cronet实践
Mlib
AndroidLinux
移动端接入Cronet实践QUIC协议获取Chromium源码编译CronetAndroid/iOSbuildsDesktopbuilds(targetsthecurrentOS)Runningtheninjafiles生成的文件使用CronetAndroidDebugLogSeeVLOG(1)andVLOG(2)logging:SeeVLOG(1)logging:SeeNO(onlyFATAL)
- Chromium网络堆栈之Cronet详解
恬静释然
网络
一、简介Cronet是Chromium网络堆栈,可作为库提供给Android应用。Cronet利用多种技术来减少延迟并提高应用正常运行所需的网络请求吞吐量。Cronet库每天处理数百万人所用的应用(如YouTube、Google应用、Google相册以及Google地图导航和Google公交)的请求。二、功能1、协议支持Cronet本身支持HTTP协议、HTTP/2协议和QUIC协议。2、请求优先
- 基于exoPlayer 拓展自定义播放器
茳茳
基于exoPlayer自定义播放器Jplayer支持功能:1ExoUserPlayer基本播放2GestureVideoPlayer增加手势亮度,音量,快进,等手势3ManualPlayer默认手动播放,增加默认图5增加广告视频预览切换6增加视频清晰度切换7增加缓存视频功能8支持自定义各种数据源加载Okttp,Rtmp,缓存,Cronet等协议,9支持列表播放视频10支持多种文件类型,MP4,M4
- chromium-cronet库的编译用于Android和ios平台实现quic协议
bgylde
androidquicchromium-cronet
chromium-cronet文档原文文档写的已经很清楚,最好还是参考官方文档,避免由于版本原因导致的问题。Cronet开发者文档:https://developer.android.com/guide/topics/connectivity/cronet博客中的git地址:https://github.com/bgylde/chromium-cornet环境配置chromium源码环境;已经配置
- FFmpeg支持Cronet(Chromium网络库)
一朵喇叭花压海棠
QUIC网络播放器开发
FFmpeg支持Cronet1背景2代码3Cronet使用介绍3.1接口3.2组件及工作流程3.3Native开发3.3.1创建并配置Cronet_Engine3.3.2创建Cronet_UrlRequestCallback3.3.3创建Cronet_Executor3.3.4创建并发起Cronet_UrlRequest请求3.3.5结束、销毁请求4FFmpeg集成Cronet5编译Cronet5
- Chromium QUIC逻辑
一朵喇叭花压海棠
QUICChromium网络
ChromiumQUIC逻辑1背景2正文2.1针对某个ip:port的请求2.2超时逻辑2.3回滚逻辑2.430S的QUIC失败等待1背景最近在使用Chromium的网络库Cronet,对其内部QUIC的使用逻辑做了一些总结。2正文2.1针对某个ip:port的请求第一次请求会根据TLSALPN协议的协商结果以HTTP/1.1或者HTTP/2发起,分析HTTP响应携带的“alt-svc”头,将该i
- java线程的无限循环和退出
3213213333332132
java
最近想写一个游戏,然后碰到有关线程的问题,网上查了好多资料都没满足。
突然想起了前段时间看的有关线程的视频,于是信手拈来写了一个线程的代码片段。
希望帮助刚学java线程的童鞋
package thread;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date
- tomcat 容器
BlueSkator
tomcatWebservlet
Tomcat的组成部分 1、server
A Server element represents the entire Catalina servlet container. (Singleton) 2、service
service包括多个connector以及一个engine,其职责为处理由connector获得的客户请求。
3、connector
一个connector
- php递归,静态变量,匿名函数使用
dcj3sjt126com
PHP递归函数匿名函数静态变量引用传参
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Current To-Do List</title>
</head>
<body>
- 属性颜色字体变化
周华华
JavaScript
function changSize(className){
var diva=byId("fot")
diva.className=className;
}
</script>
<style type="text/css">
.max{
background: #900;
color:#039;
- 将properties内容放置到map中
g21121
properties
代码比较简单:
private static Map<Object, Object> map;
private static Properties p;
static {
//读取properties文件
InputStream is = XXX.class.getClassLoader().getResourceAsStream("xxx.properti
- [简单]拼接字符串
53873039oycg
字符串
工作中遇到需要从Map里面取值拼接字符串的情况,自己写了个,不是很好,欢迎提出更优雅的写法,代码如下:
import java.util.HashMap;
import java.uti
- Struts2学习
云端月影
最近开始关注struts2的新特性,从这个版本开始,Struts开始使用convention-plugin代替codebehind-plugin来实现struts的零配置。
配置文件精简了,的确是简便了开发过程,但是,我们熟悉的配置突然disappear了,真是一下很不适应。跟着潮流走吧,看看该怎样来搞定convention-plugin。
使用Convention插件,你需要将其JAR文件放
- Java新手入门的30个基本概念二
aijuans
java新手java 入门
基本概念: 1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率。 2.OOP中最重要的思想是类,类是模板是蓝图,
- jedis 简单使用
antlove
javarediscachecommandjedis
jedis.RedisOperationCollection.java
package jedis;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
import java.util.Set;
pub
- PL/SQL的函数和包体的基础
百合不是茶
PL/SQL编程函数包体显示包的具体数据包
由于明天举要上课,所以刚刚将代码敲了一遍PL/SQL的函数和包体的实现(单例模式过几天好好的总结下再发出来);以便明天能更好的学习PL/SQL的循环,今天太累了,所以早点睡觉,明天继续PL/SQL总有一天我会将你永远的记载在心里,,,
函数;
函数:PL/SQL中的函数相当于java中的方法;函数有返回值
定义函数的
--输入姓名找到该姓名的年薪
create or re
- Mockito(二)--实例篇
bijian1013
持续集成mockito单元测试
学习了基本知识后,就可以实战了,Mockito的实际使用还是比较麻烦的。因为在实际使用中,最常遇到的就是需要模拟第三方类库的行为。
比如现在有一个类FTPFileTransfer,实现了向FTP传输文件的功能。这个类中使用了a
- 精通Oracle10编程SQL(7)编写控制结构
bijian1013
oracle数据库plsql
/*
*编写控制结构
*/
--条件分支语句
--简单条件判断
DECLARE
v_sal NUMBER(6,2);
BEGIN
select sal into v_sal from emp
where lower(ename)=lower('&name');
if v_sal<2000 then
update emp set
- 【Log4j二】Log4j属性文件配置详解
bit1129
log4j
如下是一个log4j.properties的配置
log4j.rootCategory=INFO, stdout , R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appe
- java集合排序笔记
白糖_
java
public class CollectionDemo implements Serializable,Comparable<CollectionDemo>{
private static final long serialVersionUID = -2958090810811192128L;
private int id;
private String nam
- java导致linux负载过高的定位方法
ronin47
定位java进程ID
可以使用top或ps -ef |grep java
![图片描述][1]
根据进程ID找到最消耗资源的java pid
比如第一步找到的进程ID为5431
执行
top -p 5431 -H
![图片描述][2]
打印java栈信息
$ jstack -l 5431 > 5431.log
在栈信息中定位具体问题
将消耗资源的Java PID转
- 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数
bylijinnan
函数
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class RandNFromRand5 {
/**
题目:给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。
解法1:
f(k) = (x0-1)*5^0+(x1-
- PL/SQL Developer保存布局
Kai_Ge
近日由于项目需要,数据库从DB2迁移到ORCAL,因此数据库连接客户端选择了PL/SQL Developer。由于软件运用不熟悉,造成了很多麻烦,最主要的就是进入后,左边列表有很多选项,自己删除了一些选项卡,布局很满意了,下次进入后又恢复了以前的布局,很是苦恼。在众多PL/SQL Developer使用技巧中找到如下这段:
&n
- [未来战士计划]超能查派[剧透,慎入]
comsci
计划
非常好看,超能查派,这部电影......为我们这些热爱人工智能的工程技术人员提供一些参考意见和思想........
虽然电影里面的人物形象不是非常的可爱....但是非常的贴近现实生活....
&nbs
- Google Map API V2
dai_lm
google map
以后如果要开发包含google map的程序就更麻烦咯
http://www.cnblogs.com/mengdd/archive/2013/01/01/2841390.html
找到篇不错的文章,大家可以参考一下
http://blog.sina.com.cn/s/blog_c2839d410101jahv.html
1. 创建Android工程
由于v2的key需要G
- java数据计算层的几种解决方法2
datamachine
javasql集算器
2、SQL
SQL/SP/JDBC在这里属于一类,这是老牌的数据计算层,性能和灵活性是它的优势。但随着新情况的不断出现,单纯用SQL已经难以满足需求,比如: JAVA开发规模的扩大,数据量的剧增,复杂计算问题的涌现。虽然SQL得高分的指标不多,但都是权重最高的。
成熟度:5星。最成熟的。
- Linux下Telnet的安装与运行
dcj3sjt126com
linuxtelnet
Linux下Telnet的安装与运行 linux默认是使用SSH服务的 而不安装telnet服务 如果要使用telnet 就必须先安装相应的软件包 即使安装了软件包 默认的设置telnet 服务也是不运行的 需要手工进行设置 如果是redhat9,则在第三张光盘中找到 telnet-server-0.17-25.i386.rpm
- PHP中钩子函数的实现与认识
dcj3sjt126com
PHP
假如有这么一段程序:
function fun(){
fun1();
fun2();
}
首先程序执行完fun1()之后执行fun2()然后fun()结束。
但是,假如我们想对函数做一些变化。比如说,fun是一个解析函数,我们希望后期可以提供丰富的解析函数,而究竟用哪个函数解析,我们希望在配置文件中配置。这个时候就可以发挥钩子的力量了。
我们可以在fu
- EOS中的WorkSpace密码修改
蕃薯耀
修改WorkSpace密码
EOS中BPS的WorkSpace密码修改
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 201
- SpringMVC4零配置--SpringSecurity相关配置【SpringSecurityConfig】
hanqunfeng
SpringSecurity
SpringSecurity的配置相对来说有些复杂,如果是完整的bean配置,则需要配置大量的bean,所以xml配置时使用了命名空间来简化配置,同样,spring为我们提供了一个抽象类WebSecurityConfigurerAdapter和一个注解@EnableWebMvcSecurity,达到同样减少bean配置的目的,如下:
applicationContex
- ie 9 kendo ui中ajax跨域的问题
jackyrong
AJAX跨域
这两天遇到个问题,kendo ui的datagrid,根据json去读取数据,然后前端通过kendo ui的datagrid去渲染,但很奇怪的是,在ie 10,ie 11,chrome,firefox等浏览器中,同样的程序,
浏览起来是没问题的,但把应用放到公网上的一台服务器,
却发现如下情况:
1) ie 9下,不能出现任何数据,但用IE 9浏览器浏览本机的应用,却没任何问题
- 不要让别人笑你不能成为程序员
lampcy
编程程序员
在经历六个月的编程集训之后,我刚刚完成了我的第一次一对一的编码评估。但是事情并没有如我所想的那般顺利。
说实话,我感觉我的脑细胞像被轰炸过一样。
手慢慢地离开键盘,心里很压抑。不禁默默祈祷:一切都会进展顺利的,对吧?至少有些地方我的回答应该是没有遗漏的,是不是?
难道我选择编程真的是一个巨大的错误吗——我真的永远也成不了程序员吗?
我需要一点点安慰。在自我怀疑,不安全感和脆弱等等像龙卷风一
- 马皇后的贤德
nannan408
马皇后不怕朱元璋的坏脾气,并敢理直气壮地吹耳边风。众所周知,朱元璋不喜欢女人干政,他认为“后妃虽母仪天下,然不可使干政事”,因为“宠之太过,则骄恣犯分,上下失序”,因此还特地命人纂述《女诫》,以示警诫。但马皇后是个例外。
有一次,马皇后问朱元璋道:“如今天下老百姓安居乐业了吗?”朱元璋不高兴地回答:“这不是你应该问的。”马皇后振振有词地回敬道:“陛下是天下之父,
- 选择某个属性值最大的那条记录(不仅仅包含指定属性,而是想要什么属性都可以)
Rainbow702
sqlgroup by最大值max最大的那条记录
好久好久不写SQL了,技能退化严重啊!!!
直入主题:
比如我有一张表,file_info,
它有两个属性(但实际不只,我这里只是作说明用):
file_code, file_version
同一个code可能对应多个version
现在,我想针对每一个code,取得它相关的记录中,version 值 最大的那条记录,
SQL如下:
select
*
- VBScript脚本语言
tntxia
VBScript
VBScript 是基于VB的脚本语言。主要用于Asp和Excel的编程。
VB家族语言简介
Visual Basic 6.0
源于BASIC语言。
由微软公司开发的包含协助开发环境的事
- java中枚举类型的使用
xiao1zhao2
javaenum枚举1.5新特性
枚举类型是j2se在1.5引入的新的类型,通过关键字enum来定义,常用来存储一些常量.
1.定义一个简单的枚举类型
public enum Sex {
MAN,
WOMAN
}
枚举类型本质是类,编译此段代码会生成.class文件.通过Sex.MAN来访问Sex中的成员,其返回值是Sex类型.
2.常用方法
静态的values()方