Nan-jing Huang

148 papers Journal 146Unranked 2
YearRankTypeTitle / Venue / Authors
2026 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Xin He, Nan-jing Huang, Ya-Ping Fang
2026 J jnl
J. Optim. Theory Appl.
Chuang-Liang Zhang, Yun-Cheng Liu, Nan-jing Huang
2026 J jnl
Math. Comput. Simul.
Jian-hao Kang, Zhun Gou, Nan-jing Huang
2026 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Juan Liu, Xian-Jun Long, Xue-song Li, Nan-jing Huang
2026 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Jia Yue, Ming-Hui Wang, Nan-jing Huang
2025 J jnl
Appl. Math. Comput.
Tao Chen, Yao-jia Zhang, Nan-jing Huang, Yi-bin Xiao
2025 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Jian-hao Kang, Zhun Gou, Nan-jing Huang
2025 J jnl
SIAM J. Control. Optim.
De-xuan Xu, Zhun Gou, Nan-jing Huang, Shuang Gao
2025 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Xin He, Nan-jing Huang, Ya-Ping Fang
2025 J jnl
J. Optim. Theory Appl.
Jian-hao Kang, Nan-jing Huang, Ben-Zhang Yang, Zhihao Hu
2025 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Yue Zeng, Yao-jia Zhang, Nan-jing Huang
2024 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Xu Chu, Tao Chen, Nan-jing Huang, Xue-song Li
2024 J jnl
Neurocomputing
Wan-ying Li, Xu-hui Wang, Nan-jing Huang
2024 J jnl
J. Optim. Theory Appl.
Ming-Hui Wang, Jia Yue, Nan-jing Huang
2024 J jnl
Syst. Control. Lett.
Zhun Gou, Nan-jing Huang, Xian-Jun Long, Jian-hao Kang
2023 J jnl
Int. J. Control
Zhun Gou, Nan-jing Huang, Ming-Hui Wang
2023 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Xu Chu, Tao Chen, Nan-jing Huang, Yi-bin Xiao
2023 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Yao-jia Zhang, Tao Chen, Nan-jing Huang, Xue-song Li
2023 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Jian-hao Kang, Zhun Gou, Nan-jing Huang
2023 J jnl
Fuzzy Sets Syst.
Chuangliang Zhang, Nan-jing Huang, Donal O'Regan
2022 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Rong Hu, Nan-jing Huang, Mircea Sofonea, Yi-bin Xiao
2022 J jnl
Fuzzy Sets Syst.
Chuangliang Zhang, Nan-jing Huang
2022 J jnl
Fuzzy Sets Syst.
Zengbao Wu, Xing Wang, Nan-jing Huang, Yi-bin Xiao, Guang-Hui Zhang
2021 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Tao Chen, Nan-jing Huang, Xue-song Li, Yun-Zhi Zou
2021 J jnl
Fuzzy Sets Syst.
Zengbao Wu, Xing Wang, Nan-jing Huang, Tian-Yin Wang, Hua-min Wang
2021 J jnl
J. Comput. Appl. Math.
Jian-hao Kang, Ming-Hui Wang, Nan-jing Huang
2021 J jnl
Int. J. Control
Yirong Jiang, Nan-jing Huang, Qiongfen Zhang, Chang-Chun Shang
2021 J jnl
Comput. Math. Appl.
Yun-hua Weng, Tao Chen, Xue-song Li, Nan-jing Huang
2021 J jnl
J. Optim. Theory Appl.
Chuangliang Zhang, Nan-jing Huang
2020 J jnl
Math. Methods Oper. Res.
Yu Han, Kai Zhang, Nan-jing Huang
2019 J jnl
J. Optim. Theory Appl.
Li-Wen Zhou, Nan-jing Huang
2019 J jnl
J. Comput. Sci.
Han Yang, Tao Chen, Nan-jing Huang
2019 J jnl
Oper. Res. Lett.
Yu Han, San-hua Wang, Nan-jing Huang
2019 J jnl
Neural Process. Lett.
Jindong Li, Zengbao Wu, Nan-jing Huang
2019 J jnl
J. Optim. Theory Appl.
Xiao-Bo Li, Nan-jing Huang, Qamrul Hasan Ansari, Jen-Chih Yao
2019 J jnl
Appl. Math. Comput.
Ben-Zhang Yang, Jia Yue, Ming-Hui Wang, Nan-jing Huang
2018 J jnl
Neurocomputing
Zengbao Wu, Jindong Li, Nan-jing Huang
2018 J jnl
J. Optim. Theory Appl.
Jindong Li, Nan-jing Huang
2018 J jnl
J. Optim. Theory Appl.
Yu Han, Nan-jing Huang
2018 J jnl
Optim. Lett.
Ke-wei Ding, Ming-Hui Wang, Nan-jing Huang
2018 J jnl
J. Optim. Theory Appl.
Yu Han, Nan-jing Huang
2018 J jnl
Comput. Math. Appl.
Jia Yue, Nan-jing Huang
2018 J jnl
Fuzzy Sets Syst.
Zengbao Wu, Chao Min, Nan-jing Huang
2017 J jnl
Optim. Lett.
Xing Wang, Ya-wei Qi, Chang-qi Tao, Nan-jing Huang
2017 J jnl
Oper. Res. Lett.
Yu Han, Nan-jing Huang
2017 J jnl
J. Optim. Theory Appl.
Li-Wen Zhou, Yi-bin Xiao, Nan-jing Huang
2016 J jnl
Appl. Math. Comput.
Zengbao Wu, Yun-Zhi Zou, Nan-jing Huang
2016 J jnl
J. Frankl. Inst.
Xue-song Li, Nan-jing Huang, Donal O'Regan
2016 J jnl
J. Comput. Appl. Math.
Zengbao Wu, Yun-Zhi Zou, Nan-jing Huang
2016 conf
FSDM
Ben-Zhang Yang, Yi-bin Xiao, Nan-jing Huang, Qi-lin Cao
2016 J jnl
J. Optim. Theory Appl.
Xiao-Bo Li, Li-Wen Zhou, Nan-jing Huang
2016 J jnl
Optim. Lett.
Sheng-lan Chen, Nan-jing Huang
2015 J jnl
J. Optim. Theory Appl.
Yi-bin Xiao, Nan-jing Huang, Jue Lu
2015 J jnl
Optim. Lett.
Xiao-Bo Li, Nan-jing Huang
2015 J jnl
J. Appl. Math.
Wei-bing Zhang, Nan-jing Huang, Donal O'Regan
2015 J jnl
Optim. Lett.
Xiao-Bo Li, Nan-jing Huang
2015 J jnl
J. Glob. Optim.
Yi-bin Xiao, Xinmin Yang, Nan-jing Huang
2014 J jnl
J. Optim. Theory Appl.
Xing Wang, Nan-jing Huang
2014 J jnl
Optim. Lett.
Xi Li, Xue-song Li, Nan-jing Huang
2014 J jnl
Appl. Math. Comput.
Guang He, Nan-jing Huang
2014 J jnl
J. Appl. Math.
Sheng-lan Chen, Nan-jing Huang, Donal O'Regan
2014 J jnl
Optim. Lett.
Xian-Jun Long, Nan-jing Huang
2014 J jnl
Oper. Res. Lett.
Guo-ji Tang, Nan-jing Huang
2014 J jnl
Optim. Lett.
Xing Wang, Wei Li, Xue-song Li, Nan-jing Huang
2014 J jnl
J. Appl. Math.
Xian-Jun Long, Jian-Wen Peng, Nan-jing Huang, Jen-Chih Yao
2013 J jnl
J. Appl. Math.
Hui-qiang Ma, Nan-jing Huang, Meng Wu, Donal O'Regan
2013 J jnl
Appl. Math. Comput.
Cong Zhang, Nan-jing Huang, Donal O'Regan
2013 J jnl
Oper. Res. Lett.
Guo-ji Tang, Nan-jing Huang
2013 J jnl
J. Glob. Optim.
Bin Chen, Nan-jing Huang
2013 J jnl
J. Optim. Theory Appl.
Xing Wang, Nan-jing Huang
2013 J jnl
J. Optim. Theory Appl.
Li-Wen Zhou, Nan-jing Huang
2013 J jnl
J. Glob. Optim.
Guo-ji Tang, Nan-jing Huang
2013 J jnl
Appl. Math. Comput.
Hui-qiang Ma, Meng Wu, Nan-jing Huang, Jiu-ping Xu
2013 J jnl
Fuzzy Optim. Decis. Mak.
Meng Wu, De-wang Kong, Jiu-ping Xu, Nan-jing Huang
2013 J jnl
Optim. Lett.
Guo-ji Tang, Li-Wen Zhou, Nan-jing Huang
2013 J jnl
J. Appl. Math.
Jian-Wen Peng, Nan-jing Huang, Xue-Xiang Huang, Jen-Chih Yao
2013 J jnl
J. Glob. Optim.
San-hua Wang, Nan-jing Huang, Donal O'Regan
2012 J jnl
Appl. Math. Lett.
Yi-bin Xiao, Nan-jing Huang, Yeol Je Cho
2012 J jnl
Appl. Math. Comput.
Guang He, Nan-jing Huang
2012 J jnl
J. Appl. Math.
Hui-qiang Ma, Nan-jing Huang
2012 J jnl
J. Appl. Math.
Yun-Zhi Zou, Xi Li, Nan-jing Huang, Chang-Yin Sun
2012 J jnl
J. Glob. Optim.
Guo-ji Tang, Nan-jing Huang
2012 J jnl
J. Optim. Theory Appl.
Ya-Ping Fang, Nan-jing Huang, Xiaoqi Yang
2012 J jnl
Comput. Math. Appl.
Ren-you Zhong, Nan-jing Huang
2012 J jnl
J. Optim. Theory Appl.
Ren-you Zhong, Nan-jing Huang
2012 J jnl
Oper. Res. Lett.
Guo-ji Tang, Nan-jing Huang
2012 J jnl
Optim. Lett.
Bin Chen, Nan-jing Huang
2011 J jnl
J. Optim. Theory Appl.
Fu-Quan Xia, Nan-jing Huang
2011 J jnl
Comput. Math. Appl.
Fu-Quan Xia, Nan-jing Huang
2011 J jnl
J. Glob. Optim.
Zhong Bao Wang, Nan-jing Huang
2011 J jnl
Appl. Math. Comput.
Xi Li, Nan-jing Huang
2011 J jnl
J. Optim. Theory Appl.
Ren-you Zhong, Nan-jing Huang
2011 J jnl
J. Optim. Theory Appl.
Ren-you Zhong, Nan-jing Huang
2011 J jnl
Fuzzy Sets Syst.
Lei Wang, Yeol Je Cho, Nan-jing Huang
2011 J jnl
J. Optim. Theory Appl.
Yi-bin Xiao, Nan-jing Huang
2010 J jnl
Appl. Math. Comput.
Xue-ping Luo, Nan-jing Huang
2010 J jnl
J. Comput. Appl. Math.
Xue-ping Luo, Nan-jing Huang
2010 J jnl
Appl. Math. Comput.
Qing-you Liu, Zhi-Bin Liu, Nan-jing Huang
2010 J jnl
J. Optim. Theory Appl.
Ren-you Zhong, Nan-jing Huang
2010 J jnl
Comput. Math. Appl.
Xi Li, Nan-jing Huang, Donal O'Regan
2010 J jnl
Eur. J. Oper. Res.
J. Li, Nan-jing Huang, X. Q. Yang
2010 J jnl
Eur. J. Oper. Res.
Ya-Ping Fang, Nan-jing Huang, Jen-Chih Yao
2009 J jnl
Appl. Math. Comput.
Yun-Zhi Zou, Nan-jing Huang
2009 J jnl
Appl. Math. Comput.
Hui-qiang Ma, Jiu-ping Xu, Nan-jing Huang
2009 J jnl
J. Glob. Optim.
Yi-bin Xiao, Nan-jing Huang
2009 J jnl
J. Glob. Optim.
Xian-Jun Long, Nan-jing Huang
2009 J jnl
Math. Comput. Model.
Lei Wang, Yeol Je Cho, Nan-jing Huang
2008 J jnl
Oper. Res. Lett.
Fu-Quan Xia, Nan-jing Huang, Zhi-Bin Liu
2008 J jnl
Appl. Math. Lett.
Jong Kyu Kim, Ya-Ping Fang, Nan-jing Huang
2008 J jnl
Appl. Math. Lett.
Jun Li, Nan-jing Huang
2008 J jnl
Math. Comput. Model.
Xian-Jun Long, Nan-jing Huang, Kok Lay Teo
2008 J jnl
J. Glob. Optim.
Nan-jing Huang, Jun Li, Soon-Yi Wu
2008 J jnl
Math. Comput. Model.
Nan-jing Huang, Jun Li, H. Bevan Thompson
2008 J jnl
Appl. Math. Comput.
Yun-Zhi Zou, Nan-jing Huang
2008 J jnl
Appl. Math. Lett.
Ke-qing Wu, Nan-jing Huang
2008 J jnl
J. Glob. Optim.
Nan-jing Huang, Alexander M. Rubinov, X. Q. Yang
2008 J jnl
Comput. Math. Appl.
Ya-Ping Fang, Rong Hu, Nan-jing Huang
2008 J jnl
J. Glob. Optim.
Ya-Ping Fang, Nan-jing Huang, Jen-Chih Yao
2007 J jnl
J. Glob. Optim.
Jun Li, Nan-jing Huang
2007 J jnl
Comput. Math. Appl.
Min Fang, Nan-jing Huang
2007 J jnl
Neural Process. Lett.
Ke Ding, Nan-jing Huang, Xing Xu
2007 J jnl
Math. Methods Oper. Res.
Ya-Ping Fang, Nan-jing Huang
2007 J jnl
Appl. Math. Lett.
Ke-qing Wu, Nan-jing Huang
2007 J jnl
Comput. Math. Appl.
Ke-qing Wu, Nan-jing Huang
2007 J jnl
Math. Comput. Model.
Yeol Je Cho, Jun Li, Nan-jing Huang
2007 J jnl
Comput. Math. Appl.
Fu-Quan Xia, Nan-jing Huang
2007 J jnl
Eur. J. Oper. Res.
Nan-jing Huang, X. Q. Yang, W. K. Chan
2006 conf
RSKT
Yun-Zhi Zou, Nan-jing Huang
2006 J jnl
J. Glob. Optim.
Ya-Ping Fang, Nan-jing Huang, Jong Kyu Kim
2006 J jnl
Neural Process. Lett.
Ke Ding, Nan-jing Huang
2006 J jnl
J. Glob. Optim.
Nan-jing Huang, Jun Li
2006 J jnl
Math. Comput. Model.
Nan-jing Huang, Jun Li, H. Bevan Thompson
2006 J jnl
Appl. Math. Lett.
Ya-Ping Fang, Nan-jing Huang
2006 J jnl
Appl. Math. Lett.
Ya-Ping Fang, Nan-jing Huang
2006 J jnl
Appl. Math. Lett.
Jun Li, Nan-jing Huang
2005 J jnl
Fuzzy Sets Syst.
Nan-jing Huang, Heng-you Lan
2005 J jnl
J. Glob. Optim.
Nan-jing Huang, Ya-Ping Fang
2004 J jnl
Math. Methods Oper. Res.
Ya-Ping Fang, Nan-jing Huang
2004 J jnl
Appl. Math. Lett.
Ravi P. Agarwal, Nan-jing Huang, Man-Yi Tan
2003 J jnl
Appl. Math. Lett.
Nan-jing Huang, Ya-Ping Fang
2003 J jnl
J. Glob. Optim.
Nan-jing Huang, Cheng-Jia Gao, Xiao-ping Huang
2003 J jnl
Appl. Math. Comput.
Ya-Ping Fang, Nan-jing Huang
2003 J jnl
Appl. Math. Lett.
Nan-jing Huang, Cheng-Jia Gao
2003 J jnl
Appl. Math. Lett.
Nan-jing Huang, Ya-Ping Fang
2003 J jnl
Appl. Math. Lett.
Ya-Ping Fang, Nan-jing Huang
2001 J jnl
Fuzzy Sets Syst.
Nan-jing Huang
2000 J jnl
Appl. Math. Lett.
Ravi P. Agarwal, Yeol Je Cho, Nan-jing Huang
1999 J jnl
Fuzzy Sets Syst.
Nan-jing Huang
redb/extractors/js_extractors/js_context.py
← Index redb/extractors/js_extractors/js_context.py python
"""Per-sample shared state for the JavaScript extractor pipeline.

A `JSContext` is built exactly once per JS sample (in `workers.py`) and threaded
into every extractor that runs against that sample. It owns the disk read, the
decoded source text, the line-split cache, the Shannon text-entropy figure, the
shared `scan_source()` results, and the pyjsparser AST. Each of those is
computed lazily through `cached_property` so an extractor that doesn't need a
particular artefact does not pay for it.

Without this object, every JS extractor instance redoes the same disk read,
decode, scan, and (for any consumer) AST parse. With it, every extractor
shares one set of results.

`JSExtractor.__init__` accepts the context via a `context=` kwarg; if absent
(e.g. unit tests instantiating an extractor directly with `source=...`) it
builds a fresh context from the constructor arguments. Either path produces a
fully-populated context, so extractor code can always rely on
`self._context.scan` / `self._context.ast` / etc.
"""

from __future__ import annotations

import math
from collections import Counter
from dataclasses import dataclass
from functools import cached_property
from typing import Any, Dict, List, Optional

import chardet

from redb.extractors.js_extractors.js_patterns import scan_source


def decode_source(raw_bytes: bytes) -> str:
    """Decode raw JS bytes to text, honouring BOMs and falling back to chardet.

    Mirrors the historical `JSExtractor._decode_source` logic so existing tests
    continue to round-trip identically.
    """
    if not raw_bytes:
        return ""

    if raw_bytes[:3] == b"\xef\xbb\xbf":
        return raw_bytes[3:].decode("utf-8", errors="replace")
    if raw_bytes[:2] in (b"\xff\xfe", b"\xfe\xff"):
        return raw_bytes.decode("utf-16", errors="replace")

    try:
        return raw_bytes.decode("utf-8")
    except UnicodeDecodeError:
        pass

    try:
        detected = chardet.detect(raw_bytes)
        if detected and detected.get("encoding"):
            return raw_bytes.decode(detected["encoding"], errors="replace")
    except Exception:
        pass

    return raw_bytes.decode("latin-1", errors="replace")


def _text_entropy(text: str) -> float:
    """Shannon entropy of the character distribution of `text`, rounded to 4dp."""
    if not text:
        return 0.0
    counter = Counter(text)
    length = len(text)
    entropy = 0.0
    for count in counter.values():
        p = count / length
        if p > 0:
            entropy -= p * math.log2(p)
    return round(entropy, 4)


@dataclass
class JSContext:
    """Shared raw materials for one JS sample, consumed by every JS extractor.

    Cheap attributes (raw_bytes, source) are populated eagerly by the factory.
    Expensive ones (scan, ast) are cached_property — computed on first access
    and reused across every extractor that holds the same context.

    `content_type` is the magika label (e.g. `"javascript"`) carried alongside
    the source so the new code_text_content writer (and any future generic
    text-content writer) can record it without re-running magika. Defaults to
    `"javascript"` because by construction this context type is JS-specific;
    workers.py supplies the actual magika value when it builds the context.
    """

    filepath: str
    raw_bytes: bytes
    source: str
    log: Any = None
    content_type: str = "javascript"
    # Populated by JSStringsExtractor.extract() (the decoded/reconstructed
    # strings — hex/unicode/charcode/base64/concat unpacked into plaintext).
    # Read post-loop by the IOC plumbing in workers.py so any IOCs hidden
    # behind those encodings get scraped from the decoded form. Stays None
    # if JSStringsExtractor didn't run for this sample.
    decoded_strings: Optional[list] = None

    @cached_property
    def lines(self) -> List[str]:
        return self.source.splitlines() if self.source else []

    @cached_property
    def text_entropy(self) -> float:
        return _text_entropy(self.source)

    @cached_property
    def scan(self) -> Dict[str, Dict[str, object]]:
        """Result of running scan_source() exactly once over self.source."""
        return scan_source(self.source) if self.source else {}

    @cached_property
    def ast(self) -> Optional[Any]:
        """Lazy pyjsparser AST. Returns None if the parser is missing or fails.

        Extractors should treat None AST as "fall back to regex" — every
        AST-consuming extractor already handles that path.
        """
        if not self.source:
            return None
        try:
            import pyjsparser
            return pyjsparser.parse(self.source)
        except ImportError:
            if self.log is not None:
                self.log.debug("pyjsparser not installed, AST analysis skipped")
        except Exception as e:
            if self.log is not None:
                self.log.warning(f"AST parsing failed for {self.filepath}: {e}")
        return None

    @cached_property
    def deobfuscated(self) -> "tuple[Optional[str], Optional[str]]":
        """Run the configured JS deobfuscator (with jsbeautifier fallback) once
        per sample and cache the result. Returns `(text, normalizer_used)` or
        `(None, None)` if neither path produced output.

        Computed lazily on first access — samples whose pipeline never reads
        this don't pay the subprocess cost.
        """
        from redb.extractors.js_extractors.js_deobfuscator import deobfuscate
        return deobfuscate(self.source, self.log)

    @cached_property
    def scan_deobfuscated(self) -> Dict[str, Dict[str, object]]:
        """Result of running scan_source() exactly once over the deobfuscated
        text, keyed by PATTERNS only (FEATURE_PATTERNS are not consulted by
        the dual-pass consumers). Empty dict when there is no deobfuscated
        text or it equals the raw source.

        Two extractors consume the post-deobf API surface:
        `JSSuspiciousAPIsExtractor` (for revealed_by_deobf rows) and
        `JSDeobfuscationExtractor` (for the new_apis_found diff). Caching here
        means we scan the deobfuscated text once instead of twice per sample.
        """
        from redb.extractors.js_extractors.js_patterns import PATTERNS
        deobf_text, _ = self.deobfuscated
        if not deobf_text or deobf_text == self.source:
            return {}
        return scan_source(deobf_text, patterns=(PATTERNS,))

    @cached_property
    def xray(self):
        """Run @nodesecure/js-x-ray once per sample and cache the result.

        Returns an `XRayResult` (always — the function collapses every failure
        path to an empty result so callers don't have to special-case missing
        Node, missing package, timeouts, or parse errors). The
        `JSFeaturesExtractor` reads it for the obfuscator family name and for
        corroborating warning kinds; the heuristic falls back cleanly when
        `xray.obfuscator is None`.
        """
        from redb.extractors.js_extractors.js_xray import run
        return run(self.source, self.log)

    @classmethod
    def from_path(
        cls,
        filepath: str,
        log: Any = None,
        source: Optional[str] = None,
        raw_bytes: Optional[bytes] = None,
        content_type: str = "javascript",
    ) -> "JSContext":
        """Build a context from disk. `raw_bytes` and `source` are optional
        overrides — useful when the caller has already read or decoded the file.
        `content_type` is the magika label workers.py dispatched on; it lands
        on the context for the code_text_content writer to record.
        """
        if raw_bytes is None:
            with open(filepath, "rb") as f:
                raw_bytes = f.read()
        if source is None:
            source = decode_source(raw_bytes)
        return cls(
            filepath=filepath,
            raw_bytes=raw_bytes,
            source=source,
            log=log,
            content_type=content_type,
        )