精华内容
下载资源
问答
  • 快速创建自定义序列

    千次阅读 2018-05-01 00:08:35
    Excel排序中是个很简单的操作,点个按钮就完成了。 可是,可是… 这个排序结果却不是我们想要的结果,比如上图中的年龄段...这是什么情况,创建自定义序列对话框中无法粘贴Excel中拷贝的内容,即使打开了多个Exc...

    Excel排序中是个很简单的操作,点个按钮就完成了。

    可是,可是… 这个排序结果却不是我们想要的结果,比如上图中的年龄段排序。此时就要用到自定义序列,一起来看看这个貌似很高大上的功能了,其实操作也很简单:右键快捷菜单上选择排序>>自定义排序。

    接下来输入序列就搞定了。

    What!?这是什么情况,创建自定义序列对话框中无法粘贴Excel中拷贝的内容,即使打开了多个Excel窗口,此时也无法激活任何一个Excel窗口去拷贝列表,“输入序列”只能手工输入吗!?某软产品经理的逻辑也真是让人醉了。
    是可忍孰不可忍,一定想办法搞定它!


    1. 打开自定义序列对话框之前,先打开记事本
    2. 把工作表中D列年龄段拷贝到记事本中,调整序列顺序
    3. 按照上面操作打开自定义序列对话框,在【输入序列】对话框中仍然无法粘贴
    4. 关键点来了,Alt+Tab切换应用程序,激活记事本,选中序列,拷贝
    5. 回到【输入序列】对话框,嗒嗒!可以完美粘贴序列,此处可以有掌声!
    6. 在工作表中应用自定义排序,结果很完美

    添加自定义序列后,还可以这样用,和内置的其他序列一样的方便填充。

    展开全文
  • mysql自定义序列

    2014-07-30 16:49:02
    用mysql创建的一个自定义序列,主要用来处理一些需要自定义编号的情况,然后每天这个自定义编号又得重新算起
  • Java序列化之自定义序列

    千次阅读 2016-06-06 09:05:48
    背景 进行序列化传输时,有时不仅需要对象... 自定义与不自定义的区别在于,不自定义序列化时只是普通地将对象保存到文件中,而自定义时,在讲对象保存到文件前后都可以做一些代码实现。 两个接口 Java为程序员自定义序

    背景
    进行序列化传输时,有时不仅需要对象本身的数据,还需要传输一些额外的辅助信息,以保证信息的安全、完整和正确。为了做到这点需求,Java提供了一套有效的机制,允许在序列化和反序列化时,使用定制的方法进行相应的处理。

    自定义与不自定义的区别在于,不自定义序列化时只是普通地将对象保存到文件中,而自定义时,在讲对象保存到文件前后都可以做一些代码实现。

    两个接口
    Java为程序员自定义序列化提供了两个接口,一个是Serializeble,另一个是Externalizable,其中externalize是使具体化的意思。

    那么这两个接口有什么区别呢,从代码层面来说,Serializeble接口内部没有定义任何方法或字段,而Externalizeble接口内部定义了两个方法用来指定序列化策略和反序列化策略,这两个方法分别是readExternal和writeExternal。但值得一提的是,虽然Serializeble接口没有定义任何方法或字段,但在使用这个接口进行自定义序列化时,必须添加一组方法来实现自定义序列化策略,他们分别如下:

        private void writeObject(ObjectOutputStream out) throws IOException;
        private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;
        在序列化和反序列化时便会自动调用这些规定好的方法进行序列化和反序列化,下面用代码去实现证明。
    

    代码实现

    1、通过Serializable
    自定义类,这个类实现Serializable,并且添加一组方法

    public class Person implements Serializable{
        private static final long serialVersionUID = 1L;
        private String name ;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    
        private void writeObject(ObjectOutputStream out) throws IOException{
            out.defaultWriteObject();   //将当前类的非静态和非瞬时字段写入此流
            Date date = new Date();
            out.writeObject(date);
        }
    
        private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException{
            in.defaultReadObject();  //从此流读取当前类的非静态和非瞬态字段
            Date date = (Date)in.readObject();
            Date now = new Date();
            long offset = now.getTime() - date.getTime();
    
            if(offset<100){
                System.out.println("在正常的时间内接收到序列化对象");          
            }else{
                System.out.println("接收传输时间过长,请注意");
            }
        }
    
    }

    这里注意两个重要的方法,一个是ObjectInputStream的defaultReadObject()、另一个是ObjectOutputStream的defaultWriteObject()

    其实在我们没有在序列化类中添加writeObject(ObjectOutputStream out)和ReadObject(ObjectInputStream)的时候,当我们进行(ObjectOutputStream oos,,,ObjectInputStream ois)oos.writeObject(obj)和ois.readObject()的时候,调用的就是defaultReadObject()和defaultWriteObject();这两个方法的作用就是做常规的读对象和些对象,没有什么神奇的

    API文档显示
    这里写图片描述

    这里写图片描述

    2、通过Java网络编程相关代码测试
    Server端代码

    public class Server {
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            ServerSocket server = new ServerSocket(8010);
            Socket socket = server.accept();
    
            System.out.println("请求已接受");
            InputStream in = socket.getInputStream();
            ObjectInputStream objIn = new ObjectInputStream(in);
            Person person = (Person)objIn.readObject();
            System.out.println("姓名:" + person.getName());
    
            objIn.close();
            in.close();
            socket.close();
            server.close();
    
        }
    }

    Client端代码

    public class Client {
        public static void main(String[] args) throws UnknownHostException, IOException {
            Socket socket = new Socket("127.0.0.1",8010);
                                    //创建一个流套接字并将其连接到指定IP的指定端口号
            OutputStream out = socket.getOutputStream();
            Person person = new Person();
            person.setName("simple");
    
            ObjectOutputStream objOut = new ObjectOutputStream(out);
            objOut.writeObject(person);
            objOut.flush();
            objOut.close();
            out.close();
            socket.close();             
        }
    }
    

    注意,运行时,先运行Server端,再运行Client端,原因很简单,只有服务器正常运行了,客户端才能对服务器进行请求,这是一对一的通信,结果如图:

    这里写图片描述

            下篇继续  自定义序列化之Externalizeble
    
    展开全文
  • 序列化协议与自定义序列化协议 序列化定义 序列化(serialization)就是将对象序列化为二进制形式(字节数组),一般也将序列化称为编码(Encode),主要用于网络传输、数据持久化等; 反序列化...

    序列化协议与自定义序列化协议


    序列化定义

    序列化(serialization)就是将对象序列化为二进制形式(字节数组),一般也将序列化称为编码(Encode),主要用于网络传输、数据持久化等;
    反序列化(deserialization)则是将从网络、磁盘等读取的字节数组还原成原始对象,以便后续业务的进行,一般也将反序列化称为解码(Decode),主要用于网络传输对象的解码,以便完成远程调用。

    序列化协议“鼻祖”

    我知道的第一种序列化协议就是Java默认提供的序列化机制,需要序列化的Java对象只需要实现 Serializable / Externalizable 接口并生成序列化ID,这个类就能够通过 ObjectInput 和 ObjectOutput 序列化和反序列化。

    但是Java默认提供的序列化有很多问题,主要有以下几个缺点:

    无法跨语言:我认为这对于Java序列化的发展是致命的“失误”,因为Java序列化后的字节数组,其它语言无法进行反序列化。;
    序列化后的码流太大:相对于目前主流的序列化协议,Java序列化后的码流太大;
    序列化的性能差:由于Java序列化采用同步阻塞IO,相对于目前主流的序列化协议,它的效率非常差。

    影响序列化性能的关键因素:

    序列化后的码流大小(网络带宽的占用);
    序列化的性能(CPU资源占用);
    是否支持跨语言(异构系统的对接和开发语言切换)。

    几种流行的序列化协议比较

    XML

    (1)定义:

    XML(Extensible Markup Language)是一种常用的序列化和反序列化协议, 它历史悠久,从1998年的1.0版本被广泛使用至今。

    (2)优点

    人机可读性好
    可指定元素或特性的名称

    (3)缺点

    序列化数据只包含数据本身以及类的结构,不包括类型标识和程序集信息。
    类必须有一个将由 XmlSerializer 序列化的默认构造函数。
    只能序列化公共属性和字段
    不能序列化方法
    文件庞大,文件格式复杂,传输占带宽

    (4)使用场景

    当做配置文件存储数据
    实时数据转换

    JSON

    (1)定义:

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集, JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。

    (2)优点

    前后兼容性高
    数据格式比较简单,易于读写
    序列化后数据较小,可扩展性好,兼容性好
    与XML相比,其协议比较简单,解析速度比较快

    (3)缺点

    数据的描述性比XML差
    不适合性能要求为ms级别的情况
    额外空间开销比较大

    (4)适用场景(可替代XML)

    跨防火墙访问
    可调式性要求高的情况
    基于Web browser的Ajax请求
    传输数据量相对小,实时性要求相对低(例如秒级别)的服务

    Fastjson

    (1)定义

    Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致。

    (2)优点

    接口简单易用
    目前java语言中最快的json库

    (3)缺点

    过于注重快,而偏离了“标准”及功能性
    代码质量不高,文档不全

    (4)适用场景

    协议交互
    Web输出
    Android客户端

    Thrift

    (1)定义:

    Thrift并不仅仅是序列化协议,而是一个RPC框架。它可以让你选择客户端与服务端之间传输通信协议的类别,即文本(text)和二进制(binary)传输协议, 为节约带宽,提供传输效率,一般情况下使用二进制类型的传输协议。

    (2)优点

    序列化后的体积小, 速度快
    支持多种语言和丰富的数据类型
    对于数据字段的增删具有较强的兼容性
    支持二进制压缩编码

    (3)缺点

    使用者较少
    跨防火墙访问时,不安全
    不具有可读性,调试代码时相对困难
    不能与其他传输层协议共同使用(例如HTTP)
    无法支持向持久层直接读写数据,即不适合做数据持久化序列化协议

    (4)适用场景

    分布式系统的RPC解决方案

    Avro

    (1)定义:

    Avro属于Apache Hadoop的一个子项目。 Avro提供两种序列化格式:JSON格式或者Binary格式。Binary格式在空间开销和解析性能方面可以和Protobuf媲美,Avro的产生解决了JSON的冗长和没有IDL的问题

    (2)优点

    支持丰富的数据类型
    简单的动态语言结合功能
    具有自我描述属性
    提高了数据解析速度
    快速可压缩的二进制数据形式
    可以实现远程过程调用RPC
    支持跨编程语言实现

    (3)缺点

    对于习惯于静态类型语言的用户不直观

    (4)适用场景

    在Hadoop中做Hive、Pig和MapReduce的持久化数据格式

    Protobuf

    (1)定义

    protocol buffers 由谷歌开源而来,在谷歌内部久经考验。它将数据结构以.proto文件进行描述,通过代码生成工具可以生成对应数据结构的POJO对象和Protobuf相关的方法和属性。

    (2)优点

    序列化后码流小,性能高
    结构化数据存储格式(XML JSON等)
    通过标识字段的顺序,可以实现协议的前向兼容
    结构化的文档更容易管理和维护

    (3)缺点

    需要依赖于工具生成代码
    支持的语言相对较少,官方只支持Java 、C++ 、Python

    (4)适用场景

    对性能要求高的RPC调用
    具有良好的跨防火墙的访问属性
    适合应用层对象的持久化

    其它

    protostuff 基于protobuf协议,但不需要配置proto文件,直接导包即可;
    Jboss marshaling 可以直接序列化java类, 无须实java.io.Serializable接口;
    Message pack 一个高效的二进制序列化格式;
    Hessian 采用二进制协议的轻量级remoting onhttp工具;
    kryo 基于protobuf协议,只支持java语言,需要注册(Registration),然后序列化(Output),反序列化(Input)。

    性能对比图解

    时间:
    这里写图片描述
    空间:
    这里写图片描述

    分析上图知:

    XML序列化(Xstream)无论在性能和简洁性上比较差。
    Thrift与Protobuf相比在时空开销方面都有一定的劣势。
    Protobuf和Avro在两方面表现都非常优越。

    选型建议

    不同的场景适用的序列化协议:

    • 对于公司间的系统调用,如果性能要求在100ms以上的服务,基于XML的SOAP协议是一个值得考虑的方案。
      基于Web browser的Ajax,以及Mobile app与服务端之间的通讯,JSON协议是首选。

    • 对于性能要求不太高,或者以动态类型语言为主,或者传输数据载荷很小的的运用场景,JSON也是非常不错的选择。

    • 对于调试环境比较恶劣的场景,采用JSON或XML能够极大的提高调试效率,降低系统开发成本。
    • 当对性能和简洁性有极高要求的场景,Protobuf,Thrift,Avro之间具有一定的竞争关系。
    • 对于T级别的数据的持久化应用场景,Protobuf和Avro是首要选择。如果持久化后的数据存储在Hadoop子项目里,Avro会是更好的选择。
    • 由于Avro的设计理念偏向于动态类型语言,对于动态语言为主的应用场景,Avro是更好的选择。
    • 对于持久层非Hadoop项目,以静态类型语言为主的应用场景,Protobuf会更符合静态类型语言工程师的开发习惯。
    • 如果需要提供一个完整的RPC解决方案,Thrift是一个好的选择。
    • 如果序列化之后需要支持不同的传输层协议,或者需要跨防火墙访问的高性能场景,Protobuf可以优先考虑。

    Marshalling编码器

    public final class MarshallingCodeCFactory {
    
        /**
         * 创建Jboss Marshalling解码器MarshallingDecoder
         */
        public static MarshallingDecoder buildMarshallingDecoder() {
            final MarshallerFactory marshallerFactory = Marshalling.getProvidedMarshallerFactory("serial");
            final MarshallingConfiguration configuration = new MarshallingConfiguration();
            configuration.setVersion(5);
            UnmarshallerProvider provider = new DefaultUnmarshallerProvider(marshallerFactory, configuration);
            MarshallingDecoder decoder = new MarshallingDecoder(provider, 1024);
            return decoder;
        }
    
        /**
         * 创建Jboss Marshalling编码器MarshallingEncoder
         */
        public static MarshallingEncoder buildMarshallingEncoder() {
            final MarshallerFactory marshallerFactory = Marshalling.getProvidedMarshallerFactory("serial");
            final MarshallingConfiguration configuration = new MarshallingConfiguration();
            configuration.setVersion(5);
            MarshallerProvider provider = new DefaultMarshallerProvider(marshallerFactory, configuration);
            MarshallingEncoder encoder = new MarshallingEncoder(provider);
            return encoder;
        }
    
    }
    展开全文
  • Java实现自定义序列

    千次阅读 2017-11-28 22:31:00
    一、关于自定义序列计算 1、实现需求 每天的订单序号 yyyyMMdd0001 1) 入口参数 a) 日期 b) 当前序号 2) 出口 返回一个字符串序号 2、 采用DecimalFormat,SimpleDateFormat 3、 示例如下 public class ...

    一、关于自定义序列计算

    1、实现需求

    每天的订单序号

    yyyyMMdd0001

    1)     入口参数

    a)      日期

    b)     当前序号

    2)     出口

    返回一个字符串序号

    2、         采用DecimalFormat,SimpleDateFormat

    3、         示例如下

    public class TestAutoSelfPK {

        

         static String getPK(Date dt,int id){

                id++;

                SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd");

                String dtString=df.format(dt);

    //        Log.getLog().info("dtString="+dtString);

                DecimalFormat dcf=new DecimalFormat("'"+dtString+"-'000");

                String value=dcf.format(id);

                return value;

         }

        

         public static void main(String[] args) {

    //        Date dt=new Date(117,4,16);

                Date dt=new Date(); //当前日期

                int id=145;

                String myid=getPK(dt, id);

                Log.getLog().info("myid="+myid);

         }

     

    }

    输出如下

    iss.autopk.TestAutoSelfPK.main(TestAutoSelfPK.java:33)11-27 10:51:27>

    myid=20171127-146

     

    展开全文
  • oracle创建自定义自增长序列sequence

    千次阅读 2017-04-21 18:38:46
    sequence:序列 其实就相当于mysql,sql server数据库中的自增长列 这个也就扯到数据库之间的区别了,mysql ,sql server都可以为某一列设置自增长,而oracle不可以,所以只能新增一列,使得这一列有这种自增长的...
  • kafka - 自定义序列化器

    千次阅读 2018-04-19 14:59:21
    kafka - 自定义序列化器 在 kafka 中提供了以下的序列化器: ByteArraySerializer StringSerializer IntegerSerializer 但是内置提供的序列化器并不能满足大部分场景的需求,因此我们需要自定义序列化器 ...
  • FastJSON自定义序列

    千次阅读 2018-12-12 14:11:36
    FastJSON自定义序列化 对接第三方机构调用接口的时候 , 经常遇到返回来的JSON格式非常复杂的情况 例如返回的报文为以下形式 , 如果解析不好的话, 不利于存取和阅读 { "key":"x", "value&...
  • MySQL 自定义序列

    2019-03-21 11:11:48
    原来用过Oracle的都清楚,序列的便利性。我们想在MySQL中也能使用序列,而不是字段的自增长。...-- 创建公共的序列表 DROP TABLE IF EXISTS t_common_sequence; CREATE TABLE t_common_sequence ( ...
  • wps js宏操作自定义序列列表。
  • 首先自定义序列:文件--选项--高级 点击【编辑自定义序列】,有两种方法:①点击【添加】手动输入,除了提示的按enter分割列表条目,也可以用英文逗号分割,如:专科,本科,硕士研究生,博士研究生 ②先将序列在...
  • java 序列化机制和自定义序列

    千次阅读 2019-04-08 17:02:24
    序列化是将对象保存在磁盘中,或允许在网络中直接传输对象。对象序列化机制允许把内存中的java对象转成与平台无关的二进制流,从而将这种二进制文件持久的保存在磁盘上。其他程序一旦获得了这种二进制的流。就可以将...
  • Excel VBA自定义序列排序

    千次阅读 2020-02-22 19:52:09
    在图1中所示的数据集中,如果希望按单元格区域E2:E6所列序列进行排序,需要先使用AddCustomList方法为应用程序添加自定义序列,示例代码如下。 Sub SortByLists() Dim avntList As Variant, lngNum As Long ...
  • Mysql - 自定义序列

    千次阅读 2017-03-27 10:40:31
    由于mysql不带sequence,所以要手写的,创建一张储存sequence的表(tb_sys_sequence),然后手动插入一条数据 ,最后自定义一个函数来处理要增长的值。【1】创建表CREATE TABLE `tb_sys_sequence` ( `name` varchar...
  • 介绍 Spring中从JSON到JSON的序列化/反序列化已广泛用于基于Spring的现代应用程序中。... 这篇文章展示了如何在带有自动装配字段的Spring中使用自定义序列化程序。 定义自定义序列化器 通常,自定义类的...
  • 那么在实际工作中碰见职务等没有办法使用拼音顺序时,则需要使用自定义序列的方法。 第一步:把鼠标光标定位在表格里,然后单击【数据】—【排序】然后会弹出“排序”对话框。 第二步:在排序对话框下的...
  • 一、目标对象添加隐式转换函数的方式实现自定义排序 object MySort{ //为student类添加隐式转换函数 implicit val stuOrdering = new Ordering[student]{ override def compare(x: student, y: student) = { /...
  • pr中如何自定义序列尺寸

    千次阅读 2020-12-03 16:03:11
    3.,在咱们这个序列预设中就会出现淘宝主图,咱们就可以创建一个这样淘宝主图的序列 咱们如果把一个视频拖拽过来的话,他可能不符合淘宝主图的一个尺寸,所以就会出现这个对话,选择“保持现有设置” 4.他可能非常...
  • SpringBoot 整合redis,自定义序列化方式

    千次阅读 多人点赞 2018-05-31 21:04:13
    SpringBoot 使用redis 时,自定义redis 序列化方式 最近在学习redis 时,看了网上的文章,发现他们的序列化我这边无法使用,原因是用来序列化的类里面引用的jar 我这边项目竟然没有,所以打算自定义一个序列化...
  • 而DRF(Django REST Framework)就可以帮忙我解决这个问题,即序列化和反序列化 1.安装DRF 使用pip安装 pip install djangorestframework 配置应用 INSTALLED_APPS = [ ... 'rest_framework', ] 2.定义...
  • Flink-StreaimingFileSink-自定义序列化-Parquet批量压缩 1 Maven依赖 Flink有内置方法可用于为Avro数据创建Parquet writer factory。 要使用ParquetBulkEncoder,需要添加以下Maven依赖: <dependency> <...
  • kafka自定义序列化类和反序列化类

    千次阅读 2019-03-20 21:30:12
    在kafka中,broker希望收到的消息的key和value都是字节数组,所以在创建生产者对象的时候必须指定序列化器。将消息进行序列化才可以进行网络传输,在kafka中默认提供了ByteArraySerializer(字节数组序列化器)、...
  • 背景:time.NOW()获得的时间格式是RFC3339格式的,需要把他按照yyyy/MM/dd hh:mm:ss的格式进行json序列化并返回给前端 解决方法: 给目标类型创建一个别名,并对该别名重载MarshalJSON方法,例如: //给time....
  • springboot整合redis之自定义序列化方式 1.添加spring-boot-starter-data-redis依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-...
  • Qt 之创建自定义类型

    千次阅读 2016-09-02 20:58:26
    简述 当使用Qt创建用户界面时,特别是那些带有特殊控制和特征的界面时,开发者通常需要创建新数据类型来扩展或替换Qt现有...下面,我会创建一个自定义类型,并且说明如何将它集成到Qt的对象模型中,以便能够以与其他Q
  • 1. 自定义序列化接入方案(Protobuf) 在实际应用场景中, 会存在各种复杂传输对象,同时要求较高的传输处理性能, 这就需要采用自定义的序列化方式做相应实现, 这里以Protobuf为例做讲解。 功能: kafka对同一...
  • Power BI中如何按自定义序列进行排序

    千次阅读 2021-02-24 09:22:18
    1、我们先在模型窗口,新建需要排序的对照表,如果字段名与原始表是一致的,在模型中会自动生成一对多的关系,如下图,右边显示的是如何创建表,左边显示的是已自动生成好的关系。 2、在数据窗口,进入每一张排序...
  • /// 从自定义格式的数据data中,获取nodeName对应的节点数据 /// /// NeedToRegister(false)NeedToRegister // finalNode = false; /// RegisterPrice(1) // finalNode = true; /// /// 待解析的数据 /// ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 229,359
精华内容 91,743
关键字:

创建自定义序列