泛域名配置方法

泛域名配置方法

如果使用阿里免费证书,需要配置CNAME,只能认证单域名,且连接很不稳定,所以还是决定做一个letsencrypt证书的泛域名配置。该文用于配置免费泛域名认证证书,编写本文是因为痛苦的折腾了好久,记录整个过程,避免以后掉坑里。

之前参考这个地址:http://www.jianshu.com/p/3ec95bb88ffa,其中的letsencrypt已经迁移到certbot地址http://github.com/certbot/certbot

最终解决方法:

http://cloud.tencent.com/developer/article/1500063

下载安装

acme.sh-master.zip

yum install unzip
unzip acme.sh-master.zip
cd acme.sh-master/
./acme.sh --install

安装认证

配置如下过程是,可以打开阿里云平台上对应域名解析设置页面,acme.sh会自动的将配置信息配置,并进行测试,可以抓住时间截个屏,执行结束后会被自动删除,稍后还需要手动进行配置一遍。

export Ali_Key="XFDFDAFAFAFAFA"
export Ali_Secret="FDASFASFSAFSAFDASFDASFASFASDF"

acme.sh --issue --dns dns_ali -d distill.com.cn -d www.distill.com.cn

[Wed Aug 26 23:36:34 CST 2020] Using CA: http://acme-v02.api.letsencrypt.org/directory
[Wed Aug 26 23:36:34 CST 2020] Create account key ok.
[Wed Aug 26 23:36:34 CST 2020] Registering account: http://acme-v02.api.letsencrypt.org/directory
[Wed Aug 26 23:36:40 CST 2020] Registered
[Wed Aug 26 23:36:40 CST 2020] ACCOUNT_THUMBPRINT='GcumXzsk5hrnln0WKVcDw4EiijsA8sGq0aD6nJUlk_Y'
[Wed Aug 26 23:36:40 CST 2020] Creating domain key
[Wed Aug 26 23:36:40 CST 2020] The domain key is here: /root/.acme.sh/distill.com.cn/distill.com.cn.key
[Wed Aug 26 23:36:40 CST 2020] Multi domain='DNS:distill.com.cn,DNS:www.distill.com.cn'
[Wed Aug 26 23:36:40 CST 2020] Getting domain auth token for each domain
[Wed Aug 26 23:36:49 CST 2020] Getting webroot for domain='distill.com.cn'
[Wed Aug 26 23:36:49 CST 2020] Getting webroot for domain='www.distill.com.cn'
[Wed Aug 26 23:36:49 CST 2020] Adding txt value: YHayV93uHWrajYI-dhfZJC2jtlTn5mmdpgvXWSQulIk for domain:  _acme-challenge.distill.com.cn
[Wed Aug 26 23:36:52 CST 2020] The txt record is added: Success.
[Wed Aug 26 23:36:52 CST 2020] Adding txt value: zcgcyT8QM_S2TFgKFDBZgbHAJmAr8CRQyfO8dRW-YJ4 for domain:  _acme-challenge.www.distill.com.cn
[Wed Aug 26 23:36:56 CST 2020] The txt record is added: Success.
[Wed Aug 26 23:36:56 CST 2020] Let's check each DNS record now. Sleep 20 seconds first.
[Wed Aug 26 23:37:17 CST 2020] Checking distill.com.cn for _acme-challenge.distill.com.cn
[Wed Aug 26 23:37:25 CST 2020] Domain distill.com.cn '_acme-challenge.distill.com.cn' success.
[Wed Aug 26 23:37:25 CST 2020] Checking www.distill.com.cn for _acme-challenge.www.distill.com.cn
[Wed Aug 26 23:37:32 CST 2020] Domain www.distill.com.cn '_acme-challenge.www.distill.com.cn' success.
[Wed Aug 26 23:37:32 CST 2020] All success, let's return
[Wed Aug 26 23:37:32 CST 2020] Verifying: distill.com.cn
[Wed Aug 26 23:37:38 CST 2020] Success
[Wed Aug 26 23:37:38 CST 2020] Verifying: www.distill.com.cn
[Wed Aug 26 23:37:45 CST 2020] Pending
[Wed Aug 26 23:37:49 CST 2020] Success
[Wed Aug 26 23:37:49 CST 2020] Removing DNS records.
[Wed Aug 26 23:37:49 CST 2020] Removing txt: YHayV93uHWrajYI-dhfZJC2jtlTn5mmdpgvXWSQulIk for domain: _acme-challenge.distill.com.cn
[Wed Aug 26 23:37:53 CST 2020] Removed: Success
[Wed Aug 26 23:37:53 CST 2020] Removing txt: zcgcyT8QM_S2TFgKFDBZgbHAJmAr8CRQyfO8dRW-YJ4 for domain: _acme-challenge.www.distill.com.cn
[Wed Aug 26 23:37:58 CST 2020] Removed: Success
[Wed Aug 26 23:37:58 CST 2020] Verify finished, start to sign.
[Wed Aug 26 23:37:58 CST 2020] Lets finalize the order.
[Wed Aug 26 23:37:58 CST 2020] Le_OrderFinalize='http://acme-v02.api.letsencrypt.org/acme/finalize/94949289/4874363945'
[Wed Aug 26 23:38:01 CST 2020] Downloading cert.
[Wed Aug 26 23:38:01 CST 2020] Le_LinkCert='http://acme-v02.api.letsencrypt.org/acme/cert/0339143585bd28e423b7f9798e7f120e4cf9'
[Wed Aug 26 23:38:04 CST 2020] Cert success.
-----BEGIN CERTIFICATE-----
MIIFaDCCBFCgAwIBAgISAzkUNYW9KOQjt/l5jn8SDkz5MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDA4MjYxNDM3NTlaFw0y
MDExMjQxNDM3NTlaMBkxFzAVBgNVBAMTDmRpc3RpbGwuY29tLmNuMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Lhf/goT83Zvnwzsc+kOJetn+7OrhuJD
7AkUfL+V4QnxMaLikRYwNRL53QI5IyrrNCK7D7+wIRuuFtImIz3/rLXHJzI5cnkt
U7Ua0P2qLqCs64gAZPWKXwtzqkSCaKh5z2thRF9tFvv4whY5aqZaYuaFwFLKFS/9
QNfxEG76dqcclfe3L/2QZ7fAXS6Asn5aePJSOCye+fmB5DceMkAotHOaaC4CNxBd
j+HKyEhYQck4QOHvLFG2nl+qya8hRscEnKbgO2cKkhhoxD1ahnwNr8/mGEOfmswr
/5jqHIekuehUly+jAyG9l9yQQJiNVOTJckzwJtaE+p8jE1iwajxWmwIDAQABo4IC
dzCCAnMwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
BQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRGbJA6ljjzkoC3QfTF/tOj7hqp
HDAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcBAQRj
MGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlwdC5v
cmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v
cmcvMC0GA1UdEQQmMCSCDmRpc3RpbGwuY29tLmNughJ3d3cuZGlzdGlsbC5jb20u
Y24wTAYDVR0gBEUwQzAIBgZngQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEF
BQcCARYaaHR0cDovL2Nwcy5sZXRzZW5jcnlwdC5vcmcwggEEBgorBgEEAdZ5AgQC
BIH1BIHyAPAAdgDwlaRZ8gDRgkAQLS+TiI6tS/4dR+OZ4dA0prCoqo6ycwAAAXQr
azOuAAAEAwBHMEUCIDEGdCoxlcuq/tt6NRevT2NaeUYKcytPgQFsbIVc5mP8AiEA
pO4D2bWVDKdE5SJaurh+VMLLFwFndSx/JZoFAt8XnH8AdgCyHgXMi6LNiiBOh2b5
K7mKJSBna9r6cOeySVMt74uQXgAAAXQrazOpAAAEAwBHMEUCIQCKfo5uCKugub8S
iQB4Hlyf1Dl/iJ8o3d+LVnL4lKwenwIgboJu6QPw8gNuhfeC4X9XwKD2aDjQUmeX
y3b6Pysc7jAwDQYJKoZIhvcNAQELBQADggEBAI6epdrgv1qnwH5DfP9/K9Iusdwe
wOZ5Vnw8A8fM2MHPiok1Fz5J9g5P9jdSdgfL2aL0q3/oW1Ik+s/R1Wr07znTWHii
5z5w0AqtF3fw7f8kgZUwGy7Q4Oiql+qgo6vRQsYDtShdkHTkvUcVmesNDHYRP1lZ
NnfqlEZvihkp9pBSsdQFhE5WyhoyyDItrbDevj9sRAn9ny4mLcsj408hXF70vP2+
Yij3rYtfgh7aPDoVpguAHmZf+fB/pTASG9GUZLLo8seRxdO67sTgbt3DqP0eAylH
hkOT8sL6mmzWffm+X27twG7qm0FNquj0bArS0Cy8n4TuvNvUjcYltihKXn8=
-----END CERTIFICATE-----
[Wed Aug 26 23:38:04 CST 2020] Your cert is in  /root/.acme.sh/distill.com.cn/distill.com.cn.cer 
[Wed Aug 26 23:38:04 CST 2020] Your cert key is in  /root/.acme.sh/distill.com.cn/distill.com.cn.key 
[Wed Aug 26 23:38:04 CST 2020] The intermediate CA cert is in  /root/.acme.sh/distill.com.cn/ca.cer 
[Wed Aug 26 23:38:04 CST 2020] And the full chain certs is there:  /root/.acme.sh/distill.com.cn/fullchain.cer 

安装配置nginx

配置/etc/nginx/nginx.conf

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
}

配置/etc/nginx/conf.d/distill.com.cn.conf

# http(80) -> http(443/ssl)
server {
    listen 80;
    server_name distill.com.cn;
    rewrite ^(.*)$ http://$host$request_uri;
}
# distill.com.cn
server {
    listen 443;
    server_name distill.com.cn;
    include ssl/distill.com.cn.ssl.conf;

    location / {
        # todo
        proxy_pass http://localhost:10088/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

创建/etc/nginx/ssl目录,部署配置密钥文件

./acme.sh --install-cert -d distill.com.cn \
--key-file       /etc/nginx/ssl/distill.com.cn.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd      'service nginx force-reload'

vim /etc/nginx/ssl/distill.com.cn.ssl.conf

ssl on;
ssl_certificate ssl/distill.com.cn.cer;
ssl_certificate_key ssl/distill.com.cn.key;

配置docker服务上线注意项

配置daemon.json文件

{
  "registry-mirrors": ["http://60nwgi45.mirror.aliyuncs.com"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3" 
  }
}
本文转载于网络 如有侵权请联系删除

相关文章

  • RabbitMq消息发送

    如果要发送一个消息,可以使用channel类的basicPublish方法参考如下,其中在rabbitmqTemplate中封装的方式是:rabbitMqTemplate.send(RabbitConstant.MESSAGE_EXCHANGE,"",Message对象);复制其对应的底层方法:convertedMessageProperties为message对象中设置的对象属性信息,也就是下边的messageProperties。 channel.basicPublish(exchange,routingKey,mandatory,convertedMessageProperties,message.getBody());复制我们发送的消息(Message对象)包括消息体和消息的一些描述信息。//生成消息体 byte[]body=JSON.toJSONBytes(message,SerializeConfig.globalInstance); //设置消息相关属性 MessagePropertiesmessageProperties=newMessageProp

  • 不同缓冲区实现传输效果不一样

    使用直接缓冲区时,无需通过通道来传输数据,直接将数据放在缓冲区内即可importjava.io.IOException; importjava.nio.MappedByteBuffer; importjava.nio.channels.FileChannel; importjava.nio.file.Paths; importjava.nio.file.StandardOpenOption; publicclassdemo5{ publicstaticvoidmain(String[]args)throwsIOException{ //通过open()方法来获得通道 FileChannelinChannel=FileChannel.open(Paths.get(""),StandardOpenOption.READ); //outChannel需要为READWRITECREATE模式 //READWRITE是因为后面获取直接缓冲区时模式为READ_WRITE模式 //CREATE是因为要创建新的文件 FileChanneloutChannel=FileChann

  • 安卓开发的瑞士军刀“Retrofit2框架”

    导言现在虽然是多端平台开发的天下,但做Iot开发主要在安卓系统下,当然不排除以后的什么鸿蒙系统(至于能不能成大器这另一回事)。做Iot开发主要就是解决设备孤岛的问题,就是怎么将设备的数据上传到服务器是。传统的就http(s)或MQ这两套板斧,不过其实MQ也是基于http(s),只是由于其已经大多封装好调用直连所以是俺等懒人的必选之一。不过用MQ又要部署太多的事情,为几个简单去部署一堆事情,俺乐意其时间也不乐意,好吧!那用回http(s),虽然安卓的http传输还是可以,不过刚接触到一套Retrofit2框架。感觉不错,于是向大伙推荐一下吧。它就是是一直雄霸在开源框架的TOP1的RetrofitRetrofit的前世今生Retrofit其实是一款基于OkHttp的框架,它的底层就是OkHttp,OkHttp这个老朋友就不多解释了。。Retrofit的优点①超级解耦②可以配置不同HttpClient来实现网络请求③支持同步、异步和RxJava④可以配置不同的反序列化工具来解析数据,如:json、xml⑤请求速度快,使用非常方便灵活使用方法官网地址:https://square.github

  • python-练习实现猜数字的循环

    目录: input:输入print:输出int:整数型if循环:如果 elif:或者 else:否则break:结束本次循环python语言是从上到下一句一句执行的。 代码部分:#!/usr/bin/env python # -*- coding:utf-8 -*- age = 24 input_num = int(input("Please enter your age:")) if input_num == age:     print("Bingo!")      elif input_num > age:     print("Please enter a smaller!")      else:     print("Please enter a larger point!")复制在源代码的基础上添加while循环与break:#!/usr/bin/env python # -*- coding:utf-8 -*- age = 24 while True: input_num 

  • 方法的定义及调用

    *方法:其实就是完成特定功能的代码块 *定义格式: * 修饰符返回值类型方法名(参数类型参数名1,参数类型参数名2...){ * 方法体; * return返回值; * } *格式解释: * A:修饰符 目前记住publicstatic * B:返回值类型 用于限定返回值的数据类型 * C:方法名 为了方便我们调用方法的名字 * D:参数类型 用于限定调用方法时传入的数据的类型 * E:参数名 用于接收调用方法时传入的数据的变量 * F:方法体 完成功能的代码 * G:return结束方法,并且把返回值带给调用者 * *写一个方法有两个明确: * A:返回值类型 明确功能结果的数据类型 * B:参数列表 明确有几个参数,以及参数的数据类型 * *案例: * 写一个方法用于求和。 */ publicclassMethodDemo{ publicstaticvoidmain(String[]args){ } /* *两个明确: * 返回值类型:int * 参数列表:inta,intb */ publicstaticintsum(in

  • 追根溯源!一图看尽深度学习架构谱系

    机器之心整理 参与:蒋思源、李泽南、李亚洲 近几年,深度学习高速发展,出现了大量的新模型与架构,以至于我们无法理清网络类型之间的关系。在这篇文章中,中国香港科技大学(HKUST)助理教授金成勳总结了深度网络类型之间的谱系图,以便于我们索引不同类型网络的杰出研究成果。 金成勳在GitHub上梳理出的谱系图如下(点击图片放大查看),最后的蓝色字体部分是各分支内的杰出研究成果(附所有论文链接)。机器之心在此基础上对各个分支网络做了介绍、补充,希望对读者了解网络体系间的关联有所帮助。如有缺陷,欢迎大家留言补充。 Github项目地址:https://github.com//hunkim/deep_architecture_genealogy 完整图 记忆网络 在记忆网络分支中,hunkim标注了三篇重要论文:《记忆网络》、《端到端记忆网络》、《DMN:动态记忆网络》。神经编程是记忆网络的下一级分支,包含神经图灵机、混合计算等论文。 参考阅读: 深度|YannLeCun最新演讲再谈预测学习:记忆网络和对抗训练是很有前景的方向一周论文|记忆网络及其变体模型业界|MetaMind发布论文:借助动态记

  • 实现云直连的需求有哪些

    直连提供了一个更有效的方式将数据迁移到公有云。但组织该如何设置到云的直连呢?公有云直连能够在数据中心和云服务提供商之间提供更可靠,更安全的网络。为了能满足企业云计算的安全性和可靠性需求,主流的云提供商都加快了自己的直连选项,如AWSDirectConnect、微软的AzureExpressRoute和VMwarevCloudAirDirectConnect。连接到公有云的直连有两个基本考量因素:云提供商的服务可用性。或者服务地点。和网络服务提供商(NSP)的可用性。通常情况下,NSP是一个地区或国家的电信运营商。你需要一个能够在你的数据中心和云服务提供商的可直连设备之间建立专用连接的NSP。这听起来很简单,但细节上可能会非常复杂。首先,公有云提供商为了服务在全球不同地区的广大用户而拥有并运营多个数据中心是很常见的。但是,直连技术仍在发展之中,所以不是每一个供应商的设备都能够支持它。检查你使用的提供商的设施是否支持直连的选项。如果没有,你可能需要通过别的支持直连的设施来连接——这可能迫使你在工作负载和数据集迁移间做出取舍。然而,有一些供应商,如亚马逊网络服务(AWS),允许在美国国内的直

  • C语言基础知识梳理总结[通俗易懂]

    大家好,又见面了,我是你们的朋友全栈君。C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭!算法结构:1、顺序结构、选择结构、循环结构;2、循环结构又分为while型、do-while型、for循环结构;3、程序流程图;结构化程序设计方法:1、自顶向下;2、逐步细化;3、模块化设计;4、结构化编码。数据类型:  常量:常量包括字面常量、直接常量和符号常量;  变量:C语言规定标志符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或者下划线;必须压迫先定义后使用;每一个变量被定义以确定类型后,在编译时就能为其分配相应的存储单元;  整数类型:整数常量有十进制、八进制和十六进制;“%d”  整形变量:数据在内存中存放形式是以二进制形式存放;有int型、shortint型和longint型,无符号整型变量的范围是-32768—32767,有符号型为0~65535.通常把long定义为32位,把short定义为16位,int可以是32位也可以为16位,这都主要取决于机器字长。  实型常量的表示方法:(1)十

  • nginx:TIME_WAIT过多或者CLOSE_WAIT过多的状态

    1起因 线上服务器nginx日志运行一段时间后,会报如下错误: 1024worker_connectionsarenotenough 一般做法是修改worker_connections。但实际上:该服务是用于时间比较短的连接里,并且一天最多才4000个请求。不可能会耗尽worker_connections。除非每次连接都没有释放对应的连接。‘ shell>netstat-n|awk‘/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}’CLOSE_WAIT802ESTABLISHED106shell>lsof-n|grep“nginx对应的一个进程id”MvLogServ31125mv111uIPv4766535780t0TCP10.1.138.60:8996->10.1.138.60:51977(CLOSE_WAIT)MvLogServ31125mv112uIPv4766596980t0TCP10.1.138.60:8996->10.1.138.60:52015(CLOSE_WAIT)MvLogServ31125mv113u

  • pycharm —— 快捷键使用

    (一)常见指令 界面操作: 切换上方tab:ctrl+tab 隐藏左侧工程栏:shift+Esc Python文件篇: command+C:选中光标所在行,并且复制到剪切板; option+commond+T:选择if/while等,可以自动补充; 跳转到声明处(cmd加鼠标):cmdb显示符号代码(esc退出窗口回车进入代码):opt+空格光标之前/后的位置:cmd[]findusage:opt+F7删除当前行:cmdbackspace cmd+f当前文件搜索(回车下一个shift回车上一个) cmd+r当前文件替换shift+cmd+f全局搜索shift+cmd+R全局替换cmd+o搜索classshift+cmd+o搜索文件opt+cmd+o搜索符号(函数等)cmd+L 指定行数跳转shiftenter在行中的时候直接到下一行cmd+展开当前cmd-折叠当前shiftcmd+展开所有shiftcmd-折叠所有cmd/注释/取消注释一行opt+cmd+/批量注释(pycharm不生效)ctr+tab史上最NB的导航窗口(工程文件列表、文件结构列表、命令行模式、代码检查

  • 接口和抽象类的相同与区别

    前言:接口和抽象类是代码当中经常使用的两样,他们的代码方式不同于其他,有自己一套特殊的书写方式功能特点 下面介绍一哈他的使用规则 同:都不能被实例化,可以定义引用   不同:抽象类有具体方法和抽象方法,有4种方法修饰符,可以被继承,可以实现接口 有抽象方法的类一定是抽象类,抽象类不一定有抽象方法,使用方式是被继承,可以定义构造器 抽象类主要用来抽象类别,接口主要用来抽象功能。   接口,引用方式是被实现,多实现单继承,可以继承抽象方法 只能有public修饰符,只能定义常量,不可以定义构造器   jdk1.8添加了新的特性: 默认的实现方法,以及静态方法(或者称为类方法)  

  • 常用方法(算法)使用总结

    常用方法(算法)使用总结 一,浏览器禁用常规方法 1,禁用右键 1document.oncontextmenu=function(){ 2event.returnValue=false; 3} 4//或者 5document.oncontextmenu=newFunction("event.returnValue=false"); 6//或者直接返回整个事件 7document.oncontextmenu=function(){ 8returnfalse; 9}复制 2,禁用网页上选取内容 1document.onselectstart=function(){ 2event.returnValue=false; 3} 4//或者 5document.onselectstart=newFunction("event.returnValue=false"); 6//或者直接返回整个事件 7document.onselectstart=function(){ 8returnfalse; 9}复制 3,禁用网页上选取内容 1document.oncopy=function(){ 2e

  • 上万级大批量数据导出Excel(多方案)

    大批量数据Excel 比如数据量一大(比如上万条以上的记录),用传统的方式和插件等导出excel速度都很慢,甚至最终导致内存益出;往文本文件直接插入记录的方式(速度快,占内存也少),然后用\t割开代表一列,产生的文件,直接用excel打开就可以,单只支持单个sheet页,office2003(xls)限制一页65536行,需要分割为多个文件,具体如下: Stringpath="c:/test.xls";//数据存放的位置 BufferedWriterbuff=newBufferedWriter(newFileWriter(path));//生成文件 //插入标题 buff.write("部门名称\t用户\t电话");//代表3列 buff.write("\r\n");//换行 //插入5万条记录 for(inti=0;i<50000;i++){ buff .write("部门\t小吴\t123456"); buff.write("\r\n"); } buff.close();//关闭文件操作复制 多页sheet导出 ///<summary> ///可导出多个sh

  • 项目总结(五)--- 界面调试工具Reveal

      在开发中,我们也许会碰到以下需求:对于一些动态复杂的交互界面,手码去制定界面是常有的事情,然而我们在开发中想修改过一些参数后想看下实时效果,只能重新运行项目,进入到对应的页面来进行修改,是不是有点麻烦呢?还有,作为屌丝程序猿想脱离屌丝行列,不断学习先进的东东是必不可少的,那么,如果看到别的大公司开发的优秀APP,想借鉴学习下,又该怎么入手呢?这时,Reveal会帮助我们。   1、Reveal的下载     进入到官网(http://revealapp.com/)后           下载就可以(注意下载后默认保存的是在“下载”下面,手动移动到“应用程序”下面,方便下面使用时的一些操作)。   2、界面认识        3、Reveal的使用     1》连接到模拟器调试       连接到模拟器调试有好几种方法,有的是必须修改功能文件(缺点显而易见,协作开发时得要求别人也安装这玩意),有的是断点后在LLDB输入命令等等。在这就简单记录下最方便简单地一种方式,步骤如下:       (1)在当前用户目录下,建立.lldbinit文件,并输入以下内容并保存       

  • 数据结构和算法的关系以及线性结构和非线性结构

    数据结构和算法的介绍 数据结构和算法的关系   (1)数据data结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构,     学好数据结构可以编写出更加漂亮,更加有效率的代码。   (2)要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决。   (3)程序=数据结构+算法   (4)数据结构是算法的基础,换言之,想要学好算法,需要把数据结构学到位。     数据结构包括:线性结构和非线性结构 线性结构:   (1)线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系   (2)线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表     称为顺序表,顺序表中的存储元素的连续的   (3)链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素     以及相邻元素的地址信息   (4)线性结构常见的有:数组、队列、链表和栈 非线性结构: 非线性结构包括:二维数组,多维数组,广义表,树结构,图结构  

  • 【typescript 01】 FirstOne

    目录点这里 ts0715仓库git代码   概论 TypeScript是由微软开发的一款开源的编程语言 TypeScript是Javascript的超集, 扩展了JavaScript的语法,遵循最新的ES6、Es5规范。 推广: 谷歌的angular2.x+就是基于Typescript语法 Nodejs框架Nestjs、midway中用的就是TypeScript语法   预览 1.npminstall-gtypescript  如果慢,就npminstall-gcnpm--registry=https://registry.npm.taobao.org 然后检查编译工具是否安装成功:tsc-v 用于将ts编译成js文件(因为浏览器不支持ts以及ES6,所以需要编译工具将ts文件编译成ES5代码)   2. 创建一个文件01_hello_ts.ts functionsayHello(person:string){ return"Hello,"+person; } consttsName="typescr

  • 《挑战程序设计竞赛》2.3 动态规划-优化递推 POJ1742 3046 3181

    POJ1742 http://poj.org/problem?id=1742 题意 有n种面额的硬币,面额个数分别为Ai、Ci,求最多能搭配出几种不超过m的金额? 思路 据说这是传说中的男人8题呢,对时间和空间复杂度要求都挺高的。 朴素DP三重循环比较容易想到,但显而易见会TLE。 这里由于dp数组记录的是一个bool值(是否能搭配出某金额),记录的信息较少,因而存在浪费。优化思路是dp[i][j]记录用前i种数加和得到j时第i种数最多能剩余多少个(不能加和得到的情况下为-1)。但二维dp数组的空间复杂度仍然没有降下来,这时候会MLE。 改成一维数组几个AC。 关于思路更详细的说明见《挑战程序设计竞赛》第62-64页。 另外可参见另一篇博客,对于这道题解释的非常清楚:POJ1742详解 代码 SourceCode Problem:1742User:liangrx06 Memory:564KTime:1907MS Language:C++Result:Accepted SourceCode #include<iostream> #include&l

  • 解决 SpringBoot Elasticsearch 7.x 聚合查询遇到的问题

    SpringBootElasticsearch7.x聚合查询遇到的问题 1.时间的问题 2.无法进行聚类的问题 2.1解决 3.类型转换的问题 4.QueryBuilders.termQuery()查询无数据的问题 4.1解决   1.时间的问题 报错java.time.DateTimeException:UnabletoobtainInstantfromTemporalAccessor:{},ISOresolvedto2019-04-30T16:00oftypejava.time.format.Parsed 解决:POJO类中 Date 类型转化为 LocalDate 类型. //创建时间 @Field(type=FieldType.Date,format=DateFormat.date_hour_minute_second) privateLocalDatecreateTime; //更新时间 @Field(type=FieldType.Date,format=DateFormat.date_hour

  • 漫画教你了解SharePoint

    漫画教你了解SharePoint     如果你对SharePoint感兴趣,又不乏幽默感,你绝对会喜欢这篇文章的。     那SharePoint和漫画有什么关系呢?下面就让我们看看,从漫画中了解SharePoint,可能你还会发现一些智慧和引导呢。     好吧,看看我们能不能发现什么宝贝。 你的公司只是告诉你“我们要用SharePoint做项目”     这种情况你也遇到过吧。我都不知道听说多少次了。如果你有同感,就在博客评论里吱一声吧哈哈。有时候老板就是这样,毫无预兆的突然丢个炸弹给你,让你不知所措,干什么从哪儿开始都毫无头绪。要么你开始学习SharePoint这鬼东西,要么拒绝老板卷铺盖走人,你选择哪个??。一条是不归路,一条是无路可走。。。但是,其实你选择SharePoint也不要沮丧,用心学习。看起来像迷茫没有终点的任务,但是至少你会越来越强,另外还可以获得很多社区的帮助呢。 不管你认为自己多么聪明,都得一步步

  • 临时文件服务器,配置共享文件夹

    在服务器上建立一个文件夹,设置为共享文件夹。创建文件夹的时候访问可以用127.0.0.1\xxx\。负载服务器配置host解析过去,

  • iOS开发证书不受信任

    今天Xcode打包时报错,查到log发现问题是签名不受信任。感觉很迷惑,开发证书,描述文件做成手顺都没问题呀,为什么不受信任呢?公钥也没有过期,用同事的公钥然后让他给我导出.p12文件安装仍然显示证书不受信任。?   百度,谷歌都说可能是误删了AppleWWDRCA(AppleWorldwideDeveloperRelationsCertificationAuthority)证书。赶快去检查了下,我的AppleWWDRCA文件有安装呀,为什么??   尝试了各种重新下载安装后,仍然显示证书不受信任,崩溃了。还是去查官方文档吧。 还真让我找到了解决方法了。   原来这个文件AppleWWDRCA两个版本都要安装呀,我电脑上只有过期时间为2023年2月8号的版本,赶快安装上了2030年过期的版本,再打开钥匙串查看,果然变成绿色的信任,然后重新打包,一路顺畅。舒服?       再次吐槽,iOS开发的各种证书,密钥太烦了? 下载链接,内含下载地址 https://developer.apple.com/cn/support/cod

相关推荐

推荐阅读