精华内容
下载资源
问答
  • ​在springboot相比于springmvc提供了一个极为重要的功能,就是自定义start(自定义jar包),同时spring也提供了一大波start。如spring-boot-starter-data-redis,spring-boot-starter-amqp。本文将教你如何自定义...

    在这里插入图片描述
    ​在springboot相比于springmvc提供了一个极为重要的功能,就是自定义start(自定义jar包),同时spring也提供了一大波start。如spring-boot-starter-data-redis,spring-boot-starter-amqp。本文将教你如何自定义start。例子为从start中获取数据源。

    1.自定义start能干什么

    在架构考虑时,或许有一些通用方法抽取成start,在项目中使用时,直接引入即可。

    2.创建自定义start

    1.创建一个新的maven项目

    创建一个普通的maven项目,作为start的开发环境

    2.新建application.properties

    在maven中创建application.properties文件。同时添加以下代码,作为常量配置。

    login.className = com.mysql.jdbc.Driver
    login.url=jdbc:mysql://localhost:3306/humanresource?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    login.user=root
    login.password=root
    

    3.创建LoginCheckProperties

    创建类LoginCheckProperties,其中需要@ConfigurationProperties注解,prefix = “login” 的意思是调用项目中 ,application.properties中配置的参数。

    @ConfigurationProperties(prefix = "login")
    public class LoginCheckProperties {
    
        private String className;
        private String url;
        private String user;
        private String password;
    
        public String getClassName() {
            return className;
        }
    
        public void setClassName(String className) {
            this.className = className;
        }
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
        public String getUser() {
            return user;
        }
    
        public void setUser(String user) {
            this.user = user;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    }
    

    4.Config类

    其中@EnableConfigurationProperties(LoginCheckProperties.class) 注解为固定写法,意义是实现自动配置上文中的Properties类。

    @Configuration
    @EnableConfigurationProperties(LoginCheckProperties.class)
    @MapperScan(basePackages = MasterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory")
    public class MasterDataSourceConfig {
    
        // 精确到 master 目录,以便跟其他数据源隔离
        static final String PACKAGE = "com.airboot.bootdemo.dao.master";
        static final String MAPPER_LOCATION = "classpath*:mapper/master/*.xml";
    
        private String className;
        private String url;
        private String user;
        private String password;
    
        public MasterDataSourceConfig(LoginCheckProperties loginCheckProperties) {
            this.className = loginCheckProperties.getClassName();
            this.url = loginCheckProperties.getUrl();
            this.user = loginCheckProperties.getUser();
            this.password = loginCheckProperties.getPassword();
        }
    
        @Bean(name = "masterDataSource")
        public DataSource masterDataSource() {
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setDriverClassName(className);
            dataSource.setUrl(url);
            dataSource.setUsername(user);
            dataSource.setPassword(password);
            return dataSource;
        }
    
        @Bean(name = "masterTransactionManager")
        public DataSourceTransactionManager masterTransactionManager() {
            return new DataSourceTransactionManager(masterDataSource());
        }
    
        @Bean(name = "masterSqlSessionFactory")
        public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource masterDataSource)
                throws Exception {
            final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
            sessionFactory.setDataSource(masterDataSource);
            sessionFactory.setMapperLocations(
                    new PathMatchingResourcePatternResolver().getResources(MasterDataSourceConfig.MAPPER_LOCATION));
            return sessionFactory.getObject();
        }  
    }
    

    5.添加META-INF/spring.factories

    最后在resources中新建文件夹META-INF,在其中建立文件spring.factories路径为上文Config中的路径。(需要向被引用者暴露)

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    com.*.*.*.*A,\
    com.*.*.*.*B,\
    com.*.*.*.*C,\
    com.*.*.*.*D,\
    com.*.*.*.*Util
    

    6.显示start注释(选读)

    如果想要在jar中加入注释 则需要在pom文件中修改以下代码 这样会生成一个 .jar 和一个:source.jar 需要将这两个jar包都加入项目中。

    <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.4</version>
                    <configuration>
                        <aggregate>true</aggregate>
                    </configuration>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                            <configuration>
                                <additionalparam>-Xdoclint:none</additionalparam>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
    

    7.打包

    使用命令mvn install。即可生成jar包。

    8.引入jar包

           <dependency>
                <groupId>cn.baocl</groupId>
                <artifactId>check-spring-boot-starter</artifactId>
                <version>1.1-SNAPSHOT</version>
            </dependency>
    

    在引用项目中的pom文件配置groupId,artifactId,version即可。下文为start中的pom。与上文配置需要对应。

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>cn.baocl</groupId>
        <artifactId>check-spring-boot-starter</artifactId>
        <version>1.1-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.2.1.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.2</version>
            </dependency>
            <!-- Druid 数据连接池依赖 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.17</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <version>2.2.1.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
                <version>8.0.16</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
                <version>2.2.1.RELEASE</version>
            </dependency>
        </dependencies>
    
    </project>
            
    

    9.使用

    然后就可以使用了,本文实现的为主项目定义一个从数据源。所以在主项目中就可以使用上文定义的数据源啦。

    10.项目结构

    在这里插入图片描述

    展开全文
  • 二者都启动 package.json 文件 scripts 区域的 start 指令: start 命令不是用户定义的脚本名称,因此您可能不需要指定 run 命令来执行它。 下列四个命令完全等价: npm start npm run start yarn start yarn run ...

    这个 StackOverflow 帖子讲得很清楚:

    二者都启动 package.json 文件 scripts 区域的 start 指令:

    start 命令不是用户定义的脚本名称,因此您可能不需要指定 run 命令来执行它。

    下列四个命令完全等价:

    • npm start
    • npm run start
    • yarn start
    • yarn run start

    然而,如果用户定义了一个名为 app 的脚本:

    • npm app (Does not work!) - 用户定义的脚本必须跟 run
    • npm run app (Works!)
    • yarn app (Works!)
    • yarn run app (Works!)

    这就是二者细微的差别。

    展开全文
  • 本文整理匯總了Python中os.startfile方法的典型用法代碼示例。如果您正苦於以下問題:Python os.startfile方法的具體用法?Python os.startfile怎麽用?Python os.startfile使用的例子?那麽恭喜您, 這裏精選的方法...

    本文整理匯總了Python中os.startfile方法的典型用法代碼示例。如果您正苦於以下問題:Python os.startfile方法的具體用法?Python os.startfile怎麽用?Python os.startfile使用的例子?那麽恭喜您, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在模塊os的用法示例。

    在下文中一共展示了os.startfile方法的29個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於我們的係統推薦出更棒的Python代碼示例。

    示例1: shutdown

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def shutdown():

    if lp_events.timer != None:

    lp_events.timer.cancel()

    scripts.to_run = []

    for x in range(9):

    for y in range(9):

    if scripts.threads[x][y] != None:

    scripts.threads[x][y].kill.set()

    if window.lp_connected:

    scripts.unbind_all()

    lp_events.timer.cancel()

    launchpad_connector.disconnect(lp)

    window.lp_connected = False

    logger.stop()

    if window.restart:

    if IS_EXE:

    os.startfile(sys.argv[0])

    else:

    os.execv(sys.executable, ["\"" + sys.executable + "\""] + sys.argv)

    sys.exit("[LPHK] Shutting down...")

    開發者ID:nimaid,項目名稱:LPHK,代碼行數:22,

    示例2: open_image

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def open_image(directory, image):

    answer = input("Would you like to open the image of the computed passport file? [y] / n : ").lower()

    if answer in ("y", "yes") or answer == "":

    try:

    # TODO: Test abspath() on Windows

    image_path = os.path.join(os.pardir, os.pardir, "docs", "images", directory, image)

    print(image_path)

    if sys.platform.startswith('darwin'):

    subprocess.call(('open', image_path))

    elif os.name == 'nt':

    os.startfile(image_path)

    elif os.name == 'posix':

    subprocess.call(('xdg-open', image_path))

    except Exception:

    print("%s- An unexpected error occurred. The file could not be opened%s" % RED)

    for msg in sys.exc_info():

    print("\033[31m!", str(msg))

    elif answer in ("n", "no"):

    exit()

    else:

    print("%sInvalid response%s" % RED)

    open_image(directory, image)

    開發者ID:Arg0s1080,項目名稱:mrz,代碼行數:27,

    示例3: explore

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def explore(path):

    if path:

    if os.path.exists(path):

    path = os.path.dirname(path)

    platform = os_qeury()

    if platform == "darwin":

    subprocess.Popen(['open',path])

    return True

    elif platform == "win32":

    os.startfile(path)

    return True

    log.info("File dose not exist")

    return False

    log.info("No file name spacified")

    return False

    開發者ID:liorbenhorin,項目名稱:pipeline,代碼行數:20,

    示例4: run

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def run(filename):

    if filename:

    if os.path.exists(filename):

    if sys.platform == "win32":

    os.startfile(filename)

    return True

    else:

    opener ="open" if sys.platform == "darwin" else "xdg-open"

    subprocess.call([opener, filename])

    return True

    log.info("File dose not exist")

    return False

    log.info("No file name spacified")

    return False

    開發者ID:liorbenhorin,項目名稱:pipeline,代碼行數:18,

    示例5: _create_image_from_map

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def _create_image_from_map(map_file, out_img, format):

    out_img += ".%s" % format

    #print out_img

    params = ["shp2img", "-m", map_file, "-i", format, "-o", out_img]

    os.environ['PATH'] = DLL_LOCATION + ';' + os.environ['PATH']

    p = Popen(params, stdout=PIPE, bufsize=1)

    with p.stdout:

    for line in iter(p.stdout.readline, b''):

    print(line)

    p.wait() # wait for the subprocess to exit

    #os.startfile(out_img)

    return out_img

    開發者ID:geographika,項目名稱:mappyfile,代碼行數:19,

    示例6: create_image_from_map

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def create_image_from_map(map_file, dll_location):

    of = tempfile.NamedTemporaryFile(delete=False, suffix=".png", prefix="tmp_")

    of.close()

    logging.debug("Creating file %s", of.name)

    # [SHP2IMG] -m [MAPFILE] -i png -o [RESULT]

    params = ["shp2img","-m", map_file,"-i","png","-o", of.name]

    os.environ['PATH'] = dll_location + ';' + os.environ['PATH']

    os.environ['PROJ_LIB'] = os.path.join(dll_location, "proj\SHARE")

    logging.debug(" ".join(params))

    p = Popen(params, stdout=PIPE, bufsize=1)

    with p.stdout:

    print(map_file)

    for line in iter(p.stdout.readline, b''):

    print(line)

    p.wait() # wait for the subprocess to exit

    os.startfile(of.name)

    開發者ID:geographika,項目名稱:mappyfile,代碼行數:25,

    示例7: _showQRCodeImg

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def _showQRCodeImg(self, str):

    if self.commandLineQRCode:

    qrCode = QRCode('https://login.weixin.qq.com/l/' + self.uuid)

    self._showCommandLineQRCode(qrCode.text(1))

    else:

    url = 'https://login.weixin.qq.com/qrcode/' + self.uuid

    params = {

    't': 'webwx',

    '_': int(time.time())

    }

    data = self._post(url, params, False)

    if data == '':

    return

    QRCODE_PATH = self._saveFile('qrcode.jpg', data, '_showQRCodeImg')

    if str == 'win':

    os.startfile(QRCODE_PATH)

    elif str == 'macos':

    subprocess.call(["open", QRCODE_PATH])

    else:

    return

    開發者ID:Urinx,項目名稱:WeixinBot,代碼行數:23,

    示例8: genqrcode

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def genqrcode(self):

    """

    @brief outprint the qrcode to stdout on macos/linux

    or open image on windows

    """

    if sys.platform.startswith('win'):

    url = self.wx_conf['API_qrcode_img'] + self.uuid

    params = {

    't': 'webwx',

    '_': int(time.time())

    }

    data = post(url, params, False)

    if data == '':

    return

    qrcode_path = save_file('qrcode.jpg', data, './')

    os.startfile(qrcode_path)

    else:

    str2qr_terminal(self.wx_conf['API_qrcode'] + self.uuid)

    開發者ID:Urinx,項目名稱:WeixinBot,代碼行數:20,

    示例9: open_config

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def open_config(self, event):

    """Opens Superpaper config folder, CONFIG_PATH."""

    if platform.system() == "Windows":

    try:

    os.startfile(sp_paths.CONFIG_PATH)

    except BaseException:

    show_message_dialog("There was an error trying to open the config folder.")

    elif platform.system() == "Darwin":

    try:

    subprocess.check_call(["open", sp_paths.CONFIG_PATH])

    except subprocess.CalledProcessError:

    show_message_dialog("There was an error trying to open the config folder.")

    else:

    try:

    subprocess.check_call(['xdg-open', sp_paths.CONFIG_PATH])

    except subprocess.CalledProcessError:

    show_message_dialog("There was an error trying to open the config folder.")

    開發者ID:hhannine,項目名稱:superpaper,代碼行數:19,

    示例10: psdump

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def psdump(self, filename=None, **kargs):

    """

    psdump(filename=None, layer_shift=0, rebuild=1)

    Creates an EPS file describing a packet. If filename is not provided a

    temporary file is created and gs is called.

    :param filename: the file's filename

    """

    from scapy.config import conf

    from scapy.utils import get_temp_file, ContextManagerSubprocess

    canvas = self.canvas_dump(**kargs)

    if filename is None:

    fname = get_temp_file(autoext=kargs.get("suffix", ".eps"))

    canvas.writeEPSfile(fname)

    if WINDOWS and conf.prog.psreader is None:

    os.startfile(fname)

    else:

    with ContextManagerSubprocess(conf.prog.psreader):

    subprocess.Popen([conf.prog.psreader, fname])

    else:

    canvas.writeEPSfile(filename)

    print()

    開發者ID:secdev,項目名稱:scapy,代碼行數:25,

    示例11: pdfdump

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def pdfdump(self, filename=None, **kargs):

    """

    pdfdump(filename=None, layer_shift=0, rebuild=1)

    Creates a PDF file describing a packet. If filename is not provided a

    temporary file is created and xpdf is called.

    :param filename: the file's filename

    """

    from scapy.config import conf

    from scapy.utils import get_temp_file, ContextManagerSubprocess

    canvas = self.canvas_dump(**kargs)

    if filename is None:

    fname = get_temp_file(autoext=kargs.get("suffix", ".pdf"))

    canvas.writePDFfile(fname)

    if WINDOWS and conf.prog.pdfreader is None:

    os.startfile(fname)

    else:

    with ContextManagerSubprocess(conf.prog.pdfreader):

    subprocess.Popen([conf.prog.pdfreader, fname])

    else:

    canvas.writePDFfile(filename)

    print()

    開發者ID:secdev,項目名稱:scapy,代碼行數:25,

    示例12: svgdump

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def svgdump(self, filename=None, **kargs):

    """

    svgdump(filename=None, layer_shift=0, rebuild=1)

    Creates an SVG file describing a packet. If filename is not provided a

    temporary file is created and gs is called.

    :param filename: the file's filename

    """

    from scapy.config import conf

    from scapy.utils import get_temp_file, ContextManagerSubprocess

    canvas = self.canvas_dump(**kargs)

    if filename is None:

    fname = get_temp_file(autoext=kargs.get("suffix", ".svg"))

    canvas.writeSVGfile(fname)

    if WINDOWS and conf.prog.svgreader is None:

    os.startfile(fname)

    else:

    with ContextManagerSubprocess(conf.prog.svgreader):

    subprocess.Popen([conf.prog.svgreader, fname])

    else:

    canvas.writeSVGfile(filename)

    print()

    開發者ID:secdev,項目名稱:scapy,代碼行數:25,

    示例13: test_deprecated

    ​點讚 6

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def test_deprecated(self):

    import nt

    filename = os.fsencode(support.TESTFN)

    with warnings.catch_warnings():

    warnings.simplefilter("error", DeprecationWarning)

    for func, *args in (

    (nt._getfullpathname, filename),

    (nt._isdir, filename),

    (os.access, filename, os.R_OK),

    (os.chdir, filename),

    (os.chmod, filename, 0o777),

    (os.getcwdb,),

    (os.link, filename, filename),

    (os.listdir, filename),

    (os.lstat, filename),

    (os.mkdir, filename),

    (os.open, filename, os.O_RDONLY),

    (os.rename, filename, filename),

    (os.rmdir, filename),

    (os.startfile, filename),

    (os.stat, filename),

    (os.unlink, filename),

    (os.utime, filename),

    ):

    self.assertRaises(DeprecationWarning, func, *args)

    開發者ID:Microvellum,項目名稱:Fluid-Designer,代碼行數:27,

    示例14: launchFile

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def launchFile(filepath):

    if sys.platform.startswith('darwin'):

    subprocess.call(('open', filepath))

    elif os.name == 'nt':

    os.startfile(filepath)

    elif os.name == 'posix':

    subprocess.call(('xdg-open', filepath))

    ############################ String utilities ############################

    開發者ID:svviz,項目名稱:svviz,代碼行數:12,

    示例15: open_file_folder

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def open_file_folder(path):

    try:

    if platform.system() == "Windows":

    os.startfile(path)

    elif platform.system() == "Darwin":

    subprocess.Popen(["open", path])

    else:

    subprocess.Popen(["xdg-open", path])

    except:

    print("[files] Could not open file or folder " + path)

    開發者ID:nimaid,項目名稱:LPHK,代碼行數:12,

    示例16: open_file

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def open_file(filename):

    if sys.platform == 'win32':

    os.startfile(filename)

    else:

    if 'XDG_CURRENT_DESKTOP' in os.environ:

    opener = ['xdg-open']

    elif 'EDITOR' in os.environ:

    opener = [os.environ['EDITOR']]

    else:

    opener = ['vi']

    opener.append(filename)

    subprocess.call(opener)

    開發者ID:Cobliteam,項目名稱:cassandra-migrate,代碼行數:15,

    示例17: launch_python_script

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def launch_python_script( filepath ):

    """ Launch an editor for the named python script. """

    import subprocess, os

    if sys.platform.startswith('darwin'):

    subprocess.call(('open', filepath))

    elif os.name == 'nt':

    os.startfile(filepath)

    elif os.name == 'posix':

    subprocess.call(('xdg-open', filepath))

    開發者ID:thundergolfer,項目名稱:interview-with-python,代碼行數:12,

    示例18: pageconvert

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def pageconvert(path, out=None, colors=lite, markup='xhtml', linenumbers=0,

    dosheet=1, tagstart=''.lower(), tagend=''.lower(),

    stylesheet='pystyle', show=1, returnstr=0):

    """This function can colorize Python source

    that is written in a webpage enclosed in tags.

    """

    if out == None:

    out = os.path.dirname(path)

    infile = open(path, 'r').read()

    css,page = tagreplace(sourcestr=infile,colors=colors,

    markup=markup, linenumbers=linenumbers, dosheet=dosheet,

    tagstart=tagstart, tagend=tagend, stylesheet=stylesheet)

    if not returnstr:

    newpath = os.path.abspath(os.path.join(

    out,'tmp', os.path.basename(path)))

    if not os.path.exists(newpath):

    try:

    os.makedirs(os.path.dirname(newpath))

    except:

    pass#traceback.print_exc()

    #Usage()

    y = open(newpath, 'w')

    y.write(page)

    y.close()

    if css:

    csspath = os.path.abspath(os.path.join(

    out,'tmp','%s.css'%stylesheet))

    x = open(csspath,'w')

    x.write(css)

    x.close()

    if show:

    try:

    os.startfile(newpath)

    except:

    traceback.print_exc()

    return newpath

    else:

    return css, page

    ##################################################################### helpers

    開發者ID:linuxscout,項目名稱:mishkal,代碼行數:43,

    示例19: open

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def open(self, url, new=0, autoraise=True):

    try:

    os.startfile(url)

    except WindowsError:

    # [Error 22] No application is associated with the specified

    # file for this operation: ''

    return False

    else:

    return True

    開發者ID:glmcdona,項目名稱:meddle,代碼行數:11,

    示例20: open_magnet

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def open_magnet(magnet):

    if sys.platform.startswith('linux'):

    subprocess.Popen(['xdg-open', magnet],

    stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    elif sys.platform.startswith('win32'):

    os.startfile(magnet)

    elif sys.platform.startswith('cygwin'):

    os.startfile(magnet)

    elif sys.platform.startswith('darwin'):

    subprocess.Popen(['open', magnet],

    stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    else:

    subprocess.Popen(['xdg-open', magnet],

    stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    開發者ID:vn-ki,項目名稱:anime-downloader,代碼行數:16,

    示例21: test_nonexisting

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def test_nonexisting(self):

    self.assertRaises(OSError, startfile, "nonexisting.vbs")

    開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:4,

    示例22: test_nonexisting_u

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def test_nonexisting_u(self):

    self.assertRaises(OSError, startfile, u"nonexisting.vbs")

    開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:4,

    示例23: check_empty

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def check_empty(self, empty):

    # We need to make sure the child process starts in a directory

    # we're not about to delete. If we're running under -j, that

    # means the test harness provided directory isn't a safe option.

    # See http://bugs.python.org/issue15526 for more details

    with test_support.change_cwd(path.dirname(sys.executable)):

    startfile(empty)

    startfile(empty, "open")

    開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:10,

    示例24: test_ipy2_gh25

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def test_ipy2_gh25(self):

    """https://github.com/IronLanguages/ironpython2/issues/25"""

    # this is not available on Linux systems

    if is_posix:

    self.assertRaises(AttributeError, lambda: os.startfile('/bin/bash'))

    else:

    self.assertTrue(hasattr(os, 'startfile'))

    開發者ID:IronLanguages,項目名稱:ironpython2,代碼行數:10,

    示例25: CheckIEND

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def CheckIEND(self,data):

    # IEND:length=0(4 bytes)+chunk_type='IEND'(4 bytes)+crc=AE426082(4 bytes)

    standard_IEND='\x00\x00\x00\x00IEND\xae\x42\x60\x82'

    pos=data.find('IEND')

    if pos == -1:

    print Termcolor('Detected','Lost IEND chunk! Try auto fixing...')

    IEND=standard_IEND

    print '[Finished] Now IEND chunk:%s'%(str2hex(IEND))

    else:

    IEND=data[pos-4:pos+8]

    if IEND != standard_IEND:

    print Termcolor('Detected','Error IEND chunk! Try auto fixing...')

    IEND=standard_IEND

    print '[Finished] Now IEND chunk:%s'%(str2hex(IEND))

    else:

    print '[Finished] Correct IEND chunk'

    if data[pos+8:] != '':

    print Termcolor('Detected','Some data (length: %d) append in the end (%s)'%(len(data[pos+8:]),data[pos+8:pos+18]))

    while True:

    msg = Termcolor('Notice','Try extracting them in: <1>File <2>Terminal <3>Quit [default:3] ')

    choice=raw_input(msg)

    if choice == '1':

    filename = raw_input('[File] Input the file name: ')

    file=WriteFile(filename)

    file.write(data[pos+8:])

    print '[Finished] Successfully write in %s'%(filename)

    os.startfile(os.getcwd())

    elif choice == '2':

    print 'data:',data[pos+8:]

    print 'hex(data):',data[pos+8:].encode('hex')

    elif choice == '3' or choice == '':

    break

    else:

    print Termcolor('Error','Illegal choice. Try again.')

    self.file.write(IEND)

    print '[Finished] IEND chunk check complete'

    return 0

    開發者ID:sherlly,項目名稱:PCRT,代碼行數:40,

    示例26: open_magnet

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def open_magnet(self):

    """Open magnet according to os."""

    if sys.platform.startswith('linux'):

    subprocess.Popen(['xdg-open', self.magnet],

    stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    elif sys.platform.startswith('win32'):

    os.startfile(self.magnet)

    elif sys.platform.startswith('cygwin'):

    os.startfile(self.magnet)

    elif sys.platform.startswith('darwin'):

    subprocess.Popen(['open', self.magnet],

    stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    else:

    subprocess.Popen(['xdg-open', self.magnet],

    stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    開發者ID:ocslegna,項目名稱:auto_py_torrent,代碼行數:17,

    示例27: startWin

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def startWin(self):

    try:

    needed_value='ace_engine.exe'

    path_value=os.path.join(pastaperfil,'acestream',needed_value)

    self.log.out("Try to start %s"%needed_value)

    self.progress.update(0,'Starting ASEngine','')

    os.startfile(path_value)

    self.log.out('AceStream Engine starting')

    except:

    self.sm('Not Installed')

    self.log.out('Not Installed')

    self.progress.update(0,'AceStream not installed','')

    return False

    return True

    開發者ID:tvaddonsco,項目名稱:program.plexus,代碼行數:16,

    示例28: open

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def open(document):

    platform = sys.platform

    if platform == "win32":

    os.startfile(document)# Exists only on Windows!

    else:

    if platform == "darwin":

    opener = "open"

    elif platform == "cygwin":

    opener = "cygstart"

    else:

    opener = "xdg-open" if True else "arora"# 'arora' web browser hav issues when dealing with XSL.

    try:

    subprocess.call(opener + " " + document + " &", shell=True)

    except:

    pass

    開發者ID:epeios-q37,項目名稱:atlas-python,代碼行數:17,

    示例29: open_with_ofx_handler

    ​點讚 5

    # 需要導入模塊: import os [as 別名]

    # 或者: from os import startfile [as 別名]

    def open_with_ofx_handler(filename):

    import platform

    sysname = platform.system()

    if sysname == 'Darwin':

    os.system("/usr/bin/open '%s'" % filename)

    elif sysname == 'Windows':

    os.startfile(filename)

    else:

    # linux

    os.system("xdg-open '%s'" % filename)

    開發者ID:jantman,項目名稱:biweeklybudget,代碼行數:12,

    注:本文中的os.startfile方法示例整理自Github/MSDocs等源碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。

    展开全文
  • 调用start() 会触发多线程执行 ; 调用run() 还是当做执行了一个普通方法,没有多线程执行。 start()示例: public class MyThread extends Thread { @SneakyThrows @Override public void run(){ ...

    首先是结论,应该大家知道:

    调用start() 会触发多线程执行 ;

    调用run() 还是当做执行了一个普通方法,没有多线程执行。

    start()示例:

    public class MyThread extends Thread {
        @SneakyThrows
        @Override
        public void run(){
            sleep(5000);
            System.out.println("run 内容打印 ");
        }
    
        public static void main(String[] args) {
            System.out.println("start 调用");
            MyThread testThread1=new MyThread();
            new Thread(testThread1,"线程1").start();
            System.out.println("主线程 最后的输出");
            
        }
    }

    结果:


    run()示例:

    public class MyThread extends Thread {
        @SneakyThrows
        @Override
        public void run(){
            sleep(5000);
            System.out.println("run 内容打印 ");
        }
    
        public static void main(String[] args) {
            System.out.println("run 调用");
            MyThread testThread2=new MyThread();
            new Thread(testThread2,"线程2").run();
            System.out.println("主线程 最后的输出");
    
        }
    }

    结果:

    也就是咱们在使用多线程的时候要注意,调用run()是不正确的,不是我们想要的多线程效果。

    那么我们应该调用 start() 。

    我想问, 为什么?

    为什么调用  start() 就是多线程  ?

    ok,进入这篇文章的主题,一起挖源码 。

    先看看java里面 start()的源码注释 :

    使该线程开始执行;Java虚拟机 调用此线程的  run 方法。

    结果是两个线程同时运行:

    当前线程 start 和另一个线程(执行其运行方法)。

    不用多说,大概也是告诉我们这个方法调用之后,是会触发多线程执行。


     再看看start方法,里面调用了 start0() ,然后没了。

    那么可以知道 关键在于  start0() 。

    可以看到这个start0 方法被 native 修饰着 。

    native 关键字告诉编译器(其实是JVM)调用的是该方法在外部定义,这里指的是C。

    也就是说光看java的源码是没办法找到 start0 ()的。

    没事,既然进到我的文章,绝不会就此结束 。

    openJDK源码 在线查阅地址 :
    jdk8/jdk8/jdk: 687fd7c7986d /src/

    锁定Thread.c

     来看看我们想找的相关源码,发现目标 start0:

    在这里大致能知道,调用的是JVM的StartThread函数 。

    也就是说我们需要去挖JVM的代码 ,Java 8, 使用的是 Oracle 的64位HotSpot虚拟机。

    所以我直接下载HotSpot 源码。

    锁定HotSpot 源码 :

    找源码的过程我就省略了, 给出一些核心点,

    可以看到里面 调用了 JavaThread :

    再看看 JavaThread  :

    看到这里,基本就差不多了锁定了 真的新创建了一个线程   create_thread 

     

    大致就挖到这吧。可能这篇文章对大家帮助不大,但是对于跟我一样看源码有强迫症的人,多多少少心里会舒坦一些哈哈。

    展开全文
  • 安装MySQL时无法启动服务(could not start the service MYSQL.Error:0)安装mysql会出现start service错误安装mysql时 配置到start server时出现:Could Not Connect To The ServiceControl Manager 错误1)在安装mysql...
  • Unable to start embedded Tomcat 解决方式分析Unable to start embedded Tomcat问题产生过程 分析Unable to start embedded Tomcat 近期研习微服务相关知识的过程中出现了Unable to start embedded Tomcat的问题,...
  • linux 环境无法通过egg-scripts start启动项目,wait start 300超时退出进程:1.命令:[root@VM_0_3_centos sun]# npm run startegg-activity@1.0.0 start /www/sunegg-scripts start --port=7001 --daemon --env=...
  • pm2 start命令进阶详解

    千次阅读 2021-01-16 10:08:12
    运行php推荐pm2 start .sh --interpreter bashpm2 start "php index.php" "/index/receiver/receive" --name aaa.sh内容 (tp5里的命令行)php index.php /index/receiver/receive前言说起这个pm2,在node的世界里面,...
  • mysql 实现 start with

    千次阅读 2021-01-18 19:47:50
    传入map(idsql,rssql,prior) idsql 查询id rssql 查询结果集 调用 以下方法@param ids 要查询的起始 start with* @param allres 包含要递归数据的结果集 ( 查询时别名ID PID )* @param pos prior---> UP or DOWN...
  • 包括参与者与用例的关系,用例与用例的关系 ### 流程图 @startuml start :"步骤1处理"; :"步骤2处理"; if ("条件1判断") then (true) :条件1成立时执行的动作; if ("分支条件2判断") then (no) :"条件2不成立时执行...
  • start_item是使用在sequence的body中的,替代`uvm_do; start是test中启动sequence的方法;
  • 什么是START BYTE? START BYTE会将开始条件的过程延长,就是在I2C生成START 条件之后,继续发送1个byte字节信号(0000_0001),master持续的将SDA线拉低7个周期。 为什么需要START BYTE? 如果微控制器具有片上硬件I2...
  • 报错信息:[root@youxx- bin]# service mysql statusRedirecting to /bin/systemctl status mysql.service¡ñ mysqld57.service - LSB: start and stop MySQLLoaded: loaded (/etc/rc.d/init.d/mysqld57;...
  • 文章目录windows环境下查询命令帮助linux环境下查询命令帮助start命令个数和开启微信个数相同先杀死残留微信程序 windows环境下查询命令帮助 在windows平台上查看某一个命令使用时,如下格式: 命令 /? 举例: cd /...
  • 在js项目运行时,通常输入npm start,即可运行,其运行过程如下: npm start首先会安装一系列的必要程序,这些程序依赖package.json中的内容,package.json里默认定义了项目名称、项目版本号、项目介绍、项目作者、...
  • minikube start命令的国内使用方法

    千次阅读 2021-02-25 09:07:14
    问题 我们可以使用官方提供的 minikube 安装单机版的k8s...[minikube@localhost docker]$ minikube start * minikube v1.17.1 on Centos 7.9.2009 * Automatically selected the docker driver * Starting control pl
  • pm2 管理 npm start

    2021-03-30 09:11:02
    pm2 start npm --name “{app name}” – start 如果需要监听代码变化,可以加上 --watch,远程执行一般不需要 pm2 start npm --watch --name “{app name}” – start 我的启动命令 以下假设 使用的项目名字 uec-...
  • 展开全部开机出现start pxe over ipv4 和start pxe over ipv6 要等很久,这表示网卡启动在BIOS中被启用或e68a84e8a2ad62616964757a686964616f31333365643661网卡启动设置在硬盘启动之前,如果之后能够进入系统,则只...
  • 克隆https://github.com/spring-io/start.spring.io项目: 克隆完成: 在项目根目录执行: mvnw clean install ... 可能会遇见访问不了的情况,毕竟这是start.spring.io仓库,没有发布正式版版本。 ...
  • start() 方法来启动进程,真正实现了多进程运行,这时无需等待 run 方法体代码执行完毕而直接继续执行下面的代码:调用 Process 类的 start() 方法来启动一个进程,这时此进程处于就绪(可运行)状态,并没有运行,...
  • 批处理命令之Start的用法Start语法参数其他具体例子: Start 启动单独的“命令提示符”窗口来运行指定程序或命令。如果在没有参数的情况下使用,start 将打开第二个命令提示符窗口。 语法 start ["title"] [/dPath]...
  • Java的Start和Runnable方法的区别

    千次阅读 2021-02-12 20:43:34
    两种方法的区别1) start:用法:start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可...
  • Could not start AVD 解决办法

    千次阅读 2021-07-01 17:53:38
    sudo chmod 777 /dev/kvm
  • Java多线程创建与运行理了一下线程的创建和运行,可以看到线程最终都是通过new一个Thread实例,然后调用start()方法来运行的。 但是我们可以看到,一个线程的所要执行的任务方法体都是重写到run()方法里面的。 但是...
  • PC开机出现Start pxe over ipv4解决办法 PC重启后显示start pxe over IPv4我们在使用PC的时候,总是会遇到很多的PC难题。当我们在遇到了PC开机出现Start pxe over ipv4的时候,那么我们需要如何办呢?今天就一起来...
  • org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat 问题...
  • 问题1:net start npf 服务名无效 Wireshark找不到网卡 输入net start npf 服务名无效 解决办法1:下载winpcap 地址:https://www.winpcap.org/install/bin/WinPcap_4_1_3.exe 安装完winpcap,在cmd(要以管理员...
  • (下面参考了原博主的内容,也加入自己的内容,为了自己脑补,也方便其他看到的人脑补)使用StartUML绘制用例图:StartUML是支持UML的建模平台软件,是一款开发源码的UML工具,是棒子国主导开发出来的,StartUML可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,072,956
精华内容 2,029,182
关键字:

start()