??xml version="1.0" encoding="utf-8" standalone="yes"?>美国棒球比分怎么看:BlogJava-新手?/title><link>//www.355548.live/beginner</link><description>专注于Java技?/description><language>zh - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/27/435309.htmlpaulwongpaulwongFri, 27 Mar 2020 15:35:00 GMT//www.355548.live/paulwong/archive/2020/03/27/435309.html//www.355548.live/paulwong/comments/435309.html//www.355548.live/paulwong/archive/2020/03/27/435309.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435309.html//www.355548.live/paulwong/services/trackbacks/435309.htmlDatabase Profiling

MongoDB Profiler is a db profiling system that can help identify inefficient

or slow queries and operations.

Levels of profiles available are:

Level

Setting

0

Off. & No profiling

1

On & only includes slow operations

2

On & Includes all operations


We can enable it by setting the Profile level value using the following
command in mongo shell :

"db.setProfilingLevel(1)"

By default, mongod records slow queries to its log, as defined by slowOpThresholdMs.

NOTE

Enabling database profiler puts negative impact on MongoDB’s performance.

It’s better to enable it for specific intervals & minimal on Production Servers.

We can enable profiling on a mongod basis but This setting will not propagate
across a replica set and sharded cluster.

We can view the output in the system.profile collection in mongo shell using show profile command, or using following:

db.system.profile.find( { millis : { $gt : 200 } } )

Command returns operations that took longer than 200 ms. Similarly we
can change the values as per our need.

Enabling profile for an entire mongod instance.

For the purpose of development in testing, we can enable database profiling/settings for an 
entire mongod instance. The profiling level will be applied to all databases.

 

NOTE:

We can't enable the profiling settings on a mongos instance. To enable the profiling in

shard clusters, we have to enable/start profiling for each mongod instance in cluster.

 

Query for the recent 10 entries

db.system.profile.find().limit(10).sort( { ts : 1 } ).pretty()

 

Collection with the slowest queries(No. Of queries)

db.system.profile.group({key: {ns: true}, initial: {count: 0}, reduce: function(obj,prev){ prev.count++;}})

 

Collection with the slowest queries(No. Of millis spent)

db.system.profile.group({key: {ns: true}, initial: {millis: 0}, reduce: function(obj, prev){ prev.millis += obj.millis;}})

 

Most recent slow query

db.system.profile.find().sort({$natural: -1}).limit(1)

 

Single slowest query(Right now)

db.system.profile.find().sort({millis: -1}).limit(1)



paulwong 2020-03-27 23:35 发表评论
]]>
ZLINUX的分布式文gpȝGlusterFS + NFS-Ganesha - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/22/435293.htmlpaulwongpaulwongSun, 22 Mar 2020 03:46:00 GMT//www.355548.live/paulwong/archive/2020/03/22/435293.html//www.355548.live/paulwong/comments/435293.html//www.355548.live/paulwong/archive/2020/03/22/435293.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435293.html//www.355548.live/paulwong/services/trackbacks/435293.html
GlusterFS是分布文件存储系l, 也即一个文件有三个备䆾Q每个备份可以放C同的节点(IP)上,q样某个节点CRASH后,会从其他节点取文件?br />
NFS-Ganesha则是用户层面非KERNAL层面的实CNFS SERVER的功能,但双加了扩展Q对外提供基于NFS协议的文件存取服务?br />
资源Q?br />GlusterFS and NFS-Ganesha integration
https://staged-gluster-docs.readthedocs.io/en/release3.7.0beta1/Features/glusterfs_nfs-ganesha_integration/

Exporting and Unexporting Volumes through nfs-ganesha
https://access.redhat.com/documentation/en-US/Red_Hat_Storage/2.1/html/Administration_Guide/Starting_and_Stopping_nfs-ganesha.html

https://www.snia.org/sites/default/files/Poornima_NFS_GaneshaForClusteredNAS.pdf







paulwong 2020-03-22 11:46 发表评论
]]>
开机nfs自动挂蝲 - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/21/435290.htmlpaulwongpaulwongSat, 21 Mar 2020 11:44:00 GMT//www.355548.live/paulwong/archive/2020/03/21/435290.html//www.355548.live/paulwong/comments/435290.html//www.355548.live/paulwong/archive/2020/03/21/435290.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435290.html//www.355548.live/paulwong/services/trackbacks/435290.htmlQ.echo "mount -t nfs -o nolock ${IP}:${remote_dir} ${local_dir}" >>  /etc/rc.local

Q.echo "${IP}:/home/logs /home/logs nfs defaults 0 0" >> /etc/fstab

美国棒球比分怎么看:关于/etc/rc.local


rc.local也是我经怋用的一个脚本。该脚本是在pȝ初始化别脚本运行之后再执行的,因此可以安全地在里面d你想在系l启动之后执行的脚本。常见的情况是你可以再里面添加nfs挂蝲/mount脚本。此外,你也可以在里面添加一些调试用的脚本命令。例如,我就到q这U情况:samba服务L无法正常q行Q而检查发玎ͼsamba是在pȝ启动q程中就该启动执行的Q也是_samba守护E序配置保证了这U功能本应该正确执行。碰到这U类似情况,一般我也懒得花大量旉LZ么,我只需要简单的?etc/rc.local脚本里加上这么一行:

/etc/init.d/samba start

q样成功的解决了samba服务异常的问题?img src ="//www.355548.live/paulwong/aggbug/435290.html" width = "1" height = "1" />

paulwong 2020-03-21 19:44 发表评论
]]>
利用 Chef ?Red Hat Enterprise Linux 上自动化部v Mariadb Galera Cluster - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/21/435289.htmlpaulwongpaulwongSat, 21 Mar 2020 02:55:00 GMT//www.355548.live/paulwong/archive/2020/03/21/435289.html//www.355548.live/paulwong/comments/435289.html//www.355548.live/paulwong/archive/2020/03/21/435289.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435289.html//www.355548.live/paulwong/services/trackbacks/435289.htmlhttps://www.ibm.com/developerworks/cn/linux/1611_chensz_mgc/index.html



paulwong 2020-03-21 10:55 发表评论
]]>
在SPRING BOOT中用多JMS CONNECTION - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/19/435278.htmlpaulwongpaulwongThu, 19 Mar 2020 01:45:00 GMT//www.355548.live/paulwong/archive/2020/03/19/435278.html//www.355548.live/paulwong/comments/435278.html//www.355548.live/paulwong/archive/2020/03/19/435278.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435278.html//www.355548.live/paulwong/services/trackbacks/435278.html
ActiveMQConnectionFactoryFactory.java
import java.lang.reflect.InvocationTargetException;
import java.util.Collections;
import java.util.List;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionFactoryCustomizer;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQProperties;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQProperties.Packages;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;


/**
 * Factory to create a {
@link ActiveMQConnectionFactory} instance from properties defined
 * in {
@link SecondaryActiveMQProperties}.
 *
 * 
@author Phillip Webb
 * 
@author Venil Noronha
 
*/
class ActiveMQConnectionFactoryFactory {

    private static final String DEFAULT_EMBEDDED_BROKER_URL = "vm://localhost?broker.persistent=false";

    private static final String DEFAULT_NETWORK_BROKER_URL = "tcp://localhost:61616";

    private final ActiveMQProperties properties;

    private final List<ActiveMQConnectionFactoryCustomizer> factoryCustomizers;

    ActiveMQConnectionFactoryFactory(ActiveMQProperties properties,
            List<ActiveMQConnectionFactoryCustomizer> factoryCustomizers) {
        Assert.notNull(properties, "Properties must not be null");
        this.properties = properties;
        this.factoryCustomizers = (factoryCustomizers != null) ? factoryCustomizers : Collections.emptyList();
    }

    public <T extends ActiveMQConnectionFactory> T createConnectionFactory(Class<T> factoryClass) {
        try {
            return doCreateConnectionFactory(factoryClass);
        }
        catch (Exception ex) {
            throw new IllegalStateException("Unable to create " + "ActiveMQConnectionFactory", ex);
        }
    }

    private <T extends ActiveMQConnectionFactory> T doCreateConnectionFactory(Class<T> factoryClass) throws Exception {
        T factory = createConnectionFactoryInstance(factoryClass);
        if (this.properties.getCloseTimeout() != null) {
            factory.setCloseTimeout((intthis.properties.getCloseTimeout().toMillis());
        }
        factory.setNonBlockingRedelivery(this.properties.isNonBlockingRedelivery());
        if (this.properties.getSendTimeout() != null) {
            factory.setSendTimeout((intthis.properties.getSendTimeout().toMillis());
        }
        Packages packages = this.properties.getPackages();
        if (packages.getTrustAll() != null) {
            factory.setTrustAllPackages(packages.getTrustAll());
        }
        if (!packages.getTrusted().isEmpty()) {
            factory.setTrustedPackages(packages.getTrusted());
        }
        customize(factory);
        return factory;
    }

    private <T extends ActiveMQConnectionFactory> T createConnectionFactoryInstance(Class<T> factoryClass)
            throws InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
        String brokerUrl = determineBrokerUrl();
        String user = this.properties.getUser();
        String password = this.properties.getPassword();
        if (StringUtils.hasLength(user) && StringUtils.hasLength(password)) {
            return factoryClass.getConstructor(String.class, String.class, String.class).newInstance(user, password,
                    brokerUrl);
        }
        return factoryClass.getConstructor(String.class).newInstance(brokerUrl);
    }

    private void customize(ActiveMQConnectionFactory connectionFactory) {
        for (ActiveMQConnectionFactoryCustomizer factoryCustomizer : this.factoryCustomizers) {
            factoryCustomizer.customize(connectionFactory);
        }
    }

    String determineBrokerUrl() {
        if (this.properties.getBrokerUrl() != null) {
            return this.properties.getBrokerUrl();
        }
        if (this.properties.isInMemory()) {
            return DEFAULT_EMBEDDED_BROKER_URL;
        }
        return DEFAULT_NETWORK_BROKER_URL;
    }
}

TwinJmsConnectionFactoryConfiguration.java
import java.util.stream.Collectors;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.messaginghub.pooled.jms.JmsPoolConnectionFactory;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.jms.JmsPoolConnectionFactoryFactory;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionFactoryCustomizer;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Profile;


@Configuration
@Profile({"local"})
public class TwinJmsConnectionFactoryConfiguration {

    @Bean
    @ConfigurationProperties(prefix = "spring.activemq.primary")
    public ActiveMQProperties primaryActiveMQProperties() {
        return new ActiveMQProperties();
    }
    
    @Bean(destroyMethod = "stop")
    @Primary
    @ConditionalOnProperty(prefix = "spring.activemq.pool", name = "enabled", havingValue = "true")
    public JmsPoolConnectionFactory connectionFactory(ActiveMQProperties primaryActiveMQProperties,
            ObjectProvider<ActiveMQConnectionFactoryCustomizer> factoryCustomizers) {
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactoryFactory(primaryActiveMQProperties,
                factoryCustomizers.orderedStream().collect(Collectors.toList()))
                .createConnectionFactory(ActiveMQConnectionFactory.class);
        return new JmsPoolConnectionFactoryFactory(primaryActiveMQProperties.getPool())
                .createPooledConnectionFactory(connectionFactory);
    }
    
    ////////////////////////////////////////////////////////////////////////////////
    @Bean
    @ConfigurationProperties(prefix = "spring.activemq.sescond")
    public ActiveMQProperties sescondActiveMQProperties() {
        return new ActiveMQProperties();
    }
    
    @Bean(destroyMethod = "stop")
    @ConditionalOnProperty(prefix = "spring.activemq.pool", name = "enabled", havingValue = "true")
    public JmsPoolConnectionFactory sescondPooledJmsConnectionFactory(ActiveMQProperties sescondActiveMQProperties,
            ObjectProvider<ActiveMQConnectionFactoryCustomizer> factoryCustomizers) {
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactoryFactory(sescondActiveMQProperties,
                factoryCustomizers.orderedStream().collect(Collectors.toList()))
                .createConnectionFactory(ActiveMQConnectionFactory.class);
        return new JmsPoolConnectionFactoryFactory(sescondActiveMQProperties.getPool())
                .createPooledConnectionFactory(connectionFactory);
    }
    
}




paulwong 2020-03-19 09:45 发表评论
]]>
Which is better: PooledConnectionFactory or CachingConnectionFactory? - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/19/435277.htmlpaulwongpaulwongThu, 19 Mar 2020 01:37:00 GMT//www.355548.live/paulwong/archive/2020/03/19/435277.html//www.355548.live/paulwong/comments/435277.html//www.355548.live/paulwong/archive/2020/03/19/435277.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435277.html//www.355548.live/paulwong/services/trackbacks/435277.htmlFrom here:

The difference between the PooledConnectionFactory and the CachingConnectionFactory is a difference in implementation. Below are some of the characteristics that differ between them:

  • Although both the PooledConnectionFactory and the CachingConnectionFactory state that they each pool connections, sessions and producers, the PooledConnectionFactory does not actually create a cache of multiple producers. It simply uses a singleton pattern to hand out a single cached producer when one is requested. Whereas the CachingConnectionFactory actually creates a cache containing multiple producers and hands out one producer from the cache when one is requested.

  • The PooledConnectionFactory is built on top of the Apache Commons Pool project for pooling JMS sessions. This allows some additional control over the pool because there are features in Commons Pool that are not being used by the PooledConnectionFactory. These additional features include growing the pool size instead of blocking, throwing an exception when the pool is exhausted, etc. You can utilize these features by creating your own Commons Pool GenericObjectPool using your own customized settings and then handing that object to the PooledConnectionFactory via the setPoolFactory method. See the following for additional info: //commons.apache.org/pool/api-1.4/org/apache/commons/pool/impl/GenericObjectPoolFactory.html

  • The CachingConnectionFactory has the ability to also cache consumers. Just need to take care when using this feature so that you know the consumers are cached according to the rules noted in the blog post.

  • But most importantly, the CachingConnectionFactory will work with any JMS compliant MOM. It only requires a JMS connection factory. This is important if you are using more than one MOM vendor which is very common in enterprise organizations (this is mainly due to legacy and existing projects). The important point is that the CachingConnectionFactory works very well with many different MOM implementations, not only ActiveMQ.

From here:

  • If you have clustered ActiveMQs, and use failover transport it has been reported that CachingConnectionFactory is not a right choice.

  • The problem I’m having is that if one box goes down, we should start sending messages on the other, but it seems to still be using the old connection (every send times out). If I restart the program, it’ll connect again and everything works. Source: Autoreconnect problem with ActiveMQ and CachingConnectionFactory

  • The problem is that cached connections to the failed ActiveMQ was still in use and that created the problem for the user. Now, the choice for this scenario is PooledConnectionFactory.

  • If you’re using ActiveMQ today, and chances are that you may switch to some other broker (JBoss MQ, WebSphere MQ) in future, do not use PooledConnectionFactory, as it tightly couples your code to ActiveMQ.



paulwong 2020-03-19 09:37 发表评论
]]>
Spring Boot Data Mongodb Starter自动配置那些?/title><link>//www.355548.live/paulwong/archive/2020/03/17/435271.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Tue, 17 Mar 2020 01:39:00 GMT</pubDate><guid>//www.355548.live/paulwong/archive/2020/03/17/435271.html</guid><wfw:comment>//www.355548.live/paulwong/comments/435271.html</wfw:comment><comments>//www.355548.live/paulwong/archive/2020/03/17/435271.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.355548.live/paulwong/comments/commentRss/435271.html</wfw:commentRss><trackback:ping>//www.355548.live/paulwong/services/trackbacks/435271.html</trackback:ping><description><![CDATA[<div style="font-size: medium;"><div class="dntg"><p>正好做MongodbM复制试使用Spring Boot Data Mongodb Starter插g链接讉KMongodb数据库集?/p><p>遇到的坑Q?/p><ul class="dntg"><li class="dntg">spring.data.mongodb.host和spring.data.mongodb.port形式不适合集群配置Q会报host无法识别异常</li><li class="dntg">spring.data.mongodb.uri中经常抛出authentication failed异常</li></ul><p><br /></p><p>解决办法Q?/p><ol><li class="dntg"> 对于W一个坑Q请使用spring.data.mongodb.uri?span style="background-color: yellow;">如果使用了uriQ则其余的host/username/password/db/auth-dbq些全部无效?/span></li><li class="dntg"> 对于W二个坑Q请在spring.data.mongodb.uri中指定replicaSet和authsourceQ另外记得把所有集节Ҏ务器地址都列全?br /><span style="background-color: yellow;">如果auth-db和db是同一个,则无需加authsourceQ如果不同,则加authsource=admin</span></li></ol><p><br /></p><p>我没有把authsource指定Q所以一直报authentication failed异常。然后只好一点点d掘问题点Q最后查到在com.mongodb.ConnectionStringcM的createCredentials?br /><br /></p><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">private</span> MongoCredential createCredentials(<span style="color: #0000FF; ">final</span> Map<String, List<String>> optionsMap, <span style="color: #0000FF; ">final</span> String userName,<br />                                              <span style="color: #0000FF; ">final</span> <span style="color: #0000FF; ">char</span>[] password) {<br />        AuthenticationMechanism mechanism = <span style="color: #0000FF; ">null</span>;<br />        String authSource = (database == <span style="color: #0000FF; ">null</span>) ? "admin" : database;<br />        String gssapiServiceName = <span style="color: #0000FF; ">null</span>;<br />        String authMechanismProperties = <span style="color: #0000FF; ">null</span>;<br /><br />        <span style="color: #0000FF; ">for</span> (<span style="color: #0000FF; ">final</span> String key : AUTH_KEYS) {<br />            String value = getLastValue(optionsMap, key);<br /><br />            <span style="color: #0000FF; ">if</span> (value == <span style="color: #0000FF; ">null</span>) {<br />                <span style="color: #0000FF; ">continue</span>;<br />            }<br /><br />            <span style="color: #0000FF; ">if</span> (key.equals("authmechanism")) {<br />                mechanism = AuthenticationMechanism.fromMechanismName(value);<br />            } <span style="color: #0000FF; ">else</span> <span style="color: #0000FF; ">if</span> (key.equals("authsource")) {<br />                authSource = value;<br />            } <span style="color: #0000FF; ">else</span> <span style="color: #0000FF; ">if</span> (key.equals("gssapiservicename")) {<br />                gssapiServiceName = value;<br />            } <span style="color: #0000FF; ">else</span> <span style="color: #0000FF; ">if</span> (key.equals("authmechanismproperties")) {<br />                authMechanismProperties = value;<br />            }<br />        }<br /><br /><br />        MongoCredential credential = <span style="color: #0000FF; ">null</span>;<br />        <span style="color: #0000FF; ">if</span> (mechanism != <span style="color: #0000FF; ">null</span>) {<br />            <span style="color: #0000FF; ">switch</span> (mechanism) {<br />                <span style="color: #0000FF; ">case</span> GSSAPI:<br />                    credential = MongoCredential.createGSSAPICredential(userName);<br />                    <span style="color: #0000FF; ">if</span> (gssapiServiceName != <span style="color: #0000FF; ">null</span>) {<br />                        credential = credential.withMechanismProperty("SERVICE_NAME", gssapiServiceName);<br />                    }<br />                    <span style="color: #0000FF; ">break</span>;<br />                <span style="color: #0000FF; ">case</span> PLAIN:<br />                    credential = MongoCredential.createPlainCredential(userName, authSource, password);<br />                    <span style="color: #0000FF; ">break</span>;<br />                <span style="color: #0000FF; ">case</span> MONGODB_CR:<br />                    credential = MongoCredential.createMongoCRCredential(userName, authSource, password);<br />                    <span style="color: #0000FF; ">break</span>;<br />                <span style="color: #0000FF; ">case</span> MONGODB_X509:<br />                    credential = MongoCredential.createMongoX509Credential(userName);<br />                    <span style="color: #0000FF; ">break</span>;<br />                <span style="color: #0000FF; ">case</span> SCRAM_SHA_1:<br />                    credential = MongoCredential.createScramSha1Credential(userName, authSource, password);<br />                    <span style="color: #0000FF; ">break</span>;<br />                <span style="color: #0000FF; ">default</span>:<br />                    <span style="color: #0000FF; ">throw</span> <span style="color: #0000FF; ">new</span> UnsupportedOperationException(format("The connection string contains an invalid authentication mechanism'. "<br />                                                                           + "'%s' is not a supported authentication mechanism",<br />                            mechanism));<br />            }<br />        } <span style="color: #0000FF; ">else</span> <span style="color: #0000FF; ">if</span> (userName != <span style="color: #0000FF; ">null</span>) {<br />            credential = MongoCredential.createCredential(userName, authSource, password);<br />        }<br /><br />        <span style="color: #0000FF; ">if</span> (credential != <span style="color: #0000FF; ">null</span> && authMechanismProperties != <span style="color: #0000FF; ">null</span>) {<br />            <span style="color: #0000FF; ">for</span> (String part : authMechanismProperties.split(",")) {<br />                String[] mechanismPropertyKeyValue = part.split(":");<br />                <span style="color: #0000FF; ">if</span> (mechanismPropertyKeyValue.length != 2) {<br />                    <span style="color: #0000FF; ">throw</span> <span style="color: #0000FF; ">new</span> IllegalArgumentException(format("The connection string contains invalid authentication properties. "<br />                            + "'%s' is not a key value pair", part));<br />                }<br />                String key = mechanismPropertyKeyValue[0].trim().toLowerCase();<br />                String value = mechanismPropertyKeyValue[1].trim();<br />                <span style="color: #0000FF; ">if</span> (key.equals("canonicalize_host_name")) {<br />                    credential = credential.withMechanismProperty(key, Boolean.valueOf(value));<br />                } <span style="color: #0000FF; ">else</span> {<br />                    credential = credential.withMechanismProperty(key, value);<br />                }<br />            }<br />        }<br />        <span style="color: #0000FF; ">return</span> credential;<br />    }</div><p><br /></p><p>authSource默认会指向我们目标数据的数据库。然而在w䆾验证机制中我们通常需要指向admin。(非常x_口Q代码作者在q里脑袋被men挤了么)。所以需要强制指定authSource中指定。具体指定方式如下:</p><p> </p><p> </p><p> </p><p> </p><pre bash"=""><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />-->mongodb://{用户名}:{密码}@{host1}:27017,{host2}:27017,{host3}:27017/{目标数据库}?replicaSet={复制集名U}&write=1&readPreference=primary&authsource={授权数据库}</div></pre></div></div><img src ="//www.355548.live/paulwong/aggbug/435271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/paulwong/" target="_blank">paulwong</a> 2020-03-17 09:39 <a href="//www.355548.live/paulwong/archive/2020/03/17/435271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SPRING BATCH中STEP如果没加TRANSACTION MANAGER - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/16/435267.htmlpaulwongpaulwongMon, 16 Mar 2020 01:43:00 GMT//www.355548.live/paulwong/archive/2020/03/16/435267.html//www.355548.live/paulwong/comments/435267.html//www.355548.live/paulwong/archive/2020/03/16/435267.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435267.html//www.355548.live/paulwong/services/trackbacks/435267.html
+------------+--------------+-------------+-----------------+------------------+--------------------+----------------+-----------+-------------------------
 | READ_COUNT | FILTER_COUNT | WRITE_COUNT | READ_SKIP_COUNT | WRITE_SKIP_COUNT | PROCESS_SKIP_COUNT | ROLLBACK_COUNT | EXIT_CODE | EXIT_MESSAGE
-+------------+--------------+-------------+-----------------+------------------+--------------------+----------------+-----------+-------------------------
 |          1 |            0 |           1 |               0 |                0 |                  0 |              0 | COMPLETED |
 |      30006 |            0 |       29947 |               0 |               59 |                  0 |             61 | COMPLETED | Waited for 101 results.

如上面的L?0006Q但COMMIT的L?9947Q有59个被跌了?br />
因此需在STEP上加TRANSACTION MANAGER.

https://stackoverflow.com/questions/42803941/spring-batch-incorrect-write-skip-count-issue



paulwong 2020-03-16 09:43 发表评论
]]>
mySQL Error 1040: Too Many Connection - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/10/435247.htmlpaulwongpaulwongTue, 10 Mar 2020 12:20:00 GMT//www.355548.live/paulwong/archive/2020/03/10/435247.html//www.355548.live/paulwong/comments/435247.html//www.355548.live/paulwong/archive/2020/03/10/435247.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435247.html//www.355548.live/paulwong/services/trackbacks/435247.html

To see how many connections are configured for your DB to use:

select @@max_connections;

To change it:

set global max_connections = 200;

To see how many are connected at the current time:

show processlist;
vi /etc/my.cnf

[mysqld]
max_connections = 500


paulwong 2020-03-10 20:20 发表评论
]]>
5 ways to customize Spring MVC JSON/XML output - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/08/435236.htmlpaulwongpaulwongSun, 08 Mar 2020 07:55:00 GMT//www.355548.live/paulwong/archive/2020/03/08/435236.html//www.355548.live/paulwong/comments/435236.html//www.355548.live/paulwong/archive/2020/03/08/435236.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435236.html//www.355548.live/paulwong/services/trackbacks/435236.htmlhttps://mostafa-asg.github.io/post/customize-json-xml-spring-mvc-output/



paulwong 2020-03-08 15:55 发表评论
]]>
MongDBq接池参数serverSelectionTimeout、connectTimeout、maxWaitTime和socketTimeout介绍 - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/07/435231.htmlpaulwongpaulwongSat, 07 Mar 2020 12:58:00 GMT//www.355548.live/paulwong/archive/2020/03/07/435231.html//www.355548.live/paulwong/comments/435231.html//www.355548.live/paulwong/archive/2020/03/07/435231.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435231.html//www.355548.live/paulwong/services/trackbacks/435231.htmlMongDB Clienth查询数据Q需要包括五个阶D:
MongoDB Client需要找到可用的MongoDB Server
MongoDB Client需要和MongoDB Server建立QnewQConnection
应用E序处理U程从Connection Pool中获取Connection
数据传输Q获取连接后Q进行Socket通信Q获取数据)
断开Collection
那么QMongoDB Client驱动讄中网l相关等待超时参数serverSelectionTimeout、connectTimeout、maxWaitTime和socketTimeout分别对应上面哪个环节呢?
参数serverSelectionTimeoutQ对应第1个环节,即MongoDB Client需要找到可用的MongoDB Server所需要的{待旉Q?nbsp;                                            MongDB部v的生产一般由多个服务器组成,要么作ؓ一个复刉或者作Z个分片集,参数                                                     serverSelectionTimeout的值即为多长时间内找不到合适服务器时候就军_攑ּ的时间间隔;
参数connectTimeoutQ对应第2个环节,每次创徏ConnectionQ对应的|络{待。单位毫U数, 0表示没有限制Q?/div>
参数maxWaitTimeQ对应第3个环节,应用E序处理U程从连接池中获取CollectionQ对应的|络{待旉。单位毫U数Q?表示                                   不等待,负数表示{待旉不确定;
参数socketTimeoutQ对应第4个环节,获取Connection后,有了Socket通信Q获取数据,卛_MonogoDB Client                                                      和MonogoDB Server的Socket通信q程中的|络{待旉。单位毫U数Q默认配|ؓ0Q也是没有限制Q?nbsp;                                 没有?旉ӞpȝZ问题也不Ҏ发现Q应该根据实际情况,l出合理的超时时间?/div>
 
其他相关参数如下Q?/div>
connectionsPerHostQ对mongo实例来说Q每个host允许链接的最大链接数,q些链接I闲时会攑օ池中,如果链接被耗尽QQ何请求链接的操作会被d{待链接可用,推荐配置10
minPoolsSizeQ当ConnectionI闲?Connection Pool中最Connection保有量;
threadsAllowedToBlockForConnectionMultiplierQ每个Connection的可以阻塞等待的U程队列敎ͼ它以上面connectionsPerHost值相乘的l果是d{待的线E队列最大倹{如果连接线E排满了队列׃抛出“Out of semaphores to get db”错误?/div>
socketKeepAlive:该标志用于控制socket保持zd的功能,通过防火墙保持连接活着
socketKeepAlive=false
autoConnectRetryQ这个控制是否在一个ConnectionӞpȝ会自动重?/div>
#true:假如Connection不能建立?驱动重试相同的server,有最大的重试ơ数,默认?5?q样可以避免一些server因ؓ一些阻塞操作零时down而驱动抛出异?q个对^滑过度到一个新的master,也是很有用的,注意:当集ؓ复制集时,驱动在q段旉?试链接到旧的master?而不会马上链接到新master?/div>
#false 当在q行socketd?不会L异常抛出,驱动已经有自动重建破坏链接和重试L? 推荐配置false
autoConnectRetry=false
#重新打开链接到相同server的最大毫U数,推荐配置?Q如?autoConnectRetry=true,表示旉?5s
#com.jd.mongodbclient2.mongo.JDClientMongo.maxAutoConnectRetryTime=false
#表示当没有手动关闭游标时,是否有一个自动释放游标对象的Ҏ,如果你L很小心的关闭游标,则可以将其设为false 推荐配置true

https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options
————————————————
版权声明Q本文ؓCSDN博主「pursuer211」的原创文章Q遵?CC 4.0 BY-SA 版权协议Q{载请附上原文出处链接及本声明?/div>
原文链接Qhttps://blog.csdn.net/pursuer211/article/details/82994027


paulwong 2020-03-07 20:58 发表评论
]]>使用 Spring Batch 构徏企业U批处理应用-2 - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/06/435226.htmlpaulwongpaulwongFri, 06 Mar 2020 05:47:00 GMT//www.355548.live/paulwong/archive/2020/03/06/435226.html//www.355548.live/paulwong/comments/435226.html//www.355548.live/paulwong/archive/2020/03/06/435226.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435226.html//www.355548.live/paulwong/services/trackbacks/435226.html阅读全文

paulwong 2020-03-06 13:47 发表评论
]]>
使用 Spring Batch 构徏企业U批处理应用-1 - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/03/06/435225.htmlpaulwongpaulwongFri, 06 Mar 2020 05:45:00 GMT//www.355548.live/paulwong/archive/2020/03/06/435225.html//www.355548.live/paulwong/comments/435225.html//www.355548.live/paulwong/archive/2020/03/06/435225.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435225.html//www.355548.live/paulwong/services/trackbacks/435225.html阅读全文

paulwong 2020-03-06 13:45 发表评论
]]>
MobaXterm注册?/title><link>//www.355548.live/paulwong/archive/2020/02/27/435175.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 27 Feb 2020 09:44:00 GMT</pubDate><guid>//www.355548.live/paulwong/archive/2020/02/27/435175.html</guid><wfw:comment>//www.355548.live/paulwong/comments/435175.html</wfw:comment><comments>//www.355548.live/paulwong/archive/2020/02/27/435175.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.355548.live/paulwong/comments/commentRss/435175.html</wfw:commentRss><trackback:ping>//www.355548.live/paulwong/services/trackbacks/435175.html</trackback:ping><description><![CDATA[<a target="null"></a>LINUX 的shell器<br /><a target="_blank">https://www.upload.ee/files/11132815/MobaXterm_Pro_Portable_SetuP_v20_fu11.rar.html</a><br /><img src ="//www.355548.live/paulwong/aggbug/435175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/paulwong/" target="_blank">paulwong</a> 2020-02-27 17:44 <a href="//www.355548.live/paulwong/archive/2020/02/27/435175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>各种获取JVM DUMP的方?/title><link>//www.355548.live/paulwong/archive/2020/02/24/435157.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 24 Feb 2020 14:03:00 GMT</pubDate><guid>//www.355548.live/paulwong/archive/2020/02/24/435157.html</guid><wfw:comment>//www.355548.live/paulwong/comments/435157.html</wfw:comment><comments>//www.355548.live/paulwong/archive/2020/02/24/435157.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.355548.live/paulwong/comments/commentRss/435157.html</wfw:commentRss><trackback:ping>//www.355548.live/paulwong/services/trackbacks/435157.html</trackback:ping><description><![CDATA[<p style="font-size: medium; font-family: "Times New Roman";">JVM 的线E堆?dump 也称 core dumpQ内容ؓ文本Q主要包含当?JVM 的线E堆栈,?dump 也称 heap dumpQ内容ؓ二进制格式,主要包含当时 JVM 堆内存中的内宏V由于各个操作系l、各?JVM 实现不同Q即使同一 JVM 实现Q各个版本也有差异,本文描述的方法都Z 64 ?Linux 操作pȝ环境QJava 8 Oracle HotSpot JVM 实现?/p><p style="font-size: medium; font-family: "Times New Roman";">堆栈和堆的内容在定位问题的时候,都是非常重要的信息。线E堆?dump 可以了解当时 JVM 中所有线E的q行情况Q比如线E的状态和当前正在q行的代码行。堆 dump 可以了解当时堆的使用情况Q各个类实例的数量及各个实例所占用的空间大?/p><h1 class="dntg">U程堆栈</h1><h2 class="dntg">使用 jstack</h2><p style="font-size: medium; font-family: "Times New Roman";">jstack ?JDK 自带的工P用于 dump 指定q程 ID(PID)?JVM 的线E堆栈信息?/p><div highlighter-rouge"="" style="font-size: medium; font-family: "Times New Roman";"><pre><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />--># 打印堆栈信息到标准输?nbsp;jstack PID  <br /># 打印堆栈信息到标准输出,会打印关于锁的信?nbsp;jstack -l PID  <br />强制打印堆栈信息到标准输出,如果使用 jstack PID 没有响应的情况下(此时 JVM q程可能挂v)Q?br />?nbsp;-F 参数 jstack -F PID </div></pre></div><h2 class="dntg">使用 jcmd</h2><p style="font-size: medium; font-family: "Times New Roman";">jcmd ?JDK 自带的工P用于?JVM q程发送命令,Ҏ命o的不同,可以代替或部分代?jstack、jmap {。可以发送命?nbsp;<code>Thread.print</code> 来打印出 JVM 的线E堆栈信息?/p><div highlighter-rouge"="" style="font-size: medium; font-family: "Times New Roman";"><pre><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />--># 下面的命令同{于 jstack PID <br />jcmd PID Thread.print  <br /><br /># 同等?nbsp;jstack -l PID <br />jcmd PID Thread.print -l </div></pre></div><h2 class="dntg">使用 kill -3</h2><p style="font-size: medium; font-family: "Times New Roman";">kill 可以向特定的q程发送信?SIGNAL)Q缺省情冉|发送终?TERM) 的信?Q即 kill PID ?kill -15 PID ?kill -TERM PID 是等L。JVM q程会监?QUIT 信号(其gؓ 3)Q当收到q个信号Ӟ会打印出当时的线E堆栈和堆内存用概要,相比 jstackQ此时多了堆内存的用概要情c但 jstack 可以指定 -l 参数Q打印锁的信息?/p><div highlighter-rouge"="" style="font-size: medium; font-family: "Times New Roman";"><pre><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />-->kill -3 PID <br /># ?nbsp;kill -QUIT PID </div></pre></div><h1 class="dntg">?/h1><h2 class="dntg">-XX:+HeapDumpOnOutOfMemoryError</h2><p style="font-size: medium; font-family: "Times New Roman";">d JVM 参数 -XX:+HeapDumpOnOutOfMemoryError 后,当发?OOM(OutOfMemory)Ӟ自动?dump。缺省情况下QJVM 会创Z个名UCؓ java_pidPID.hprof 的堆 dump 文g?JVM 的工作目录下。但可以使用参数 -XX:HeapDumpPath=PATH 来指?dump 文g的保存位|?/p><div highlighter-rouge"="" style="font-size: medium; font-family: "Times New Roman";"><pre><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />--># JVM 发生 OOM Ӟ会自动在 /var/log/abc 目录下生堆 dump 文g java_pidPID.hprof <br />java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/abc/ </div></pre></div><h2 class="dntg">jmap</h2><p style="font-size: medium; font-family: "Times New Roman";">jmap 也是 JDK 自带的工P主要用于获取堆相关的信息?/p><h3>?dump</h3><div highlighter-rouge"="" style="font-size: medium; font-family: "Times New Roman";"><pre><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />--># ?nbsp;JVM 的堆 dump 到指定文Ӟ如果堆中对象较多Q需要的旉会较长,子参?nbsp;format 只支?nbsp;bQ?br />即二q制格式<br />jmap -dump:format=b,file=FILE_WITH_PATH<br /><br /># 如果 JVM q程未响应命令,可以加上参数 -F 试<br />jmap -F -dump:format=b,file=FILE_WITH_PATH<br /><br /># 可以?nbsp;dump 堆中的存zd象,加上 live 子参敎ͼ但?nbsp;-F 时不支持 live<br />jmap -dump:live,format=b,file=FILE_WITH_PATH</div></pre></div><h3>获取堆概要信?/h3><div highlighter-rouge"="" style="font-size: medium; font-family: "Times New Roman";"><pre><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />--># -heap 参数用于查看指定 JVM q程的堆的信息,包括堆的各个参数的|堆中新生代、年老代的内存大、用率{?nbsp;<br />jmap -heap PID  <br /><br /># 同样Q如?nbsp;JVM q程未响应命令,可以加上参数 -F 试 <br />jmap -F -heap PID </div></pre></div><p style="font-size: medium; font-family: "Times New Roman";">一个实例输出如下:</p><div style="font-size: medium; font-family: "Times New Roman";"><pre><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />-->Attaching to process ID 68322, please wait<img src="//www.355548.live/Images/dot.gif" alt="" /><br />Debugger attached successfully.<br />Server compiler detected.<br />JVM version is 25.112-b16<br /><br />using thread-local object allocation.<br />Parallel GC with 4 thread(s)<br /><br />Heap Configuration:<br />   MinHeapFreeRatio         = 0<br />   MaxHeapFreeRatio         = 100<br />   MaxHeapSize              = 268435456 (256.0MB)<br />   NewSize                  = 8388608 (8.0MB)<br />   MaxNewSize               = 89128960 (85.0MB)<br />   OldSize                  = 16777216 (16.0MB)<br />   NewRatio                 = 2<br />   SurvivorRatio            = 8<br />   MetaspaceSize            = 21807104 (20.796875MB)<br />   CompressedClassSpaceSize = 1073741824 (1024.0MB)<br />   MaxMetaspaceSize         = 17592186044415 MB<br />   G1HeapRegionSize         = 0 (0.0MB)<br /><br />Heap Usage:<br />PS Young Generation<br />Eden Space:<br />   capacity = 41943040 (40.0MB)<br />   used     = 1701504 (1.6226806640625MB)<br />   free     = 40241536 (38.3773193359375MB)<br />   4.05670166015625% used<br />From Space:<br />   capacity = 4194304 (4.0MB)<br />   used     = 0 (0.0MB)<br />   free     = 4194304 (4.0MB)<br />   0.0% used<br />To Space:<br />   capacity = 5242880 (5.0MB)<br />   used     = 0 (0.0MB)<br />   free     = 5242880 (5.0MB)<br />   0.0% used<br />PS Old Generation<br />   capacity = 30408704 (29.0MB)<br />   used     = 12129856 (11.56793212890625MB)<br />   free     = 18278848 (17.43206787109375MB)<br />   39.889421134159484% used<br /><br />16658 interned Strings occupying 1428472 bytes.</div><span style="font-family: verdana, "courier new"; font-size: 14px;"><br />获取堆中的类实例l计</span></pre></div><div highlighter-rouge"="" style="font-size: medium; font-family: "Times New Roman";"><pre><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />--># 打印 JVM 堆中的类实例l计信息Q以占用内存的大排序,同样Q如?nbsp;JVM 未响应命令,也可以?nbsp;-F 参数 <br />jmap -histo PID  <br /><br /># 也可以只l计堆中的存zd象,加上 live 子参敎ͼ但?nbsp;-F 时不支持 live <br />jmap -histo:live PID </div></pre></div><h2 class="dntg">使用 jcmd</h2><div highlighter-rouge"="" style="font-size: medium; font-family: "Times New Roman";"><pre><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />--># {同 jmap -dump:live,format=b,file=FILE_WITH_PATH<br />jcmd PID GC.heap_dump FILE_WITH_PATH<br /><br /># {同 jmap -dump:format=b,file=FILE_WITH_PATH<br />jcmd PID GC.heap_dump -all FILE_WITH_PATH<br /><br /># {同 jmap -histo:live PID<br />jcmd PID GC.class_histogram<br /><br /># {同 jmap -histo PID<br />jcmd PID GC.class_histogram -all</div></pre></div><img src ="//www.355548.live/paulwong/aggbug/435157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/paulwong/" target="_blank">paulwong</a> 2020-02-24 22:03 <a href="//www.355548.live/paulwong/archive/2020/02/24/435157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mongodb shell中select in 的实?/title><link>//www.355548.live/paulwong/archive/2020/02/21/435146.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 21 Feb 2020 15:10:00 GMT</pubDate><guid>//www.355548.live/paulwong/archive/2020/02/21/435146.html</guid><wfw:comment>//www.355548.live/paulwong/comments/435146.html</wfw:comment><comments>//www.355548.live/paulwong/archive/2020/02/21/435146.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.355548.live/paulwong/comments/commentRss/435146.html</wfw:commentRss><trackback:ping>//www.355548.live/paulwong/services/trackbacks/435146.html</trackback:ping><description><![CDATA[<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />-->var bookIds = db.likes.find({userId:100}).map(function(like) { <br />  return like.bookId<span style="color: #008000; ">;</span><span style="color: #008000; "> </span><span style="color: #008000; "><br /></span>})<span style="color: #008000; ">;<br /></span>var books = db.books.find({_id:{$in:bookIds}})<span style="color: #008000; ">;</span></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />-->db.REPORT_ITEM.count({REQUEST_ID : db.BATCH_CONTROL.find({ FILE_NAME : "20200218_100000.file" }).map(function(like) { <br />  return like._id<span style="color: #008000; ">;</span><span style="color: #008000; "> </span><span style="color: #008000; "><br /></span>})<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">0</span><span style="color: #800000; font-weight: bold; ">]</span>.str, JOB_TYPE_ENUM:"CHECK"})</div><img src ="//www.355548.live/paulwong/aggbug/435146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/paulwong/" target="_blank">paulwong</a> 2020-02-21 23:10 <a href="//www.355548.live/paulwong/archive/2020/02/21/435146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>采用 jstatd 监控服务?/title><link>//www.355548.live/paulwong/archive/2020/02/21/435144.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 21 Feb 2020 09:08:00 GMT</pubDate><guid>//www.355548.live/paulwong/archive/2020/02/21/435144.html</guid><wfw:comment>//www.355548.live/paulwong/comments/435144.html</wfw:comment><comments>//www.355548.live/paulwong/archive/2020/02/21/435144.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.355548.live/paulwong/comments/commentRss/435144.html</wfw:commentRss><trackback:ping>//www.355548.live/paulwong/services/trackbacks/435144.html</trackback:ping><description><![CDATA[<br /><a target="_blank">https://www.jianshu.com/p/97f09e1648a6</a><br /><img src ="//www.355548.live/paulwong/aggbug/435144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/paulwong/" target="_blank">paulwong</a> 2020-02-21 17:08 <a href="//www.355548.live/paulwong/archive/2020/02/21/435144.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mongodb错误记录 - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/02/21/435142.htmlpaulwongpaulwongFri, 21 Feb 2020 00:50:00 GMT//www.355548.live/paulwong/archive/2020/02/21/435142.html//www.355548.live/paulwong/comments/435142.html//www.355548.live/paulwong/archive/2020/02/21/435142.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435142.html//www.355548.live/paulwong/services/trackbacks/435142.htmlhttps://blog.csdn.net/wangxiaotongfan/article/details/81560463




paulwong 2020-02-21 08:50 发表评论
]]>
windows下jenkins提示文g名太?/title><link>//www.355548.live/paulwong/archive/2020/02/14/435104.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 14 Feb 2020 06:37:00 GMT</pubDate><guid>//www.355548.live/paulwong/archive/2020/02/14/435104.html</guid><wfw:comment>//www.355548.live/paulwong/comments/435104.html</wfw:comment><comments>//www.355548.live/paulwong/archive/2020/02/14/435104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.355548.live/paulwong/comments/commentRss/435104.html</wfw:commentRss><trackback:ping>//www.355548.live/paulwong/services/trackbacks/435104.html</trackback:ping><description><![CDATA[<div class="dntg">׃jenkins是调用windows的git取代码,因此是git的问题,q行如下配置卛_Q?br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />//www.CodeHighlighter.com/<br /><br />-->git config --global core.longpaths true</div><br /></div><img src ="//www.355548.live/paulwong/aggbug/435104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.355548.live/paulwong/" target="_blank">paulwong</a> 2020-02-14 14:37 <a href="//www.355548.live/paulwong/archive/2020/02/14/435104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置SPRING BATCH中的JUNIT TEST - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/02/03/435063.htmlpaulwongpaulwongMon, 03 Feb 2020 08:47:00 GMT//www.355548.live/paulwong/archive/2020/02/03/435063.html//www.355548.live/paulwong/comments/435063.html//www.355548.live/paulwong/archive/2020/02/03/435063.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435063.html//www.355548.live/paulwong/services/trackbacks/435063.html
    @Configuration
    public class BatchTestConfiguration {
        
        
        @Bean
        public JobLauncherTestUtils stoppedReportJobLauncherTestUtils(
                JobLauncher stoppedReportJobLauncher
        ) {
            return new JobLauncherTestUtils() {
                
                @Autowired
                public void setJobLauncher(JobLauncher stoppedReportJobLauncher) {
                    super.setJobLauncher(stoppedReportJobLauncher);
                }

                @Autowired
                public void setJob(Job stoppedReportJob) {
                    super.setJob(stoppedReportJob);
                }
                
            };
        }
    }




paulwong 2020-02-03 16:47 发表评论
]]>
如何加CRON JOB到LINUX - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/01/21/435047.htmlpaulwongpaulwongTue, 21 Jan 2020 07:50:00 GMT//www.355548.live/paulwong/archive/2020/01/21/435047.html//www.355548.live/paulwong/comments/435047.html//www.355548.live/paulwong/archive/2020/01/21/435047.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435047.html//www.355548.live/paulwong/services/trackbacks/435047.htmlhttps://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html


paulwong 2020-01-21 15:50 发表评论
]]>
Linux and Unix du command tutorial with examples - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/01/15/435038.htmlpaulwongpaulwongWed, 15 Jan 2020 09:17:00 GMT//www.355548.live/paulwong/archive/2020/01/15/435038.html//www.355548.live/paulwong/comments/435038.html//www.355548.live/paulwong/archive/2020/01/15/435038.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435038.html//www.355548.live/paulwong/services/trackbacks/435038.htmlhttps://shapeshed.com/unix-du/

查询>100M的文Ӟ倒序排列Q文件大以K/M/G{显C:
-h: 以可L式显C,-t 排除于100m的文Ӟsort排序Qless: 分页
du -ah -t 100m / | sort -n -r | less


paulwong 2020-01-15 17:17 发表评论
]]>
SPRING INTEGRATION ERROR HANDLING - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2020/01/10/435027.htmlpaulwongpaulwongFri, 10 Jan 2020 07:32:00 GMT//www.355548.live/paulwong/archive/2020/01/10/435027.html//www.355548.live/paulwong/comments/435027.html//www.355548.live/paulwong/archive/2020/01/10/435027.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435027.html//www.355548.live/paulwong/services/trackbacks/435027.htmlhttps://github.com/zakyalvan/spring-integration-java-dsl-learn

package com.jwebs.learn.errorhandling;

import java.util.Random;

import javax.jms.ConnectionFactory;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.integration.annotation.IntegrationComponentScan;
import org.springframework.integration.channel.PublishSubscribeChannel;
import org.springframework.integration.core.MessageSource;
import org.springframework.integration.dsl.IntegrationFlow;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.integration.dsl.core.Pollers;
import org.springframework.integration.dsl.jms.Jms;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.MessagingException;

/**
 * Show how to handle error in spring integration flow.
 * Please note, errorChannel in spring integration only applicable to
 * error thrown in asynch component.
 * 
 * 
@author zakyalvan
 
*/
@SpringBootApplication
@IntegrationComponentScan
public class ErrorHandlingApplication {
    public static void main(String[] args) throws Exception {
        ConfigurableApplicationContext applicationContext = new SpringApplicationBuilder(ErrorHandlingApplication.class)
                .web(false)
                .run(args);
        
        Runtime.getRuntime().addShutdownHook(new Thread(() -> applicationContext.close()));
        
        System.out.println("Pres enter key to exit");
        System.in.read();
        System.exit(0);
    }

    @Autowired
    private ConnectionFactory connectionFactory;
    
    @Bean
    public MessageSource<Integer> randomIntegerMessageSource() {
        return () -> MessageBuilder.withPayload(new Random().nextInt()).build();
    }
    
    @Bean
    public IntegrationFlow withErrorFlow() {
        return IntegrationFlows.from(randomIntegerMessageSource(), spec -> spec.poller(Pollers.fixedDelay(1000)))
                    .handle(Jms.outboundGateway(connectionFactory)
                    .requestDestination("processor.input")
                    .replyContainer(spec -> spec.sessionTransacted(true)))
                    .get();
    }
    
    @Autowired
    @Qualifier("errorChannel")
    private PublishSubscribeChannel errorChannel;
    
    @Bean
    public IntegrationFlow errorHandlingFlow() {
        return IntegrationFlows.from(errorChannel)
                .handle(message -> System.out.println("@@@@@@@@@@@@@@@@@@@@@" + ((MessagingException) message.getPayload()).getFailedMessage().getPayload()))
                .get();
    }
}


paulwong 2020-01-10 15:32 发表评论
]]>
APM资源 - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2019/12/30/435006.htmlpaulwongpaulwongMon, 30 Dec 2019 08:50:00 GMT//www.355548.live/paulwong/archive/2019/12/30/435006.html//www.355548.live/paulwong/comments/435006.html//www.355548.live/paulwong/archive/2019/12/30/435006.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435006.html//www.355548.live/paulwong/services/trackbacks/435006.htmlhttps://my.oschina.net/10000000000/blog/3119697

监控理之Spring Boot Admin使用
https://my.oschina.net/xiedeshou/blog/2051625


https://my.oschina.net/janlle/blog/3040749

paulwong 2019-12-30 16:50 发表评论
]]>
微服?|关 - 棒球比分大小怎么算|վ//www.355548.live/paulwong/archive/2019/12/30/435005.htmlpaulwongpaulwongMon, 30 Dec 2019 08:44:00 GMT//www.355548.live/paulwong/archive/2019/12/30/435005.html//www.355548.live/paulwong/comments/435005.html//www.355548.live/paulwong/archive/2019/12/30/435005.html#Feedback0//www.355548.live/paulwong/comments/commentRss/435005.html//www.355548.live/paulwong/services/trackbacks/435005.htmlhttps://felord.cn/kong-api-gateway.html

云原生网?Kong 和Kong 理UI Konga的完全安装攻?br />https://felord.cn/kong-and-konga-install.html






paulwong 2019-12-30 16:44 发表评论
]]>
2020 qY件开发趋劉K有哪些Q?/title><link>//www.355548.live/paulwong/archive/2019/12/30/435004.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 30 Dec 2019 01:09:00 GMT</pubDate><guid>//www.355548.live/paulwong/archive/2019/12/30/435004.html</guid><wfw:comment>//www.355548.live/paulwong/comments/435004.html</wfw:comment><comments>//www.355548.live/paulwong/archive/2019/12/30/435004.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.355548.live/paulwong/comments/commentRss/435004.html</wfw:commentRss><trackback:ping>//www.355548.live/paulwong/services/trackbacks/435004.html</trackback:ping><description><![CDATA[<h3>基础设施Q条条道路通云?/h3><p data-spm-anchor-id="a2c6h.13066369.0.i12.58da6e62uYEUBC" style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">对于云厂商来_2019 q是果累篏的一q。不仅初创公司在使用云计,那些很注重安全的“保守z?#8221;公司Q如政府机构、医疗保健机构、银行、保险公司,甚至是美国五角大|也在q移C端。这U趋势在 2020 q将会l,大大小的公叔R(或者至有计划Q迁Ud云端。Gartner 公司最q发布了一个数字:</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/0bfef0510c1348c6818e7c0fd62e1c0d.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">如果你是一个还在考虑要不要迁Ud云端的决{者,不妨重新审视一下你的策略。如果你是一个独立开发者,q且q没使用q云基础设施Q那么完全可以在 2020 q尝试一下。很多大型的云厂商(如亚马逊、微软、谷歌)都提供了免费的体验机会。谷歌在q方面做得特别大方,它提供了价?300 元的一q免Ҏ务?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/913339f136434be5af191c738af7c0e2.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">{划注:阉K、腾讯、华为等国内云厂商同h免费云服务试用品?/p><h3>云^収ͼ亚马逊领_其他跟上</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">作ؓW一大云厂商Q亚马逊在 2019 q可谓风生水赗凭借其丰富的品组合,亚马逊将把它的优势gl到 2020 q。Canalys 发布?2019 q第三季度报告指出,大型云厂商(AWS、Azure、GCPQ占?56% 的市Z额,其中 AWS 独n 32.6%?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/d34f6d455f5f45a9b3ba05e90355765f.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">其他云厂商也在努力羃短与 AWS 之间的差距。微软把主要目标转向了大型企业。最q,微Y打|了亚马逊,从美国五角大楼拿C一?100 亿美元的大单子。这个单子将提升 Azure 的声誉,同时削弱 AWS 的士气?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/a444952dda9040ef9a308aa08e6e3d8e.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">h一直在推动 CNCFQ实C计算q维的标准化。谷歌的长期目标是让云迁Ud得更ҎQ方便企业从 AWS q移?GCP。IBM 之前斥资 360 亿美元收购了 RedHatQ也惌在云计算市场占有一席之地?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/ce9de1c45cf4433cbd2738a0a3cce835.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">在亚太地区,阉K云市模超q了 AWS、Azure 的dQ全球排名第三。中国国内腾讯云{企业的增长势头也十分迅猛?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">2020 q将出现更多的ƈ购。当Ӟ很多初创公司会带来新的x和创斎ͼ例如多云服务。因为竞争激烈,q些公司只能从降价和推出更多的创C品来获取利润?/p><h3>容器化:Kubernetes 会更酷</h3><p data-spm-anchor-id="a2c6h.13066369.0.i4.58da6e62uYEUBC" style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">在容器编排领域,虽然一度出C“三鼎立”QKubernetes、Docker Swarm ?MesosQ,?Kubernetes 最l脱颖而出Q成为绝对的赢家。云是一个分布式pȝQ?Kubernetes 是它?OSQ分布式?LinuxQ?019 q北?KubeCon+CloudNativeCon 大会的参会者达C 12000 名,?2018 q增长了 50%。以下是q去 4 q参会h数的增长情况?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/46dc555bee9d4314b11e2690aaa38101.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">?2020 q_Kubernetes 不仅不会后退Q只会变得越来越强,你完全可以把赌注压在 Kubernetes w上。另外值得一提的是,Migrantis 最q收购了 Docker EnterpriseQ不q收购数额不详?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/18a7dc3b400f4d85b988313526c8534c.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">几年前,Z张口闭口说的都是 DockerQ而现在换成了 Kubernetes。Docker 在它的全盛时期未能盈利,反而在优势渐退几年之后才尝试变现。这再次说明Q在C技术世界,时机是一切?/p><h3>软g架构Q微服务成Z?/h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">h势表明Q微服务架构范式?2019 q持l增长了一整年?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/07577b66d9b540998ede0f6ebc846ac6.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">随着软g行业整体逐步q移C端,微服务也成为占dC的架构范式。微服务架构崛v的一个主要原因是它与云原生完契合,可以实现快速的软g开发。我在之前的一博文中解释了微服务架构的基本原则及其优势和劣势?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">https://towardsdatascience.com/microservice-architecture-a-brief-overview-and-why-you-should-use-it-in-your-next-project-a17b6e19adfd</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">我假讄在也存在一U回归到单体架构的趋势,因ؓ在很多情况下Q微服务架构有点q头了,而且做好微服务架构设计其实很难。微服务架构有哪些好的实践?在之前的另一博文中Q我也给Z一些大概,希望对读者有用?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">https://towardsdatascience.com/effective-microservices-10-best-practices-c6e4ba0c6ee2</p><h3>~程语言Q整体)QPython 吞噬世?/h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">机器学习、数据分析、数据处理、Web 开发、企业Y件开发,甚至是拼接黑z照片,Python 的媄子无处不在?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">在著名的~程语言排行榜网?TIOBE 上,Python 位居最行~程语言W三位,仅次?Java ?C 语言?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/22dbb6f358cc4c46855442435ee4f0dc.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">更有意思的是,?2019 q_Python 的流行度M一番(?5% ?10%Q?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">Python 的崛起将?2020 qgl,q羃短与 Java ?C 语言之间的差距。另一门无所不在的编E语a JavaScript 正面临下行的风险。ؓ什?Python 的势头会如此强劲Q因为它的入手门槛低Q有一个优U的社区在支持Qƈ受到数据U学家和新生代开发者的喜爱?/p><h3>~程语言Q企业方面)QJava 占d</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">之前?TIOBE |站截图昄QJava 仍然是一门占dC的编E语aQƈ在 2020 ql保持这U地位。JVM ?Java 的基矻I其他~程语言Q如 Kotlin、Scala、Clojure、GroovyQ也?JVM 作ؓq行时。最q,Oracle 修改?JVM 的许可协议?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/4d28c879c0c0427bb7a134d13bb9e206.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">新的许可协议意味着使用 Java、Kotlin、Scala 或其?JVM ~程语言的公叔R要向 Oracle 支付大额费用。所q的是,OpenJDK ?JVM l箋免费。另外,q有其他一些公ؓ JVM 提供企业支持?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/eb1bc539b6e24a7fbd6f541c0493df0a.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">因ؓ体积和速度斚w的问题,Z JVM 的编E语aq不适合用在今天的无服务器环境中。Oracle 正在推动 GraalVM 计划Q旨在让 Java 变得更加敏捷和快速,让它更适合用在无服务器环境中。因为除?JavaQ没有其他编E语a可以提供企业U的E_性和可靠性,所?Java 在 2020 ql占dC?/p><h3>企业?JavaQSpring l箋发力</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">曑և何时Q在企业开发领域,Spring ?JavaEE 之间存在着白热化的竞争。但因ؓ Oracle ?JavaEE 斚w没有作ؓQ在竞争中惨败,q导致了“MicroProfile”计划的Ş成,q最l促成了 JakartaEE?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">虽然所有的政策和活动都是围l?JavaEE 展开Q但 Spring 事实上已l赢得了q场企业 JVM 之争?020 q_Spring 成?JVM 生态系l的头牌?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">有两个正在进展中的项目,它们旨在减小 Java 的体U,让它更适合用在无服务器环境中?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">其中一个是 MicronautQhttps://micronaut.io/Q?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/3181542535da411e94dac5f548148541.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">另一个是 QuarkusQhttps://quarkus.io/Q?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/0666532c3a5a43ee9e92698f2c0296b3.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">q两个项目都使用?GraalVMQ它们在 2020 q将会得?Java C֌更多的关注?/p><h3>~程语言Q后起之U的突?/h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">2000 q代Q编E语a的发展出C停滞。大多数为没有必要再d发新的编E语aQJava、C 语言、C++、JavaScript ?Python 已经可以满所有的需求。但是,h?Go 语言为新~程语言大门打开了一扇大门。在q去十年出现了很多有的~程语言Q比?Rust、Swift、Kotlin、TypeScript。导致这U情늚一个主要原因是已有的编E语a无法充分利用g优势Q例如多核、更快的|络、云Q。另一个原因是C~程语言更加x开发者经,卛_现更快速更Ҏ的开发。在 Stackoverflow 提供的一份开发者报告中Q排名靠前的C~程语言如下所C(Rust q箋 4 q名列第一Q?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/85bd1d2f808a45ab92a71f12764f9126.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">在之前的一博文中Q我深入探讨了现代编E语aQ对?Rust ?Go 语言Qƈ说明了ؓ什么现在是采用q些语言的好时机?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">https://towardsdatascience.com/back-to-the-metal-top-3-programming-language-to-develop-big-data-frameworks-in-2019-69a44a36a842</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">最q,微Y宣布他们在探索?Rust 来开发更安全的Y件?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/b4bfc8e1fb7b437490569b80dac3a214.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">亚马逊最q也宣布要赞?Rust?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/85329fe3c4b54a28811d1cd4ec9aa0ab.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">h宣布?Kotlin 作ؓ Android 官方开发语aQ所以,?JVM 领域QKotlin 成了 Java 的主要竞争对手?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/256f853fa72e4f42ac432d61df0d2be0.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">Angular 使用 TypeScript 代替 JavaScriptQ将其作Z要的~程语言Q其?JavaScript 框架Q如 React ?VueQ也开始ؓ TypeScript 提供更多的支持?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">q种势在 2020 qgl下去,很多巨头公司会深入了解C代编E语aQ如 Rust、Swift、TypeScript、KotlinQ,它们会站出来公开表示支持?/p><h3>WebQJavaScript l箋占主导地?/h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">曑և何时QJavaScript q不被认为是一门强大的~程语言。在当时Q前端内容主要通过后端框架在服务器端进行渲染?014 q_AngularJS 的出现改变了q种局面。从那个时候开始,更多?JavaScript 框架开始涌玎ͼAngular 2+、React、Vue、MeteorQ,JavaScript 已然成ؓL?Web 开发语a。随着 JavaScript 框架不断创新以及微服务架构的崛vQJavaScript 框架?2020 q将l箋d前端开发?/p><h3>JavaScript 框架QReact 闪耀</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">虽然 React 是在 AngularJS 之后出现的,但在q去十年?Web 开发生了巨大的媄响,q也?Facebook 在与 Google+ 的竞争中打了一战。React 为前端开发带来了一些新的想法,比如事g溯源、虚?DOM、单向数据绑定、基于组件的开发,{等。它对开发者社Z生了重大影响Q以至于h攑ּ?AngularJSQƈ借鉴 React 的想法推Zd重写?Angular 2+。React 是目前ؓ止最为流行的 JavaScript 框架Q下图显CZ相关?NPM 下蝲l计信息?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/9d351058b1de4807a2a8ae3c87078888.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">Z获得更好的ƈ发和用户体验QFacebook 宣布完全重写 React 的核心算法,推出?React-Fiber 目?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/6fd523518e6444a2a3231a49bd2fbff6.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">2020 q_React 仍然是你开发新目的首?Web 框架。其他框Ӟ?Angular/Angular 2+ ?VueQ呢QAngular 仍然是一个不错的 Web 开发框Ӟ特别适合企业开发。我敢肯定谷歌在未来几年会在 Angular 上加大投入。Vue 是另一个非常流行的 Web 框架Q由中国的巨头公叔R里巴巴提供支持。如果你已经在?Angular ?VueQ就没必要再q移?React 了?/p><h3>App 开发:原生应用</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">在移?App 开发方面,有关混合应用开发的炒作有所消停。؜合开发提供了更快的开发速度Q因为只需要一个开发团队,而不是多个。但原生应用提供了更好的用户体验和性能。另外,混合应用需要经q调整才能用一些高U特性。对于企业来_原生应用仍然是首选的解决ҎQ这U趋势将?2020 qgl。Airbnb 在一博文中非常详细地说明了Z么他们要攑ּ混合应用开发^?React Native?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">管 Facebook 试改进 React NativeQ谷歌也非常努力地推动؜?App 开发^?FlutterQ但它们仍然只适合用于原型、POC、MVP 或轻量应用的开发。所以,原生应用?2020 q仍l占dC?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">在原生应用开发方面,h和苹果分别将 Kotlin ?Swift 作ؓ各自q_主要的编E语a。谷歌最q再ơ重申了?Kotlin 的支持,q对?Kotlin 用户来说无疑是个好消息?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/f35d8fda69394f4abbd04064ca8257a0.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><h3>混合应用开发:React Native</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">在很多情况下Q؜合应用是个不错的选择。在q方面也有很多选择QXamarin、Inoic、React Native ?Flutter。Facebook Z成熟?React 框架推出?React Native。就?React ?Web 框架领域占据dC一PReact Native 在؜合应用领域也占据着dCQ如下图所C?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/a81452d3794b4a55bcac6fe87bccdc8d.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">React Native ?React 有共同的基因Q都提供了高度的代码重用性以?#8220;一ơ开发,到处q行”的能力。React Native 的另一个优势是 Facebook 本n也用它来开发移动应用。谷歌在q个领域h较晚Q但在去q_h的؜合应用开发框?Flutter 获得了不关注。Flutter 提供了更好的性能Q但需要用另一门不是那么流行的~程语言 Dart。React Native ?2020 q将l箋占主导地位?/p><h3>APIQREST 占dC</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">REST ?API 领域事实上的标准Q被q泛用在Z API 的服务间通信上。当Ӟ除了 RESTQ我们还有其他选择Q比如来自谷歌的 gRPC 和来?Facebook ?GraphQL?/p><p data-spm-anchor-id="a2c6h.13066369.0.i7.58da6e62uYEUBC" style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">它们提供了不同的能力。谷歌开发的 gRPC 作ؓq程q程调用Q如 SOAPQ的化nQ?Protobuf 代替 JSON 作ؓ消息格式。Facebook 开发的 GraphQL 作ؓ一个集成层Q避免频J的 REST 调用。gRPC ?GraphQL 都在各自的领域取得了成功?020 q_REST 仍然是占dC?API 技术,?GraphQL ?gRPC 作充技术?/p><h3>人工QTensorflow 2.0 占dC</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">h?Facebook 也是深度学习 / 经|络领域的主要玩家。谷歌基于深度学习框?Theano 推出?TensorFlowQ它很快成为深度学?/ 经|络的主要开发库。谷歌还推出了特别设计的 GPUQTPUQ来加?TensorFlow 的计?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">Facebook 在深度学习领域也不甘落后Q他们拥有世界上最大的囑փ和视频数据集合。Facebook Z另一个深度学习库 Torch 推出了深度学习库 PyTorch。TensorFlow ?PyTorch 之间有一些区别,前者用的是静态图q行计算Q?PyTorch 使用的是动态图。用动态图的好处是可以在运行时U正自己。另外,PyTorch ?Python 支持更好Q?Python 是数据科学领域的一门主要编E语a?/p><p data-spm-anchor-id="a2c6h.13066369.0.i9.58da6e62uYEUBC" style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">随着 PyTorch 变得来流行,h也赶紧在 2019 q?10 月推Z TensorFlow 2.0Q也使用了动态图Q对 Python 的支持也更好?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/67f2d4c6eb9543c7b3f561c9ec8ebf0a.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">2020 q_TensorFlow 2.0 ?PyTorch 齐头ƈq。考虑?TensorFlow 拥有更大的社区,我估?TensorFlow 2.0 成为占dC的深度学习库?/p><h3>数据库:SQL是王?分布式SQL是王?/h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">在炒?NoSQL 的日子里Qh们嘲W?SQLQ还指出?SQL 的种U不뀂有很多文章?NoSQL 有多么的好,q将要取?SQL。但{到炒作的潮水褪去,Z很快意识到Q我们的世界不能没有 SQL。以下是最行的数据库的排名?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/6594d66494d1439b9b6e219d4efff102.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">可以看到QSQL 数据库占据了前四名。SQL 之所以占dCQ是因ؓ它提供了 ACID 事务保证Q?ACID 是业务系l最潜在的需求。NoSQL 数据库提供了横向伸羃能力Q但代h是不提供 ACID 保证?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">互联|公怸直在L“大师U数据库”Q也是既能提供 ACID 保证又能?NoSQL 那样可横向׾~的数据库。目前有两个解决Ҏ可以部分满?#8220;大师U数据库”的要求,一个是亚马逊的 AuroraQ一个是h?Spanner。Aurora 提供了几乎所有的 SQL 功能Q但不支持横向写伸羃Q?Spanner 提供了横向写伸羃能力Q但?SQL 支持得不好?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">2020 q_但愿q两个数据库能够走近Q或者有Z带来一?#8220;分布?SQL”数据库。如果真有h做到了,那一定要l他颁发囄奖?/p><h3>数据湖:MinIO 要崛v</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">C数据q_非常的复杂。企业一般都会有支持 ACID 事务?OLTP 数据库(SQLQ,也会有用于数据分析的 OLAP 数据库(NoSQLQ。除此之外,它们q有其他各种数据存储pȝQ比如用于搜索的 Solr、ElasticSearchQ用于计的 Spark。企业基于数据库构徏自己的数据^収ͼ?OLTP 数据库的数据拯到数据湖中。各U类型的数据应用E序Q比?OLAP、搜索)数据湖作ؓ它们的事实来源?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">HDFS 原本是事实上的数据湖Q直C马逊推Z对象存储 S3。S3 可׾~,h便宜Q很快就成ؓ很多公司事实上的数据湖。?S3 唯一的问题是数据q_被紧紧地l定在亚马逊的 AWS 云^C。虽然微?Azure 推出?Blob StorageQ谷歌也有类似的对象存储Q但都不?S3 的对手?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">对于很多公司来说QMinIO 或许是它们的救星。MinIO 是一个开源的对象存储Q与 S3 兼容Q提供了企业U的支持Qƈ专门Z原生环境而构建,提供了与云无关的数据湖?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/258809d816b141dfb3448edd4ab5d9b8.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">微Y?Azure Marketplace 是这么描q?MinIO 的:“?Azure Blog Storage 服务提供与亚马?S3 API 兼容的数据访?#8221;。如果谷?GCP 和其他云厂商也提?MinIOQ那么我们将会向多云q出一大步?/p><h3>大数据批处理QSpark l闪耀</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">现如今,企业通常需要基于大规模数据执行计算Q所以需要分布式的批处理作业。Hadoop ?Map-Reduce 是第一个分布式批处理^収ͼ后来 Spark 取代?Hadoop 的地位,成ؓ真正的批处理之王。Spark 是怎样提供了比 Hadoop 更好的性能的?我之前写了另一文章,对现代数据^台进行了深入分析?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">https://towardsdatascience.com/programming-language-that-rules-the-data-intensive-big-data-fast-data-frameworks-6cd7d5f754b0</p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">Spark 解决?Hadoop Map-Reduce 的痛点,它将所有东西放在内存中Q而不是在完成每一个昂늚操作之后把数据保存在存储pȝ中。尽?Spark 重度使用 CPU ?JVM 来执行批处理作业Q但qƈ不妨它成ؓ 2020 q批处理框架之王。我希望有h能够使用 Rust 开发出一个更加高效的批处理框Ӟ取代 SparkQƈZ业省下大量的云资源费用?/p><h3>大数据流式处理:Flink 是未?/h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">几年前,实现实时的流式处理几乎是不可能的事情。一些微Ҏ处理框架Q比?Spark StreamingQ可以提?#8220;几近”实时的流式处理能力。不q,Flink 改变了这一状况Q它提供了实时的式处理能力?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">2019 q之前,Flink 未能得到_的关注,因ؓ它无法撼?Spark。直?2019 q?1 月䆾Q中国巨头公叔R里巴巴收购了 Data ArtisanQFlink 背后的公司)?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/ac0bbdee81f849ab9c5f27752b0d72b1.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">?2020 q_企业如果惌q行实时式处理QFlink 应该是不二之选。不q,?Spark 一PFlink 同样重度依赖 CPU ?JVMQƈ且需要用大量的云资源?/p><h3>字节码:WebAssembly被q泛采用</h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">我从 JavaScript 作?Brandon Eich 的一ơ访谈中知道?WebAssembly q个东西。现?JavaScriptQES5 之后的版本)是一门优U的编E语aQ但与其他编E语a一P都有自己的局限性。最大的局限性是 JavaScript 引擎在执?JavaScript 旉要读取、解析和处理“抽象语法?#8221;。另一个问题是 JavaScript 的单U程模型无法充分利用CgQ如多核 CPU ?GPUQ。正因ؓq些原因Q很多计密集型的应用程序(如游戏?D 囑փQ无法运行在览器中?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">一些公司(?Mozilla 带领Q开发了 WebAssemblyQ一U底层字节码格式Q让M一门编E语a都可以在览器中q行。目前发布的 WebAssembly 版本可以支持 C++、Rust {?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/905b5e69be0e464ba62a95d2fe056554.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">WebAssembly 让计密集型应用E序Q比如游戏和 AutoCADQ可以在览器中q行。不q,WebAssembly 的目标不仅限于此Q它q要让应用程序可以在览器之外运行。WebAssembly 可以被用在以下这?#8220;览器外”的场景中?/p><ul style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; list-style-position: initial; list-style-image: initial; margin: 0px 0px 16px; padding: 0px 0px 0px 2em; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin: 0px; padding: 0px; list-style: inherit; line-height: 26px;">Ud讑֤上的混合原生应用?/li><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin: 0.25em 0px 0px; padding: 0px; list-style: inherit; line-height: 26px;">没有冷启动问题的无服务器计算?/li><li style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin: 0.25em 0px 0px; padding: 0px; list-style: inherit; line-height: 26px;">在服务器端执行不受信ȝ代码?br style="-webkit-tap-highlight-color: transparent; box-sizing: border-box;" />我预,2020 q将?WebAssembly 取得H破的一q_很多巨头公司Q包括云厂商Q和C֌会拥抱 WebAssembly?/li></ul><h3>代码Q低代码 / 无代码将更进一?/h3><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">快速的数字化和工业 4.0 革命意味着软g开发者的供需~口巨大。由于缺乏开发h员,很多企业无法实现它们的想法。ؓ了降低进入Y件开发的门槛Q可以尝试无代码QNo CodeQ或低代码(Low CodeQY件开发,也就是所谓的 LCNCQLow-Code No-Code)。它已经?2019 q取得了一些成功?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://ucc.alicdn.com/pic/developer-ecology/5031e92ebc28440fb85e647450418ae8.png" alt="image.png" style="-webkit-tap-highlight-color: transparent; box-sizing: content-box; border: 0px none; background-color: rgba(255, 255, 255, 0.1); max-width: 100%; height: auto;" /></p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">LCNC 的目标是让没有编E经验的Z能开发YӞ只要他们惌实现自己的想法?/p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin: 0px 0px 16px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff;">虽然我对在正式环境中使用 LCNC 框架仍然心存疑虑Q但它ؓ其他公司奠定了良好的基础Q像亚马逊和hq样的公司可以基于这个基构徏出有用的产品Q就?AWS Lambda 的蓬勃发展是以谷?App Engine 为基?/p><p data-spm-anchor-id="a2c6h.13066369.0.i10.58da6e62uYEUBC" style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 26px; margin-top: 0px; margin-right: 0px; margin-left: 0px; padding: 0px; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; background-color: #ffffff; margin-bottom: 0px !important;">2020 q_LCNC 会获得更多x?/p><img src ="//www.355548.live/paulwong/aggbug/435004.html" width = "1" height = "1" /><br><br><div align=right><a href="//www.355548.live/" title="棒球比分大小怎么算">棒球比分大小怎么算</a> 2019-12-30 09:09 <a href="//www.355548.live/paulwong/archive/2019/12/30/435004.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <script>(function(){ var src = (document.location.protocol == "") ? "//js.passport.qihucdn.com/11.0.1.js?9ed1f3a8f9c3ff069b7b95c01474c743":"https://jspassport.ssl.qhimg.com/11.0.1.js?9ed1f3a8f9c3ff069b7b95c01474c743"; document.write('<script src="' + src + '" id="sozz"><\/script>'); })(); </script> {ganrao}