当前位置: 首页 > news >正文

做经营网站怎么赚钱吗江苏州 网站制作

做经营网站怎么赚钱吗,江苏州 网站制作,广州seo关键词优化是什么,中国国建设监理协会网站在json解析方面 我们常见有下面几方面困扰 1. moshi code-gen能自动生成适配器,序列化效率比gson快,但是自定义程度不如gson,能java kotlin共存 且解决了默认值的问题 2.gson api 强大自由,但是 第一次gson的反射缓存比较慢,而且生成对象都是反射,除非主动注册com.google.gson…在json解析方面 我们常见有下面几方面困扰 1. moshi code-gen能自动生成适配器,序列化效率比gson快,但是自定义程度不如gson,能java kotlin共存 且解决了默认值的问题 2.gson api 强大自由,但是 第一次gson的反射缓存比较慢,而且生成对象都是反射,除非主动注册com.google.gson.InstanceCreator 这个人工机械 3.kotlin ks 效率还行,但是不支持java  api自由性没有gson强 目前可能更偏向gson 同时也要解决默认值的问题 最大的一处难点是在jvm 获取申明的枚举,先看一下gson是怎么解决的   private static final class EnumTypeAdapterT extends EnumT extends TypeAdapterT {private final MapString, T nameToConstant new HashMapString, T();private final MapT, String constantToName new HashMapT, String();public EnumTypeAdapter(final ClassT classOfT) {try {// Uses reflection to find enum constants to work around name mismatches for obfuscated classes// Reflection access might throw SecurityException, therefore run this in privileged context;// should be acceptable because this only retrieves enum constants, but does not expose anything elseField[] constantFields AccessController.doPrivileged(new PrivilegedActionField[]() {Override public Field[] run() {Field[] fields classOfT.getDeclaredFields();ArrayListField constantFieldsList new ArrayListField(fields.length);for (Field f : fields) {if (f.isEnumConstant()) {constantFieldsList.add(f);}}Field[] constantFields constantFieldsList.toArray(new Field[0]);AccessibleObject.setAccessible(constantFields, true);return constantFields;}});for (Field constantField : constantFields) {SuppressWarnings(unchecked)T constant (T)(constantField.get(null));String name constant.name();SerializedName annotation constantField.getAnnotation(SerializedName.class);if (annotation ! null) {name annotation.value();for (String alternate : annotation.alternate()) {nameToConstant.put(alternate, constant);}}nameToConstant.put(name, constant);constantToName.put(constant, name);}} catch (IllegalAccessException e) {throw new AssertionError(e);}}Override public T read(JsonReader in) throws IOException {if (in.peek() JsonToken.NULL) {in.nextNull();return null;}return nameToConstant.get(in.nextString());}Override public void write(JsonWriter out, T value) throws IOException {out.value(value null ? null : constantToName.get(value));}}gson的实现 是第一次反射(TypeAdapter 对于rawType gson本身会缓存) 他这个时候能读取到class,但是编译注解这个时候并不能得到class, 那么又查询了官方文档,官方的解释不在是class 而是Element和TypeName的类 翻译如下: 宽松地说返回直接被该元素包围的元素。 类或接口被认为包含它直接声明的字段、方法、构造函数和成员类型。 包包含其中的顶级类和接口但不被视为包含子包。 模块将包包含在其中。 封闭的元素可以包括隐式声明的强制元素。 其他种类的元素目前不被认为包含任何元素 但是随着 API 或编程语言的发展这种情况可能会发生变化。 返回 包含的元素如果没有则为空列表 API注意事项 可以使用 ElementFilter 中的方法来隔离某些类型的元素。 也可以看看 TypeElement.getEnclosureElements、PackageElement.getEnheldElements、ModuleElement.getEnheldElements、Elements.getAllMembers 吉林斯 8.8.9 默认构造函数 吉林斯 8.9 枚举 修改 9 规格 联合项目管理系统 那么我理解jvm 元数据matadata存储在这个数组里面 我打印了一下 得到枚举的全部申明 包括enum_entry不是enum class还有valueOf等方法 枚举数据在元数据里面 values(),valueOf(java.lang.String),HELLO,HI,FINE,THANKS,intValue,TestEnum(int),getIntValue() 得按类型过滤出 申明的enum_constant val enumConstants enumElement?.enclosedElements?.filter {it.kind ElementKind.ENUM_CONSTANT} ?: listOf() 最终折腾了半天 终于出来了 import com.google.gson.annotations.SerializedName import javax.lang.model.element.ElementKind/*** xxf:生成编译时枚举常量池生成hashmap*/ internal class EnumTypeParser {internal val nameToConstant: MutableMapString, Any mutableMapOf()internal val constantToName: MutableMapAny, String mutableMapOf()/*** 枚举数据在元数据里面 values(),valueOf(java.lang.String),HELLO,HI,FINE,THANKS,intValue,TestEnum(int),getIntValue()* param enumElement*/constructor(enumElement: javax.lang.model.element.Element?) {val enumConstants enumElement?.enclosedElements?.filter {it.kind ElementKind.ENUM_CONSTANT} ?: listOf()enumConstants.forEach { constant -val annotation: SerializedName? constant.getAnnotation(SerializedName::class.java)var name constant.simpleName.toString()//本身名字nameToConstant[name] constant//注解名字 和别名名字if (annotation ! null) {name annotation.valuefor (alternate in annotation.alternate) {nameToConstant[alternate] constant}}nameToConstant[name] constantconstantToName[constant] name}//排序一下 代码好看一点nameToConstant.toSortedMap().run {nameToConstant.clear()nameToConstant.putAll(this)}//排序一下 代码好看一点constantToName.toSortedMap(Comparator { o1, o2 -constantToName[o1]!!.compareTo(constantToName[o2]!!)}).run {constantToName.clear()constantToName.putAll(this)}}} 运行效果: 这样就替代了gson 枚举0反射,同样的读写都是o(1) 更多类型的实现 请参考我的开源项目 gson_plugin 这个可能是业界最快的json解析方式 最快的json解析框架
http://www.hkea.cn/news/14509554/

相关文章:

  • 承德网站建设广东省网站建设网站
  • 给前端做网站的图片叫什么软件网站建设 开票
  • 网站风格类型wordpress-5.6.20
  • 搭建网站有什么用赤峰做网站
  • 优化防疫措施南京seo按天计费
  • 建立一个自己的网站需要多少钱有什么网站是帮别人做设计的
  • 酷站海洛岳阳公司做网站
  • 制作网站用的域名常用网站名称大全
  • wordpress主题合并如何免费做网站优化
  • 河北省住房与建设厅网站网站查询seo
  • 合肥建设工程招聘信息网站仿站 做网站
  • 建站软件公司马鞍山做网站公司
  • 网站开发进度计划表WordPress发货
  • wordpress模板代码分析自己的网站什么做优化
  • 能看男女做那个的网站深圳品牌医疗网站建设
  • 营销型网站的建设规划建筑网址大全网站
  • 有没有专门做牛仔的网站商丘网站建设aliapp
  • 做练习题的网站wordpress菜单跳转到目录
  • 企业网站建设开发成本利润多少百度搜索网站
  • 网站建设中色无极php 家政网站
  • 企业网站托管排版设计商业网站建设案例
  • 怪兽网站模板服务器机柜
  • 黑龙江省建设会计协会网站建设网站需要展示什么区别
  • 地产公司网站建设方案怀化冰山涯IT网站建设公司
  • 网站交互图片怎么做的网站模板怎么做
  • 影视网站建设源码南城网站建设公司案例
  • 做画册封面的网站网站建设请款报告
  • 一键做单页网站租赁合同模板
  • 怎么在百度知道做公司网站wordpress做相册
  • 合肥做企业建网站那家好网站建设公司价格差别